From ac35d41086207d0245c26a3990ef125e3a43d3d4 Mon Sep 17 00:00:00 2001 From: DMGithubPublisher Date: Thu, 24 Apr 2025 15:11:02 +0800 Subject: [PATCH 1/2] 10.5.3000 --- API_Reference_BarcodeScanner.url | 2 + API_Reference_Foundational.url | 2 + LICENSE | 2 +- README.html | 420 ++++ README.md | 798 ++----- dist/DBR-PresetTemplates.json | 628 +++++ dist/barcode-scanner.ui.xml | 140 ++ dist/dbr.bundle.d.ts | 95 +- dist/dbr.bundle.esm.d.ts | 91 +- dist/dbr.bundle.js | 4 +- dist/dbr.bundle.mjs | 4 +- dist/dbr.no-content-bundle.esm.js | 4 +- .../dist/DBR-PresetTemplates.json | 628 +++++ .../dist/dbr.d.ts | 383 +++ .../dist/dbr.esm.js | 11 + .../dist/dbr.js | 11 + .../dist/dce.d.ts | 1877 +++++++++++++++ .../dist/dce.esm.js | 11 + .../dist/dce.js | 11 + .../dist/dce.mobile-native.ui.html | 222 ++ .../dist/dce.ui.html | 115 + .../dist/cvr.d.ts | 663 ++++++ .../dist/cvr.esm.js | 2121 +++++++++++++++++ .../dist/cvr.js | 11 + .../dist/cvr.worker.js | 21 + .../dist/dynamsoft-barcode-reader-bundle.js | 1 + .../dist/dynamsoft-barcode-reader-bundle.wasm | Bin 0 -> 5340440 bytes dist/dynamsoft-core@3.4.31/dist/core.d.ts | 1019 ++++++++ dist/dynamsoft-core@3.4.31/dist/core.esm.js | 11 + dist/dynamsoft-core@3.4.31/dist/core.js | 11 + .../dynamsoft-core@3.4.31/dist/core.worker.js | 11 + .../dist/dls.license.dialog.html | 20 + .../dist/license.d.ts | 40 + .../dist/license.esm.js | 11 + dist/dynamsoft-license@3.4.31/dist/license.js | 11 + .../dist/license.worker.js | 11 + .../dist/utility.d.ts | 118 + .../dist/utility.esm.js | 11 + dist/dynamsoft-utility@1.4.32/dist/utility.js | 11 + .../dist/utility.worker.js | 11 + package.json | 13 +- samples.url | 2 +- 42 files changed, 8924 insertions(+), 663 deletions(-) create mode 100644 API_Reference_BarcodeScanner.url create mode 100644 API_Reference_Foundational.url create mode 100644 README.html create mode 100644 dist/DBR-PresetTemplates.json create mode 100644 dist/barcode-scanner.ui.xml create mode 100644 dist/dynamsoft-barcode-reader@10.4.31/dist/DBR-PresetTemplates.json create mode 100644 dist/dynamsoft-barcode-reader@10.4.31/dist/dbr.d.ts create mode 100644 dist/dynamsoft-barcode-reader@10.4.31/dist/dbr.esm.js create mode 100644 dist/dynamsoft-barcode-reader@10.4.31/dist/dbr.js create mode 100644 dist/dynamsoft-camera-enhancer@4.1.1/dist/dce.d.ts create mode 100644 dist/dynamsoft-camera-enhancer@4.1.1/dist/dce.esm.js create mode 100644 dist/dynamsoft-camera-enhancer@4.1.1/dist/dce.js create mode 100644 dist/dynamsoft-camera-enhancer@4.1.1/dist/dce.mobile-native.ui.html create mode 100644 dist/dynamsoft-camera-enhancer@4.1.1/dist/dce.ui.html create mode 100644 dist/dynamsoft-capture-vision-router@2.4.33/dist/cvr.d.ts create mode 100644 dist/dynamsoft-capture-vision-router@2.4.33/dist/cvr.esm.js create mode 100644 dist/dynamsoft-capture-vision-router@2.4.33/dist/cvr.js create mode 100644 dist/dynamsoft-capture-vision-router@2.4.33/dist/cvr.worker.js create mode 100644 dist/dynamsoft-capture-vision-std@1.4.21/dist/dynamsoft-barcode-reader-bundle.js create mode 100644 dist/dynamsoft-capture-vision-std@1.4.21/dist/dynamsoft-barcode-reader-bundle.wasm create mode 100644 dist/dynamsoft-core@3.4.31/dist/core.d.ts create mode 100644 dist/dynamsoft-core@3.4.31/dist/core.esm.js create mode 100644 dist/dynamsoft-core@3.4.31/dist/core.js create mode 100644 dist/dynamsoft-core@3.4.31/dist/core.worker.js create mode 100644 dist/dynamsoft-license@3.4.31/dist/dls.license.dialog.html create mode 100644 dist/dynamsoft-license@3.4.31/dist/license.d.ts create mode 100644 dist/dynamsoft-license@3.4.31/dist/license.esm.js create mode 100644 dist/dynamsoft-license@3.4.31/dist/license.js create mode 100644 dist/dynamsoft-license@3.4.31/dist/license.worker.js create mode 100644 dist/dynamsoft-utility@1.4.32/dist/utility.d.ts create mode 100644 dist/dynamsoft-utility@1.4.32/dist/utility.esm.js create mode 100644 dist/dynamsoft-utility@1.4.32/dist/utility.js create mode 100644 dist/dynamsoft-utility@1.4.32/dist/utility.worker.js diff --git a/API_Reference_BarcodeScanner.url b/API_Reference_BarcodeScanner.url new file mode 100644 index 0000000..1d92f1d --- /dev/null +++ b/API_Reference_BarcodeScanner.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/api-reference/barcode-scanner.html \ No newline at end of file diff --git a/API_Reference_Foundational.url b/API_Reference_Foundational.url new file mode 100644 index 0000000..f0d5e02 --- /dev/null +++ b/API_Reference_Foundational.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/api-reference/index.html \ No newline at end of file diff --git a/LICENSE b/LICENSE index e734929..8b9bf8f 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright © 2003–2024 Dynamsoft. All Rights Reserved. +Copyright © 2003–2025 Dynamsoft. All Rights Reserved. The use of this software is governed by the Dynamsoft Terms and Conditions. URL=https://www.dynamsoft.com/barcode-reader/license-agreement/#javascript \ No newline at end of file diff --git a/README.html b/README.html new file mode 100644 index 0000000..6093825 --- /dev/null +++ b/README.html @@ -0,0 +1,420 @@ + + + Dynamsoft Barcode Reader for Your Website - User Guide + + + + + + +
+

Barcode Scanner JavaScript Edition - User Guide

+ +

This user guide provides a step-by-step walkthrough of a "Hello World" web application using the BarcodeScanner JavaScript Edition.

+

The BarcodeScanner class offers the following features:

+ +

We recommend using this guide as a reference when creating your own application. If you are looking for a fully customizable barcode decoding library, you are welcome to use the Foundational APIs. Before starting, ensure the basic requirements are met.

+ + +
+

[!TIP]
+ Please refer to system requirements for more details.

+
+

License

+

Trial License

+ +

When getting started with Barcode Scanner, we recommend getting your own 30-day trial license

+ +
+

[!IMPORTANT]
+ The trial license can be renewed via the customer portal twice, each time for another 15 days, giving you a total of 60 days to develop your own application using the solution. Please contact the Dynamsoft Support Team if you need more time for a full evaluation.

+
+

Full License

+

If you are fully satisfied with the solution and would like to move forward with a full license, please contact the Dynamsoft Sales Team.

+

Quick Start: Hello World Example

+
<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Dynamsoft Barcode Scanner - Hello World</title>
+    <script src="https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@10.5.3000/dist/dbr.bundle.js"></script>
+  </head>
+
+  <body>
+    <h1 style="font-size: large">Dynamsoft Barcode Scanner</h1>
+
+    <script>
+      // Initialize the Dynamsoft Barcode Scanner
+      const barcodeScanner = new Dynamsoft.BarcodeScanner({
+        // Please don't forget to replace YOUR_LICENSE_KEY_HERE
+        license: "YOUR_LICENSE_KEY_HERE",
+      });
+      (async () => {
+        // Launch the scanner and wait for the result
+        const result = await barcodeScanner.launch();
+        alert(result.barcodeResults[0].text);
+      })();
+    </script>
+  </body>
+</html>
+
+

+ + Code in Github + +   + + Run via JSFiddle + +   + + Run in Dynamsoft + +

+

Step 1: Setting up the HTML and Including the Barcode Scanner

+

As outlined earlier, this guide will help you create a simple Hello World barcode scanning application using vanilla JavaScript. The full sample code is also available in the GitHub repository.

+

The first step before writing the code is to include the SDK in your application. You can simply include the SDK by using the precompiled script.

+
<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Dynamsoft Barcode Scanner - Hello World</title>
+    <script src="https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@10.5.3000/dist/dbr.bundle.js"></script>
+  </head>
+
+  <body>
+    <h1 style="font-size: large">Dynamsoft Barcode Scanner</h1>
+  </body>
+
+</html>
+
+

In this example, we include the precompiled Barcode Scanner SDK script via public CDN in the header.

+
+
+
Use a public CDN
+

The simplest way to include the SDK is to use either the jsDelivr or UNPKG CDN.

+ +
  <script src="https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@10.5.3000/dist/dbr.bundle.js"></script>
+
+ +
  <script src="https://unpkg.com/dynamsoft-barcode-reader-bundle@10.5.3000/dist/dbr.bundle.js"></script>
+
+

When using a framework such as React, Vue or Angular, we recommend adding the package as a dependency using a package manager such as npm or yarn:

+
  npm i dynamsoft-barcode-reader-bundle@10.5.3000
+  # or
+  yarn add dynamsoft-barcode-reader-bundle@10.5.3000
+
+

As for package managers like npm or yarn, you likely need to specify the location of the engine files as a link to a CDN. Please see the BarcodeScannerConfig API for a code snippet on how to set the engineResourcePaths.

+
+
+
Host the SDK yourself
+

Alternatively, you may choose to download the SDK and host the files on your own server or preferred CDN. This approach provides better control over versioning and availability.

+ +
  npm i dynamsoft-barcode-reader-bundle@10.5.3000
+
+

The resources are located at the path node_modules/<pkg>, without @<version>. You can copy it elsewhere and add @<version> tag. One more thing to do is to specify the engineResourcePaths so that the SDK can correctly locate the resources.

+
+

[!IMPORTANT]
+ Since "nodemodules" is reserved for Node.js dependencies, and in our case the package is used only as static resources, we recommend either renaming the "nodemodules" folder or moving the "dynamsoft-" packages to a dedicated folder for static resources in your project to facilitate self-hosting.

+
+

You can typically include SDK like this:

+
<script src="path/to/dynamsoft-barcode-reader-bundle@10.5.3000/dist/dbr.bundle.js"></script>
+
+
+
+

Barcode Scanner comes with a Ready-to-Use UI. When the Barcode Scanner launches, it creates a container which it populates with the Ready-to-Use UI.

+

Step 2: Initializing the Barcode Scanner

+
// Initialize the Dynamsoft Barcode Scanner
+const Barcodescanner = new Dynamsoft.BarcodeScanner({
+  // Please don't forget to replace YOUR_LICENSE_KEY_HERE
+  license: "YOUR_LICENSE_KEY_HERE", 
+});
+
+

This is the simplest way to initialize the Barcode Scanner. The configuration object must include a valid license key. Without it, the scanner will fail to launch and display an error. For help obtaining a license, see the licensing section.

+
+

[!TIP]
+ By default, the BarcodeScanner scans a single barcode at a time. However, it also supports a MULTI_UNIQUE scanning mode, which continuously scans and accumulates unique results in real time. You can enable this mode by modifying the BarcodeScannerConfig as follows:

+
+
// Initialize the Dynamsoft Barcode Scanner in MULTI_UNIQUE mode
+const barcodescanner = new Dynamsoft.BarcodeScanner({
+  license: "YOUR_LICENSE_KEY_HERE",
+  scanMode: Dynamsoft.EnumScanMode.SM_MULTI_UNIQUE,
+  showResultView: true,
+});
+
+

Step 3: Launching the Barcode Scanner

+
(async () => {
+  // Launch the scanner and wait for the result
+  const result = await barcodescanner.launch();
+  alert(result.barcodeResults[0].text);
+})();
+
+

Now that the Barcode Scanner has been initialized and configured, it is ready to be launched! Upon launch, the Barcode Scanner presents the main BarcodeScannerView UI in its container on the page, and is ready to start scanning. By default, we use the SINGLE scanning mode, which means only one decoding result will be included in the final result. In the code above, we directly alerted the successfully decoded barcode text on the page.

+
+

[!NOTE]
+ In the Hello World sample, after a successfully decoding process, the scanner closes and the user is met with an empty page. In order to open the scanner again, the user must refresh the page. You may choose to implement a more user-friendly behavior in a production environment, such as presenting the user with an option to re-open the Barcode Scanner upon closing it.

+
+

Next Steps

+

Now that you've implemented the basic functionality, here are some recommended next steps to further explore the capabilities of the Barcode Scanner

+
    +
  1. Learn how to Customize the Barcode Scanner
  2. +
  3. Check out the Official Samples and Demo
  4. +
  5. Learn about the APIs of BarcodeScanner
  6. +
+
+ + \ No newline at end of file diff --git a/README.md b/README.md index d9c886d..ec9c411 100644 --- a/README.md +++ b/README.md @@ -1,735 +1,245 @@ -# Barcode Reader for Your Website - User Guide - -[Dynamsoft Barcode Reader JavaScript Edition](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (DBR-JS) is equipped with industry-leading algorithms for exceptional speed, accuracy and read rates in barcode reading. Using its well-designed API, you can turn your web page into a barcode scanner with just a few lines of code. - -![version](https://img.shields.io/npm/v/dynamsoft-barcode-reader.svg) -![downloads](https://img.shields.io/npm/dm/dynamsoft-barcode-reader.svg) -![jsdelivr](https://img.shields.io/jsdelivr/npm/hm/dynamsoft-barcode-reader.svg) - -![version](https://img.shields.io/npm/v/dynamsoft-javascript-barcode.svg) -![downloads](https://img.shields.io/npm/dm/dynamsoft-javascript-barcode.svg) -![jsdelivr](https://img.shields.io/jsdelivr/npm/hm/dynamsoft-javascript-barcode.svg) - -Once the DBR-JS SDK gets integrated into your web page, your users can access a camera via the browser and read barcodes directly from its video input. - -In this guide, you will learn step by step on how to integrate the DBR-JS SDK into your website. - -Table of Contents - -- [Barcode Reader for Your Website - User Guide](#barcode-reader-for-your-website---user-guide) - - [Hello World - Simplest Implementation](#hello-world---simplest-implementation) - - [Understand the code](#understand-the-code) - - [About the code](#about-the-code) - - [Run the example](#run-the-example) - - [Preparing the SDK](#preparing-the-sdk) - - [Step 1: Include the SDK](#step-1-include-the-sdk) - - [Option 1: Use a public CDN](#option-1-use-a-public-cdn) - - [Option 2: Host the SDK yourself (optional)](#option-2-host-the-sdk-yourself-optional) - - [Step 2: Prepare the SDK](#step-2-prepare-the-sdk) - - [1. Specify the license](#1-specify-the-license) - - [2. \[Optional\] Specify the location of the "engine" files](#2-optional-specify-the-location-of-the-engine-files) - - [Using the SDK](#using-the-sdk) - - [Step 1: Preload the module](#step-1-preload-the-module) - - [Step 2: Create a CaptureVisionRouter object](#step-2-create-a-capturevisionrouter-object) - - [Step 3: Connect an image source](#step-3-connect-an-image-source) - - [Step 4: Register a result receiver](#step-4-register-a-result-receiver) - - [Step 5: Start process video frames](#step-5-start-process-video-frames) - - [Customizing the process](#customizing-the-process) - - [1. Adjust the preset template settings](#1-adjust-the-preset-template-settings) - - [1.1. Change barcode settings](#11-change-barcode-settings) - - [1.2. Retrieve the original image](#12-retrieve-the-original-image) - - [1.3. Change reading frequency to save power](#13-change-reading-frequency-to-save-power) - - [1.4. Specify a scan region](#14-specify-a-scan-region) - - [2. Edit the preset templates directly](#2-edit-the-preset-templates-directly) - - [3. \[Important\] Filter the results](#3-important-filter-the-results) - - [Method 1: Verify results across multiple frames](#method-1-verify-results-across-multiple-frames) - - [Method 2: Eliminate redundant results detected within a short time frame](#method-2-eliminate-redundant-results-detected-within-a-short-time-frame) - - [4. Add feedback](#4-add-feedback) - - [Customizing the UI](#customizing-the-ui) - - [Documentation](#documentation) - - [API Reference](#api-reference) - - [How to Upgrade](#how-to-upgrade) - - [Release Notes](#release-notes) +# Barcode Scanner JavaScript Edition - User Guide + +- [Barcode Scanner JavaScript Edition - User Guide](#barcode-scanner-javascript-edition---user-guide) + - [License](#license) + - [Trial License](#trial-license) + - [Full License](#full-license) + - [Quick Start: Hello World Example](#quick-start-hello-world-example) + - [Step 1: Setting up the HTML and Including the Barcode Scanner](#step-1-setting-up-the-html-and-including-the-barcode-scanner) + - [Step 2: Initializing the Barcode Scanner](#step-2-initializing-the-barcode-scanner) + - [Step 3: Launching the Barcode Scanner](#step-3-launching-the-barcode-scanner) - [Next Steps](#next-steps) -**Popular Examples** +This user guide provides a step-by-step walkthrough of a "Hello World" web application using the `BarcodeScanner` JavaScript Edition. -- Hello World - [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v10.4.31/hello-world/hello-world.html) \| [Run](https://demo.dynamsoft.com/Samples/DBR/JS/hello-world/hello-world.html?ver=10.4.31&utm_source=github) -- Angular App - [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v10.4.31/hello-world/angular) -- React App - [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v10.4.31/hello-world/react) -- Vue App - [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v10.4.31/hello-world/vue) -- PWA App - [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v10.4.31/hello-world/pwa) \| [Run](https://demo.dynamsoft.com/Samples/DBR/JS/hello-world/pwa/helloworld-pwa.html?ver=10.4.31&utm_source=github) -- WebView in Android and iOS - [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/v10.4.31/hello-world/webview) -- Read Driver Licenses - [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v10.4.31/use-case/read-a-drivers-license/index.html) \| [Run](https://demo.dynamsoft.com/Samples/DBR/JS/use-case/read-a-drivers-license/index.html?ver=10.4.31&utm_source=github) -- Fill A Form - [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v10.4.31/use-case/fill-a-form-with-barcode-reading.html) \| [Run](https://demo.dynamsoft.com/Samples/DBR/JS/use-case/fill-a-form-with-barcode-reading.html?ver=10.4.31&utm_source=github) -- Show result information on the video - [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v10.4.31/use-case/show-result-texts-on-the-video.html) \| [Run](https://demo.dynamsoft.com/Samples/DBR/JS/use-case/show-result-texts-on-the-video.html?ver=10.4.31&utm_source=github) -- Debug Camera and Collect Video Frame - [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/v10.4.31/others/debug) +The `BarcodeScanner` class offers the following features: -You can also: +- High-level APIs that deliver core functionality with a single line of code. -- Try the Official Demo - [Github](https://github.com/Dynamsoft/barcode-reader-javascript-demo/) \| [Run](https://demo.dynamsoft.com/barcode-reader-js/?ver=10.4.31&utm_source=github) -- Try Online Examples - [Github](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/v10.4.31/) +- Pre-built UI components for fast and easy integration. -## Hello World - Simplest Implementation +- Intuitive configuration objects that streamline both algorithm and UI setup. -Let's start with the "Hello World" example of the DBR-JS SDK which demonstrates how to use the minimum code to enable a web page to read barcodes from a live video stream. +We recommend using this guide as a reference when creating your own application. If you are looking for a fully customizable barcode decoding library, you are welcome to use the [Foundational APIs](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html). Before starting, ensure the **basic requirements** are met. -**Basic Requirements** - - Internet connection - - A supported browser - - Camera access + + +- Internet connection +- A supported browser +- Camera access + +> [!TIP] +> Please refer to [system requirements](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/faq/system-requirement.html) for more details. + +## License + +### Trial License -The complete code of the "Hello World" example is shown below + + +When getting started with Barcode Scanner, we recommend [getting your own 30-day trial license](https://www.dynamsoft.com/customer/license/trialLicense/?product=dbr&utm_source=github&package=js) + + + +> [!IMPORTANT] +> The trial license can be renewed via the [customer portal](https://www.dynamsoft.com/customer/license/trialLicense/?product=dbr&utm_source=github&package=js) twice, each time for another 15 days, giving you a total of 60 days to develop your own application using the solution. Please contact the [Dynamsoft Support Team](https://www.dynamsoft.com/company/contact/) if you need more time for a full evaluation. + +### Full License + +If you are fully satisfied with the solution and would like to move forward with a full license, please contact the [Dynamsoft Sales Team](https://www.dynamsoft.com/company/contact/). + +## Quick Start: Hello World Example ```html - - -
- - - - + + + + + Dynamsoft Barcode Scanner - Hello World + + + + +

Dynamsoft Barcode Scanner

+ + + ``` - -

- + Code in Github   - + Run via JSFiddle   - + Run in Dynamsoft

-> Don't want to deal with too many details? We also have an **out-of-the-box** version: -> -> [Easy Barcode Scanner >>](https://github.com/Dynamsoft/easy-barcode-scanner) available for your reference. -> ```js -> // Scan instantly with a single function! -> let txt = await EasyBarcodeScanner.scan(); -> ``` - ------ - -#### About the code +### Step 1: Setting up the HTML and Including the Barcode Scanner -- `Dynamsoft.License.LicenseManager.initLicense()`: This method initializes the license for using the SDK in the application. Note that the string "**DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9**" used in this example points to an online license that requires a network connection to work. Read more on [Specify the license](#specify-the-license). +As outlined earlier, this guide will help you create a simple Hello World barcode scanning application using vanilla JavaScript. The full sample code is also available in the [GitHub repository](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/v10.5.30). -- `Dynamsoft.Core.CoreModule.loadWasm(["dbr"])`: This is an optional code. Used to load wasm resources in advance, reducing latency between video playing and barcode decoding. +The first step before writing the code is to include the SDK in your application. You can simply include the SDK by using the precompiled script. -- `Dynamsoft.CVR.CaptureVisionRouter.createInstance()`: This method creates a `CaptureVisionRouter` object `cvRouter` which controls the entire process in three steps: - - **Retrieve Images from the Image Source** - - `cvRouter` connects to the image source through the [ImageSourceAdapter](https://www.dynamsoft.com/capture-vision/docs/core/architecture/input.html#image-source-adapter?lang=js) interface with the method `setInput()`. - ```js - cvRouter.setInput(cameraEnhancer); - ``` - > The image source in our case is a [CameraEnhancer](https://www.dynamsoft.com/camera-enhancer/docs/web/programming/javascript/user-guide/index.html) object created with `Dynamsoft.DCE.CameraEnhancer.createInstance(cameraView)` - - **Coordinate Image-Processing Tasks** - - The coordination happens behind the scenes. `cvRouter` starts the process by specifying a preset template "ReadSingleBarcode" in the method `startCapturing()`. - ```js - cvRouter.startCapturing("ReadSingleBarcode"); - ``` - - **Dispatch Results to Listening Objects** - - The processing results are returned through the [CapturedResultReceiver](https://www.dynamsoft.com/capture-vision/docs/core/architecture/output.html#captured-result-receiver?lang=js) interface. The `CapturedResultReceiver` object is registered to `cvRouter` via the method `addResultReceiver()`. For more information, please check out [Register a result receiver](#register-a-result-receiver). - ```js - cvRouter.addResultReceiver({/*The-CapturedResultReceiver-Object"*/}); - ``` - - Also note that reading from video is extremely fast and there could be many duplicate results. We can use a [filter](#filter-the-results-important) with result deduplication enabled to filter out the duplicate results. The object is registered to `cvRouter` via the method `addResultFilter()`. - ```js - cvRouter.addResultFilter(filter); - ``` - -> Read more on [Capture Vision Router](https://www.dynamsoft.com/capture-vision/docs/core/architecture/#capture-vision-router). - -### Run the example - -You can run the example deployed to [the Dynamsoft Demo Server](https://demo.dynamsoft.com/Samples/DBR/JS/hello-world/hello-world.html?ver=10.4.31&utm_source=github) or test it with [JSFiddle code editor](https://jsfiddle.net/DynamsoftTeam/csm2f9wb/). - -You will be asked to allow access to your camera, after which the video will be displayed on the page. After that, you can point the camera at a barcode to read it. - -When a barcode is decoded, you will see the result text show up under the video and the barcode location will be highlighted in the video feed. - -Alternatively, you can test locally by copying and pasting the code shown above into a local file (e.g. "hello-world.html") and opening it in your browser. +```html + + + + + + Dynamsoft Barcode Scanner - Hello World + + + + +

Dynamsoft Barcode Scanner

+ -> *Secure Contexts*: -> -> If you open the web page as `http://` , our SDK may not work correctly because the [MediaDevices: getUserMedia()](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia) and other methods only work in [secure contexts](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts) (HTTPS, `localhost`, `127.0.0.1`, `file://`), in some or all supporting browsers. -> -> Regarding configuring https on your server, these guides for [nginx](https://nginx.org/en/docs/http/configuring_https_servers.html) / [IIS](https://aboutssl.org/how-to-create-a-self-signed-certificate-in-iis/) / [tomcat](https://dzone.com/articles/setting-ssl-tomcat-5-minutes) / [nodejs](https://nodejs.org/docs/v0.4.1/api/tls.html) might help. -> -> If the test doesn't go as expected, you can [contact us](https://www.dynamsoft.com/company/contact/?ver=10.4.31&utm_source=github&product=dbr&package=js). + +``` -## Preparing the SDK +In this example, we include the precompiled Barcode Scanner SDK script via public CDN in the header. -### Step 1: Include the SDK +
-#### Option 1: Use a public CDN +
+
Use a public CDN
-The simplest way to include the SDK is to use either the [jsDelivr](https://jsdelivr.com/) or [UNPKG](https://unpkg.com/) CDN. The "hello world" example above uses **jsDelivr**. +The simplest way to include the SDK is to use either the [**jsDelivr**](https://jsdelivr.com/) or [**UNPKG**](https://unpkg.com/) CDN. - jsDelivr ```html - + ``` - UNPKG ```html - - ``` - -- In some rare cases (such as some restricted areas), you might not be able to access the CDN. If this happens, you can use the following files for the test. - - ```html - + ``` - However, please **DO NOT** use `download2.dynamsoft.com` resources in a production application as they are for temporary testing purposes only. Instead, you can try hosting the SDK yourself. - -- In frameworks like React, Vue and Angular, you may want to add the package as a dependency. +When using a framework such as **React**, **Vue** or **Angular**, we recommend adding the package as a dependency using a package manager such as **npm** or **yarn**: ```sh - npm i dynamsoft-barcode-reader-bundle@10.4.3100 -E + npm i dynamsoft-barcode-reader-bundle@10.5.3000 # or - yarn add dynamsoft-barcode-reader-bundle@10.4.3100 -E + yarn add dynamsoft-barcode-reader-bundle@10.5.3000 ``` - NOTE that in frameworks, you need to [specify the engineResourcePaths](#specify-the-location-of-the-engine-files-optional). +As for package managers like **npm** or **yarn**, you likely need to specify the location of the engine files as a link to a CDN. Please see the [BarcodeScannerConfig API](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/api-reference/barcode-scanner.html#barcodescannerconfig) for a code snippet on how to set the `engineResourcePaths`. +
-#### Option 2: Host the SDK yourself (optional) +
+
Host the SDK yourself
-Besides using the public CDN, you can also download the SDK and host its files on your own server or a commercial CDN before including it in your application. +Alternatively, you may choose to download the SDK and host the files on your own server or preferred CDN. This approach provides better control over versioning and availability. - From the website - [Download Dynamsoft Barcode Reader JavaScript Package](https://www.dynamsoft.com/barcode-reader/downloads/?ver=10.4.31&utm_source=github&product=dbr&package=js) + [Download Dynamsoft Barcode Reader JavaScript Package](https://www.dynamsoft.com/barcode-reader/downloads/?ver=10.5.30&utm_source=github&product=dbr&package=js) - The resources are located at path `dynamsoft/distributables/@`. + The resources are located at path `dynamsoft/distributables/`. - From npm ```sh - npm i dynamsoft-barcode-reader-bundle@10.4.3100 -E - # Compared with using CDN, you need to set up more resources. - npm i dynamsoft-capture-vision-std@1.4.21 -E - npm i dynamsoft-image-processing@2.4.31 -E + npm i dynamsoft-barcode-reader-bundle@10.5.3000 ``` - The resources are located at the path `node_modules/`, without `@`. You must copy "dynamsoft-xxx" packages elsewhere and add `@`. The `` can be obtained from `package.json` of each package. Another thing to do is to [specify the engineResourcePaths](#2-optional-specify-the-location-of-the-engine-files) so that the SDK can correctly locate the resources. + The resources are located at the path `node_modules/`, without `@`. You can copy it elsewhere and add `@` tag. One more thing to do is to [specify the engineResourcePaths](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/api-reference/barcode-scanner.html#barcodescannerconfig) so that the SDK can correctly locate the resources. + + > [!IMPORTANT] > Since "node_modules" is reserved for Node.js dependencies, and in our case the package is used only as static resources, we recommend either renaming the "node_modules" folder or moving the "dynamsoft-" packages to a dedicated folder for static resources in your project to facilitate self-hosting. You can typically include SDK like this: ```html - -``` - -*Note*: - -* Certain legacy web application servers may lack support for the `application/wasm` mimetype for .wasm files. To address this, you have two options: - 1. Upgrade your web application server to one that supports the `application/wasm` mimetype. - 2. Manually define the mimetype on your server. You can refer to the guides for [apache](https://developer.mozilla.org/en-US/docs/Learn/Server-side/Apache_Configuration_htaccess#media_types_and_character_encodings) / [IIS](https://docs.microsoft.com/en-us/iis/configuration/system.webserver/staticcontent/mimemap) / [nginx](https://www.nginx.com/resources/wiki/start/topics/examples/full/#mime-types). - -* To work properly, the SDK requires a few engine files, which are relatively large and may take quite a few seconds to download. We recommend that you set a longer cache time for these engine files, to maximize the performance of your web application. - - ``` - Cache-Control: max-age=31536000 - ``` - - Reference: [Cache-Control](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control). - -### Step 2: Prepare the SDK - -Before using the SDK, you need to configure a few things. - -#### 1. Specify the license - -To enable the SDK's functionality, you must provide a valid license. Utilize the API function initLicense to set your license key. - -```javascript -Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); -``` - -As previously stated, the key "DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9" serves as a test license valid for 24 hours, applicable to any newly authorized browser. To test the SDK further, you can request a 30-day free trial license via the Request a Trial License link. - -> Upon registering a Dynamsoft account and obtaining the SDK package from the official website, Dynamsoft will automatically create a 30-day free trial license and embed the corresponding license key into all the provided SDK samples. - -#### 2. [Optional] Specify the location of the "engine" files - -This is usually only required with frameworks like Angular, React or Vue. - -The purpose is to tell the SDK where to find the engine files (\*.worker.js, \*.wasm.js and \*.wasm, etc.). - -```ts -// in framework -import { CoreModule } from "dynamsoft-barcode-reader-bundle"; -CoreModule.engineResourcePaths.rootDirectory = "https://cdn.jsdelivr.net/npm/"; + ``` -```js -// in pure js -Dynamsoft.Core.CoreModule.engineResourcePaths.rootDirectory = "https://cdn.jsdelivr.net/npm/"; -``` -These code uses the jsDelivr CDN as an example, feel free to change it to your own location. +
-## Using the SDK +
-### Step 1: Preload the module +Barcode Scanner comes with a **Ready-to-Use UI**. When the Barcode Scanner launches, it creates a container which it populates with the **Ready-to-Use UI**. -The image processing logic is encapsulated within .wasm library files, and these files may require some time for downloading. To enhance the speed, we advise utilizing the following method to preload the libraries. +### Step 2: Initializing the Barcode Scanner ```js -// Preload the .wasm files -await Dynamsoft.Core.CoreModule.loadWasm(["dbr"]); -``` - -### Step 2: Create a CaptureVisionRouter object - -To use the SDK, we first create a `CaptureVisionRouter` object. - -```javascript -Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); - -let cvRouter = null; -try { - cvRouter = await Dynamsoft.CVR.CaptureVisionRouter.createInstance(); -} catch (ex) { - console.error(ex); -} -``` - -*Tip*: - -When creating a `CaptureVisionRouter` object within a function which may be called more than once, it's best to use a "helper" variable to avoid double creation such as `pCvRouter` in the following code: - -```javascript -Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); - -let pCvRouter = null; // The helper variable which is a promise of cvRouter -let cvRouter = null; - -document.getElementById('btn-scan').addEventListener('click', async () => { - try { - cvRouter = await (pCvRouter = pCvRouter || Dynamsoft.CVR.CaptureVisionRouter.createInstance()); - } catch (ex) { - console.error(ex); - } -}); -``` - -### Step 3: Connect an image source - -The `CaptureVisionRouter` object, denoted as `cvRouter`, is responsible for handling images provided by an image source. In our scenario, we aim to detect barcodes directly from a live video stream. To facilitate this, we initialize a `CameraEnhancer` object, identified as `cameraEnhancer`, which is specifically designed to capture image frames from the video feed and subsequently forward them to `cvRouter`. - -To enable video streaming on the webpage, we create a `CameraView` object referred to as `cameraView`, which is then passed to `cameraEnhancer`, and its content is displayed on the webpage. - -```html -
-``` - -```javascript -let cameraView = await Dynamsoft.DCE.CameraView.createInstance(); -let cameraEnhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance(cameraView); -document.querySelector("#camera-view-container").append(cameraView.getUIElement()); -cvRouter.setInput(cameraEnhancer); -``` - -### Step 4: Register a result receiver - -Once the image processing is complete, the results are sent to all the registered `CapturedResultReceiver` objects. Each `CapturedResultReceiver` object may encompass one or multiple callback functions associated with various result types. This time we use `onCapturedResultReceived`: - - -```javascript -const resultsContainer = document.querySelector("#results"); -const resultReceiver = new Dynamsoft.CVR.CapturedResultReceiver(); -resultReceiver.onCapturedResultReceived = (result) => { - if (result.barcodeResultItems?.length) { - resultsContainer.textContent = ''; - for (let item of result.barcodeResultItems) { - // In this example, the barcode results are displayed on the page below the video. - resultsContainer.textContent += `${item.formatString}: ${item.text}\n\n`; - } - } -}; -cvRouter.addResultReceiver(resultReceiver); -``` - -You can also write code like this. It is the same. - -```javascript -const resultsContainer = document.querySelector("#results"); -cvRouter.addResultReceiver({ onCapturedResultReceived: (result) => { - if (result.barcodeResultItems?.length) { - resultsContainer.textContent = ''; - for (let item of result.barcodeResultItems) { - // In this example, the barcode results are displayed on the page below the video. - resultsContainer.textContent += `${item.formatString}: ${item.text}\n\n`; - } - } -}}); -``` - -Check out [CapturedResultReceiver](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/captured-result-receiver.html) for more information. - -### Step 5: Start process video frames - -With the setup now complete, we can proceed to process the images in two straightforward steps: - -1. Initiate the image source to commence image acquisition. In our scenario, we invoke the `open()` method on `cameraEnhancer` to initiate video streaming and simultaneously initiate the collection of images. These collected images will be dispatched to `cvRouter` as per its request. -2. Define a preset template to commence image processing. In our case, we utilize the "ReadSingleBarcode" template, specifically tailored for processing images containing a single barcode. - -```javascript -await cameraEnhancer.open(); -await cvRouter.startCapturing("ReadSingleBarcode"); -``` - -*Note*: - -* `cvRouter` is engineered to consistently request images from the image source. -* Various preset templates are at your disposal for barcode reading: - -| Template Name | Function Description | -| ------------------------------ | -------------------------------------------------------------- | -| **ReadBarcodes_Default** | Scans multiple barcodes by default setting. | -| **ReadSingleBarcode** | Quickly scans a single barcode. | -| **ReadBarcodes_SpeedFirst** | Prioritizes speed in scanning multiple barcodes. | -| **ReadBarcodes_ReadRateFirst** | Maximizes the number of barcodes read. | -| **ReadBarcodes_Balance** | Balances speed and quantity in reading multiple barcodes. | -| **ReadDenseBarcodes** | Specialized in reading barcodes with high information density. | -| **ReadDistantBarcodes** | Capable of reading barcodes from extended distances. | - -Read more on the [preset CaptureVisionTemplates](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/preset-templates.html). - -## Customizing the process - -### 1. Adjust the preset template settings - -When making adjustments to some basic tasks, we often only need to modify [SimplifiedCaptureVisionSettings](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/interfaces/simplified-capture-vision-settings.html). - -#### 1.1. Change barcode settings - -The preset templates can be updated to meet different requirements. For example, the following code limits the barcode format to QR code. - -```javascript -let settings = await cvRouter.getSimplifiedSettings("ReadSingleBarcode"); -settings.barcodeSettings.barcodeFormatIds = - Dynamsoft.DBR.EnumBarcodeFormat.BF_QR_CODE; -await cvRouter.updateSettings("ReadSingleBarcode", settings); -await cvRouter.startCapturing("ReadSingleBarcode"); -``` - -For a list of adjustable barcode settings, check out [SimplifiedBarcodeReaderSettings](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/api-reference/interfaces/simplified-barcode-reader-settings.html). - -#### 1.2. Retrieve the original image - -Additionally, we have the option to modify the template to retrieve the original image containing the barcode. - -```javascript -let settings = await cvRouter.getSimplifiedSettings("ReadSingleBarcode"); -settings.capturedResultItemTypes |= - Dynamsoft.Core.EnumCapturedResultItemType.CRIT_ORIGINAL_IMAGE; -await cvRouter.updateSettings("ReadSingleBarcode", settings); -await cvRouter.startCapturing("ReadSingleBarcode"); -``` - -Limit the barcode format to QR code, and retrieve the original image containing the barcode, at the same time. - -```javascript -let settings = await cvRouter.getSimplifiedSettings("ReadSingleBarcode"); -settings.capturedResultItemTypes = - Dynamsoft.DBR.EnumBarcodeFormat.BF_QR_CODE | - Dynamsoft.Core.EnumCapturedResultItemType.CRIT_ORIGINAL_IMAGE; -await cvRouter.updateSettings("ReadSingleBarcode", settings); -await cvRouter.startCapturing("ReadSingleBarcode"); -``` - -Please be aware that it is necessary to update the `CapturedResultReceiver` object to obtain the original image. For instance: - -```javascript -const EnumCRIT = Dynamsoft.Core.EnumCapturedResultItemType; -resultReceiver.onCapturedResultReceived = (result) => { - if (result.barcodeResultItems?.length) { - // Use a filter to get the image on which barcodes are found. - let image = result.items.filter( - item => item.type === EnumCRIT.CRIT_ORIGINAL_IMAGE - )[0].imageData; - } -}; -``` - -#### 1.3. Change reading frequency to save power - -The SDK is initially configured to process images sequentially without any breaks. Although this setup maximizes performance, it can lead to elevated power consumption, potentially causing the device to overheat. In many cases, it's possible to reduce the reading speed while still satisfying business requirements. The following code snippet illustrates how to adjust the SDK to process an image every 500 milliseconds: - -> Please bear in mind that in the following code, if an image's processing time is shorter than 500 milliseconds, the SDK will wait for the full 500 milliseconds before proceeding to process the next image. Conversely, if an image's processing time exceeds 500 milliseconds, the subsequent image will be processed immediately upon completion. - -```javascript -let settings = await cvRouter.getSimplifiedSettings("ReadSingleBarcode"); -settings.minImageCaptureInterval = 500; -await cvRouter.updateSettings("ReadSingleBarcode", settings); -await cvRouter.startCapturing("ReadSingleBarcode"); -``` - -#### 1.4. Specify a scan region - -We can specify a scan region to allow the SDK to process only part of the image, improving processing speed. The code snippet below demonstrates how to do this using the `cameraEnhancer` image source. - -```javascript -cameraEnhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance(cameraView); -// In this example, we set the scan region to cover the central 25% of the image. -cameraEnhancer.setScanRegion({ - x: 25, - y: 25, - width: 50, - height: 50, - isMeasuredInPercentage: true, +// Initialize the Dynamsoft Barcode Scanner +const Barcodescanner = new Dynamsoft.BarcodeScanner({ + // Please don't forget to replace YOUR_LICENSE_KEY_HERE + license: "YOUR_LICENSE_KEY_HERE", }); ``` -*Note*: - -1. By configuring the region at the image source, images are cropped before processing, removing the need to adjust any further processing settings. -2. `cameraEnhancer` enhances interactivity by overlaying a mask on the video, clearly marking the scanning region. - -*See Also*: - -[CameraEnhancer::setScanRegion](https://www.dynamsoft.com/camera-enhancer/docs/web/programming/javascript/api-reference/acquisition.html#setscanregion) - - - - - - -### 2. Edit the preset templates directly - -The preset templates have many more settings that can be customized to suit your use case best. If you [download the SDK from Dynamsoft website](https://www.dynamsoft.com/barcode-reader/downloads/1000003-confirmation/), you can find the templates under - -* "/dynamsoft-barcode-reader-js-10.4.3100/dynamsoft/templates/" - -Upon completing the template editing, you can invoke the `initSettings` method and provide it with the template path as an argument. - -```javascript -await cvRouter.initSettings("PATH-TO-THE-FILE"); // E.g. "https://your-website/ReadSingleBarcode.json") -await cvRouter.startCapturing("ReadSingleBarcode"); // Make sure the name matches one of the CaptureVisionTemplates in the template JSON file. -``` - -### 3. [Important] Filter the results - -When processing video frames, the same barcode is often detected multiple times. To improve the user experience, we can use the [MultiFrameResultCrossFilter](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/multi-frame-result-cross-filter.html) object. This object provides two methods for handling duplicate detections, which can be used independently or together, depending on what best suits your application needs: - -#### Method 1: Verify results across multiple frames - -```js -let filter = new Dynamsoft.Utility.MultiFrameResultCrossFilter(); -filter.enableResultCrossVerification("barcode", true); -await cvRouter.addResultFilter(filter); -``` - -*Note*: - -* `enableResultCrossVerification` was designed to cross-validate the outcomes across various frames in a video streaming scenario, enhancing the reliability of the final results. This validation is particularly crucial for barcodes with limited error correction capabilities, such as 1D codes. - -#### Method 2: Eliminate redundant results detected within a short time frame - -```js -let filter = new Dynamsoft.Utility.MultiFrameResultCrossFilter(); -filter.enableResultDeduplication("barcode", true); -await cvRouter.addResultFilter(filter); -``` - -*Note*: - -* `enableResultDeduplication` was designed to prevent high usage in video streaming scenarios, addressing the repetitive processing of the same code within a short period of time. +This is the **simplest** way to initialize the Barcode Scanner. The configuration object must include a valid **license** key. Without it, the scanner will fail to launch and display an error. For help obtaining a license, see the [licensing](#license) section. -Initially, the filter is set to forget a result 3 seconds after it is first received. During this time frame, if an identical result appears, it is ignored. - -> It's important to know that in version 9.x or earlier, the occurrence of an identical result would reset the timer, thus reinitiating the 3-second count at that point. However, in version 10.2.10 and later, an identical result no longer resets the timer but is instead disregarded, and the duration count continues uninterrupted. - -Under certain circumstances, this duration can be extended with the method `setDuplicateForgetTime()`. - -```js -let filter = new Dynamsoft.Utility.MultiFrameResultCrossFilter(); -filter.setDuplicateForgetTime(5000); // Extend the duration to 5 seconds. -await cvRouter.addResultFilter(filter); -``` - -You can also enable both options at the same time: +> [!TIP] +> By default, the `BarcodeScanner` scans a single barcode at a time. However, it also supports a `MULTI_UNIQUE` scanning mode, which continuously scans and accumulates unique results in real time. You can enable this mode by modifying the [`BarcodeScannerConfig`](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/api-reference/barcode-scanner.html#barcodescannerconfig) as follows: ```js -let filter = new Dynamsoft.Utility.MultiFrameResultCrossFilter(); -filter.enableResultCrossVerification("barcode", true); -filter.enableResultDeduplication("barcode", true); -filter.setDuplicateForgetTime(5000); -await cvRouter.addResultFilter(filter); +// Initialize the Dynamsoft Barcode Scanner in MULTI_UNIQUE mode +const barcodescanner = new Dynamsoft.BarcodeScanner({ + license: "YOUR_LICENSE_KEY_HERE", + scanMode: Dynamsoft.EnumScanMode.SM_MULTI_UNIQUE, + showResultView: true, +}); ``` -### 4. Add feedback - -When a barcode is detected within the video stream, its position is immediately displayed within the video. Furthermore, utilizing the "Dynamsoft Camera Enhancer" SDK, we can introduce feedback mechanisms, such as emitting a "beep" sound or triggering a "vibration". - -The following code snippet adds a "beep" sound for when a barcode is found: +### Step 3: Launching the Barcode Scanner ```js -const resultReceiver = new Dynamsoft.CVR.CapturedResultReceiver(); -resultReceiver.onDecodedBarcodesReceived = (result) => { - if (result.barcodeResultItems.length > 0) { - Dynamsoft.DCE.Feedback.beep(); - } -}; -cvRouter.addResultReceiver(resultReceiver); +(async () => { + // Launch the scanner and wait for the result + const result = await barcodescanner.launch(); + alert(result.barcodeResults[0].text); +})(); ``` -## Customizing the UI - -```javascript -// Create a CameraView instance with default settings -let cameraView = await Dynamsoft.DCE.CameraView.createInstance(); -// Create a CameraView instance with a specified HTML file path, typically a local or remote URL -let cameraView1 = await Dynamsoft.DCE.CameraView.createInstance('@engineResourcePath/dce.mobile-native.ui.html'); -// Create a CameraView instance within a specified DOM element -let cameraView2 = await Dynamsoft.DCE.CameraView.createInstance(document.getElementById('my-ui')); -// Create a CameraView instance using a custom UI file path -let cameraView3 = await Dynamsoft.DCE.CameraView.createInstance('url/to/my/ui.html'); - -// Get the UI element associated with the cameraView instance -let uiElement = cameraView.getUIElement(); -// Remove the camera selection dropdown from the CameraView's UI element -uiElement.shadowRoot.querySelector('.dce-sel-camera').remove(); -// Remove the resolution selection dropdown from the CameraView's UI element -uiElement.shadowRoot.querySelector('.dce-sel-resolution').remove(); -``` - -The UI is part of the auxiliary SDK "Dynamsoft Camera Enhancer", read more on how to [customize the UI](https://www.dynamsoft.com/barcode-reader/docs/core/programming/features/ui-customization-js.html?lang=js). - -## Documentation - -### API Reference - -You can check out the detailed documentation about the APIs of the SDK at -[https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/api-reference/?ver=10.4.3100](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/api-reference/?ver=10.4.3100). - - - -### How to Upgrade - -If you want to upgrade the SDK from an old version to a newer one, please see [how to upgrade](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/upgrade-guide/index.html?ver=10.4.3100&utm_source=github). - -### Release Notes +Now that the Barcode Scanner has been initialized and configured, it is ready to be launched! Upon launch, the Barcode Scanner presents the main **`BarcodeScannerView`** UI in its container on the page, and is ready to start scanning. By default, we use the `SINGLE` scanning mode, which means only one decoding result will be included in the final result. In the code above, we directly alerted the successfully decoded barcode text on the page. -Learn about what are included in each release at [https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/release-notes/index.html](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/release-notes/index.html?ver=10.4.31&utm_source=github). +> [!NOTE] +> In the Hello World sample, after a successfully decoding process, the scanner closes and the user is met with an empty page. In order to open the scanner again, the user must refresh the page. You may choose to implement a more user-friendly behavior in a production environment, such as presenting the user with an option to re-open the Barcode Scanner upon closing it. ## Next Steps -Now that you have got the SDK integrated, you can choose to move forward in the following directions +Now that you've implemented the basic functionality, here are some recommended next steps to further explore the capabilities of the Barcode Scanner -1. Learn how to [Use in Framework](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) -2. Check out the [Official Samples and Demo](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/samples-demos/index.html?ver=10.4.31) -3. Learn about the [APIs of the SDK](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/api-reference/index.html?ver=10.4.3100) +1. Learn how to [Customize the Barcode Scanner](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/barcode-scanner-customization.html) +2. Check out the [Official Samples and Demo](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/samples-demos/index.html?ver=10.5.30) +3. Learn about the [APIs of BarcodeScanner](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/api-reference/barcode-scanner.html?ver=10.5.3000) diff --git a/dist/DBR-PresetTemplates.json b/dist/DBR-PresetTemplates.json new file mode 100644 index 0000000..8bc3616 --- /dev/null +++ b/dist/DBR-PresetTemplates.json @@ -0,0 +1,628 @@ +{ + "CaptureVisionTemplates": [ + { + "Name": "ReadBarcodes_Default", + "ImageROIProcessingNameArray": [ + "roi-read-barcodes" + ], + "Timeout": 10000 + }, + { + "Name": "ReadBarcodes_SpeedFirst", + "ImageROIProcessingNameArray": [ + "roi-read-barcodes-speed-first" + ], + "Timeout": 10000 + }, + { + "Name": "ReadBarcodes_ReadRateFirst", + "ImageROIProcessingNameArray": [ + "roi-read-barcodes-read-rate" + ], + "Timeout": 100000 + }, + { + "Name": "ReadSingleBarcode", + "ImageROIProcessingNameArray": [ + "roi-read-single-barcode" + ], + "Timeout": 10000 + }, + { + "Name": "ReadBarcodes_Balance", + "ImageROIProcessingNameArray": [ + "roi-read-barcodes-balance" + ], + "Timeout": 100000 + }, + { + "Name": "ReadDenseBarcodes", + "ImageROIProcessingNameArray": [ + "roi-read-barcodes-dense" + ], + "Timeout": 10000 + }, + { + "Name": "ReadDistantBarcodes", + "ImageROIProcessingNameArray": [ + "roi-read-barcodes-distant" + ], + "Timeout": 10000 + } + ], + "TargetROIDefOptions": [ + { + "Name": "roi-read-barcodes", + "TaskSettingNameArray": [ + "task-read-barcodes" + ] + }, + { + "Name": "roi-read-barcodes-speed-first", + "TaskSettingNameArray": [ + "task-read-barcodes-speed-first" + ] + }, + { + "Name": "roi-read-barcodes-read-rate", + "TaskSettingNameArray": [ + "task-read-barcodes-read-rate" + ] + }, + { + "Name": "roi-read-single-barcode", + "TaskSettingNameArray": [ + "task-read-single-barcode" + ] + }, + { + "Name": "roi-read-barcodes-balance", + "TaskSettingNameArray": [ + "task-read-barcodes-balance" + ] + }, + { + "Name": "roi-read-barcodes-dense", + "TaskSettingNameArray": [ + "task-read-barcodes-dense" + ] + }, + { + "Name": "roi-read-barcodes-distant", + "TaskSettingNameArray": [ + "task-read-barcodes-distant" + ] + } + ], + "BarcodeFormatSpecificationOptions": [ + { + "Name": "bfs1", + "BarcodeFormatIds": [ + "BF_PDF417", + "BF_QR_CODE", + "BF_DATAMATRIX", + "BF_AZTEC", + "BF_MICRO_QR", + "BF_MICRO_PDF417", + "BF_DOTCODE" + ], + "MirrorMode": "MM_BOTH" + }, + { + "Name": "bfs2", + "BarcodeFormatIds": [ + "BF_ALL" + ], + "MirrorMode": "MM_NORMAL" + }, + { + "Name": "bfs1-speed-first", + "BaseBarcodeFormatSpecification": "bfs1" + }, + { + "Name": "bfs2-speed-first", + "BaseBarcodeFormatSpecification": "bfs2" + }, + { + "Name": "bfs1-read-rate-first", + "BaseBarcodeFormatSpecification": "bfs1" + }, + { + "Name": "bfs2-read-rate-first", + "BaseBarcodeFormatSpecification": "bfs2" + }, + { + "Name": "bfs1-single-barcode", + "BaseBarcodeFormatSpecification": "bfs1" + }, + { + "Name": "bfs2-single-barcode", + "BaseBarcodeFormatSpecification": "bfs2" + }, + { + "Name": "bfs1-balance", + "BaseBarcodeFormatSpecification": "bfs1" + }, + { + "Name": "bfs2-balance", + "BaseBarcodeFormatSpecification": "bfs2" + }, + { + "Name": "bfs1-dense", + "BaseBarcodeFormatSpecification": "bfs1" + }, + { + "Name": "bfs2-dense", + "BaseBarcodeFormatSpecification": "bfs2" + }, + { + "Name": "bfs1-distant", + "BaseBarcodeFormatSpecification": "bfs1" + }, + { + "Name": "bfs2-distant", + "BaseBarcodeFormatSpecification": "bfs2" + } + ], + "BarcodeReaderTaskSettingOptions": [ + { + "Name": "task-read-barcodes", + "ExpectedBarcodesCount": 0, + "LocalizationModes": [ + { + "Mode": "LM_CONNECTED_BLOCKS" + }, + { + "Mode": "LM_LINES" + } + ], + "DeblurModes": [ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_THRESHOLD_BINARIZATION" + } + ], + "BarcodeFormatSpecificationNameArray": [ + "bfs1", + "bfs2" + ], + "SectionImageParameterArray": [ + { + "Section": "ST_REGION_PREDETECTION", + "ImageParameterName": "ip-read-barcodes" + }, + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip-read-barcodes" + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip-read-barcodes" + } + ] + }, + { + "Name": "task-read-barcodes-speed-first", + "ExpectedBarcodesCount": 0, + "LocalizationModes": [ + { + "Mode": "LM_SCAN_DIRECTLY", + "ScanDirection": 2 + }, + { + "Mode": "LM_CONNECTED_BLOCKS" + } + ], + "DeblurModes": [ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_THRESHOLD_BINARIZATION" + }, + { + "Mode": "DM_DEEP_ANALYSIS" + } + ], + "BarcodeFormatSpecificationNameArray": [ + "bfs1-speed-first", + "bfs2-speed-first" + ], + "SectionImageParameterArray": [ + { + "Section": "ST_REGION_PREDETECTION", + "ImageParameterName": "ip-read-barcodes-speed-first" + }, + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip-read-barcodes-speed-first" + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip-read-barcodes-speed-first" + } + ] + }, + { + "Name": "task-read-barcodes-read-rate", + "ExpectedBarcodesCount": 999, + "LocalizationModes": [ + { + "Mode": "LM_CONNECTED_BLOCKS" + }, + { + "Mode": "LM_LINES" + }, + { + "Mode": "LM_STATISTICS" + } + ], + "DeblurModes": [ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_THRESHOLD_BINARIZATION" + }, + { + "Mode": "DM_DIRECT_BINARIZATION" + }, + { + "Mode": "DM_SMOOTHING" + } + ], + "BarcodeFormatSpecificationNameArray": [ + "bfs1-read-rate-first", + "bfs2-read-rate-first" + ], + "SectionImageParameterArray": [ + { + "Section": "ST_REGION_PREDETECTION", + "ImageParameterName": "ip-read-barcodes-read-rate" + }, + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip-read-barcodes-read-rate" + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip-read-barcodes-read-rate" + } + ] + }, + { + "Name": "task-read-single-barcode", + "ExpectedBarcodesCount": 1, + "LocalizationModes": [ + { + "Mode": "LM_SCAN_DIRECTLY", + "ScanDirection": 2 + }, + { + "Mode": "LM_CONNECTED_BLOCKS" + } + ], + "DeblurModes": [ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_THRESHOLD_BINARIZATION" + }, + { + "Mode": "DM_DEEP_ANALYSIS" + } + ], + "BarcodeFormatSpecificationNameArray": [ + "bfs1-single-barcode", + "bfs2-single-barcode" + ], + "SectionImageParameterArray": [ + { + "Section": "ST_REGION_PREDETECTION", + "ImageParameterName": "ip-read-single-barcode" + }, + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip-read-single-barcode" + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip-read-single-barcode" + } + ] + }, + { + "Name": "task-read-barcodes-balance", + "ExpectedBarcodesCount": 999, + "LocalizationModes": [ + { + "Mode": "LM_CONNECTED_BLOCKS" + }, + { + "Mode": "LM_SCAN_DIRECTLY" + } + ], + "DeblurModes": [ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_THRESHOLD_BINARIZATION" + }, + { + "Mode": "DM_DIRECT_BINARIZATION" + } + ], + "BarcodeFormatSpecificationNameArray": [ + "bfs1-balance", + "bfs2-balance" + ], + "SectionImageParameterArray": [ + { + "Section": "ST_REGION_PREDETECTION", + "ImageParameterName": "ip-read-barcodes-balance" + }, + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip-read-barcodes-balance" + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip-read-barcodes-balance" + } + ] + }, + { + "Name": "task-read-barcodes-dense", + "ExpectedBarcodesCount": 0, + "LocalizationModes": [ + { + "Mode": "LM_CONNECTED_BLOCKS" + }, + { + "Mode": "LM_LINES" + } + ], + "DeblurModes": [ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_THRESHOLD_BINARIZATION" + }, + { + "Mode": "DM_DIRECT_BINARIZATION" + }, + { + "Mode": "DM_SMOOTHING" + }, + { + "Mode": "DM_GRAY_EQUALIZATION" + } + ], + "BarcodeFormatSpecificationNameArray": [ + "bfs1-dense", + "bfs2-dense" + ], + "SectionImageParameterArray": [ + { + "Section": "ST_REGION_PREDETECTION", + "ImageParameterName": "ip-read-barcodes-dense" + }, + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip-read-barcodes-dense" + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip-read-barcodes-dense" + } + ] + }, + { + "Name": "task-read-barcodes-distant", + "ExpectedBarcodesCount": 0, + "LocalizationModes": [ + { + "Mode": "LM_CONNECTED_BLOCKS" + }, + { + "Mode": "LM_LINES" + } + ], + "DeblurModes": [ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_THRESHOLD_BINARIZATION" + }, + { + "Mode": "DM_DIRECT_BINARIZATION" + } + ], + "BarcodeFormatSpecificationNameArray": [ + "bfs1-distant", + "bfs2-distant" + ], + "SectionImageParameterArray": [ + { + "Section": "ST_REGION_PREDETECTION", + "ImageParameterName": "ip-read-barcodes-distant" + }, + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip-read-barcodes-distant" + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip-read-barcodes-distant" + } + ] + } + ], + "ImageParameterOptions": [ + { + "Name": "ip-read-barcodes", + "TextDetectionMode": { + "Mode": "TTDM_LINE", + "Direction": "UNKNOWN", + "Sensitivity": 3 + }, + "IfEraseTextZone": 1, + "BinarizationModes": [ + { + "Mode": "BM_LOCAL_BLOCK", + "BlockSizeX": 71, + "BlockSizeY": 71, + "EnableFillBinaryVacancy": 0 + } + ], + "GrayscaleTransformationModes": [ + { + "Mode": "GTM_ORIGINAL" + } + ] + }, + { + "Name": "ip-read-barcodes-speed-first", + "TextDetectionMode": { + "Mode": "TTDM_LINE", + "Direction": "UNKNOWN", + "Sensitivity": 3 + }, + "IfEraseTextZone": 1, + "BinarizationModes": [ + { + "Mode": "BM_LOCAL_BLOCK", + "BlockSizeX": 27, + "BlockSizeY": 27, + "EnableFillBinaryVacancy": 1 + } + ], + "GrayscaleTransformationModes": [ + { + "Mode": "GTM_ORIGINAL" + } + ], + "ScaleDownThreshold": 2300 + }, + { + "Name": "ip-read-barcodes-read-rate", + "TextDetectionMode": { + "Mode": "TTDM_LINE", + "Direction": "UNKNOWN", + "Sensitivity": 3 + }, + "IfEraseTextZone": 1, + "BinarizationModes": [ + { + "Mode": "BM_LOCAL_BLOCK", + "BlockSizeX": 0, + "BlockSizeY": 0, + "EnableFillBinaryVacancy": 1 + } + ], + "GrayscaleTransformationModes": [ + { + "Mode": "GTM_ORIGINAL" + } + ], + "ScaleDownThreshold": 100000 + }, + { + "Name": "ip-read-single-barcode", + "TextDetectionMode": { + "Mode": "TTDM_LINE", + "Direction": "UNKNOWN", + "Sensitivity": 3 + }, + "IfEraseTextZone": 1, + "BinarizationModes": [ + { + "Mode": "BM_LOCAL_BLOCK", + "BlockSizeX": 27, + "BlockSizeY": 27, + "EnableFillBinaryVacancy": 0 + } + ], + "GrayscaleTransformationModes": [ + { + "Mode": "GTM_ORIGINAL" + } + ], + "ScaleDownThreshold": 2300 + }, + { + "Name": "ip-read-barcodes-balance", + "TextDetectionMode": { + "Mode": "TTDM_LINE", + "Direction": "UNKNOWN", + "Sensitivity": 3 + }, + "IfEraseTextZone": 1, + "BinarizationModes": [ + { + "Mode": "BM_LOCAL_BLOCK", + "BlockSizeX": 0, + "BlockSizeY": 0, + "EnableFillBinaryVacancy": 1 + } + ], + "GrayscaleTransformationModes": [ + { + "Mode": "GTM_ORIGINAL" + } + ] + }, + { + "Name": "ip-read-barcodes-dense", + "TextDetectionMode": { + "Mode": "TTDM_LINE", + "Direction": "UNKNOWN", + "Sensitivity": 3 + }, + "IfEraseTextZone": 1, + "BinarizationModes": [ + { + "Mode": "BM_LOCAL_BLOCK", + "BlockSizeX": 0, + "BlockSizeY": 0, + "EnableFillBinaryVacancy": 1 + } + ], + "GrayscaleTransformationModes": [ + { + "Mode": "GTM_ORIGINAL" + } + ], + "ScaleDownThreshold": 100000 + }, + { + "Name": "ip-read-barcodes-distant", + "TextDetectionMode": { + "Mode": "TTDM_LINE", + "Direction": "UNKNOWN", + "Sensitivity": 3 + }, + "IfEraseTextZone": 1, + "BinarizationModes": [ + { + "Mode": "BM_LOCAL_BLOCK", + "BlockSizeX": 0, + "BlockSizeY": 0, + "EnableFillBinaryVacancy": 1 + } + ], + "GrayscaleTransformationModes": [ + { + "Mode": "GTM_ORIGINAL" + } + ], + "ScaleDownThreshold": 2300 + } + ] +} \ No newline at end of file diff --git a/dist/barcode-scanner.ui.xml b/dist/barcode-scanner.ui.xml new file mode 100644 index 0000000..b245f3a --- /dev/null +++ b/dist/barcode-scanner.ui.xml @@ -0,0 +1,140 @@ + \ No newline at end of file diff --git a/dist/dbr.bundle.d.ts b/dist/dbr.bundle.d.ts index 1c54afb..728cdf1 100644 --- a/dist/dbr.bundle.d.ts +++ b/dist/dbr.bundle.d.ts @@ -1,12 +1,99 @@ +import { EngineResourcePaths, DSImageData } from 'dynamsoft-core'; import * as dynamsoftCore from 'dynamsoft-core'; export { dynamsoftCore as Core }; -import * as dynamsoftLicense from 'dynamsoft-license'; -export { dynamsoftLicense as License }; +import { CapturedResult } from 'dynamsoft-capture-vision-router'; import * as dynamsoftCaptureVisionRouter from 'dynamsoft-capture-vision-router'; export { dynamsoftCaptureVisionRouter as CVR }; -import * as dynamsoftCameraEnhancer from 'dynamsoft-camera-enhancer'; -export { dynamsoftCameraEnhancer as DCE }; +import { EnumBarcodeFormat, BarcodeResultItem } from 'dynamsoft-barcode-reader'; import * as dynamsoftBarcodeReader from 'dynamsoft-barcode-reader'; export { dynamsoftBarcodeReader as DBR }; +import * as dynamsoftLicense from 'dynamsoft-license'; +export { dynamsoftLicense as License }; +import * as dynamsoftCameraEnhancer from 'dynamsoft-camera-enhancer'; +export { dynamsoftCameraEnhancer as DCE }; import * as dynamsoftUtility from 'dynamsoft-utility'; export { dynamsoftUtility as Utility }; + +declare enum EnumScanMode { + SM_SINGLE = 0, + SM_MULTI_UNIQUE = 1 +} +declare enum EnumOptimizationMode { + OM_NONE = 0, + OM_SPEED = 1, + OM_COVERAGE = 2, + OM_BALANCE = 3, + OM_DPM = 4, + OM_DENSE = 5 +} +declare enum EnumResultStatus { + RS_SUCCESS = 0, + RS_CANCELLED = 1, + RS_FAILED = 2 +} + +interface BarcodeScannerConfig { + license?: string; + scanMode?: EnumScanMode; + templateFilePath?: string; + utilizedTemplateNames?: UtilizedTemplateNames; + engineResourcePaths?: EngineResourcePaths; + barcodeFormats?: Array | EnumBarcodeFormat; + duplicateForgetTime?: number; + container?: HTMLElement | string | undefined; + onUniqueBarcodeScanned?: (result: BarcodeResultItem) => void | Promise; + showResultView?: boolean; + showUploadImageButton?: boolean; + removePoweredByMessage?: boolean; + scannerViewConfig?: ScannerViewConfig; + resultViewConfig?: ResultViewConfig; + uiPath?: string; +} +interface ScannerViewConfig { + container?: HTMLElement | string | undefined; + showCloseButton?: boolean; +} +interface BarcodeResultViewToolbarButtonsConfig { + clear?: ToolbarButtonConfig; + done?: ToolbarButtonConfig; +} +interface ResultViewConfig { + container?: HTMLElement | string | undefined; + toolbarButtonsConfig?: BarcodeResultViewToolbarButtonsConfig; +} + +type ResultStatus = { + code: EnumResultStatus; + message: string; +}; +interface ToolbarButtonConfig { + label?: string; + className?: string; + isHidden?: boolean; +} +interface BarcodeScanResult { + status: ResultStatus; + barcodeResults: Array; + originalImageResult?: DSImageData; + barcodeImage?: DSImageData; +} +interface UtilizedTemplateNames { + single?: string; + multi_unique?: string; + image?: string; +} + +declare class BarcodeScanner { + #private; + private _cameraEnhancer; + private _cameraView; + private _cvRouter; + config: BarcodeScannerConfig; + constructor(config?: BarcodeScannerConfig); + launch(): Promise; + decode(imageOrFile: Blob | string | DSImageData | HTMLImageElement | HTMLVideoElement | HTMLCanvasElement, templateName?: string): Promise; + dispose(): void; +} + +export { BarcodeScanner, EnumOptimizationMode, EnumResultStatus, EnumScanMode }; +export type { BarcodeResultViewToolbarButtonsConfig, BarcodeScanResult, BarcodeScannerConfig, ResultStatus, ResultViewConfig, ScannerViewConfig, ToolbarButtonConfig, UtilizedTemplateNames }; diff --git a/dist/dbr.bundle.esm.d.ts b/dist/dbr.bundle.esm.d.ts index bbfbd47..8708fdd 100644 --- a/dist/dbr.bundle.esm.d.ts +++ b/dist/dbr.bundle.esm.d.ts @@ -1,6 +1,93 @@ +import { EngineResourcePaths, DSImageData } from 'dynamsoft-core'; export * from 'dynamsoft-core'; -export * from 'dynamsoft-license'; +import { CapturedResult } from 'dynamsoft-capture-vision-router'; export * from 'dynamsoft-capture-vision-router'; -export * from 'dynamsoft-camera-enhancer'; +import { EnumBarcodeFormat, BarcodeResultItem } from 'dynamsoft-barcode-reader'; export * from 'dynamsoft-barcode-reader'; +export * from 'dynamsoft-license'; +export * from 'dynamsoft-camera-enhancer'; export * from 'dynamsoft-utility'; + +declare enum EnumScanMode { + SM_SINGLE = 0, + SM_MULTI_UNIQUE = 1 +} +declare enum EnumOptimizationMode { + OM_NONE = 0, + OM_SPEED = 1, + OM_COVERAGE = 2, + OM_BALANCE = 3, + OM_DPM = 4, + OM_DENSE = 5 +} +declare enum EnumResultStatus { + RS_SUCCESS = 0, + RS_CANCELLED = 1, + RS_FAILED = 2 +} + +interface BarcodeScannerConfig { + license?: string; + scanMode?: EnumScanMode; + templateFilePath?: string; + utilizedTemplateNames?: UtilizedTemplateNames; + engineResourcePaths?: EngineResourcePaths; + barcodeFormats?: Array | EnumBarcodeFormat; + duplicateForgetTime?: number; + container?: HTMLElement | string | undefined; + onUniqueBarcodeScanned?: (result: BarcodeResultItem) => void | Promise; + showResultView?: boolean; + showUploadImageButton?: boolean; + removePoweredByMessage?: boolean; + scannerViewConfig?: ScannerViewConfig; + resultViewConfig?: ResultViewConfig; + uiPath?: string; +} +interface ScannerViewConfig { + container?: HTMLElement | string | undefined; + showCloseButton?: boolean; +} +interface BarcodeResultViewToolbarButtonsConfig { + clear?: ToolbarButtonConfig; + done?: ToolbarButtonConfig; +} +interface ResultViewConfig { + container?: HTMLElement | string | undefined; + toolbarButtonsConfig?: BarcodeResultViewToolbarButtonsConfig; +} + +type ResultStatus = { + code: EnumResultStatus; + message: string; +}; +interface ToolbarButtonConfig { + label?: string; + className?: string; + isHidden?: boolean; +} +interface BarcodeScanResult { + status: ResultStatus; + barcodeResults: Array; + originalImageResult?: DSImageData; + barcodeImage?: DSImageData; +} +interface UtilizedTemplateNames { + single?: string; + multi_unique?: string; + image?: string; +} + +declare class BarcodeScanner { + #private; + private _cameraEnhancer; + private _cameraView; + private _cvRouter; + config: BarcodeScannerConfig; + constructor(config?: BarcodeScannerConfig); + launch(): Promise; + decode(imageOrFile: Blob | string | DSImageData | HTMLImageElement | HTMLVideoElement | HTMLCanvasElement, templateName?: string): Promise; + dispose(): void; +} + +export { BarcodeScanner, EnumOptimizationMode, EnumResultStatus, EnumScanMode }; +export type { BarcodeResultViewToolbarButtonsConfig, BarcodeScanResult, BarcodeScannerConfig, ResultStatus, ResultViewConfig, ScannerViewConfig, ToolbarButtonConfig, UtilizedTemplateNames }; diff --git a/dist/dbr.bundle.js b/dist/dbr.bundle.js index 9005013..57d6d03 100644 --- a/dist/dbr.bundle.js +++ b/dist/dbr.bundle.js @@ -4,8 +4,8 @@ * @website http://www.dynamsoft.com * @copyright Copyright 2025, Dynamsoft Corporation * @author Dynamsoft -* @version 10.4.3100 +* @version 10.5.3000 * @fileoverview Dynamsoft JavaScript Library for Barcode Reader * More info on dbr JS: https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/ */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Dynamsoft=t.Dynamsoft||{})}(this,(function(t){"use strict";const e=t=>t&&"object"==typeof t&&"function"==typeof t.then,i=(async()=>{})().constructor;let r=class extends i{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(t){let r;this._task=t,e(t)?r=t:"function"==typeof t&&(r=new i(t)),r&&(async()=>{try{const e=await r;t===this._task&&this.resolve(e)}catch(e){t===this._task&&this.reject(e)}})()}get isEmpty(){return null==this._task}constructor(t){let i,r;super(((t,e)=>{i=t,r=e})),this._s="pending",this.resolve=t=>{this.isPending&&(e(t)?this.task=t:(this._s="fulfilled",i(t)))},this.reject=t=>{this.isPending&&(this._s="rejected",r(t))},this.task=t}};function n(t,e,i,r){if("a"===i&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?r:"a"===i?r.call(t):r?r.value:e.get(t)}function s(t,e,i,r,n){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?n.call(t,i):n?n.value=i:e.set(t,i),i}var o,a,h;"function"==typeof SuppressedError&&SuppressedError,function(t){t[t.BOPM_BLOCK=0]="BOPM_BLOCK",t[t.BOPM_UPDATE=1]="BOPM_UPDATE"}(o||(o={})),function(t){t[t.CCUT_AUTO=0]="CCUT_AUTO",t[t.CCUT_FULL_CHANNEL=1]="CCUT_FULL_CHANNEL",t[t.CCUT_Y_CHANNEL_ONLY=2]="CCUT_Y_CHANNEL_ONLY",t[t.CCUT_RGB_R_CHANNEL_ONLY=3]="CCUT_RGB_R_CHANNEL_ONLY",t[t.CCUT_RGB_G_CHANNEL_ONLY=4]="CCUT_RGB_G_CHANNEL_ONLY",t[t.CCUT_RGB_B_CHANNEL_ONLY=5]="CCUT_RGB_B_CHANNEL_ONLY"}(a||(a={})),function(t){t[t.IPF_BINARY=0]="IPF_BINARY",t[t.IPF_BINARYINVERTED=1]="IPF_BINARYINVERTED",t[t.IPF_GRAYSCALED=2]="IPF_GRAYSCALED",t[t.IPF_NV21=3]="IPF_NV21",t[t.IPF_RGB_565=4]="IPF_RGB_565",t[t.IPF_RGB_555=5]="IPF_RGB_555",t[t.IPF_RGB_888=6]="IPF_RGB_888",t[t.IPF_ARGB_8888=7]="IPF_ARGB_8888",t[t.IPF_RGB_161616=8]="IPF_RGB_161616",t[t.IPF_ARGB_16161616=9]="IPF_ARGB_16161616",t[t.IPF_ABGR_8888=10]="IPF_ABGR_8888",t[t.IPF_ABGR_16161616=11]="IPF_ABGR_16161616",t[t.IPF_BGR_888=12]="IPF_BGR_888",t[t.IPF_BINARY_8=13]="IPF_BINARY_8",t[t.IPF_NV12=14]="IPF_NV12",t[t.IPF_BINARY_8_INVERTED=15]="IPF_BINARY_8_INVERTED"}(h||(h={}));const l="undefined"==typeof self,c="function"==typeof importScripts,u=(()=>{if(!c){if(!l&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),d=t=>{if(null==t&&(t="./"),l||c);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t},f=t=>Object.prototype.toString.call(t),g=t=>Array.isArray?Array.isArray(t):"[object Array]"===f(t),m=t=>"[object Boolean]"===f(t),p=t=>"number"==typeof t&&!Number.isNaN(t),_=t=>null!==t&&"object"==typeof t&&!Array.isArray(t),v=t=>!(!_(t)||!p(t.width)||t.width<=0||!p(t.height)||t.height<=0||!p(t.stride)||t.stride<=0||!("format"in t)||"tag"in t&&!C(t.tag)),y=t=>!!v(t)&&t.bytes instanceof Uint8Array,w=t=>!(!_(t)||!p(t.left)||t.left<0||!p(t.top)||t.top<0||!p(t.right)||t.right<0||!p(t.bottom)||t.bottom<0||t.left>=t.right||t.top>=t.bottom||!m(t.isMeasuredInPercentage)),C=t=>null===t||!!_(t)&&!!p(t.imageId)&&"type"in t,E=t=>!(!_(t)||!T(t.startPoint)||!T(t.endPoint)||t.startPoint.x==t.endPoint.x&&t.startPoint.y==t.endPoint.y),T=t=>!!_(t)&&!!p(t.x)&&!!p(t.y),S=t=>!!_(t)&&!!g(t.points)&&0!=t.points.length&&!t.points.some((t=>!T(t))),b=t=>!!_(t)&&!!g(t.points)&&0!=t.points.length&&4==t.points.length&&!t.points.some((t=>!T(t))),I=t=>!(!_(t)||!p(t.x)||!p(t.y)||!p(t.width)||t.width<0||!p(t.height)||t.height<0||"isMeasuredInPercentage"in t&&!m(t.isMeasuredInPercentage)),x=async(t,e)=>await new Promise(((i,r)=>{let n=new XMLHttpRequest;n.open("GET",t,!0),n.responseType=e,n.send(),n.onloadend=async()=>{n.status<200||n.status>=300?r(new Error(t+" "+n.status)):i(n.response)},n.onerror=()=>{r(new Error("Network Error: "+n.statusText))}})),O=(t,e)=>{let i=t.split("."),r=e.split(".");for(let t=0;t{const e={},i={std:"dynamsoft-capture-vision-std",dip:"dynamsoft-image-processing",core:"dynamsoft-core",dnn:"dynamsoft-capture-vision-dnn",license:"dynamsoft-license",utility:"dynamsoft-utility",cvr:"dynamsoft-capture-vision-router",dbr:"dynamsoft-barcode-reader",dlr:"dynamsoft-label-recognizer",ddn:"dynamsoft-document-normalizer",dcp:"dynamsoft-code-parser",dcpd:"dynamsoft-code-parser",dlrData:"dynamsoft-label-recognizer-data",dce:"dynamsoft-camera-enhancer",ddv:"dynamsoft-document-viewer"};for(let r in t){if("rootDirectory"===r)continue;let n=r,s=t[n],o=s&&"object"==typeof s&&s.path?s.path:s,a=t.rootDirectory;if(a&&!a.endsWith("/")&&(a+="/"),"object"==typeof s&&s.isInternal)a&&(o=t[n].version?`${a}${i[n]}@${t[n].version}/dist/${"ddv"===n?"engine":""}`:`${a}${i[n]}/dist/${"ddv"===n?"engine":""}`);else{const i=/^@engineRootDirectory(\/?)/;if("string"==typeof o&&(o=o.replace(i,a||"")),"object"==typeof o&&"dwt"===n){const r=t[n].resourcesPath,s=t[n].serviceInstallerLocation;e[n]={resourcesPath:r.replace(i,a||""),serviceInstallerLocation:s.replace(i,a||"")};continue}}e[n]=d(o)}return e},R=async(t,e,i)=>await new Promise((async(r,n)=>{try{const n=e.split(".");let s=n[n.length-1];const o=await L(`image/${s}`,t);n.length<=1&&(s="png");const a=new File([o],e,{type:`image/${s}`});if(i){const t=URL.createObjectURL(a),i=document.createElement("a");i.href=t,i.download=e,i.click()}return r(a)}catch(t){return n()}})),D=t=>{y(t)&&(t=M(t));const e=document.createElement("canvas");return e.width=t.width,e.height=t.height,e.getContext("2d",{willReadFrequently:!0}).putImageData(t,0,0),e},L=async(t,e)=>{y(e)&&(e=M(e));const i=D(e);return new Promise(((e,r)=>{i.toBlob((t=>e(t)),t)}))},M=t=>{let e,i=t.bytes;if(!(i&&i instanceof Uint8Array))throw Error("Parameter type error");if(Number(t.format)===h.IPF_BGR_888){const t=i.length/3;e=new Uint8ClampedArray(4*t);for(let r=0;r=n)break;e[o]=e[o+1]=e[o+2]=(128&r)/128*255,e[o+3]=255,r<<=1}}}else if(Number(t.format)===h.IPF_ABGR_8888){const t=i.length/4;e=new Uint8ClampedArray(i.length);for(let r=0;r=n)break;e[o]=e[o+1]=e[o+2]=128&r?0:255,e[o+3]=255,r<<=1}}}return new ImageData(e,t.width,t.height)};var F,P,k,B,N,j,U,V;let G,W,Y,H,X,z=class t{get _isFetchingStarted(){return n(this,N,"f")}constructor(){F.add(this),P.set(this,[]),k.set(this,1),B.set(this,o.BOPM_BLOCK),N.set(this,!1),j.set(this,void 0),U.set(this,a.CCUT_AUTO)}setErrorListener(t){}addImageToBuffer(t){var e;if(!y(t))throw new TypeError("Invalid 'image'.");if((null===(e=t.tag)||void 0===e?void 0:e.hasOwnProperty("imageId"))&&"number"==typeof t.tag.imageId&&this.hasImage(t.tag.imageId))throw new Error("Existed imageId.");if(n(this,P,"f").length>=n(this,k,"f"))switch(n(this,B,"f")){case o.BOPM_BLOCK:break;case o.BOPM_UPDATE:if(n(this,P,"f").push(t),_(n(this,j,"f"))&&p(n(this,j,"f").imageId)&&1==n(this,j,"f").keepInBuffer)for(;n(this,P,"f").length>n(this,k,"f");){const t=n(this,P,"f").findIndex((t=>{var e;return(null===(e=t.tag)||void 0===e?void 0:e.imageId)!==n(this,j,"f").imageId}));n(this,P,"f").splice(t,1)}else n(this,P,"f").splice(0,n(this,P,"f").length-n(this,k,"f"))}else n(this,P,"f").push(t)}getImage(){if(0===n(this,P,"f").length)return null;let e;if(n(this,j,"f")&&p(n(this,j,"f").imageId)){const t=n(this,F,"m",V).call(this,n(this,j,"f").imageId);if(t<0)throw new Error(`Image with id ${n(this,j,"f").imageId} doesn't exist.`);e=n(this,P,"f").slice(t,t+1)[0]}else e=n(this,P,"f").pop();if([h.IPF_RGB_565,h.IPF_RGB_555,h.IPF_RGB_888,h.IPF_ARGB_8888,h.IPF_RGB_161616,h.IPF_ARGB_16161616,h.IPF_ABGR_8888,h.IPF_ABGR_16161616,h.IPF_BGR_888].includes(e.format)){if(n(this,U,"f")===a.CCUT_RGB_R_CHANNEL_ONLY){t._onLog&&t._onLog("only get R channel data.");const i=new Uint8Array(e.width*e.height);for(let t=0;t0!==t.length&&t.every((t=>p(t))))(t))throw new TypeError("Invalid 'imageId'.");if(void 0!==e&&!m(e))throw new TypeError("Invalid 'keepInBuffer'.");s(this,j,{imageId:t,keepInBuffer:e},"f")}_resetNextReturnedImage(){s(this,j,null,"f")}hasImage(t){return n(this,F,"m",V).call(this,t)>=0}startFetching(){s(this,N,!0,"f")}stopFetching(){s(this,N,!1,"f")}setMaxImageCount(t){if("number"!=typeof t)throw new TypeError("Invalid 'count'.");if(t<1||Math.round(t)!==t)throw new Error("Invalid 'count'.");for(s(this,k,t,"f");n(this,P,"f")&&n(this,P,"f").length>t;)n(this,P,"f").shift()}getMaxImageCount(){return n(this,k,"f")}getImageCount(){return n(this,P,"f").length}clearBuffer(){n(this,P,"f").length=0}isBufferEmpty(){return 0===n(this,P,"f").length}setBufferOverflowProtectionMode(t){s(this,B,t,"f")}getBufferOverflowProtectionMode(){return n(this,B,"f")}setColourChannelUsageType(t){s(this,U,t,"f")}getColourChannelUsageType(){return n(this,U,"f")}};P=new WeakMap,k=new WeakMap,B=new WeakMap,N=new WeakMap,j=new WeakMap,U=new WeakMap,F=new WeakSet,V=function(t){if("number"!=typeof t)throw new TypeError("Invalid 'imageId'.");return n(this,P,"f").findIndex((e=>{var i;return(null===(i=e.tag)||void 0===i?void 0:i.imageId)===t}))},"undefined"!=typeof navigator&&(G=navigator,W=G.userAgent,Y=G.platform,H=G.mediaDevices),function(){if(!l){const t={Edge:{search:"Edg",verSearch:"Edg"},OPR:null,Chrome:null,Safari:{str:G.vendor,search:"Apple",verSearch:["Version","iPhone OS","CPU OS"]},Firefox:null,Explorer:{search:"MSIE",verSearch:"MSIE"}},e={HarmonyOS:null,Android:null,iPhone:null,iPad:null,Windows:{str:Y,search:"Win"},Mac:{str:Y},Linux:{str:Y}};let i="unknownBrowser",r=0,n="unknownOS";for(let e in t){const n=t[e]||{};let s=n.str||W,o=n.search||e,a=n.verStr||W,h=n.verSearch||e;if(h instanceof Array||(h=[h]),-1!=s.indexOf(o)){i=e;for(let t of h){let e=a.indexOf(t);if(-1!=e){r=parseFloat(a.substring(e+t.length+1));break}}break}}for(let t in e){const i=e[t]||{};let r=i.str||W,s=i.search||t;if(-1!=r.indexOf(s)){n=t;break}}"Linux"==n&&-1!=W.indexOf("Windows NT")&&(n="HarmonyOS"),X={browser:i,version:r,OS:n}}l&&(X={browser:"ssr",version:0,OS:"ssr"})}();const Z="undefined"!=typeof WebAssembly&&W&&!(/Safari/.test(W)&&!/Chrome/.test(W)&&/\(.+\s11_2_([2-6]).*\)/.test(W)),q=!("undefined"==typeof Worker),K=!(!H||!H.getUserMedia),J=async()=>{let t=!1;if(K)try{(await H.getUserMedia({video:!0})).getTracks().forEach((t=>{t.stop()})),t=!0}catch(t){}return t};"Chrome"===X.browser&&X.version>66||"Safari"===X.browser&&X.version>13||"OPR"===X.browser&&X.version>43||"Edge"===X.browser&&X.version;const Q={},$=async t=>{let e="string"==typeof t?[t]:t,i=[];for(let t of e)i.push(Q[t]=Q[t]||new r);await Promise.all(i)},tt=async(t,e)=>{let i,n="string"==typeof t?[t]:t,s=[];for(let t of n){let n;s.push(n=Q[t]=Q[t]||new r(i=i||e())),n.isEmpty&&(n.task=i=i||e())}await Promise.all(s)};let et,it=0;const rt=()=>it++,nt={};let st;const ot=t=>{st=t,et&&et.postMessage({type:"setBLog",body:{value:!!t}})};let at=!1;const ht=t=>{at=t,et&&et.postMessage({type:"setBDebug",body:{value:!!t}})},lt={},ct={},ut={dip:{wasm:!0}},dt={std:{version:"1.4.21",path:d(u+"../../dynamsoft-capture-vision-std@1.4.21/dist/"),isInternal:!0},core:{version:"3.4.31",path:u,isInternal:!0}},ft=async t=>{let e;t instanceof Array||(t=t?[t]:[]);let i=Q.core;e=!i||i.isEmpty;let n=new Map;const s=t=>{if("std"==(t=t.toLowerCase())||"core"==t)return;if(!ut[t])throw Error("The '"+t+"' module cannot be found.");let e=ut[t].deps;if(null==e?void 0:e.length)for(let t of e)s(t);let i=Q[t];n.has(t)||n.set(t,!i||i.isEmpty)};for(let e of t)s(e);let o=[];e&&o.push("core"),o.push(...n.keys());const a=[...n.entries()].filter((t=>!t[1])).map((t=>t[0]));await tt(o,(async()=>{const t=[...n.entries()].filter((t=>t[1])).map((t=>t[0]));await $(a);const i=A(dt),s={};for(let e of t)s[e]=ut[e];const o={engineResourcePaths:i,autoResources:s,names:t};let h=new r;if(e){o.needLoadCore=!0;let t=i.core+gt._workerName;t.startsWith(location.origin)||(t=await fetch(t).then((t=>t.blob())).then((t=>URL.createObjectURL(t)))),et=new Worker(t),et.onerror=t=>{let e=new Error(t.message);h.reject(e)},et.addEventListener("message",(t=>{let e=t.data?t.data:t,i=e.type,r=e.id,n=e.body;switch(i){case"log":st&&st(e.message);break;case"task":try{nt[r](n),delete nt[r]}catch(t){throw delete nt[r],t}break;case"event":try{nt[r](n)}catch(t){throw t}break;default:console.log(t)}})),o.bLog=!!st,o.bd=at,o.dm=location.origin.startsWith("http")?location.origin:"https://localhost"}else await $("core");let l=it++;nt[l]=t=>{if(t.success)Object.assign(lt,t.versions),"{}"!==JSON.stringify(t.versions)&&(gt._versions=t.versions),h.resolve(void 0);else{const e=Error(t.message);t.stack&&(e.stack=t.stack),h.reject(e)}},et.postMessage({type:"loadWasm",body:o,id:l}),await h}))};class gt{static get engineResourcePaths(){return dt}static set engineResourcePaths(t){Object.assign(dt,t)}static get bSupportDce4Module(){return this._bSupportDce4Module}static get bSupportIRTModule(){return this._bSupportIRTModule}static get versions(){return this._versions}static get _onLog(){return st}static set _onLog(t){ot(t)}static get _bDebug(){return at}static set _bDebug(t){ht(t)}static isModuleLoaded(t){return t=(t=t||"core").toLowerCase(),!!Q[t]&&Q[t].isFulfilled}static async loadWasm(t){return await ft(t)}static async detectEnvironment(){return await(async()=>({wasm:Z,worker:q,getUserMedia:K,camera:await J(),browser:X.browser,version:X.version,OS:X.OS}))()}static async getModuleVersion(){return await new Promise(((t,e)=>{let i=rt();nt[i]=async i=>{if(i.success)return t(i.versions);{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},et.postMessage({type:"getModuleVersion",id:i})}))}static getVersion(){return`3.4.31(Worker: ${lt.core&<.core.worker||"Not Loaded"}, Wasm: ${lt.core&<.core.wasm||"Not Loaded"})`}static enableLogging(){z._onLog=console.log,gt._onLog=console.log}static disableLogging(){z._onLog=null,gt._onLog=null}static async cfd(t){return await new Promise(((e,i)=>{let r=rt();nt[r]=async t=>{if(t.success)return e();{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},et.postMessage({type:"cfd",id:r,body:{count:t}})}))}}var mt,pt,_t,vt,yt,wt,Ct,Et,Tt;gt._bSupportDce4Module=-1,gt._bSupportIRTModule=-1,gt._versions=null,gt._workerName="core.worker.js",gt.browserInfo=X,function(t){t[t.CRIT_ORIGINAL_IMAGE=1]="CRIT_ORIGINAL_IMAGE",t[t.CRIT_BARCODE=2]="CRIT_BARCODE",t[t.CRIT_TEXT_LINE=4]="CRIT_TEXT_LINE",t[t.CRIT_DETECTED_QUAD=8]="CRIT_DETECTED_QUAD",t[t.CRIT_NORMALIZED_IMAGE=16]="CRIT_NORMALIZED_IMAGE",t[t.CRIT_PARSED_RESULT=32]="CRIT_PARSED_RESULT"}(mt||(mt={})),function(t){t[t.CT_NORMAL_INTERSECTED=0]="CT_NORMAL_INTERSECTED",t[t.CT_T_INTERSECTED=1]="CT_T_INTERSECTED",t[t.CT_CROSS_INTERSECTED=2]="CT_CROSS_INTERSECTED",t[t.CT_NOT_INTERSECTED=3]="CT_NOT_INTERSECTED"}(pt||(pt={})),function(t){t[t.EC_OK=0]="EC_OK",t[t.EC_UNKNOWN=-1e4]="EC_UNKNOWN",t[t.EC_NO_MEMORY=-10001]="EC_NO_MEMORY",t[t.EC_NULL_POINTER=-10002]="EC_NULL_POINTER",t[t.EC_LICENSE_INVALID=-10003]="EC_LICENSE_INVALID",t[t.EC_LICENSE_EXPIRED=-10004]="EC_LICENSE_EXPIRED",t[t.EC_FILE_NOT_FOUND=-10005]="EC_FILE_NOT_FOUND",t[t.EC_FILE_TYPE_NOT_SUPPORTED=-10006]="EC_FILE_TYPE_NOT_SUPPORTED",t[t.EC_BPP_NOT_SUPPORTED=-10007]="EC_BPP_NOT_SUPPORTED",t[t.EC_INDEX_INVALID=-10008]="EC_INDEX_INVALID",t[t.EC_CUSTOM_REGION_INVALID=-10010]="EC_CUSTOM_REGION_INVALID",t[t.EC_IMAGE_READ_FAILED=-10012]="EC_IMAGE_READ_FAILED",t[t.EC_TIFF_READ_FAILED=-10013]="EC_TIFF_READ_FAILED",t[t.EC_DIB_BUFFER_INVALID=-10018]="EC_DIB_BUFFER_INVALID",t[t.EC_PDF_READ_FAILED=-10021]="EC_PDF_READ_FAILED",t[t.EC_PDF_DLL_MISSING=-10022]="EC_PDF_DLL_MISSING",t[t.EC_PAGE_NUMBER_INVALID=-10023]="EC_PAGE_NUMBER_INVALID",t[t.EC_CUSTOM_SIZE_INVALID=-10024]="EC_CUSTOM_SIZE_INVALID",t[t.EC_TIMEOUT=-10026]="EC_TIMEOUT",t[t.EC_JSON_PARSE_FAILED=-10030]="EC_JSON_PARSE_FAILED",t[t.EC_JSON_TYPE_INVALID=-10031]="EC_JSON_TYPE_INVALID",t[t.EC_JSON_KEY_INVALID=-10032]="EC_JSON_KEY_INVALID",t[t.EC_JSON_VALUE_INVALID=-10033]="EC_JSON_VALUE_INVALID",t[t.EC_JSON_NAME_KEY_MISSING=-10034]="EC_JSON_NAME_KEY_MISSING",t[t.EC_JSON_NAME_VALUE_DUPLICATED=-10035]="EC_JSON_NAME_VALUE_DUPLICATED",t[t.EC_TEMPLATE_NAME_INVALID=-10036]="EC_TEMPLATE_NAME_INVALID",t[t.EC_JSON_NAME_REFERENCE_INVALID=-10037]="EC_JSON_NAME_REFERENCE_INVALID",t[t.EC_PARAMETER_VALUE_INVALID=-10038]="EC_PARAMETER_VALUE_INVALID",t[t.EC_DOMAIN_NOT_MATCH=-10039]="EC_DOMAIN_NOT_MATCH",t[t.EC_RESERVED_INFO_NOT_MATCH=-10040]="EC_RESERVED_INFO_NOT_MATCH",t[t.EC_LICENSE_KEY_NOT_MATCH=-10043]="EC_LICENSE_KEY_NOT_MATCH",t[t.EC_REQUEST_FAILED=-10044]="EC_REQUEST_FAILED",t[t.EC_LICENSE_INIT_FAILED=-10045]="EC_LICENSE_INIT_FAILED",t[t.EC_SET_MODE_ARGUMENT_ERROR=-10051]="EC_SET_MODE_ARGUMENT_ERROR",t[t.EC_LICENSE_CONTENT_INVALID=-10052]="EC_LICENSE_CONTENT_INVALID",t[t.EC_LICENSE_KEY_INVALID=-10053]="EC_LICENSE_KEY_INVALID",t[t.EC_LICENSE_DEVICE_RUNS_OUT=-10054]="EC_LICENSE_DEVICE_RUNS_OUT",t[t.EC_GET_MODE_ARGUMENT_ERROR=-10055]="EC_GET_MODE_ARGUMENT_ERROR",t[t.EC_IRT_LICENSE_INVALID=-10056]="EC_IRT_LICENSE_INVALID",t[t.EC_FILE_SAVE_FAILED=-10058]="EC_FILE_SAVE_FAILED",t[t.EC_STAGE_TYPE_INVALID=-10059]="EC_STAGE_TYPE_INVALID",t[t.EC_IMAGE_ORIENTATION_INVALID=-10060]="EC_IMAGE_ORIENTATION_INVALID",t[t.EC_CONVERT_COMPLEX_TEMPLATE_ERROR=-10061]="EC_CONVERT_COMPLEX_TEMPLATE_ERROR",t[t.EC_CALL_REJECTED_WHEN_CAPTURING=-10062]="EC_CALL_REJECTED_WHEN_CAPTURING",t[t.EC_NO_IMAGE_SOURCE=-10063]="EC_NO_IMAGE_SOURCE",t[t.EC_READ_DIRECTORY_FAILED=-10064]="EC_READ_DIRECTORY_FAILED",t[t.EC_MODULE_NOT_FOUND=-10065]="EC_MODULE_NOT_FOUND",t[t.EC_MULTI_PAGES_NOT_SUPPORTED=-10066]="EC_MULTI_PAGES_NOT_SUPPORTED",t[t.EC_FILE_ALREADY_EXISTS=-10067]="EC_FILE_ALREADY_EXISTS",t[t.EC_CREATE_FILE_FAILED=-10068]="EC_CREATE_FILE_FAILED",t[t.EC_IMGAE_DATA_INVALID=-10069]="EC_IMGAE_DATA_INVALID",t[t.EC_IMAGE_SIZE_NOT_MATCH=-10070]="EC_IMAGE_SIZE_NOT_MATCH",t[t.EC_IMAGE_PIXEL_FORMAT_NOT_MATCH=-10071]="EC_IMAGE_PIXEL_FORMAT_NOT_MATCH",t[t.EC_SECTION_LEVEL_RESULT_IRREPLACEABLE=-10072]="EC_SECTION_LEVEL_RESULT_IRREPLACEABLE",t[t.EC_AXIS_DEFINITION_INCORRECT=-10073]="EC_AXIS_DEFINITION_INCORRECT",t[t.EC_RESULT_TYPE_MISMATCH_IRREPLACEABLE=-10074]="EC_RESULT_TYPE_MISMATCH_IRREPLACEABLE",t[t.EC_PDF_LIBRARY_LOAD_FAILED=-10075]="EC_PDF_LIBRARY_LOAD_FAILED",t[t.EC_NO_LICENSE=-2e4]="EC_NO_LICENSE",t[t.EC_HANDSHAKE_CODE_INVALID=-20001]="EC_HANDSHAKE_CODE_INVALID",t[t.EC_LICENSE_BUFFER_FAILED=-20002]="EC_LICENSE_BUFFER_FAILED",t[t.EC_LICENSE_SYNC_FAILED=-20003]="EC_LICENSE_SYNC_FAILED",t[t.EC_DEVICE_NOT_MATCH=-20004]="EC_DEVICE_NOT_MATCH",t[t.EC_BIND_DEVICE_FAILED=-20005]="EC_BIND_DEVICE_FAILED",t[t.EC_INSTANCE_COUNT_OVER_LIMIT=-20008]="EC_INSTANCE_COUNT_OVER_LIMIT",t[t.EC_LICENSE_INIT_SEQUENCE_FAILED=-20009]="EC_LICENSE_INIT_SEQUENCE_FAILED",t[t.EC_TRIAL_LICENSE=-20010]="EC_TRIAL_LICENSE",t[t.EC_FAILED_TO_REACH_DLS=-20200]="EC_FAILED_TO_REACH_DLS",t[t.EC_LICENSE_CACHE_USED=-20012]="EC_LICENSE_CACHE_USED",t[t.EC_BARCODE_FORMAT_INVALID=-30009]="EC_BARCODE_FORMAT_INVALID",t[t.EC_QR_LICENSE_INVALID=-30016]="EC_QR_LICENSE_INVALID",t[t.EC_1D_LICENSE_INVALID=-30017]="EC_1D_LICENSE_INVALID",t[t.EC_PDF417_LICENSE_INVALID=-30019]="EC_PDF417_LICENSE_INVALID",t[t.EC_DATAMATRIX_LICENSE_INVALID=-30020]="EC_DATAMATRIX_LICENSE_INVALID",t[t.EC_CUSTOM_MODULESIZE_INVALID=-30025]="EC_CUSTOM_MODULESIZE_INVALID",t[t.EC_AZTEC_LICENSE_INVALID=-30041]="EC_AZTEC_LICENSE_INVALID",t[t.EC_PATCHCODE_LICENSE_INVALID=-30046]="EC_PATCHCODE_LICENSE_INVALID",t[t.EC_POSTALCODE_LICENSE_INVALID=-30047]="EC_POSTALCODE_LICENSE_INVALID",t[t.EC_DPM_LICENSE_INVALID=-30048]="EC_DPM_LICENSE_INVALID",t[t.EC_FRAME_DECODING_THREAD_EXISTS=-30049]="EC_FRAME_DECODING_THREAD_EXISTS",t[t.EC_STOP_DECODING_THREAD_FAILED=-30050]="EC_STOP_DECODING_THREAD_FAILED",t[t.EC_MAXICODE_LICENSE_INVALID=-30057]="EC_MAXICODE_LICENSE_INVALID",t[t.EC_GS1_DATABAR_LICENSE_INVALID=-30058]="EC_GS1_DATABAR_LICENSE_INVALID",t[t.EC_GS1_COMPOSITE_LICENSE_INVALID=-30059]="EC_GS1_COMPOSITE_LICENSE_INVALID",t[t.EC_DOTCODE_LICENSE_INVALID=-30061]="EC_DOTCODE_LICENSE_INVALID",t[t.EC_PHARMACODE_LICENSE_INVALID=-30062]="EC_PHARMACODE_LICENSE_INVALID",t[t.EC_CHARACTER_MODEL_FILE_NOT_FOUND=-40100]="EC_CHARACTER_MODEL_FILE_NOT_FOUND",t[t.EC_TEXT_LINE_GROUP_LAYOUT_CONFLICT=-40101]="EC_TEXT_LINE_GROUP_LAYOUT_CONFLICT",t[t.EC_TEXT_LINE_GROUP_REGEX_CONFLICT=-40102]="EC_TEXT_LINE_GROUP_REGEX_CONFLICT",t[t.EC_QUADRILATERAL_INVALID=-50057]="EC_QUADRILATERAL_INVALID",t[t.EC_PANORAMA_LICENSE_INVALID=-70060]="EC_PANORAMA_LICENSE_INVALID",t[t.EC_RESOURCE_PATH_NOT_EXIST=-90001]="EC_RESOURCE_PATH_NOT_EXIST",t[t.EC_RESOURCE_LOAD_FAILED=-90002]="EC_RESOURCE_LOAD_FAILED",t[t.EC_CODE_SPECIFICATION_NOT_FOUND=-90003]="EC_CODE_SPECIFICATION_NOT_FOUND",t[t.EC_FULL_CODE_EMPTY=-90004]="EC_FULL_CODE_EMPTY",t[t.EC_FULL_CODE_PREPROCESS_FAILED=-90005]="EC_FULL_CODE_PREPROCESS_FAILED",t[t.EC_ZA_DL_LICENSE_INVALID=-90006]="EC_ZA_DL_LICENSE_INVALID",t[t.EC_AAMVA_DL_ID_LICENSE_INVALID=-90007]="EC_AAMVA_DL_ID_LICENSE_INVALID",t[t.EC_AADHAAR_LICENSE_INVALID=-90008]="EC_AADHAAR_LICENSE_INVALID",t[t.EC_MRTD_LICENSE_INVALID=-90009]="EC_MRTD_LICENSE_INVALID",t[t.EC_VIN_LICENSE_INVALID=-90010]="EC_VIN_LICENSE_INVALID",t[t.EC_CUSTOMIZED_CODE_TYPE_LICENSE_INVALID=-90011]="EC_CUSTOMIZED_CODE_TYPE_LICENSE_INVALID",t[t.EC_LICENSE_WARNING=-10076]="EC_LICENSE_WARNING",t[t.EC_BARCODE_READER_LICENSE_NOT_FOUND=-30063]="EC_BARCODE_READER_LICENSE_NOT_FOUND",t[t.EC_LABEL_RECOGNIZER_LICENSE_NOT_FOUND=-40103]="EC_LABEL_RECOGNIZER_LICENSE_NOT_FOUND",t[t.EC_DOCUMENT_NORMALIZER_LICENSE_NOT_FOUND=-50058]="EC_DOCUMENT_NORMALIZER_LICENSE_NOT_FOUND",t[t.EC_CODE_PARSER_LICENSE_NOT_FOUND=-90012]="EC_CODE_PARSER_LICENSE_NOT_FOUND"}(_t||(_t={})),function(t){t[t.GEM_SKIP=0]="GEM_SKIP",t[t.GEM_AUTO=1]="GEM_AUTO",t[t.GEM_GENERAL=2]="GEM_GENERAL",t[t.GEM_GRAY_EQUALIZE=4]="GEM_GRAY_EQUALIZE",t[t.GEM_GRAY_SMOOTH=8]="GEM_GRAY_SMOOTH",t[t.GEM_SHARPEN_SMOOTH=16]="GEM_SHARPEN_SMOOTH",t[t.GEM_REV=-2147483648]="GEM_REV"}(vt||(vt={})),function(t){t[t.GTM_SKIP=0]="GTM_SKIP",t[t.GTM_INVERTED=1]="GTM_INVERTED",t[t.GTM_ORIGINAL=2]="GTM_ORIGINAL",t[t.GTM_AUTO=4]="GTM_AUTO",t[t.GTM_REV=-2147483648]="GTM_REV"}(yt||(yt={})),function(t){t[t.ITT_FILE_IMAGE=0]="ITT_FILE_IMAGE",t[t.ITT_VIDEO_FRAME=1]="ITT_VIDEO_FRAME"}(wt||(wt={})),function(t){t[t.PDFRM_VECTOR=1]="PDFRM_VECTOR",t[t.PDFRM_RASTER=2]="PDFRM_RASTER",t[t.PDFRM_REV=-2147483648]="PDFRM_REV"}(Ct||(Ct={})),function(t){t[t.RDS_RASTERIZED_PAGES=0]="RDS_RASTERIZED_PAGES",t[t.RDS_EXTRACTED_IMAGES=1]="RDS_EXTRACTED_IMAGES"}(Et||(Et={})),function(t){t[t.CVS_NOT_VERIFIED=0]="CVS_NOT_VERIFIED",t[t.CVS_PASSED=1]="CVS_PASSED",t[t.CVS_FAILED=2]="CVS_FAILED"}(Tt||(Tt={}));const St={IRUT_NULL:BigInt(0),IRUT_COLOUR_IMAGE:BigInt(1),IRUT_SCALED_DOWN_COLOUR_IMAGE:BigInt(2),IRUT_GRAYSCALE_IMAGE:BigInt(4),IRUT_TRANSOFORMED_GRAYSCALE_IMAGE:BigInt(8),IRUT_ENHANCED_GRAYSCALE_IMAGE:BigInt(16),IRUT_PREDETECTED_REGIONS:BigInt(32),IRUT_BINARY_IMAGE:BigInt(64),IRUT_TEXTURE_DETECTION_RESULT:BigInt(128),IRUT_TEXTURE_REMOVED_GRAYSCALE_IMAGE:BigInt(256),IRUT_TEXTURE_REMOVED_BINARY_IMAGE:BigInt(512),IRUT_CONTOURS:BigInt(1024),IRUT_LINE_SEGMENTS:BigInt(2048),IRUT_TEXT_ZONES:BigInt(4096),IRUT_TEXT_REMOVED_BINARY_IMAGE:BigInt(8192),IRUT_CANDIDATE_BARCODE_ZONES:BigInt(16384),IRUT_LOCALIZED_BARCODES:BigInt(32768),IRUT_SCALED_UP_BARCODE_IMAGE:BigInt(65536),IRUT_DEFORMATION_RESISTED_BARCODE_IMAGE:BigInt(1<<17),IRUT_COMPLEMENTED_BARCODE_IMAGE:BigInt(1<<18),IRUT_DECODED_BARCODES:BigInt(1<<19),IRUT_LONG_LINES:BigInt(1<<20),IRUT_CORNERS:BigInt(1<<21),IRUT_CANDIDATE_QUAD_EDGES:BigInt(1<<22),IRUT_DETECTED_QUADS:BigInt(1<<23),IRUT_LOCALIZED_TEXT_LINES:BigInt(1<<24),IRUT_RECOGNIZED_TEXT_LINES:BigInt(1<<25),IRUT_NORMALIZED_IMAGES:BigInt(1<<26),IRUT_SHORT_LINES:BigInt(1<<27),IRUT_RAW_TEXT_LINES:BigInt(1<<28),IRUT_LOGIC_LINES:BigInt(1<<29),IRUT_ALL:BigInt("0xFFFFFFFFFFFFFFFF")};var bt,It;!function(t){t[t.ROET_PREDETECTED_REGION=0]="ROET_PREDETECTED_REGION",t[t.ROET_LOCALIZED_BARCODE=1]="ROET_LOCALIZED_BARCODE",t[t.ROET_DECODED_BARCODE=2]="ROET_DECODED_BARCODE",t[t.ROET_LOCALIZED_TEXT_LINE=3]="ROET_LOCALIZED_TEXT_LINE",t[t.ROET_RECOGNIZED_TEXT_LINE=4]="ROET_RECOGNIZED_TEXT_LINE",t[t.ROET_DETECTED_QUAD=5]="ROET_DETECTED_QUAD",t[t.ROET_NORMALIZED_IMAGE=6]="ROET_NORMALIZED_IMAGE",t[t.ROET_SOURCE_IMAGE=7]="ROET_SOURCE_IMAGE",t[t.ROET_TARGET_ROI=8]="ROET_TARGET_ROI"}(bt||(bt={})),function(t){t[t.ST_NULL=0]="ST_NULL",t[t.ST_REGION_PREDETECTION=1]="ST_REGION_PREDETECTION",t[t.ST_BARCODE_LOCALIZATION=2]="ST_BARCODE_LOCALIZATION",t[t.ST_BARCODE_DECODING=3]="ST_BARCODE_DECODING",t[t.ST_TEXT_LINE_LOCALIZATION=4]="ST_TEXT_LINE_LOCALIZATION",t[t.ST_TEXT_LINE_RECOGNITION=5]="ST_TEXT_LINE_RECOGNITION",t[t.ST_DOCUMENT_DETECTION=6]="ST_DOCUMENT_DETECTION",t[t.ST_DOCUMENT_NORMALIZATION=7]="ST_DOCUMENT_NORMALIZATION"}(It||(It={}));var xt=Object.freeze({__proto__:null,CoreModule:gt,get EnumBufferOverflowProtectionMode(){return o},get EnumCapturedResultItemType(){return mt},get EnumColourChannelUsageType(){return a},get EnumCornerType(){return pt},get EnumCrossVerificationStatus(){return Tt},get EnumErrorCode(){return _t},get EnumGrayscaleEnhancementMode(){return vt},get EnumGrayscaleTransformationMode(){return yt},get EnumImagePixelFormat(){return h},get EnumImageTagType(){return wt},EnumIntermediateResultUnitType:St,get EnumPDFReadingMode(){return Ct},get EnumRasterDataSource(){return Et},get EnumRegionObjectElementType(){return bt},get EnumSectionType(){return It},ImageSourceAdapter:z,_getNorImageData:M,_saveToFile:R,_toBlob:L,_toCanvas:D,_toImage:(t,e)=>{y(e)&&(e=M(e));const i=D(e);let r=new Image,n=i.toDataURL(t);return r.src=n,r},get bDebug(){return at},checkIsLink:t=>/^(https:\/\/www\.|http:\/\/www\.|https:\/\/|http:\/\/)|^[a-zA-Z0-9]{2,}(\.[a-zA-Z0-9]{2,})(\.[a-zA-Z0-9]{2,})?/.test(t),compareVersion:O,doOrWaitAsyncDependency:tt,getNextTaskID:rt,handleEngineResourcePaths:A,innerVersions:lt,isArc:t=>!(!_(t)||!p(t.x)||!p(t.y)||!p(t.radius)||t.radius<0||!p(t.startAngle)||!p(t.endAngle)),isContour:t=>!!_(t)&&!!g(t.points)&&0!=t.points.length&&!t.points.some((t=>!T(t))),isDSImageData:y,isDSRect:w,isImageTag:C,isLineSegment:E,isObject:_,isOriginalDsImageData:t=>!(!v(t)||!p(t.bytes.length)&&!p(t.bytes.ptr)),isPoint:T,isPolygon:S,isQuad:b,isRect:I,loadWasm:ft,mapAsyncDependency:Q,mapPackageRegister:ct,mapTaskCallBack:nt,get onLog(){return st},requestResource:x,setBDebug:ht,setOnLog:ot,waitAsyncDependency:$,get worker(){return et},workerAutoResources:ut});let Ot="./";if(document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}Ot=t.substring(0,t.lastIndexOf("/")+1)}function At(t,e,i,r){if("a"===i&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?r:"a"===i?r.call(t):r?r.value:e.get(t)}function Rt(t,e,i,r,n){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?n.call(t,i):n?n.value=i:e.set(t,i),i}gt.engineResourcePaths={rootDirectory:(t=>{null==t&&(t="./");let e=document.createElement("a");return e.href=t,(t=e.href).endsWith("/")||(t+="/"),t})(Ot+"../../")},"function"==typeof SuppressedError&&SuppressedError;const Dt=t=>t&&"object"==typeof t&&"function"==typeof t.then,Lt=(async()=>{})().constructor;class Mt extends Lt{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(t){let e;this._task=t,Dt(t)?e=t:"function"==typeof t&&(e=new Lt(t)),e&&(async()=>{try{const i=await e;t===this._task&&this.resolve(i)}catch(e){t===this._task&&this.reject(e)}})()}get isEmpty(){return null==this._task}constructor(t){let e,i;super(((t,r)=>{e=t,i=r})),this._s="pending",this.resolve=t=>{this.isPending&&(Dt(t)?this.task=t:(this._s="fulfilled",e(t)))},this.reject=t=>{this.isPending&&(this._s="rejected",i(t))},this.task=t}}class Ft{constructor(t){this._cvr=t}async getMaxBufferedItems(){return await new Promise(((t,e)=>{let i=rt();nt[i]=async i=>{if(i.success)return t(i.count);{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},et.postMessage({type:"cvr_getMaxBufferedItems",id:i,instanceID:this._cvr._instanceID})}))}async setMaxBufferedItems(t){return await new Promise(((e,i)=>{let r=rt();nt[r]=async t=>{if(t.success)return e();{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},et.postMessage({type:"cvr_setMaxBufferedItems",id:r,instanceID:this._cvr._instanceID,body:{count:t}})}))}async getBufferedCharacterItemSet(){return await new Promise(((t,e)=>{let i=rt();nt[i]=async i=>{if(i.success)return t(i.itemSet);{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},et.postMessage({type:"cvr_getBufferedCharacterItemSet",id:i,instanceID:this._cvr._instanceID})}))}}var Pt={onTaskResultsReceived:!1,onTaskResultsReceivedForDce:!1,onPredetectedRegionsReceived:!1,onLocalizedBarcodesReceived:!1,onDecodedBarcodesReceived:!1,onLocalizedTextLinesReceived:!1,onRecognizedTextLinesReceived:!1,onDetectedQuadsReceived:!1,onNormalizedImagesReceived:!1,onColourImageUnitReceived:!1,onScaledDownColourImageUnitReceived:!1,onGrayscaleImageUnitReceived:!1,onTransformedGrayscaleImageUnitReceived:!1,onEnhancedGrayscaleImageUnitReceived:!1,onBinaryImageUnitReceived:!1,onTextureDetectionResultUnitReceived:!1,onTextureRemovedGrayscaleImageUnitReceived:!1,onTextureRemovedBinaryImageUnitReceived:!1,onContoursUnitReceived:!1,onLineSegmentsUnitReceived:!1,onTextZonesUnitReceived:!1,onTextRemovedBinaryImageUnitReceived:!1,onRawTextLinesReceived:!1,onLongLinesUnitReceived:!1,onCornersUnitReceived:!1,onCandidateQuadEdgesUnitReceived:!1,onCandidateBarcodeZonesUnitReceived:!1,onScaledUpBarcodeImageUnitReceived:!1,onDeformationResistedBarcodeImageUnitReceived:!1,onComplementedBarcodeImageUnitReceived:!1,onShortLinesUnitReceived:!1,onLogicLinesReceived:!1};const kt=t=>{for(let e in t._irrRegistryState)t._irrRegistryState[e]=!1;for(let e of t._intermediateResultReceiverSet)if(e.isDce||e.isFilter)t._irrRegistryState.onTaskResultsReceivedForDce=!0;else for(let i in e)t._irrRegistryState[i]||(t._irrRegistryState[i]=!!e[i])};class Bt{constructor(t){this._irrRegistryState=Pt,this._intermediateResultReceiverSet=new Set,this._cvr=t}async addResultReceiver(t){if("object"!=typeof t)throw new Error("Invalid receiver.");this._intermediateResultReceiverSet.add(t),kt(this);let e=-1,i={};if(!t.isDce&&!t.isFilter){if(!t._observedResultUnitTypes||!t._observedTaskMap)throw new Error("Invalid Intermediate Result Receiver.");e=t._observedResultUnitTypes,t._observedTaskMap.forEach(((t,e)=>{i[e]=t})),t._observedTaskMap.clear()}return await new Promise(((t,r)=>{let n=rt();nt[n]=async e=>{if(e.success)return t();{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,r(t)}},et.postMessage({type:"cvr_setIrrRegistry",id:n,instanceID:this._cvr._instanceID,body:{receiverObj:this._irrRegistryState,observedResultUnitTypes:e.toString(),observedTaskMap:i}})}))}async removeResultReceiver(t){return this._intermediateResultReceiverSet.delete(t),kt(this),await new Promise(((t,e)=>{let i=rt();nt[i]=async i=>{if(i.success)return t();{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},et.postMessage({type:"cvr_setIrrRegistry",id:i,instanceID:this._cvr._instanceID,body:{receiverObj:this._irrRegistryState}})}))}getOriginalImage(){return this._cvr._dsImage}}const Nt="undefined"==typeof self,jt="function"==typeof importScripts,Ut=(()=>{if(!jt){if(!Nt&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),Vt=t=>{if(null==t&&(t="./"),Nt||jt);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t};var Gt;gt.engineResourcePaths.cvr={version:"2.4.33",path:Ut,isInternal:!0},ut.cvr={js:!0,wasm:!0,deps:["license","dip"]},ct.cvr={};const Wt="1.4.21";"string"!=typeof gt.engineResourcePaths.std&&O(gt.engineResourcePaths.std.version,Wt)<0&&(gt.engineResourcePaths.std={version:Wt,path:Vt(Ut+`../../dynamsoft-capture-vision-std@${Wt}/dist/`),isInternal:!0});const Yt="2.4.31";(!gt.engineResourcePaths.dip||"string"!=typeof gt.engineResourcePaths.dip&&O(gt.engineResourcePaths.dip.version,Yt)<0)&&(gt.engineResourcePaths.dip={version:Yt,path:Vt(Ut+`../../dynamsoft-image-processing@${Yt}/dist/`),isInternal:!0});class Ht{static getVersion(){return this._version}}Ht._version=`2.4.33(Worker: ${null===(Gt=lt.cvr)||void 0===Gt?void 0:Gt.worker}, Wasm: loading...`;const Xt={barcodeResultItems:{type:mt.CRIT_BARCODE,reveiver:"onDecodedBarcodesReceived",isNeedFilter:!0},textLineResultItems:{type:mt.CRIT_TEXT_LINE,reveiver:"onRecognizedTextLinesReceived",isNeedFilter:!0},detectedQuadResultItems:{type:mt.CRIT_DETECTED_QUAD,reveiver:"onDetectedQuadsReceived",isNeedFilter:!1},normalizedImageResultItems:{type:mt.CRIT_NORMALIZED_IMAGE,reveiver:"onNormalizedImagesReceived",isNeedFilter:!1},parsedResultItems:{type:mt.CRIT_PARSED_RESULT,reveiver:"onParsedResultsReceived",isNeedFilter:!1}};var zt,Zt,qt,Kt,Jt,Qt,$t,te,ee,ie,re,ne,se;function oe(t,e){if(t&&t.location){const i=t.location.points;for(let t of i)t.x=t.x/e,t.y=t.y/e;oe(t.referencedItem,e)}}function ae(t){if(t.disposed)throw new Error('"CaptureVisionRouter" instance has been disposed')}!function(t){t[t.ISS_BUFFER_EMPTY=0]="ISS_BUFFER_EMPTY",t[t.ISS_EXHAUSTED=1]="ISS_EXHAUSTED"}(zt||(zt={}));const he={onTaskResultsReceived:()=>{},isFilter:!0};class le{constructor(){this.maxImageSideLength=["iPhone","Android","HarmonyOS"].includes(gt.browserInfo.OS)?2048:4096,this._instanceID=void 0,this._dsImage=null,this._isPauseScan=!0,this._isOutputOriginalImage=!1,this._isOpenDetectVerify=!1,this._isOpenNormalizeVerify=!1,this._isOpenBarcodeVerify=!1,this._isOpenLabelVerify=!1,this._minImageCaptureInterval=0,this._averageProcessintTimeArray=[],this._averageFetchImageTimeArray=[],this._currentSettings=null,this._averageTime=999,Zt.set(this,null),qt.set(this,null),Kt.set(this,null),Jt.set(this,null),Qt.set(this,null),$t.set(this,new Set),te.set(this,new Set),ee.set(this,new Set),ie.set(this,0),re.set(this,!1),ne.set(this,!1),se.set(this,!1),this._singleFrameModeCallbackBind=this._singleFrameModeCallback.bind(this)}get disposed(){return At(this,se,"f")}static async createInstance(){if(!ct.license)throw Error("Module `license` is not existed.");await ct.license.dynamsoft(),await ft(["cvr"]);const t=new le,e=new Mt;let i=rt();return nt[i]=async i=>{var r;if(i.success)t._instanceID=i.instanceID,t._currentSettings=JSON.parse(JSON.parse(i.outputSettings).data),Ht._version=`2.4.33(Worker: ${null===(r=lt.cvr)||void 0===r?void 0:r.worker}, Wasm: ${i.version})`,Rt(t,ne,!0,"f"),Rt(t,Jt,t.getIntermediateResultManager(),"f"),Rt(t,ne,!1,"f"),e.resolve(t);else{const t=Error(i.message);i.stack&&(t.stack=i.stack),e.reject(t)}},et.postMessage({type:"cvr_createInstance",id:i}),e}async _singleFrameModeCallback(t){for(let e of At(this,$t,"f"))this._isOutputOriginalImage&&e.onOriginalImageResultReceived&&e.onOriginalImageResultReceived({imageData:t});const e={bytes:new Uint8Array(t.bytes),width:t.width,height:t.height,stride:t.stride,format:t.format,tag:t.tag};this._templateName||(this._templateName=this._currentSettings.CaptureVisionTemplates[0].Name);const i=await this.capture(e,this._templateName);i.originalImageTag=t.tag;const r={originalImageHashId:i.originalImageHashId,originalImageTag:i.originalImageTag,errorCode:i.errorCode,errorString:i.errorString};for(let t of At(this,$t,"f"))if(t.isDce)t.onCapturedResultReceived(i,{isDetectVerifyOpen:!1,isNormalizeVerifyOpen:!1,isBarcodeVerifyOpen:!1,isLabelVerifyOpen:!1});else{for(let e in Xt){const n=e,s=Xt[n];t[s.reveiver]&&i[n]&&t[s.reveiver](Object.assign(Object.assign({},r),{[n]:i[n]}))}t.onCapturedResultReceived&&t.onCapturedResultReceived(i)}}setInput(t){if(ae(this),t){if(Rt(this,Zt,t,"f"),t.isCameraEnhancer){At(this,Jt,"f")&&(At(this,Zt,"f")._intermediateResultReceiver.isDce=!0,At(this,Jt,"f").addResultReceiver(At(this,Zt,"f")._intermediateResultReceiver));const t=At(this,Zt,"f").getCameraView();if(t){const e=t._capturedResultReceiver;e.isDce=!0,At(this,$t,"f").add(e)}}}else Rt(this,Zt,null,"f")}getInput(){return At(this,Zt,"f")}addImageSourceStateListener(t){if(ae(this),"object"!=typeof t)return console.warn("Invalid ISA state listener.");t&&Object.keys(t)&&At(this,te,"f").add(t)}removeImageSourceStateListener(t){return ae(this),At(this,te,"f").delete(t)}addResultReceiver(t){if(ae(this),"object"!=typeof t)throw new Error("Invalid receiver.");t&&Object.keys(t).length&&(At(this,$t,"f").add(t),this._setCrrRegistry())}removeResultReceiver(t){ae(this),At(this,$t,"f").delete(t),this._setCrrRegistry()}async _setCrrRegistry(){const t={onCapturedResultReceived:!1,onDecodedBarcodesReceived:!1,onRecognizedTextLinesReceived:!1,onDetectedQuadsReceived:!1,onNormalizedImagesReceived:!1,onParsedResultsReceived:!1};for(let e of At(this,$t,"f"))e.isDce||(t.onCapturedResultReceived=!!e.onCapturedResultReceived,t.onDecodedBarcodesReceived=!!e.onDecodedBarcodesReceived,t.onRecognizedTextLinesReceived=!!e.onRecognizedTextLinesReceived,t.onDetectedQuadsReceived=!!e.onDetectedQuadsReceived,t.onNormalizedImagesReceived=!!e.onNormalizedImagesReceived,t.onParsedResultsReceived=!!e.onParsedResultsReceived);const e=new Mt;let i=rt();return nt[i]=async t=>{if(t.success)e.resolve();else{let i=new Error(t.message);i.stack=t.stack+"\n"+i.stack,e.reject()}},et.postMessage({type:"cvr_setCrrRegistry",id:i,instanceID:this._instanceID,body:{receiver:JSON.stringify(t)}}),e}async addResultFilter(t){if(ae(this),!t||"object"!=typeof t||!Object.keys(t).length)return console.warn("Invalid filter.");At(this,ee,"f").add(t),t._dynamsoft(),await this._handleFilterUpdate()}async removeResultFilter(t){ae(this),At(this,ee,"f").delete(t),await this._handleFilterUpdate()}async _handleFilterUpdate(){if(At(this,Jt,"f").removeResultReceiver(he),0===At(this,ee,"f").size){this._isOpenBarcodeVerify=!1,this._isOpenLabelVerify=!1,this._isOpenDetectVerify=!1,this._isOpenNormalizeVerify=!1;const t={[mt.CRIT_BARCODE]:!1,[mt.CRIT_TEXT_LINE]:!1,[mt.CRIT_DETECTED_QUAD]:!1,[mt.CRIT_NORMALIZED_IMAGE]:!1},e={[mt.CRIT_BARCODE]:!1,[mt.CRIT_TEXT_LINE]:!1,[mt.CRIT_DETECTED_QUAD]:!1,[mt.CRIT_NORMALIZED_IMAGE]:!1};return await ce(this,t),void await ue(this,e)}for(let t of At(this,ee,"f")){if(this._isOpenBarcodeVerify=t.isResultCrossVerificationEnabled(mt.CRIT_BARCODE),this._isOpenLabelVerify=t.isResultCrossVerificationEnabled(mt.CRIT_TEXT_LINE),this._isOpenDetectVerify=t.isResultCrossVerificationEnabled(mt.CRIT_DETECTED_QUAD),this._isOpenNormalizeVerify=t.isResultCrossVerificationEnabled(mt.CRIT_NORMALIZED_IMAGE),t.isLatestOverlappingEnabled(mt.CRIT_BARCODE)){[...At(this,Jt,"f")._intermediateResultReceiverSet.values()].find((t=>t.isFilter))||At(this,Jt,"f").addResultReceiver(he)}await ce(this,t.verificationEnabled),await ue(this,t.duplicateFilterEnabled),await de(this,t.duplicateForgetTime)}}async startCapturing(t){var e,i;if(ae(this),!this._isPauseScan)return;if(!At(this,Zt,"f"))throw new Error("'ImageSourceAdapter' is not set. call 'setInput' before 'startCapturing'");t||(t=le._defaultTemplate);const r=await this.containsTask(t);await ft(r);for(let t of At(this,ee,"f"))await this.addResultFilter(t);if(r.includes("dlr")&&!(null===(e=ct.dlr)||void 0===e?void 0:e.bLoadConfusableCharsData)){const t=A(gt.engineResourcePaths);await(null===(i=ct.dlr)||void 0===i?void 0:i.loadRecognitionData("ConfusableChars",t.dlr))}if(At(this,Zt,"f").isCameraEnhancer&&(r.includes("ddn")?At(this,Zt,"f").setPixelFormat(h.IPF_ABGR_8888):At(this,Zt,"f").setPixelFormat(h.IPF_GRAYSCALED)),void 0!==At(this,Zt,"f").singleFrameMode&&"disabled"!==At(this,Zt,"f").singleFrameMode)return this._templateName=t,void At(this,Zt,"f").on("singleFrameAcquired",this._singleFrameModeCallbackBind);return At(this,Zt,"f").getColourChannelUsageType()===a.CCUT_AUTO&&At(this,Zt,"f").setColourChannelUsageType(r.includes("ddn")?a.CCUT_FULL_CHANNEL:a.CCUT_Y_CHANNEL_ONLY),At(this,Kt,"f")&&At(this,Kt,"f").isPending?At(this,Kt,"f"):(Rt(this,Kt,new Mt(((e,i)=>{if(this.disposed)return;let r=rt();nt[r]=async r=>{if(At(this,Kt,"f")&&!At(this,Kt,"f").isFulfilled){if(!r.success){let t=new Error(r.message);return t.stack=r.stack+"\n"+t.stack,i(t)}this._isPauseScan=!1,this._isOutputOriginalImage=r.isOutputOriginalImage,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((async()=>{-1!==this._minImageCaptureInterval&&At(this,Zt,"f").startFetching(),this._loopReadVideo(t),e()}),0)}},et.postMessage({type:"cvr_startCapturing",id:r,instanceID:this._instanceID,body:{templateName:t}})})),"f"),await At(this,Kt,"f"))}stopCapturing(){ae(this),At(this,Zt,"f")&&(At(this,Zt,"f").isCameraEnhancer&&void 0!==At(this,Zt,"f").singleFrameMode&&"disabled"!==At(this,Zt,"f").singleFrameMode?At(this,Zt,"f").off("singleFrameAcquired",this._singleFrameModeCallbackBind):(!async function(t){let e=rt();const i=new Mt;nt[e]=async t=>{if(t.success)return i.resolve();{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i.reject(e)}},et.postMessage({type:"cvr_clearVerifyList",id:e,instanceID:t._instanceID})}(this),At(this,Zt,"f").stopFetching(),this._averageProcessintTimeArray=[],this._averageTime=999,this._isPauseScan=!0,Rt(this,Kt,null,"f"),At(this,Zt,"f").setColourChannelUsageType(a.CCUT_AUTO)))}async containsTask(t){return ae(this),await new Promise(((e,i)=>{let r=rt();nt[r]=async t=>{if(t.success)return e(JSON.parse(t.tasks));{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},et.postMessage({type:"cvr_containsTask",id:r,instanceID:this._instanceID,body:{templateName:t}})}))}async _loopReadVideo(t){if(this.disposed||this._isPauseScan)return;if(Rt(this,re,!0,"f"),At(this,Zt,"f").isBufferEmpty())if(At(this,Zt,"f").hasNextImageToFetch())for(let t of At(this,te,"f"))t.onImageSourceStateReceived&&t.onImageSourceStateReceived(zt.ISS_BUFFER_EMPTY);else if(!At(this,Zt,"f").hasNextImageToFetch())for(let t of At(this,te,"f"))t.onImageSourceStateReceived&&t.onImageSourceStateReceived(zt.ISS_EXHAUSTED);if(-1===this._minImageCaptureInterval||At(this,Zt,"f").isBufferEmpty())try{At(this,Zt,"f").isBufferEmpty()&&le._onLog&&le._onLog("buffer is empty so fetch image"),le._onLog&&le._onLog(`DCE: start fetching a frame: ${Date.now()}`),this._dsImage=At(this,Zt,"f").fetchImage(),le._onLog&&le._onLog(`DCE: finish fetching a frame: ${Date.now()}`),At(this,Zt,"f").setImageFetchInterval(this._averageTime)}catch(e){return void this._reRunCurrnetFunc(t)}else if(At(this,Zt,"f").setImageFetchInterval(this._averageTime-(this._dsImage&&this._dsImage.tag?this._dsImage.tag.timeSpent:0)),this._dsImage=At(this,Zt,"f").getImage(),this._dsImage.tag&&Date.now()-this._dsImage.tag.timeStamp>200)return void this._reRunCurrnetFunc(t);if(!this._dsImage)return void this._reRunCurrnetFunc(t);for(let t of At(this,$t,"f"))this._isOutputOriginalImage&&t.onOriginalImageResultReceived&&t.onOriginalImageResultReceived({imageData:this._dsImage});const e=Date.now();this._captureDsimage(this._dsImage,t).then((async i=>{if(le._onLog&&le._onLog("no js handle time: "+(Date.now()-e)),this._isPauseScan)return void this._reRunCurrnetFunc(t);i.originalImageTag=this._dsImage.tag?this._dsImage.tag:null;const r={originalImageHashId:i.originalImageHashId,originalImageTag:i.originalImageTag,errorCode:i.errorCode,errorString:i.errorString};for(let t of At(this,$t,"f"))if(t.isDce){const e=Date.now();if(t.onCapturedResultReceived(i,{isDetectVerifyOpen:this._isOpenDetectVerify,isNormalizeVerifyOpen:this._isOpenNormalizeVerify,isBarcodeVerifyOpen:this._isOpenBarcodeVerify,isLabelVerifyOpen:this._isOpenLabelVerify}),le._onLog){const t=Date.now()-e;t>10&&le._onLog(`draw result time: ${t}`)}}else{for(let e in Xt){const n=e,s=Xt[n];t[s.reveiver],t[s.reveiver]&&i[n]&&t[s.reveiver](Object.assign(Object.assign({},r),{[n]:i[n].filter((t=>!s.isNeedFilter||!t.isFilter))})),i[n]&&(i[n]=i[n].filter((t=>!s.isNeedFilter||!t.isFilter)))}t.onCapturedResultReceived&&(i.items=i.items.filter((t=>[mt.CRIT_DETECTED_QUAD,mt.CRIT_NORMALIZED_IMAGE].includes(t.type)||!t.isFilter)),t.onCapturedResultReceived(i))}const n=Date.now();if(this._minImageCaptureInterval>-1&&(5===this._averageProcessintTimeArray.length&&this._averageProcessintTimeArray.shift(),5===this._averageFetchImageTimeArray.length&&this._averageFetchImageTimeArray.shift(),this._averageProcessintTimeArray.push(Date.now()-e),this._averageFetchImageTimeArray.push(this._dsImage&&this._dsImage.tag?this._dsImage.tag.timeSpent:0),this._averageTime=Math.min(...this._averageProcessintTimeArray)-Math.max(...this._averageFetchImageTimeArray),this._averageTime=this._averageTime>0?this._averageTime:0,le._onLog&&(le._onLog(`minImageCaptureInterval: ${this._minImageCaptureInterval}`),le._onLog(`averageProcessintTimeArray: ${this._averageProcessintTimeArray}`),le._onLog(`averageFetchImageTimeArray: ${this._averageFetchImageTimeArray}`),le._onLog(`averageTime: ${this._averageTime}`))),le._onLog){const t=Date.now()-n;t>10&&le._onLog(`fetch image calculate time: ${t}`)}le._onLog&&le._onLog(`time finish decode: ${Date.now()}`),le._onLog&&le._onLog("main time: "+(Date.now()-e)),le._onLog&&le._onLog("===================================================="),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._minImageCaptureInterval>0&&this._minImageCaptureInterval>=this._averageTime?this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo(t)}),this._minImageCaptureInterval-this._averageTime):this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo(t)}),Math.max(this._minImageCaptureInterval,0))})).catch((e=>{At(this,Zt,"f").stopFetching(),e.errorCode&&0===e.errorCode&&(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{At(this,Zt,"f").startFetching(),this._loopReadVideo(t)}),Math.max(this._minImageCaptureInterval,1e3))),"platform error"!==e.message&&setTimeout((()=>{throw e}),0)}))}_reRunCurrnetFunc(t){this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo(t)}),0)}async capture(t,e){var i,r;ae(this),e||(e=le._defaultTemplate);const n=await this.containsTask(e);if(await ft(n),n.includes("dlr")&&!(null===(i=ct.dlr)||void 0===i?void 0:i.bLoadConfusableCharsData)){const t=A(gt.engineResourcePaths);await(null===(r=ct.dlr)||void 0===r?void 0:r.loadRecognitionData("ConfusableChars",t.dlr))}let s;if(Rt(this,re,!1,"f"),y(t))s=await this._captureDsimage(t,e);else if("string"==typeof t)s="data:image/"==t.substring(0,11)?await this._captureBase64(t,e):await this._captureUrl(t,e);else if(t instanceof Blob)s=await this._captureBlob(t,e);else if(t instanceof HTMLImageElement)s=await this._captureImage(t,e);else if(t instanceof HTMLCanvasElement)s=await this._captureCanvas(t,e);else{if(!(t instanceof HTMLVideoElement))throw new TypeError("'capture(imageOrFile, templateName)': Type of 'imageOrFile' should be 'DSImageData', 'Url', 'Base64', 'Blob', 'HTMLImageElement', 'HTMLCanvasElement', 'HTMLVideoElement'.");s=await this._captureVideo(t,e)}return s}async _captureDsimage(t,e){return await this._captureInWorker(t,e)}async _captureUrl(t,e){let i=await x(t,"blob");return await this._captureBlob(i,e)}async _captureBase64(t,e){t=t.substring(t.indexOf(",")+1);let i=atob(t),r=i.length,n=new Uint8Array(r);for(;r--;)n[r]=i.charCodeAt(r);return await this._captureBlob(new Blob([n]),e)}async _captureBlob(t,e){let i=null,r=null;if("undefined"!=typeof createImageBitmap)try{i=await createImageBitmap(t)}catch(t){}i||(r=await async function(t){return await new Promise(((e,i)=>{let r=URL.createObjectURL(t),n=new Image;n.src=r,n.onload=()=>{URL.revokeObjectURL(n.dbrObjUrl),e(n)},n.onerror=t=>{i(new Error("Can't convert blob to image : "+(t instanceof Event?t.type:t)))}}))}(t));let n=await this._captureImage(i||r,e);return i&&i.close(),n}async _captureImage(t,e){let i,r,n=t instanceof HTMLImageElement?t.naturalWidth:t.width,s=t instanceof HTMLImageElement?t.naturalHeight:t.height,o=Math.max(n,s);o>this.maxImageSideLength?(Rt(this,ie,this.maxImageSideLength/o,"f"),i=Math.round(n*At(this,ie,"f")),r=Math.round(s*At(this,ie,"f"))):(i=n,r=s),At(this,qt,"f")||Rt(this,qt,document.createElement("canvas"),"f");const a=At(this,qt,"f");a.width===i&&a.height===r||(a.width=i,a.height=r),a.ctx2d||(a.ctx2d=a.getContext("2d",{willReadFrequently:!0}));return a.ctx2d.drawImage(t,0,0,n,s,0,0,i,r),t.dbrObjUrl&&URL.revokeObjectURL(t.dbrObjUrl),await this._captureCanvas(a,e)}async _captureCanvas(t,e){if(t.crossOrigin&&"anonymous"!=t.crossOrigin)throw"cors";if([t.width,t.height].includes(0))throw Error("The width or height of the 'canvas' is 0.");const i=t.ctx2d||t.getContext("2d",{willReadFrequently:!0}),r={bytes:Uint8Array.from(i.getImageData(0,0,t.width,t.height).data),width:t.width,height:t.height,stride:4*t.width,format:10};return await this._captureInWorker(r,e)}async _captureVideo(t,e){if(t.crossOrigin&&"anonymous"!=t.crossOrigin)throw"cors";let i,r,n=t.videoWidth,s=t.videoHeight,o=Math.max(n,s);o>this.maxImageSideLength?(Rt(this,ie,this.maxImageSideLength/o,"f"),i=Math.round(n*At(this,ie,"f")),r=Math.round(s*At(this,ie,"f"))):(i=n,r=s),At(this,qt,"f")||Rt(this,qt,document.createElement("canvas"),"f");const a=At(this,qt,"f");a.width===i&&a.height===r||(a.width=i,a.height=r),a.ctx2d||(a.ctx2d=a.getContext("2d",{willReadFrequently:!0}));return a.ctx2d.drawImage(t,0,0,n,s,0,0,i,r),await this._captureCanvas(a,e)}async _captureInWorker(t,e){const{bytes:i,width:r,height:n,stride:s,format:o}=t;let a=rt();const h=new Mt;return nt[a]=async e=>{var i,r;if(!e.success){let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,h.reject(t)}{const n=Date.now();le._onLog&&(le._onLog(`get result time from worker: ${n}`),le._onLog("worker to main time consume: "+(n-e.workerReturnMsgTime)));try{const n=e.captureResult;if(0!==n.errorCode){let t=new Error(n.errorString);return t.errorCode=n.errorCode,h.reject(t)}t.bytes=e.bytes;for(let e of n.items)0!==At(this,ie,"f")&&oe(e,At(this,ie,"f")),e.type===mt.CRIT_ORIGINAL_IMAGE?e.imageData=t:e.type===mt.CRIT_NORMALIZED_IMAGE?null===(i=ct.ddn)||void 0===i||i.handleNormalizedImageResultItem(e):e.type===mt.CRIT_PARSED_RESULT&&(null===(r=ct.dcp)||void 0===r||r.handleParsedResultItem(e));if(At(this,re,"f"))for(let t of At(this,ee,"f"))t.onDecodedBarcodesReceived(n),t.onRecognizedTextLinesReceived(n),t.onDetectedQuadsReceived(n),t.onNormalizedImagesReceived(n);for(let t in Xt){const e=t,i=n.items.filter((t=>t.type===Xt[e].type));i.length&&(n[t]=i)}if(!this._isPauseScan||!At(this,re,"f")){const e=n.intermediateResult;if(e){let i=0;for(let r of At(this,Jt,"f")._intermediateResultReceiverSet){i++;for(let n of e){if("onTaskResultsReceived"===n.info.callbackName){for(let e of n.intermediateResultUnits)e.originalImageTag=t.tag?t.tag:null;r[n.info.callbackName]&&r[n.info.callbackName]({intermediateResultUnits:n.intermediateResultUnits},n.info)}else r[n.info.callbackName]&&r[n.info.callbackName](n.result,n.info);i===At(this,Jt,"f")._intermediateResultReceiverSet.size&&delete n.info.callbackName}}}}return n&&n.hasOwnProperty("intermediateResult")&&delete n.intermediateResult,Rt(this,ie,0,"f"),h.resolve(n)}catch(t){return h.reject(t)}}},le._onLog&&le._onLog(`send buffer to worker: ${Date.now()}`),et.postMessage({type:"cvr_capture",id:a,instanceID:this._instanceID,body:{bytes:i,width:r,height:n,stride:s,format:o,templateName:e||"",isScanner:At(this,re,"f")}},[i.buffer]),h}async initSettings(t){return ae(this),t&&["string","object"].includes(typeof t)?("string"==typeof t?t.trimStart().startsWith("{")||(t=await x(t,"text")):"object"==typeof t&&(t=JSON.stringify(t)),await new Promise(((e,i)=>{let r=rt();nt[r]=async r=>{if(r.success){const n=JSON.parse(r.response);if(0!==n.errorCode){let t=new Error(n.errorString?n.errorString:"Init Settings Failed.");return t.errorCode=n.errorCode,i(t)}const s=JSON.parse(t);this._currentSettings=s;let o=[],a=s.CaptureVisionTemplates;for(let t=0;t{let r=rt();nt[r]=async t=>{if(t.success){const r=JSON.parse(t.response);if(0!==r.errorCode){let t=new Error(r.errorString);return t.errorCode=r.errorCode,i(t)}return e(JSON.parse(r.data))}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},et.postMessage({type:"cvr_outputSettings",id:r,instanceID:this._instanceID,body:{templateName:t||"*"}})}))}async outputSettingsToFile(t,e,i){const r=await this.outputSettings(t),n=new Blob([JSON.stringify(r,null,2,(function(t,e){return e instanceof Array?JSON.stringify(e):e}),2)],{type:"application/json"});if(i){const t=document.createElement("a");t.href=URL.createObjectURL(n),e.endsWith(".json")&&(e=e.replace(".json","")),t.download=`${e}.json`,t.onclick=()=>{setTimeout((()=>{URL.revokeObjectURL(t.href)}),500)},t.click()}return n}async getTemplateNames(){return ae(this),await new Promise(((t,e)=>{let i=rt();nt[i]=async i=>{if(i.success){const r=JSON.parse(i.response);if(0!==r.errorCode){let t=new Error(r.errorString);return t.errorCode=r.errorCode,e(t)}return t(JSON.parse(r.data))}{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},et.postMessage({type:"cvr_getTemplateNames",id:i,instanceID:this._instanceID})}))}async getSimplifiedSettings(t){ae(this),t||(t=this._currentSettings.CaptureVisionTemplates[0].Name);const e=await this.containsTask(t);return await ft(e),await new Promise(((e,i)=>{let r=rt();nt[r]=async t=>{if(t.success){const r=JSON.parse(t.response);if(0!==r.errorCode){let t=new Error(r.errorString);return t.errorCode=r.errorCode,i(t)}const n=JSON.parse(r.data,((t,e)=>"barcodeFormatIds"===t?BigInt(e):e));return n.minImageCaptureInterval=this._minImageCaptureInterval,e(n)}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},et.postMessage({type:"cvr_getSimplifiedSettings",id:r,instanceID:this._instanceID,body:{templateName:t}})}))}async updateSettings(t,e){ae(this);const i=await this.containsTask(t);return await ft(i),await new Promise(((i,r)=>{let n=rt();nt[n]=async t=>{if(t.success){const n=JSON.parse(t.response);if(e.minImageCaptureInterval&&e.minImageCaptureInterval>=-1&&(this._minImageCaptureInterval=e.minImageCaptureInterval),this._isOutputOriginalImage=t.isOutputOriginalImage,0!==n.errorCode){let t=new Error(n.errorString?n.errorString:"Update Settings Failed.");return t.errorCode=n.errorCode,r(t)}return this._currentSettings=await this.outputSettings("*"),i(n)}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,r(e)}},et.postMessage({type:"cvr_updateSettings",id:n,instanceID:this._instanceID,body:{settings:e,templateName:t}})}))}async resetSettings(){return ae(this),await new Promise(((t,e)=>{let i=rt();nt[i]=async i=>{if(i.success){const r=JSON.parse(i.response);if(0!==r.errorCode){let t=new Error(r.errorString?r.errorString:"Reset Settings Failed.");return t.errorCode=r.errorCode,e(t)}return this._currentSettings=await this.outputSettings("*"),t(r)}{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},et.postMessage({type:"cvr_resetSettings",id:i,instanceID:this._instanceID})}))}getBufferedItemsManager(){return At(this,Qt,"f")||Rt(this,Qt,new Ft(this),"f"),At(this,Qt,"f")}getIntermediateResultManager(){if(ae(this),!At(this,ne,"f")&&0!==gt.bSupportIRTModule)throw new Error("The current license does not support the use of intermediate results.");return At(this,Jt,"f")||Rt(this,Jt,new Bt(this),"f"),At(this,Jt,"f")}async parseRequiredResources(t){return ae(this),await new Promise(((e,i)=>{let r=rt();nt[r]=async t=>{if(t.success)return e(JSON.parse(t.resources));{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},et.postMessage({type:"cvr_parseRequiredResources",id:r,instanceID:this._instanceID,body:{templateName:t}})}))}async dispose(){ae(this),At(this,Kt,"f")&&this.stopCapturing(),Rt(this,Zt,null,"f"),At(this,$t,"f").clear(),At(this,te,"f").clear(),At(this,ee,"f").clear(),At(this,Jt,"f")._intermediateResultReceiverSet.clear(),Rt(this,se,!0,"f");let t=rt();nt[t]=t=>{if(!t.success){let e=new Error(t.message);throw e.stack=t.stack+"\n"+e.stack,e}},et.postMessage({type:"cvr_dispose",id:t,instanceID:this._instanceID})}_getInternalData(){return{isa:At(this,Zt,"f"),promiseStartScan:At(this,Kt,"f"),intermediateResultManager:At(this,Jt,"f"),bufferdItemsManager:At(this,Qt,"f"),resultReceiverSet:At(this,$t,"f"),isaStateListenerSet:At(this,te,"f"),resultFilterSet:At(this,ee,"f"),compressRate:At(this,ie,"f"),canvas:At(this,qt,"f"),isScanner:At(this,re,"f"),innerUseTag:At(this,ne,"f"),isDestroyed:At(this,se,"f")}}async _getWasmFilterState(){return await new Promise(((t,e)=>{let i=rt();nt[i]=async i=>{if(i.success){const e=JSON.parse(i.response);return t(e)}{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},et.postMessage({type:"cvr_getWasmFilterState",id:i,instanceID:this._instanceID})}))}}async function ce(t,e){return ae(t),await new Promise(((i,r)=>{let n=rt();nt[n]=async t=>{if(t.success)return i(t.result);{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,r(e)}},et.postMessage({type:"cvr_enableResultCrossVerification",id:n,instanceID:t._instanceID,body:{verificationEnabled:e}})}))}async function ue(t,e){return ae(t),await new Promise(((i,r)=>{let n=rt();nt[n]=async t=>{if(t.success)return i(t.result);{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,r(e)}},et.postMessage({type:"cvr_enableResultDeduplication",id:n,instanceID:t._instanceID,body:{duplicateFilterEnabled:e}})}))}async function de(t,e){return ae(t),await new Promise(((i,r)=>{let n=rt();nt[n]=async t=>{if(t.success)return i(t.result);{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,r(e)}},et.postMessage({type:"cvr_setDuplicateForgetTime",id:n,instanceID:t._instanceID,body:{duplicateForgetTime:e}})}))}Zt=new WeakMap,qt=new WeakMap,Kt=new WeakMap,Jt=new WeakMap,Qt=new WeakMap,$t=new WeakMap,te=new WeakMap,ee=new WeakMap,ie=new WeakMap,re=new WeakMap,ne=new WeakMap,se=new WeakMap,le._defaultTemplate="Default";var fe;!function(t){t.PT_DEFAULT="Default",t.PT_READ_BARCODES="ReadBarcodes_Default",t.PT_RECOGNIZE_TEXT_LINES="RecognizeTextLines_Default",t.PT_DETECT_DOCUMENT_BOUNDARIES="DetectDocumentBoundaries_Default",t.PT_DETECT_AND_NORMALIZE_DOCUMENT="DetectAndNormalizeDocument_Default",t.PT_NORMALIZE_DOCUMENT="NormalizeDocument_Default",t.PT_READ_BARCODES_SPEED_FIRST="ReadBarcodes_SpeedFirst",t.PT_READ_BARCODES_READ_RATE_FIRST="ReadBarcodes_ReadRateFirst",t.PT_READ_BARCODES_BALANCE="ReadBarcodes_Balance",t.PT_READ_SINGLE_BARCODE="ReadBarcodes_Balanced",t.PT_READ_DENSE_BARCODES="ReadDenseBarcodes",t.PT_READ_DISTANT_BARCODES="ReadDistantBarcodes",t.PT_RECOGNIZE_NUMBERS="RecognizeNumbers",t.PT_RECOGNIZE_LETTERS="RecognizeLetters",t.PT_RECOGNIZE_NUMBERS_AND_LETTERS="RecognizeNumbersAndLetters",t.PT_RECOGNIZE_NUMBERS_AND_UPPERCASE_LETTERS="RecognizeNumbersAndUppercaseLetters",t.PT_RECOGNIZE_UPPERCASE_LETTERS="RecognizeUppercaseLetters"}(fe||(fe={}));var ge=Object.freeze({__proto__:null,CaptureVisionRouter:le,CaptureVisionRouterModule:Ht,CapturedResultReceiver:class{constructor(){this.onCapturedResultReceived=null,this.onOriginalImageResultReceived=null}},get EnumImageSourceState(){return zt},get EnumPresetTemplate(){return fe},IntermediateResultReceiver:class{constructor(){this._observedResultUnitTypes=St.IRUT_ALL,this._observedTaskMap=new Map,this._parameters={setObservedResultUnitTypes:t=>{this._observedResultUnitTypes=t},getObservedResultUnitTypes:()=>this._observedResultUnitTypes,isResultUnitTypeObserved:t=>!!(t&this._observedResultUnitTypes),addObservedTask:t=>{this._observedTaskMap.set(t,!0)},removeObservedTask:t=>{this._observedTaskMap.set(t,!1)},isTaskObserved:t=>0===this._observedTaskMap.size||!!this._observedTaskMap.get(t)},this.onTaskResultsReceived=null,this.onPredetectedRegionsReceived=null,this.onColourImageUnitReceived=null,this.onScaledDownColourImageUnitReceived=null,this.onGrayscaleImageUnitReceived=null,this.onTransformedGrayscaleImageUnitReceived=null,this.onEnhancedGrayscaleImageUnitReceived=null,this.onBinaryImageUnitReceived=null,this.onTextureDetectionResultUnitReceived=null,this.onTextureRemovedGrayscaleImageUnitReceived=null,this.onTextureRemovedBinaryImageUnitReceived=null,this.onContoursUnitReceived=null,this.onLineSegmentsUnitReceived=null,this.onTextZonesUnitReceived=null,this.onTextRemovedBinaryImageUnitReceived=null,this.onShortLinesUnitReceived=null}getObservationParameters(){return this._parameters}}});const me="undefined"==typeof self,pe=me?{}:self,_e="function"==typeof importScripts,ve=(()=>{if(!_e){if(!me&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),ye=t=>t&&"object"==typeof t&&"function"==typeof t.then,we=(async()=>{})().constructor;let Ce=class extends we{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(t){let e;this._task=t,ye(t)?e=t:"function"==typeof t&&(e=new we(t)),e&&(async()=>{try{const i=await e;t===this._task&&this.resolve(i)}catch(e){t===this._task&&this.reject(e)}})()}get isEmpty(){return null==this._task}constructor(t){let e,i;super(((t,r)=>{e=t,i=r})),this._s="pending",this.resolve=t=>{this.isPending&&(ye(t)?this.task=t:(this._s="fulfilled",e(t)))},this.reject=t=>{this.isPending&&(this._s="rejected",i(t))},this.task=t}};const Ee=" is not allowed to change after `createInstance` or `loadWasm` is called.",Te=!me&&document.currentScript&&(document.currentScript.getAttribute("data-license")||document.currentScript.getAttribute("data-productKeys")||document.currentScript.getAttribute("data-licenseKey")||document.currentScript.getAttribute("data-handshakeCode")||document.currentScript.getAttribute("data-organizationID"))||"",Se=(t,e)=>{const i=t;if(i._license!==e){if(!i._pLoad.isEmpty)throw new Error("`license`"+Ee);i._license=e}};!me&&document.currentScript&&document.currentScript.getAttribute("data-sessionPassword");const be=t=>{if(null==t)t=[];else{t=t instanceof Array?[...t]:[t];for(let e=0;e{e=be(e);const i=t;if(i._licenseServer!==e){if(!i._pLoad.isEmpty)throw new Error("`licenseServer`"+Ee);i._licenseServer=e}},xe=(t,e)=>{e=e||"";const i=t;if(i._deviceFriendlyName!==e){if(!i._pLoad.isEmpty)throw new Error("`deviceFriendlyName`"+Ee);i._deviceFriendlyName=e}};let Oe,Ae,Re,De,Le;"undefined"!=typeof navigator&&(Oe=navigator,Ae=Oe.userAgent,Re=Oe.platform,De=Oe.mediaDevices),function(){if(!me){const t={Edge:{search:"Edg",verSearch:"Edg"},OPR:null,Chrome:null,Safari:{str:Oe.vendor,search:"Apple",verSearch:["Version","iPhone OS","CPU OS"]},Firefox:null,Explorer:{search:"MSIE",verSearch:"MSIE"}},e={HarmonyOS:null,Android:null,iPhone:null,iPad:null,Windows:{str:Re,search:"Win"},Mac:{str:Re},Linux:{str:Re}};let i="unknownBrowser",r=0,n="unknownOS";for(let e in t){const n=t[e]||{};let s=n.str||Ae,o=n.search||e,a=n.verStr||Ae,h=n.verSearch||e;if(h instanceof Array||(h=[h]),-1!=s.indexOf(o)){i=e;for(let t of h){let e=a.indexOf(t);if(-1!=e){r=parseFloat(a.substring(e+t.length+1));break}}break}}for(let t in e){const i=e[t]||{};let r=i.str||Ae,s=i.search||t;if(-1!=r.indexOf(s)){n=t;break}}"Linux"==n&&-1!=Ae.indexOf("Windows NT")&&(n="HarmonyOS"),Le={browser:i,version:r,OS:n}}me&&(Le={browser:"ssr",version:0,OS:"ssr"})}(),De&&De.getUserMedia,"Chrome"===Le.browser&&Le.version>66||"Safari"===Le.browser&&Le.version>13||"OPR"===Le.browser&&Le.version>43||"Edge"===Le.browser&&Le.version;const Me=()=>(ft("license"),tt("dynamsoft_inited",(async()=>{let{lt:t,l:e,ls:i,sp:r,rmk:n,cv:s}=((t,e=!1)=>{const i=t;if(i._pLoad.isEmpty){let r,n,s,o=i._license||"",a=JSON.parse(JSON.stringify(i._licenseServer)),h=i._sessionPassword,l=0;if(o.startsWith("t")||o.startsWith("f"))l=0;else if(0===o.length||o.startsWith("P")||o.startsWith("L")||o.startsWith("Y")||o.startsWith("A"))l=1;else{l=2;const e=o.indexOf(":");-1!=e&&(o=o.substring(e+1));const i=o.indexOf("?");if(-1!=i&&(n=o.substring(i+1),o=o.substring(0,i)),o.startsWith("DLC2"))l=0;else{if(o.startsWith("DLS2")){let e;try{let t=o.substring(4);t=atob(t),e=JSON.parse(t)}catch(t){throw new Error("Format Error: The license string you specified is invalid, please check to make sure it is correct.")}if(o=e.handshakeCode?e.handshakeCode:e.organizationID?e.organizationID:"","number"==typeof o&&(o=JSON.stringify(o)),0===a.length){let t=[];e.mainServerURL&&(t[0]=e.mainServerURL),e.standbyServerURL&&(t[1]=e.standbyServerURL),a=be(t)}!h&&e.sessionPassword&&(h=e.sessionPassword),r=e.remark}o&&"200001"!==o&&!o.startsWith("200001-")||(l=1)}}if(l&&(e||(pe.crypto||(s="Please upgrade your browser to support online key."),pe.crypto.subtle||(s="Require https to use online key in this browser."))),s)throw new Error(s);return 1===l&&(o="",console.warn("Applying for a public trial license ...")),{lt:l,l:o,ls:a,sp:h,rmk:r,cv:n}}throw new Error("Can't preprocess license again"+Ee)})(Pe),o=new Ce;Pe._pLoad.task=o,(async()=>{try{await Pe._pLoad}catch(t){}})();let a=rt();nt[a]=e=>{if(e.message&&Pe._onAuthMessage){let t=Pe._onAuthMessage(e.message);null!=t&&(e.message=t)}let i,r=!1;if(1===t&&(r=!0),e.success?(st&&st("init license success"),e.message&&console.warn(e.message),gt._bSupportIRTModule=e.bSupportIRTModule,gt._bSupportDce4Module=e.bSupportDce4Module,Pe.bPassValidation=!0,[0,-10076].includes(e.initLicenseInfo.errorCode)?[-10076].includes(e.initLicenseInfo.errorCode)&&console.warn(e.initLicenseInfo.errorString):o.reject(new Error(e.initLicenseInfo.errorString))):(i=Error(e.message),e.stack&&(i.stack=e.stack),e.ltsErrorCode&&(i.ltsErrorCode=e.ltsErrorCode),r||111==e.ltsErrorCode&&-1!=e.message.toLowerCase().indexOf("trial license")&&(r=!0)),r){const t=A(gt.engineResourcePaths);(async(t,e,i)=>{if(!t._bNeverShowDialog)try{let r=await fetch(t.engineResourcePath+"dls.license.dialog.html");if(!r.ok)throw Error("Get license dialog fail. Network Error: "+r.statusText);let n=await r.text();if(!n.trim().startsWith("<"))throw Error("Get license dialog fail. Can't get valid HTMLElement.");let s=document.createElement("div");s.innerHTML=n;let o=[];for(let t=0;t{if(t==e.target){a.remove();for(let t of o)t.remove()}}));else if(!l&&t.classList.contains("dls-license-icon-close"))l=t,t.addEventListener("click",(()=>{a.remove();for(let t of o)t.remove()}));else if(!c&&t.classList.contains("dls-license-icon-error"))c=t,"error"!=e&&t.remove();else if(!u&&t.classList.contains("dls-license-icon-warn"))u=t,"warn"!=e&&t.remove();else if(!d&&t.classList.contains("dls-license-msg-content")){d=t;let e=i;for(;e;){let i=e.indexOf("["),r=e.indexOf("]",i),n=e.indexOf("(",r),s=e.indexOf(")",n);if(-1==i||-1==r||-1==n||-1==s){t.appendChild(new Text(e));break}i>0&&t.appendChild(new Text(e.substring(0,i)));let o=document.createElement("a"),a=e.substring(i+1,r);o.innerText=a;let h=e.substring(n+1,s);o.setAttribute("href",h),o.setAttribute("target","_blank"),t.appendChild(o),e=e.substring(s+1)}}document.body.appendChild(a)}catch(e){t._onLog&&t._onLog(e.message||e)}})({_bNeverShowDialog:Pe._bNeverShowDialog,engineResourcePath:t.license,_onLog:st},e.success?"warn":"error",e.message)}e.success?o.resolve(void 0):o.reject(i)},await $("core"),et.postMessage({type:"license_dynamsoft",body:{v:"3.4.31",brtk:!!t,bptk:1===t,l:e,os:Le,fn:Pe.deviceFriendlyName,ls:i,sp:r,rmk:n,cv:s},id:a}),Pe.bCallInitLicense=!0,await o})));let Fe;ct.license={},ct.license.dynamsoft=Me,ct.license.getAR=async()=>{{let t=Q.dynamsoft_inited;t&&t.isRejected&&await t}return et?new Promise(((t,e)=>{let i=rt();nt[i]=async i=>{if(i.success){delete i.success;{let t=Pe.license;t&&(t.startsWith("t")||t.startsWith("f"))&&(i.pk=t)}if(Object.keys(i).length){if(i.lem){let t=Error(i.lem);t.ltsErrorCode=i.lec,delete i.lem,delete i.lec,i.ae=t}t(i)}else t(null)}else{let t=Error(i.message);i.stack&&(t.stack=i.stack),e(t)}},et.postMessage({type:"license_getAR",id:i})})):null};let Pe=class t{static setLicenseServer(e){Ie(t,e)}static get license(){return this._license}static set license(e){Se(t,e)}static get licenseServer(){return this._licenseServer}static set licenseServer(e){Ie(t,e)}static get deviceFriendlyName(){return this._deviceFriendlyName}static set deviceFriendlyName(e){xe(t,e)}static initLicense(e,i){if(Se(t,e),t.bCallInitLicense=!0,"boolean"==typeof i&&i||"object"==typeof i&&i.executeNow)return Me()}static setDeviceFriendlyName(e){xe(t,e)}static getDeviceFriendlyName(){return t._deviceFriendlyName}static getDeviceUUID(){return(async()=>(await tt("dynamsoft_uuid",(async()=>{await ft();let t=new Ce,e=rt();nt[e]=e=>{if(e.success)t.resolve(e.uuid);else{const i=Error(e.message);e.stack&&(i.stack=e.stack),t.reject(i)}},et.postMessage({type:"license_getDeviceUUID",id:e}),Fe=await t})),Fe))()}};Pe._pLoad=new Ce,Pe.bPassValidation=!1,Pe.bCallInitLicense=!1,Pe._license=Te,Pe._licenseServer=[],Pe._deviceFriendlyName="",gt.engineResourcePaths.license={version:"3.4.31",path:ve,isInternal:!0},ut.license={wasm:!0,js:!0},ct.license.LicenseManager=Pe;const ke="1.4.21";"string"!=typeof gt.engineResourcePaths.std&&O(gt.engineResourcePaths.std.version,ke)<0&&(gt.engineResourcePaths.std={version:ke,path:(t=>{if(null==t&&(t="./"),me||_e);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t})(ve+`../../dynamsoft-capture-vision-std@${ke}/dist/`),isInternal:!0});var Be=Object.freeze({__proto__:null,LicenseManager:Pe,LicenseModule:class{static getVersion(){return`3.4.31(Worker: ${lt.license&<.license.worker||"Not Loaded"}, Wasm: ${lt.license&<.license.wasm||"Not Loaded"})`}}});const Ne="undefined"==typeof self,je="function"==typeof importScripts,Ue=(()=>{if(!je){if(!Ne&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})();gt.engineResourcePaths.dce={version:"4.1.1",path:Ue,isInternal:!0},ut.dce={wasm:!1,js:!1},ct.dce={};let Ve,Ge,We,Ye,He;function Xe(t,e,i,r){if("a"===i&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?r:"a"===i?r.call(t):r?r.value:e.get(t)}function ze(t,e,i,r,n){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?n.call(t,i):n?n.value=i:e.set(t,i),i}"function"==typeof SuppressedError&&SuppressedError,"undefined"!=typeof navigator&&(Ve=navigator,Ge=Ve.userAgent,We=Ve.platform,Ye=Ve.mediaDevices),function(){if(!Ne){const t={Edge:{search:"Edg",verSearch:"Edg"},OPR:null,Chrome:null,Safari:{str:Ve.vendor,search:"Apple",verSearch:["Version","iPhone OS","CPU OS"]},Firefox:null,Explorer:{search:"MSIE",verSearch:"MSIE"}},e={HarmonyOS:null,Android:null,iPhone:null,iPad:null,Windows:{str:We,search:"Win"},Mac:{str:We},Linux:{str:We}};let i="unknownBrowser",r=0,n="unknownOS";for(let e in t){const n=t[e]||{};let s=n.str||Ge,o=n.search||e,a=n.verStr||Ge,h=n.verSearch||e;if(h instanceof Array||(h=[h]),-1!=s.indexOf(o)){i=e;for(let t of h){let e=a.indexOf(t);if(-1!=e){r=parseFloat(a.substring(e+t.length+1));break}}break}}for(let t in e){const i=e[t]||{};let r=i.str||Ge,s=i.search||t;if(-1!=r.indexOf(s)){n=t;break}}"Linux"==n&&-1!=Ge.indexOf("Windows NT")&&(n="HarmonyOS"),He={browser:i,version:r,OS:n}}Ne&&(He={browser:"ssr",version:0,OS:"ssr"})}();const Ze="undefined"!=typeof WebAssembly&&Ge&&!(/Safari/.test(Ge)&&!/Chrome/.test(Ge)&&/\(.+\s11_2_([2-6]).*\)/.test(Ge)),qe=!("undefined"==typeof Worker),Ke=!(!Ye||!Ye.getUserMedia),Je=async()=>{let t=!1;if(Ke)try{(await Ye.getUserMedia({video:!0})).getTracks().forEach((t=>{t.stop()})),t=!0}catch(t){}return t};"Chrome"===He.browser&&He.version>66||"Safari"===He.browser&&He.version>13||"OPR"===He.browser&&He.version>43||"Edge"===He.browser&&He.version;var Qe={653:(t,e,i)=>{var r,n,s,o,a,h,l,c,u,d,f,g,m,p,_,v,y,w,C,E,T,S=S||{version:"5.2.1"};if(e.fabric=S,"undefined"!=typeof document&&"undefined"!=typeof window)document instanceof("undefined"!=typeof HTMLDocument?HTMLDocument:Document)?S.document=document:S.document=document.implementation.createHTMLDocument(""),S.window=window;else{var b=new(i(192).JSDOM)(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"),{features:{FetchExternalResources:["img"]},resources:"usable"}).window;S.document=b.document,S.jsdomImplForWrapper=i(898).implForWrapper,S.nodeCanvas=i(245).Canvas,S.window=b,DOMParser=S.window.DOMParser}function I(t,e){var i=t.canvas,r=e.targetCanvas,n=r.getContext("2d");n.translate(0,r.height),n.scale(1,-1);var s=i.height-r.height;n.drawImage(i,0,s,r.width,r.height,0,0,r.width,r.height)}function x(t,e){var i=e.targetCanvas.getContext("2d"),r=e.destinationWidth,n=e.destinationHeight,s=r*n*4,o=new Uint8Array(this.imageBuffer,0,s),a=new Uint8ClampedArray(this.imageBuffer,0,s);t.readPixels(0,0,r,n,t.RGBA,t.UNSIGNED_BYTE,o);var h=new ImageData(a,r,n);i.putImageData(h,0,0)}S.isTouchSupported="ontouchstart"in S.window||"ontouchstart"in S.document||S.window&&S.window.navigator&&S.window.navigator.maxTouchPoints>0,S.isLikelyNode="undefined"!=typeof Buffer&&"undefined"==typeof window,S.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-dashoffset","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id","paint-order","vector-effect","instantiated_by_use","clip-path"],S.DPI=96,S.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)",S.commaWsp="(?:\\s+,?\\s*|,\\s*)",S.rePathCommand=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/gi,S.reNonWord=/[ \n\.,;!\?\-]/,S.fontPaths={},S.iMatrix=[1,0,0,1,0,0],S.svgNS="http://www.w3.org/2000/svg",S.perfLimitSizeTotal=2097152,S.maxCacheSideLimit=4096,S.minCacheSideLimit=256,S.charWidthsCache={},S.textureSize=2048,S.disableStyleCopyPaste=!1,S.enableGLFiltering=!0,S.devicePixelRatio=S.window.devicePixelRatio||S.window.webkitDevicePixelRatio||S.window.mozDevicePixelRatio||1,S.browserShadowBlurConstant=1,S.arcToSegmentsCache={},S.boundsOfCurveCache={},S.cachesBoundsOfCurve=!0,S.forceGLPutImageData=!1,S.initFilterBackend=function(){return S.enableGLFiltering&&S.isWebglSupported&&S.isWebglSupported(S.textureSize)?(console.log("max texture size: "+S.maxTextureSize),new S.WebglFilterBackend({tileSize:S.textureSize})):S.Canvas2dFilterBackend?new S.Canvas2dFilterBackend:void 0},"undefined"!=typeof document&&"undefined"!=typeof window&&(window.fabric=S),function(){function t(t,e){if(this.__eventListeners[t]){var i=this.__eventListeners[t];e?i[i.indexOf(e)]=!1:S.util.array.fill(i,!1)}}function e(t,e){var i=function(){e.apply(this,arguments),this.off(t,i)}.bind(this);this.on(t,i)}S.Observable={fire:function(t,e){if(!this.__eventListeners)return this;var i=this.__eventListeners[t];if(!i)return this;for(var r=0,n=i.length;r-1||!!e&&this._objects.some((function(e){return"function"==typeof e.contains&&e.contains(t,!0)}))},complexity:function(){return this._objects.reduce((function(t,e){return t+(e.complexity?e.complexity():0)}),0)}},S.CommonMethods={_setOptions:function(t){for(var e in t)this.set(e,t[e])},_initGradient:function(t,e){!t||!t.colorStops||t instanceof S.Gradient||this.set(e,new S.Gradient(t))},_initPattern:function(t,e,i){!t||!t.source||t instanceof S.Pattern?i&&i():this.set(e,new S.Pattern(t,i))},_setObject:function(t){for(var e in t)this._set(e,t[e])},set:function(t,e){return"object"==typeof t?this._setObject(t):this._set(t,e),this},_set:function(t,e){this[t]=e},toggle:function(t){var e=this.get(t);return"boolean"==typeof e&&this.set(t,!e),this},get:function(t){return this[t]}},r=e,n=Math.sqrt,s=Math.atan2,o=Math.pow,a=Math.PI/180,h=Math.PI/2,S.util={cos:function(t){if(0===t)return 1;switch(t<0&&(t=-t),t/h){case 1:case 3:return 0;case 2:return-1}return Math.cos(t)},sin:function(t){if(0===t)return 0;var e=1;switch(t<0&&(e=-1),t/h){case 1:return e;case 2:return 0;case 3:return-e}return Math.sin(t)},removeFromArray:function(t,e){var i=t.indexOf(e);return-1!==i&&t.splice(i,1),t},getRandomInt:function(t,e){return Math.floor(Math.random()*(e-t+1))+t},degreesToRadians:function(t){return t*a},radiansToDegrees:function(t){return t/a},rotatePoint:function(t,e,i){var r=new S.Point(t.x-e.x,t.y-e.y),n=S.util.rotateVector(r,i);return new S.Point(n.x,n.y).addEquals(e)},rotateVector:function(t,e){var i=S.util.sin(e),r=S.util.cos(e);return{x:t.x*r-t.y*i,y:t.x*i+t.y*r}},createVector:function(t,e){return new S.Point(e.x-t.x,e.y-t.y)},calcAngleBetweenVectors:function(t,e){return Math.acos((t.x*e.x+t.y*e.y)/(Math.hypot(t.x,t.y)*Math.hypot(e.x,e.y)))},getHatVector:function(t){return new S.Point(t.x,t.y).multiply(1/Math.hypot(t.x,t.y))},getBisector:function(t,e,i){var r=S.util.createVector(t,e),n=S.util.createVector(t,i),s=S.util.calcAngleBetweenVectors(r,n),o=s*(0===S.util.calcAngleBetweenVectors(S.util.rotateVector(r,s),n)?1:-1)/2;return{vector:S.util.getHatVector(S.util.rotateVector(r,o)),angle:s}},projectStrokeOnPoints:function(t,e,i){var r=[],n=e.strokeWidth/2,s=e.strokeUniform?new S.Point(1/e.scaleX,1/e.scaleY):new S.Point(1,1),o=function(t){var e=n/Math.hypot(t.x,t.y);return new S.Point(t.x*e*s.x,t.y*e*s.y)};return t.length<=1||t.forEach((function(a,h){var l,c,u=new S.Point(a.x,a.y);0===h?(c=t[h+1],l=i?o(S.util.createVector(c,u)).addEquals(u):t[t.length-1]):h===t.length-1?(l=t[h-1],c=i?o(S.util.createVector(l,u)).addEquals(u):t[0]):(l=t[h-1],c=t[h+1]);var d,f,g=S.util.getBisector(u,l,c),m=g.vector,p=g.angle;if("miter"===e.strokeLineJoin&&(d=-n/Math.sin(p/2),f=new S.Point(m.x*d*s.x,m.y*d*s.y),Math.hypot(f.x,f.y)/n<=e.strokeMiterLimit))return r.push(u.add(f)),void r.push(u.subtract(f));d=-n*Math.SQRT2,f=new S.Point(m.x*d*s.x,m.y*d*s.y),r.push(u.add(f)),r.push(u.subtract(f))})),r},transformPoint:function(t,e,i){return i?new S.Point(e[0]*t.x+e[2]*t.y,e[1]*t.x+e[3]*t.y):new S.Point(e[0]*t.x+e[2]*t.y+e[4],e[1]*t.x+e[3]*t.y+e[5])},makeBoundingBoxFromPoints:function(t,e){if(e)for(var i=0;i0&&(e>r?e-=r:e=0,i>r?i-=r:i=0);var n,s=!0,o=t.getImageData(e,i,2*r||1,2*r||1),a=o.data.length;for(n=3;n=n?s-n:2*Math.PI-(n-s)}function s(t,e,i){for(var s=i[1],o=i[2],a=i[3],h=i[4],l=i[5],c=function(t,e,i,s,o,a,h){var l=Math.PI,c=h*l/180,u=S.util.sin(c),d=S.util.cos(c),f=0,g=0,m=-d*t*.5-u*e*.5,p=-d*e*.5+u*t*.5,_=(i=Math.abs(i))*i,v=(s=Math.abs(s))*s,y=p*p,w=m*m,C=_*v-_*y-v*w,E=0;if(C<0){var T=Math.sqrt(1-C/(_*v));i*=T,s*=T}else E=(o===a?-1:1)*Math.sqrt(C/(_*y+v*w));var b=E*i*p/s,I=-E*s*m/i,x=d*b-u*I+.5*t,O=u*b+d*I+.5*e,A=n(1,0,(m-b)/i,(p-I)/s),R=n((m-b)/i,(p-I)/s,(-m-b)/i,(-p-I)/s);0===a&&R>0?R-=2*l:1===a&&R<0&&(R+=2*l);for(var D=Math.ceil(Math.abs(R/l*2)),L=[],M=R/D,F=8/3*Math.sin(M/4)*Math.sin(M/4)/Math.sin(M/2),P=A+M,k=0;kE)for(var b=1,I=m.length;b2;for(e=e||0,l&&(a=t[2].xt[i-2].x?1:n.x===t[i-2].x?0:-1,h=n.y>t[i-2].y?1:n.y===t[i-2].y?0:-1),r.push(["L",n.x+a*e,n.y+h*e]),r},S.util.getPathSegmentsInfo=d,S.util.getBoundsOfCurve=function(e,i,r,n,s,o,a,h){var l;if(S.cachesBoundsOfCurve&&(l=t.call(arguments),S.boundsOfCurveCache[l]))return S.boundsOfCurveCache[l];var c,u,d,f,g,m,p,_,v=Math.sqrt,y=Math.min,w=Math.max,C=Math.abs,E=[],T=[[],[]];u=6*e-12*r+6*s,c=-3*e+9*r-9*s+3*a,d=3*r-3*e;for(var b=0;b<2;++b)if(b>0&&(u=6*i-12*n+6*o,c=-3*i+9*n-9*o+3*h,d=3*n-3*i),C(c)<1e-12){if(C(u)<1e-12)continue;0<(f=-d/u)&&f<1&&E.push(f)}else(p=u*u-4*d*c)<0||(0<(g=(-u+(_=v(p)))/(2*c))&&g<1&&E.push(g),0<(m=(-u-_)/(2*c))&&m<1&&E.push(m));for(var I,x,O,A=E.length,R=A;A--;)I=(O=1-(f=E[A]))*O*O*e+3*O*O*f*r+3*O*f*f*s+f*f*f*a,T[0][A]=I,x=O*O*O*i+3*O*O*f*n+3*O*f*f*o+f*f*f*h,T[1][A]=x;T[0][R]=e,T[1][R]=i,T[0][R+1]=a,T[1][R+1]=h;var D=[{x:y.apply(null,T[0]),y:y.apply(null,T[1])},{x:w.apply(null,T[0]),y:w.apply(null,T[1])}];return S.cachesBoundsOfCurve&&(S.boundsOfCurveCache[l]=D),D},S.util.getPointOnPath=function(t,e,i){i||(i=d(t));for(var r=0;e-i[r].length>0&&r1e-4;)i=h(s),n=s,(r=o(l.x,l.y,i.x,i.y))+a>e?(s-=c,c/=2):(l=i,s+=c,a+=r);return i.angle=u(n),i}(s,e)}},S.util.transformPath=function(t,e,i){return i&&(e=S.util.multiplyTransformMatrices(e,[1,0,0,1,-i.x,-i.y])),t.map((function(t){for(var i=t.slice(0),r={},n=1;n=e}))}}}(),function(){function t(e,i,r){if(r)if(!S.isLikelyNode&&i instanceof Element)e=i;else if(i instanceof Array){e=[];for(var n=0,s=i.length;n57343)return t.charAt(e);if(55296<=i&&i<=56319){if(t.length<=e+1)throw"High surrogate without following low surrogate";var r=t.charCodeAt(e+1);if(56320>r||r>57343)throw"High surrogate without following low surrogate";return t.charAt(e)+t.charAt(e+1)}if(0===e)throw"Low surrogate without preceding high surrogate";var n=t.charCodeAt(e-1);if(55296>n||n>56319)throw"Low surrogate without preceding high surrogate";return!1}S.util.string={camelize:function(t){return t.replace(/-+(.)?/g,(function(t,e){return e?e.toUpperCase():""}))},capitalize:function(t,e){return t.charAt(0).toUpperCase()+(e?t.slice(1):t.slice(1).toLowerCase())},escapeXml:function(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")},graphemeSplit:function(e){var i,r=0,n=[];for(r=0;r-1?t.prototype[n]=function(t){return function(){var i=this.constructor.superclass;this.constructor.superclass=r;var n=e[t].apply(this,arguments);if(this.constructor.superclass=i,"initialize"!==t)return n}}(n):t.prototype[n]=e[n],i&&(e.toString!==Object.prototype.toString&&(t.prototype.toString=e.toString),e.valueOf!==Object.prototype.valueOf&&(t.prototype.valueOf=e.valueOf))};function n(){}function s(e){for(var i=null,r=this;r.constructor.superclass;){var n=r.constructor.superclass.prototype[e];if(r[e]!==n){i=n;break}r=r.constructor.superclass.prototype}return i?arguments.length>1?i.apply(this,t.call(arguments,1)):i.call(this):console.log("tried to callSuper "+e+", method not found in prototype chain",this)}S.util.createClass=function(){var i=null,o=t.call(arguments,0);function a(){this.initialize.apply(this,arguments)}"function"==typeof o[0]&&(i=o.shift()),a.superclass=i,a.subclasses=[],i&&(n.prototype=i.prototype,a.prototype=new n,i.subclasses.push(a));for(var h=0,l=o.length;h-1||"touch"===t.pointerType},d="string"==typeof(u=S.document.createElement("div")).style.opacity,f="string"==typeof u.style.filter,g=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,m=function(t){return t},d?m=function(t,e){return t.style.opacity=e,t}:f&&(m=function(t,e){var i=t.style;return t.currentStyle&&!t.currentStyle.hasLayout&&(i.zoom=1),g.test(i.filter)?(e=e>=.9999?"":"alpha(opacity="+100*e+")",i.filter=i.filter.replace(g,e)):i.filter+=" alpha(opacity="+100*e+")",t}),S.util.setStyle=function(t,e){var i=t.style;if(!i)return t;if("string"==typeof e)return t.style.cssText+=";"+e,e.indexOf("opacity")>-1?m(t,e.match(/opacity:\s*(\d?\.?\d*)/)[1]):t;for(var r in e)"opacity"===r?m(t,e[r]):i["float"===r||"cssFloat"===r?void 0===i.styleFloat?"cssFloat":"styleFloat":r]=e[r];return t},function(){var t,e,i,r,n=Array.prototype.slice,s=function(t){return n.call(t,0)};try{t=s(S.document.childNodes)instanceof Array}catch(t){}function o(t,e){var i=S.document.createElement(t);for(var r in e)"class"===r?i.className=e[r]:"for"===r?i.htmlFor=e[r]:i.setAttribute(r,e[r]);return i}function a(t){for(var e=0,i=0,r=S.document.documentElement,n=S.document.body||{scrollLeft:0,scrollTop:0};t&&(t.parentNode||t.host)&&((t=t.parentNode||t.host)===S.document?(e=n.scrollLeft||r.scrollLeft||0,i=n.scrollTop||r.scrollTop||0):(e+=t.scrollLeft||0,i+=t.scrollTop||0),1!==t.nodeType||"fixed"!==t.style.position););return{left:e,top:i}}t||(s=function(t){for(var e=new Array(t.length),i=t.length;i--;)e[i]=t[i];return e}),e=S.document.defaultView&&S.document.defaultView.getComputedStyle?function(t,e){var i=S.document.defaultView.getComputedStyle(t,null);return i?i[e]:void 0}:function(t,e){var i=t.style[e];return!i&&t.currentStyle&&(i=t.currentStyle[e]),i},i=S.document.documentElement.style,r="userSelect"in i?"userSelect":"MozUserSelect"in i?"MozUserSelect":"WebkitUserSelect"in i?"WebkitUserSelect":"KhtmlUserSelect"in i?"KhtmlUserSelect":"",S.util.makeElementUnselectable=function(t){return void 0!==t.onselectstart&&(t.onselectstart=S.util.falseFunction),r?t.style[r]="none":"string"==typeof t.unselectable&&(t.unselectable="on"),t},S.util.makeElementSelectable=function(t){return void 0!==t.onselectstart&&(t.onselectstart=null),r?t.style[r]="":"string"==typeof t.unselectable&&(t.unselectable=""),t},S.util.setImageSmoothing=function(t,e){t.imageSmoothingEnabled=t.imageSmoothingEnabled||t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled||t.oImageSmoothingEnabled,t.imageSmoothingEnabled=e},S.util.getById=function(t){return"string"==typeof t?S.document.getElementById(t):t},S.util.toArray=s,S.util.addClass=function(t,e){t&&-1===(" "+t.className+" ").indexOf(" "+e+" ")&&(t.className+=(t.className?" ":"")+e)},S.util.makeElement=o,S.util.wrapElement=function(t,e,i){return"string"==typeof e&&(e=o(e,i)),t.parentNode&&t.parentNode.replaceChild(e,t),e.appendChild(t),e},S.util.getScrollLeftTop=a,S.util.getElementOffset=function(t){var i,r,n=t&&t.ownerDocument,s={left:0,top:0},o={left:0,top:0},h={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!n)return o;for(var l in h)o[h[l]]+=parseInt(e(t,l),10)||0;return i=n.documentElement,void 0!==t.getBoundingClientRect&&(s=t.getBoundingClientRect()),r=a(t),{left:s.left+r.left-(i.clientLeft||0)+o.left,top:s.top+r.top-(i.clientTop||0)+o.top}},S.util.getNodeCanvas=function(t){var e=S.jsdomImplForWrapper(t);return e._canvas||e._image},S.util.cleanUpJsdomNode=function(t){if(S.isLikelyNode){var e=S.jsdomImplForWrapper(t);e&&(e._image=null,e._canvas=null,e._currentSrc=null,e._attributes=null,e._classList=null)}}}(),function(){function t(){}S.util.request=function(e,i){i||(i={});var r=i.method?i.method.toUpperCase():"GET",n=i.onComplete||function(){},s=new S.window.XMLHttpRequest,o=i.body||i.parameters;return s.onreadystatechange=function(){4===s.readyState&&(n(s),s.onreadystatechange=t)},"GET"===r&&(o=null,"string"==typeof i.parameters&&(e=function(t,e){return t+(/\?/.test(t)?"&":"?")+e}(e,i.parameters))),s.open(r,e,!0),"POST"!==r&&"PUT"!==r||s.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),s.send(o),s}}(),S.log=console.log,S.warn=console.warn,function(){var t=S.util.object.extend,e=S.util.object.clone,i=[];function r(){return!1}function n(t,e,i,r){return-i*Math.cos(t/r*(Math.PI/2))+i+e}S.util.object.extend(i,{cancelAll:function(){var t=this.splice(0);return t.forEach((function(t){t.cancel()})),t},cancelByCanvas:function(t){if(!t)return[];var e=this.filter((function(e){return"object"==typeof e.target&&e.target.canvas===t}));return e.forEach((function(t){t.cancel()})),e},cancelByTarget:function(t){var e=this.findAnimationsByTarget(t);return e.forEach((function(t){t.cancel()})),e},findAnimationIndex:function(t){return this.indexOf(this.findAnimation(t))},findAnimation:function(t){return this.find((function(e){return e.cancel===t}))},findAnimationsByTarget:function(t){return t?this.filter((function(e){return e.target===t})):[]}});var s=S.window.requestAnimationFrame||S.window.webkitRequestAnimationFrame||S.window.mozRequestAnimationFrame||S.window.oRequestAnimationFrame||S.window.msRequestAnimationFrame||function(t){return S.window.setTimeout(t,1e3/60)},o=S.window.cancelAnimationFrame||S.window.clearTimeout;function a(){return s.apply(S.window,arguments)}S.util.animate=function(i){i||(i={});var s,o=!1,h=function(){var t=S.runningAnimations.indexOf(s);return t>-1&&S.runningAnimations.splice(t,1)[0]};return s=t(e(i),{cancel:function(){return o=!0,h()},currentValue:"startValue"in i?i.startValue:0,completionRate:0,durationRate:0}),S.runningAnimations.push(s),a((function(t){var e,l=t||+new Date,c=i.duration||500,u=l+c,d=i.onChange||r,f=i.abort||r,g=i.onComplete||r,m=i.easing||n,p="startValue"in i&&i.startValue.length>0,_="startValue"in i?i.startValue:0,v="endValue"in i?i.endValue:100,y=i.byValue||(p?_.map((function(t,e){return v[e]-_[e]})):v-_);i.onStart&&i.onStart(),function t(i){var r=(e=i||+new Date)>u?c:e-l,n=r/c,w=p?_.map((function(t,e){return m(r,_[e],y[e],c)})):m(r,_,y,c),C=p?Math.abs((w[0]-_[0])/y[0]):Math.abs((w-_)/y);if(s.currentValue=p?w.slice():w,s.completionRate=C,s.durationRate=n,!o){if(!f(w,C,n))return e>u?(s.currentValue=p?v.slice():v,s.completionRate=1,s.durationRate=1,d(p?v.slice():v,1,1),g(v,1,1),void h()):(d(w,C,n),void a(t));h()}}(l)})),s.cancel},S.util.requestAnimFrame=a,S.util.cancelAnimFrame=function(){return o.apply(S.window,arguments)},S.runningAnimations=i}(),function(){function t(t,e,i){var r="rgba("+parseInt(t[0]+i*(e[0]-t[0]),10)+","+parseInt(t[1]+i*(e[1]-t[1]),10)+","+parseInt(t[2]+i*(e[2]-t[2]),10);return(r+=","+(t&&e?parseFloat(t[3]+i*(e[3]-t[3])):1))+")"}S.util.animateColor=function(e,i,r,n){var s=new S.Color(e).getSource(),o=new S.Color(i).getSource(),a=n.onComplete,h=n.onChange;return n=n||{},S.util.animate(S.util.object.extend(n,{duration:r||500,startValue:s,endValue:o,byValue:o,easing:function(e,i,r,s){return t(i,r,n.colorEasing?n.colorEasing(e,s):1-Math.cos(e/s*(Math.PI/2)))},onComplete:function(e,i,r){if(a)return a(t(o,o,0),i,r)},onChange:function(e,i,r){if(h){if(Array.isArray(e))return h(t(e,e,0),i,r);h(e,i,r)}}}))}}(),function(){function t(t,e,i,r){return t-1&&c>-1&&c-1)&&(i="stroke")}else{if("href"===t||"xlink:href"===t||"font"===t)return i;if("imageSmoothing"===t)return"optimizeQuality"===i;a=h?i.map(s):s(i,n)}}else i="";return!h&&isNaN(a)?i:a}function f(t){return new RegExp("^("+t.join("|")+")\\b","i")}function g(t,e){var i,r,n,s,o=[];for(n=0,s=e.length;n1;)h.shift(),l=e.util.multiplyTransformMatrices(l,h[0]);return l}}();var v=new RegExp("^\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*$");function y(t){if(!e.svgViewBoxElementsRegEx.test(t.nodeName))return{};var i,r,n,o,a,h,l=t.getAttribute("viewBox"),c=1,u=1,d=t.getAttribute("width"),f=t.getAttribute("height"),g=t.getAttribute("x")||0,m=t.getAttribute("y")||0,p=t.getAttribute("preserveAspectRatio")||"",_=!l||!(l=l.match(v)),y=!d||!f||"100%"===d||"100%"===f,w=_&&y,C={},E="",T=0,S=0;if(C.width=0,C.height=0,C.toBeParsed=w,_&&(g||m)&&t.parentNode&&"#document"!==t.parentNode.nodeName&&(E=" translate("+s(g)+" "+s(m)+") ",a=(t.getAttribute("transform")||"")+E,t.setAttribute("transform",a),t.removeAttribute("x"),t.removeAttribute("y")),w)return C;if(_)return C.width=s(d),C.height=s(f),C;if(i=-parseFloat(l[1]),r=-parseFloat(l[2]),n=parseFloat(l[3]),o=parseFloat(l[4]),C.minX=i,C.minY=r,C.viewBoxWidth=n,C.viewBoxHeight=o,y?(C.width=n,C.height=o):(C.width=s(d),C.height=s(f),c=C.width/n,u=C.height/o),"none"!==(p=e.util.parsePreserveAspectRatioAttribute(p)).alignX&&("meet"===p.meetOrSlice&&(u=c=c>u?u:c),"slice"===p.meetOrSlice&&(u=c=c>u?c:u),T=C.width-n*c,S=C.height-o*c,"Mid"===p.alignX&&(T/=2),"Mid"===p.alignY&&(S/=2),"Min"===p.alignX&&(T=0),"Min"===p.alignY&&(S=0)),1===c&&1===u&&0===i&&0===r&&0===g&&0===m)return C;if((g||m)&&"#document"!==t.parentNode.nodeName&&(E=" translate("+s(g)+" "+s(m)+") "),a=E+" matrix("+c+" 0 0 "+u+" "+(i*c+T)+" "+(r*u+S)+") ","svg"===t.nodeName){for(h=t.ownerDocument.createElementNS(e.svgNS,"g");t.firstChild;)h.appendChild(t.firstChild);t.appendChild(h)}else(h=t).removeAttribute("x"),h.removeAttribute("y"),a=h.getAttribute("transform")+a;return h.setAttribute("transform",a),C}function w(t,e){var i="xlink:href",r=_(t,e.getAttribute(i).slice(1));if(r&&r.getAttribute(i)&&w(t,r),["gradientTransform","x1","x2","y1","y2","gradientUnits","cx","cy","r","fx","fy"].forEach((function(t){r&&!e.hasAttribute(t)&&r.hasAttribute(t)&&e.setAttribute(t,r.getAttribute(t))})),!e.children.length)for(var n=r.cloneNode(!0);n.firstChild;)e.appendChild(n.firstChild);e.removeAttribute(i)}e.parseSVGDocument=function(t,i,n,s){if(t){!function(t){for(var i=g(t,["use","svg:use"]),r=0;i.length&&rt.x&&this.y>t.y},gte:function(t){return this.x>=t.x&&this.y>=t.y},lerp:function(t,e){return void 0===e&&(e=.5),e=Math.max(Math.min(1,e),0),new i(this.x+(t.x-this.x)*e,this.y+(t.y-this.y)*e)},distanceFrom:function(t){var e=this.x-t.x,i=this.y-t.y;return Math.sqrt(e*e+i*i)},midPointFrom:function(t){return this.lerp(t)},min:function(t){return new i(Math.min(this.x,t.x),Math.min(this.y,t.y))},max:function(t){return new i(Math.max(this.x,t.x),Math.max(this.y,t.y))},toString:function(){return this.x+","+this.y},setXY:function(t,e){return this.x=t,this.y=e,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setFromPoint:function(t){return this.x=t.x,this.y=t.y,this},swap:function(t){var e=this.x,i=this.y;this.x=t.x,this.y=t.y,t.x=e,t.y=i},clone:function(){return new i(this.x,this.y)}})}(e),function(t){var e=t.fabric||(t.fabric={});function i(t){this.status=t,this.points=[]}e.Intersection?e.warn("fabric.Intersection is already defined"):(e.Intersection=i,e.Intersection.prototype={constructor:i,appendPoint:function(t){return this.points.push(t),this},appendPoints:function(t){return this.points=this.points.concat(t),this}},e.Intersection.intersectLineLine=function(t,r,n,s){var o,a=(s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x),h=(r.x-t.x)*(t.y-n.y)-(r.y-t.y)*(t.x-n.x),l=(s.y-n.y)*(r.x-t.x)-(s.x-n.x)*(r.y-t.y);if(0!==l){var c=a/l,u=h/l;0<=c&&c<=1&&0<=u&&u<=1?(o=new i("Intersection")).appendPoint(new e.Point(t.x+c*(r.x-t.x),t.y+c*(r.y-t.y))):o=new i}else o=new i(0===a||0===h?"Coincident":"Parallel");return o},e.Intersection.intersectLinePolygon=function(t,e,r){var n,s,o,a,h=new i,l=r.length;for(a=0;a0&&(h.status="Intersection"),h},e.Intersection.intersectPolygonPolygon=function(t,e){var r,n=new i,s=t.length;for(r=0;r0&&(n.status="Intersection"),n},e.Intersection.intersectPolygonRectangle=function(t,r,n){var s=r.min(n),o=r.max(n),a=new e.Point(o.x,s.y),h=new e.Point(s.x,o.y),l=i.intersectLinePolygon(s,a,t),c=i.intersectLinePolygon(a,o,t),u=i.intersectLinePolygon(o,h,t),d=i.intersectLinePolygon(h,s,t),f=new i;return f.appendPoints(l.points),f.appendPoints(c.points),f.appendPoints(u.points),f.appendPoints(d.points),f.points.length>0&&(f.status="Intersection"),f})}(e),function(t){var e=t.fabric||(t.fabric={});function i(t){t?this._tryParsingColor(t):this.setSource([0,0,0,1])}function r(t,e,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+6*(e-t)*i:i<.5?e:i<2/3?t+(e-t)*(2/3-i)*6:t}e.Color?e.warn("fabric.Color is already defined."):(e.Color=i,e.Color.prototype={_tryParsingColor:function(t){var e;t in i.colorNameMap&&(t=i.colorNameMap[t]),"transparent"===t&&(e=[255,255,255,0]),e||(e=i.sourceFromHex(t)),e||(e=i.sourceFromRgb(t)),e||(e=i.sourceFromHsl(t)),e||(e=[0,0,0,1]),e&&this.setSource(e)},_rgbToHsl:function(t,i,r){t/=255,i/=255,r/=255;var n,s,o,a=e.util.array.max([t,i,r]),h=e.util.array.min([t,i,r]);if(o=(a+h)/2,a===h)n=s=0;else{var l=a-h;switch(s=o>.5?l/(2-a-h):l/(a+h),a){case t:n=(i-r)/l+(i0)-(t<0)||+t};function f(t,e){var i=t.angle+u(Math.atan2(e.y,e.x))+360;return Math.round(i%360/45)}function g(t,i){var r=i.transform.target,n=r.canvas,s=e.util.object.clone(i);s.target=r,n&&n.fire("object:"+t,s),r.fire(t,i)}function m(t,e){var i=e.canvas,r=t[i.uniScaleKey];return i.uniformScaling&&!r||!i.uniformScaling&&r}function p(t){return t.originX===l&&t.originY===l}function _(t,e,i){var r=t.lockScalingX,n=t.lockScalingY;return!((!r||!n)&&(e||!r&&!n||!i)&&(!r||"x"!==e)&&(!n||"y"!==e))}function v(t,e,i,r){return{e:t,transform:e,pointer:{x:i,y:r}}}function y(t){return function(e,i,r,n){var s=i.target,o=s.getCenterPoint(),a=s.translateToOriginPoint(o,i.originX,i.originY),h=t(e,i,r,n);return s.setPositionByOrigin(a,i.originX,i.originY),h}}function w(t,e){return function(i,r,n,s){var o=e(i,r,n,s);return o&&g(t,v(i,r,n,s)),o}}function C(t,i,r,n,s){var o=t.target,a=o.controls[t.corner],h=o.canvas.getZoom(),l=o.padding/h,c=o.toLocalPoint(new e.Point(n,s),i,r);return c.x>=l&&(c.x-=l),c.x<=-l&&(c.x+=l),c.y>=l&&(c.y-=l),c.y<=l&&(c.y+=l),c.x-=a.offsetX,c.y-=a.offsetY,c}function E(t){return t.flipX!==t.flipY}function T(t,e,i,r,n){if(0!==t[e]){var s=n/t._getTransformedDimensions()[r]*t[i];t.set(i,s)}}function S(t,e,i,r){var n,l=e.target,c=l._getTransformedDimensions(0,l.skewY),d=C(e,e.originX,e.originY,i,r),f=Math.abs(2*d.x)-c.x,g=l.skewX;f<2?n=0:(n=u(Math.atan2(f/l.scaleX,c.y/l.scaleY)),e.originX===s&&e.originY===h&&(n=-n),e.originX===a&&e.originY===o&&(n=-n),E(l)&&(n=-n));var m=g!==n;if(m){var p=l._getTransformedDimensions().y;l.set("skewX",n),T(l,"skewY","scaleY","y",p)}return m}function b(t,e,i,r){var n,l=e.target,c=l._getTransformedDimensions(l.skewX,0),d=C(e,e.originX,e.originY,i,r),f=Math.abs(2*d.y)-c.y,g=l.skewY;f<2?n=0:(n=u(Math.atan2(f/l.scaleY,c.x/l.scaleX)),e.originX===s&&e.originY===h&&(n=-n),e.originX===a&&e.originY===o&&(n=-n),E(l)&&(n=-n));var m=g!==n;if(m){var p=l._getTransformedDimensions().x;l.set("skewY",n),T(l,"skewX","scaleX","x",p)}return m}function I(t,e,i,r,n){n=n||{};var s,o,a,h,l,u,f=e.target,g=f.lockScalingX,v=f.lockScalingY,y=n.by,w=m(t,f),E=_(f,y,w),T=e.gestureScale;if(E)return!1;if(T)o=e.scaleX*T,a=e.scaleY*T;else{if(s=C(e,e.originX,e.originY,i,r),l="y"!==y?d(s.x):1,u="x"!==y?d(s.y):1,e.signX||(e.signX=l),e.signY||(e.signY=u),f.lockScalingFlip&&(e.signX!==l||e.signY!==u))return!1;if(h=f._getTransformedDimensions(),w&&!y){var S=Math.abs(s.x)+Math.abs(s.y),b=e.original,I=S/(Math.abs(h.x*b.scaleX/f.scaleX)+Math.abs(h.y*b.scaleY/f.scaleY));o=b.scaleX*I,a=b.scaleY*I}else o=Math.abs(s.x*f.scaleX/h.x),a=Math.abs(s.y*f.scaleY/h.y);p(e)&&(o*=2,a*=2),e.signX!==l&&"y"!==y&&(e.originX=c[e.originX],o*=-1,e.signX=l),e.signY!==u&&"x"!==y&&(e.originY=c[e.originY],a*=-1,e.signY=u)}var x=f.scaleX,O=f.scaleY;return y?("x"===y&&f.set("scaleX",o),"y"===y&&f.set("scaleY",a)):(!g&&f.set("scaleX",o),!v&&f.set("scaleY",a)),x!==f.scaleX||O!==f.scaleY}n.scaleCursorStyleHandler=function(t,e,r){var n=m(t,r),s="";if(0!==e.x&&0===e.y?s="x":0===e.x&&0!==e.y&&(s="y"),_(r,s,n))return"not-allowed";var o=f(r,e);return i[o]+"-resize"},n.skewCursorStyleHandler=function(t,e,i){var n="not-allowed";if(0!==e.x&&i.lockSkewingY)return n;if(0!==e.y&&i.lockSkewingX)return n;var s=f(i,e)%4;return r[s]+"-resize"},n.scaleSkewCursorStyleHandler=function(t,e,i){return t[i.canvas.altActionKey]?n.skewCursorStyleHandler(t,e,i):n.scaleCursorStyleHandler(t,e,i)},n.rotationWithSnapping=w("rotating",y((function(t,e,i,r){var n=e,s=n.target,o=s.translateToOriginPoint(s.getCenterPoint(),n.originX,n.originY);if(s.lockRotation)return!1;var a,h=Math.atan2(n.ey-o.y,n.ex-o.x),l=Math.atan2(r-o.y,i-o.x),c=u(l-h+n.theta);if(s.snapAngle>0){var d=s.snapAngle,f=s.snapThreshold||d,g=Math.ceil(c/d)*d,m=Math.floor(c/d)*d;Math.abs(c-m)0?s:a:(c>0&&(n=u===o?s:a),c<0&&(n=u===o?a:s),E(h)&&(n=n===s?a:s)),e.originX=n,w("skewing",y(S))(t,e,i,r))},n.skewHandlerY=function(t,e,i,r){var n,a=e.target,c=a.skewY,u=e.originX;return!a.lockSkewingY&&(0===c?n=C(e,l,l,i,r).y>0?o:h:(c>0&&(n=u===s?o:h),c<0&&(n=u===s?h:o),E(a)&&(n=n===o?h:o)),e.originY=n,w("skewing",y(b))(t,e,i,r))},n.dragHandler=function(t,e,i,r){var n=e.target,s=i-e.offsetX,o=r-e.offsetY,a=!n.get("lockMovementX")&&n.left!==s,h=!n.get("lockMovementY")&&n.top!==o;return a&&n.set("left",s),h&&n.set("top",o),(a||h)&&g("moving",v(t,e,i,r)),a||h},n.scaleOrSkewActionName=function(t,e,i){var r=t[i.canvas.altActionKey];return 0===e.x?r?"skewX":"scaleY":0===e.y?r?"skewY":"scaleX":void 0},n.rotationStyleHandler=function(t,e,i){return i.lockRotation?"not-allowed":e.cursorStyle},n.fireEvent=g,n.wrapWithFixedAnchor=y,n.wrapWithFireEvent=w,n.getLocalPoint=C,e.controlsUtils=n}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.degreesToRadians,r=e.controlsUtils;r.renderCircleControl=function(t,e,i,r,n){r=r||{};var s,o=this.sizeX||r.cornerSize||n.cornerSize,a=this.sizeY||r.cornerSize||n.cornerSize,h=void 0!==r.transparentCorners?r.transparentCorners:n.transparentCorners,l=h?"stroke":"fill",c=!h&&(r.cornerStrokeColor||n.cornerStrokeColor),u=e,d=i;t.save(),t.fillStyle=r.cornerColor||n.cornerColor,t.strokeStyle=r.cornerStrokeColor||n.cornerStrokeColor,o>a?(s=o,t.scale(1,a/o),d=i*o/a):a>o?(s=a,t.scale(o/a,1),u=e*a/o):s=o,t.lineWidth=1,t.beginPath(),t.arc(u,d,s/2,0,2*Math.PI,!1),t[l](),c&&t.stroke(),t.restore()},r.renderSquareControl=function(t,e,r,n,s){n=n||{};var o=this.sizeX||n.cornerSize||s.cornerSize,a=this.sizeY||n.cornerSize||s.cornerSize,h=void 0!==n.transparentCorners?n.transparentCorners:s.transparentCorners,l=h?"stroke":"fill",c=!h&&(n.cornerStrokeColor||s.cornerStrokeColor),u=o/2,d=a/2;t.save(),t.fillStyle=n.cornerColor||s.cornerColor,t.strokeStyle=n.cornerStrokeColor||s.cornerStrokeColor,t.lineWidth=1,t.translate(e,r),t.rotate(i(s.angle)),t[l+"Rect"](-u,-d,o,a),c&&t.strokeRect(-u,-d,o,a),t.restore()}}(e),function(t){var e=t.fabric||(t.fabric={});e.Control=function(t){for(var e in t)this[e]=t[e]},e.Control.prototype={visible:!0,actionName:"scale",angle:0,x:0,y:0,offsetX:0,offsetY:0,sizeX:null,sizeY:null,touchSizeX:null,touchSizeY:null,cursorStyle:"crosshair",withConnection:!1,actionHandler:function(){},mouseDownHandler:function(){},mouseUpHandler:function(){},getActionHandler:function(){return this.actionHandler},getMouseDownHandler:function(){return this.mouseDownHandler},getMouseUpHandler:function(){return this.mouseUpHandler},cursorStyleHandler:function(t,e){return e.cursorStyle},getActionName:function(t,e){return e.actionName},getVisibility:function(t,e){var i=t._controlsVisibility;return i&&void 0!==i[e]?i[e]:this.visible},setVisibility:function(t){this.visible=t},positionHandler:function(t,i){return e.util.transformPoint({x:this.x*t.x+this.offsetX,y:this.y*t.y+this.offsetY},i)},calcCornerCoords:function(t,i,r,n,s){var o,a,h,l,c=s?this.touchSizeX:this.sizeX,u=s?this.touchSizeY:this.sizeY;if(c&&u&&c!==u){var d=Math.atan2(u,c),f=Math.sqrt(c*c+u*u)/2,g=d-e.util.degreesToRadians(t),m=Math.PI/2-d-e.util.degreesToRadians(t);o=f*e.util.cos(g),a=f*e.util.sin(g),h=f*e.util.cos(m),l=f*e.util.sin(m)}else f=.7071067812*(c&&u?c:i),g=e.util.degreesToRadians(45-t),o=h=f*e.util.cos(g),a=l=f*e.util.sin(g);return{tl:{x:r-l,y:n-h},tr:{x:r+o,y:n-a},bl:{x:r-o,y:n+a},br:{x:r+l,y:n+h}}},render:function(t,i,r,n,s){"circle"===((n=n||{}).cornerStyle||s.cornerStyle)?e.controlsUtils.renderCircleControl.call(this,t,i,r,n,s):e.controlsUtils.renderSquareControl.call(this,t,i,r,n,s)}}}(e),function(){function t(t,e){var i,r,n,s,o=t.getAttribute("style"),a=t.getAttribute("offset")||0;if(a=(a=parseFloat(a)/(/%$/.test(a)?100:1))<0?0:a>1?1:a,o){var h=o.split(/\s*;\s*/);for(""===h[h.length-1]&&h.pop(),s=h.length;s--;){var l=h[s].split(/\s*:\s*/),c=l[0].trim(),u=l[1].trim();"stop-color"===c?i=u:"stop-opacity"===c&&(n=u)}}return i||(i=t.getAttribute("stop-color")||"rgb(0,0,0)"),n||(n=t.getAttribute("stop-opacity")),r=(i=new S.Color(i)).getAlpha(),n=isNaN(parseFloat(n))?1:parseFloat(n),n*=r*e,{offset:a,color:i.toRgb(),opacity:n}}var e=S.util.object.clone;S.Gradient=S.util.createClass({offsetX:0,offsetY:0,gradientTransform:null,gradientUnits:"pixels",type:"linear",initialize:function(t){t||(t={}),t.coords||(t.coords={});var e,i=this;Object.keys(t).forEach((function(e){i[e]=t[e]})),this.id?this.id+="_"+S.Object.__uid++:this.id=S.Object.__uid++,e={x1:t.coords.x1||0,y1:t.coords.y1||0,x2:t.coords.x2||0,y2:t.coords.y2||0},"radial"===this.type&&(e.r1=t.coords.r1||0,e.r2=t.coords.r2||0),this.coords=e,this.colorStops=t.colorStops.slice()},addColorStop:function(t){for(var e in t){var i=new S.Color(t[e]);this.colorStops.push({offset:parseFloat(e),color:i.toRgb(),opacity:i.getAlpha()})}return this},toObject:function(t){var e={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return S.util.populateWithProperties(this,e,t),e},toSVG:function(t,i){var r,n,s,o,a=e(this.coords,!0),h=(i=i||{},e(this.colorStops,!0)),l=a.r1>a.r2,c=this.gradientTransform?this.gradientTransform.concat():S.iMatrix.concat(),u=-this.offsetX,d=-this.offsetY,f=!!i.additionalTransform,g="pixels"===this.gradientUnits?"userSpaceOnUse":"objectBoundingBox";if(h.sort((function(t,e){return t.offset-e.offset})),"objectBoundingBox"===g?(u/=t.width,d/=t.height):(u+=t.width/2,d+=t.height/2),"path"===t.type&&"percentage"!==this.gradientUnits&&(u-=t.pathOffset.x,d-=t.pathOffset.y),c[4]-=u,c[5]-=d,o='id="SVGID_'+this.id+'" gradientUnits="'+g+'"',o+=' gradientTransform="'+(f?i.additionalTransform+" ":"")+S.util.matrixToSVG(c)+'" ',"linear"===this.type?s=["\n']:"radial"===this.type&&(s=["\n']),"radial"===this.type){if(l)for((h=h.concat()).reverse(),r=0,n=h.length;r0){var p=m/Math.max(a.r1,a.r2);for(r=0,n=h.length;r\n')}return s.push("linear"===this.type?"\n":"\n"),s.join("")},toLive:function(t){var e,i,r,n=S.util.object.clone(this.coords);if(this.type){for("linear"===this.type?e=t.createLinearGradient(n.x1,n.y1,n.x2,n.y2):"radial"===this.type&&(e=t.createRadialGradient(n.x1,n.y1,n.r1,n.x2,n.y2,n.r2)),i=0,r=this.colorStops.length;i1?1:s,isNaN(s)&&(s=1);var o,a,h,l,c=e.getElementsByTagName("stop"),u="userSpaceOnUse"===e.getAttribute("gradientUnits")?"pixels":"percentage",d=e.getAttribute("gradientTransform")||"",f=[],g=0,m=0;for("linearGradient"===e.nodeName||"LINEARGRADIENT"===e.nodeName?(o="linear",a=function(t){return{x1:t.getAttribute("x1")||0,y1:t.getAttribute("y1")||0,x2:t.getAttribute("x2")||"100%",y2:t.getAttribute("y2")||0}}(e)):(o="radial",a=function(t){return{x1:t.getAttribute("fx")||t.getAttribute("cx")||"50%",y1:t.getAttribute("fy")||t.getAttribute("cy")||"50%",r1:0,x2:t.getAttribute("cx")||"50%",y2:t.getAttribute("cy")||"50%",r2:t.getAttribute("r")||"50%"}}(e)),h=c.length;h--;)f.push(t(c[h],s));return l=S.parseTransformAttribute(d),function(t,e,i,r){var n,s;Object.keys(e).forEach((function(t){"Infinity"===(n=e[t])?s=1:"-Infinity"===n?s=0:(s=parseFloat(e[t],10),"string"==typeof n&&/^(\d+\.\d+)%|(\d+)%$/.test(n)&&(s*=.01,"pixels"===r&&("x1"!==t&&"x2"!==t&&"r2"!==t||(s*=i.viewBoxWidth||i.width),"y1"!==t&&"y2"!==t||(s*=i.viewBoxHeight||i.height)))),e[t]=s}))}(0,a,n,u),"pixels"===u&&(g=-i.left,m=-i.top),new S.Gradient({id:e.getAttribute("id"),type:o,coords:a,colorStops:f,gradientUnits:u,gradientTransform:l,offsetX:g,offsetY:m})}})}(),_=S.util.toFixed,S.Pattern=S.util.createClass({repeat:"repeat",offsetX:0,offsetY:0,crossOrigin:"",patternTransform:null,initialize:function(t,e){if(t||(t={}),this.id=S.Object.__uid++,this.setOptions(t),!t.source||t.source&&"string"!=typeof t.source)e&&e(this);else{var i=this;this.source=S.util.createImage(),S.util.loadImage(t.source,(function(t,r){i.source=t,e&&e(i,r)}),null,this.crossOrigin)}},toObject:function(t){var e,i,r=S.Object.NUM_FRACTION_DIGITS;return"string"==typeof this.source.src?e=this.source.src:"object"==typeof this.source&&this.source.toDataURL&&(e=this.source.toDataURL()),i={type:"pattern",source:e,repeat:this.repeat,crossOrigin:this.crossOrigin,offsetX:_(this.offsetX,r),offsetY:_(this.offsetY,r),patternTransform:this.patternTransform?this.patternTransform.concat():null},S.util.populateWithProperties(this,i,t),i},toSVG:function(t){var e="function"==typeof this.source?this.source():this.source,i=e.width/t.width,r=e.height/t.height,n=this.offsetX/t.width,s=this.offsetY/t.height,o="";return"repeat-x"!==this.repeat&&"no-repeat"!==this.repeat||(r=1,s&&(r+=Math.abs(s))),"repeat-y"!==this.repeat&&"no-repeat"!==this.repeat||(i=1,n&&(i+=Math.abs(n))),e.src?o=e.src:e.toDataURL&&(o=e.toDataURL()),'\n\n\n'},setOptions:function(t){for(var e in t)this[e]=t[e]},toLive:function(t){var e=this.source;if(!e)return"";if(void 0!==e.src){if(!e.complete)return"";if(0===e.naturalWidth||0===e.naturalHeight)return""}return t.createPattern(e,this.repeat)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.toFixed;e.Shadow?e.warn("fabric.Shadow is already defined."):(e.Shadow=e.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1,initialize:function(t){for(var i in"string"==typeof t&&(t=this._parseShadow(t)),t)this[i]=t[i];this.id=e.Object.__uid++},_parseShadow:function(t){var i=t.trim(),r=e.Shadow.reOffsetsAndBlur.exec(i)||[];return{color:(i.replace(e.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)").trim(),offsetX:parseFloat(r[1],10)||0,offsetY:parseFloat(r[2],10)||0,blur:parseFloat(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(t){var r=40,n=40,s=e.Object.NUM_FRACTION_DIGITS,o=e.util.rotateVector({x:this.offsetX,y:this.offsetY},e.util.degreesToRadians(-t.angle)),a=new e.Color(this.color);return t.width&&t.height&&(r=100*i((Math.abs(o.x)+this.blur)/t.width,s)+20,n=100*i((Math.abs(o.y)+this.blur)/t.height,s)+20),t.flipX&&(o.x*=-1),t.flipY&&(o.y*=-1),'\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\n\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling};var t={},i=e.Shadow.prototype;return["color","blur","offsetX","offsetY","affectStroke","nonScaling"].forEach((function(e){this[e]!==i[e]&&(t[e]=this[e])}),this),t}}),e.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(\d+(?:\.\d*)?(?:px)?)?(?:\s?|$)(?:$|\s)/)}(e),function(){if(S.StaticCanvas)S.warn("fabric.StaticCanvas is already defined.");else{var t=S.util.object.extend,e=S.util.getElementOffset,i=S.util.removeFromArray,r=S.util.toFixed,n=S.util.transformPoint,s=S.util.invertTransform,o=S.util.getNodeCanvas,a=S.util.createCanvasElement,h=new Error("Could not initialize `canvas` element");S.StaticCanvas=S.util.createClass(S.CommonMethods,{initialize:function(t,e){e||(e={}),this.renderAndResetBound=this.renderAndReset.bind(this),this.requestRenderAllBound=this.requestRenderAll.bind(this),this._initStatic(t,e)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!1,renderOnAddRemove:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:S.iMatrix.concat(),backgroundVpt:!0,overlayVpt:!0,enableRetinaScaling:!0,vptCoords:{},skipOffscreen:!0,clipPath:void 0,_initStatic:function(t,e){var i=this.requestRenderAllBound;this._objects=[],this._createLowerCanvas(t),this._initOptions(e),this.interactive||this._initRetinaScaling(),e.overlayImage&&this.setOverlayImage(e.overlayImage,i),e.backgroundImage&&this.setBackgroundImage(e.backgroundImage,i),e.backgroundColor&&this.setBackgroundColor(e.backgroundColor,i),e.overlayColor&&this.setOverlayColor(e.overlayColor,i),this.calcOffset()},_isRetinaScaling:function(){return S.devicePixelRatio>1&&this.enableRetinaScaling},getRetinaScaling:function(){return this._isRetinaScaling()?Math.max(1,S.devicePixelRatio):1},_initRetinaScaling:function(){if(this._isRetinaScaling()){var t=S.devicePixelRatio;this.__initRetinaScaling(t,this.lowerCanvasEl,this.contextContainer),this.upperCanvasEl&&this.__initRetinaScaling(t,this.upperCanvasEl,this.contextTop)}},__initRetinaScaling:function(t,e,i){e.setAttribute("width",this.width*t),e.setAttribute("height",this.height*t),i.scale(t,t)},calcOffset:function(){return this._offset=e(this.lowerCanvasEl),this},setOverlayImage:function(t,e,i){return this.__setBgOverlayImage("overlayImage",t,e,i)},setBackgroundImage:function(t,e,i){return this.__setBgOverlayImage("backgroundImage",t,e,i)},setOverlayColor:function(t,e){return this.__setBgOverlayColor("overlayColor",t,e)},setBackgroundColor:function(t,e){return this.__setBgOverlayColor("backgroundColor",t,e)},__setBgOverlayImage:function(t,e,i,r){return"string"==typeof e?S.util.loadImage(e,(function(e,n){if(e){var s=new S.Image(e,r);this[t]=s,s.canvas=this}i&&i(e,n)}),this,r&&r.crossOrigin):(r&&e.setOptions(r),this[t]=e,e&&(e.canvas=this),i&&i(e,!1)),this},__setBgOverlayColor:function(t,e,i){return this[t]=e,this._initGradient(e,t),this._initPattern(e,t,i),this},_createCanvasElement:function(){var t=a();if(!t)throw h;if(t.style||(t.style={}),void 0===t.getContext)throw h;return t},_initOptions:function(t){var e=this.lowerCanvasEl;this._setOptions(t),this.width=this.width||parseInt(e.width,10)||0,this.height=this.height||parseInt(e.height,10)||0,this.lowerCanvasEl.style&&(e.width=this.width,e.height=this.height,e.style.width=this.width+"px",e.style.height=this.height+"px",this.viewportTransform=this.viewportTransform.slice())},_createLowerCanvas:function(t){t&&t.getContext?this.lowerCanvasEl=t:this.lowerCanvasEl=S.util.getById(t)||this._createCanvasElement(),S.util.addClass(this.lowerCanvasEl,"lower-canvas"),this._originalCanvasStyle=this.lowerCanvasEl.style,this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(t,e){return this.setDimensions({width:t},e)},setHeight:function(t,e){return this.setDimensions({height:t},e)},setDimensions:function(t,e){var i;for(var r in e=e||{},t)i=t[r],e.cssOnly||(this._setBackstoreDimension(r,t[r]),i+="px",this.hasLostContext=!0),e.backstoreOnly||this._setCssDimension(r,i);return this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(this.contextTop),this._initRetinaScaling(),this.calcOffset(),e.cssOnly||this.requestRenderAll(),this},_setBackstoreDimension:function(t,e){return this.lowerCanvasEl[t]=e,this.upperCanvasEl&&(this.upperCanvasEl[t]=e),this.cacheCanvasEl&&(this.cacheCanvasEl[t]=e),this[t]=e,this},_setCssDimension:function(t,e){return this.lowerCanvasEl.style[t]=e,this.upperCanvasEl&&(this.upperCanvasEl.style[t]=e),this.wrapperEl&&(this.wrapperEl.style[t]=e),this},getZoom:function(){return this.viewportTransform[0]},setViewportTransform:function(t){var e,i,r,n=this._activeObject,s=this.backgroundImage,o=this.overlayImage;for(this.viewportTransform=t,i=0,r=this._objects.length;i\n'),this._setSVGBgOverlayColor(i,"background"),this._setSVGBgOverlayImage(i,"backgroundImage",e),this._setSVGObjects(i,e),this.clipPath&&i.push("\n"),this._setSVGBgOverlayColor(i,"overlay"),this._setSVGBgOverlayImage(i,"overlayImage",e),i.push(""),i.join("")},_setSVGPreamble:function(t,e){e.suppressPreamble||t.push('\n','\n')},_setSVGHeader:function(t,e){var i,n=e.width||this.width,s=e.height||this.height,o='viewBox="0 0 '+this.width+" "+this.height+'" ',a=S.Object.NUM_FRACTION_DIGITS;e.viewBox?o='viewBox="'+e.viewBox.x+" "+e.viewBox.y+" "+e.viewBox.width+" "+e.viewBox.height+'" ':this.svgViewportTransformation&&(i=this.viewportTransform,o='viewBox="'+r(-i[4]/i[0],a)+" "+r(-i[5]/i[3],a)+" "+r(this.width/i[0],a)+" "+r(this.height/i[3],a)+'" '),t.push("\n',"Created with Fabric.js ",S.version,"\n","\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(e),"\n")},createSVGClipPathMarkup:function(t){var e=this.clipPath;return e?(e.clipPathId="CLIPPATH_"+S.Object.__uid++,'\n'+this.clipPath.toClipPathSVG(t.reviver)+"\n"):""},createSVGRefElementsMarkup:function(){var t=this;return["background","overlay"].map((function(e){var i=t[e+"Color"];if(i&&i.toLive){var r=t[e+"Vpt"],n=t.viewportTransform,s={width:t.width/(r?n[0]:1),height:t.height/(r?n[3]:1)};return i.toSVG(s,{additionalTransform:r?S.util.matrixToSVG(n):""})}})).join("")},createSVGFontFacesMarkup:function(){var t,e,i,r,n,s,o,a,h="",l={},c=S.fontPaths,u=[];for(this._objects.forEach((function t(e){u.push(e),e._objects&&e._objects.forEach(t)})),o=0,a=u.length;o',"\n",h,"","\n"].join("")),h},_setSVGObjects:function(t,e){var i,r,n,s=this._objects;for(r=0,n=s.length;r\n")}else t.push('\n")},sendToBack:function(t){if(!t)return this;var e,r,n,s=this._activeObject;if(t===s&&"activeSelection"===t.type)for(e=(n=s._objects).length;e--;)r=n[e],i(this._objects,r),this._objects.unshift(r);else i(this._objects,t),this._objects.unshift(t);return this.renderOnAddRemove&&this.requestRenderAll(),this},bringToFront:function(t){if(!t)return this;var e,r,n,s=this._activeObject;if(t===s&&"activeSelection"===t.type)for(n=s._objects,e=0;e0+l&&(o=s-1,i(this._objects,n),this._objects.splice(o,0,n)),l++;else 0!==(s=this._objects.indexOf(t))&&(o=this._findNewLowerIndex(t,s,e),i(this._objects,t),this._objects.splice(o,0,t));return this.renderOnAddRemove&&this.requestRenderAll(),this},_findNewLowerIndex:function(t,e,i){var r,n;if(i){for(r=e,n=e-1;n>=0;--n)if(t.intersectsWithObject(this._objects[n])||t.isContainedWithinObject(this._objects[n])||this._objects[n].isContainedWithinObject(t)){r=n;break}}else r=e-1;return r},bringForward:function(t,e){if(!t)return this;var r,n,s,o,a,h=this._activeObject,l=0;if(t===h&&"activeSelection"===t.type)for(r=(a=h._objects).length;r--;)n=a[r],(s=this._objects.indexOf(n))"}}),t(S.StaticCanvas.prototype,S.Observable),t(S.StaticCanvas.prototype,S.Collection),t(S.StaticCanvas.prototype,S.DataURLExporter),t(S.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(t){var e=a();if(!e||!e.getContext)return null;var i=e.getContext("2d");return i&&"setLineDash"===t?void 0!==i.setLineDash:null}}),S.StaticCanvas.prototype.toJSON=S.StaticCanvas.prototype.toObject,S.isLikelyNode&&(S.StaticCanvas.prototype.createPNGStream=function(){var t=o(this.lowerCanvasEl);return t&&t.createPNGStream()},S.StaticCanvas.prototype.createJPEGStream=function(t){var e=o(this.lowerCanvasEl);return e&&e.createJPEGStream(t)})}}(),S.BaseBrush=S.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",strokeMiterLimit:10,strokeDashArray:null,limitedToCanvasSize:!1,_setBrushStyles:function(t){t.strokeStyle=this.color,t.lineWidth=this.width,t.lineCap=this.strokeLineCap,t.miterLimit=this.strokeMiterLimit,t.lineJoin=this.strokeLineJoin,t.setLineDash(this.strokeDashArray||[])},_saveAndTransform:function(t){var e=this.canvas.viewportTransform;t.save(),t.transform(e[0],e[1],e[2],e[3],e[4],e[5])},_setShadow:function(){if(this.shadow){var t=this.canvas,e=this.shadow,i=t.contextTop,r=t.getZoom();t&&t._isRetinaScaling()&&(r*=S.devicePixelRatio),i.shadowColor=e.color,i.shadowBlur=e.blur*r,i.shadowOffsetX=e.offsetX*r,i.shadowOffsetY=e.offsetY*r}},needsFullRender:function(){return new S.Color(this.color).getAlpha()<1||!!this.shadow},_resetShadow:function(){var t=this.canvas.contextTop;t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0},_isOutSideCanvas:function(t){return t.x<0||t.x>this.canvas.getWidth()||t.y<0||t.y>this.canvas.getHeight()}}),S.PencilBrush=S.util.createClass(S.BaseBrush,{decimate:.4,drawStraightLine:!1,straightLineKey:"shiftKey",initialize:function(t){this.canvas=t,this._points=[]},needsFullRender:function(){return this.callSuper("needsFullRender")||this._hasStraightLine},_drawSegment:function(t,e,i){var r=e.midPointFrom(i);return t.quadraticCurveTo(e.x,e.y,r.x,r.y),r},onMouseDown:function(t,e){this.canvas._isMainEvent(e.e)&&(this.drawStraightLine=e.e[this.straightLineKey],this._prepareForDrawing(t),this._captureDrawingPath(t),this._render())},onMouseMove:function(t,e){if(this.canvas._isMainEvent(e.e)&&(this.drawStraightLine=e.e[this.straightLineKey],(!0!==this.limitedToCanvasSize||!this._isOutSideCanvas(t))&&this._captureDrawingPath(t)&&this._points.length>1))if(this.needsFullRender())this.canvas.clearContext(this.canvas.contextTop),this._render();else{var i=this._points,r=i.length,n=this.canvas.contextTop;this._saveAndTransform(n),this.oldEnd&&(n.beginPath(),n.moveTo(this.oldEnd.x,this.oldEnd.y)),this.oldEnd=this._drawSegment(n,i[r-2],i[r-1],!0),n.stroke(),n.restore()}},onMouseUp:function(t){return!this.canvas._isMainEvent(t.e)||(this.drawStraightLine=!1,this.oldEnd=void 0,this._finalizeAndAddPath(),!1)},_prepareForDrawing:function(t){var e=new S.Point(t.x,t.y);this._reset(),this._addPoint(e),this.canvas.contextTop.moveTo(e.x,e.y)},_addPoint:function(t){return!(this._points.length>1&&t.eq(this._points[this._points.length-1])||(this.drawStraightLine&&this._points.length>1&&(this._hasStraightLine=!0,this._points.pop()),this._points.push(t),0))},_reset:function(){this._points=[],this._setBrushStyles(this.canvas.contextTop),this._setShadow(),this._hasStraightLine=!1},_captureDrawingPath:function(t){var e=new S.Point(t.x,t.y);return this._addPoint(e)},_render:function(t){var e,i,r=this._points[0],n=this._points[1];if(t=t||this.canvas.contextTop,this._saveAndTransform(t),t.beginPath(),2===this._points.length&&r.x===n.x&&r.y===n.y){var s=this.width/1e3;r=new S.Point(r.x,r.y),n=new S.Point(n.x,n.y),r.x-=s,n.x+=s}for(t.moveTo(r.x,r.y),e=1,i=this._points.length;e=n&&(o=t[i],a.push(o));return a.push(t[s]),a},_finalizeAndAddPath:function(){this.canvas.contextTop.closePath(),this.decimate&&(this._points=this.decimatePoints(this._points,this.decimate));var t=this.convertPointsToSVGPath(this._points);if(this._isEmptySVGPath(t))this.canvas.requestRenderAll();else{var e=this.createPath(t);this.canvas.clearContext(this.canvas.contextTop),this.canvas.fire("before:path:created",{path:e}),this.canvas.add(e),this.canvas.requestRenderAll(),e.setCoords(),this._resetShadow(),this.canvas.fire("path:created",{path:e})}}}),S.CircleBrush=S.util.createClass(S.BaseBrush,{width:10,initialize:function(t){this.canvas=t,this.points=[]},drawDot:function(t){var e=this.addPoint(t),i=this.canvas.contextTop;this._saveAndTransform(i),this.dot(i,e),i.restore()},dot:function(t,e){t.fillStyle=e.fill,t.beginPath(),t.arc(e.x,e.y,e.radius,0,2*Math.PI,!1),t.closePath(),t.fill()},onMouseDown:function(t){this.points.length=0,this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.drawDot(t)},_render:function(){var t,e,i=this.canvas.contextTop,r=this.points;for(this._saveAndTransform(i),t=0,e=r.length;t0&&!this.preserveObjectStacking){e=[],i=[];for(var n=0,s=this._objects.length;n1&&(this._activeObject._objects=i),e.push.apply(e,i)}else e=this._objects;return e},renderAll:function(){!this.contextTopDirty||this._groupSelector||this.isDrawingMode||(this.clearContext(this.contextTop),this.contextTopDirty=!1),this.hasLostContext&&(this.renderTopLayer(this.contextTop),this.hasLostContext=!1);var t=this.contextContainer;return this.renderCanvas(t,this._chooseObjectsToRender()),this},renderTopLayer:function(t){t.save(),this.isDrawingMode&&this._isCurrentlyDrawing&&(this.freeDrawingBrush&&this.freeDrawingBrush._render(),this.contextTopDirty=!0),this.selection&&this._groupSelector&&(this._drawSelection(t),this.contextTopDirty=!0),t.restore()},renderTop:function(){var t=this.contextTop;return this.clearContext(t),this.renderTopLayer(t),this.fire("after:render"),this},_normalizePointer:function(t,e){var i=t.calcTransformMatrix(),r=S.util.invertTransform(i),n=this.restorePointerVpt(e);return S.util.transformPoint(n,r)},isTargetTransparent:function(t,e,i){if(t.shouldCache()&&t._cacheCanvas&&t!==this._activeObject){var r=this._normalizePointer(t,{x:e,y:i}),n=Math.max(t.cacheTranslationX+r.x*t.zoomX,0),s=Math.max(t.cacheTranslationY+r.y*t.zoomY,0);return S.util.isTransparent(t._cacheContext,Math.round(n),Math.round(s),this.targetFindTolerance)}var o=this.contextCache,a=t.selectionBackgroundColor,h=this.viewportTransform;return t.selectionBackgroundColor="",this.clearContext(o),o.save(),o.transform(h[0],h[1],h[2],h[3],h[4],h[5]),t.render(o),o.restore(),t.selectionBackgroundColor=a,S.util.isTransparent(o,e,i,this.targetFindTolerance)},_isSelectionKeyPressed:function(t){return Array.isArray(this.selectionKey)?!!this.selectionKey.find((function(e){return!0===t[e]})):t[this.selectionKey]},_shouldClearSelection:function(t,e){var i=this.getActiveObjects(),r=this._activeObject;return!e||e&&r&&i.length>1&&-1===i.indexOf(e)&&r!==e&&!this._isSelectionKeyPressed(t)||e&&!e.evented||e&&!e.selectable&&r&&r!==e},_shouldCenterTransform:function(t,e,i){var r;if(t)return"scale"===e||"scaleX"===e||"scaleY"===e||"resizing"===e?r=this.centeredScaling||t.centeredScaling:"rotate"===e&&(r=this.centeredRotation||t.centeredRotation),r?!i:i},_getOriginFromCorner:function(t,e){var i={x:t.originX,y:t.originY};return"ml"===e||"tl"===e||"bl"===e?i.x="right":"mr"!==e&&"tr"!==e&&"br"!==e||(i.x="left"),"tl"===e||"mt"===e||"tr"===e?i.y="bottom":"bl"!==e&&"mb"!==e&&"br"!==e||(i.y="top"),i},_getActionFromCorner:function(t,e,i,r){if(!e||!t)return"drag";var n=r.controls[e];return n.getActionName(i,n,r)},_setupCurrentTransform:function(t,i,r){if(i){var n=this.getPointer(t),s=i.__corner,o=i.controls[s],a=r&&s?o.getActionHandler(t,i,o):S.controlsUtils.dragHandler,h=this._getActionFromCorner(r,s,t,i),l=this._getOriginFromCorner(i,s),c=t[this.centeredKey],u={target:i,action:h,actionHandler:a,corner:s,scaleX:i.scaleX,scaleY:i.scaleY,skewX:i.skewX,skewY:i.skewY,offsetX:n.x-i.left,offsetY:n.y-i.top,originX:l.x,originY:l.y,ex:n.x,ey:n.y,lastX:n.x,lastY:n.y,theta:e(i.angle),width:i.width*i.scaleX,shiftKey:t.shiftKey,altKey:c,original:S.util.saveObjectTransform(i)};this._shouldCenterTransform(i,h,c)&&(u.originX="center",u.originY="center"),u.original.originX=l.x,u.original.originY=l.y,this._currentTransform=u,this._beforeTransform(t)}},setCursor:function(t){this.upperCanvasEl.style.cursor=t},_drawSelection:function(t){var e=this._groupSelector,i=new S.Point(e.ex,e.ey),r=S.util.transformPoint(i,this.viewportTransform),n=new S.Point(e.ex+e.left,e.ey+e.top),s=S.util.transformPoint(n,this.viewportTransform),o=Math.min(r.x,s.x),a=Math.min(r.y,s.y),h=Math.max(r.x,s.x),l=Math.max(r.y,s.y),c=this.selectionLineWidth/2;this.selectionColor&&(t.fillStyle=this.selectionColor,t.fillRect(o,a,h-o,l-a)),this.selectionLineWidth&&this.selectionBorderColor&&(t.lineWidth=this.selectionLineWidth,t.strokeStyle=this.selectionBorderColor,o+=c,a+=c,h-=c,l-=c,S.Object.prototype._setLineDash.call(this,t,this.selectionDashArray),t.strokeRect(o,a,h-o,l-a))},findTarget:function(t,e){if(!this.skipTargetFind){var r,n,s=this.getPointer(t,!0),o=this._activeObject,a=this.getActiveObjects(),h=i(t),l=a.length>1&&!e||1===a.length;if(this.targets=[],l&&o._findTargetCorner(s,h))return o;if(a.length>1&&!e&&o===this._searchPossibleTargets([o],s))return o;if(1===a.length&&o===this._searchPossibleTargets([o],s)){if(!this.preserveObjectStacking)return o;r=o,n=this.targets,this.targets=[]}var c=this._searchPossibleTargets(this._objects,s);return t[this.altSelectionKey]&&c&&r&&c!==r&&(c=r,this.targets=n),c}},_checkTarget:function(t,e,i){if(e&&e.visible&&e.evented&&e.containsPoint(t)){if(!this.perPixelTargetFind&&!e.perPixelTargetFind||e.isEditing)return!0;if(!this.isTargetTransparent(e,i.x,i.y))return!0}},_searchPossibleTargets:function(t,e){for(var i,r,n=t.length;n--;){var s=t[n],o=s.group?this._normalizePointer(s.group,e):e;if(this._checkTarget(o,s,e)){(i=t[n]).subTargetCheck&&i instanceof S.Group&&(r=this._searchPossibleTargets(i._objects,e))&&this.targets.push(r);break}}return i},restorePointerVpt:function(t){return S.util.transformPoint(t,S.util.invertTransform(this.viewportTransform))},getPointer:function(e,i){if(this._absolutePointer&&!i)return this._absolutePointer;if(this._pointer&&i)return this._pointer;var r,n=t(e),s=this.upperCanvasEl,o=s.getBoundingClientRect(),a=o.width||0,h=o.height||0;a&&h||("top"in o&&"bottom"in o&&(h=Math.abs(o.top-o.bottom)),"right"in o&&"left"in o&&(a=Math.abs(o.right-o.left))),this.calcOffset(),n.x=n.x-this._offset.left,n.y=n.y-this._offset.top,i||(n=this.restorePointerVpt(n));var l=this.getRetinaScaling();return 1!==l&&(n.x/=l,n.y/=l),r=0===a||0===h?{width:1,height:1}:{width:s.width/a,height:s.height/h},{x:n.x*r.width,y:n.y*r.height}},_createUpperCanvas:function(){var t=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,""),e=this.lowerCanvasEl,i=this.upperCanvasEl;i?i.className="":(i=this._createCanvasElement(),this.upperCanvasEl=i),S.util.addClass(i,"upper-canvas "+t),this.wrapperEl.appendChild(i),this._copyCanvasStyle(e,i),this._applyCanvasStyle(i),this.contextTop=i.getContext("2d")},getTopContext:function(){return this.contextTop},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement(),this.cacheCanvasEl.setAttribute("width",this.width),this.cacheCanvasEl.setAttribute("height",this.height),this.contextCache=this.cacheCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=S.util.wrapElement(this.lowerCanvasEl,"div",{class:this.containerClass}),S.util.setStyle(this.wrapperEl,{width:this.width+"px",height:this.height+"px",position:"relative"}),S.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(t){var e=this.width||t.width,i=this.height||t.height;S.util.setStyle(t,{position:"absolute",width:e+"px",height:i+"px",left:0,top:0,"touch-action":this.allowTouchScrolling?"manipulation":"none","-ms-touch-action":this.allowTouchScrolling?"manipulation":"none"}),t.width=e,t.height=i,S.util.makeElementUnselectable(t)},_copyCanvasStyle:function(t,e){e.style.cssText=t.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},getActiveObject:function(){return this._activeObject},getActiveObjects:function(){var t=this._activeObject;return t?"activeSelection"===t.type&&t._objects?t._objects.slice(0):[t]:[]},_onObjectRemoved:function(t){t===this._activeObject&&(this.fire("before:selection:cleared",{target:t}),this._discardActiveObject(),this.fire("selection:cleared",{target:t}),t.fire("deselected")),t===this._hoveredTarget&&(this._hoveredTarget=null,this._hoveredTargets=[]),this.callSuper("_onObjectRemoved",t)},_fireSelectionEvents:function(t,e){var i=!1,r=this.getActiveObjects(),n=[],s=[];t.forEach((function(t){-1===r.indexOf(t)&&(i=!0,t.fire("deselected",{e:e,target:t}),s.push(t))})),r.forEach((function(r){-1===t.indexOf(r)&&(i=!0,r.fire("selected",{e:e,target:r}),n.push(r))})),t.length>0&&r.length>0?i&&this.fire("selection:updated",{e:e,selected:n,deselected:s}):r.length>0?this.fire("selection:created",{e:e,selected:n}):t.length>0&&this.fire("selection:cleared",{e:e,deselected:s})},setActiveObject:function(t,e){var i=this.getActiveObjects();return this._setActiveObject(t,e),this._fireSelectionEvents(i,e),this},_setActiveObject:function(t,e){return this._activeObject!==t&&!!this._discardActiveObject(e,t)&&!t.onSelect({e:e})&&(this._activeObject=t,!0)},_discardActiveObject:function(t,e){var i=this._activeObject;if(i){if(i.onDeselect({e:t,object:e}))return!1;this._activeObject=null}return!0},discardActiveObject:function(t){var e=this.getActiveObjects(),i=this.getActiveObject();return e.length&&this.fire("before:selection:cleared",{target:i,e:t}),this._discardActiveObject(t),this._fireSelectionEvents(e,t),this},dispose:function(){var t=this.wrapperEl;return this.removeListeners(),t.removeChild(this.upperCanvasEl),t.removeChild(this.lowerCanvasEl),this.contextCache=null,this.contextTop=null,["upperCanvasEl","cacheCanvasEl"].forEach(function(t){S.util.cleanUpJsdomNode(this[t]),this[t]=void 0}.bind(this)),t.parentNode&&t.parentNode.replaceChild(this.lowerCanvasEl,this.wrapperEl),delete this.wrapperEl,S.StaticCanvas.prototype.dispose.call(this),this},clear:function(){return this.discardActiveObject(),this.clearContext(this.contextTop),this.callSuper("clear")},drawControls:function(t){var e=this._activeObject;e&&e._renderControls(t)},_toObject:function(t,e,i){var r=this._realizeGroupTransformOnObject(t),n=this.callSuper("_toObject",t,e,i);return this._unwindGroupTransformOnObject(t,r),n},_realizeGroupTransformOnObject:function(t){if(t.group&&"activeSelection"===t.group.type&&this._activeObject===t.group){var e={};return["angle","flipX","flipY","left","scaleX","scaleY","skewX","skewY","top"].forEach((function(i){e[i]=t[i]})),S.util.addTransformToObject(t,this._activeObject.calcOwnMatrix()),e}return null},_unwindGroupTransformOnObject:function(t,e){e&&t.set(e)},_setSVGObject:function(t,e,i){var r=this._realizeGroupTransformOnObject(e);this.callSuper("_setSVGObject",t,e,i),this._unwindGroupTransformOnObject(e,r)},setViewportTransform:function(t){this.renderOnAddRemove&&this._activeObject&&this._activeObject.isEditing&&this._activeObject.clearContextTop(),S.StaticCanvas.prototype.setViewportTransform.call(this,t)}}),S.StaticCanvas)"prototype"!==r&&(S.Canvas[r]=S.StaticCanvas[r])}(),function(){var t=S.util.addListener,e=S.util.removeListener,i={passive:!1};function r(t,e){return t.button&&t.button===e-1}S.util.object.extend(S.Canvas.prototype,{mainTouchId:null,_initEventListeners:function(){this.removeListeners(),this._bindEvents(),this.addOrRemove(t,"add")},_getEventPrefix:function(){return this.enablePointerEvents?"pointer":"mouse"},addOrRemove:function(t,e){var r=this.upperCanvasEl,n=this._getEventPrefix();t(S.window,"resize",this._onResize),t(r,n+"down",this._onMouseDown),t(r,n+"move",this._onMouseMove,i),t(r,n+"out",this._onMouseOut),t(r,n+"enter",this._onMouseEnter),t(r,"wheel",this._onMouseWheel),t(r,"contextmenu",this._onContextMenu),t(r,"dblclick",this._onDoubleClick),t(r,"dragover",this._onDragOver),t(r,"dragenter",this._onDragEnter),t(r,"dragleave",this._onDragLeave),t(r,"drop",this._onDrop),this.enablePointerEvents||t(r,"touchstart",this._onTouchStart,i),"undefined"!=typeof eventjs&&e in eventjs&&(eventjs[e](r,"gesture",this._onGesture),eventjs[e](r,"drag",this._onDrag),eventjs[e](r,"orientation",this._onOrientationChange),eventjs[e](r,"shake",this._onShake),eventjs[e](r,"longpress",this._onLongPress))},removeListeners:function(){this.addOrRemove(e,"remove");var t=this._getEventPrefix();e(S.document,t+"up",this._onMouseUp),e(S.document,"touchend",this._onTouchEnd,i),e(S.document,t+"move",this._onMouseMove,i),e(S.document,"touchmove",this._onMouseMove,i)},_bindEvents:function(){this.eventsBound||(this._onMouseDown=this._onMouseDown.bind(this),this._onTouchStart=this._onTouchStart.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this._onTouchEnd=this._onTouchEnd.bind(this),this._onResize=this._onResize.bind(this),this._onGesture=this._onGesture.bind(this),this._onDrag=this._onDrag.bind(this),this._onShake=this._onShake.bind(this),this._onLongPress=this._onLongPress.bind(this),this._onOrientationChange=this._onOrientationChange.bind(this),this._onMouseWheel=this._onMouseWheel.bind(this),this._onMouseOut=this._onMouseOut.bind(this),this._onMouseEnter=this._onMouseEnter.bind(this),this._onContextMenu=this._onContextMenu.bind(this),this._onDoubleClick=this._onDoubleClick.bind(this),this._onDragOver=this._onDragOver.bind(this),this._onDragEnter=this._simpleEventHandler.bind(this,"dragenter"),this._onDragLeave=this._simpleEventHandler.bind(this,"dragleave"),this._onDrop=this._onDrop.bind(this),this.eventsBound=!0)},_onGesture:function(t,e){this.__onTransformGesture&&this.__onTransformGesture(t,e)},_onDrag:function(t,e){this.__onDrag&&this.__onDrag(t,e)},_onMouseWheel:function(t){this.__onMouseWheel(t)},_onMouseOut:function(t){var e=this._hoveredTarget;this.fire("mouse:out",{target:e,e:t}),this._hoveredTarget=null,e&&e.fire("mouseout",{e:t});var i=this;this._hoveredTargets.forEach((function(r){i.fire("mouse:out",{target:e,e:t}),r&&e.fire("mouseout",{e:t})})),this._hoveredTargets=[],this._iTextInstances&&this._iTextInstances.forEach((function(t){t.isEditing&&t.hiddenTextarea.focus()}))},_onMouseEnter:function(t){this._currentTransform||this.findTarget(t)||(this.fire("mouse:over",{target:null,e:t}),this._hoveredTarget=null,this._hoveredTargets=[])},_onOrientationChange:function(t,e){this.__onOrientationChange&&this.__onOrientationChange(t,e)},_onShake:function(t,e){this.__onShake&&this.__onShake(t,e)},_onLongPress:function(t,e){this.__onLongPress&&this.__onLongPress(t,e)},_onDragOver:function(t){t.preventDefault();var e=this._simpleEventHandler("dragover",t);this._fireEnterLeaveEvents(e,t)},_onDrop:function(t){return this._simpleEventHandler("drop:before",t),this._simpleEventHandler("drop",t)},_onContextMenu:function(t){return this.stopContextMenu&&(t.stopPropagation(),t.preventDefault()),!1},_onDoubleClick:function(t){this._cacheTransformEventData(t),this._handleEvent(t,"dblclick"),this._resetTransformEventData(t)},getPointerId:function(t){var e=t.changedTouches;return e?e[0]&&e[0].identifier:this.enablePointerEvents?t.pointerId:-1},_isMainEvent:function(t){return!0===t.isPrimary||!1!==t.isPrimary&&("touchend"===t.type&&0===t.touches.length||!t.changedTouches||t.changedTouches[0].identifier===this.mainTouchId)},_onTouchStart:function(r){r.preventDefault(),null===this.mainTouchId&&(this.mainTouchId=this.getPointerId(r)),this.__onMouseDown(r),this._resetTransformEventData();var n=this.upperCanvasEl,s=this._getEventPrefix();t(S.document,"touchend",this._onTouchEnd,i),t(S.document,"touchmove",this._onMouseMove,i),e(n,s+"down",this._onMouseDown)},_onMouseDown:function(r){this.__onMouseDown(r),this._resetTransformEventData();var n=this.upperCanvasEl,s=this._getEventPrefix();e(n,s+"move",this._onMouseMove,i),t(S.document,s+"up",this._onMouseUp),t(S.document,s+"move",this._onMouseMove,i)},_onTouchEnd:function(r){if(!(r.touches.length>0)){this.__onMouseUp(r),this._resetTransformEventData(),this.mainTouchId=null;var n=this._getEventPrefix();e(S.document,"touchend",this._onTouchEnd,i),e(S.document,"touchmove",this._onMouseMove,i);var s=this;this._willAddMouseDown&&clearTimeout(this._willAddMouseDown),this._willAddMouseDown=setTimeout((function(){t(s.upperCanvasEl,n+"down",s._onMouseDown),s._willAddMouseDown=0}),400)}},_onMouseUp:function(r){this.__onMouseUp(r),this._resetTransformEventData();var n=this.upperCanvasEl,s=this._getEventPrefix();this._isMainEvent(r)&&(e(S.document,s+"up",this._onMouseUp),e(S.document,s+"move",this._onMouseMove,i),t(n,s+"move",this._onMouseMove,i))},_onMouseMove:function(t){!this.allowTouchScrolling&&t.preventDefault&&t.preventDefault(),this.__onMouseMove(t)},_onResize:function(){this.calcOffset()},_shouldRender:function(t){var e=this._activeObject;return!!(!!e!=!!t||e&&t&&e!==t)||(e&&e.isEditing,!1)},__onMouseUp:function(t){var e,i=this._currentTransform,n=this._groupSelector,s=!1,o=!n||0===n.left&&0===n.top;if(this._cacheTransformEventData(t),e=this._target,this._handleEvent(t,"up:before"),r(t,3))this.fireRightClick&&this._handleEvent(t,"up",3,o);else{if(r(t,2))return this.fireMiddleClick&&this._handleEvent(t,"up",2,o),void this._resetTransformEventData();if(this.isDrawingMode&&this._isCurrentlyDrawing)this._onMouseUpInDrawingMode(t);else if(this._isMainEvent(t)){if(i&&(this._finalizeCurrentTransform(t),s=i.actionPerformed),!o){var a=e===this._activeObject;this._maybeGroupObjects(t),s||(s=this._shouldRender(e)||!a&&e===this._activeObject)}var h,l;if(e){if(h=e._findTargetCorner(this.getPointer(t,!0),S.util.isTouchEvent(t)),e.selectable&&e!==this._activeObject&&"up"===e.activeOn)this.setActiveObject(e,t),s=!0;else{var c=e.controls[h],u=c&&c.getMouseUpHandler(t,e,c);u&&u(t,i,(l=this.getPointer(t)).x,l.y)}e.isMoving=!1}if(i&&(i.target!==e||i.corner!==h)){var d=i.target&&i.target.controls[i.corner],f=d&&d.getMouseUpHandler(t,e,c);l=l||this.getPointer(t),f&&f(t,i,l.x,l.y)}this._setCursorFromEvent(t,e),this._handleEvent(t,"up",1,o),this._groupSelector=null,this._currentTransform=null,e&&(e.__corner=0),s?this.requestRenderAll():o||this.renderTop()}}},_simpleEventHandler:function(t,e){var i=this.findTarget(e),r=this.targets,n={e:e,target:i,subTargets:r};if(this.fire(t,n),i&&i.fire(t,n),!r)return i;for(var s=0;s1&&(e=new S.ActiveSelection(i.reverse(),{canvas:this}),this.setActiveObject(e,t))},_collectObjects:function(t){for(var e,i=[],r=this._groupSelector.ex,n=this._groupSelector.ey,s=r+this._groupSelector.left,o=n+this._groupSelector.top,a=new S.Point(v(r,s),v(n,o)),h=new S.Point(y(r,s),y(n,o)),l=!this.selectionFullyContained,c=r===s&&n===o,u=this._objects.length;u--&&!((e=this._objects[u])&&e.selectable&&e.visible&&(l&&e.intersectsWithRect(a,h,!0)||e.isContainedWithinRect(a,h,!0)||l&&e.containsPoint(a,null,!0)||l&&e.containsPoint(h,null,!0))&&(i.push(e),c)););return i.length>1&&(i=i.filter((function(e){return!e.onSelect({e:t})}))),i},_maybeGroupObjects:function(t){this.selection&&this._groupSelector&&this._groupSelectedObjects(t),this.setCursor(this.defaultCursor),this._groupSelector=null}}),S.util.object.extend(S.StaticCanvas.prototype,{toDataURL:function(t){t||(t={});var e=t.format||"png",i=t.quality||1,r=(t.multiplier||1)*(t.enableRetinaScaling?this.getRetinaScaling():1),n=this.toCanvasElement(r,t);return S.util.toDataURL(n,e,i)},toCanvasElement:function(t,e){t=t||1;var i=((e=e||{}).width||this.width)*t,r=(e.height||this.height)*t,n=this.getZoom(),s=this.width,o=this.height,a=n*t,h=this.viewportTransform,l=(h[4]-(e.left||0))*t,c=(h[5]-(e.top||0))*t,u=this.interactive,d=[a,0,0,a,l,c],f=this.enableRetinaScaling,g=S.util.createCanvasElement(),m=this.contextTop;return g.width=i,g.height=r,this.contextTop=null,this.enableRetinaScaling=!1,this.interactive=!1,this.viewportTransform=d,this.width=i,this.height=r,this.calcViewportBoundaries(),this.renderCanvas(g.getContext("2d"),this._objects),this.viewportTransform=h,this.width=s,this.height=o,this.calcViewportBoundaries(),this.interactive=u,this.enableRetinaScaling=f,this.contextTop=m,g}}),S.util.object.extend(S.StaticCanvas.prototype,{loadFromJSON:function(t,e,i){if(t){var r="string"==typeof t?JSON.parse(t):S.util.object.clone(t),n=this,s=r.clipPath,o=this.renderOnAddRemove;return this.renderOnAddRemove=!1,delete r.clipPath,this._enlivenObjects(r.objects,(function(t){n.clear(),n._setBgOverlay(r,(function(){s?n._enlivenObjects([s],(function(i){n.clipPath=i[0],n.__setupCanvas.call(n,r,t,o,e)})):n.__setupCanvas.call(n,r,t,o,e)}))}),i),this}},__setupCanvas:function(t,e,i,r){var n=this;e.forEach((function(t,e){n.insertAt(t,e)})),this.renderOnAddRemove=i,delete t.objects,delete t.backgroundImage,delete t.overlayImage,delete t.background,delete t.overlay,this._setOptions(t),this.renderAll(),r&&r()},_setBgOverlay:function(t,e){var i={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(t.backgroundImage||t.overlayImage||t.background||t.overlay){var r=function(){i.backgroundImage&&i.overlayImage&&i.backgroundColor&&i.overlayColor&&e&&e()};this.__setBgOverlay("backgroundImage",t.backgroundImage,i,r),this.__setBgOverlay("overlayImage",t.overlayImage,i,r),this.__setBgOverlay("backgroundColor",t.background,i,r),this.__setBgOverlay("overlayColor",t.overlay,i,r)}else e&&e()},__setBgOverlay:function(t,e,i,r){var n=this;if(!e)return i[t]=!0,void(r&&r());"backgroundImage"===t||"overlayImage"===t?S.util.enlivenObjects([e],(function(e){n[t]=e[0],i[t]=!0,r&&r()})):this["set"+S.util.string.capitalize(t,!0)](e,(function(){i[t]=!0,r&&r()}))},_enlivenObjects:function(t,e,i){t&&0!==t.length?S.util.enlivenObjects(t,(function(t){e&&e(t)}),null,i):e&&e([])},_toDataURL:function(t,e){this.clone((function(i){e(i.toDataURL(t))}))},_toDataURLWithMultiplier:function(t,e,i){this.clone((function(r){i(r.toDataURLWithMultiplier(t,e))}))},clone:function(t,e){var i=JSON.stringify(this.toJSON(e));this.cloneWithoutData((function(e){e.loadFromJSON(i,(function(){t&&t(e)}))}))},cloneWithoutData:function(t){var e=S.util.createCanvasElement();e.width=this.width,e.height=this.height;var i=new S.Canvas(e);this.backgroundImage?(i.setBackgroundImage(this.backgroundImage.src,(function(){i.renderAll(),t&&t(i)})),i.backgroundImageOpacity=this.backgroundImageOpacity,i.backgroundImageStretch=this.backgroundImageStretch):t&&t(i)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.object.clone,n=e.util.toFixed,s=e.util.string.capitalize,o=e.util.degreesToRadians,a=!e.isLikelyNode;e.Object||(e.Object=e.util.createClass(e.CommonMethods,{type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,skewX:0,skewY:0,cornerSize:13,touchCornerSize:24,transparentCorners:!0,hoverCursor:null,moveCursor:null,padding:0,borderColor:"rgb(178,204,255)",borderDashArray:null,cornerColor:"rgb(178,204,255)",cornerStrokeColor:null,cornerStyle:"rect",cornerDashArray:null,centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"nonzero",globalCompositeOperation:"source-over",backgroundColor:"",selectionBackgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeDashOffset:0,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:4,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,minScaleLimit:0,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,perPixelTargetFind:!1,includeDefaultValues:!0,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,excludeFromExport:!1,objectCaching:a,statefullCache:!1,noScaleCache:!0,strokeUniform:!1,dirty:!0,__corner:0,paintFirst:"fill",activeOn:"down",stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit angle opacity fill globalCompositeOperation shadow visible backgroundColor skewX skewY fillRule paintFirst clipPath strokeUniform".split(" "),cacheProperties:"fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath".split(" "),colorProperties:"fill stroke backgroundColor".split(" "),clipPath:void 0,inverted:!1,absolutePositioned:!1,initialize:function(t){t&&this.setOptions(t)},_createCacheCanvas:function(){this._cacheProperties={},this._cacheCanvas=e.util.createCanvasElement(),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas(),this.dirty=!0},_limitCacheSize:function(t){var i=e.perfLimitSizeTotal,r=t.width,n=t.height,s=e.maxCacheSideLimit,o=e.minCacheSideLimit;if(r<=s&&n<=s&&r*n<=i)return rc&&(t.zoomX/=r/c,t.width=c,t.capped=!0),n>u&&(t.zoomY/=n/u,t.height=u,t.capped=!0),t},_getCacheCanvasDimensions:function(){var t=this.getTotalObjectScaling(),e=this._getTransformedDimensions(0,0),i=e.x*t.scaleX/this.scaleX,r=e.y*t.scaleY/this.scaleY;return{width:i+2,height:r+2,zoomX:t.scaleX,zoomY:t.scaleY,x:i,y:r}},_updateCacheCanvas:function(){var t=this.canvas;if(this.noScaleCache&&t&&t._currentTransform){var i=t._currentTransform.target,r=t._currentTransform.action;if(this===i&&r.slice&&"scale"===r.slice(0,5))return!1}var n,s,o=this._cacheCanvas,a=this._limitCacheSize(this._getCacheCanvasDimensions()),h=e.minCacheSideLimit,l=a.width,c=a.height,u=a.zoomX,d=a.zoomY,f=l!==this.cacheWidth||c!==this.cacheHeight,g=this.zoomX!==u||this.zoomY!==d,m=f||g,p=0,_=0,v=!1;if(f){var y=this._cacheCanvas.width,w=this._cacheCanvas.height,C=l>y||c>w;v=C||(l<.9*y||c<.9*w)&&y>h&&w>h,C&&!a.capped&&(l>h||c>h)&&(p=.1*l,_=.1*c)}return this instanceof e.Text&&this.path&&(m=!0,v=!0,p+=this.getHeightOfLine(0)*this.zoomX,_+=this.getHeightOfLine(0)*this.zoomY),!!m&&(v?(o.width=Math.ceil(l+p),o.height=Math.ceil(c+_)):(this._cacheContext.setTransform(1,0,0,1,0,0),this._cacheContext.clearRect(0,0,o.width,o.height)),n=a.x/2,s=a.y/2,this.cacheTranslationX=Math.round(o.width/2-n)+n,this.cacheTranslationY=Math.round(o.height/2-s)+s,this.cacheWidth=l,this.cacheHeight=c,this._cacheContext.translate(this.cacheTranslationX,this.cacheTranslationY),this._cacheContext.scale(u,d),this.zoomX=u,this.zoomY=d,!0)},setOptions:function(t){this._setOptions(t),this._initGradient(t.fill,"fill"),this._initGradient(t.stroke,"stroke"),this._initPattern(t.fill,"fill"),this._initPattern(t.stroke,"stroke")},transform:function(t){var e=this.group&&!this.group._transformDone||this.group&&this.canvas&&t===this.canvas.contextTop,i=this.calcTransformMatrix(!e);t.transform(i[0],i[1],i[2],i[3],i[4],i[5])},toObject:function(t){var i=e.Object.NUM_FRACTION_DIGITS,r={type:this.type,version:e.version,originX:this.originX,originY:this.originY,left:n(this.left,i),top:n(this.top,i),width:n(this.width,i),height:n(this.height,i),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:n(this.strokeWidth,i),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeDashOffset:this.strokeDashOffset,strokeLineJoin:this.strokeLineJoin,strokeUniform:this.strokeUniform,strokeMiterLimit:n(this.strokeMiterLimit,i),scaleX:n(this.scaleX,i),scaleY:n(this.scaleY,i),angle:n(this.angle,i),flipX:this.flipX,flipY:this.flipY,opacity:n(this.opacity,i),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,backgroundColor:this.backgroundColor,fillRule:this.fillRule,paintFirst:this.paintFirst,globalCompositeOperation:this.globalCompositeOperation,skewX:n(this.skewX,i),skewY:n(this.skewY,i)};return this.clipPath&&!this.clipPath.excludeFromExport&&(r.clipPath=this.clipPath.toObject(t),r.clipPath.inverted=this.clipPath.inverted,r.clipPath.absolutePositioned=this.clipPath.absolutePositioned),e.util.populateWithProperties(this,r,t),this.includeDefaultValues||(r=this._removeDefaultValues(r)),r},toDatalessObject:function(t){return this.toObject(t)},_removeDefaultValues:function(t){var i=e.util.getKlass(t.type).prototype;return i.stateProperties.forEach((function(e){"left"!==e&&"top"!==e&&(t[e]===i[e]&&delete t[e],Array.isArray(t[e])&&Array.isArray(i[e])&&0===t[e].length&&0===i[e].length&&delete t[e])})),t},toString:function(){return"#"},getObjectScaling:function(){if(!this.group)return{scaleX:this.scaleX,scaleY:this.scaleY};var t=e.util.qrDecompose(this.calcTransformMatrix());return{scaleX:Math.abs(t.scaleX),scaleY:Math.abs(t.scaleY)}},getTotalObjectScaling:function(){var t=this.getObjectScaling(),e=t.scaleX,i=t.scaleY;if(this.canvas){var r=this.canvas.getZoom(),n=this.canvas.getRetinaScaling();e*=r*n,i*=r*n}return{scaleX:e,scaleY:i}},getObjectOpacity:function(){var t=this.opacity;return this.group&&(t*=this.group.getObjectOpacity()),t},_set:function(t,i){var r="scaleX"===t||"scaleY"===t,n=this[t]!==i,s=!1;return r&&(i=this._constrainScale(i)),"scaleX"===t&&i<0?(this.flipX=!this.flipX,i*=-1):"scaleY"===t&&i<0?(this.flipY=!this.flipY,i*=-1):"shadow"!==t||!i||i instanceof e.Shadow?"dirty"===t&&this.group&&this.group.set("dirty",i):i=new e.Shadow(i),this[t]=i,n&&(s=this.group&&this.group.isOnACache(),this.cacheProperties.indexOf(t)>-1?(this.dirty=!0,s&&this.group.set("dirty",!0)):s&&this.stateProperties.indexOf(t)>-1&&this.group.set("dirty",!0)),this},setOnGroup:function(){},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:e.iMatrix.concat()},isNotVisible:function(){return 0===this.opacity||!this.width&&!this.height&&0===this.strokeWidth||!this.visible},render:function(t){this.isNotVisible()||this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(t.save(),this._setupCompositeOperation(t),this.drawSelectionBackground(t),this.transform(t),this._setOpacity(t),this._setShadow(t,this),this.shouldCache()?(this.renderCache(),this.drawCacheOnCanvas(t)):(this._removeCacheCanvas(),this.dirty=!1,this.drawObject(t),this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})),t.restore())},renderCache:function(t){t=t||{},this._cacheCanvas&&this._cacheContext||this._createCacheCanvas(),this.isCacheDirty()&&(this.statefullCache&&this.saveState({propertySet:"cacheProperties"}),this.drawObject(this._cacheContext,t.forClipping),this.dirty=!1)},_removeCacheCanvas:function(){this._cacheCanvas=null,this._cacheContext=null,this.cacheWidth=0,this.cacheHeight=0},hasStroke:function(){return this.stroke&&"transparent"!==this.stroke&&0!==this.strokeWidth},hasFill:function(){return this.fill&&"transparent"!==this.fill},needsItsOwnCache:function(){return!("stroke"!==this.paintFirst||!this.hasFill()||!this.hasStroke()||"object"!=typeof this.shadow)||!!this.clipPath},shouldCache:function(){return this.ownCaching=this.needsItsOwnCache()||this.objectCaching&&(!this.group||!this.group.isOnACache()),this.ownCaching},willDrawShadow:function(){return!!this.shadow&&(0!==this.shadow.offsetX||0!==this.shadow.offsetY)},drawClipPathOnCache:function(t,i){if(t.save(),i.inverted?t.globalCompositeOperation="destination-out":t.globalCompositeOperation="destination-in",i.absolutePositioned){var r=e.util.invertTransform(this.calcTransformMatrix());t.transform(r[0],r[1],r[2],r[3],r[4],r[5])}i.transform(t),t.scale(1/i.zoomX,1/i.zoomY),t.drawImage(i._cacheCanvas,-i.cacheTranslationX,-i.cacheTranslationY),t.restore()},drawObject:function(t,e){var i=this.fill,r=this.stroke;e?(this.fill="black",this.stroke="",this._setClippingProperties(t)):this._renderBackground(t),this._render(t),this._drawClipPath(t,this.clipPath),this.fill=i,this.stroke=r},_drawClipPath:function(t,e){e&&(e.canvas=this.canvas,e.shouldCache(),e._transformDone=!0,e.renderCache({forClipping:!0}),this.drawClipPathOnCache(t,e))},drawCacheOnCanvas:function(t){t.scale(1/this.zoomX,1/this.zoomY),t.drawImage(this._cacheCanvas,-this.cacheTranslationX,-this.cacheTranslationY)},isCacheDirty:function(t){if(this.isNotVisible())return!1;if(this._cacheCanvas&&this._cacheContext&&!t&&this._updateCacheCanvas())return!0;if(this.dirty||this.clipPath&&this.clipPath.absolutePositioned||this.statefullCache&&this.hasStateChanged("cacheProperties")){if(this._cacheCanvas&&this._cacheContext&&!t){var e=this.cacheWidth/this.zoomX,i=this.cacheHeight/this.zoomY;this._cacheContext.clearRect(-e/2,-i/2,e,i)}return!0}return!1},_renderBackground:function(t){if(this.backgroundColor){var e=this._getNonTransformedDimensions();t.fillStyle=this.backgroundColor,t.fillRect(-e.x/2,-e.y/2,e.x,e.y),this._removeShadow(t)}},_setOpacity:function(t){this.group&&!this.group._transformDone?t.globalAlpha=this.getObjectOpacity():t.globalAlpha*=this.opacity},_setStrokeStyles:function(t,e){var i=e.stroke;i&&(t.lineWidth=e.strokeWidth,t.lineCap=e.strokeLineCap,t.lineDashOffset=e.strokeDashOffset,t.lineJoin=e.strokeLineJoin,t.miterLimit=e.strokeMiterLimit,i.toLive?"percentage"===i.gradientUnits||i.gradientTransform||i.patternTransform?this._applyPatternForTransformedGradient(t,i):(t.strokeStyle=i.toLive(t,this),this._applyPatternGradientTransform(t,i)):t.strokeStyle=e.stroke)},_setFillStyles:function(t,e){var i=e.fill;i&&(i.toLive?(t.fillStyle=i.toLive(t,this),this._applyPatternGradientTransform(t,e.fill)):t.fillStyle=i)},_setClippingProperties:function(t){t.globalAlpha=1,t.strokeStyle="transparent",t.fillStyle="#000000"},_setLineDash:function(t,e){e&&0!==e.length&&(1&e.length&&e.push.apply(e,e),t.setLineDash(e))},_renderControls:function(t,i){var r,n,s,a=this.getViewportTransform(),h=this.calcTransformMatrix();n=void 0!==(i=i||{}).hasBorders?i.hasBorders:this.hasBorders,s=void 0!==i.hasControls?i.hasControls:this.hasControls,h=e.util.multiplyTransformMatrices(a,h),r=e.util.qrDecompose(h),t.save(),t.translate(r.translateX,r.translateY),t.lineWidth=1*this.borderScaleFactor,this.group||(t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.flipX&&(r.angle-=180),t.rotate(o(this.group?r.angle:this.angle)),i.forActiveSelection||this.group?n&&this.drawBordersInGroup(t,r,i):n&&this.drawBorders(t,i),s&&this.drawControls(t,i),t.restore()},_setShadow:function(t){if(this.shadow){var i,r=this.shadow,n=this.canvas,s=n&&n.viewportTransform[0]||1,o=n&&n.viewportTransform[3]||1;i=r.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),n&&n._isRetinaScaling()&&(s*=e.devicePixelRatio,o*=e.devicePixelRatio),t.shadowColor=r.color,t.shadowBlur=r.blur*e.browserShadowBlurConstant*(s+o)*(i.scaleX+i.scaleY)/4,t.shadowOffsetX=r.offsetX*s*i.scaleX,t.shadowOffsetY=r.offsetY*o*i.scaleY}},_removeShadow:function(t){this.shadow&&(t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0)},_applyPatternGradientTransform:function(t,e){if(!e||!e.toLive)return{offsetX:0,offsetY:0};var i=e.gradientTransform||e.patternTransform,r=-this.width/2+e.offsetX||0,n=-this.height/2+e.offsetY||0;return"percentage"===e.gradientUnits?t.transform(this.width,0,0,this.height,r,n):t.transform(1,0,0,1,r,n),i&&t.transform(i[0],i[1],i[2],i[3],i[4],i[5]),{offsetX:r,offsetY:n}},_renderPaintInOrder:function(t){"stroke"===this.paintFirst?(this._renderStroke(t),this._renderFill(t)):(this._renderFill(t),this._renderStroke(t))},_render:function(){},_renderFill:function(t){this.fill&&(t.save(),this._setFillStyles(t,this),"evenodd"===this.fillRule?t.fill("evenodd"):t.fill(),t.restore())},_renderStroke:function(t){if(this.stroke&&0!==this.strokeWidth){if(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(t),t.save(),this.strokeUniform&&this.group){var e=this.getObjectScaling();t.scale(1/e.scaleX,1/e.scaleY)}else this.strokeUniform&&t.scale(1/this.scaleX,1/this.scaleY);this._setLineDash(t,this.strokeDashArray),this._setStrokeStyles(t,this),t.stroke(),t.restore()}},_applyPatternForTransformedGradient:function(t,i){var r,n=this._limitCacheSize(this._getCacheCanvasDimensions()),s=e.util.createCanvasElement(),o=this.canvas.getRetinaScaling(),a=n.x/this.scaleX/o,h=n.y/this.scaleY/o;s.width=a,s.height=h,(r=s.getContext("2d")).beginPath(),r.moveTo(0,0),r.lineTo(a,0),r.lineTo(a,h),r.lineTo(0,h),r.closePath(),r.translate(a/2,h/2),r.scale(n.zoomX/this.scaleX/o,n.zoomY/this.scaleY/o),this._applyPatternGradientTransform(r,i),r.fillStyle=i.toLive(t),r.fill(),t.translate(-this.width/2-this.strokeWidth/2,-this.height/2-this.strokeWidth/2),t.scale(o*this.scaleX/n.zoomX,o*this.scaleY/n.zoomY),t.strokeStyle=r.createPattern(s,"no-repeat")},_findCenterFromElement:function(){return{x:this.left+this.width/2,y:this.top+this.height/2}},_assignTransformMatrixProps:function(){if(this.transformMatrix){var t=e.util.qrDecompose(this.transformMatrix);this.flipX=!1,this.flipY=!1,this.set("scaleX",t.scaleX),this.set("scaleY",t.scaleY),this.angle=t.angle,this.skewX=t.skewX,this.skewY=0}},_removeTransformMatrix:function(t){var i=this._findCenterFromElement();this.transformMatrix&&(this._assignTransformMatrixProps(),i=e.util.transformPoint(i,this.transformMatrix)),this.transformMatrix=null,t&&(this.scaleX*=t.scaleX,this.scaleY*=t.scaleY,this.cropX=t.cropX,this.cropY=t.cropY,i.x+=t.offsetLeft,i.y+=t.offsetTop,this.width=t.width,this.height=t.height),this.setPositionByOrigin(i,"center","center")},clone:function(t,i){var r=this.toObject(i);this.constructor.fromObject?this.constructor.fromObject(r,t):e.Object._fromObject("Object",r,t)},cloneAsImage:function(t,i){var r=this.toCanvasElement(i);return t&&t(new e.Image(r)),this},toCanvasElement:function(t){t||(t={});var i=e.util,r=i.saveObjectTransform(this),n=this.group,s=this.shadow,o=Math.abs,a=(t.multiplier||1)*(t.enableRetinaScaling?e.devicePixelRatio:1);delete this.group,t.withoutTransform&&i.resetObjectTransform(this),t.withoutShadow&&(this.shadow=null);var h,l,c,u,d=e.util.createCanvasElement(),f=this.getBoundingRect(!0,!0),g=this.shadow,m={x:0,y:0};g&&(l=g.blur,h=g.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),m.x=2*Math.round(o(g.offsetX)+l)*o(h.scaleX),m.y=2*Math.round(o(g.offsetY)+l)*o(h.scaleY)),c=f.width+m.x,u=f.height+m.y,d.width=Math.ceil(c),d.height=Math.ceil(u);var p=new e.StaticCanvas(d,{enableRetinaScaling:!1,renderOnAddRemove:!1,skipOffscreen:!1});"jpeg"===t.format&&(p.backgroundColor="#fff"),this.setPositionByOrigin(new e.Point(p.width/2,p.height/2),"center","center");var _=this.canvas;p.add(this);var v=p.toCanvasElement(a||1,t);return this.shadow=s,this.set("canvas",_),n&&(this.group=n),this.set(r).setCoords(),p._objects=[],p.dispose(),p=null,v},toDataURL:function(t){return t||(t={}),e.util.toDataURL(this.toCanvasElement(t),t.format||"png",t.quality||1)},isType:function(t){return arguments.length>1?Array.from(arguments).includes(this.type):this.type===t},complexity:function(){return 1},toJSON:function(t){return this.toObject(t)},rotate:function(t){var e=("center"!==this.originX||"center"!==this.originY)&&this.centeredRotation;return e&&this._setOriginToCenter(),this.set("angle",t),e&&this._resetOrigin(),this},centerH:function(){return this.canvas&&this.canvas.centerObjectH(this),this},viewportCenterH:function(){return this.canvas&&this.canvas.viewportCenterObjectH(this),this},centerV:function(){return this.canvas&&this.canvas.centerObjectV(this),this},viewportCenterV:function(){return this.canvas&&this.canvas.viewportCenterObjectV(this),this},center:function(){return this.canvas&&this.canvas.centerObject(this),this},viewportCenter:function(){return this.canvas&&this.canvas.viewportCenterObject(this),this},getLocalPointer:function(t,i){i=i||this.canvas.getPointer(t);var r=new e.Point(i.x,i.y),n=this._getLeftTopCoords();return this.angle&&(r=e.util.rotatePoint(r,n,o(-this.angle))),{x:r.x-n.x,y:r.y-n.y}},_setupCompositeOperation:function(t){this.globalCompositeOperation&&(t.globalCompositeOperation=this.globalCompositeOperation)},dispose:function(){e.runningAnimations&&e.runningAnimations.cancelByTarget(this)}}),e.util.createAccessors&&e.util.createAccessors(e.Object),i(e.Object.prototype,e.Observable),e.Object.NUM_FRACTION_DIGITS=2,e.Object.ENLIVEN_PROPS=["clipPath"],e.Object._fromObject=function(t,i,n,s){var o=e[t];i=r(i,!0),e.util.enlivenPatterns([i.fill,i.stroke],(function(t){void 0!==t[0]&&(i.fill=t[0]),void 0!==t[1]&&(i.stroke=t[1]),e.util.enlivenObjectEnlivables(i,i,(function(){var t=s?new o(i[s],i):new o(i);n&&n(t)}))}))},e.Object.__uid=0)}(e),w=S.util.degreesToRadians,C={left:-.5,center:0,right:.5},E={top:-.5,center:0,bottom:.5},S.util.object.extend(S.Object.prototype,{translateToGivenOrigin:function(t,e,i,r,n){var s,o,a,h=t.x,l=t.y;return"string"==typeof e?e=C[e]:e-=.5,"string"==typeof r?r=C[r]:r-=.5,"string"==typeof i?i=E[i]:i-=.5,"string"==typeof n?n=E[n]:n-=.5,o=n-i,((s=r-e)||o)&&(a=this._getTransformedDimensions(),h=t.x+s*a.x,l=t.y+o*a.y),new S.Point(h,l)},translateToCenterPoint:function(t,e,i){var r=this.translateToGivenOrigin(t,e,i,"center","center");return this.angle?S.util.rotatePoint(r,t,w(this.angle)):r},translateToOriginPoint:function(t,e,i){var r=this.translateToGivenOrigin(t,"center","center",e,i);return this.angle?S.util.rotatePoint(r,t,w(this.angle)):r},getCenterPoint:function(){var t=new S.Point(this.left,this.top);return this.translateToCenterPoint(t,this.originX,this.originY)},getPointByOrigin:function(t,e){var i=this.getCenterPoint();return this.translateToOriginPoint(i,t,e)},toLocalPoint:function(t,e,i){var r,n,s=this.getCenterPoint();return r=void 0!==e&&void 0!==i?this.translateToGivenOrigin(s,"center","center",e,i):new S.Point(this.left,this.top),n=new S.Point(t.x,t.y),this.angle&&(n=S.util.rotatePoint(n,s,-w(this.angle))),n.subtractEquals(r)},setPositionByOrigin:function(t,e,i){var r=this.translateToCenterPoint(t,e,i),n=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",n.x),this.set("top",n.y)},adjustPosition:function(t){var e,i,r=w(this.angle),n=this.getScaledWidth(),s=S.util.cos(r)*n,o=S.util.sin(r)*n;e="string"==typeof this.originX?C[this.originX]:this.originX-.5,i="string"==typeof t?C[t]:t-.5,this.left+=s*(i-e),this.top+=o*(i-e),this.setCoords(),this.originX=t},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var t=this.getCenterPoint();this.originX="center",this.originY="center",this.left=t.x,this.top=t.y},_resetOrigin:function(){var t=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX,this.originY=this._originalOriginY,this.left=t.x,this.top=t.y,this._originalOriginX=null,this._originalOriginY=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","top")}}),function(){var t=S.util,e=t.degreesToRadians,i=t.multiplyTransformMatrices,r=t.transformPoint;t.object.extend(S.Object.prototype,{oCoords:null,aCoords:null,lineCoords:null,ownMatrixCache:null,matrixCache:null,controls:{},_getCoords:function(t,e){return e?t?this.calcACoords():this.calcLineCoords():(this.aCoords&&this.lineCoords||this.setCoords(!0),t?this.aCoords:this.lineCoords)},getCoords:function(t,e){return i=this._getCoords(t,e),[new S.Point(i.tl.x,i.tl.y),new S.Point(i.tr.x,i.tr.y),new S.Point(i.br.x,i.br.y),new S.Point(i.bl.x,i.bl.y)];var i},intersectsWithRect:function(t,e,i,r){var n=this.getCoords(i,r);return"Intersection"===S.Intersection.intersectPolygonRectangle(n,t,e).status},intersectsWithObject:function(t,e,i){return"Intersection"===S.Intersection.intersectPolygonPolygon(this.getCoords(e,i),t.getCoords(e,i)).status||t.isContainedWithinObject(this,e,i)||this.isContainedWithinObject(t,e,i)},isContainedWithinObject:function(t,e,i){for(var r=this.getCoords(e,i),n=e?t.aCoords:t.lineCoords,s=0,o=t._getImageLines(n);s<4;s++)if(!t.containsPoint(r[s],o))return!1;return!0},isContainedWithinRect:function(t,e,i,r){var n=this.getBoundingRect(i,r);return n.left>=t.x&&n.left+n.width<=e.x&&n.top>=t.y&&n.top+n.height<=e.y},containsPoint:function(t,e,i,r){var n=this._getCoords(i,r),s=(e=e||this._getImageLines(n),this._findCrossPoints(t,e));return 0!==s&&s%2==1},isOnScreen:function(t){if(!this.canvas)return!1;var e=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.getCoords(!0,t).some((function(t){return t.x<=i.x&&t.x>=e.x&&t.y<=i.y&&t.y>=e.y}))||!!this.intersectsWithRect(e,i,!0,t)||this._containsCenterOfCanvas(e,i,t)},_containsCenterOfCanvas:function(t,e,i){var r={x:(t.x+e.x)/2,y:(t.y+e.y)/2};return!!this.containsPoint(r,null,!0,i)},isPartiallyOnScreen:function(t){if(!this.canvas)return!1;var e=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.intersectsWithRect(e,i,!0,t)||this.getCoords(!0,t).every((function(t){return(t.x>=i.x||t.x<=e.x)&&(t.y>=i.y||t.y<=e.y)}))&&this._containsCenterOfCanvas(e,i,t)},_getImageLines:function(t){return{topline:{o:t.tl,d:t.tr},rightline:{o:t.tr,d:t.br},bottomline:{o:t.br,d:t.bl},leftline:{o:t.bl,d:t.tl}}},_findCrossPoints:function(t,e){var i,r,n,s=0;for(var o in e)if(!((n=e[o]).o.y=t.y&&n.d.y>=t.y||(n.o.x===n.d.x&&n.o.x>=t.x?r=n.o.x:(i=(n.d.y-n.o.y)/(n.d.x-n.o.x),r=-(t.y-0*t.x-(n.o.y-i*n.o.x))/(0-i)),r>=t.x&&(s+=1),2!==s)))break;return s},getBoundingRect:function(e,i){var r=this.getCoords(e,i);return t.makeBoundingBoxFromPoints(r)},getScaledWidth:function(){return this._getTransformedDimensions().x},getScaledHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(t){return Math.abs(t)\n')}},toSVG:function(t){return this._createBaseSVGMarkup(this._toSVG(t),{reviver:t})},toClipPathSVG:function(t){return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(t),{reviver:t})},_createBaseClipPathSVGMarkup:function(t,e){var i=(e=e||{}).reviver,r=e.additionalTransform||"",n=[this.getSvgTransform(!0,r),this.getSvgCommons()].join(""),s=t.indexOf("COMMON_PARTS");return t[s]=n,i?i(t.join("")):t.join("")},_createBaseSVGMarkup:function(t,e){var i,r,n=(e=e||{}).noStyle,s=e.reviver,o=n?"":'style="'+this.getSvgStyles()+'" ',a=e.withShadow?'style="'+this.getSvgFilter()+'" ':"",h=this.clipPath,l=this.strokeUniform?'vector-effect="non-scaling-stroke" ':"",c=h&&h.absolutePositioned,u=this.stroke,d=this.fill,f=this.shadow,g=[],m=t.indexOf("COMMON_PARTS"),p=e.additionalTransform;return h&&(h.clipPathId="CLIPPATH_"+S.Object.__uid++,r='\n'+h.toClipPathSVG(s)+"\n"),c&&g.push("\n"),g.push("\n"),i=[o,l,n?"":this.addPaintOrder()," ",p?'transform="'+p+'" ':""].join(""),t[m]=i,d&&d.toLive&&g.push(d.toSVG(this)),u&&u.toLive&&g.push(u.toSVG(this)),f&&g.push(f.toSVG(this)),h&&g.push(r),g.push(t.join("")),g.push("\n"),c&&g.push("\n"),s?s(g.join("")):g.join("")},addPaintOrder:function(){return"fill"!==this.paintFirst?' paint-order="'+this.paintFirst+'" ':""}})}(),function(){var t=S.util.object.extend,e="stateProperties";function i(e,i,r){var n={};r.forEach((function(t){n[t]=e[t]})),t(e[i],n,!0)}function r(t,e,i){if(t===e)return!0;if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(var n=0,s=t.length;n=0;h--)if(n=a[h],this.isControlVisible(n)&&(r=this._getImageLines(e?this.oCoords[n].touchCorner:this.oCoords[n].corner),0!==(i=this._findCrossPoints({x:s,y:o},r))&&i%2==1))return this.__corner=n,n;return!1},forEachControl:function(t){for(var e in this.controls)t(this.controls[e],e,this)},_setCornerCoords:function(){var t=this.oCoords;for(var e in t){var i=this.controls[e];t[e].corner=i.calcCornerCoords(this.angle,this.cornerSize,t[e].x,t[e].y,!1),t[e].touchCorner=i.calcCornerCoords(this.angle,this.touchCornerSize,t[e].x,t[e].y,!0)}},drawSelectionBackground:function(e){if(!this.selectionBackgroundColor||this.canvas&&!this.canvas.interactive||this.canvas&&this.canvas._activeObject!==this)return this;e.save();var i=this.getCenterPoint(),r=this._calculateCurrentDimensions(),n=this.canvas.viewportTransform;return e.translate(i.x,i.y),e.scale(1/n[0],1/n[3]),e.rotate(t(this.angle)),e.fillStyle=this.selectionBackgroundColor,e.fillRect(-r.x/2,-r.y/2,r.x,r.y),e.restore(),this},drawBorders:function(t,e){e=e||{};var i=this._calculateCurrentDimensions(),r=this.borderScaleFactor,n=i.x+r,s=i.y+r,o=void 0!==e.hasControls?e.hasControls:this.hasControls,a=!1;return t.save(),t.strokeStyle=e.borderColor||this.borderColor,this._setLineDash(t,e.borderDashArray||this.borderDashArray),t.strokeRect(-n/2,-s/2,n,s),o&&(t.beginPath(),this.forEachControl((function(e,i,r){e.withConnection&&e.getVisibility(r,i)&&(a=!0,t.moveTo(e.x*n,e.y*s),t.lineTo(e.x*n+e.offsetX,e.y*s+e.offsetY))})),a&&t.stroke()),t.restore(),this},drawBordersInGroup:function(t,e,i){i=i||{};var r=S.util.sizeAfterTransform(this.width,this.height,e),n=this.strokeWidth,s=this.strokeUniform,o=this.borderScaleFactor,a=r.x+n*(s?this.canvas.getZoom():e.scaleX)+o,h=r.y+n*(s?this.canvas.getZoom():e.scaleY)+o;return t.save(),this._setLineDash(t,i.borderDashArray||this.borderDashArray),t.strokeStyle=i.borderColor||this.borderColor,t.strokeRect(-a/2,-h/2,a,h),t.restore(),this},drawControls:function(t,e){e=e||{},t.save();var i,r,n=this.canvas.getRetinaScaling();return t.setTransform(n,0,0,n,0,0),t.strokeStyle=t.fillStyle=e.cornerColor||this.cornerColor,this.transparentCorners||(t.strokeStyle=e.cornerStrokeColor||this.cornerStrokeColor),this._setLineDash(t,e.cornerDashArray||this.cornerDashArray),this.setCoords(),this.group&&(i=this.group.calcTransformMatrix()),this.forEachControl((function(n,s,o){r=o.oCoords[s],n.getVisibility(o,s)&&(i&&(r=S.util.transformPoint(r,i)),n.render(t,r.x,r.y,e,o))})),t.restore(),this},isControlVisible:function(t){return this.controls[t]&&this.controls[t].getVisibility(this,t)},setControlVisible:function(t,e){return this._controlsVisibility||(this._controlsVisibility={}),this._controlsVisibility[t]=e,this},setControlsVisibility:function(t){for(var e in t||(t={}),t)this.setControlVisible(e,t[e]);return this},onDeselect:function(){},onSelect:function(){}})}(),S.util.object.extend(S.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(t,e){var i=function(){},r=(e=e||{}).onComplete||i,n=e.onChange||i,s=this;return S.util.animate({target:this,startValue:t.left,endValue:this.getCenterPoint().x,duration:this.FX_DURATION,onChange:function(e){t.set("left",e),s.requestRenderAll(),n()},onComplete:function(){t.setCoords(),r()}})},fxCenterObjectV:function(t,e){var i=function(){},r=(e=e||{}).onComplete||i,n=e.onChange||i,s=this;return S.util.animate({target:this,startValue:t.top,endValue:this.getCenterPoint().y,duration:this.FX_DURATION,onChange:function(e){t.set("top",e),s.requestRenderAll(),n()},onComplete:function(){t.setCoords(),r()}})},fxRemove:function(t,e){var i=function(){},r=(e=e||{}).onComplete||i,n=e.onChange||i,s=this;return S.util.animate({target:this,startValue:t.opacity,endValue:0,duration:this.FX_DURATION,onChange:function(e){t.set("opacity",e),s.requestRenderAll(),n()},onComplete:function(){s.remove(t),r()}})}}),S.util.object.extend(S.Object.prototype,{animate:function(){if(arguments[0]&&"object"==typeof arguments[0]){var t,e,i=[],r=[];for(t in arguments[0])i.push(t);for(var n=0,s=i.length;n-1||n&&s.colorProperties.indexOf(n[1])>-1,a=n?this.get(n[0])[n[1]]:this.get(t);"from"in i||(i.from=a),o||(e=~e.indexOf("=")?a+parseFloat(e.replace("=","")):parseFloat(e));var h={target:this,startValue:i.from,endValue:e,byValue:i.by,easing:i.easing,duration:i.duration,abort:i.abort&&function(t,e,r){return i.abort.call(s,t,e,r)},onChange:function(e,o,a){n?s[n[0]][n[1]]=e:s.set(t,e),r||i.onChange&&i.onChange(e,o,a)},onComplete:function(t,e,n){r||(s.setCoords(),i.onComplete&&i.onComplete(t,e,n))}};return o?S.util.animateColor(h.startValue,h.endValue,h.duration,h):S.util.animate(h)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.object.clone,n={x1:1,x2:1,y1:1,y2:1};function s(t,e){var i=t.origin,r=t.axis1,n=t.axis2,s=t.dimension,o=e.nearest,a=e.center,h=e.farthest;return function(){switch(this.get(i)){case o:return Math.min(this.get(r),this.get(n));case a:return Math.min(this.get(r),this.get(n))+.5*this.get(s);case h:return Math.max(this.get(r),this.get(n))}}}e.Line?e.warn("fabric.Line is already defined"):(e.Line=e.util.createClass(e.Object,{type:"line",x1:0,y1:0,x2:0,y2:0,cacheProperties:e.Object.prototype.cacheProperties.concat("x1","x2","y1","y2"),initialize:function(t,e){t||(t=[0,0,0,0]),this.callSuper("initialize",e),this.set("x1",t[0]),this.set("y1",t[1]),this.set("x2",t[2]),this.set("y2",t[3]),this._setWidthHeight(e)},_setWidthHeight:function(t){t||(t={}),this.width=Math.abs(this.x2-this.x1),this.height=Math.abs(this.y2-this.y1),this.left="left"in t?t.left:this._getLeftToOriginX(),this.top="top"in t?t.top:this._getTopToOriginY()},_set:function(t,e){return this.callSuper("_set",t,e),void 0!==n[t]&&this._setWidthHeight(),this},_getLeftToOriginX:s({origin:"originX",axis1:"x1",axis2:"x2",dimension:"width"},{nearest:"left",center:"center",farthest:"right"}),_getTopToOriginY:s({origin:"originY",axis1:"y1",axis2:"y2",dimension:"height"},{nearest:"top",center:"center",farthest:"bottom"}),_render:function(t){t.beginPath();var e=this.calcLinePoints();t.moveTo(e.x1,e.y1),t.lineTo(e.x2,e.y2),t.lineWidth=this.strokeWidth;var i=t.strokeStyle;t.strokeStyle=this.stroke||t.fillStyle,this.stroke&&this._renderStroke(t),t.strokeStyle=i},_findCenterFromElement:function(){return{x:(this.x1+this.x2)/2,y:(this.y1+this.y2)/2}},toObject:function(t){return i(this.callSuper("toObject",t),this.calcLinePoints())},_getNonTransformedDimensions:function(){var t=this.callSuper("_getNonTransformedDimensions");return"butt"===this.strokeLineCap&&(0===this.width&&(t.y-=this.strokeWidth),0===this.height&&(t.x-=this.strokeWidth)),t},calcLinePoints:function(){var t=this.x1<=this.x2?-1:1,e=this.y1<=this.y2?-1:1,i=t*this.width*.5,r=e*this.height*.5;return{x1:i,x2:t*this.width*-.5,y1:r,y2:e*this.height*-.5}},_toSVG:function(){var t=this.calcLinePoints();return["\n']}}),e.Line.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),e.Line.fromElement=function(t,r,n){n=n||{};var s=e.parseAttributes(t,e.Line.ATTRIBUTE_NAMES),o=[s.x1||0,s.y1||0,s.x2||0,s.y2||0];r(new e.Line(o,i(s,n)))},e.Line.fromObject=function(t,i){var n=r(t,!0);n.points=[t.x1,t.y1,t.x2,t.y2],e.Object._fromObject("Line",n,(function(t){delete t.points,i&&i(t)}),"points")})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.degreesToRadians;e.Circle?e.warn("fabric.Circle is already defined."):(e.Circle=e.util.createClass(e.Object,{type:"circle",radius:0,startAngle:0,endAngle:360,cacheProperties:e.Object.prototype.cacheProperties.concat("radius","startAngle","endAngle"),_set:function(t,e){return this.callSuper("_set",t,e),"radius"===t&&this.setRadius(e),this},toObject:function(t){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(t))},_toSVG:function(){var t,r=(this.endAngle-this.startAngle)%360;if(0===r)t=["\n'];else{var n=i(this.startAngle),s=i(this.endAngle),o=this.radius;t=['180?"1":"0")+" 1"," "+e.util.cos(s)*o+" "+e.util.sin(s)*o,'" ',"COMMON_PARTS"," />\n"]}return t},_render:function(t){t.beginPath(),t.arc(0,0,this.radius,i(this.startAngle),i(this.endAngle),!1),this._renderPaintInOrder(t)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(t){return this.radius=t,this.set("width",2*t).set("height",2*t)}}),e.Circle.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),e.Circle.fromElement=function(t,i){var r,n=e.parseAttributes(t,e.Circle.ATTRIBUTE_NAMES);if(!("radius"in(r=n)&&r.radius>=0))throw new Error("value of `r` attribute is required and can not be negative");n.left=(n.left||0)-n.radius,n.top=(n.top||0)-n.radius,i(new e.Circle(n))},e.Circle.fromObject=function(t,i){e.Object._fromObject("Circle",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={});e.Triangle?e.warn("fabric.Triangle is already defined"):(e.Triangle=e.util.createClass(e.Object,{type:"triangle",width:100,height:100,_render:function(t){var e=this.width/2,i=this.height/2;t.beginPath(),t.moveTo(-e,i),t.lineTo(0,-i),t.lineTo(e,i),t.closePath(),this._renderPaintInOrder(t)},_toSVG:function(){var t=this.width/2,e=this.height/2;return["']}}),e.Triangle.fromObject=function(t,i){return e.Object._fromObject("Triangle",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=2*Math.PI;e.Ellipse?e.warn("fabric.Ellipse is already defined."):(e.Ellipse=e.util.createClass(e.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:e.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this.set("rx",t&&t.rx||0),this.set("ry",t&&t.ry||0)},_set:function(t,e){switch(this.callSuper("_set",t,e),t){case"rx":this.rx=e,this.set("width",2*e);break;case"ry":this.ry=e,this.set("height",2*e)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']},_render:function(t){t.beginPath(),t.save(),t.transform(1,0,0,this.ry/this.rx,0,0),t.arc(0,0,this.rx,0,i,!1),t.restore(),this._renderPaintInOrder(t)}}),e.Ellipse.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),e.Ellipse.fromElement=function(t,i){var r=e.parseAttributes(t,e.Ellipse.ATTRIBUTE_NAMES);r.left=(r.left||0)-r.rx,r.top=(r.top||0)-r.ry,i(new e.Ellipse(r))},e.Ellipse.fromObject=function(t,i){e.Object._fromObject("Ellipse",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend;e.Rect?e.warn("fabric.Rect is already defined"):(e.Rect=e.util.createClass(e.Object,{stateProperties:e.Object.prototype.stateProperties.concat("rx","ry"),type:"rect",rx:0,ry:0,cacheProperties:e.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(t){var e=this.rx?Math.min(this.rx,this.width/2):0,i=this.ry?Math.min(this.ry,this.height/2):0,r=this.width,n=this.height,s=-this.width/2,o=-this.height/2,a=0!==e||0!==i,h=.4477152502;t.beginPath(),t.moveTo(s+e,o),t.lineTo(s+r-e,o),a&&t.bezierCurveTo(s+r-h*e,o,s+r,o+h*i,s+r,o+i),t.lineTo(s+r,o+n-i),a&&t.bezierCurveTo(s+r,o+n-h*i,s+r-h*e,o+n,s+r-e,o+n),t.lineTo(s+e,o+n),a&&t.bezierCurveTo(s+h*e,o+n,s,o+n-h*i,s,o+n-i),t.lineTo(s,o+i),a&&t.bezierCurveTo(s,o+h*i,s+h*e,o,s+e,o),t.closePath(),this._renderPaintInOrder(t)},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']}}),e.Rect.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),e.Rect.fromElement=function(t,r,n){if(!t)return r(null);n=n||{};var s=e.parseAttributes(t,e.Rect.ATTRIBUTE_NAMES);s.left=s.left||0,s.top=s.top||0,s.height=s.height||0,s.width=s.width||0;var o=new e.Rect(i(n?e.util.object.clone(n):{},s));o.visible=o.visible&&o.width>0&&o.height>0,r(o)},e.Rect.fromObject=function(t,i){return e.Object._fromObject("Rect",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.array.min,n=e.util.array.max,s=e.util.toFixed,o=e.util.projectStrokeOnPoints;e.Polyline?e.warn("fabric.Polyline is already defined"):(e.Polyline=e.util.createClass(e.Object,{type:"polyline",points:null,exactBoundingBox:!1,cacheProperties:e.Object.prototype.cacheProperties.concat("points"),initialize:function(t,e){e=e||{},this.points=t||[],this.callSuper("initialize",e),this._setPositionDimensions(e)},_projectStrokeOnPoints:function(){return o(this.points,this,!0)},_setPositionDimensions:function(t){var e,i=this._calcDimensions(t),r=this.exactBoundingBox?this.strokeWidth:0;this.width=i.width-r,this.height=i.height-r,t.fromSVG||(e=this.translateToGivenOrigin({x:i.left-this.strokeWidth/2+r/2,y:i.top-this.strokeWidth/2+r/2},"left","top",this.originX,this.originY)),void 0===t.left&&(this.left=t.fromSVG?i.left:e.x),void 0===t.top&&(this.top=t.fromSVG?i.top:e.y),this.pathOffset={x:i.left+this.width/2+r/2,y:i.top+this.height/2+r/2}},_calcDimensions:function(){var t=this.exactBoundingBox?this._projectStrokeOnPoints():this.points,e=r(t,"x")||0,i=r(t,"y")||0;return{left:e,top:i,width:(n(t,"x")||0)-e,height:(n(t,"y")||0)-i}},toObject:function(t){return i(this.callSuper("toObject",t),{points:this.points.concat()})},_toSVG:function(){for(var t=[],i=this.pathOffset.x,r=this.pathOffset.y,n=e.Object.NUM_FRACTION_DIGITS,o=0,a=this.points.length;o\n']},commonRender:function(t){var e,i=this.points.length,r=this.pathOffset.x,n=this.pathOffset.y;if(!i||isNaN(this.points[i-1].y))return!1;t.beginPath(),t.moveTo(this.points[0].x-r,this.points[0].y-n);for(var s=0;s"},toObject:function(t){return n(this.callSuper("toObject",t),{path:this.path.map((function(t){return t.slice()}))})},toDatalessObject:function(t){var e=this.toObject(["sourcePath"].concat(t));return e.sourcePath&&delete e.path,e},_toSVG:function(){return["\n"]},_getOffsetTransform:function(){var t=e.Object.NUM_FRACTION_DIGITS;return" translate("+o(-this.pathOffset.x,t)+", "+o(-this.pathOffset.y,t)+")"},toClipPathSVG:function(t){var e=this._getOffsetTransform();return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},toSVG:function(t){var e=this._getOffsetTransform();return this._createBaseSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},complexity:function(){return this.path.length},_calcDimensions:function(){for(var t,n,s=[],o=[],a=0,h=0,l=0,c=0,u=0,d=this.path.length;u"},addWithUpdate:function(t){var i=!!this.group;return this._restoreObjectsState(),e.util.resetObjectTransform(this),t&&(i&&e.util.removeTransformFromObject(t,this.group.calcTransformMatrix()),this._objects.push(t),t.group=this,t._set("canvas",this.canvas)),this._calcBounds(),this._updateObjectsCoords(),this.dirty=!0,i?this.group.addWithUpdate():this.setCoords(),this},removeWithUpdate:function(t){return this._restoreObjectsState(),e.util.resetObjectTransform(this),this.remove(t),this._calcBounds(),this._updateObjectsCoords(),this.setCoords(),this.dirty=!0,this},_onObjectAdded:function(t){this.dirty=!0,t.group=this,t._set("canvas",this.canvas)},_onObjectRemoved:function(t){this.dirty=!0,delete t.group},_set:function(t,i){var r=this._objects.length;if(this.useSetOnGroup)for(;r--;)this._objects[r].setOnGroup(t,i);if("canvas"===t)for(;r--;)this._objects[r]._set(t,i);e.Object.prototype._set.call(this,t,i)},toObject:function(t){var i=this.includeDefaultValues,r=this._objects.filter((function(t){return!t.excludeFromExport})).map((function(e){var r=e.includeDefaultValues;e.includeDefaultValues=i;var n=e.toObject(t);return e.includeDefaultValues=r,n})),n=e.Object.prototype.toObject.call(this,t);return n.objects=r,n},toDatalessObject:function(t){var i,r=this.sourcePath;if(r)i=r;else{var n=this.includeDefaultValues;i=this._objects.map((function(e){var i=e.includeDefaultValues;e.includeDefaultValues=n;var r=e.toDatalessObject(t);return e.includeDefaultValues=i,r}))}var s=e.Object.prototype.toDatalessObject.call(this,t);return s.objects=i,s},render:function(t){this._transformDone=!0,this.callSuper("render",t),this._transformDone=!1},shouldCache:function(){var t=e.Object.prototype.shouldCache.call(this);if(t)for(var i=0,r=this._objects.length;i\n"],i=0,r=this._objects.length;i\n"),e},getSvgStyles:function(){var t=void 0!==this.opacity&&1!==this.opacity?"opacity: "+this.opacity+";":"",e=this.visible?"":" visibility: hidden;";return[t,this.getSvgFilter(),e].join("")},toClipPathSVG:function(t){for(var e=[],i=0,r=this._objects.length;i"},shouldCache:function(){return!1},isOnACache:function(){return!1},_renderControls:function(t,e,i){t.save(),t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,this.callSuper("_renderControls",t,e),void 0===(i=i||{}).hasControls&&(i.hasControls=!1),i.forActiveSelection=!0;for(var r=0,n=this._objects.length;r\n','\t\n',"\n"),o=' clip-path="url(#imageCrop_'+h+')" '}if(this.imageSmoothing||(a='" image-rendering="optimizeSpeed'),i.push("\t\n"),this.stroke||this.strokeDashArray){var l=this.fill;this.fill=null,t=["\t\n'],this.fill=l}return"fill"!==this.paintFirst?e.concat(t,i):e.concat(i,t)},getSrc:function(t){var e=t?this._element:this._originalElement;return e?e.toDataURL?e.toDataURL():this.srcFromAttribute?e.getAttribute("src"):e.src:this.src||""},setSrc:function(t,e,i){return S.util.loadImage(t,(function(t,r){this.setElement(t,i),this._setWidthHeight(),e&&e(this,r)}),this,i&&i.crossOrigin),this},toString:function(){return'#'},applyResizeFilters:function(){var t=this.resizeFilter,e=this.minimumScaleTrigger,i=this.getTotalObjectScaling(),r=i.scaleX,n=i.scaleY,s=this._filteredEl||this._originalElement;if(this.group&&this.set("dirty",!0),!t||r>e&&n>e)return this._element=s,this._filterScalingX=1,this._filterScalingY=1,this._lastScaleX=r,void(this._lastScaleY=n);S.filterBackend||(S.filterBackend=S.initFilterBackend());var o=S.util.createCanvasElement(),a=this._filteredEl?this.cacheKey+"_filtered":this.cacheKey,h=s.width,l=s.height;o.width=h,o.height=l,this._element=o,this._lastScaleX=t.scaleX=r,this._lastScaleY=t.scaleY=n,S.filterBackend.applyFilters([t],s,h,l,this._element,a),this._filterScalingX=o.width/this._originalElement.width,this._filterScalingY=o.height/this._originalElement.height},applyFilters:function(t){if(t=(t=t||this.filters||[]).filter((function(t){return t&&!t.isNeutralState()})),this.set("dirty",!0),this.removeTexture(this.cacheKey+"_filtered"),0===t.length)return this._element=this._originalElement,this._filteredEl=null,this._filterScalingX=1,this._filterScalingY=1,this;var e=this._originalElement,i=e.naturalWidth||e.width,r=e.naturalHeight||e.height;if(this._element===this._originalElement){var n=S.util.createCanvasElement();n.width=i,n.height=r,this._element=n,this._filteredEl=n}else this._element=this._filteredEl,this._filteredEl.getContext("2d").clearRect(0,0,i,r),this._lastScaleX=1,this._lastScaleY=1;return S.filterBackend||(S.filterBackend=S.initFilterBackend()),S.filterBackend.applyFilters(t,this._originalElement,i,r,this._element,this.cacheKey),this._originalElement.width===this._element.width&&this._originalElement.height===this._element.height||(this._filterScalingX=this._element.width/this._originalElement.width,this._filterScalingY=this._element.height/this._originalElement.height),this},_render:function(t){S.util.setImageSmoothing(t,this.imageSmoothing),!0!==this.isMoving&&this.resizeFilter&&this._needsResize()&&this.applyResizeFilters(),this._stroke(t),this._renderPaintInOrder(t)},drawCacheOnCanvas:function(t){S.util.setImageSmoothing(t,this.imageSmoothing),S.Object.prototype.drawCacheOnCanvas.call(this,t)},shouldCache:function(){return this.needsItsOwnCache()},_renderFill:function(t){var e=this._element;if(e){var i=this._filterScalingX,r=this._filterScalingY,n=this.width,s=this.height,o=Math.min,a=Math.max,h=a(this.cropX,0),l=a(this.cropY,0),c=e.naturalWidth||e.width,u=e.naturalHeight||e.height,d=h*i,f=l*r,g=o(n*i,c-d),m=o(s*r,u-f),p=-n/2,_=-s/2,v=o(n,c/i-h),y=o(s,u/r-l);e&&t.drawImage(e,d,f,g,m,p,_,v,y)}},_needsResize:function(){var t=this.getTotalObjectScaling();return t.scaleX!==this._lastScaleX||t.scaleY!==this._lastScaleY},_resetWidthHeight:function(){this.set(this.getOriginalSize())},_initElement:function(t,e){this.setElement(S.util.getById(t),e),S.util.addClass(this.getElement(),S.Image.CSS_CANVAS)},_initConfig:function(t){t||(t={}),this.setOptions(t),this._setWidthHeight(t)},_initFilters:function(t,e){t&&t.length?S.util.enlivenObjects(t,(function(t){e&&e(t)}),"fabric.Image.filters"):e&&e()},_setWidthHeight:function(t){t||(t={});var e=this.getElement();this.width=t.width||e.naturalWidth||e.width||0,this.height=t.height||e.naturalHeight||e.height||0},parsePreserveAspectRatioAttribute:function(){var t,e=S.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio||""),i=this._element.width,r=this._element.height,n=1,s=1,o=0,a=0,h=0,l=0,c=this.width,u=this.height,d={width:c,height:u};return!e||"none"===e.alignX&&"none"===e.alignY?(n=c/i,s=u/r):("meet"===e.meetOrSlice&&(t=(c-i*(n=s=S.util.findScaleToFit(this._element,d)))/2,"Min"===e.alignX&&(o=-t),"Max"===e.alignX&&(o=t),t=(u-r*s)/2,"Min"===e.alignY&&(a=-t),"Max"===e.alignY&&(a=t)),"slice"===e.meetOrSlice&&(t=i-c/(n=s=S.util.findScaleToCover(this._element,d)),"Mid"===e.alignX&&(h=t/2),"Max"===e.alignX&&(h=t),t=r-u/s,"Mid"===e.alignY&&(l=t/2),"Max"===e.alignY&&(l=t),i=c/n,r=u/s)),{width:i,height:r,scaleX:n,scaleY:s,offsetLeft:o,offsetTop:a,cropX:h,cropY:l}}}),S.Image.CSS_CANVAS="canvas-img",S.Image.prototype.getSvgSrc=S.Image.prototype.getSrc,S.Image.fromObject=function(t,e){var i=S.util.object.clone(t);S.util.loadImage(i.src,(function(t,r){r?e&&e(null,!0):S.Image.prototype._initFilters.call(i,i.filters,(function(r){i.filters=r||[],S.Image.prototype._initFilters.call(i,[i.resizeFilter],(function(r){i.resizeFilter=r[0],S.util.enlivenObjectEnlivables(i,i,(function(){var r=new S.Image(t,i);e(r,!1)}))}))}))}),null,i.crossOrigin)},S.Image.fromURL=function(t,e,i){S.util.loadImage(t,(function(t,r){e&&e(new S.Image(t,i),r)}),null,i&&i.crossOrigin)},S.Image.ATTRIBUTE_NAMES=S.SHARED_ATTRIBUTES.concat("x y width height preserveAspectRatio xlink:href crossOrigin image-rendering".split(" ")),S.Image.fromElement=function(t,i,r){var n=S.parseAttributes(t,S.Image.ATTRIBUTE_NAMES);S.Image.fromURL(n["xlink:href"],i,e(r?S.util.object.clone(r):{},n))})}(e),S.util.object.extend(S.Object.prototype,{_getAngleValueForStraighten:function(){var t=this.angle%360;return t>0?90*Math.round((t-1)/90):90*Math.round(t/90)},straighten:function(){return this.rotate(this._getAngleValueForStraighten())},fxStraighten:function(t){var e=function(){},i=(t=t||{}).onComplete||e,r=t.onChange||e,n=this;return S.util.animate({target:this,startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(t){n.rotate(t),r()},onComplete:function(){n.setCoords(),i()}})}}),S.util.object.extend(S.StaticCanvas.prototype,{straightenObject:function(t){return t.straighten(),this.requestRenderAll(),this},fxStraightenObject:function(t){return t.fxStraighten({onChange:this.requestRenderAllBound})}}),function(){function t(t,e){var i="precision "+e+" float;\nvoid main(){}",r=t.createShader(t.FRAGMENT_SHADER);return t.shaderSource(r,i),t.compileShader(r),!!t.getShaderParameter(r,t.COMPILE_STATUS)}function e(t){t&&t.tileSize&&(this.tileSize=t.tileSize),this.setupGLContext(this.tileSize,this.tileSize),this.captureGPUInfo()}S.isWebglSupported=function(e){if(S.isLikelyNode)return!1;e=e||S.WebglFilterBackend.prototype.tileSize;var i=document.createElement("canvas"),r=i.getContext("webgl")||i.getContext("experimental-webgl"),n=!1;if(r){S.maxTextureSize=r.getParameter(r.MAX_TEXTURE_SIZE),n=S.maxTextureSize>=e;for(var s=["highp","mediump","lowp"],o=0;o<3;o++)if(t(r,s[o])){S.webGlPrecision=s[o];break}}return this.isSupported=n,n},S.WebglFilterBackend=e,e.prototype={tileSize:2048,resources:{},setupGLContext:function(t,e){this.dispose(),this.createWebGLCanvas(t,e),this.aPosition=new Float32Array([0,0,0,1,1,0,1,1]),this.chooseFastestCopyGLTo2DMethod(t,e)},chooseFastestCopyGLTo2DMethod:function(t,e){var i,r=void 0!==window.performance;try{new ImageData(1,1),i=!0}catch(t){i=!1}var n="undefined"!=typeof ArrayBuffer,s="undefined"!=typeof Uint8ClampedArray;if(r&&i&&n&&s){var o=S.util.createCanvasElement(),a=new ArrayBuffer(t*e*4);if(S.forceGLPutImageData)return this.imageBuffer=a,void(this.copyGLTo2D=x);var h,l,c={imageBuffer:a,destinationWidth:t,destinationHeight:e,targetCanvas:o};o.width=t,o.height=e,h=window.performance.now(),I.call(c,this.gl,c),l=window.performance.now()-h,h=window.performance.now(),x.call(c,this.gl,c),l>window.performance.now()-h?(this.imageBuffer=a,this.copyGLTo2D=x):this.copyGLTo2D=I}},createWebGLCanvas:function(t,e){var i=S.util.createCanvasElement();i.width=t,i.height=e;var r={alpha:!0,premultipliedAlpha:!1,depth:!1,stencil:!1,antialias:!1},n=i.getContext("webgl",r);n||(n=i.getContext("experimental-webgl",r)),n&&(n.clearColor(0,0,0,0),this.canvas=i,this.gl=n)},applyFilters:function(t,e,i,r,n,s){var o,a=this.gl;s&&(o=this.getCachedTexture(s,e));var h={originalWidth:e.width||e.originalWidth,originalHeight:e.height||e.originalHeight,sourceWidth:i,sourceHeight:r,destinationWidth:i,destinationHeight:r,context:a,sourceTexture:this.createTexture(a,i,r,!o&&e),targetTexture:this.createTexture(a,i,r),originalTexture:o||this.createTexture(a,i,r,!o&&e),passes:t.length,webgl:!0,aPosition:this.aPosition,programCache:this.programCache,pass:0,filterBackend:this,targetCanvas:n},l=a.createFramebuffer();return a.bindFramebuffer(a.FRAMEBUFFER,l),t.forEach((function(t){t&&t.applyTo(h)})),function(t){var e=t.targetCanvas,i=e.width,r=e.height,n=t.destinationWidth,s=t.destinationHeight;i===n&&r===s||(e.width=n,e.height=s)}(h),this.copyGLTo2D(a,h),a.bindTexture(a.TEXTURE_2D,null),a.deleteTexture(h.sourceTexture),a.deleteTexture(h.targetTexture),a.deleteFramebuffer(l),n.getContext("2d").setTransform(1,0,0,1,0,0),h},dispose:function(){this.canvas&&(this.canvas=null,this.gl=null),this.clearWebGLCaches()},clearWebGLCaches:function(){this.programCache={},this.textureCache={}},createTexture:function(t,e,i,r){var n=t.createTexture();return t.bindTexture(t.TEXTURE_2D,n),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),r?t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,r):t.texImage2D(t.TEXTURE_2D,0,t.RGBA,e,i,0,t.RGBA,t.UNSIGNED_BYTE,null),n},getCachedTexture:function(t,e){if(this.textureCache[t])return this.textureCache[t];var i=this.createTexture(this.gl,e.width,e.height,e);return this.textureCache[t]=i,i},evictCachesForKey:function(t){this.textureCache[t]&&(this.gl.deleteTexture(this.textureCache[t]),delete this.textureCache[t])},copyGLTo2D:I,captureGPUInfo:function(){if(this.gpuInfo)return this.gpuInfo;var t=this.gl,e={renderer:"",vendor:""};if(!t)return e;var i=t.getExtension("WEBGL_debug_renderer_info");if(i){var r=t.getParameter(i.UNMASKED_RENDERER_WEBGL),n=t.getParameter(i.UNMASKED_VENDOR_WEBGL);r&&(e.renderer=r.toLowerCase()),n&&(e.vendor=n.toLowerCase())}return this.gpuInfo=e,e}}}(),function(){var t=function(){};function e(){}S.Canvas2dFilterBackend=e,e.prototype={evictCachesForKey:t,dispose:t,clearWebGLCaches:t,resources:{},applyFilters:function(t,e,i,r,n){var s=n.getContext("2d");s.drawImage(e,0,0,i,r);var o={sourceWidth:i,sourceHeight:r,imageData:s.getImageData(0,0,i,r),originalEl:e,originalImageData:s.getImageData(0,0,i,r),canvasEl:n,ctx:s,filterBackend:this};return t.forEach((function(t){t.applyTo(o)})),o.imageData.width===i&&o.imageData.height===r||(n.width=o.imageData.width,n.height=o.imageData.height),s.putImageData(o.imageData,0,0),o}}}(),S.Image=S.Image||{},S.Image.filters=S.Image.filters||{},S.Image.filters.BaseFilter=S.util.createClass({type:"BaseFilter",vertexSource:"attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvoid main() {\nvTexCoord = aPosition;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",fragmentSource:"precision highp float;\nvarying vec2 vTexCoord;\nuniform sampler2D uTexture;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\n}",initialize:function(t){t&&this.setOptions(t)},setOptions:function(t){for(var e in t)this[e]=t[e]},createProgram:function(t,e,i){e=e||this.fragmentSource,i=i||this.vertexSource,"highp"!==S.webGlPrecision&&(e=e.replace(/precision highp float/g,"precision "+S.webGlPrecision+" float"));var r=t.createShader(t.VERTEX_SHADER);if(t.shaderSource(r,i),t.compileShader(r),!t.getShaderParameter(r,t.COMPILE_STATUS))throw new Error("Vertex shader compile error for "+this.type+": "+t.getShaderInfoLog(r));var n=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(n,e),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS))throw new Error("Fragment shader compile error for "+this.type+": "+t.getShaderInfoLog(n));var s=t.createProgram();if(t.attachShader(s,r),t.attachShader(s,n),t.linkProgram(s),!t.getProgramParameter(s,t.LINK_STATUS))throw new Error('Shader link error for "${this.type}" '+t.getProgramInfoLog(s));var o=this.getAttributeLocations(t,s),a=this.getUniformLocations(t,s)||{};return a.uStepW=t.getUniformLocation(s,"uStepW"),a.uStepH=t.getUniformLocation(s,"uStepH"),{program:s,attributeLocations:o,uniformLocations:a}},getAttributeLocations:function(t,e){return{aPosition:t.getAttribLocation(e,"aPosition")}},getUniformLocations:function(){return{}},sendAttributeData:function(t,e,i){var r=e.aPosition,n=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,n),t.enableVertexAttribArray(r),t.vertexAttribPointer(r,2,t.FLOAT,!1,0,0),t.bufferData(t.ARRAY_BUFFER,i,t.STATIC_DRAW)},_setupFrameBuffer:function(t){var e,i,r=t.context;t.passes>1?(e=t.destinationWidth,i=t.destinationHeight,t.sourceWidth===e&&t.sourceHeight===i||(r.deleteTexture(t.targetTexture),t.targetTexture=t.filterBackend.createTexture(r,e,i)),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,t.targetTexture,0)):(r.bindFramebuffer(r.FRAMEBUFFER,null),r.finish())},_swapTextures:function(t){t.passes--,t.pass++;var e=t.targetTexture;t.targetTexture=t.sourceTexture,t.sourceTexture=e},isNeutralState:function(){var t=this.mainParameter,e=S.Image.filters[this.type].prototype;if(t){if(Array.isArray(e[t])){for(var i=e[t].length;i--;)if(this[t][i]!==e[t][i])return!1;return!0}return e[t]===this[t]}return!1},applyTo:function(t){t.webgl?(this._setupFrameBuffer(t),this.applyToWebGL(t),this._swapTextures(t)):this.applyTo2d(t)},retrieveShader:function(t){return t.programCache.hasOwnProperty(this.type)||(t.programCache[this.type]=this.createProgram(t.context)),t.programCache[this.type]},applyToWebGL:function(t){var e=t.context,i=this.retrieveShader(t);0===t.pass&&t.originalTexture?e.bindTexture(e.TEXTURE_2D,t.originalTexture):e.bindTexture(e.TEXTURE_2D,t.sourceTexture),e.useProgram(i.program),this.sendAttributeData(e,i.attributeLocations,t.aPosition),e.uniform1f(i.uniformLocations.uStepW,1/t.sourceWidth),e.uniform1f(i.uniformLocations.uStepH,1/t.sourceHeight),this.sendUniformData(e,i.uniformLocations),e.viewport(0,0,t.destinationWidth,t.destinationHeight),e.drawArrays(e.TRIANGLE_STRIP,0,4)},bindAdditionalTexture:function(t,e,i){t.activeTexture(i),t.bindTexture(t.TEXTURE_2D,e),t.activeTexture(t.TEXTURE0)},unbindAdditionalTexture:function(t,e){t.activeTexture(e),t.bindTexture(t.TEXTURE_2D,null),t.activeTexture(t.TEXTURE0)},getMainParameter:function(){return this[this.mainParameter]},setMainParameter:function(t){this[this.mainParameter]=t},sendUniformData:function(){},createHelpLayer:function(t){if(!t.helpLayer){var e=document.createElement("canvas");e.width=t.sourceWidth,e.height=t.sourceHeight,t.helpLayer=e}},toObject:function(){var t={type:this.type},e=this.mainParameter;return e&&(t[e]=this[e]),t},toJSON:function(){return this.toObject()}}),S.Image.filters.BaseFilter.fromObject=function(t,e){var i=new S.Image.filters[t.type](t);return e&&e(i),i},function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,r=e.util.createClass;i.ColorMatrix=r(i.BaseFilter,{type:"ColorMatrix",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nuniform mat4 uColorMatrix;\nuniform vec4 uConstants;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor *= uColorMatrix;\ncolor += uConstants;\ngl_FragColor = color;\n}",matrix:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],mainParameter:"matrix",colorsOnly:!0,initialize:function(t){this.callSuper("initialize",t),this.matrix=this.matrix.slice(0)},applyTo2d:function(t){var e,i,r,n,s,o=t.imageData.data,a=o.length,h=this.matrix,l=this.colorsOnly;for(s=0;s=w||o<0||o>=y||(h=4*(a*y+o),l=p[f*_+d],e+=m[h]*l,i+=m[h+1]*l,r+=m[h+2]*l,T||(n+=m[h+3]*l));E[s]=e,E[s+1]=i,E[s+2]=r,E[s+3]=T?m[s+3]:n}t.imageData=C},getUniformLocations:function(t,e){return{uMatrix:t.getUniformLocation(e,"uMatrix"),uOpaque:t.getUniformLocation(e,"uOpaque"),uHalfSize:t.getUniformLocation(e,"uHalfSize"),uSize:t.getUniformLocation(e,"uSize")}},sendUniformData:function(t,e){t.uniform1fv(e.uMatrix,this.matrix)},toObject:function(){return i(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),e.Image.filters.Convolute.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,r=e.util.createClass;i.Grayscale=r(i.BaseFilter,{type:"Grayscale",fragmentSource:{average:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat average = (color.r + color.b + color.g) / 3.0;\ngl_FragColor = vec4(average, average, average, color.a);\n}",lightness:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\ngl_FragColor = vec4(average, average, average, col.a);\n}",luminosity:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\ngl_FragColor = vec4(average, average, average, col.a);\n}"},mode:"average",mainParameter:"mode",applyTo2d:function(t){var e,i,r=t.imageData.data,n=r.length,s=this.mode;for(e=0;el[0]&&n>l[1]&&s>l[2]&&r 0.0) {\n"+this.fragmentSource[t]+"}\n}"},retrieveShader:function(t){var e,i=this.type+"_"+this.mode;return t.programCache.hasOwnProperty(i)||(e=this.buildSource(this.mode),t.programCache[i]=this.createProgram(t.context,e)),t.programCache[i]},applyTo2d:function(t){var i,r,n,s,o,a,h,l=t.imageData.data,c=l.length,u=1-this.alpha;i=(h=new e.Color(this.color).getSource())[0]*this.alpha,r=h[1]*this.alpha,n=h[2]*this.alpha;for(var d=0;d=t||e<=-t)return 0;if(e<1.1920929e-7&&e>-1.1920929e-7)return 1;var i=(e*=Math.PI)/t;return a(e)/e*a(i)/i}},applyTo2d:function(t){var e=t.imageData,i=this.scaleX,r=this.scaleY;this.rcpScaleX=1/i,this.rcpScaleY=1/r;var n,s=e.width,a=e.height,h=o(s*i),l=o(a*r);"sliceHack"===this.resizeType?n=this.sliceByTwo(t,s,a,h,l):"hermite"===this.resizeType?n=this.hermiteFastResize(t,s,a,h,l):"bilinear"===this.resizeType?n=this.bilinearFiltering(t,s,a,h,l):"lanczos"===this.resizeType&&(n=this.lanczosResize(t,s,a,h,l)),t.imageData=n},sliceByTwo:function(t,i,n,s,o){var a,h,l=t.imageData,c=.5,u=!1,d=!1,f=i*c,g=n*c,m=e.filterBackend.resources,p=0,_=0,v=i,y=0;for(m.sliceByTwo||(m.sliceByTwo=document.createElement("canvas")),((a=m.sliceByTwo).width<1.5*i||a.height=e)){L=r(1e3*s(S-C.x)),w[L]||(w[L]={});for(var F=E.y-y;F<=E.y+y;F++)F<0||F>=o||(M=r(1e3*s(F-C.y)),w[L][M]||(w[L][M]=f(n(i(L*p,2)+i(M*_,2))/1e3)),(b=w[L][M])>0&&(x+=b,O+=b*c[I=4*(F*e+S)],A+=b*c[I+1],R+=b*c[I+2],D+=b*c[I+3]))}d[I=4*(T*a+h)]=O/x,d[I+1]=A/x,d[I+2]=R/x,d[I+3]=D/x}return++h1&&M<-1||(y=2*M*M*M-3*M*M+1)>0&&(b+=y*f[3+(L=4*(D+x*e))],C+=y,f[L+3]<255&&(y=y*f[L+3]/250),E+=y*f[L],T+=y*f[L+1],S+=y*f[L+2],w+=y)}m[v]=E/w,m[v+1]=T/w,m[v+2]=S/w,m[v+3]=b/C}return g},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),e.Image.filters.Resize.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,r=e.util.createClass;i.Contrast=r(i.BaseFilter,{type:"Contrast",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uContrast;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\ncolor.rgb = contrastF * (color.rgb - 0.5) + 0.5;\ngl_FragColor = color;\n}",contrast:0,mainParameter:"contrast",applyTo2d:function(t){if(0!==this.contrast){var e,i=t.imageData.data,r=i.length,n=Math.floor(255*this.contrast),s=259*(n+255)/(255*(259-n));for(e=0;e1&&(e=1/this.aspectRatio):this.aspectRatio<1&&(e=this.aspectRatio),t=e*this.blur*.12,this.horizontal?i[0]=t:i[1]=t,i}}),i.Blur.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,r=e.util.createClass;i.Gamma=r(i.BaseFilter,{type:"Gamma",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform vec3 uGamma;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec3 correction = (1.0 / uGamma);\ncolor.r = pow(color.r, correction.r);\ncolor.g = pow(color.g, correction.g);\ncolor.b = pow(color.b, correction.b);\ngl_FragColor = color;\ngl_FragColor.rgb *= color.a;\n}",gamma:[1,1,1],mainParameter:"gamma",initialize:function(t){this.gamma=[1,1,1],i.BaseFilter.prototype.initialize.call(this,t)},applyTo2d:function(t){var e,i=t.imageData.data,r=this.gamma,n=i.length,s=1/r[0],o=1/r[1],a=1/r[2];for(this.rVals||(this.rVals=new Uint8Array(256),this.gVals=new Uint8Array(256),this.bVals=new Uint8Array(256)),e=0,n=256;e'},_getCacheCanvasDimensions:function(){var t=this.callSuper("_getCacheCanvasDimensions"),e=this.fontSize;return t.width+=e*t.zoomX,t.height+=e*t.zoomY,t},_render:function(t){var e=this.path;e&&!e.isNotVisible()&&e._render(t),this._setTextStyles(t),this._renderTextLinesBackground(t),this._renderTextDecoration(t,"underline"),this._renderText(t),this._renderTextDecoration(t,"overline"),this._renderTextDecoration(t,"linethrough")},_renderText:function(t){"stroke"===this.paintFirst?(this._renderTextStroke(t),this._renderTextFill(t)):(this._renderTextFill(t),this._renderTextStroke(t))},_setTextStyles:function(t,e,i){if(t.textBaseline="alphabetical",this.path)switch(this.pathAlign){case"center":t.textBaseline="middle";break;case"ascender":t.textBaseline="top";break;case"descender":t.textBaseline="bottom"}t.font=this._getFontDeclaration(e,i)},calcTextWidth:function(){for(var t=this.getLineWidth(0),e=1,i=this._textLines.length;et&&(t=r)}return t},_renderTextLine:function(t,e,i,r,n,s){this._renderChars(t,e,i,r,n,s)},_renderTextLinesBackground:function(t){if(this.textBackgroundColor||this.styleHas("textBackgroundColor")){for(var e,i,r,n,s,o,a,h=t.fillStyle,l=this._getLeftOffset(),c=this._getTopOffset(),u=0,d=0,f=this.path,g=0,m=this._textLines.length;g=0:ia?u%=a:u<0&&(u+=a),this._setGraphemeOnPath(u,s,o),u+=s.kernedWidth}return{width:h,numOfSpaces:0}},_setGraphemeOnPath:function(t,i,r){var n=t+i.kernedWidth/2,s=this.path,o=e.util.getPointOnPath(s.path,n,s.segmentsInfo);i.renderLeft=o.x-r.x,i.renderTop=o.y-r.y,i.angle=o.angle+("right"===this.pathSide?Math.PI:0)},_getGraphemeBox:function(t,e,i,r,n){var s,o=this.getCompleteStyleDeclaration(e,i),a=r?this.getCompleteStyleDeclaration(e,i-1):{},h=this._measureChar(t,o,r,a),l=h.kernedWidth,c=h.width;0!==this.charSpacing&&(c+=s=this._getWidthOfCharSpacing(),l+=s);var u={width:c,left:0,height:o.fontSize,kernedWidth:l,deltaY:o.deltaY};if(i>0&&!n){var d=this.__charBounds[e][i-1];u.left=d.left+d.width+h.kernedWidth-h.width}return u},getHeightOfLine:function(t){if(this.__lineHeights[t])return this.__lineHeights[t];for(var e=this._textLines[t],i=this.getHeightOfChar(t,0),r=1,n=e.length;r0){var x=v+s+u;"rtl"===this.direction&&(x=this.width-x-d),l&&_&&(t.fillStyle=_,t.fillRect(x,c+E*r+o,d,this.fontSize/15)),u=f.left,d=f.width,l=g,_=p,r=n,o=a}else d+=f.kernedWidth;x=v+s+u,"rtl"===this.direction&&(x=this.width-x-d),t.fillStyle=p,g&&p&&t.fillRect(x,c+E*r+o,d-C,this.fontSize/15),y+=i}else y+=i;this._removeShadow(t)}},_getFontDeclaration:function(t,i){var r=t||this,n=this.fontFamily,s=e.Text.genericFonts.indexOf(n.toLowerCase())>-1,o=void 0===n||n.indexOf("'")>-1||n.indexOf(",")>-1||n.indexOf('"')>-1||s?r.fontFamily:'"'+r.fontFamily+'"';return[e.isLikelyNode?r.fontWeight:r.fontStyle,e.isLikelyNode?r.fontStyle:r.fontWeight,i?this.CACHE_FONT_SIZE+"px":r.fontSize+"px",o].join(" ")},render:function(t){this.visible&&(this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(this._shouldClearDimensionCache()&&this.initDimensions(),this.callSuper("render",t)))},_splitTextIntoLines:function(t){for(var i=t.split(this._reNewline),r=new Array(i.length),n=["\n"],s=[],o=0;o-1&&(t.underline=!0),t.textDecoration.indexOf("line-through")>-1&&(t.linethrough=!0),t.textDecoration.indexOf("overline")>-1&&(t.overline=!0),delete t.textDecoration)}S.IText=S.util.createClass(S.Text,S.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"",cursorDelay:1e3,cursorDuration:600,caching:!0,hiddenTextareaContainer:null,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,__widthOfSpace:[],inCompositionMode:!1,initialize:function(t,e){this.callSuper("initialize",t,e),this.initBehavior()},setSelectionStart:function(t){t=Math.max(t,0),this._updateAndFire("selectionStart",t)},setSelectionEnd:function(t){t=Math.min(t,this.text.length),this._updateAndFire("selectionEnd",t)},_updateAndFire:function(t,e){this[t]!==e&&(this._fireSelectionChanged(),this[t]=e),this._updateTextarea()},_fireSelectionChanged:function(){this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},initDimensions:function(){this.isEditing&&this.initDelayedCursor(),this.clearContextTop(),this.callSuper("initDimensions")},render:function(t){this.clearContextTop(),this.callSuper("render",t),this.cursorOffsetCache={},this.renderCursorOrSelection()},_render:function(t){this.callSuper("_render",t)},clearContextTop:function(t){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var e=this.canvas.contextTop,i=this.canvas.viewportTransform;e.save(),e.transform(i[0],i[1],i[2],i[3],i[4],i[5]),this.transform(e),this._clearTextArea(e),t||e.restore()}},renderCursorOrSelection:function(){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var t=this._getCursorBoundaries(),e=this.canvas.contextTop;this.clearContextTop(!0),this.selectionStart===this.selectionEnd?this.renderCursor(t,e):this.renderSelection(t,e),e.restore()}},_clearTextArea:function(t){var e=this.width+4,i=this.height+4;t.clearRect(-e/2,-i/2,e,i)},_getCursorBoundaries:function(t){void 0===t&&(t=this.selectionStart);var e=this._getLeftOffset(),i=this._getTopOffset(),r=this._getCursorBoundariesOffsets(t);return{left:e,top:i,leftOffset:r.left,topOffset:r.top}},_getCursorBoundariesOffsets:function(t){if(this.cursorOffsetCache&&"top"in this.cursorOffsetCache)return this.cursorOffsetCache;var e,i,r,n,s=0,o=0,a=this.get2DCursorLocation(t);r=a.charIndex,i=a.lineIndex;for(var h=0;h0?o:0)},"rtl"===this.direction&&(n.left*=-1),this.cursorOffsetCache=n,this.cursorOffsetCache},renderCursor:function(t,e){var i=this.get2DCursorLocation(),r=i.lineIndex,n=i.charIndex>0?i.charIndex-1:0,s=this.getValueOfPropertyAt(r,n,"fontSize"),o=this.scaleX*this.canvas.getZoom(),a=this.cursorWidth/o,h=t.topOffset,l=this.getValueOfPropertyAt(r,n,"deltaY");h+=(1-this._fontSizeFraction)*this.getHeightOfLine(r)/this.lineHeight-s*(1-this._fontSizeFraction),this.inCompositionMode&&this.renderSelection(t,e),e.fillStyle=this.cursorColor||this.getValueOfPropertyAt(r,n,"fill"),e.globalAlpha=this.__isMousedown?1:this._currentCursorOpacity,e.fillRect(t.left+t.leftOffset-a/2,h+t.top+l,a,s)},renderSelection:function(t,e){for(var i=this.inCompositionMode?this.hiddenTextarea.selectionStart:this.selectionStart,r=this.inCompositionMode?this.hiddenTextarea.selectionEnd:this.selectionEnd,n=-1!==this.textAlign.indexOf("justify"),s=this.get2DCursorLocation(i),o=this.get2DCursorLocation(r),a=s.lineIndex,h=o.lineIndex,l=s.charIndex<0?0:s.charIndex,c=o.charIndex<0?0:o.charIndex,u=a;u<=h;u++){var d,f=this._getLineLeftOffset(u)||0,g=this.getHeightOfLine(u),m=0,p=0;if(u===a&&(m=this.__charBounds[a][l].left),u>=a&&u1)&&(g/=this.lineHeight);var v=t.left+f+m,y=p-m,w=g,C=0;this.inCompositionMode?(e.fillStyle=this.compositionColor||"black",w=1,C=g):e.fillStyle=this.selectionColor,"rtl"===this.direction&&(v=this.width-v-y),e.fillRect(v,t.top+t.topOffset+C,y,w),t.topOffset+=d}},getCurrentCharFontSize:function(){var t=this._getCurrentCharIndex();return this.getValueOfPropertyAt(t.l,t.c,"fontSize")},getCurrentCharColor:function(){var t=this._getCurrentCharIndex();return this.getValueOfPropertyAt(t.l,t.c,"fill")},_getCurrentCharIndex:function(){var t=this.get2DCursorLocation(this.selectionStart,!0),e=t.charIndex>0?t.charIndex-1:0;return{l:t.lineIndex,c:e}}}),S.IText.fromObject=function(e,i){if(t(e),e.styles)for(var r in e.styles)for(var n in e.styles[r])t(e.styles[r][n]);S.Object._fromObject("IText",e,i,"text")}}(),T=S.util.object.clone,S.util.object.extend(S.IText.prototype,{initBehavior:function(){this.initAddedHandler(),this.initRemovedHandler(),this.initCursorSelectionHandlers(),this.initDoubleClickSimulation(),this.mouseMoveHandler=this.mouseMoveHandler.bind(this)},onDeselect:function(){this.isEditing&&this.exitEditing(),this.selected=!1},initAddedHandler:function(){var t=this;this.on("added",(function(){var e=t.canvas;e&&(e._hasITextHandlers||(e._hasITextHandlers=!0,t._initCanvasHandlers(e)),e._iTextInstances=e._iTextInstances||[],e._iTextInstances.push(t))}))},initRemovedHandler:function(){var t=this;this.on("removed",(function(){var e=t.canvas;e&&(e._iTextInstances=e._iTextInstances||[],S.util.removeFromArray(e._iTextInstances,t),0===e._iTextInstances.length&&(e._hasITextHandlers=!1,t._removeCanvasHandlers(e)))}))},_initCanvasHandlers:function(t){t._mouseUpITextHandler=function(){t._iTextInstances&&t._iTextInstances.forEach((function(t){t.__isMousedown=!1}))},t.on("mouse:up",t._mouseUpITextHandler)},_removeCanvasHandlers:function(t){t.off("mouse:up",t._mouseUpITextHandler)},_tick:function(){this._currentTickState=this._animateCursor(this,1,this.cursorDuration,"_onTickComplete")},_animateCursor:function(t,e,i,r){var n;return n={isAborted:!1,abort:function(){this.isAborted=!0}},t.animate("_currentCursorOpacity",e,{duration:i,onComplete:function(){n.isAborted||t[r]()},onChange:function(){t.canvas&&t.selectionStart===t.selectionEnd&&t.renderCursorOrSelection()},abort:function(){return n.isAborted}}),n},_onTickComplete:function(){var t=this;this._cursorTimeout1&&clearTimeout(this._cursorTimeout1),this._cursorTimeout1=setTimeout((function(){t._currentTickCompleteState=t._animateCursor(t,0,this.cursorDuration/2,"_tick")}),100)},initDelayedCursor:function(t){var e=this,i=t?0:this.cursorDelay;this.abortCursorAnimation(),this._currentCursorOpacity=1,this._cursorTimeout2=setTimeout((function(){e._tick()}),i)},abortCursorAnimation:function(){var t=this._currentTickState||this._currentTickCompleteState,e=this.canvas;this._currentTickState&&this._currentTickState.abort(),this._currentTickCompleteState&&this._currentTickCompleteState.abort(),clearTimeout(this._cursorTimeout1),clearTimeout(this._cursorTimeout2),this._currentCursorOpacity=0,t&&e&&e.clearContext(e.contextTop||e.contextContainer)},selectAll:function(){return this.selectionStart=0,this.selectionEnd=this._text.length,this._fireSelectionChanged(),this._updateTextarea(),this},getSelectedText:function(){return this._text.slice(this.selectionStart,this.selectionEnd).join("")},findWordBoundaryLeft:function(t){var e=0,i=t-1;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)e++,i--;for(;/\S/.test(this._text[i])&&i>-1;)e++,i--;return t-e},findWordBoundaryRight:function(t){var e=0,i=t;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)e++,i++;for(;/\S/.test(this._text[i])&&i-1;)e++,i--;return t-e},findLineBoundaryRight:function(t){for(var e=0,i=t;!/\n/.test(this._text[i])&&i0&&rthis.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=e):(this.selectionStart=e,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===i&&this.selectionEnd===r||(this.restartCursorIfNeeded(),this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},fromStringToGraphemeSelection:function(t,e,i){var r=i.slice(0,t),n=S.util.string.graphemeSplit(r).length;if(t===e)return{selectionStart:n,selectionEnd:n};var s=i.slice(t,e);return{selectionStart:n,selectionEnd:n+S.util.string.graphemeSplit(s).length}},fromGraphemeToStringSelection:function(t,e,i){var r=i.slice(0,t).join("").length;return t===e?{selectionStart:r,selectionEnd:r}:{selectionStart:r,selectionEnd:r+i.slice(t,e).join("").length}},_updateTextarea:function(){if(this.cursorOffsetCache={},this.hiddenTextarea){if(!this.inCompositionMode){var t=this.fromGraphemeToStringSelection(this.selectionStart,this.selectionEnd,this._text);this.hiddenTextarea.selectionStart=t.selectionStart,this.hiddenTextarea.selectionEnd=t.selectionEnd}this.updateTextareaPosition()}},updateFromTextArea:function(){if(this.hiddenTextarea){this.cursorOffsetCache={},this.text=this.hiddenTextarea.value,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords());var t=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value);this.selectionEnd=this.selectionStart=t.selectionEnd,this.inCompositionMode||(this.selectionStart=t.selectionStart),this.updateTextareaPosition()}},updateTextareaPosition:function(){if(this.selectionStart===this.selectionEnd){var t=this._calcTextareaPosition();this.hiddenTextarea.style.left=t.left,this.hiddenTextarea.style.top=t.top}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var t=this.inCompositionMode?this.compositionStart:this.selectionStart,e=this._getCursorBoundaries(t),i=this.get2DCursorLocation(t),r=i.lineIndex,n=i.charIndex,s=this.getValueOfPropertyAt(r,n,"fontSize")*this.lineHeight,o=e.leftOffset,a=this.calcTransformMatrix(),h={x:e.left+o,y:e.top+e.topOffset+s},l=this.canvas.getRetinaScaling(),c=this.canvas.upperCanvasEl,u=c.width/l,d=c.height/l,f=u-s,g=d-s,m=c.clientWidth/u,p=c.clientHeight/d;return h=S.util.transformPoint(h,a),(h=S.util.transformPoint(h,this.canvas.viewportTransform)).x*=m,h.y*=p,h.x<0&&(h.x=0),h.x>f&&(h.x=f),h.y<0&&(h.y=0),h.y>g&&(h.y=g),h.x+=this.canvas._offset.left,h.y+=this.canvas._offset.top,{left:h.x+"px",top:h.y+"px",fontSize:s+"px",charHeight:s}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,selectable:this.selectable,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.hoverCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.selectable=this._savedProps.selectable,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var t=this._textBeforeEdit!==this.text,e=this.hiddenTextarea;return this.selected=!1,this.isEditing=!1,this.selectionEnd=this.selectionStart,e&&(e.blur&&e.blur(),e.parentNode&&e.parentNode.removeChild(e)),this.hiddenTextarea=null,this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this.fire("editing:exited"),t&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),t&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var t in this.styles)this._textLines[t]||delete this.styles[t]},removeStyleFromTo:function(t,e){var i,r,n=this.get2DCursorLocation(t,!0),s=this.get2DCursorLocation(e,!0),o=n.lineIndex,a=n.charIndex,h=s.lineIndex,l=s.charIndex;if(o!==h){if(this.styles[o])for(i=a;i=l&&(r[c-d]=r[u],delete r[u])}},shiftLineStyles:function(t,e){var i=T(this.styles);for(var r in this.styles){var n=parseInt(r,10);n>t&&(this.styles[n+e]=i[n],i[n-e]||delete this.styles[n])}},restartCursorIfNeeded:function(){this._currentTickState&&!this._currentTickState.isAborted&&this._currentTickCompleteState&&!this._currentTickCompleteState.isAborted||this.initDelayedCursor()},insertNewlineStyleObject:function(t,e,i,r){var n,s={},o=!1,a=this._unwrappedTextLines[t].length===e;for(var h in i||(i=1),this.shiftLineStyles(t,i),this.styles[t]&&(n=this.styles[t][0===e?e:e-1]),this.styles[t]){var l=parseInt(h,10);l>=e&&(o=!0,s[l-e]=this.styles[t][h],a&&0===e||delete this.styles[t][h])}var c=!1;for(o&&!a&&(this.styles[t+i]=s,c=!0),c&&i--;i>0;)r&&r[i-1]?this.styles[t+i]={0:T(r[i-1])}:n?this.styles[t+i]={0:T(n)}:delete this.styles[t+i],i--;this._forceClearCache=!0},insertCharStyleObject:function(t,e,i,r){this.styles||(this.styles={});var n=this.styles[t],s=n?T(n):{};for(var o in i||(i=1),s){var a=parseInt(o,10);a>=e&&(n[a+i]=s[a],s[a-i]||delete n[a])}if(this._forceClearCache=!0,r)for(;i--;)Object.keys(r[i]).length&&(this.styles[t]||(this.styles[t]={}),this.styles[t][e+i]=T(r[i]));else if(n)for(var h=n[e?e-1:1];h&&i--;)this.styles[t][e+i]=T(h)},insertNewStyleBlock:function(t,e,i){for(var r=this.get2DCursorLocation(e,!0),n=[0],s=0,o=0;o0&&(this.insertCharStyleObject(r.lineIndex,r.charIndex,n[0],i),i=i&&i.slice(n[0]+1)),s&&this.insertNewlineStyleObject(r.lineIndex,r.charIndex+n[0],s),o=1;o0?this.insertCharStyleObject(r.lineIndex+o,0,n[o],i):i&&this.styles[r.lineIndex+o]&&i[0]&&(this.styles[r.lineIndex+o][0]=i[0]),i=i&&i.slice(n[o]+1);n[o]>0&&this.insertCharStyleObject(r.lineIndex+o,0,n[o],i)},setSelectionStartEndWithShift:function(t,e,i){i<=t?(e===t?this._selectionDirection="left":"right"===this._selectionDirection&&(this._selectionDirection="left",this.selectionEnd=t),this.selectionStart=i):i>t&&it?this.selectionStart=t:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>t?this.selectionEnd=t:this.selectionEnd<0&&(this.selectionEnd=0)}}),S.util.object.extend(S.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown)},onMouseDown:function(t){if(this.canvas){this.__newClickTime=+new Date;var e=t.pointer;this.isTripleClick(e)&&(this.fire("tripleclick",t),this._stopEvent(t.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=e,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected}},isTripleClick:function(t){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===t.x&&this.__lastPointer.y===t.y},_stopEvent:function(t){t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation()},initCursorSelectionHandlers:function(){this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},doubleClickHandler:function(t){this.isEditing&&this.selectWord(this.getSelectionStartFromPointer(t.e))},tripleClickHandler:function(t){this.isEditing&&this.selectLine(this.getSelectionStartFromPointer(t.e))},initClicks:function(){this.on("mousedblclick",this.doubleClickHandler),this.on("tripleclick",this.tripleClickHandler)},_mouseDownHandler:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.__isMousedown=!0,this.selected&&(this.inCompositionMode=!1,this.setCursorByClick(t.e)),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection()))},_mouseDownHandlerBefore:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.selected=this===this.canvas._activeObject)},initMousedownHandler:function(){this.on("mousedown",this._mouseDownHandler),this.on("mousedown:before",this._mouseDownHandlerBefore)},initMouseupHandler:function(){this.on("mouseup",this.mouseUpHandler)},mouseUpHandler:function(t){if(this.__isMousedown=!1,!(!this.editable||this.group||t.transform&&t.transform.actionPerformed||t.e.button&&1!==t.e.button)){if(this.canvas){var e=this.canvas._activeObject;if(e&&e!==this)return}this.__lastSelected&&!this.__corner?(this.selected=!1,this.__lastSelected=!1,this.enterEditing(t.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()):this.selected=!0}},setCursorByClick:function(t){var e=this.getSelectionStartFromPointer(t),i=this.selectionStart,r=this.selectionEnd;t.shiftKey?this.setSelectionStartEndWithShift(i,r,e):(this.selectionStart=e,this.selectionEnd=e),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(t){for(var e,i=this.getLocalPointer(t),r=0,n=0,s=0,o=0,a=0,h=0,l=this._textLines.length;h0&&(o+=this._textLines[h-1].length+this.missingNewlineOffset(h-1));n=this._getLineLeftOffset(a)*this.scaleX,e=this._textLines[a],"rtl"===this.direction&&(i.x=this.width*this.scaleX-i.x+n);for(var c=0,u=e.length;cs||o<0?0:1);return this.flipX&&(a=n-a),a>this._text.length&&(a=this._text.length),a}}),S.util.object.extend(S.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=S.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.setAttribute("autocorrect","off"),this.hiddenTextarea.setAttribute("autocomplete","off"),this.hiddenTextarea.setAttribute("spellcheck","false"),this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea",""),this.hiddenTextarea.setAttribute("wrap","off");var t=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+t.top+"; left: "+t.left+"; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; paddingーtop: "+t.fontSize+";",this.hiddenTextareaContainer?this.hiddenTextareaContainer.appendChild(this.hiddenTextarea):S.document.body.appendChild(this.hiddenTextarea),S.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),S.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),S.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),S.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),S.util.addListener(this.hiddenTextarea,"cut",this.copy.bind(this)),S.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),S.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),S.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),S.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(S.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},keysMap:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown"},keysMapRtl:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorLeft",36:"moveCursorRight",37:"moveCursorRight",38:"moveCursorUp",39:"moveCursorLeft",40:"moveCursorDown"},ctrlKeysMapUp:{67:"copy",88:"cut"},ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(t){if(this.isEditing){var e="rtl"===this.direction?this.keysMapRtl:this.keysMap;if(t.keyCode in e)this[e[t.keyCode]](t);else{if(!(t.keyCode in this.ctrlKeysMapDown)||!t.ctrlKey&&!t.metaKey)return;this[this.ctrlKeysMapDown[t.keyCode]](t)}t.stopImmediatePropagation(),t.preventDefault(),t.keyCode>=33&&t.keyCode<=40?(this.inCompositionMode=!1,this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.requestRenderAll()}},onKeyUp:function(t){!this.isEditing||this._copyDone||this.inCompositionMode?this._copyDone=!1:t.keyCode in this.ctrlKeysMapUp&&(t.ctrlKey||t.metaKey)&&(this[this.ctrlKeysMapUp[t.keyCode]](t),t.stopImmediatePropagation(),t.preventDefault(),this.canvas&&this.canvas.requestRenderAll())},onInput:function(t){var e=this.fromPaste;if(this.fromPaste=!1,t&&t.stopPropagation(),this.isEditing){var i,r,n,s,o,a=this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,h=this._text.length,l=a.length,c=l-h,u=this.selectionStart,d=this.selectionEnd,f=u!==d;if(""===this.hiddenTextarea.value)return this.styles={},this.updateFromTextArea(),this.fire("changed"),void(this.canvas&&(this.canvas.fire("text:changed",{target:this}),this.canvas.requestRenderAll()));var g=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value),m=u>g.selectionStart;f?(i=this._text.slice(u,d),c+=d-u):l0&&(r+=(i=this.__charBounds[t][e-1]).left+i.width),r},getDownCursorOffset:function(t,e){var i=this._getSelectionForOffset(t,e),r=this.get2DCursorLocation(i),n=r.lineIndex;if(n===this._textLines.length-1||t.metaKey||34===t.keyCode)return this._text.length-i;var s=r.charIndex,o=this._getWidthBeforeCursor(n,s),a=this._getIndexOnLine(n+1,o);return this._textLines[n].slice(s).length+a+1+this.missingNewlineOffset(n)},_getSelectionForOffset:function(t,e){return t.shiftKey&&this.selectionStart!==this.selectionEnd&&e?this.selectionEnd:this.selectionStart},getUpCursorOffset:function(t,e){var i=this._getSelectionForOffset(t,e),r=this.get2DCursorLocation(i),n=r.lineIndex;if(0===n||t.metaKey||33===t.keyCode)return-i;var s=r.charIndex,o=this._getWidthBeforeCursor(n,s),a=this._getIndexOnLine(n-1,o),h=this._textLines[n].slice(0,s),l=this.missingNewlineOffset(n-1);return-this._textLines[n-1].length+a-h.length+(1-l)},_getIndexOnLine:function(t,e){for(var i,r,n=this._textLines[t],s=this._getLineLeftOffset(t),o=0,a=0,h=n.length;ae){r=!0;var l=s-i,c=s,u=Math.abs(l-e);o=Math.abs(c-e)=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorUpOrDown("Down",t)},moveCursorUp:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",t)},_moveCursorUpOrDown:function(t,e){var i=this["get"+t+"CursorOffset"](e,"right"===this._selectionDirection);e.shiftKey?this.moveCursorWithShift(i):this.moveCursorWithoutShift(i),0!==i&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(t){var e="left"===this._selectionDirection?this.selectionStart+t:this.selectionEnd+t;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,e),0!==t},moveCursorWithoutShift:function(t){return t<0?(this.selectionStart+=t,this.selectionEnd=this.selectionStart):(this.selectionEnd+=t,this.selectionStart=this.selectionEnd),0!==t},moveCursorLeft:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",t)},_move:function(t,e,i){var r;if(t.altKey)r=this["findWordBoundary"+i](this[e]);else{if(!t.metaKey&&35!==t.keyCode&&36!==t.keyCode)return this[e]+="Left"===i?-1:1,!0;r=this["findLineBoundary"+i](this[e])}if(void 0!==typeof r&&this[e]!==r)return this[e]=r,!0},_moveLeft:function(t,e){return this._move(t,e,"Left")},_moveRight:function(t,e){return this._move(t,e,"Right")},moveCursorLeftWithoutShift:function(t){var e=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(e=this._moveLeft(t,"selectionStart")),this.selectionEnd=this.selectionStart,e},moveCursorLeftWithShift:function(t){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(t,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(t,"selectionStart")):void 0},moveCursorRight:function(t){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorLeftOrRight("Right",t)},_moveCursorLeftOrRight:function(t,e){var i="moveCursor"+t+"With";this._currentCursorOpacity=1,e.shiftKey?i+="Shift":i+="outShift",this[i](e)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(t){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(t,"selectionStart"):this.selectionEnd!==this._text.length?(this._selectionDirection="right",this._moveRight(t,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(t){var e=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(e=this._moveRight(t,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,e},removeChars:function(t,e){void 0===e&&(e=t+1),this.removeStyleFromTo(t,e),this._text.splice(t,e-t),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()},insertChars:function(t,e,i,r){void 0===r&&(r=i),r>i&&this.removeStyleFromTo(i,r);var n=S.util.string.graphemeSplit(t);this.insertNewStyleBlock(n,i,e),this._text=[].concat(this._text.slice(0,i),n,this._text.slice(r)),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()}}),function(){var t=S.util.toFixed,e=/ +/g;S.util.object.extend(S.Text.prototype,{_toSVG:function(){var t=this._getSVGLeftTopOffsets(),e=this._getSVGTextAndBg(t.textTop,t.textLeft);return this._wrapSVGTextAndBg(e)},toSVG:function(t){return this._createBaseSVGMarkup(this._toSVG(),{reviver:t,noStyle:!0,withShadow:!0})},_getSVGLeftTopOffsets:function(){return{textLeft:-this.width/2,textTop:-this.height/2,lineTop:this.getHeightOfLine(0)}},_wrapSVGTextAndBg:function(t){var e=this.getSvgTextDecoration(this);return[t.textBgRects.join(""),'\t\t",t.textSpans.join(""),"\n"]},_getSVGTextAndBg:function(t,e){var i,r=[],n=[],s=t;this._setSVGBg(n);for(var o=0,a=this._textLines.length;o",S.util.string.escapeXml(i),""].join("")},_setSVGTextLineText:function(t,e,i,r){var n,s,o,a,h,l=this.getHeightOfLine(e),c=-1!==this.textAlign.indexOf("justify"),u="",d=0,f=this._textLines[e];r+=l*(1-this._fontSizeFraction)/this.lineHeight;for(var g=0,m=f.length-1;g<=m;g++)h=g===m||this.charSpacing,u+=f[g],o=this.__charBounds[e][g],0===d?(i+=o.kernedWidth-o.width,d+=o.width):d+=o.kernedWidth,c&&!h&&this._reSpaceAndTab.test(f[g])&&(h=!0),h||(n=n||this.getCompleteStyleDeclaration(e,g),s=this.getCompleteStyleDeclaration(e,g+1),h=this._hasStyleChangedForSvg(n,s)),h&&(a=this._getStyleDeclaration(e,g)||{},t.push(this._createTextCharSpan(u,a,i,r)),u="",n=s,i+=d,d=0)},_pushTextBgRect:function(e,i,r,n,s,o){var a=S.Object.NUM_FRACTION_DIGITS;e.push("\t\t\n')},_setSVGTextLineBg:function(t,e,i,r){for(var n,s,o=this._textLines[e],a=this.getHeightOfLine(e)/this.lineHeight,h=0,l=0,c=this.getValueOfPropertyAt(e,0,"textBackgroundColor"),u=0,d=o.length;uthis.width&&this._set("width",this.dynamicMinWidth),-1!==this.textAlign.indexOf("justify")&&this.enlargeSpaces(),this.height=this.calcTextHeight(),this.saveState({propertySet:"_dimensionAffectingProps"}))},_generateStyleMap:function(t){for(var e=0,i=0,r=0,n={},s=0;s0?(i=0,r++,e++):!this.splitByGrapheme&&this._reSpaceAndTab.test(t.graphemeText[r])&&s>0&&(i++,r++),n[s]={line:e,offset:i},r+=t.graphemeLines[s].length,i+=t.graphemeLines[s].length;return n},styleHas:function(t,i){if(this._styleMap&&!this.isWrapping){var r=this._styleMap[i];r&&(i=r.line)}return e.Text.prototype.styleHas.call(this,t,i)},isEmptyStyles:function(t){if(!this.styles)return!0;var e,i,r=0,n=!1,s=this._styleMap[t],o=this._styleMap[t+1];for(var a in s&&(t=s.line,r=s.offset),o&&(n=o.line===t,e=o.offset),i=void 0===t?this.styles:{line:this.styles[t]})for(var h in i[a])if(h>=r&&(!n||hr&&!p?(a.push(h),h=[],s=f,p=!0):s+=_,p||o||h.push(d),h=h.concat(c),g=o?0:this._measureWord([d],i,u),u++,p=!1,f>m&&(m=f);return v&&a.push(h),m+n>this.dynamicMinWidth&&(this.dynamicMinWidth=m-_+n),a},isEndOfWrapping:function(t){return!this._styleMap[t+1]||this._styleMap[t+1].line!==this._styleMap[t].line},missingNewlineOffset:function(t){return this.splitByGrapheme?this.isEndOfWrapping(t)?1:0:1},_splitTextIntoLines:function(t){for(var i=e.Text.prototype._splitTextIntoLines.call(this,t),r=this._wrapText(i.lines,this.width),n=new Array(r.length),s=0;s{},898:()=>{},245:()=>{}},$e={};function ti(t){var e=$e[t];if(void 0!==e)return e.exports;var i=$e[t]={exports:{}};return Qe[t](i,i.exports,ti),i.exports}ti.d=(t,e)=>{for(var i in e)ti.o(e,i)&&!ti.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},ti.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var ei={};(()=>{let t;ti.d(ei,{R:()=>t}),t="undefined"!=typeof document&&"undefined"!=typeof window?ti(653).fabric:{version:"5.2.1"}})();var ii,ri,ni,si,oi=ei.R;!function(t){t[t.DIMT_RECTANGLE=1]="DIMT_RECTANGLE",t[t.DIMT_QUADRILATERAL=2]="DIMT_QUADRILATERAL",t[t.DIMT_TEXT=4]="DIMT_TEXT",t[t.DIMT_ARC=8]="DIMT_ARC",t[t.DIMT_IMAGE=16]="DIMT_IMAGE",t[t.DIMT_POLYGON=32]="DIMT_POLYGON",t[t.DIMT_LINE=64]="DIMT_LINE",t[t.DIMT_GROUP=128]="DIMT_GROUP"}(ii||(ii={})),function(t){t[t.DIS_DEFAULT=1]="DIS_DEFAULT",t[t.DIS_SELECTED=2]="DIS_SELECTED"}(ri||(ri={})),function(t){t[t.EF_ENHANCED_FOCUS=4]="EF_ENHANCED_FOCUS",t[t.EF_AUTO_ZOOM=16]="EF_AUTO_ZOOM",t[t.EF_TAP_TO_FOCUS=64]="EF_TAP_TO_FOCUS"}(ni||(ni={})),function(t){t.GREY="grey",t.GREY32="grey32",t.RGBA="rgba",t.RBGA="rbga",t.GRBA="grba",t.GBRA="gbra",t.BRGA="brga",t.BGRA="bgra"}(si||(si={}));const ai=t=>"number"==typeof t&&!Number.isNaN(t),hi=t=>"string"==typeof t;var li,ci,ui,di,fi,gi,mi,pi,_i,vi,yi;!function(t){t[t.ARC=0]="ARC",t[t.IMAGE=1]="IMAGE",t[t.LINE=2]="LINE",t[t.POLYGON=3]="POLYGON",t[t.QUAD=4]="QUAD",t[t.RECT=5]="RECT",t[t.TEXT=6]="TEXT",t[t.GROUP=7]="GROUP"}(fi||(fi={})),function(t){t[t.DEFAULT=0]="DEFAULT",t[t.SELECTED=1]="SELECTED"}(gi||(gi={}));class wi{get mediaType(){return new Map([["rect",ii.DIMT_RECTANGLE],["quad",ii.DIMT_QUADRILATERAL],["text",ii.DIMT_TEXT],["arc",ii.DIMT_ARC],["image",ii.DIMT_IMAGE],["polygon",ii.DIMT_POLYGON],["line",ii.DIMT_LINE],["group",ii.DIMT_GROUP]]).get(this._mediaType)}get styleSelector(){switch(Xe(this,ci,"f")){case ri.DIS_DEFAULT:return"default";case ri.DIS_SELECTED:return"selected"}}set drawingStyleId(t){this.styleId=t}get drawingStyleId(){return this.styleId}set coordinateBase(t){if(!["view","image"].includes(t))throw new Error("Invalid 'coordinateBase'.");this._drawingLayer&&("image"===Xe(this,ui,"f")&&"view"===t?this.updateCoordinateBaseFromImageToView():"view"===Xe(this,ui,"f")&&"image"===t&&this.updateCoordinateBaseFromViewToImage()),ze(this,ui,t,"f")}get coordinateBase(){return Xe(this,ui,"f")}get drawingLayerId(){return this._drawingLayerId}constructor(t,e){if(li.add(this),ci.set(this,void 0),ui.set(this,"image"),this._zIndex=null,this._drawingLayer=null,this._drawingLayerId=null,this._mapState_StyleId=new Map,this.mapEvent_Callbacks=new Map([["selected",new Map],["deselected",new Map],["mousedown",new Map],["mouseup",new Map],["dblclick",new Map],["mouseover",new Map],["mouseout",new Map]]),this.mapNoteName_Content=new Map([]),this.isDrawingItem=!0,null!=e&&!ai(e))throw new TypeError("Invalid 'drawingStyleId'.");t&&this._setFabricObject(t),this.setState(ri.DIS_DEFAULT),this.styleId=e}_setFabricObject(t){this._fabricObject=t,this._fabricObject.on("selected",(()=>{this.setState(ri.DIS_SELECTED)})),this._fabricObject.on("deselected",(()=>{this._fabricObject.canvas&&this._fabricObject.canvas.getActiveObjects().includes(this._fabricObject)?this.setState(ri.DIS_SELECTED):this.setState(ri.DIS_DEFAULT),"textbox"===this._fabricObject.type&&(this._fabricObject.isEditing&&this._fabricObject.exitEditing(),this._fabricObject.selected=!1)})),t.getDrawingItem=()=>this}_getFabricObject(){return this._fabricObject}setState(t){ze(this,ci,t,"f")}getState(){return Xe(this,ci,"f")}_on(t,e){if(!e)return;const i=t.toLowerCase(),r=this.mapEvent_Callbacks.get(i);if(!r)throw new Error(`Event '${t}' does not exist.`);let n=r.get(e);n||(n=t=>{const i=t.e;if(!i)return void(e&&e.apply(this,[{targetItem:this,itemClientX:null,itemClientY:null,itemPageX:null,itemPageY:null}]));const r={targetItem:this,itemClientX:null,itemClientY:null,itemPageX:null,itemPageY:null};if(this._drawingLayer){let t,e,n,s;const o=i.target.getBoundingClientRect();t=o.left,e=o.top,n=t+window.scrollX,s=e+window.scrollY;const{width:a,height:h}=this._drawingLayer.fabricCanvas.lowerCanvasEl.getBoundingClientRect(),l=this._drawingLayer.width,c=this._drawingLayer.height,u=a/h,d=l/c,f=this._drawingLayer._getObjectFit();let g,m,p,_,v=1;if("contain"===f)u0?i-1:r,Si),actionName:"modifyPolygon",pointIndex:i}),t}),{}),ze(this,pi,JSON.parse(JSON.stringify(t)),"f"),this._mediaType="polygon"}extendSet(t,e){if("vertices"===t){const t=this._fabricObject;if(t.group){const i=t.group;t.points=e.map((t=>({x:t.x-i.left-i.width/2,y:t.y-i.top-i.height/2}))),i.addWithUpdate()}else t.points=e;const i=t.points.length-1;return t.controls=t.points.reduce((function(t,e,r){return t["p"+r]=new oi.Control({positionHandler:Ei,actionHandler:bi(r>0?r-1:i,Si),actionName:"modifyPolygon",pointIndex:r}),t}),{}),t._setPositionDimensions({}),!0}}extendGet(t){if("vertices"===t){const t=[],e=this._fabricObject;if(e.selectable&&!e.group)for(let i in e.oCoords)t.push({x:e.oCoords[i].x,y:e.oCoords[i].y});else for(let i of e.points){let r=i.x-e.pathOffset.x,n=i.y-e.pathOffset.y;const s=oi.util.transformPoint({x:r,y:n},e.calcTransformMatrix());t.push({x:s.x,y:s.y})}return t}}updateCoordinateBaseFromImageToView(){const t=this.get("vertices").map((t=>({x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)})));this.set("vertices",t)}updateCoordinateBaseFromViewToImage(){const t=this.get("vertices").map((t=>({x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)})));this.set("vertices",t)}setPosition(t){this.setPolygon(t)}getPosition(){return this.getPolygon()}updatePosition(){Xe(this,pi,"f")&&this.setPolygon(Xe(this,pi,"f"))}setPolygon(t){if(!S(t))throw new TypeError("Invalid 'polygon'.");if(this._drawingLayer){if("view"===this.coordinateBase){const e=t.points.map((t=>({x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)})));this.set("vertices",e)}else{if("image"!==this.coordinateBase)throw new Error("Invalid 'coordinateBase'.");this.set("vertices",t.points)}this._drawingLayer.renderAll()}else ze(this,pi,JSON.parse(JSON.stringify(t)),"f")}getPolygon(){if(this._drawingLayer){if("view"===this.coordinateBase)return{points:this.get("vertices").map((t=>({x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)})))};if("image"===this.coordinateBase)return{points:this.get("vertices")};throw new Error("Invalid 'coordinateBase'.")}return Xe(this,pi,"f")?JSON.parse(JSON.stringify(Xe(this,pi,"f"))):null}}pi=new WeakMap;_i=new WeakMap,vi=new WeakMap;const xi=t=>{let e=(t=>t.split("\n").map((t=>t.split("\t"))))(t);return(t=>{for(let e=0;;e++){let i=-1;for(let r=0;ri&&(i=n.length)}if(-1===i)break;for(let r=0;r=t[r].length-1)continue;let n=" ".repeat(i+2-t[r][e].length);t[r][e]=t[r][e].concat(n)}}})(e),(t=>{let e="";for(let i=0;i({x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)})));this.set("vertices",e)}else{if("image"!==this.coordinateBase)throw new Error("Invalid 'coordinateBase'.");this.set("vertices",t.points)}this._drawingLayer.renderAll()}else ze(this,Ri,JSON.parse(JSON.stringify(t)),"f")}getQuad(){if(this._drawingLayer){if("view"===this.coordinateBase)return{points:this.get("vertices").map((t=>({x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)})))};if("image"===this.coordinateBase)return{points:this.get("vertices")};throw new Error("Invalid 'coordinateBase'.")}return Xe(this,Ri,"f")?JSON.parse(JSON.stringify(Xe(this,Ri,"f"))):null}}Ri=new WeakMap;class Li extends wi{constructor(t){super(new oi.Group(t.map((t=>t._getFabricObject())))),this._fabricObject.on("selected",(()=>{this.setState(ri.DIS_SELECTED);const t=this._fabricObject._objects;for(let e of t)setTimeout((()=>{e&&e.fire("selected")}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)})),this._fabricObject.on("deselected",(()=>{this.setState(ri.DIS_DEFAULT);const t=this._fabricObject._objects;for(let e of t)setTimeout((()=>{e&&e.fire("deselected")}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)})),this._mediaType="group"}extendSet(t,e){return!1}extendGet(t){}updateCoordinateBaseFromImageToView(){}updateCoordinateBaseFromViewToImage(){}setPosition(){}getPosition(){}updatePosition(){}getChildDrawingItems(){return this._fabricObject._objects.map((t=>t.getDrawingItem()))}setChildDrawingItems(t){if(!t||!t.isDrawingItem)throw TypeError("Illegal drawing item.");this._drawingLayer?this._drawingLayer._updateGroupItem(this,t,"add"):this._fabricObject.addWithUpdate(t._getFabricObject())}removeChildItem(t){t&&t.isDrawingItem&&(this._drawingLayer?this._drawingLayer._updateGroupItem(this,t,"remove"):this._fabricObject.removeWithUpdate(t._getFabricObject()))}}const Mi=t=>null!==t&&"object"==typeof t&&!Array.isArray(t),Fi=t=>!!hi(t)&&""!==t,Pi=t=>!(!Mi(t)||"id"in t&&!ai(t.id)||"lineWidth"in t&&!ai(t.lineWidth)||"fillStyle"in t&&!Fi(t.fillStyle)||"strokeStyle"in t&&!Fi(t.strokeStyle)||"paintMode"in t&&!["fill","stroke","strokeAndFill"].includes(t.paintMode)||"fontFamily"in t&&!Fi(t.fontFamily)||"fontSize"in t&&!ai(t.fontSize));class ki{static convert(t,e,i){const r={x:0,y:0,width:e,height:i};if(!t)return r;if(I(t))t.isMeasuredInPercentage?(r.x=t.x/100*e,r.y=t.y/100*i,r.width=t.width/100*e,r.height=t.height/100*i):(r.x=t.x,r.y=t.y,r.width=t.width,r.height=t.height);else{if(!w(t))throw TypeError("Invalid region.");t.isMeasuredInPercentage?(r.x=t.left/100*e,r.y=t.top/100*i,r.width=(t.right-t.left)/100*e,r.height=(t.bottom-t.top)/100*i):(r.x=t.left,r.y=t.top,r.width=t.right-t.left,r.height=t.bottom-t.top)}return r.x=Math.round(r.x),r.y=Math.round(r.y),r.width=Math.round(r.width),r.height=Math.round(r.height),r}}var Bi,Ni;class ji{constructor(){Bi.set(this,new Map),Ni.set(this,!1)}get disposed(){return Xe(this,Ni,"f")}on(t,e){t=t.toLowerCase();const i=Xe(this,Bi,"f").get(t);if(i){if(i.includes(e))return;i.push(e)}else Xe(this,Bi,"f").set(t,[e])}off(t,e){t=t.toLowerCase();const i=Xe(this,Bi,"f").get(t);if(!i)return;const r=i.indexOf(e);-1!==r&&i.splice(r,1)}offAll(t){t=t.toLowerCase();const e=Xe(this,Bi,"f").get(t);e&&(e.length=0)}fire(t,e=[],i={async:!1,copy:!0}){e||(e=[]),t=t.toLowerCase();const r=Xe(this,Bi,"f").get(t);if(r&&r.length){i=Object.assign({async:!1,copy:!0},i);for(let n of r){if(!n)continue;let s=[];if(i.copy)for(let i of e){try{i=JSON.parse(JSON.stringify(i))}catch(t){}s.push(i)}else s=e;let o=!1;if(i.async)setTimeout((()=>{this.disposed||r.includes(n)&&n.apply(i.target,s)}),0);else try{o=n.apply(i.target,s)}catch(t){}if(!0===o)break}}}dispose(){ze(this,Ni,!0,"f")}}function Ui(t,e,i){return(i.x-t.x)*(e.y-t.y)==(e.x-t.x)*(i.y-t.y)&&Math.min(t.x,e.x)<=i.x&&i.x<=Math.max(t.x,e.x)&&Math.min(t.y,e.y)<=i.y&&i.y<=Math.max(t.y,e.y)}function Vi(t){return Math.abs(t)<1e-6?0:t<0?-1:1}function Gi(t,e,i,r){let n=t[0]*(i[1]-e[1])+e[0]*(t[1]-i[1])+i[0]*(e[1]-t[1]),s=t[0]*(r[1]-e[1])+e[0]*(t[1]-r[1])+r[0]*(e[1]-t[1]);return!((n^s)>=0&&0!==n&&0!==s||(n=i[0]*(t[1]-r[1])+r[0]*(i[1]-t[1])+t[0]*(r[1]-i[1]),s=i[0]*(e[1]-r[1])+r[0]*(i[1]-e[1])+e[0]*(r[1]-i[1]),(n^s)>=0&&0!==n&&0!==s))}Bi=new WeakMap,Ni=new WeakMap;const Wi=async t=>{if("string"!=typeof t)throw new TypeError("Invalid url.");const e=await fetch(t);if(!e.ok)throw Error("Network Error: "+e.statusText);const i=await e.text();if(!i.trim().startsWith("<"))throw Error("Unable to get valid HTMLElement.");const r=document.createElement("div");if(r.insertAdjacentHTML("beforeend",i),1===r.childElementCount&&r.firstChild instanceof HTMLTemplateElement)return r.firstChild.content;const n=new DocumentFragment;for(let t of r.children)n.append(t);return n};var Yi,Hi,Xi,zi,Zi,qi,Ki,Ji,Qi,$i,tr,er,ir,rr,nr,sr,or,ar,hr,lr,cr,ur,dr,fr,gr,mr,pr,_r,vr,yr,wr,Cr,Er,Tr;class Sr{static createDrawingStyle(t){if(!Pi(t))throw new Error("Invalid style definition.");let e,i=Sr.USER_START_STYLE_ID;for(;Xe(Sr,Yi,"f",Hi).has(i);)i++;e=i;const r=JSON.parse(JSON.stringify(t));r.id=e;for(let t in Xe(Sr,Yi,"f",Xi))r.hasOwnProperty(t)||(r[t]=Xe(Sr,Yi,"f",Xi)[t]);return Xe(Sr,Yi,"f",Hi).set(e,r),r.id}static _getDrawingStyle(t,e){if("number"!=typeof t)throw new Error("Invalid style id.");const i=Xe(Sr,Yi,"f",Hi).get(t);return i?e?JSON.parse(JSON.stringify(i)):i:null}static getDrawingStyle(t){return this._getDrawingStyle(t,!0)}static getAllDrawingStyles(){return JSON.parse(JSON.stringify(Array.from(Xe(Sr,Yi,"f",Hi).values())))}static _updateDrawingStyle(t,e){if(!Pi(e))throw new Error("Invalid style definition.");const i=Xe(Sr,Yi,"f",Hi).get(t);if(i)for(let t in e)i.hasOwnProperty(t)&&(i[t]=e[t])}static updateDrawingStyle(t,e){this._updateDrawingStyle(t,e)}}Yi=Sr,Sr.STYLE_BLUE_STROKE=1,Sr.STYLE_GREEN_STROKE=2,Sr.STYLE_ORANGE_STROKE=3,Sr.STYLE_YELLOW_STROKE=4,Sr.STYLE_BLUE_STROKE_FILL=5,Sr.STYLE_GREEN_STROKE_FILL=6,Sr.STYLE_ORANGE_STROKE_FILL=7,Sr.STYLE_YELLOW_STROKE_FILL=8,Sr.STYLE_BLUE_STROKE_TRANSPARENT=9,Sr.STYLE_GREEN_STROKE_TRANSPARENT=10,Sr.STYLE_ORANGE_STROKE_TRANSPARENT=11,Sr.USER_START_STYLE_ID=1024,Hi={value:new Map([[Sr.STYLE_BLUE_STROKE,{id:Sr.STYLE_BLUE_STROKE,lineWidth:4,fillStyle:"rgba(73, 173, 245, 0.3)",strokeStyle:"rgba(73, 173, 245, 1)",paintMode:"stroke",fontFamily:"consolas",fontSize:40}],[Sr.STYLE_GREEN_STROKE,{id:Sr.STYLE_GREEN_STROKE,lineWidth:2,fillStyle:"rgba(73, 245, 73, 0.3)",strokeStyle:"rgba(73, 245, 73, 0.9)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Sr.STYLE_ORANGE_STROKE,{id:Sr.STYLE_ORANGE_STROKE,lineWidth:2,fillStyle:"rgba(254, 180, 32, 0.3)",strokeStyle:"rgba(254, 180, 32, 0.9)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Sr.STYLE_YELLOW_STROKE,{id:Sr.STYLE_YELLOW_STROKE,lineWidth:2,fillStyle:"rgba(245, 236, 73, 0.3)",strokeStyle:"rgba(245, 236, 73, 1)",paintMode:"stroke",fontFamily:"consolas",fontSize:40}],[Sr.STYLE_BLUE_STROKE_FILL,{id:Sr.STYLE_BLUE_STROKE_FILL,lineWidth:4,fillStyle:"rgba(73, 173, 245, 0.3)",strokeStyle:"rgba(73, 173, 245, 1)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Sr.STYLE_GREEN_STROKE_FILL,{id:Sr.STYLE_GREEN_STROKE_FILL,lineWidth:2,fillStyle:"rgba(73, 245, 73, 0.3)",strokeStyle:"rgba(73, 245, 73, 0.9)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Sr.STYLE_ORANGE_STROKE_FILL,{id:Sr.STYLE_ORANGE_STROKE_FILL,lineWidth:2,fillStyle:"rgba(254, 180, 32, 0.3)",strokeStyle:"rgba(254, 180, 32, 1)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Sr.STYLE_YELLOW_STROKE_FILL,{id:Sr.STYLE_YELLOW_STROKE_FILL,lineWidth:2,fillStyle:"rgba(245, 236, 73, 0.3)",strokeStyle:"rgba(245, 236, 73, 1)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Sr.STYLE_BLUE_STROKE_TRANSPARENT,{id:Sr.STYLE_BLUE_STROKE_TRANSPARENT,lineWidth:4,fillStyle:"rgba(73, 173, 245, 0.2)",strokeStyle:"transparent",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Sr.STYLE_GREEN_STROKE_TRANSPARENT,{id:Sr.STYLE_GREEN_STROKE_TRANSPARENT,lineWidth:2,fillStyle:"rgba(73, 245, 73, 0.2)",strokeStyle:"transparent",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Sr.STYLE_ORANGE_STROKE_TRANSPARENT,{id:Sr.STYLE_ORANGE_STROKE_TRANSPARENT,lineWidth:2,fillStyle:"rgba(254, 180, 32, 0.2)",strokeStyle:"transparent",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}]])},Xi={value:{lineWidth:2,fillStyle:"rgba(245, 236, 73, 0.3)",strokeStyle:"rgba(245, 236, 73, 1)",paintMode:"stroke",fontFamily:"consolas",fontSize:40}},"undefined"!=typeof document&&"undefined"!=typeof window&&(oi.StaticCanvas.prototype.dispose=function(){return this.isRendering&&(oi.util.cancelAnimFrame(this.isRendering),this.isRendering=0),this.forEachObject((function(t){t.dispose&&t.dispose()})),this._objects=[],this.backgroundImage&&this.backgroundImage.dispose&&this.backgroundImage.dispose(),this.backgroundImage=null,this.overlayImage&&this.overlayImage.dispose&&this.overlayImage.dispose(),this.overlayImage=null,this._iTextInstances=null,this.contextContainer=null,this.lowerCanvasEl.classList.remove("lower-canvas"),delete this._originalCanvasStyle,this.lowerCanvasEl.setAttribute("width",this.width),this.lowerCanvasEl.setAttribute("height",this.height),oi.util.cleanUpJsdomNode(this.lowerCanvasEl),this.lowerCanvasEl=void 0,this},oi.Object.prototype.transparentCorners=!1,oi.Object.prototype.cornerSize=20,oi.Object.prototype.touchCornerSize=100,oi.Object.prototype.cornerColor="rgb(254,142,20)",oi.Object.prototype.cornerStyle="circle",oi.Object.prototype.strokeUniform=!0,oi.Object.prototype.hasBorders=!1,oi.Canvas.prototype.containerClass="",oi.Canvas.prototype.getPointer=function(t,e){if(this._absolutePointer&&!e)return this._absolutePointer;if(this._pointer&&e)return this._pointer;var i,r=this.upperCanvasEl,n=oi.util.getPointer(t,r),s=r.getBoundingClientRect(),o=s.width||0,a=s.height||0;o&&a||("top"in s&&"bottom"in s&&(a=Math.abs(s.top-s.bottom)),"right"in s&&"left"in s&&(o=Math.abs(s.right-s.left))),this.calcOffset(),n.x=n.x-this._offset.left,n.y=n.y-this._offset.top,e||(n=this.restorePointerVpt(n));var h=this.getRetinaScaling();if(1!==h&&(n.x/=h,n.y/=h),0!==o&&0!==a){var l=window.getComputedStyle(r).objectFit,c=r.width,u=r.height,d=o,f=a;i={width:c/d,height:u/f};var g,m,p=c/u,_=d/f;return"contain"===l?p>_?(g=d,m=d/p,{x:n.x*i.width,y:(n.y-(f-m)/2)*i.width}):(g=f*p,m=f,{x:(n.x-(d-g)/2)*i.height,y:n.y*i.height}):"cover"===l?p>_?{x:(c-i.height*d)/2+n.x*i.height,y:n.y*i.height}:{x:n.x*i.width,y:(u-i.width*f)/2+n.y*i.width}:{x:n.x*i.width,y:n.y*i.height}}return i={width:1,height:1},{x:n.x*i.width,y:n.y*i.height}},oi.Canvas.prototype._onTouchStart=function(t){var e=this.findTarget(t);!this.allowTouchScrolling&&t.cancelable&&t.preventDefault&&t.preventDefault(),e&&t.cancelable&&t.preventDefault&&t.preventDefault(),null===this.mainTouchId&&(this.mainTouchId=this.getPointerId(t)),this.__onMouseDown(t),this._resetTransformEventData();var i=this.upperCanvasEl,r=this._getEventPrefix();oi.util.addListener(oi.document,"touchend",this._onTouchEnd,{passive:!1}),oi.util.addListener(oi.document,"touchmove",this._onMouseMove,{passive:!1}),oi.util.removeListener(i,r+"down",this._onMouseDown)},oi.Textbox.prototype._wrapLine=function(t,e,i,r){const n=t.match(/[\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff\uff66-\uff9f]/g),s=!(!n||!n.length);var o=0,a=this.splitByGrapheme||s,h=[],l=[],c=a?oi.util.string.graphemeSplit(t):t.split(this._wordJoiners),u="",d=0,f=a?"":" ",g=0,m=0,p=0,_=!0,v=this._getWidthOfCharSpacing();r=r||0,0===c.length&&c.push([]),i-=r;for(var y=0;yi&&!_?(h.push(l),l=[],o=g,_=!0):o+=v,_||a||l.push(f),l=l.concat(u),m=a?0:this._measureWord([f],e,d),d++,_=!1,g>p&&(p=g);return y&&h.push(l),p+r>this.dynamicMinWidth&&(this.dynamicMinWidth=p-v+r),h});class br{get width(){return this.fabricCanvas.width}get height(){return this.fabricCanvas.height}set _allowMultiSelect(t){this.fabricCanvas.selection=t,this.fabricCanvas.renderAll()}get _allowMultiSelect(){return this.fabricCanvas.selection}constructor(t,e,i){if(this.mapType_StateAndStyleId=new Map,this.mode="viewer",this.onSelectionChanged=null,this._arrDrwaingItem=[],this._arrFabricObject=[],this._visible=!0,t.hasOwnProperty("getFabricCanvas"))this.fabricCanvas=t.getFabricCanvas();else{let e=this.fabricCanvas=new oi.Canvas(t,Object.assign(i,{allowTouchScrolling:!0,selection:!1}));e.setDimensions({width:"100%",height:"100%"},{cssOnly:!0}),e.lowerCanvasEl.className="",e.upperCanvasEl.className="",e.on("selection:created",(function(t){const e=t.selected,i=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!i.includes(e)&&i.push(e)}for(let t of i){const i=[];for(let r of e){const e=r.getDrawingItem();e._drawingLayer===t&&i.push(e)}setTimeout((()=>{t.onSelectionChanged&&t.onSelectionChanged(i,[])}),0)}})),e.on("before:selection:cleared",(function(t){const e=this.getActiveObjects(),i=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!i.includes(e)&&i.push(e)}for(let t of i){const i=[];for(let r of e){const e=r.getDrawingItem();e._drawingLayer===t&&i.push(e)}setTimeout((()=>{const e=[];for(let r of i)t.hasDrawingItem(r)&&e.push(r);e.length>0&&t.onSelectionChanged&&t.onSelectionChanged([],e)}),0)}})),e.on("selection:updated",(function(t){const e=t.selected,i=t.deselected,r=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!r.includes(e)&&r.push(e)}for(let t of i){const e=t.getDrawingItem()._drawingLayer;e&&!r.includes(e)&&r.push(e)}for(let t of r){const r=[],n=[];for(let i of e){const e=i.getDrawingItem();e._drawingLayer===t&&r.push(e)}for(let e of i){const i=e.getDrawingItem();i._drawingLayer===t&&n.push(i)}setTimeout((()=>{t.onSelectionChanged&&t.onSelectionChanged(r,n)}),0)}})),e.wrapperEl.style.position="absolute",t.getFabricCanvas=()=>this.fabricCanvas}let r,n;switch(this.id=e,e){case br.DDN_LAYER_ID:r=Sr.getDrawingStyle(Sr.STYLE_BLUE_STROKE),n=Sr.getDrawingStyle(Sr.STYLE_BLUE_STROKE_FILL);break;case br.DBR_LAYER_ID:r=Sr.getDrawingStyle(Sr.STYLE_ORANGE_STROKE),n=Sr.getDrawingStyle(Sr.STYLE_ORANGE_STROKE_FILL);break;case br.DLR_LAYER_ID:r=Sr.getDrawingStyle(Sr.STYLE_GREEN_STROKE),n=Sr.getDrawingStyle(Sr.STYLE_GREEN_STROKE_FILL);break;default:r=Sr.getDrawingStyle(Sr.STYLE_YELLOW_STROKE),n=Sr.getDrawingStyle(Sr.STYLE_YELLOW_STROKE_FILL)}for(let t of wi.arrMediaTypes)this.mapType_StateAndStyleId.set(t,{default:r.id,selected:n.id})}getId(){return this.id}setVisible(t){if(t){for(let t of this._arrFabricObject)t.visible=!0,t.hasControls=!0;this._visible=!0}else{for(let t of this._arrFabricObject)t.visible=!1,t.hasControls=!1;this._visible=!1}this.fabricCanvas.renderAll()}isVisible(){return this._visible}_getItemCurrentStyle(t){if(t.styleId)return Sr.getDrawingStyle(t.styleId);return Sr.getDrawingStyle(t._mapState_StyleId.get(t.styleSelector))||null}_changeMediaTypeCurStyleInStyleSelector(t,e,i,r){const n=this.getDrawingItems((e=>e._mediaType===t));for(let t of n)t.styleSelector===e&&this._changeItemStyle(t,i,!0);r||this.fabricCanvas.renderAll()}_changeItemStyle(t,e,i){if(!t||!e)return;const r=t._getFabricObject();"number"==typeof t.styleId&&(e=Sr.getDrawingStyle(t.styleId)),r.strokeWidth=e.lineWidth,"fill"===e.paintMode?(r.fill=e.fillStyle,r.stroke=e.fillStyle):"stroke"===e.paintMode?(r.fill="transparent",r.stroke=e.strokeStyle):"strokeAndFill"===e.paintMode&&(r.fill=e.fillStyle,r.stroke=e.strokeStyle),r.fontFamily&&(r.fontFamily=e.fontFamily),r.fontSize&&(r.fontSize=e.fontSize),r.group||(r.dirty=!0),i||this.fabricCanvas.renderAll()}_updateGroupItem(t,e,i){if(!t||!e)return;const r=t.getChildDrawingItems();if("add"===i){if(r.includes(e))return;const i=e._getFabricObject();if(this.fabricCanvas.getObjects().includes(i)){if(!this._arrFabricObject.includes(i))throw new Error("Existed in other drawing layers.");e._zIndex=null}else{let i;if(e.styleId)i=Sr.getDrawingStyle(e.styleId);else{const r=this.mapType_StateAndStyleId.get(e._mediaType);i=Sr.getDrawingStyle(r[t.styleSelector]);const n=()=>{this._changeItemStyle(e,Sr.getDrawingStyle(this.mapType_StateAndStyleId.get(e._mediaType).selected),!0)},s=()=>{this._changeItemStyle(e,Sr.getDrawingStyle(this.mapType_StateAndStyleId.get(e._mediaType).default),!0)};e._on("selected",n),e._on("deselected",s),e._funcChangeStyleToSelected=n,e._funcChangeStyleToDefault=s}e._drawingLayer=this,e._drawingLayerId=this.id,this._changeItemStyle(e,i,!0)}t._fabricObject.addWithUpdate(e._getFabricObject())}else{if("remove"!==i)return;if(!r.includes(e))return;e._zIndex=null,e._drawingLayer=null,e._drawingLayerId=null,e._off("selected",e._funcChangeStyleToSelected),e._off("deselected",e._funcChangeStyleToDefault),e._funcChangeStyleToSelected=null,e._funcChangeStyleToDefault=null,t._fabricObject.removeWithUpdate(e._getFabricObject())}this.fabricCanvas.renderAll()}_addDrawingItem(t,e){if(!(t instanceof wi))throw new TypeError("Invalid 'drawingItem'.");if(t._drawingLayer){if(t._drawingLayer==this)return;throw new Error("This drawing item has existed in other layer.")}let i=t._getFabricObject();const r=this.fabricCanvas.getObjects();let n,s;if(r.includes(i)){if(this._arrFabricObject.includes(i))return;throw new Error("Existed in other drawing layers.")}if("group"===t._mediaType){n=t.getChildDrawingItems();for(let t of n)if(t._drawingLayer&&t._drawingLayer!==this)throw new Error("The childItems of DT_Group have existed in other drawing layers.")}if(e&&"object"==typeof e&&!Array.isArray(e))for(let t in e)i.set(t,e[t]);if(n){for(let t of n){const e=this.mapType_StateAndStyleId.get(t._mediaType);for(let i of wi.arrStyleSelectors)t._mapState_StyleId.set(i,e[i]);if(t.styleId)s=Sr.getDrawingStyle(t.styleId);else{s=Sr.getDrawingStyle(e.default);const i=()=>{this._changeItemStyle(t,Sr.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).selected),!0)},r=()=>{this._changeItemStyle(t,Sr.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).default),!0)};t._on("selected",i),t._on("deselected",r),t._funcChangeStyleToSelected=i,t._funcChangeStyleToDefault=r}t._drawingLayer=this,t._drawingLayerId=this.id,this._changeItemStyle(t,s,!0)}i.dirty=!0,this.fabricCanvas.renderAll()}else{const e=this.mapType_StateAndStyleId.get(t._mediaType);for(let i of wi.arrStyleSelectors)t._mapState_StyleId.set(i,e[i]);if(t.styleId)s=Sr.getDrawingStyle(t.styleId);else{s=Sr.getDrawingStyle(e.default);const i=()=>{this._changeItemStyle(t,Sr.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).selected))},r=()=>{this._changeItemStyle(t,Sr.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).default))};t._on("selected",i),t._on("deselected",r),t._funcChangeStyleToSelected=i,t._funcChangeStyleToDefault=r}this._changeItemStyle(t,s)}t._zIndex=this.id,t._drawingLayer=this,t._drawingLayerId=this.id;const o=this._arrFabricObject.length;let a=r.length;if(o)a=r.indexOf(this._arrFabricObject[o-1])+1;else for(let e=0;et.toLowerCase())):e=wi.arrMediaTypes,i?i.forEach((t=>t.toLowerCase())):i=wi.arrStyleSelectors;const r=Sr.getDrawingStyle(t);if(!r)throw new Error(`The 'drawingStyle' with id '${t}' doesn't exist.`);let n;for(let s of e)if(n=this.mapType_StateAndStyleId.get(s),n)for(let e of i){this._changeMediaTypeCurStyleInStyleSelector(s,e,r,!0),n[e]=t;for(let i of this._arrDrwaingItem)i._mediaType===s&&i._mapState_StyleId.set(e,t)}this.fabricCanvas.renderAll()}setDefaultStyle(t,e,i){const r=[];i&ii.DIMT_RECTANGLE&&r.push("rect"),i&ii.DIMT_QUADRILATERAL&&r.push("quad"),i&ii.DIMT_TEXT&&r.push("text"),i&ii.DIMT_ARC&&r.push("arc"),i&ii.DIMT_IMAGE&&r.push("image"),i&ii.DIMT_POLYGON&&r.push("polygon"),i&ii.DIMT_LINE&&r.push("line");const n=[];e&ri.DIS_DEFAULT&&n.push("default"),e&ri.DIS_SELECTED&&n.push("selected"),this._setDefaultStyle(t,r.length?r:null,n.length?n:null)}setMode(t){if("viewer"===(t=t.toLowerCase())){for(let t of this._arrDrwaingItem)t._setEditable(!1);this.fabricCanvas.discardActiveObject(),this.fabricCanvas.renderAll(),this.mode="viewer"}else{if("editor"!==t)throw new RangeError("Invalid value.");for(let t of this._arrDrwaingItem)t._setEditable(!0);this.mode="editor"}this._manager._switchPointerEvent()}getMode(){return this.mode}_setDimensions(t,e){this.fabricCanvas.setDimensions(t,e)}_setObjectFit(t){if(t=t.toLowerCase(),!["contain","cover"].includes(t))throw new Error(`Unsupported value '${t}'.`);this.fabricCanvas.lowerCanvasEl.style.objectFit=t,this.fabricCanvas.upperCanvasEl.style.objectFit=t}_getObjectFit(){return this.fabricCanvas.lowerCanvasEl.style.objectFit}renderAll(){for(let t of this._arrDrwaingItem){const e=this._getItemCurrentStyle(t);this._changeItemStyle(t,e,!0)}this.fabricCanvas.renderAll()}dispose(){this.clearDrawingItems(),1===this._manager._arrDrawingLayer.length&&(this.fabricCanvas.wrapperEl.style.pointerEvents="none",this.fabricCanvas.dispose(),this._arrDrwaingItem.length=0,this._arrFabricObject.length=0)}}br.DDN_LAYER_ID=1,br.DBR_LAYER_ID=2,br.DLR_LAYER_ID=3,br.USER_DEFINED_LAYER_BASE_ID=100,br.TIP_LAYER_ID=999;class Ir{constructor(){this._arrDrawingLayer=[]}createDrawingLayer(t,e){if(this.getDrawingLayer(e))throw new Error("Existed drawing layer id.");const i=new br(t,e,{enableRetinaScaling:!1});return i._manager=this,this._arrDrawingLayer.push(i),this._switchPointerEvent(),i}deleteDrawingLayer(t){const e=this.getDrawingLayer(t);if(!e)return;const i=this._arrDrawingLayer;e.dispose(),i.splice(i.indexOf(e),1),this._switchPointerEvent()}clearDrawingLayers(){for(let t of this._arrDrawingLayer)t.dispose();this._arrDrawingLayer.length=0}getDrawingLayer(t){for(let e of this._arrDrawingLayer)if(e.getId()===t)return e;return null}getAllDrawingLayers(){return Array.from(this._arrDrawingLayer)}getSelectedDrawingItems(){if(!this._arrDrawingLayer.length)return;const t=this._getFabricCanvas().getActiveObjects(),e=[];for(let i of t)e.push(i.getDrawingItem());return e}setDimensions(t,e){this._arrDrawingLayer.length&&this._arrDrawingLayer[0]._setDimensions(t,e)}setObjectFit(t){for(let e of this._arrDrawingLayer)e&&e._setObjectFit(t)}getObjectFit(){return this._arrDrawingLayer.length?this._arrDrawingLayer[0]._getObjectFit():null}setVisible(t){if(!this._arrDrawingLayer.length)return;this._getFabricCanvas().wrapperEl.style.display=t?"block":"none"}_getFabricCanvas(){return this._arrDrawingLayer.length?this._arrDrawingLayer[0].fabricCanvas:null}_switchPointerEvent(){if(this._arrDrawingLayer.length)for(let t of this._arrDrawingLayer)t.getMode()}}class xr extends Oi{constructor(t,e,i,r,n){super(t,{x:e,y:i,width:r,height:0},n),zi.set(this,void 0),Zi.set(this,void 0),this._fabricObject.paddingTop=15,this._fabricObject.calcTextHeight=function(){for(var t=0,e=0,i=this._textLines.length;e=0&&ze(this,Zi,setTimeout((()=>{this.set("visible",!1),this._drawingLayer&&this._drawingLayer.renderAll()}),Xe(this,zi,"f")),"f")}getDuration(){return Xe(this,zi,"f")}}zi=new WeakMap,Zi=new WeakMap;class Or{constructor(){qi.add(this),Ki.set(this,void 0),Ji.set(this,void 0),Qi.set(this,void 0),$i.set(this,!0),this._drawingLayerManager=new Ir}createDrawingLayerBaseCvs(t,e,i="contain"){if("number"!=typeof t||t<=1)throw new Error("Invalid 'width'.");if("number"!=typeof e||e<=1)throw new Error("Invalid 'height'.");if(!["contain","cover"].includes(i))throw new Error("Unsupported 'objectFit'.");const r=document.createElement("canvas");return r.width==t&&r.height==e||(r.width=t,r.height=e),r.style.objectFit=i,r}_createDrawingLayer(t,e,i,r){if(!this._layerBaseCvs){let n;try{n=this.getContentDimensions()}catch(t){if("Invalid content dimensions."!==(t.message||t))throw t}e||(e=(null==n?void 0:n.width)||1280),i||(i=(null==n?void 0:n.height)||720),r||(r=(null==n?void 0:n.objectFit)||"contain"),this._layerBaseCvs=this.createDrawingLayerBaseCvs(e,i,r)}const n=this._layerBaseCvs,s=this._drawingLayerManager.createDrawingLayer(n,t);return this._innerComponent.getElement("drawing-layer")||this._innerComponent.setElement("drawing-layer",n.parentElement),s}createDrawingLayer(){let t;for(let e=br.USER_DEFINED_LAYER_BASE_ID;;e++)if(!this._drawingLayerManager.getDrawingLayer(e)&&e!==br.TIP_LAYER_ID){t=e;break}return this._createDrawingLayer(t)}deleteDrawingLayer(t){var e;this._drawingLayerManager.deleteDrawingLayer(t),this._drawingLayerManager.getAllDrawingLayers().length||(null===(e=this._innerComponent)||void 0===e||e.removeElement("drawing-layer"),this._layerBaseCvs=null)}deleteUserDefinedDrawingLayer(t){if("number"!=typeof t)throw new TypeError("Invalid id.");if(tt.getId()>=0&&t.getId()!==br.TIP_LAYER_ID))}updateDrawingLayers(t){((t,e,i)=>{if(!(t<=1||e<=1)){if(!["contain","cover"].includes(i))throw new Error("Unsupported 'objectFit'.");this._drawingLayerManager.setDimensions({width:t,height:e},{backstoreOnly:!0}),this._drawingLayerManager.setObjectFit(i)}})(t.width,t.height,t.objectFit)}getSelectedDrawingItems(){return this._drawingLayerManager.getSelectedDrawingItems()}setTipConfig(t){if(!(Mi(e=t)&&T(e.topLeftPoint)&&ai(e.width))||e.width<=0||!ai(e.duration)||"coordinateBase"in e&&!["view","image"].includes(e.coordinateBase))throw new Error("Invalid tip config.");var e;ze(this,Ki,JSON.parse(JSON.stringify(t)),"f"),Xe(this,Ki,"f").coordinateBase||(Xe(this,Ki,"f").coordinateBase="view"),ze(this,Qi,t.duration,"f"),Xe(this,qi,"m",rr).call(this)}getTipConfig(){return Xe(this,Ki,"f")?Xe(this,Ki,"f"):null}setTipVisible(t){if("boolean"!=typeof t)throw new TypeError("Invalid value.");this._tip&&(this._tip.set("visible",t),this._drawingLayerOfTip&&this._drawingLayerOfTip.renderAll()),ze(this,$i,t,"f")}isTipVisible(){return Xe(this,$i,"f")}updateTipMessage(t){if(!Xe(this,Ki,"f"))throw new Error("Tip config is not set.");this._tipStyleId||(this._tipStyleId=Sr.createDrawingStyle({fillStyle:"#FFFFFF",paintMode:"fill",fontFamily:"Open Sans",fontSize:40})),this._drawingLayerOfTip||(this._drawingLayerOfTip=this._drawingLayerManager.getDrawingLayer(br.TIP_LAYER_ID)||this._createDrawingLayer(br.TIP_LAYER_ID)),this._tip?this._tip.set("text",t):this._tip=Xe(this,qi,"m",tr).call(this,t,Xe(this,Ki,"f").topLeftPoint.x,Xe(this,Ki,"f").topLeftPoint.y,Xe(this,Ki,"f").width,Xe(this,Ki,"f").coordinateBase,this._tipStyleId),Xe(this,qi,"m",er).call(this,this._tip,this._drawingLayerOfTip),this._tip.set("visible",Xe(this,$i,"f")),this._drawingLayerOfTip&&this._drawingLayerOfTip.renderAll(),Xe(this,Ji,"f")&&clearTimeout(Xe(this,Ji,"f")),Xe(this,Qi,"f")>=0&&ze(this,Ji,setTimeout((()=>{Xe(this,qi,"m",ir).call(this)}),Xe(this,Qi,"f")),"f")}}Ki=new WeakMap,Ji=new WeakMap,Qi=new WeakMap,$i=new WeakMap,qi=new WeakSet,tr=function(t,e,i,r,n,s){const o=new xr(t,e,i,r,s);return o.coordinateBase=n,o},er=function(t,e){e.hasDrawingItem(t)||e.addDrawingItems([t])},ir=function(){this._tip&&this._drawingLayerOfTip.removeDrawingItems([this._tip])},rr=function(){if(!this._tip)return;const t=Xe(this,Ki,"f");this._tip.coordinateBase=t.coordinateBase,this._tip.setTextRect({x:t.topLeftPoint.x,y:t.topLeftPoint.y,width:t.width,height:0}),this._tip.set("width",this._tip.get("width")),this._tip._drawingLayer&&this._tip._drawingLayer.renderAll()};class Ar extends HTMLElement{constructor(){super(),nr.set(this,void 0);const t=new DocumentFragment,e=document.createElement("div");e.setAttribute("class","wrapper"),t.appendChild(e),ze(this,nr,e,"f");const i=document.createElement("slot");i.setAttribute("name","single-frame-input-container"),e.append(i);const r=document.createElement("slot");r.setAttribute("name","content"),e.append(r);const n=document.createElement("slot");n.setAttribute("name","drawing-layer"),e.append(n);const s=document.createElement("style");s.textContent='\n.wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n}\n::slotted(canvas[slot="content"]) {\n object-fit: contain;\n pointer-events: none;\n}\n::slotted(div[slot="single-frame-input-container"]) {\n width: 1px;\n height: 1px;\n overflow: hidden;\n pointer-events: none;\n}\n::slotted(*) {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n ',t.appendChild(s),this.attachShadow({mode:"open"}).appendChild(t)}getWrapper(){return Xe(this,nr,"f")}setElement(t,e){if(!(e instanceof HTMLElement))throw new TypeError("Invalid 'el'.");if(!["content","single-frame-input-container","drawing-layer"].includes(t))throw new TypeError("Invalid 'slot'.");this.removeElement(t),e.setAttribute("slot",t),this.appendChild(e)}getElement(t){if(!["content","single-frame-input-container","drawing-layer"].includes(t))throw new TypeError("Invalid 'slot'.");return this.querySelector(`[slot="${t}"]`)}removeElement(t){var e;if(!["content","single-frame-input-container","drawing-layer"].includes(t))throw new TypeError("Invalid 'slot'.");null===(e=this.querySelectorAll(`[slot="${t}"]`))||void 0===e||e.forEach((t=>t.remove()))}}nr=new WeakMap,customElements.get("dce-component")||customElements.define("dce-component",Ar);class Rr extends Or{static get engineResourcePath(){return A(gt.engineResourcePaths).dce}static set defaultUIElementURL(t){Rr._defaultUIElementURL=t}static get defaultUIElementURL(){var t;return null===(t=Rr._defaultUIElementURL)||void 0===t?void 0:t.replace("@engineResourcePath/",Rr.engineResourcePath)}static async createInstance(t){const e=new Rr;return"string"==typeof t&&(t=t.replace("@engineResourcePath/",Rr.engineResourcePath)),await e.setUIElement(t||Rr.defaultUIElementURL),e}static _transformCoordinates(t,e,i,r,n,s,o){const a=s/r,h=o/n;t.x=Math.round(t.x/a+e),t.y=Math.round(t.y/h+i)}set _singleFrameMode(t){if(!["disabled","image","camera"].includes(t))throw new Error("Invalid value.");if(t!==Xe(this,gr,"f")){if(ze(this,gr,t,"f"),Xe(this,sr,"m",_r).call(this))ze(this,lr,null,"f"),this._videoContainer=null,this._innerComponent.removeElement("content"),this._innerComponent&&(this._innerComponent.addEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.setAttribute("title","Take a photo")),this._bgCamera&&(this._bgCamera.style.display="block");else if(this._innerComponent&&(this._innerComponent.removeEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.removeAttribute("title")),this._bgCamera&&(this._bgCamera.style.display="none"),!Xe(this,lr,"f")){const t=document.createElement("video");t.style.position="absolute",t.style.left="0",t.style.top="0",t.style.width="100%",t.style.height="100%",t.style.objectFit=this.getVideoFit(),t.setAttribute("autoplay","true"),t.setAttribute("playsinline","true"),t.setAttribute("muted","true"),["iPhone","iPad","Mac"].includes(He.OS)&&t.setAttribute("poster","data:image/gif;base64,R0lGODlhAQABAIEAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAgEAAEEBAA7"),ze(this,lr,t,"f");const e=document.createElement("div");e.append(t),e.style.overflow="hidden",this._videoContainer=e,this._innerComponent.setElement("content",e)}Xe(this,sr,"m",_r).call(this)||this._hideDefaultSelection?(this._selCam&&(this._selCam.style.display="none"),this._selRsl&&(this._selRsl.style.display="none"),this._selMinLtr&&(this._selMinLtr.style.display="none")):(this._selCam&&(this._selCam.style.display="block"),this._selRsl&&(this._selRsl.style.display="block"),this._selMinLtr&&(this._selMinLtr.style.display="block"),this._stopLoading())}}get _singleFrameMode(){return Xe(this,gr,"f")}get disposed(){return Xe(this,pr,"f")}constructor(){super(),sr.add(this),or.set(this,void 0),ar.set(this,void 0),hr.set(this,void 0),this.containerClassName="dce-video-container",lr.set(this,void 0),this.videoFit="contain",this._hideDefaultSelection=!1,this._divScanArea=null,this._divScanLight=null,this._bgLoading=null,this._selCam=null,this._bgCamera=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,cr.set(this,null),this.regionMaskFillStyle="rgba(0,0,0,0.5)",this.regionMaskStrokeStyle="rgb(254,142,20)",this.regionMaskLineWidth=6,ur.set(this,!1),dr.set(this,!1),fr.set(this,{width:0,height:0}),this._updateLayersTimeout=500,this._videoResizeListener=()=>{Xe(this,sr,"m",Er).call(this),this._updateLayersTimeoutId&&clearTimeout(this._updateLayersTimeoutId),this._updateLayersTimeoutId=setTimeout((()=>{this.disposed||(this.eventHandler.fire("videoEl:resized",null,{async:!1}),this.eventHandler.fire("content:updated",null,{async:!1}),this.isScanLaserVisible()&&Xe(this,sr,"m",Cr).call(this))}),this._updateLayersTimeout)},this._windowResizeListener=()=>{Rr._onLog&&Rr._onLog("window resize event triggered."),Xe(this,fr,"f").width===document.documentElement.clientWidth&&Xe(this,fr,"f").height===document.documentElement.clientHeight||(Xe(this,fr,"f").width=document.documentElement.clientWidth,Xe(this,fr,"f").height=document.documentElement.clientHeight,this._videoResizeListener())},gr.set(this,"disabled"),this._clickIptSingleFrameMode=()=>{if(!Xe(this,sr,"m",_r).call(this))return;let t;if(this._singleFrameInputContainer)t=this._singleFrameInputContainer.firstElementChild;else{t=document.createElement("input"),t.setAttribute("type","file"),"camera"===this._singleFrameMode?(t.setAttribute("capture",""),t.setAttribute("accept","image/*")):"image"===this._singleFrameMode&&(t.removeAttribute("capture"),t.setAttribute("accept",".jpg,.jpeg,.icon,.gif,.svg,.webp,.png,.bmp")),t.addEventListener("change",(async()=>{const e=t.files[0];t.value="";{const t=async t=>{let e=null,i=null;if("undefined"!=typeof createImageBitmap)try{if(e=await createImageBitmap(t),e)return e}catch(t){}var r;return e||(i=await(r=t,new Promise(((t,e)=>{let i=URL.createObjectURL(r),n=new Image;n.src=i,n.onload=()=>{URL.revokeObjectURL(n.src),t(n)},n.onerror=t=>{e(new Error("Can't convert blob to image : "+(t instanceof Event?t.type:t)))}})))),i},i=(t,e,i,r)=>{t.width==i&&t.height==r||(t.width=i,t.height=r);const n=t.getContext("2d");n.clearRect(0,0,t.width,t.height),n.drawImage(e,0,0)},r=await t(e),n=r instanceof HTMLImageElement?r.naturalWidth:r.width,s=r instanceof HTMLImageElement?r.naturalHeight:r.height;let o=this._cvsSingleFrameMode;const a=null==o?void 0:o.width,h=null==o?void 0:o.height;o||(o=document.createElement("canvas"),this._cvsSingleFrameMode=o),i(o,r,n,s),this._innerComponent.setElement("content",o),a===o.width&&h===o.height||this.eventHandler.fire("content:updated",null,{async:!1})}this._onSingleFrameAcquired&&setTimeout((()=>{this._onSingleFrameAcquired(this._cvsSingleFrameMode)}),0)})),t.style.position="absolute",t.style.top="-9999px",t.style.backgroundColor="transparent",t.style.color="transparent";const e=document.createElement("div");e.append(t),this._innerComponent.setElement("single-frame-input-container",e),this._singleFrameInputContainer=e}null==t||t.click()},mr.set(this,[]),this._capturedResultReceiver={onCapturedResultReceived:(t,e)=>{var i,r,n,s;if(this.disposed)return;if(this.clearAllInnerDrawingItems(),!t)return;const o=t.originalImageTag;if(!o)return;const a=t.items;if(!(null==a?void 0:a.length))return;const h=(null===(i=o.cropRegion)||void 0===i?void 0:i.left)||0,l=(null===(r=o.cropRegion)||void 0===r?void 0:r.top)||0,c=(null===(n=o.cropRegion)||void 0===n?void 0:n.right)?o.cropRegion.right-h:o.originalWidth,u=(null===(s=o.cropRegion)||void 0===s?void 0:s.bottom)?o.cropRegion.bottom-l:o.originalHeight,d=o.currentWidth,f=o.currentHeight,g=(t,e,i,r,n,s,o,a,h=[],l)=>{e.forEach((t=>Rr._transformCoordinates(t,i,r,n,s,o,a)));const c=new Di({points:[{x:e[0].x,y:e[0].y},{x:e[1].x,y:e[1].y},{x:e[2].x,y:e[2].y},{x:e[3].x,y:e[3].y}]},l);for(let t of h)c.addNote(t);t.addDrawingItems([c]),Xe(this,mr,"f").push(c)};let m,p;for(let t of a)switch(t.type){case mt.CRIT_ORIGINAL_IMAGE:break;case mt.CRIT_BARCODE:m=this.getDrawingLayer(br.DBR_LAYER_ID),p=[{name:"format",content:t.formatString},{name:"text",content:t.text}],(null==e?void 0:e.isBarcodeVerifyOpen)?t.verified?g(m,t.location.points,h,l,c,u,d,f,p):g(m,t.location.points,h,l,c,u,d,f,p,Sr.STYLE_ORANGE_STROKE_TRANSPARENT):g(m,t.location.points,h,l,c,u,d,f,p);break;case mt.CRIT_TEXT_LINE:m=this.getDrawingLayer(br.DLR_LAYER_ID),p=[{name:"text",content:t.text}],e.isLabelVerifyOpen?t.verified?g(m,t.location.points,h,l,c,u,d,f,p):g(m,t.location.points,h,l,c,u,d,f,p,Sr.STYLE_GREEN_STROKE_TRANSPARENT):g(m,t.location.points,h,l,c,u,d,f,p);break;case mt.CRIT_DETECTED_QUAD:m=this.getDrawingLayer(br.DDN_LAYER_ID),(null==e?void 0:e.isDetectVerifyOpen)?t.crossVerificationStatus===Tt.CVS_PASSED?g(m,t.location.points,h,l,c,u,d,f,[]):g(m,t.location.points,h,l,c,u,d,f,[],Sr.STYLE_BLUE_STROKE_TRANSPARENT):g(m,t.location.points,h,l,c,u,d,f,[]);break;case mt.CRIT_NORMALIZED_IMAGE:m=this.getDrawingLayer(br.DDN_LAYER_ID),(null==e?void 0:e.isNormalizeVerifyOpen)?t.crossVerificationStatus===Tt.CVS_PASSED?g(m,t.location.points,h,l,c,u,d,f,[]):g(m,t.location.points,h,l,c,u,d,f,[],Sr.STYLE_BLUE_STROKE_TRANSPARENT):g(m,t.location.points,h,l,c,u,d,f,[]);break;case mt.CRIT_PARSED_RESULT:break;default:throw new Error("Illegal item type.")}}},pr.set(this,!1),this.eventHandler=new ji,this.eventHandler.on("content:updated",(()=>{Xe(this,or,"f")&&clearTimeout(Xe(this,or,"f")),ze(this,or,setTimeout((()=>{if(this.disposed)return;let t;this._updateVideoContainer();try{t=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}this.updateDrawingLayers(t),this.updateConvertedRegion(t)}),0),"f")})),this.eventHandler.on("videoEl:resized",(()=>{Xe(this,ar,"f")&&clearTimeout(Xe(this,ar,"f")),ze(this,ar,setTimeout((()=>{this.disposed||this._updateVideoContainer()}),0),"f")}))}_setUIElement(t){this.UIElement=t,this._unbindUI(),this._bindUI()}async setUIElement(t){let e;if("string"==typeof t){let i=await Wi(t);e=document.createElement("div"),Object.assign(e.style,{width:"100%",height:"100%"}),e.attachShadow({mode:"open"}).appendChild(i.cloneNode(!0))}else e=t;this._setUIElement(e)}getUIElement(){return this.UIElement}_bindUI(){var t,e;if(!this.UIElement)throw new Error("Need to set 'UIElement'.");if(this._innerComponent)return;let i=this.UIElement;i=i.shadowRoot||i;let r=(null===(t=i.classList)||void 0===t?void 0:t.contains(this.containerClassName))?i:i.querySelector(`.${this.containerClassName}`);if(!r)throw Error(`Can not find the element with class '${this.containerClassName}'.`);if(this._innerComponent=document.createElement("dce-component"),r.appendChild(this._innerComponent),Xe(this,sr,"m",_r).call(this));else{const t=document.createElement("video");Object.assign(t.style,{position:"absolute",left:"0",top:"0",width:"100%",height:"100%",objectFit:this.getVideoFit()}),t.setAttribute("autoplay","true"),t.setAttribute("playsinline","true"),t.setAttribute("muted","true"),["iPhone","iPad","Mac"].includes(He.OS)&&t.setAttribute("poster","data:image/gif;base64,R0lGODlhAQABAIEAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAgEAAEEBAA7"),ze(this,lr,t,"f");const e=document.createElement("div");e.append(t),e.style.overflow="hidden",this._videoContainer=e,this._innerComponent.setElement("content",e)}if(this._selRsl=i.querySelector(".dce-sel-resolution"),this._selMinLtr=i.querySelector(".dlr-sel-minletter"),this._divScanArea=i.querySelector(".dce-scanarea"),this._divScanLight=i.querySelector(".dce-scanlight"),this._bgLoading=i.querySelector(".dce-bg-loading"),this._bgCamera=i.querySelector(".dce-bg-camera"),this._selCam=i.querySelector(".dce-sel-camera"),this._optGotRsl=i.querySelector(".dce-opt-gotResolution"),this._btnClose=i.querySelector(".dce-btn-close"),this._optGotMinLtr=i.querySelector(".dlr-opt-gotMinLtr"),this._selRsl&&(this._hideDefaultSelection||Xe(this,sr,"m",_r).call(this)||this._selRsl.options.length||(this._selRsl.innerHTML=['','','',''].join(""),this._optGotRsl=this._selRsl.options[0])),this._selMinLtr&&(this._hideDefaultSelection||Xe(this,sr,"m",_r).call(this)||this._selMinLtr.options.length||(this._selMinLtr.innerHTML=['','','','','','','','','','',''].join(""),this._optGotMinLtr=this._selMinLtr.options[0])),this.isScanLaserVisible()||Xe(this,sr,"m",Er).call(this),Xe(this,sr,"m",_r).call(this)&&(this._innerComponent&&(this._innerComponent.addEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.setAttribute("title","Take a photo")),this._bgCamera&&(this._bgCamera.style.display="block")),Xe(this,sr,"m",_r).call(this)||this._hideDefaultSelection?(this._selCam&&(this._selCam.style.display="none"),this._selRsl&&(this._selRsl.style.display="none"),this._selMinLtr&&(this._selMinLtr.style.display="none")):(this._selCam&&(this._selCam.style.display="block"),this._selRsl&&(this._selRsl.style.display="block"),this._selMinLtr&&(this._selMinLtr.style.display="block"),this._stopLoading()),window.ResizeObserver){this._resizeObserver||(this._resizeObserver=new ResizeObserver((t=>{var e;Rr._onLog&&Rr._onLog("resize observer triggered.");for(let i of t)i.target===(null===(e=this._innerComponent)||void 0===e?void 0:e.getWrapper())&&this._videoResizeListener()})));const t=null===(e=this._innerComponent)||void 0===e?void 0:e.getWrapper();t&&this._resizeObserver.observe(t)}Xe(this,fr,"f").width=document.documentElement.clientWidth,Xe(this,fr,"f").height=document.documentElement.clientHeight,window.addEventListener("resize",this._windowResizeListener)}_unbindUI(){var t,e,i,r;Xe(this,sr,"m",_r).call(this)?(this._innerComponent&&(this._innerComponent.removeEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.removeAttribute("title")),this._bgCamera&&(this._bgCamera.style.display="none")):this._stopLoading(),Xe(this,sr,"m",Er).call(this),null===(t=this._drawingLayerManager)||void 0===t||t.clearDrawingLayers(),null===(e=this._innerComponent)||void 0===e||e.removeElement("drawing-layer"),this._layerBaseCvs=null,this._drawingLayerOfMask=null,this._drawingLayerOfTip=null,null===(i=this._innerComponent)||void 0===i||i.remove(),this._innerComponent=null,ze(this,lr,null,"f"),null===(r=this._videoContainer)||void 0===r||r.remove(),this._videoContainer=null,this._selCam=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,this._divScanArea=null,this._divScanLight=null,this._singleFrameInputContainer&&(this._singleFrameInputContainer.remove(),this._singleFrameInputContainer=null),window.ResizeObserver&&this._resizeObserver&&this._resizeObserver.disconnect(),window.removeEventListener("resize",this._windowResizeListener)}_startLoading(){this._bgLoading&&(this._bgLoading.style.display="",this._bgLoading.style.animationPlayState="")}_stopLoading(){this._bgLoading&&(this._bgLoading.style.display="none",this._bgLoading.style.animationPlayState="paused")}_renderCamerasInfo(t,e){if(this._selCam){let i;this._selCam.textContent="";for(let r of e){const e=document.createElement("option");e.value=r.deviceId,e.innerText=r.label,this._selCam.append(e),r.deviceId&&t&&t.deviceId==r.deviceId&&(i=e)}this._selCam.value=i?i.value:""}let i=this.UIElement;if(i=i.shadowRoot||i,i.querySelector(".dce-macro-use-mobile-native-like-ui")){let t=i.querySelector(".dce-mn-cameras");if(t){t.textContent="";for(let i of e){const e=document.createElement("div");e.classList.add("dce-mn-camera-option"),e.setAttribute("data-davice-id",i.deviceId),e.textContent=i.label,t.append(e)}}}}_renderResolutionInfo(t){this._optGotRsl&&(this._optGotRsl.setAttribute("data-width",t.width),this._optGotRsl.setAttribute("data-height",t.height),this._optGotRsl.innerText="got "+t.width+"x"+t.height,this._selRsl&&this._optGotRsl.parentNode==this._selRsl&&(this._selRsl.value="got"));{let e=this.UIElement;e=(null==e?void 0:e.shadowRoot)||e;let i=null==e?void 0:e.querySelector(".dce-mn-resolution-box");if(i){let e="";if(t&&t.width&&t.height){let i=Math.max(t.width,t.height),r=Math.min(t.width,t.height);e=r<=1080?r+"P":i<3e3?"2K":Math.round(i/1e3)+"K"}i.textContent=e}}}getVideoElement(){return Xe(this,lr,"f")}isVideoLoaded(){return!(!Xe(this,lr,"f")||!this.cameraEnhancer)&&this.cameraEnhancer.isOpen()}setVideoFit(t){if(t=t.toLowerCase(),!["contain","cover"].includes(t))throw new Error(`Unsupported value '${t}'.`);if(this.videoFit=t,!Xe(this,lr,"f"))return;if(Xe(this,lr,"f").style.objectFit=t,Xe(this,sr,"m",_r).call(this))return;let e;this._updateVideoContainer();try{e=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}Xe(this,sr,"m",Tr).call(this,e,this.getConvertedRegion()),this.updateDrawingLayers(e)}getVideoFit(){return this.videoFit}getContentDimensions(){var t,e,i,r;let n,s,o;if(Xe(this,sr,"m",_r).call(this)?(n=null===(i=this._cvsSingleFrameMode)||void 0===i?void 0:i.width,s=null===(r=this._cvsSingleFrameMode)||void 0===r?void 0:r.height,o="contain"):(n=null===(t=Xe(this,lr,"f"))||void 0===t?void 0:t.videoWidth,s=null===(e=Xe(this,lr,"f"))||void 0===e?void 0:e.videoHeight,o=this.getVideoFit()),!n||!s)throw new Error("Invalid content dimensions.");return{width:n,height:s,objectFit:o}}updateConvertedRegion(t){const e=ki.convert(this.scanRegion,t.width,t.height);ze(this,cr,e,"f"),Xe(this,hr,"f")&&clearTimeout(Xe(this,hr,"f")),ze(this,hr,setTimeout((()=>{let t;try{t=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}Xe(this,sr,"m",vr).call(this,t,e),Xe(this,sr,"m",Tr).call(this,t,e)}),0),"f")}getConvertedRegion(){return Xe(this,cr,"f")}setScanRegion(t){if(null!=t&&!w(t)&&!I(t))throw TypeError("Invalid 'region'.");let e;this.scanRegion=t?JSON.parse(JSON.stringify(t)):null;try{e=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}this.updateConvertedRegion(e)}getScanRegion(){return JSON.parse(JSON.stringify(this.scanRegion))}getVisibleRegionOfVideo(t){if(!this.isVideoLoaded())throw new Error("The video is not loaded.");const e=Xe(this,lr,"f").videoWidth,i=Xe(this,lr,"f").videoHeight,r=this.getVideoFit(),{width:n,height:s}=this._innerComponent.getBoundingClientRect();if(n<=0||s<=0)throw new Error("Unable to get video dimensions. Video may not be rendered on the page.");let o;const a={x:0,y:0,width:e,height:i,isMeasuredInPercentage:!1};if("cover"===r&&(n/s1){const t=Xe(this,lr,"f").videoWidth,e=Xe(this,lr,"f").videoHeight,{width:r,height:n}=this._innerComponent.getBoundingClientRect(),s=t/e;if(r/nt.remove())),Xe(this,mr,"f").length=0}dispose(){this._unbindUI(),ze(this,pr,!0,"f")}}function Dr(t,e,i,r){if("a"===i&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?r:"a"===i?r.call(t):r?r.value:e.get(t)}function Lr(t,e,i,r,n){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?n.call(t,i):n?n.value=i:e.set(t,i),i}or=new WeakMap,ar=new WeakMap,hr=new WeakMap,lr=new WeakMap,cr=new WeakMap,ur=new WeakMap,dr=new WeakMap,fr=new WeakMap,gr=new WeakMap,mr=new WeakMap,pr=new WeakMap,sr=new WeakSet,_r=function(){return"disabled"!==this._singleFrameMode},vr=function(t,e){!e||0===e.x&&0===e.y&&e.width===t.width&&e.height===t.height?this.clearScanRegionMask():this.setScanRegionMask(e.x,e.y,e.width,e.height)},yr=function(){this._drawingLayerOfMask&&this._drawingLayerOfMask.setVisible(!0)},wr=function(){this._drawingLayerOfMask&&this._drawingLayerOfMask.setVisible(!1)},Cr=function(){this._divScanLight&&"none"==this._divScanLight.style.display&&(this._divScanLight.style.display="block")},Er=function(){this._divScanLight&&(this._divScanLight.style.display="none")},Tr=function(t,e){if(!this._divScanArea)return;if(!this._innerComponent.getElement("content"))return;const{width:i,height:r,objectFit:n}=t;e||(e={x:0,y:0,width:i,height:r});const{width:s,height:o}=this._innerComponent.getBoundingClientRect();if(s<=0||o<=0)return;const a=s/o,h=i/r;let l,c,u,d,f=1;if("contain"===n)a66||"Safari"===Nr.browser&&Nr.version>13||"OPR"===Nr.browser&&Nr.version>43||"Edge"===Nr.browser&&Nr.version,"function"==typeof SuppressedError&&SuppressedError;class Vr{static multiply(t,e){const i=[];for(let r=0;r<3;r++){const n=e.slice(3*r,3*r+3);for(let e=0;e<3;e++){const r=[t[e],t[e+3],t[e+6]].reduce(((t,e,i)=>t+e*n[i]),0);i.push(r)}}return i}static identity(){return[1,0,0,0,1,0,0,0,1]}static translate(t,e,i){return Vr.multiply(t,[1,0,0,0,1,0,e,i,1])}static rotate(t,e){var i=Math.cos(e),r=Math.sin(e);return Vr.multiply(t,[i,-r,0,r,i,0,0,0,1])}static scale(t,e,i){return Vr.multiply(t,[e,0,0,0,i,0,0,0,1])}}var Gr,Wr,Yr,Hr,Xr,zr,Zr,qr,Kr,Jr,Qr,$r,tn,en,rn,nn,sn,on,an,hn,ln,cn,un,dn,fn,gn,mn,pn,_n,vn,yn,wn,Cn,En,Tn,Sn,bn,In,xn,On,An,Rn,Dn,Ln,Mn,Fn,Pn,kn,Bn,Nn;!function(t){t.GREY="grey",t.GREY32="grey32",t.RGBA="rgba",t.RBGA="rbga",t.GRBA="grba",t.GBRA="gbra",t.BRGA="brga",t.BGRA="bgra"}(Gr||(Gr={}));class jn{static get version(){return"1.1.3"}static get webGLSupported(){return void 0===jn._webGLSupported&&(jn._webGLSupported=!!document.createElement("canvas").getContext("webgl")),jn._webGLSupported}get disposed(){return jr(this,Zr,"f")}constructor(){Wr.set(this,Gr.RGBA),Yr.set(this,null),Hr.set(this,null),Xr.set(this,null),this.useWebGLByDefault=!0,this._reusedCvs=null,this._reusedWebGLCvs=null,zr.set(this,null),Zr.set(this,!1)}drawImage(t,e,i,r,n,s){if(this.disposed)throw Error("The 'ImageDataGetter' instance has been disposed.");if(!i||!r)throw new Error("Invalid 'sourceWidth' or 'sourceHeight'.");if((null==s?void 0:s.bUseWebGL)&&!jn.webGLSupported)throw new Error("Your browser or machine may not support WebGL.");if(e instanceof HTMLVideoElement&&4!==e.readyState||e instanceof HTMLImageElement&&!e.complete)throw new Error("The source is not loaded.");let o;jn._onLog&&(o=Date.now(),jn._onLog("drawImage(), START: "+o));let a=0,h=0,l=i,c=r,u=0,d=0,f=i,g=r;n&&(n.sx&&(a=Math.round(n.sx)),n.sy&&(h=Math.round(n.sy)),n.sWidth&&(l=Math.round(n.sWidth)),n.sHeight&&(c=Math.round(n.sHeight)),n.dx&&(u=Math.round(n.dx)),n.dy&&(d=Math.round(n.dy)),n.dWidth&&(f=Math.round(n.dWidth)),n.dHeight&&(g=Math.round(n.dHeight)));let m,p=Gr.RGBA;if((null==s?void 0:s.pixelFormat)&&(p=s.pixelFormat),(null==s?void 0:s.bufferContainer)&&(m=s.bufferContainer,m.length<4*f*g))throw new Error("Unexpected size of the 'bufferContainer'.");const _=t;if(!jn.webGLSupported||!(this.useWebGLByDefault&&null==(null==s?void 0:s.bUseWebGL)||(null==s?void 0:s.bUseWebGL))){jn._onLog&&jn._onLog("drawImage() in context2d."),_.ctx2d||(_.ctx2d=_.getContext("2d",{willReadFrequently:!0}));const t=_.ctx2d;if(!t)throw new Error("Unable to get 'CanvasRenderingContext2D' from canvas.");return(_.width{const e=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,e),t.bufferData(t.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),t.STATIC_DRAW);const i=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,i),t.bufferData(t.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),t.STATIC_DRAW),{positions:e,texCoords:i}},i=t=>{const e=t.createTexture();return t.bindTexture(t.TEXTURE_2D,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),e},r=(t,e)=>{const i=t.createProgram();if(e.forEach((e=>t.attachShader(i,e))),t.linkProgram(i),!t.getProgramParameter(i,t.LINK_STATUS)){const e=new Error(`An error occured linking the program: ${t.getProgramInfoLog(i)}.`);throw e.name="WebGLError",e}return t.useProgram(i),i},n=(t,e,i)=>{const r=t.createShader(e);if(t.shaderSource(r,i),t.compileShader(r),!t.getShaderParameter(r,t.COMPILE_STATUS)){const e=new Error(`An error occured compiling the shader: ${t.getShaderInfoLog(r)}.`);throw e.name="WebGLError",e}return r},s="\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\n\nuniform mat3 u_matrix;\nuniform mat3 u_textureMatrix;\n\nvarying vec2 v_texCoord;\nvoid main(void) {\ngl_Position = vec4((u_matrix * vec3(a_position, 1)).xy, 0, 1.0);\nv_texCoord = vec4((u_textureMatrix * vec3(a_texCoord, 1)).xy, 0, 1.0).xy;\n}";let o="rgb";["rgba","rbga","grba","gbra","brga","bgra"].includes(p)&&(o=p.slice(0,3));const a=`\nprecision mediump float;\nvarying vec2 v_texCoord;\nuniform sampler2D u_image;\nuniform float uColorFactor;\n\nvoid main() {\nvec4 sample = texture2D(u_image, v_texCoord);\nfloat grey = 0.3 * sample.r + 0.59 * sample.g + 0.11 * sample.b;\ngl_FragColor = vec4(sample.${o} * (1.0 - uColorFactor) + (grey * uColorFactor), sample.a);\n}`,h=r(t,[n(t,t.VERTEX_SHADER,s),n(t,t.FRAGMENT_SHADER,a)]);Ur(this,Hr,{program:h,attribLocations:{vertexPosition:t.getAttribLocation(h,"a_position"),texPosition:t.getAttribLocation(h,"a_texCoord")},uniformLocations:{uSampler:t.getUniformLocation(h,"u_image"),uColorFactor:t.getUniformLocation(h,"uColorFactor"),uMatrix:t.getUniformLocation(h,"u_matrix"),uTextureMatrix:t.getUniformLocation(h,"u_textureMatrix")}},"f"),Ur(this,Xr,e(t),"f"),Ur(this,Yr,i(t),"f"),Ur(this,Wr,p,"f")}const n=(t,e,i)=>{t.bindBuffer(t.ARRAY_BUFFER,e),t.enableVertexAttribArray(i),t.vertexAttribPointer(i,2,t.FLOAT,!1,0,0)},s=(t,e,i)=>{const r=t.RGBA,n=t.RGBA,s=t.UNSIGNED_BYTE;t.bindTexture(t.TEXTURE_2D,e),t.texImage2D(t.TEXTURE_2D,0,r,n,s,i)},v=(t,e,s,o)=>{t.clearColor(0,0,0,1),t.clearDepth(1),t.enable(t.DEPTH_TEST),t.depthFunc(t.LEQUAL),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT),n(t,s.positions,e.attribLocations.vertexPosition),n(t,s.texCoords,e.attribLocations.texPosition),t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,o),t.uniform1i(e.uniformLocations.uSampler,0),t.uniform1f(e.uniformLocations.uColorFactor,[Gr.GREY,Gr.GREY32].includes(p)?1:0);let m,_,v=Vr.translate(Vr.identity(),-1,-1);v=Vr.scale(v,2,2),v=Vr.scale(v,1/t.canvas.width,1/t.canvas.height),m=Vr.translate(v,u,d),m=Vr.scale(m,f,g),t.uniformMatrix3fv(e.uniformLocations.uMatrix,!1,m),_=Vr.translate(Vr.identity(),a/i,h/r),_=Vr.scale(_,l/i,c/r),t.uniformMatrix3fv(e.uniformLocations.uTextureMatrix,!1,_),t.drawArrays(t.TRIANGLES,0,6)};s(t,jr(this,Yr,"f"),e),v(t,jr(this,Hr,"f"),jr(this,Xr,"f"),jr(this,Yr,"f"));const y=m||new Uint8Array(4*f*g);if(t.readPixels(u,d,f,g,t.RGBA,t.UNSIGNED_BYTE,y),255!==y[3]){jn._onLog&&jn._onLog("Incorrect WebGL drawing .");const t=new Error("WebGL error: incorrect drawing.");throw t.name="WebGLError",t}return jn._onLog&&jn._onLog("drawImage() in WebGL end. Costs: "+(Date.now()-o)),{context:t,pixelFormat:p===Gr.GREY?Gr.GREY32:p,bUseWebGL:!0}}catch(o){if(this.forceLoseContext(),null==(null==s?void 0:s.bUseWebGL))return jn._onLog&&jn._onLog("'drawImage()' in WebGL failed, try again in context2d."),this.useWebGLByDefault=!1,this.drawImage(t,e,i,r,n,Object.assign({},s,{bUseWebGL:!1}));throw o.name="WebGLError",o}}readCvsData(t,e,i){if(!(t instanceof CanvasRenderingContext2D||t instanceof WebGLRenderingContext))throw new Error("Invalid 'context'.");let r,n=0,s=0,o=t.canvas.width,a=t.canvas.height;if(e&&(e.x&&(n=e.x),e.y&&(s=e.y),e.width&&(o=e.width),e.height&&(a=e.height)),(null==i?void 0:i.length)<4*o*a)throw new Error("Unexpected size of the 'bufferContainer'.");if(t instanceof WebGLRenderingContext){const e=t;i?(e.readPixels(n,s,o,a,e.RGBA,e.UNSIGNED_BYTE,i),r=new Uint8Array(i.buffer,0,4*o*a)):(r=new Uint8Array(4*o*a),e.readPixels(n,s,o,a,e.RGBA,e.UNSIGNED_BYTE,r))}else if(t instanceof CanvasRenderingContext2D){let e;e=t.getImageData(n,s,o,a),r=new Uint8Array(e.data.buffer),null==i||i.set(r)}return r}transformPixelFormat(t,e,i,r){let n,s;if(jn._onLog&&(n=Date.now(),jn._onLog("transformPixelFormat(), START: "+n)),e===i)return jn._onLog&&jn._onLog("transformPixelFormat() end. Costs: "+(Date.now()-n)),r?new Uint8Array(t):t;const o=[Gr.RGBA,Gr.RBGA,Gr.GRBA,Gr.GBRA,Gr.BRGA,Gr.BGRA];if(o.includes(e))if(i===Gr.GREY){s=new Uint8Array(t.length/4);for(let e=0;eh||e.sy+e.sHeight>l)throw new Error("Invalid position.");null===(r=jn._onLog)||void 0===r||r.call(jn,"getImageData(), START: "+(c=Date.now()));const d=Math.round(e.sx),f=Math.round(e.sy),g=Math.round(e.sWidth),m=Math.round(e.sHeight),p=Math.round(e.dWidth),_=Math.round(e.dHeight);let v,y=(null==i?void 0:i.pixelFormat)||Gr.RGBA,w=null==i?void 0:i.bufferContainer;if(w&&(Gr.GREY===y&&w.length{this.disposed||r.includes(n)&&n.apply(i.target,s)}),0);else try{o=n.apply(i.target,s)}catch(t){}if(!0===o)break}}}dispose(){Lr(this,Kr,!0,"f")}}qr=new WeakMap,Kr=new WeakMap;const Vn=(t,e,i,r)=>{if(!i)return t;let n=e+Math.round((t-e)/i)*i;return r&&(n=Math.min(n,r)),n};class Gn{static get version(){return"2.0.18"}static isStorageAvailable(t){let e;try{e=window[t];const i="__storage_test__";return e.setItem(i,i),e.removeItem(i),!0}catch(t){return t instanceof DOMException&&(22===t.code||1014===t.code||"QuotaExceededError"===t.name||"NS_ERROR_DOM_QUOTA_REACHED"===t.name)&&e&&0!==e.length}}static findBestRearCameraInIOS(t,e){if(!t||!t.length)return null;let i=!1;if((null==e?void 0:e.getMainCamera)&&(i=!0),i){const e=["후면 카메라","背面カメラ","後置鏡頭","后置相机","กล้องด้านหลัง","बैक कैमरा","الكاميرا الخلفية","מצלמה אחורית","камера на задней панели","задня камера","задна камера","артқы камера","πίσω κάμερα","zadní fotoaparát","zadná kamera","tylny aparat","takakamera","stražnja kamera","rückkamera","kamera på baksidan","kamera belakang","kamera bak","hátsó kamera","fotocamera (posteriore)","câmera traseira","câmara traseira","cámara trasera","càmera posterior","caméra arrière","cameră spate","camera mặt sau","camera aan achterzijde","bagsidekamera","back camera","arka kamera"],i=t.find((t=>e.includes(t.label.toLowerCase())));return null==i?void 0:i.deviceId}{const e=["후면","背面","後置","后置","านหลัง","बैक","خلفية","אחורית","задняя","задней","задна","πίσω","zadní","zadná","tylny","trasera","traseira","taka","stražnja","spate","sau","rück","posteriore","posterior","hátsó","belakang","baksidan","bakre","bak","bagside","back","aртқы","arrière","arka","achterzijde"],i=["트리플","三镜头","三鏡頭","トリプル","สาม","ट्रिपल","ثلاثية","משולשת","үштік","тройная","тройна","потроєна","τριπλή","üçlü","trójobiektywowy","trostruka","trojný","trojitá","trippelt","trippel","triplă","triple","tripla","tiga","kolmois","ba camera"],r=["듀얼 와이드","雙廣角","双广角","デュアル広角","คู่ด้านหลังมุมกว้าง","ड्युअल वाइड","مزدوجة عريضة","כפולה רחבה","қос кең бұрышты","здвоєна ширококутна","двойная широкоугольная","двойна широкоъгълна","διπλή ευρεία","çift geniş","laajakulmainen kaksois","kép rộng mặt sau","kettős, széles látószögű","grande angular dupla","ganda","dwuobiektywowy","dwikamera","dvostruka široka","duální širokoúhlý","duálna širokouhlá","dupla grande-angular","dublă","dubbel vidvinkel","dual-weitwinkel","dual wide","dual con gran angular","dual","double","doppia con grandangolo","doble","dobbelt vidvinkelkamera"],n=t.filter((t=>{const i=t.label.toLowerCase();return e.some((t=>i.includes(t)))}));if(!n.length)return null;const s=n.find((t=>{const e=t.label.toLowerCase();return i.some((t=>e.includes(t)))}));if(s)return s.deviceId;const o=n.find((t=>{const e=t.label.toLowerCase();return r.some((t=>e.includes(t)))}));return o?o.deviceId:n[0].deviceId}}static findBestRearCamera(t,e){if(!t||!t.length)return null;if(["iPhone","iPad","Mac"].includes(Nr.OS))return Gn.findBestRearCameraInIOS(t,{getMainCamera:null==e?void 0:e.getMainCameraInIOS});const i=["후","背面","背置","後面","後置","后面","后置","านหลัง","หลัง","बैक","خلفية","אחורית","задняя","задня","задней","задна","πίσω","zadní","zadná","tylny","trás","trasera","traseira","taka","stražnja","spate","sau","rück","rear","posteriore","posterior","hátsó","darrere","belakang","baksidan","bakre","bak","bagside","back","aртқы","arrière","arka","achterzijde"];for(let e of t){const t=e.label.toLowerCase();if(t&&i.some((e=>t.includes(e)))&&/\b0(\b)?/.test(t))return e.deviceId}return["Android","HarmonyOS"].includes(Nr.OS)?t[t.length-1].deviceId:null}static findBestCamera(t,e,i){return t&&t.length?"environment"===e?this.findBestRearCamera(t,i):"user"===e?null:e?void 0:null:null}static async playVideo(t,e,i){if(!t)throw new Error("Invalid 'videoEl'.");if(!e)throw new Error("Invalid 'source'.");return new Promise((async(r,n)=>{let s;const o=()=>{t.removeEventListener("loadstart",c),t.removeEventListener("abort",u),t.removeEventListener("play",d),t.removeEventListener("error",f),t.removeEventListener("loadedmetadata",p)};let a=!1;const h=()=>{a=!0,s&&clearTimeout(s),o(),r(t)},l=t=>{s&&clearTimeout(s),o(),n(t)},c=()=>{t.addEventListener("abort",u,{once:!0})},u=()=>{const t=new Error("Video playing was interrupted.");t.name="AbortError",l(t)},d=()=>{h()},f=()=>{l(new Error(`Video error ${t.error.code}: ${t.error.message}.`))};let g;const m=new Promise((t=>{g=t})),p=()=>{g()};if(t.addEventListener("loadstart",c,{once:!0}),t.addEventListener("play",d,{once:!0}),t.addEventListener("error",f,{once:!0}),t.addEventListener("loadedmetadata",p,{once:!0}),"string"==typeof e||e instanceof String?t.src=e:t.srcObject=e,t.autoplay&&await new Promise((t=>{setTimeout(t,1e3)})),!a){i&&(s=setTimeout((()=>{o(),n(new Error("Failed to play video. Timeout."))}),i)),await m;try{await t.play(),h()}catch(t){console.warn("1st play error: "+((null==t?void 0:t.message)||t))}if(!a)try{await t.play(),h()}catch(t){console.warn("2rd play error: "+((null==t?void 0:t.message)||t)),l(t)}}}))}static async testCameraAccess(t){var e,i;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))return{ok:!1,errorName:"InsecureContext",errorMessage:"Insecure context."};let r;try{r=t?await navigator.mediaDevices.getUserMedia(t):await navigator.mediaDevices.getUserMedia({video:!0})}catch(t){return{ok:!1,errorName:t.name,errorMessage:t.message}}finally{null==r||r.getTracks().forEach((t=>{t.stop()}))}return{ok:!0}}get state(){if(!Dr(this,un,"f"))return"closed";if("pending"===Dr(this,un,"f"))return"opening";if("fulfilled"===Dr(this,un,"f"))return"opened";throw new Error("Unknown state.")}set ifSaveLastUsedCamera(t){t?Gn.isStorageAvailable("localStorage")?Lr(this,an,!0,"f"):(Lr(this,an,!1,"f"),console.warn("Local storage is unavailable")):Lr(this,an,!1,"f")}get ifSaveLastUsedCamera(){return Dr(this,an,"f")}get isVideoPlaying(){return!(!Dr(this,$r,"f")||Dr(this,$r,"f").paused)&&"opened"===this.state}set tapFocusEventBoundEl(t){var e,i,r;if(!(t instanceof HTMLElement)&&null!=t)throw new TypeError("Invalid 'element'.");null===(e=Dr(this,_n,"f"))||void 0===e||e.removeEventListener("click",Dr(this,pn,"f")),null===(i=Dr(this,_n,"f"))||void 0===i||i.removeEventListener("touchend",Dr(this,pn,"f")),null===(r=Dr(this,_n,"f"))||void 0===r||r.removeEventListener("touchmove",Dr(this,mn,"f")),Lr(this,_n,t,"f"),t&&(window.TouchEvent&&["Android","HarmonyOS","iPhone","iPad"].includes(Nr.OS)?(t.addEventListener("touchend",Dr(this,pn,"f")),t.addEventListener("touchmove",Dr(this,mn,"f"))):t.addEventListener("click",Dr(this,pn,"f")))}get tapFocusEventBoundEl(){return Dr(this,_n,"f")}get disposed(){return Dr(this,In,"f")}constructor(t){var e,i;Qr.add(this),$r.set(this,null),tn.set(this,void 0),en.set(this,(()=>{"opened"===this.state&&Dr(this,Cn,"f").fire("resumed",null,{target:this,async:!1})})),rn.set(this,(()=>{Dr(this,Cn,"f").fire("paused",null,{target:this,async:!1})})),nn.set(this,void 0),sn.set(this,void 0),this.cameraOpenTimeout=15e3,this._arrCameras=[],on.set(this,void 0),an.set(this,!1),this.ifSkipCameraInspection=!1,this.selectIOSRearMainCameraAsDefault=!1,hn.set(this,void 0),ln.set(this,!0),cn.set(this,void 0),un.set(this,void 0),dn.set(this,!1),this._focusParameters={maxTimeout:400,minTimeout:300,kTimeout:void 0,oldDistance:null,fds:null,isDoingFocus:0,taskBackToContinous:null,curFocusTaskId:0,focusCancelableTime:1500,defaultFocusAreaSizeRatio:6,focusBackToContinousTime:5e3,tapFocusMinDistance:null,tapFocusMaxDistance:null,focusArea:null,tempBufferContainer:null,defaultTempBufferContainerLenRatio:1/4},fn.set(this,!1),this._focusSupported=!0,this.calculateCoordInVideo=(t,e)=>{let i,r;const n=window.getComputedStyle(Dr(this,$r,"f")).objectFit,s=this.getResolution(),o=Dr(this,$r,"f").getBoundingClientRect(),a=o.left,h=o.top,{width:l,height:c}=Dr(this,$r,"f").getBoundingClientRect();if(l<=0||c<=0)throw new Error("Unable to get video dimensions. Video may not be rendered on the page.");const u=l/c,d=s.width/s.height;let f=1;if("contain"===n)d>u?(f=l/s.width,i=(t-a)/f,r=(e-h-(c-l/d)/2)/f):(f=c/s.height,r=(e-h)/f,i=(t-a-(l-c*d)/2)/f);else{if("cover"!==n)throw new Error("Unsupported object-fit.");d>u?(f=c/s.height,r=(e-h)/f,i=(t-a+(c*d-l)/2)/f):(f=l/s.width,i=(t-a)/f,r=(e-h+(l/d-c)/2)/f)}return{x:i,y:r}},gn.set(this,!1),mn.set(this,(()=>{Lr(this,gn,!0,"f")})),pn.set(this,(async t=>{var e;if(Dr(this,gn,"f"))return void Lr(this,gn,!1,"f");if(!Dr(this,fn,"f"))return;if(!this.isVideoPlaying)return;if(!Dr(this,tn,"f"))return;if(!this._focusSupported)return;if(!this._focusParameters.fds&&(this._focusParameters.fds=null===(e=this.getCameraCapabilities())||void 0===e?void 0:e.focusDistance,!this._focusParameters.fds))return void(this._focusSupported=!1);if(null==this._focusParameters.kTimeout&&(this._focusParameters.kTimeout=(this._focusParameters.maxTimeout-this._focusParameters.minTimeout)/(1/this._focusParameters.fds.min-1/this._focusParameters.fds.max)),1==this._focusParameters.isDoingFocus)return;let i,r;if(this._focusParameters.taskBackToContinous&&(clearTimeout(this._focusParameters.taskBackToContinous),this._focusParameters.taskBackToContinous=null),t instanceof MouseEvent)i=t.clientX,r=t.clientY;else{if(!(t instanceof TouchEvent))throw new Error("Unknown event type.");if(!t.changedTouches.length)return;i=t.changedTouches[0].clientX,r=t.changedTouches[0].clientY}const n=this.getResolution(),s=2*Math.round(Math.min(n.width,n.height)/this._focusParameters.defaultFocusAreaSizeRatio/2);let o;try{o=this.calculateCoordInVideo(i,r)}catch(t){}if(o.x<0||o.x>n.width||o.y<0||o.y>n.height)return;const a={x:o.x+"px",y:o.y+"px"},h=s+"px",l=h;let c;Gn._onLog&&(c=Date.now());try{await Dr(this,Qr,"m",kn).call(this,a,h,l,this._focusParameters.tapFocusMinDistance,this._focusParameters.tapFocusMaxDistance)}catch(t){if(Gn._onLog)throw Gn._onLog(t),t}Gn._onLog&&Gn._onLog(`Tap focus costs: ${Date.now()-c} ms`),this._focusParameters.taskBackToContinous=setTimeout((()=>{var t;Gn._onLog&&Gn._onLog("Back to continuous focus."),null===(t=Dr(this,tn,"f"))||void 0===t||t.applyConstraints({advanced:[{focusMode:"continuous"}]}).catch((()=>{}))}),this._focusParameters.focusBackToContinousTime),Dr(this,Cn,"f").fire("tapfocus",null,{target:this,async:!1})})),_n.set(this,null),vn.set(this,1),yn.set(this,{x:0,y:0}),this.updateVideoElWhenSoftwareScaled=()=>{if(!Dr(this,$r,"f"))return;const t=Dr(this,vn,"f");if(t<1)throw new RangeError("Invalid scale value.");if(1===t)Dr(this,$r,"f").style.transform="";else{const e=window.getComputedStyle(Dr(this,$r,"f")).objectFit,i=Dr(this,$r,"f").videoWidth,r=Dr(this,$r,"f").videoHeight,{width:n,height:s}=Dr(this,$r,"f").getBoundingClientRect();if(n<=0||s<=0)throw new Error("Unable to get video dimensions. Video may not be rendered on the page.");const o=n/s,a=i/r;let h=1;"contain"===e?h=oo?s/(i/t):n/(r/t));const l=h*(1-1/t)*(i/2-Dr(this,yn,"f").x),c=h*(1-1/t)*(r/2-Dr(this,yn,"f").y);Dr(this,$r,"f").style.transform=`translate(${l}px, ${c}px) scale(${t})`}},wn.set(this,(function(){if(!(this.data instanceof Uint8Array||this.data instanceof Uint8ClampedArray))throw new TypeError("Invalid data.");if("number"!=typeof this.width||this.width<=0)throw new Error("Invalid width.");if("number"!=typeof this.height||this.height<=0)throw new Error("Invalid height.");const t=document.createElement("canvas");let e;if(t.width=this.width,t.height=this.height,this.pixelFormat===Gr.GREY){e=new Uint8ClampedArray(this.width*this.height*4);for(let t=0;t{var t,e;if("visible"===document.visibilityState){if(Gn._onLog&&Gn._onLog("document visible. video paused: "+(null===(t=Dr(this,$r,"f"))||void 0===t?void 0:t.paused)),"opening"==this.state||"opened"==this.state){let e=!1;if(!this.isVideoPlaying){Gn._onLog&&Gn._onLog("document visible. Not auto resume. 1st resume start.");try{await this.resume(),e=!0}catch(t){Gn._onLog&&Gn._onLog("document visible. 1st resume video failed, try open instead.")}e||await Dr(this,Qr,"m",Dn).call(this)}if(await new Promise((t=>setTimeout(t,300))),!this.isVideoPlaying){Gn._onLog&&Gn._onLog("document visible. 1st open failed. 2rd resume start."),e=!1;try{await this.resume(),e=!0}catch(t){Gn._onLog&&Gn._onLog("document visible. 2rd resume video failed, try open instead.")}e||await Dr(this,Qr,"m",Dn).call(this)}}}else"hidden"===document.visibilityState&&(Gn._onLog&&Gn._onLog("document hidden. video paused: "+(null===(e=Dr(this,$r,"f"))||void 0===e?void 0:e.paused)),"opening"==this.state||"opened"==this.state&&this.isVideoPlaying&&this.pause())})),In.set(this,!1),(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia)||setTimeout((()=>{Gn.onWarning&&Gn.onWarning("The browser is too old or the page is loaded from an insecure origin.")}),0),this.defaultConstraints={video:{facingMode:{ideal:"environment"}}},this.resetMediaStreamConstraints(),t instanceof HTMLVideoElement&&this.setVideoEl(t),Lr(this,Cn,new Un,"f"),this.imageDataGetter=new jn,document.addEventListener("visibilitychange",Dr(this,bn,"f"))}setVideoEl(t){if(!(t&&t instanceof HTMLVideoElement))throw new Error("Invalid 'videoEl'.");t.addEventListener("play",Dr(this,en,"f")),t.addEventListener("pause",Dr(this,rn,"f")),Lr(this,$r,t,"f")}getVideoEl(){return Dr(this,$r,"f")}releaseVideoEl(){var t,e;null===(t=Dr(this,$r,"f"))||void 0===t||t.removeEventListener("play",Dr(this,en,"f")),null===(e=Dr(this,$r,"f"))||void 0===e||e.removeEventListener("pause",Dr(this,rn,"f")),Lr(this,$r,null,"f")}isVideoLoaded(){return!!Dr(this,$r,"f")&&4==Dr(this,$r,"f").readyState}async open(){if(Dr(this,cn,"f")&&!Dr(this,ln,"f")){if("pending"===Dr(this,un,"f"))return Dr(this,cn,"f");if("fulfilled"===Dr(this,un,"f"))return}Dr(this,Cn,"f").fire("before:open",null,{target:this}),await Dr(this,Qr,"m",Dn).call(this),Dr(this,Cn,"f").fire("played",null,{target:this,async:!1}),Dr(this,Cn,"f").fire("opened",null,{target:this,async:!1})}async close(){if("closed"===this.state)return;Dr(this,Cn,"f").fire("before:close",null,{target:this});const t=Dr(this,cn,"f");if(Dr(this,Qr,"m",Mn).call(this),t&&"pending"===Dr(this,un,"f")){try{await t}catch(t){}if(!1===Dr(this,ln,"f")){const t=new Error("'close()' was interrupted.");throw t.name="AbortError",t}}Lr(this,cn,null,"f"),Lr(this,un,null,"f"),Dr(this,Cn,"f").fire("closed",null,{target:this,async:!1})}pause(){if(!this.isVideoLoaded())throw new Error("Video is not loaded.");if("opened"!==this.state)throw new Error("Camera or video is not open.");Dr(this,$r,"f").pause()}async resume(){if(!this.isVideoLoaded())throw new Error("Video is not loaded.");if("opened"!==this.state)throw new Error("Camera or video is not open.");await Dr(this,$r,"f").play()}async setCamera(t){if("string"!=typeof t)throw new TypeError("Invalid 'deviceId'.");if("object"!=typeof Dr(this,nn,"f").video&&(Dr(this,nn,"f").video={}),delete Dr(this,nn,"f").video.facingMode,Dr(this,nn,"f").video.deviceId={exact:t},!("closed"===this.state||this.videoSrc||"opening"===this.state&&Dr(this,ln,"f"))){Dr(this,Cn,"f").fire("before:camera:change",[],{target:this,async:!1}),await Dr(this,Qr,"m",Ln).call(this);try{this.resetSoftwareScale()}catch(t){}return Dr(this,sn,"f")}}async switchToFrontCamera(t){if("object"!=typeof Dr(this,nn,"f").video&&(Dr(this,nn,"f").video={}),(null==t?void 0:t.resolution)&&(Dr(this,nn,"f").video.width={ideal:t.resolution.width},Dr(this,nn,"f").video.height={ideal:t.resolution.height}),delete Dr(this,nn,"f").video.deviceId,Dr(this,nn,"f").video.facingMode={exact:"user"},Lr(this,on,null,"f"),!("closed"===this.state||this.videoSrc||"opening"===this.state&&Dr(this,ln,"f"))){Dr(this,Cn,"f").fire("before:camera:change",[],{target:this,async:!1}),Dr(this,Qr,"m",Ln).call(this);try{this.resetSoftwareScale()}catch(t){}return Dr(this,sn,"f")}}getCamera(){var t;if(Dr(this,sn,"f"))return Dr(this,sn,"f");{let e=(null===(t=Dr(this,nn,"f").video)||void 0===t?void 0:t.deviceId)||"";if(e){e=e.exact||e.ideal||e;for(let t of this._arrCameras)if(t.deviceId===e)return JSON.parse(JSON.stringify(t))}return{deviceId:"",label:"",_checked:!1}}}async _getCameras(t){var e,i;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))throw new Error("Failed to access the camera because the browser is too old or the page is loaded from an insecure origin.");let r;if(t){let t=await navigator.mediaDevices.getUserMedia({video:!0});r=(await navigator.mediaDevices.enumerateDevices()).filter((t=>"videoinput"===t.kind)),t.getTracks().forEach((t=>{t.stop()}))}else r=(await navigator.mediaDevices.enumerateDevices()).filter((t=>"videoinput"===t.kind));const n=[],s=[];if(this._arrCameras)for(let t of this._arrCameras)t._checked&&s.push(t);for(let t=0;t"videoinput"===t.kind));return i&&i.length&&!i[0].deviceId?this._getCameras(!0):this._getCameras(!1)}async getAllCameras(){return this.getCameras()}async setResolution(t,e,i){if("number"!=typeof t||t<=0)throw new TypeError("Invalid 'width'.");if("number"!=typeof e||e<=0)throw new TypeError("Invalid 'height'.");if("object"!=typeof Dr(this,nn,"f").video&&(Dr(this,nn,"f").video={}),i?(Dr(this,nn,"f").video.width={exact:t},Dr(this,nn,"f").video.height={exact:e}):(Dr(this,nn,"f").video.width={ideal:t},Dr(this,nn,"f").video.height={ideal:e}),"closed"===this.state||this.videoSrc||"opening"===this.state&&Dr(this,ln,"f"))return null;Dr(this,Cn,"f").fire("before:resolution:change",[],{target:this,async:!1}),await Dr(this,Qr,"m",Ln).call(this);try{this.resetSoftwareScale()}catch(t){}const r=this.getResolution();return{width:r.width,height:r.height}}getResolution(){if("opened"===this.state&&this.videoSrc&&Dr(this,$r,"f"))return{width:Dr(this,$r,"f").videoWidth,height:Dr(this,$r,"f").videoHeight};if(Dr(this,tn,"f")){const t=Dr(this,tn,"f").getSettings();return{width:t.width,height:t.height}}if(this.isVideoLoaded())return{width:Dr(this,$r,"f").videoWidth,height:Dr(this,$r,"f").videoHeight};{const t={width:0,height:0};let e=Dr(this,nn,"f").video.width||0,i=Dr(this,nn,"f").video.height||0;return e&&(t.width=e.exact||e.ideal||e),i&&(t.height=i.exact||i.ideal||i),t}}async getResolutions(t){var e,i,r,n,s,o,a,h,l,c,u;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))throw new Error("Failed to access the camera because the browser is too old or the page is loaded from an insecure origin.");let d="";const f=(t,e)=>{const i=Dr(this,Tn,"f").get(t);if(!i||!i.length)return!1;for(let t of i)if(t.width===e.width&&t.height===e.height)return!0;return!1};if(this._mediaStream){d=null===(u=Dr(this,sn,"f"))||void 0===u?void 0:u.deviceId;let e=Dr(this,Tn,"f").get(d);if(e&&!t)return JSON.parse(JSON.stringify(e));e=[],Dr(this,Tn,"f").set(d,e),Lr(this,dn,!0,"f");try{for(let t of this.detectedResolutions){await Dr(this,tn,"f").applyConstraints({width:{ideal:t.width},height:{ideal:t.height}}),Dr(this,Qr,"m",On).call(this);const i=Dr(this,tn,"f").getSettings(),r={width:i.width,height:i.height};f(d,r)||e.push({width:r.width,height:r.height})}}catch(t){throw Dr(this,Qr,"m",Mn).call(this),Lr(this,dn,!1,"f"),t}try{await Dr(this,Qr,"m",Dn).call(this)}catch(t){if("AbortError"===t.name)return e;throw t}finally{Lr(this,dn,!1,"f")}return e}{const e=async(t,e,i)=>{const r={video:{deviceId:{exact:t},width:{ideal:e},height:{ideal:i}}};let n=null;try{n=await navigator.mediaDevices.getUserMedia(r)}catch(t){return null}if(!n)return null;const s=n.getVideoTracks();let o=null;try{const t=s[0].getSettings();o={width:t.width,height:t.height}}catch(t){const e=document.createElement("video");e.srcObject=n,o={width:e.videoWidth,height:e.videoHeight},e.srcObject=null}return s.forEach((t=>{t.stop()})),o};let i=(null===(s=null===(n=null===(r=Dr(this,nn,"f"))||void 0===r?void 0:r.video)||void 0===n?void 0:n.deviceId)||void 0===s?void 0:s.exact)||(null===(h=null===(a=null===(o=Dr(this,nn,"f"))||void 0===o?void 0:o.video)||void 0===a?void 0:a.deviceId)||void 0===h?void 0:h.ideal)||(null===(c=null===(l=Dr(this,nn,"f"))||void 0===l?void 0:l.video)||void 0===c?void 0:c.deviceId);if(!i)return[];let u=Dr(this,Tn,"f").get(i);if(u&&!t)return JSON.parse(JSON.stringify(u));u=[],Dr(this,Tn,"f").set(i,u);for(let t of this.detectedResolutions){const r=await e(i,t.width,t.height);r&&!f(i,r)&&u.push({width:r.width,height:r.height})}return u}}async setMediaStreamConstraints(t,e){if(!(t=>{return null!==t&&"[object Object]"===(e=t,Object.prototype.toString.call(e));var e})(t))throw new TypeError("Invalid 'mediaStreamConstraints'.");Lr(this,nn,JSON.parse(JSON.stringify(t)),"f"),Lr(this,on,null,"f"),e&&Dr(this,Qr,"m",Ln).call(this)}getMediaStreamConstraints(){return JSON.parse(JSON.stringify(Dr(this,nn,"f")))}resetMediaStreamConstraints(){Lr(this,nn,this.defaultConstraints?JSON.parse(JSON.stringify(this.defaultConstraints)):null,"f")}getCameraCapabilities(){if(!Dr(this,tn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");return Dr(this,tn,"f").getCapabilities?Dr(this,tn,"f").getCapabilities():{}}getCameraSettings(){if(!Dr(this,tn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");return Dr(this,tn,"f").getSettings()}async turnOnTorch(){if(!Dr(this,tn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const t=this.getCameraCapabilities();if(!(null==t?void 0:t.torch))throw Error("Not supported.");await Dr(this,tn,"f").applyConstraints({advanced:[{torch:!0}]})}async turnOffTorch(){if(!Dr(this,tn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const t=this.getCameraCapabilities();if(!(null==t?void 0:t.torch))throw Error("Not supported.");await Dr(this,tn,"f").applyConstraints({advanced:[{torch:!1}]})}async setColorTemperature(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(!Dr(this,tn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const r=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.colorTemperature;if(!r)throw Error("Not supported.");return e&&(tr.max&&(t=r.max),t=Vn(t,r.min,r.step,r.max)),await Dr(this,tn,"f").applyConstraints({advanced:[{colorTemperature:t,whiteBalanceMode:"manual"}]}),t}getColorTemperature(){return this.getCameraSettings().colorTemperature||0}async setExposureCompensation(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(!Dr(this,tn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const r=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.exposureCompensation;if(!r)throw Error("Not supported.");return e&&(tr.max&&(t=r.max),t=Vn(t,r.min,r.step,r.max)),await Dr(this,tn,"f").applyConstraints({advanced:[{exposureCompensation:t}]}),t}getExposureCompensation(){return this.getCameraSettings().exposureCompensation||0}async setFrameRate(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(!Dr(this,tn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");let r=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.frameRate;if(!r)throw Error("Not supported.");e&&(tr.max&&(t=r.max));const n=this.getResolution();return await Dr(this,tn,"f").applyConstraints({width:{ideal:Math.max(n.width,n.height)},frameRate:t}),t}getFrameRate(){return this.getCameraSettings().frameRate}async setFocus(t,e){if("object"!=typeof t||Array.isArray(t)||null==t)throw new TypeError("Invalid 'settings'.");if(!Dr(this,tn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const i=this.getCameraCapabilities(),r=null==i?void 0:i.focusMode,n=null==i?void 0:i.focusDistance;if(!r)throw Error("Not supported.");if("string"!=typeof t.mode)throw TypeError("Invalid 'mode'.");const s=t.mode.toLowerCase();if(!r.includes(s))throw Error("Unsupported focus mode.");if("manual"===s){if(!n)throw Error("Manual focus unsupported.");if(t.hasOwnProperty("distance")){let i=t.distance;e&&(in.max&&(i=n.max),i=Vn(i,n.min,n.step,n.max)),this._focusParameters.focusArea=null,await Dr(this,tn,"f").applyConstraints({advanced:[{focusMode:s,focusDistance:i}]})}else{if(!t.area)throw new Error("'distance' or 'area' should be specified in 'manual' mode.");{const e=t.area.centerPoint;let i=t.area.width,r=t.area.height;if(!i||!r){const t=this.getResolution();i||(i=2*Math.round(Math.min(t.width,t.height)/this._focusParameters.defaultFocusAreaSizeRatio/2)+"px"),r||(r=2*Math.round(Math.min(t.width,t.height)/this._focusParameters.defaultFocusAreaSizeRatio/2)+"px")}this._focusParameters.focusArea={centerPoint:{x:e.x,y:e.y},width:i,height:r},await Dr(this,Qr,"m",kn).call(this,e,i,r)}}}else this._focusParameters.focusArea=null,await Dr(this,tn,"f").applyConstraints({advanced:[{focusMode:s}]})}getFocus(){const t=this.getCameraSettings(),e=t.focusMode;return e?"manual"===e?this._focusParameters.focusArea?{mode:"manual",area:JSON.parse(JSON.stringify(this._focusParameters.focusArea))}:{mode:"manual",distance:t.focusDistance}:{mode:e}:null}async enableTapToFocus(){Lr(this,fn,!0,"f")}disableTapToFocus(){Lr(this,fn,!1,"f")}isTapToFocusEnabled(){return Dr(this,fn,"f")}async setZoom(t){if("object"!=typeof t||Array.isArray(t)||null==t)throw new TypeError("Invalid 'settings'.");if("number"!=typeof t.factor)throw new TypeError("Illegal type of 'factor'.");if(t.factor<1)throw new RangeError("Invalid 'factor'.");if("opened"!==this.state)throw new Error("Video is not playing.");t.centerPoint?Dr(this,Qr,"m",Bn).call(this,t.centerPoint):this.resetScaleCenter();try{if(Dr(this,Qr,"m",Nn).call(this,Dr(this,yn,"f"))){const e=await this.setHardwareScale(t.factor,!0);let i=this.getHardwareScale();1==i&&1!=e&&(i=e),t.factor>i?this.setSoftwareScale(t.factor/i):this.setSoftwareScale(1)}else await this.setHardwareScale(1),this.setSoftwareScale(t.factor)}catch(e){const i=e.message||e;if("Not supported."!==i&&"Camera is not open."!==i)throw e;this.setSoftwareScale(t.factor)}}getZoom(){if("opened"!==this.state)throw new Error("Video is not playing.");let t=1;try{t=this.getHardwareScale()}catch(t){if("Camera is not open."!==(t.message||t))throw t}return{factor:t*Dr(this,vn,"f")}}async resetZoom(){await this.setZoom({factor:1})}async setHardwareScale(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(t<1)throw new RangeError("Invalid 'value'.");if(!Dr(this,tn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const r=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.zoom;if(!r)throw Error("Not supported.");return e&&(tr.max&&(t=r.max),t=Vn(t,r.min,r.step,r.max)),await Dr(this,tn,"f").applyConstraints({advanced:[{zoom:t}]}),t}getHardwareScale(){return this.getCameraSettings().zoom||1}setSoftwareScale(t,e){if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(t<1)throw new RangeError("Invalid 'value'.");if("opened"!==this.state)throw new Error("Video is not playing.");e&&Dr(this,Qr,"m",Bn).call(this,e),Lr(this,vn,t,"f"),this.updateVideoElWhenSoftwareScaled()}getSoftwareScale(){return Dr(this,vn,"f")}resetScaleCenter(){if("opened"!==this.state)throw new Error("Video is not playing.");const t=this.getResolution();Lr(this,yn,{x:t.width/2,y:t.height/2},"f")}resetSoftwareScale(){this.setSoftwareScale(1),this.resetScaleCenter()}getFrameData(t){if(this.disposed)throw Error("The 'Camera' instance has been disposed.");if(!this.isVideoLoaded())return null;if(Dr(this,dn,"f"))return null;const e=Date.now();Gn._onLog&&Gn._onLog("getFrameData() START: "+e);const i=Dr(this,$r,"f").videoWidth,r=Dr(this,$r,"f").videoHeight;let n={sx:0,sy:0,sWidth:i,sHeight:r,dWidth:i,dHeight:r};(null==t?void 0:t.position)&&(n=JSON.parse(JSON.stringify(t.position)));let s=Gr.RGBA;(null==t?void 0:t.pixelFormat)&&(s=t.pixelFormat);let o=Dr(this,vn,"f");(null==t?void 0:t.scale)&&(o=t.scale);let a=Dr(this,yn,"f");if(null==t?void 0:t.scaleCenter){if("string"!=typeof t.scaleCenter.x||"string"!=typeof t.scaleCenter.y)throw new Error("Invalid scale center.");let e=0,n=0;if(t.scaleCenter.x.endsWith("px"))e=parseFloat(t.scaleCenter.x);else{if(!t.scaleCenter.x.endsWith("%"))throw new Error("Invalid scale center.");e=parseFloat(t.scaleCenter.x)/100*i}if(t.scaleCenter.y.endsWith("px"))n=parseFloat(t.scaleCenter.y);else{if(!t.scaleCenter.y.endsWith("%"))throw new Error("Invalid scale center.");n=parseFloat(t.scaleCenter.y)/100*r}if(isNaN(e)||isNaN(n))throw new Error("Invalid scale center.");a.x=Math.round(e),a.y=Math.round(n)}let h=null;if((null==t?void 0:t.bufferContainer)&&(h=t.bufferContainer),0==i||0==r)return null;1!==o&&(n.sWidth=Math.round(n.sWidth/o),n.sHeight=Math.round(n.sHeight/o),n.sx=Math.round((1-1/o)*a.x+n.sx/o),n.sy=Math.round((1-1/o)*a.y+n.sy/o));const l=this.imageDataGetter.getImageData(Dr(this,$r,"f"),n,{pixelFormat:s,bufferContainer:h});if(!l)return null;const c=Date.now();return Gn._onLog&&Gn._onLog("getFrameData() END: "+c),{data:l.data,width:l.width,height:l.height,pixelFormat:l.pixelFormat,timeSpent:c-e,timeStamp:c,toCanvas:Dr(this,wn,"f")}}on(t,e){if(!Dr(this,En,"f").includes(t.toLowerCase()))throw new Error(`Event '${t}' does not exist.`);Dr(this,Cn,"f").on(t,e)}off(t,e){Dr(this,Cn,"f").off(t,e)}async dispose(){this.tapFocusEventBoundEl=null,await this.close(),this.releaseVideoEl(),Dr(this,Cn,"f").dispose(),this.imageDataGetter.dispose(),document.removeEventListener("visibilitychange",Dr(this,bn,"f")),Lr(this,In,!0,"f")}}var Wn,Yn,Hn,Xn,zn,Zn,qn,Kn,Jn,Qn,$n,ts,es,is,rs,ns,ss,os,as,hs,ls,cs,us,ds,fs,gs,ms,ps,_s,vs,ys,ws,Cs,Es,Ts;$r=new WeakMap,tn=new WeakMap,en=new WeakMap,rn=new WeakMap,nn=new WeakMap,sn=new WeakMap,on=new WeakMap,an=new WeakMap,hn=new WeakMap,ln=new WeakMap,cn=new WeakMap,un=new WeakMap,dn=new WeakMap,fn=new WeakMap,gn=new WeakMap,mn=new WeakMap,pn=new WeakMap,_n=new WeakMap,vn=new WeakMap,yn=new WeakMap,wn=new WeakMap,Cn=new WeakMap,En=new WeakMap,Tn=new WeakMap,Sn=new WeakMap,bn=new WeakMap,In=new WeakMap,Qr=new WeakSet,xn=async function(){const t=this.getMediaStreamConstraints();if("boolean"==typeof t.video&&(t.video={}),t.video.deviceId);else if(Dr(this,on,"f"))delete t.video.facingMode,t.video.deviceId={exact:Dr(this,on,"f")};else if(this.ifSaveLastUsedCamera&&Gn.isStorageAvailable&&window.localStorage.getItem("dce_last_camera_id")){delete t.video.facingMode,t.video.deviceId={ideal:window.localStorage.getItem("dce_last_camera_id")};const e=JSON.parse(window.localStorage.getItem("dce_last_apply_width")),i=JSON.parse(window.localStorage.getItem("dce_last_apply_height"));e&&i&&(t.video.width=e,t.video.height=i)}else if(this.ifSkipCameraInspection);else{const e=async t=>{let e=null;return"environment"===t&&["Android","HarmonyOS","iPhone","iPad"].includes(Nr.OS)?(await this._getCameras(!1),Dr(this,Qr,"m",On).call(this),e=Gn.findBestCamera(this._arrCameras,"environment",{getMainCameraInIOS:this.selectIOSRearMainCameraAsDefault})):t||["Android","HarmonyOS","iPhone","iPad"].includes(Nr.OS)||(await this._getCameras(!1),Dr(this,Qr,"m",On).call(this),e=Gn.findBestCamera(this._arrCameras,null,{getMainCameraInIOS:this.selectIOSRearMainCameraAsDefault})),e};let i=t.video.facingMode;i instanceof Array&&i.length&&(i=i[0]),"object"==typeof i&&(i=i.exact||i.ideal);const r=await e(i);r&&(delete t.video.facingMode,t.video.deviceId={exact:r})}return t},On=function(){if(Dr(this,ln,"f")){const t=new Error("The operation was interrupted.");throw t.name="AbortError",t}},An=async function(t){var e,i;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))throw new Error("Failed to access the camera because the browser is too old or the page is loaded from an insecure origin.");let r;try{Gn._onLog&&Gn._onLog("======try getUserMedia========");let e=[0,500,1e3,2e3],i=null;const n=async t=>{for(let n of e){n&&(await new Promise((t=>setTimeout(t,n))),Dr(this,Qr,"m",On).call(this));try{Gn._onLog&&Gn._onLog("ask "+JSON.stringify(t)),r=await navigator.mediaDevices.getUserMedia(t),Dr(this,Qr,"m",On).call(this);break}catch(t){if("NotFoundError"===t.name||"NotAllowedError"===t.name||"AbortError"===t.name||"OverconstrainedError"===t.name)throw t;i=t,Gn._onLog&&Gn._onLog(t.message||t)}}};if(await n(t),r||"object"!=typeof t.video||(t.video.deviceId&&(delete t.video.deviceId,await n(t)),!r&&t.video.facingMode&&(delete t.video.facingMode,await n(t)),r||!t.video.width&&!t.video.height||(delete t.video.width,delete t.video.height,await n(t))),!r)throw i;return r}catch(t){throw null==r||r.getTracks().forEach((t=>{t.stop()})),"NotFoundError"===t.name&&(DOMException?t=new DOMException("No camera available, please use a device with an accessible camera.",t.name):(t=new Error("No camera available, please use a device with an accessible camera.")).name="NotFoundError"),t}},Rn=function(){this._mediaStream&&(this._mediaStream.getTracks().forEach((t=>{t.stop()})),this._mediaStream=null),Lr(this,tn,null,"f")},Dn=async function(){Lr(this,ln,!1,"f");const t=Lr(this,hn,Symbol(),"f");if(Dr(this,cn,"f")&&"pending"===Dr(this,un,"f")){try{await Dr(this,cn,"f")}catch(t){}Dr(this,Qr,"m",On).call(this)}if(t!==Dr(this,hn,"f"))return;const e=Lr(this,cn,(async()=>{Lr(this,un,"pending","f");try{if(this.videoSrc){if(!Dr(this,$r,"f"))throw new Error("'videoEl' should be set.");await Gn.playVideo(Dr(this,$r,"f"),this.videoSrc,this.cameraOpenTimeout),Dr(this,Qr,"m",On).call(this)}else{let t=await Dr(this,Qr,"m",xn).call(this);Dr(this,Qr,"m",Rn).call(this);let e=await Dr(this,Qr,"m",An).call(this,t);await this._getCameras(!1),Dr(this,Qr,"m",On).call(this);const i=()=>{const t=e.getVideoTracks();let i,r;if(t.length&&(i=t[0]),i){const t=i.getSettings();if(t)for(let e of this._arrCameras)if(t.deviceId===e.deviceId){e._checked=!0,e.label=i.label,r=e;break}}return r},r=Dr(this,nn,"f");if("object"==typeof r.video){let n=r.video.facingMode;if(n instanceof Array&&n.length&&(n=n[0]),"object"==typeof n&&(n=n.exact||n.ideal),!(Dr(this,on,"f")||this.ifSaveLastUsedCamera&&Gn.isStorageAvailable&&window.localStorage.getItem("dce_last_camera_id")||this.ifSkipCameraInspection||r.video.deviceId)){const r=i(),s=Gn.findBestCamera(this._arrCameras,n,{getMainCameraInIOS:this.selectIOSRearMainCameraAsDefault});s&&s!=(null==r?void 0:r.deviceId)&&(e.getTracks().forEach((t=>{t.stop()})),t.video.deviceId={exact:s},e=await Dr(this,Qr,"m",An).call(this,t),Dr(this,Qr,"m",On).call(this))}}const n=i();(null==n?void 0:n.deviceId)&&(Lr(this,on,n&&n.deviceId,"f"),this.ifSaveLastUsedCamera&&Gn.isStorageAvailable&&(window.localStorage.setItem("dce_last_camera_id",Dr(this,on,"f")),"object"==typeof t.video&&t.video.width&&t.video.height&&(window.localStorage.setItem("dce_last_apply_width",JSON.stringify(t.video.width)),window.localStorage.setItem("dce_last_apply_height",JSON.stringify(t.video.height))))),Dr(this,$r,"f")&&(await Gn.playVideo(Dr(this,$r,"f"),e,this.cameraOpenTimeout),Dr(this,Qr,"m",On).call(this)),this._mediaStream=e;const s=e.getVideoTracks();(null==s?void 0:s.length)&&Lr(this,tn,s[0],"f"),Lr(this,sn,n,"f")}}catch(t){throw Dr(this,Qr,"m",Mn).call(this),Lr(this,un,null,"f"),t}Lr(this,un,"fulfilled","f")})(),"f");return e},Ln=async function(){var t;if("closed"===this.state||this.videoSrc)return;const e=null===(t=Dr(this,sn,"f"))||void 0===t?void 0:t.deviceId,i=this.getResolution();await Dr(this,Qr,"m",Dn).call(this);const r=this.getResolution();e&&e!==Dr(this,sn,"f").deviceId&&Dr(this,Cn,"f").fire("camera:changed",[Dr(this,sn,"f").deviceId,e],{target:this,async:!1}),i.width==r.width&&i.height==r.height||Dr(this,Cn,"f").fire("resolution:changed",[{width:r.width,height:r.height},{width:i.width,height:i.height}],{target:this,async:!1}),Dr(this,Cn,"f").fire("played",null,{target:this,async:!1})},Mn=function(){Dr(this,Qr,"m",Rn).call(this),Lr(this,sn,null,"f"),Dr(this,$r,"f")&&(Dr(this,$r,"f").srcObject=null,this.videoSrc&&(Dr(this,$r,"f").pause(),Dr(this,$r,"f").currentTime=0)),Lr(this,ln,!0,"f");try{this.resetSoftwareScale()}catch(t){}},Fn=async function t(e,i){const r=t=>{if(!Dr(this,tn,"f")||!this.isVideoPlaying||t.focusTaskId!=this._focusParameters.curFocusTaskId){Dr(this,tn,"f")&&this.isVideoPlaying||(this._focusParameters.isDoingFocus=0);const e=new Error(`Focus task ${t.focusTaskId} canceled.`);throw e.name="DeprecatedTaskError",e}1===this._focusParameters.isDoingFocus&&Date.now()-t.timeStart>this._focusParameters.focusCancelableTime&&(this._focusParameters.isDoingFocus=-1)};let n;i=Vn(i,this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),await Dr(this,tn,"f").applyConstraints({advanced:[{focusMode:"manual",focusDistance:i}]}),r(e),n=null==this._focusParameters.oldDistance?this._focusParameters.kTimeout*Math.max(Math.abs(1/this._focusParameters.fds.min-1/i),Math.abs(1/this._focusParameters.fds.max-1/i))+this._focusParameters.minTimeout:this._focusParameters.kTimeout*Math.abs(1/this._focusParameters.oldDistance-1/i)+this._focusParameters.minTimeout,this._focusParameters.oldDistance=i,await new Promise((t=>{setTimeout(t,n)})),r(e);let s=e.focusL-e.focusW/2,o=e.focusT-e.focusH/2,a=e.focusW,h=e.focusH;const l=this.getResolution();s=Math.round(s),o=Math.round(o),a=Math.round(a),h=Math.round(h),a>l.width&&(a=l.width),h>l.height&&(h=l.height),s<0?s=0:s+a>l.width&&(s=l.width-a),o<0?o=0:o+h>l.height&&(o=l.height-h);const c=4*l.width*l.height*this._focusParameters.defaultTempBufferContainerLenRatio,u=4*a*h;let d=this._focusParameters.tempBufferContainer;if(d){const t=d.length;c>t&&c>=u?d=new Uint8Array(c):u>t&&u>=c&&(d=new Uint8Array(u))}else d=this._focusParameters.tempBufferContainer=new Uint8Array(Math.max(c,u));if(!this.imageDataGetter.getImageData(Dr(this,$r,"f"),{sx:s,sy:o,sWidth:a,sHeight:h,dWidth:a,dHeight:h},{pixelFormat:Gr.RGBA,bufferContainer:d}))return Dr(this,Qr,"m",t).call(this,e,i);const f=d;let g=0;for(let t=0,e=u-8;ta&&au)return await Dr(this,Qr,"m",t).call(this,e,o,a,n,s,c,u)}else{let h=await Dr(this,Qr,"m",Fn).call(this,e,c);if(a>h)return await Dr(this,Qr,"m",t).call(this,e,o,a,n,s,c,h);if(a==h)return await Dr(this,Qr,"m",t).call(this,e,o,a,c,h);let u=await Dr(this,Qr,"m",Fn).call(this,e,l);if(u>a&&ao.width||h<0||h>o.height)throw new Error("Invalid 'centerPoint'.");let l=0;if(e.endsWith("px"))l=parseFloat(e);else{if(!e.endsWith("%"))throw new Error("Invalid 'width'.");l=parseFloat(e)/100*o.width}if(isNaN(l)||l<0)throw new Error("Invalid 'width'.");let c=0;if(i.endsWith("px"))c=parseFloat(i);else{if(!i.endsWith("%"))throw new Error("Invalid 'height'.");c=parseFloat(i)/100*o.height}if(isNaN(c)||c<0)throw new Error("Invalid 'height'.");if(1!==Dr(this,vn,"f")){const t=Dr(this,vn,"f"),e=Dr(this,yn,"f");l/=t,c/=t,a=(1-1/t)*e.x+a/t,h=(1-1/t)*e.y+h/t}if(!this._focusSupported)throw new Error("Manual focus unsupported.");if(!this._focusParameters.fds&&(this._focusParameters.fds=null===(s=this.getCameraCapabilities())||void 0===s?void 0:s.focusDistance,!this._focusParameters.fds))throw this._focusSupported=!1,new Error("Manual focus unsupported.");null==this._focusParameters.kTimeout&&(this._focusParameters.kTimeout=(this._focusParameters.maxTimeout-this._focusParameters.minTimeout)/(1/this._focusParameters.fds.min-1/this._focusParameters.fds.max)),this._focusParameters.isDoingFocus=1;const u={focusL:a,focusT:h,focusW:l,focusH:c,focusTaskId:++this._focusParameters.curFocusTaskId,timeStart:Date.now()},d=async(t,e,i)=>{try{(null==e||ethis._focusParameters.fds.max)&&(i=this._focusParameters.fds.max),this._focusParameters.oldDistance=null;let r=Vn(Math.sqrt(i*(e||this._focusParameters.fds.step)),this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),n=Vn(Math.sqrt((e||this._focusParameters.fds.step)*r),this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),s=Vn(Math.sqrt(r*i),this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),o=await Dr(this,Qr,"m",Fn).call(this,t,s),a=await Dr(this,Qr,"m",Fn).call(this,t,n),h=await Dr(this,Qr,"m",Fn).call(this,t,r);if(a>h&&ho&&a>o){let e=await Dr(this,Qr,"m",Fn).call(this,t,i);const n=await Dr(this,Qr,"m",Pn).call(this,t,r,h,i,e,s,o);return this._focusParameters.isDoingFocus=0,n}if(a==h&&hh){const e=await Dr(this,Qr,"m",Pn).call(this,t,r,h,s,o);return this._focusParameters.isDoingFocus=0,e}return d(t,e,i)}catch(t){if("DeprecatedTaskError"!==t.name)throw t}};return d(u,r,n)},Bn=function(t){if("opened"!==this.state)throw new Error("Video is not playing.");if(!t||"string"!=typeof t.x||"string"!=typeof t.y)throw new Error("Invalid 'center'.");const e=this.getResolution();let i=0,r=0;if(t.x.endsWith("px"))i=parseFloat(t.x);else{if(!t.x.endsWith("%"))throw new Error("Invalid scale center.");i=parseFloat(t.x)/100*e.width}if(t.y.endsWith("px"))r=parseFloat(t.y);else{if(!t.y.endsWith("%"))throw new Error("Invalid scale center.");r=parseFloat(t.y)/100*e.height}if(isNaN(i)||isNaN(r))throw new Error("Invalid scale center.");Lr(this,yn,{x:i,y:r},"f")},Nn=function(t){if("opened"!==this.state)throw new Error("Video is not playing.");const e=this.getResolution();return t&&t.x==e.width/2&&t.y==e.height/2},Gn.browserInfo=Nr,Gn.onWarning=null===(Jr=null===window||void 0===window?void 0:window.console)||void 0===Jr?void 0:Jr.warn;class Ss{constructor(t){Wn.add(this),Yn.set(this,void 0),Hn.set(this,0),Xn.set(this,void 0),zn.set(this,0),Zn.set(this,!1),ze(this,Yn,t,"f")}startCharging(){Xe(this,Zn,"f")||(Ss._onLog&&Ss._onLog("start charging."),Xe(this,Wn,"m",Kn).call(this),ze(this,Zn,!0,"f"))}stopCharging(){Xe(this,Xn,"f")&&clearTimeout(Xe(this,Xn,"f")),Xe(this,Zn,"f")&&(Ss._onLog&&Ss._onLog("stop charging."),ze(this,Hn,Date.now()-Xe(this,zn,"f"),"f"),ze(this,Zn,!1,"f"))}}Yn=new WeakMap,Hn=new WeakMap,Xn=new WeakMap,zn=new WeakMap,Zn=new WeakMap,Wn=new WeakSet,qn=function(){gt.cfd(1),Ss._onLog&&Ss._onLog("charge 1.")},Kn=function t(){0==Xe(this,Hn,"f")&&Xe(this,Wn,"m",qn).call(this),ze(this,zn,Date.now(),"f"),Xe(this,Xn,"f")&&clearTimeout(Xe(this,Xn,"f")),ze(this,Xn,setTimeout((()=>{ze(this,Hn,0,"f"),Xe(this,Wn,"m",t).call(this)}),Xe(this,Yn,"f")-Xe(this,Hn,"f")),"f")};class bs{static beep(){if(!this.allowBeep)return;if(!this.beepSoundSource)return;let t,e=Date.now();if(!(e-Xe(this,Jn,"f",ts)<100)){if(ze(this,Jn,e,"f",ts),Xe(this,Jn,"f",Qn).size&&(t=Xe(this,Jn,"f",Qn).values().next().value,this.beepSoundSource==t.src?(Xe(this,Jn,"f",Qn).delete(t),t.play()):t=null),!t)if(Xe(this,Jn,"f",$n).size<16){t=new Audio(this.beepSoundSource);let e=null,i=()=>{t.removeEventListener("loadedmetadata",i),t.play(),e=setTimeout((()=>{Xe(this,Jn,"f",$n).delete(t)}),2e3*t.duration)};t.addEventListener("loadedmetadata",i),t.addEventListener("ended",(()=>{null!=e&&(clearTimeout(e),e=null),t.pause(),t.currentTime=0,Xe(this,Jn,"f",$n).delete(t),Xe(this,Jn,"f",Qn).add(t)}))}else Xe(this,Jn,"f",es)||(ze(this,Jn,!0,"f",es),console.warn("The requested audio tracks exceed 16 and will not be played."));t&&Xe(this,Jn,"f",$n).add(t)}}static vibrate(){if(this.allowVibrate){if(!navigator||!navigator.vibrate)throw new Error("Not supported.");navigator.vibrate(bs.vibrateDuration)}}}Jn=bs,Qn={value:new Set},$n={value:new Set},ts={value:0},es={value:!1},bs.allowBeep=!0,bs.beepSoundSource="data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA/+M4wAAAAAAAAAAAAEluZm8AAAAPAAAABQAAAkAAgICAgICAgICAgICAgICAgICAgKCgoKCgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4ODg4P//////////////////////////AAAAAExhdmM1OC41NAAAAAAAAAAAAAAAACQEUQAAAAAAAAJAk0uXRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MYxAANQAbGeUEQAAHZYZ3fASqD4P5TKBgocg+Bw/8+CAYBA4XB9/4EBAEP4nB9+UOf/6gfUCAIKyjgQ/Kf//wfswAAAwQA/+MYxAYOqrbdkZGQAMA7DJLCsQxNOij///////////+tv///3RWiZGBEhsf/FO/+LoCSFs1dFVS/g8f/4Mhv0nhqAieHleLy/+MYxAYOOrbMAY2gABf/////////////////usPJ66R0wI4boY9/8jQYg//g2SPx1M0N3Z0kVJLIs///Uw4aMyvHJJYmPBYG/+MYxAgPMALBucAQAoGgaBoFQVBUFQWDv6gZBUFQVBUGgaBr5YSgqCoKhIGg7+IQVBUFQVBoGga//SsFSoKnf/iVTEFNRTMu/+MYxAYAAANIAAAAADEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",bs.allowVibrate=!0,bs.vibrateDuration=300;const Is=new Map([[Gr.GREY,h.IPF_GRAYSCALED],[Gr.RGBA,h.IPF_ABGR_8888]]),xs="function"==typeof BigInt?{BF_NULL:BigInt(0),BF_ALL:BigInt(0x10000000000000000),BF_DEFAULT:BigInt(4265345023),BF_ONED:BigInt(3147775),BF_GS1_DATABAR:BigInt(260096),BF_CODE_39:BigInt(1),BF_CODE_128:BigInt(2),BF_CODE_93:BigInt(4),BF_CODABAR:BigInt(8),BF_ITF:BigInt(16),BF_EAN_13:BigInt(32),BF_EAN_8:BigInt(64),BF_UPC_A:BigInt(128),BF_UPC_E:BigInt(256),BF_INDUSTRIAL_25:BigInt(512),BF_CODE_39_EXTENDED:BigInt(1024),BF_GS1_DATABAR_OMNIDIRECTIONAL:BigInt(2048),BF_GS1_DATABAR_TRUNCATED:BigInt(4096),BF_GS1_DATABAR_STACKED:BigInt(8192),BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL:BigInt(16384),BF_GS1_DATABAR_EXPANDED:BigInt(32768),BF_GS1_DATABAR_EXPANDED_STACKED:BigInt(65536),BF_GS1_DATABAR_LIMITED:BigInt(131072),BF_PATCHCODE:BigInt(262144),BF_CODE_32:BigInt(16777216),BF_PDF417:BigInt(33554432),BF_QR_CODE:BigInt(67108864),BF_DATAMATRIX:BigInt(134217728),BF_AZTEC:BigInt(268435456),BF_MAXICODE:BigInt(536870912),BF_MICRO_QR:BigInt(1073741824),BF_MICRO_PDF417:BigInt(524288),BF_GS1_COMPOSITE:BigInt(2147483648),BF_MSI_CODE:BigInt(1048576),BF_CODE_11:BigInt(2097152),BF_TWO_DIGIT_ADD_ON:BigInt(4194304),BF_FIVE_DIGIT_ADD_ON:BigInt(8388608),BF_MATRIX_25:BigInt(68719476736),BF_POSTALCODE:BigInt(0x3f0000000000000),BF_NONSTANDARD_BARCODE:BigInt(4294967296),BF_USPSINTELLIGENTMAIL:BigInt(4503599627370496),BF_POSTNET:BigInt(9007199254740992),BF_PLANET:BigInt(0x40000000000000),BF_AUSTRALIANPOST:BigInt(0x80000000000000),BF_RM4SCC:BigInt(72057594037927940),BF_KIX:BigInt(0x200000000000000),BF_DOTCODE:BigInt(8589934592),BF_PHARMACODE_ONE_TRACK:BigInt(17179869184),BF_PHARMACODE_TWO_TRACK:BigInt(34359738368),BF_PHARMACODE:BigInt(51539607552)}:{BF_NULL:"0x00",BF_ALL:"0xFFFFFFFFFFFFFFFF",BF_DEFAULT:"0xFE3BFFFF",BF_ONED:"0x003007FF",BF_GS1_DATABAR:"0x0003F800",BF_CODE_39:"0x1",BF_CODE_128:"0x2",BF_CODE_93:"0x4",BF_CODABAR:"0x8",BF_ITF:"0x10",BF_EAN_13:"0x20",BF_EAN_8:"0x40",BF_UPC_A:"0x80",BF_UPC_E:"0x100",BF_INDUSTRIAL_25:"0x200",BF_CODE_39_EXTENDED:"0x400",BF_GS1_DATABAR_OMNIDIRECTIONAL:"0x800",BF_GS1_DATABAR_TRUNCATED:"0x1000",BF_GS1_DATABAR_STACKED:"0x2000",BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL:"0x4000",BF_GS1_DATABAR_EXPANDED:"0x8000",BF_GS1_DATABAR_EXPANDED_STACKED:"0x10000",BF_GS1_DATABAR_LIMITED:"0x20000",BF_PATCHCODE:"0x00040000",BF_CODE_32:"0x01000000",BF_PDF417:"0x02000000",BF_QR_CODE:"0x04000000",BF_DATAMATRIX:"0x08000000",BF_AZTEC:"0x10000000",BF_MAXICODE:"0x20000000",BF_MICRO_QR:"0x40000000",BF_MICRO_PDF417:"0x00080000",BF_GS1_COMPOSITE:"0x80000000",BF_MSI_CODE:"0x100000",BF_CODE_11:"0x200000",BF_TWO_DIGIT_ADD_ON:"0x400000",BF_FIVE_DIGIT_ADD_ON:"0x800000",BF_MATRIX_25:"0x1000000000",BF_POSTALCODE:"0x3F0000000000000",BF_NONSTANDARD_BARCODE:"0x100000000",BF_USPSINTELLIGENTMAIL:"0x10000000000000",BF_POSTNET:"0x20000000000000",BF_PLANET:"0x40000000000000",BF_AUSTRALIANPOST:"0x80000000000000",BF_RM4SCC:"0x100000000000000",BF_KIX:"0x200000000000000",BF_DOTCODE:"0x200000000",BF_PHARMACODE_ONE_TRACK:"0x400000000",BF_PHARMACODE_TWO_TRACK:"0x800000000",BF_PHARMACODE:"0xC00000000"};class Os extends z{static set _onLog(t){ze(Os,rs,t,"f",ns),Gn._onLog=t,Ss._onLog=t}static get _onLog(){return Xe(Os,rs,"f",ns)}static async detectEnvironment(){return await(async()=>({wasm:Ze,worker:qe,getUserMedia:Ke,camera:await Je(),browser:He.browser,version:He.version,OS:He.OS}))()}static async testCameraAccess(){const t=await Gn.testCameraAccess();return t.ok?{ok:!0,message:"Successfully accessed the camera."}:"InsecureContext"===t.errorName?{ok:!1,message:"Insecure context."}:"OverconstrainedError"===t.errorName||"NotFoundError"===t.errorName?{ok:!1,message:"No camera detected."}:"NotAllowedError"===t.errorName?{ok:!1,message:"No permission to access camera."}:"AbortError"===t.errorName?{ok:!1,message:"Some problem occurred which prevented the device from being used."}:"NotReadableError"===t.errorName?{ok:!1,message:"A hardware error occurred."}:"SecurityError"===t.errorName?{ok:!1,message:"User media support is disabled."}:{ok:!1,message:t.errorMessage}}static async createInstance(t){var e,i;if(t&&!(t instanceof Rr))throw new TypeError("Invalid view.");if(null===(e=ct.license)||void 0===e?void 0:e.LicenseManager){if(!(null===(i=ct.license)||void 0===i?void 0:i.LicenseManager.bCallInitLicense))throw new Error("License is not set.");await gt.loadWasm(["license"]),await ct.license.dynamsoft()}const r=new Os(t);return Os.onWarning&&(location&&"file:"===location.protocol?setTimeout((()=>{Os.onWarning&&Os.onWarning({id:1,message:"The page is opened over file:// and Dynamsoft Camera Enhancer may not work properly. Please open the page via https://."})}),0):!1!==window.isSecureContext&&navigator&&navigator.mediaDevices&&navigator.mediaDevices.getUserMedia||setTimeout((()=>{Os.onWarning&&Os.onWarning({id:2,message:"Dynamsoft Camera Enhancer may not work properly in a non-secure context. Please open the page via https://."})}),0)),r}get video(){return this.cameraManager.getVideoEl()}set videoSrc(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraView&&(this.cameraView._hideDefaultSelection=!0),this.cameraManager.videoSrc=t}get videoSrc(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.videoSrc}set ifSaveLastUsedCamera(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraManager.ifSaveLastUsedCamera=t}get ifSaveLastUsedCamera(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.ifSaveLastUsedCamera}set ifSkipCameraInspection(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraManager.ifSkipCameraInspection=t}get ifSkipCameraInspection(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.ifSkipCameraInspection}set cameraOpenTimeout(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraManager.cameraOpenTimeout=t}get cameraOpenTimeout(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.cameraOpenTimeout}set singleFrameMode(t){if(!["disabled","image","camera"].includes(t))throw new Error("Invalid value.");if(this.isOpen())throw new Error("It is not allowed to change `singleFrameMode` when the camera is open.");ze(this,as,t,"f")}get singleFrameMode(){return Xe(this,as,"f")}get _isFetchingStarted(){return Xe(this,fs,"f")}get disposed(){return Xe(this,vs,"f")}constructor(t){if(super(),is.add(this),ss.set(this,"closed"),os.set(this,void 0),this.isTorchOn=void 0,as.set(this,void 0),this._onCameraSelChange=async()=>{this.isOpen()&&this.cameraView&&!this.cameraView.disposed&&await this.selectCamera(this.cameraView._selCam.value)},this._onResolutionSelChange=async()=>{if(!this.isOpen())return;if(!this.cameraView||this.cameraView.disposed)return;let t,e;if(this.cameraView._selRsl&&-1!=this.cameraView._selRsl.selectedIndex){let i=this.cameraView._selRsl.options[this.cameraView._selRsl.selectedIndex];t=parseInt(i.getAttribute("data-width")),e=parseInt(i.getAttribute("data-height"))}await this.setResolution({width:t,height:e})},this._onCloseBtnClick=async()=>{this.isOpen()&&this.cameraView&&!this.cameraView.disposed&&this.close()},hs.set(this,((t,e,i,r)=>{const n=Date.now(),s={sx:r.x,sy:r.y,sWidth:r.width,sHeight:r.height,dWidth:r.width,dHeight:r.height},o=Math.max(s.dWidth,s.dHeight);if(this.canvasSizeLimit&&o>this.canvasSizeLimit){const t=this.canvasSizeLimit/o;s.dWidth>s.dHeight?(s.dWidth=this.canvasSizeLimit,s.dHeight=Math.round(s.dHeight*t)):(s.dWidth=Math.round(s.dWidth*t),s.dHeight=this.canvasSizeLimit)}const a=this.cameraManager.imageDataGetter.getImageData(t,s,{pixelFormat:this.getPixelFormat()===h.IPF_GRAYSCALED?Gr.GREY:Gr.RGBA});let l=null;if(a){const t=Date.now();let o;o=a.pixelFormat===Gr.GREY?a.width:4*a.width;let h=!0;0===s.sx&&0===s.sy&&s.sWidth===e&&s.sHeight===i&&(h=!1),l={bytes:a.data,width:a.width,height:a.height,stride:o,format:Is.get(a.pixelFormat),tag:{imageId:this._imageId==Number.MAX_VALUE?this._imageId=0:++this._imageId,type:wt.ITT_FILE_IMAGE,isCropped:h,cropRegion:{left:r.x,top:r.y,right:r.x+r.width,bottom:r.y+r.height,isMeasuredInPercentage:!1},originalWidth:e,originalHeight:i,currentWidth:a.width,currentHeight:a.height,timeSpent:t-n,timeStamp:t},toCanvas:Xe(this,ls,"f"),isDCEFrame:!0}}return l})),this._onSingleFrameAcquired=t=>{let e;e=this.cameraView?this.cameraView.getConvertedRegion():ki.convert(Xe(this,us,"f"),t.width,t.height),e||(e={x:0,y:0,width:t.width,height:t.height});const i=Xe(this,hs,"f").call(this,t,t.width,t.height,e);Xe(this,os,"f").fire("singleFrameAcquired",[i],{async:!1,copy:!1})},ls.set(this,(function(){if(!(this.bytes instanceof Uint8Array||this.bytes instanceof Uint8ClampedArray))throw new TypeError("Invalid bytes.");if("number"!=typeof this.width||this.width<=0)throw new Error("Invalid width.");if("number"!=typeof this.height||this.height<=0)throw new Error("Invalid height.");const t=document.createElement("canvas");let e;if(t.width=this.width,t.height=this.height,this.format===h.IPF_GRAYSCALED){e=new Uint8ClampedArray(this.width*this.height*4);for(let t=0;t{if(!this.video)return;const t=this.cameraManager.getSoftwareScale();if(t<1)throw new RangeError("Invalid scale value.");this.cameraView&&!this.cameraView.disposed?(this.video.style.transform=1===t?"":`scale(${t})`,this.cameraView._updateVideoContainer()):this.video.style.transform=1===t?"":`scale(${t})`},["iPhone","iPad","Android","HarmonyOS"].includes(He.OS)?this.cameraManager.setResolution(1280,720):this.cameraManager.setResolution(1920,1080),navigator&&navigator.mediaDevices&&navigator.mediaDevices.getUserMedia?this.singleFrameMode="disabled":this.singleFrameMode="image",t&&(this.setCameraView(t),t.cameraEnhancer=this),this._on("before:camera:change",(()=>{Xe(this,_s,"f").stopCharging();const t=this.cameraView;t&&!t.disposed&&(t._startLoading(),t.clearAllInnerDrawingItems())})),this._on("camera:changed",(()=>{this.clearBuffer()})),this._on("before:resolution:change",(()=>{const t=this.cameraView;t&&!t.disposed&&(t._startLoading(),t.clearAllInnerDrawingItems())})),this._on("resolution:changed",(()=>{this.clearBuffer(),t.eventHandler.fire("content:updated",null,{async:!1})})),this._on("paused",(()=>{Xe(this,_s,"f").stopCharging();const t=this.cameraView;t&&t.disposed})),this._on("resumed",(()=>{const t=this.cameraView;t&&t.disposed})),this._on("tapfocus",(()=>{Xe(this,ms,"f").tapToFocus&&Xe(this,_s,"f").startCharging()})),this._intermediateResultReceiver={},this._intermediateResultReceiver.onTaskResultsReceived=async(t,e)=>{var i,r,n,s;if(Xe(this,is,"m",ys).call(this)||!this.isOpen()||this.isPaused())return;const o=t.intermediateResultUnits;Os._onLog&&(Os._onLog("intermediateResultUnits:"),Os._onLog(o));let a=!1,h=!1;for(let t of o){if(t.unitType===St.IRUT_DECODED_BARCODES&&t.decodedBarcodes.length){a=!0;break}t.unitType===St.IRUT_LOCALIZED_BARCODES&&t.localizedBarcodes.length&&(h=!0)}if(Os._onLog&&(Os._onLog("hasLocalizedBarcodes:"),Os._onLog(h)),Xe(this,ms,"f").autoZoom||Xe(this,ms,"f").enhancedFocus)if(a)Xe(this,ps,"f").autoZoomInFrameArray.length=0,Xe(this,ps,"f").autoZoomOutFrameCount=0,Xe(this,ps,"f").frameArrayInIdealZoom.length=0,Xe(this,ps,"f").autoFocusFrameArray.length=0;else{const e=async t=>{await this.setZoom(t),Xe(this,ms,"f").autoZoom&&Xe(this,_s,"f").startCharging()},a=async t=>{await this.setFocus(t),Xe(this,ms,"f").enhancedFocus&&Xe(this,_s,"f").startCharging()};if(h){const h=o[0].originalImageTag,l=(null===(i=h.cropRegion)||void 0===i?void 0:i.left)||0,c=(null===(r=h.cropRegion)||void 0===r?void 0:r.top)||0,u=(null===(n=h.cropRegion)||void 0===n?void 0:n.right)?h.cropRegion.right-l:h.originalWidth,d=(null===(s=h.cropRegion)||void 0===s?void 0:s.bottom)?h.cropRegion.bottom-c:h.originalHeight,f=h.currentWidth,g=h.currentHeight;let m;{let t,e,i,r,n;{const t=this.video.videoWidth*(1-Xe(this,ps,"f").autoZoomDetectionArea)/2,e=this.video.videoWidth*(1+Xe(this,ps,"f").autoZoomDetectionArea)/2,i=e,r=t,s=this.video.videoHeight*(1-Xe(this,ps,"f").autoZoomDetectionArea)/2,o=s,a=this.video.videoHeight*(1+Xe(this,ps,"f").autoZoomDetectionArea)/2;n=[{x:t,y:s},{x:e,y:o},{x:i,y:a},{x:r,y:a}]}Os._onLog&&(Os._onLog("detectionArea:"),Os._onLog(n));const s=[];{const t=(t,e)=>{const i=(t,e)=>{if(!t&&!e)throw new Error("Invalid arguments.");return function(t,e,i){let r=!1;const n=t.length;if(n<=2)return!1;for(let s=0;s0!=Vi(a.y-i)>0&&Vi(e-(i-o.y)*(o.x-a.x)/(o.y-a.y)-o.x)<0&&(r=!r)}return r}(e,t.x,t.y)},r=(t,e)=>!!(Gi([t[0],t[1]],[t[2],t[3]],[e[0].x,e[0].y],[e[1].x,e[1].y])||Gi([t[0],t[1]],[t[2],t[3]],[e[1].x,e[1].y],[e[2].x,e[2].y])||Gi([t[0],t[1]],[t[2],t[3]],[e[2].x,e[2].y],[e[3].x,e[3].y])||Gi([t[0],t[1]],[t[2],t[3]],[e[3].x,e[3].y],[e[0].x,e[0].y]));return!!(i({x:t[0].x,y:t[0].y},e)||i({x:t[1].x,y:t[1].y},e)||i({x:t[2].x,y:t[2].y},e)||i({x:t[3].x,y:t[3].y},e))||!!(i({x:e[0].x,y:e[0].y},t)||i({x:e[1].x,y:e[1].y},t)||i({x:e[2].x,y:e[2].y},t)||i({x:e[3].x,y:e[3].y},t))||!!(r([e[0].x,e[0].y,e[1].x,e[1].y],t)||r([e[1].x,e[1].y,e[2].x,e[2].y],t)||r([e[2].x,e[2].y,e[3].x,e[3].y],t)||r([e[3].x,e[3].y,e[0].x,e[0].y],t))};for(let e of o)if(e.unitType===St.IRUT_LOCALIZED_BARCODES)for(let i of e.localizedBarcodes){if(!i)continue;const e=i.location.points;e.forEach((t=>{Rr._transformCoordinates(t,l,c,u,d,f,g)})),t(n,e)&&s.push(i)}if(Os._debug&&this.cameraView){const t=this.__layer||(this.__layer=this.cameraView._createDrawingLayer(99));t.clearDrawingItems();const e=this.__styleId2||(this.__styleId2=Sr.createDrawingStyle({strokeStyle:"red"}));for(let i of o)if(i.unitType===St.IRUT_LOCALIZED_BARCODES)for(let r of i.localizedBarcodes){if(!r)continue;const i=r.location.points,n=new Ii({points:i},e);t.addDrawingItems([n])}}}if(Os._onLog&&(Os._onLog("intersectedResults:"),Os._onLog(s)),!s.length)return;let a;if(s.length){let t=s.filter((t=>t.possibleFormats==xs.BF_QR_CODE||t.possibleFormats==xs.BF_DATAMATRIX));if(t.length||(t=s.filter((t=>t.possibleFormats==xs.BF_ONED)),t.length||(t=s)),t.length){const e=t=>{const e=t.location.points,i=(e[0].x+e[1].x+e[2].x+e[3].x)/4,r=(e[0].y+e[1].y+e[2].y+e[3].y)/4;return(i-f/2)*(i-f/2)+(r-g/2)*(r-g/2)};a=t[0];let i=e(a);if(1!=t.length)for(let r=1;r1.1*a.confidence||t[r].confidence>.9*a.confidence&&ni&&s>i&&o>i&&h>i&&m.result.moduleSize{})),Xe(this,ps,"f").autoZoomInFrameArray.filter((t=>!0===t)).length>=Xe(this,ps,"f").autoZoomInFrameLimit[1]){Xe(this,ps,"f").autoZoomInFrameArray.length=0;const i=[(.5-r)/(.5-n),(.5-r)/(.5-s),(.5-r)/(.5-o),(.5-r)/(.5-h)].filter((t=>t>0)),a=Math.min(...i,Xe(this,ps,"f").autoZoomInIdealModuleSize/m.result.moduleSize),l=this.getZoomSettings().factor;let c=Math.max(Math.pow(l*a,1/Xe(this,ps,"f").autoZoomInMaxTimes),Xe(this,ps,"f").autoZoomInMinStep);c=Math.min(c,a);let u=l*c;u=Math.max(Xe(this,ps,"f").minValue,u),u=Math.min(Xe(this,ps,"f").maxValue,u);try{await e({factor:u})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}}else if(Xe(this,ps,"f").autoZoomInFrameArray.length=0,Xe(this,ps,"f").frameArrayInIdealZoom.push(!0),Xe(this,ps,"f").frameArrayInIdealZoom.splice(0,Xe(this,ps,"f").frameArrayInIdealZoom.length-Xe(this,ps,"f").frameLimitInIdealZoom[0]),Xe(this,ps,"f").frameArrayInIdealZoom.filter((t=>!0===t)).length>=Xe(this,ps,"f").frameLimitInIdealZoom[1]&&(Xe(this,ps,"f").frameArrayInIdealZoom.length=0,Xe(this,ms,"f").enhancedFocus)){const e=m.points;try{await a({mode:"manual",area:{centerPoint:{x:(e[0].x+e[2].x)/2+"px",y:(e[0].y+e[2].y)/2+"px"},width:e[2].x-e[0].x+"px",height:e[2].y-e[0].y+"px"}})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}}if(!Xe(this,ms,"f").autoZoom&&Xe(this,ms,"f").enhancedFocus&&(Xe(this,ps,"f").autoFocusFrameArray.push(!0),Xe(this,ps,"f").autoFocusFrameArray.splice(0,Xe(this,ps,"f").autoFocusFrameArray.length-Xe(this,ps,"f").autoFocusFrameLimit[0]),Xe(this,ps,"f").autoFocusFrameArray.filter((t=>!0===t)).length>=Xe(this,ps,"f").autoFocusFrameLimit[1])){Xe(this,ps,"f").autoFocusFrameArray.length=0;try{const t=m.points;await a({mode:"manual",area:{centerPoint:{x:(t[0].x+t[2].x)/2+"px",y:(t[0].y+t[2].y)/2+"px"},width:t[2].x-t[0].x+"px",height:t[2].y-t[0].y+"px"}})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}}else{if(Xe(this,ms,"f").autoZoom){if(Xe(this,ps,"f").autoZoomInFrameArray.push(!1),Xe(this,ps,"f").autoZoomInFrameArray.splice(0,Xe(this,ps,"f").autoZoomInFrameArray.length-Xe(this,ps,"f").autoZoomInFrameLimit[0]),Xe(this,ps,"f").autoZoomOutFrameCount++,Xe(this,ps,"f").frameArrayInIdealZoom.push(!1),Xe(this,ps,"f").frameArrayInIdealZoom.splice(0,Xe(this,ps,"f").frameArrayInIdealZoom.length-Xe(this,ps,"f").frameLimitInIdealZoom[0]),Xe(this,ps,"f").autoZoomOutFrameCount>=Xe(this,ps,"f").autoZoomOutFrameLimit){Xe(this,ps,"f").autoZoomOutFrameCount=0;const i=this.getZoomSettings().factor;let r=i-Math.max((i-1)*Xe(this,ps,"f").autoZoomOutStepRate,Xe(this,ps,"f").autoZoomOutMinStep);r=Math.max(Xe(this,ps,"f").minValue,r),r=Math.min(Xe(this,ps,"f").maxValue,r);try{await e({factor:r})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}Xe(this,ms,"f").enhancedFocus&&a({mode:"continuous"}).catch((()=>{}))}!Xe(this,ms,"f").autoZoom&&Xe(this,ms,"f").enhancedFocus&&(Xe(this,ps,"f").autoFocusFrameArray.length=0,a({mode:"continuous"}).catch((()=>{})))}}},ze(this,_s,new Ss(1e4),"f")}setCameraView(t){if(!(t instanceof Rr))throw new TypeError("Invalid view.");if(t.disposed)throw new Error("The camera view has been disposed.");if(this.isOpen())throw new Error("It is not allowed to change camera view when the camera is open.");this.releaseCameraView(),t._singleFrameMode=this.singleFrameMode,t._onSingleFrameAcquired=this._onSingleFrameAcquired,this.videoSrc&&(this.cameraView._hideDefaultSelection=!0),Xe(this,is,"m",ys).call(this)||this.cameraManager.setVideoEl(t.getVideoElement()),this.cameraView=t,this.addListenerToView()}getCameraView(){return this.cameraView}releaseCameraView(){this.cameraView&&(this.removeListenerFromView(),this.cameraView.disposed||(this.cameraView._singleFrameMode="disabled",this.cameraView._onSingleFrameAcquired=null,this.cameraView._hideDefaultSelection=!1),this.cameraManager.releaseVideoEl(),this.cameraView=null)}addListenerToView(){if(!this.cameraView)return;if(this.cameraView.disposed)throw new Error("'cameraView' has been disposed.");const t=this.cameraView;Xe(this,is,"m",ys).call(this)||this.videoSrc||(t._innerComponent&&(this.cameraManager.tapFocusEventBoundEl=t._innerComponent),t._selCam&&t._selCam.addEventListener("change",this._onCameraSelChange),t._selRsl&&t._selRsl.addEventListener("change",this._onResolutionSelChange)),t._btnClose&&t._btnClose.addEventListener("click",this._onCloseBtnClick)}removeListenerFromView(){if(!this.cameraView||this.cameraView.disposed)return;const t=this.cameraView;this.cameraManager.tapFocusEventBoundEl=null,t._selCam&&t._selCam.removeEventListener("change",this._onCameraSelChange),t._selRsl&&t._selRsl.removeEventListener("change",this._onResolutionSelChange),t._btnClose&&t._btnClose.removeEventListener("click",this._onCloseBtnClick)}getCameraState(){return Xe(this,is,"m",ys).call(this)?Xe(this,ss,"f"):new Map([["closed","closed"],["opening","opening"],["opened","open"]]).get(this.cameraManager.state)}isOpen(){return"open"===this.getCameraState()}getVideoEl(){return this.video}async open(){const t=this.cameraView;if(null==t?void 0:t.disposed)throw new Error("'cameraView' has been disposed.");t&&(t._singleFrameMode=this.singleFrameMode,Xe(this,is,"m",ys).call(this)?t._clickIptSingleFrameMode():(this.cameraManager.setVideoEl(t.getVideoElement()),t._startLoading()));let e={width:0,height:0,deviceId:""};if(Xe(this,is,"m",ys).call(this));else{try{await this.cameraManager.open()}catch(e){throw t&&t._stopLoading(),"NotFoundError"===e.name?new Error(`No camera devices were detected. Please ensure a camera is connected and recognized by your system. ${null==e?void 0:e.name}: ${null==e?void 0:e.message}`):"NotAllowedError"===e.name?new Error(`Camera access is blocked. Please check your browser settings or grant permission to use the camera. ${null==e?void 0:e.name}: ${null==e?void 0:e.message}`):e}let i,r=t.getUIElement();if(r=r.shadowRoot||r,i=r.querySelector(".dce-macro-use-mobile-native-like-ui")){let t=r.elTorchAuto=r.querySelector(".dce-mn-torch-auto"),e=r.elTorchOn=r.querySelector(".dce-mn-torch-on"),n=r.elTorchOff=r.querySelector(".dce-mn-torch-off");t&&(e.style.display=null==this.isTorchOn?"":"none"),e&&(e.style.display=1==this.isTorchOn?"":"none"),n&&(n.style.display=0==this.isTorchOn?"":"none");let s=r.elBeepOn=r.querySelector(".dce-mn-beep-on"),o=r.elBeepOff=r.querySelector(".dce-mn-beep-off");s&&(s.style.display=bs.allowBeep?"":"none"),o&&(o.style.display=bs.allowBeep?"none":"");let a=r.elVibrateOn=r.querySelector(".dce-mn-vibrate-on"),h=r.elVibrateOff=r.querySelector(".dce-mn-vibrate-off");a&&(a.style.display=bs.allowVibrate?"":"none"),h&&(h.style.display=bs.allowVibrate?"none":""),r.elResolutionBox=r.querySelector(".dce-mn-resolution-box");let l,c=r.elZoom=r.querySelector(".dce-mn-zoom");c&&(c.style.display="none",l=r.elZoomSpan=c.querySelector("span"));let u=r.elToast=r.querySelector(".dce-mn-toast"),d=r.elCameraClose=r.querySelector(".dce-mn-camera-close"),f=r.elTakePhoto=r.querySelector(".dce-mn-take-photo"),g=r.elCameraSwitch=r.querySelector(".dce-mn-camera-switch"),m=r.elCameraAndResolutionSettings=r.querySelector(".dce-mn-camera-and-resolution-settings");m&&(m.style.display="none");const p=r.dceMnFs={},_=()=>{this.turnOnTorch()};null==t||t.addEventListener("pointerdown",_);const v=()=>{this.turnOffTorch()};null==e||e.addEventListener("pointerdown",v);const y=()=>{this.turnAutoTorch()};null==n||n.addEventListener("pointerdown",y);const w=()=>{bs.allowBeep=!bs.allowBeep,s&&(s.style.display=bs.allowBeep?"":"none"),o&&(o.style.display=bs.allowBeep?"none":"")};for(let t of[o,s])null==t||t.addEventListener("pointerdown",w);const C=()=>{bs.allowVibrate=!bs.allowVibrate,a&&(a.style.display=bs.allowVibrate?"":"none"),h&&(h.style.display=bs.allowVibrate?"none":"")};for(let t of[h,a])null==t||t.addEventListener("pointerdown",C);const E=async t=>{let e,i=t.target;if(e=i.closest(".dce-mn-camera-option"))this.selectCamera(e.getAttribute("data-davice-id"));else if(e=i.closest(".dce-mn-resolution-option")){let t,i=parseInt(e.getAttribute("data-width")),r=parseInt(e.getAttribute("data-height")),n=await this.setResolution({width:i,height:r});{let e=Math.max(n.width,n.height),i=Math.min(n.width,n.height);t=i<=1080?i+"P":e<3e3?"2K":Math.round(e/1e3)+"K"}t!=e.textContent&&b(`Fallback to ${t}`)}else i.closest(".dce-mn-camera-and-resolution-settings")||(i.closest(".dce-mn-resolution-box")?m&&(m.style.display=m.style.display?"":"none"):m&&""===m.style.display&&(m.style.display="none"))};r.addEventListener("click",E);let T=null;p.funcInfoZoomChange=(t,e=3e3)=>{c&&l&&(l.textContent=t.toFixed(1),c.style.display="",null!=T&&(clearTimeout(T),T=null),T=setTimeout((()=>{c.style.display="none",T=null}),e))};let S=null,b=p.funcShowToast=(t,e=3e3)=>{u&&(u.textContent=t,u.style.display="",null!=S&&(clearTimeout(S),S=null),S=setTimeout((()=>{u.style.display="none",S=null}),e))};const I=()=>{this.close()};null==d||d.addEventListener("click",I);const x=()=>{};null==f||f.addEventListener("pointerdown",x);const O=()=>{var t,e;let i,r=this.getVideoSettings(),n=r.video.facingMode,s=null===(e=null===(t=this.cameraManager.getCamera())||void 0===t?void 0:t.label)||void 0===e?void 0:e.toLowerCase(),o=null==s?void 0:s.indexOf("front");-1===o&&(o=null==s?void 0:s.indexOf("前"));let a=null==s?void 0:s.indexOf("back");-1===a&&(a=null==s?void 0:s.indexOf("后")),"number"==typeof o&&-1!==o?i=!0:"number"==typeof a&&-1!==a&&(i=!1),void 0===i&&(i="user"===((null==n?void 0:n.ideal)||(null==n?void 0:n.exact)||n)),r.video.facingMode={ideal:i?"environment":"user"},delete r.video.deviceId,this.updateVideoSettings(r)};null==g||g.addEventListener("pointerdown",O);let A=-1/0,R=1;const D=t=>{let e=Date.now();e-A>1e3&&(R=this.getZoomSettings().factor),R-=t.deltaY/200,R>20&&(R=20),R<1&&(R=1),this.setZoom({factor:R}),A=e};i.addEventListener("wheel",D);const L=new Map;let M=!1;const F=async t=>{var e;for(t.touches.length>=2&&"touchmove"==t.type&&t.preventDefault();t.changedTouches.length>1&&2==t.touches.length;){let i=t.touches[0],r=t.touches[1],n=L.get(i.identifier),s=L.get(r.identifier);if(!n||!s)break;let o=Math.pow(Math.pow(n.x-s.x,2)+Math.pow(n.y-s.y,2),.5),a=Math.pow(Math.pow(i.clientX-r.clientX,2)+Math.pow(i.clientY-r.clientY,2),.5),h=Date.now();if(M||h-A<100)return;h-A>1e3&&(R=this.getZoomSettings().factor),R*=a/o,R>20&&(R=20),R<1&&(R=1);let l=!1;"safari"==(null===(e=null==He?void 0:He.browser)||void 0===e?void 0:e.toLocaleLowerCase())&&(a/o>1&&R<2?(R=2,l=!0):a/o<1&&R<2&&(R=1,l=!0)),M=!0,l&&b("zooming..."),await this.setZoom({factor:R}),l&&(u.textContent=""),M=!1,A=Date.now();break}L.clear();for(let e of t.touches)L.set(e.identifier,{x:e.clientX,y:e.clientY})};r.addEventListener("touchstart",F),r.addEventListener("touchmove",F),r.addEventListener("touchend",F),r.addEventListener("touchcancel",F),p.unbind=()=>{null==t||t.removeEventListener("pointerdown",_),null==e||e.removeEventListener("pointerdown",v),null==n||n.removeEventListener("pointerdown",y);for(let t of[o,s])null==t||t.removeEventListener("pointerdown",w);for(let t of[h,a])null==t||t.removeEventListener("pointerdown",C);r.removeEventListener("click",E),null==d||d.removeEventListener("click",I),null==f||f.removeEventListener("pointerdown",x),null==g||g.removeEventListener("pointerdown",O),i.removeEventListener("wheel",D),r.removeEventListener("touchstart",F),r.removeEventListener("touchmove",F),r.removeEventListener("touchend",F),r.removeEventListener("touchcancel",F),delete r.dceMnFs,i.style.display="none"},i.style.display="",t&&null==this.isTorchOn&&setTimeout((()=>{this.turnAutoTorch(1e3)}),0)}this.isTorchOn&&this.turnOnTorch().catch((()=>{}));const n=this.getResolution();e.width=n.width,e.height=n.height,e.deviceId=this.getSelectedCamera().deviceId}return ze(this,ss,"open","f"),t&&(t._innerComponent.style.display="",Xe(this,is,"m",ys).call(this)||(t._stopLoading(),t._renderCamerasInfo(this.getSelectedCamera(),this.cameraManager._arrCameras),t._renderResolutionInfo({width:e.width,height:e.height}),t.eventHandler.fire("content:updated",null,{async:!1}),t.eventHandler.fire("videoEl:resized",null,{async:!1}))),Xe(this,os,"f").fire("opened",null,{target:this,async:!1}),e}close(){var t;const e=this.cameraView;if(null==e?void 0:e.disposed)throw new Error("'cameraView' has been disposed.");if(this.stopFetching(),this.clearBuffer(),Xe(this,is,"m",ys).call(this));else{this.cameraManager.close();let i=e.getUIElement();i=i.shadowRoot||i,i.querySelector(".dce-macro-use-mobile-native-like-ui")&&(null===(t=i.dceMnFs)||void 0===t||t.unbind())}ze(this,ss,"closed","f"),Xe(this,_s,"f").stopCharging(),e&&(e._innerComponent.style.display="none",Xe(this,is,"m",ys).call(this)&&e._innerComponent.removeElement("content"),e._stopLoading()),Xe(this,os,"f").fire("closed",null,{target:this,async:!1})}pause(){if(Xe(this,is,"m",ys).call(this))throw new Error("'pause()' is invalid in 'singleFrameMode'.");this.cameraManager.pause()}isPaused(){var t;return!Xe(this,is,"m",ys).call(this)&&!0===(null===(t=this.video)||void 0===t?void 0:t.paused)}async resume(){if(Xe(this,is,"m",ys).call(this))throw new Error("'resume()' is invalid in 'singleFrameMode'.");await this.cameraManager.resume()}async selectCamera(t){if(!t)throw new Error("Invalid value.");let e;e="string"==typeof t?t:t.deviceId,await this.cameraManager.setCamera(e),this.isTorchOn=!1;const i=this.getResolution(),r=this.cameraView;return r&&!r.disposed&&(r._stopLoading(),r._renderCamerasInfo(this.getSelectedCamera(),this.cameraManager._arrCameras),r._renderResolutionInfo({width:i.width,height:i.height})),{width:i.width,height:i.height,deviceId:this.getSelectedCamera().deviceId}}getSelectedCamera(){return this.cameraManager.getCamera()}async getAllCameras(){return this.cameraManager.getCameras()}async setResolution(t){await this.cameraManager.setResolution(t.width,t.height),this.isTorchOn&&this.turnOnTorch().catch((()=>{}));const e=this.getResolution(),i=this.cameraView;return i&&!i.disposed&&(i._stopLoading(),i._renderResolutionInfo({width:e.width,height:e.height})),{width:e.width,height:e.height,deviceId:this.getSelectedCamera().deviceId}}getResolution(){return this.cameraManager.getResolution()}getAvailableResolutions(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getResolutions()}_on(t,e){["opened","closed","singleframeacquired","frameaddedtobuffer"].includes(t.toLowerCase())?Xe(this,os,"f").on(t,e):this.cameraManager.on(t,e)}_off(t,e){["opened","closed","singleframeacquired","frameaddedtobuffer"].includes(t.toLowerCase())?Xe(this,os,"f").off(t,e):this.cameraManager.off(t,e)}on(t,e){const i=t.toLowerCase(),r=new Map([["cameraopen","opened"],["cameraclose","closed"],["camerachange","camera:changed"],["resolutionchange","resolution:changed"],["played","played"],["singleframeacquired","singleFrameAcquired"],["frameaddedtobuffer","frameAddedToBuffer"]]).get(i);if(!r)throw new Error("Invalid event.");this._on(r,e)}off(t,e){const i=t.toLowerCase(),r=new Map([["cameraopen","opened"],["cameraclose","closed"],["camerachange","camera:changed"],["resolutionchange","resolution:changed"],["played","played"],["singleframeacquired","singleFrameAcquired"],["frameaddedtobuffer","frameAddedToBuffer"]]).get(i);if(!r)throw new Error("Invalid event.");this._off(r,e)}getVideoSettings(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getMediaStreamConstraints()}async updateVideoSettings(t){var e;await(null===(e=this.cameraManager)||void 0===e?void 0:e.setMediaStreamConstraints(t,!0))}getCapabilities(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getCameraCapabilities()}getCameraSettings(){return this.cameraManager.getCameraSettings()}async turnOnTorch(){var t,e;if(Xe(this,is,"m",ys).call(this))throw new Error("'turnOnTorch()' is invalid in 'singleFrameMode'.");try{await(null===(t=this.cameraManager)||void 0===t?void 0:t.turnOnTorch())}catch(t){let i=this.cameraView.getUIElement();throw i=i.shadowRoot||i,null===(e=null==i?void 0:i.dceMnFs)||void 0===e||e.funcShowToast("Torch Not Supported"),t}this.isTorchOn=!0;let i=this.cameraView.getUIElement();i=i.shadowRoot||i,i.elTorchAuto&&(i.elTorchAuto.style.display="none"),i.elTorchOn&&(i.elTorchOn.style.display=""),i.elTorchOff&&(i.elTorchOff.style.display="none")}async turnOffTorch(){var t;if(Xe(this,is,"m",ys).call(this))throw new Error("'turnOffTorch()' is invalid in 'singleFrameMode'.");await(null===(t=this.cameraManager)||void 0===t?void 0:t.turnOffTorch()),this.isTorchOn=!1;let e=this.cameraView.getUIElement();e=e.shadowRoot||e,e.elTorchAuto&&(e.elTorchAuto.style.display="none"),e.elTorchOn&&(e.elTorchOn.style.display="none"),e.elTorchOff&&(e.elTorchOff.style.display="")}async turnAutoTorch(t=250){if(null!=this._taskid4AutoTorch){if(!(t{var t,n,s;if(this.disposed||e||null!=this.isTorchOn||!this.isOpen())return clearInterval(this._taskid4AutoTorch),void(this._taskid4AutoTorch=null);if(this.isPaused())return;if(++r>10&&this._delay4AutoTorch<1e3)return clearInterval(this._taskid4AutoTorch),this._taskid4AutoTorch=null,void this.turnAutoTorch(1e3);let o;try{o=this.fetchImage()}catch(t){}if(!o||!o.width||!o.height)return;let a=0;if(h.IPF_GRAYSCALED===o.format){for(let t=0;t=this.maxDarkCount4AutoTroch){null===(t=Os._onLog)||void 0===t||t.call(Os,`darkCount ${i}`);try{await this.turnOnTorch(),this.isTorchOn=!0;let t=this.cameraView.getUIElement();t=t.shadowRoot||t,null===(n=null==t?void 0:t.dceMnFs)||void 0===n||n.funcShowToast("Torch Auto On")}catch(t){console.warn(t),e=!0;let i=this.cameraView.getUIElement();i=i.shadowRoot||i,null===(s=null==i?void 0:i.dceMnFs)||void 0===s||s.funcShowToast("Torch Not Supported")}}}else i=0};this._taskid4AutoTorch=setInterval(n,t),this.isTorchOn=void 0,n();let s=this.cameraView.getUIElement();s=s.shadowRoot||s,s.elTorchAuto&&(s.elTorchAuto.style.display=""),s.elTorchOn&&(s.elTorchOn.style.display="none"),s.elTorchOff&&(s.elTorchOff.style.display="none")}async setColorTemperature(t){if(Xe(this,is,"m",ys).call(this))throw new Error("'setColorTemperature()' is invalid in 'singleFrameMode'.");await this.cameraManager.setColorTemperature(t,!0)}getColorTemperature(){return this.cameraManager.getColorTemperature()}async setExposureCompensation(t){var e;if(Xe(this,is,"m",ys).call(this))throw new Error("'setExposureCompensation()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setExposureCompensation(t,!0))}getExposureCompensation(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getExposureCompensation()}async _setZoom(t){var e,i,r;if(Xe(this,is,"m",ys).call(this))throw new Error("'setZoom()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setZoom(t));{let e=null===(i=this.cameraView)||void 0===i?void 0:i.getUIElement();e=(null==e?void 0:e.shadowRoot)||e,null===(r=null==e?void 0:e.dceMnFs)||void 0===r||r.funcInfoZoomChange(t.factor)}}async setZoom(t){await this._setZoom(t)}getZoomSettings(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getZoom()}async resetZoom(){var t;if(Xe(this,is,"m",ys).call(this))throw new Error("'resetZoom()' is invalid in 'singleFrameMode'.");await(null===(t=this.cameraManager)||void 0===t?void 0:t.resetZoom())}async setFrameRate(t){var e;if(Xe(this,is,"m",ys).call(this))throw new Error("'setFrameRate()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setFrameRate(t,!0))}getFrameRate(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getFrameRate()}async setFocus(t){var e;if(Xe(this,is,"m",ys).call(this))throw new Error("'setFocus()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setFocus(t,!0))}getFocusSettings(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getFocus()}setAutoZoomRange(t){Xe(this,ps,"f").minValue=t.min,Xe(this,ps,"f").maxValue=t.max}getAutoZoomRange(){return{min:Xe(this,ps,"f").minValue,max:Xe(this,ps,"f").maxValue}}async enableEnhancedFeatures(t){var e,i;if(!(null===(i=null===(e=ct.license)||void 0===e?void 0:e.LicenseManager)||void 0===i?void 0:i.bPassValidation))throw new Error("License is not verified, or license is invalid.");if(0!==gt.bSupportDce4Module)throw new Error("Please set a license containing the DCE module.");t&ni.EF_ENHANCED_FOCUS&&(Xe(this,ms,"f").enhancedFocus=!0),t&ni.EF_AUTO_ZOOM&&(Xe(this,ms,"f").autoZoom=!0),t&ni.EF_TAP_TO_FOCUS&&(Xe(this,ms,"f").tapToFocus=!0,this.cameraManager.enableTapToFocus())}disableEnhancedFeatures(t){t&ni.EF_ENHANCED_FOCUS&&(Xe(this,ms,"f").enhancedFocus=!1,this.setFocus({mode:"continuous"}).catch((()=>{}))),t&ni.EF_AUTO_ZOOM&&(Xe(this,ms,"f").autoZoom=!1,this.resetZoom().catch((()=>{}))),t&ni.EF_TAP_TO_FOCUS&&(Xe(this,ms,"f").tapToFocus=!1,this.cameraManager.disableTapToFocus()),Xe(this,is,"m",Cs).call(this)&&Xe(this,is,"m",ws).call(this)||Xe(this,_s,"f").stopCharging()}_setScanRegion(t){if(null!=t&&!w(t)&&!I(t))throw TypeError("Invalid 'region'.");ze(this,us,t?JSON.parse(JSON.stringify(t)):null,"f"),this.cameraView&&!this.cameraView.disposed&&this.cameraView.setScanRegion(t)}setScanRegion(t){this._setScanRegion(t),this.cameraView&&!this.cameraView.disposed&&(null===t?this.cameraView.setScanRegionMaskVisible(!1):this.cameraView.setScanRegionMaskVisible(!0))}getScanRegion(){return JSON.parse(JSON.stringify(Xe(this,us,"f")))}setErrorListener(t){if(!t)throw new TypeError("Invalid 'listener'");ze(this,cs,t,"f")}hasNextImageToFetch(){return!("open"!==this.getCameraState()||!this.cameraManager.isVideoLoaded()||Xe(this,is,"m",ys).call(this))}startFetching(){if(Xe(this,is,"m",ys).call(this))throw Error("'startFetching()' is unavailable in 'singleFrameMode'.");Xe(this,fs,"f")||(ze(this,fs,!0,"f"),Xe(this,is,"m",Es).call(this))}stopFetching(){Xe(this,fs,"f")&&(Os._onLog&&Os._onLog("DCE: stop fetching loop: "+Date.now()),Xe(this,gs,"f")&&clearTimeout(Xe(this,gs,"f")),ze(this,fs,!1,"f"))}fetchImage(){if(Xe(this,is,"m",ys).call(this))throw new Error("'fetchImage()' is unavailable in 'singleFrameMode'.");if(!this.video)throw new Error("The video element does not exist.");if(4!==this.video.readyState)throw new Error("The video is not loaded.");const t=this.getResolution();if(!(null==t?void 0:t.width)||!(null==t?void 0:t.height))throw new Error("The video is not loaded.");let e;if(e=ki.convert(Xe(this,us,"f"),t.width,t.height),e||(e={x:0,y:0,width:t.width,height:t.height}),e.x>t.width||e.y>t.height)throw new Error("Invalid scan region.");e.x+e.width>t.width&&(e.width=t.width-e.x),e.y+e.height>t.height&&(e.height=t.height-e.y);const i={sx:e.x,sy:e.y,sWidth:e.width,sHeight:e.height,dWidth:e.width,dHeight:e.height},r=Math.max(i.dWidth,i.dHeight);if(this.canvasSizeLimit&&r>this.canvasSizeLimit){const t=this.canvasSizeLimit/r;i.dWidth>i.dHeight?(i.dWidth=this.canvasSizeLimit,i.dHeight=Math.round(i.dHeight*t)):(i.dWidth=Math.round(i.dWidth*t),i.dHeight=this.canvasSizeLimit)}const n=this.cameraManager.getFrameData({position:i,pixelFormat:this.getPixelFormat()===h.IPF_GRAYSCALED?Gr.GREY:Gr.RGBA});if(!n)return null;let s;s=n.pixelFormat===Gr.GREY?n.width:4*n.width;let o=!0;return 0===i.sx&&0===i.sy&&i.sWidth===t.width&&i.sHeight===t.height&&(o=!1),{bytes:n.data,width:n.width,height:n.height,stride:s,format:Is.get(n.pixelFormat),tag:{imageId:this._imageId==Number.MAX_VALUE?this._imageId=0:++this._imageId,type:wt.ITT_VIDEO_FRAME,isCropped:o,cropRegion:{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height,isMeasuredInPercentage:!1},originalWidth:t.width,originalHeight:t.height,currentWidth:n.width,currentHeight:n.height,timeSpent:n.timeSpent,timeStamp:n.timeStamp},toCanvas:Xe(this,ls,"f"),isDCEFrame:!0}}setImageFetchInterval(t){this.fetchInterval=t,Xe(this,fs,"f")&&(Xe(this,gs,"f")&&clearTimeout(Xe(this,gs,"f")),ze(this,gs,setTimeout((()=>{this.disposed||Xe(this,is,"m",Es).call(this)}),t),"f"))}getImageFetchInterval(){return this.fetchInterval}setPixelFormat(t){ze(this,ds,t,"f")}getPixelFormat(){return Xe(this,ds,"f")}takePhoto(t){if(!this.isOpen())throw new Error("Not open.");if(Xe(this,is,"m",ys).call(this))throw new Error("'takePhoto()' is unavailable in 'singleFrameMode'.");const e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("accept",".jpg,.jpeg,.icon,.gif,.svg,.webp,.png,.bmp"),e.setAttribute("capture",""),e.style.position="absolute",e.style.top="-9999px",e.style.backgroundColor="transparent",e.style.color="transparent",e.addEventListener("click",(()=>{const t=this.isOpen();this.close(),window.addEventListener("focus",(()=>{t&&this.open(),e.remove()}),{once:!0})})),e.addEventListener("change",(async()=>{const i=e.files[0],r=await(async t=>{let e=null,i=null;if("undefined"!=typeof createImageBitmap)try{if(e=await createImageBitmap(t),e)return e}catch(t){}var r;return e||(i=await(r=t,new Promise(((t,e)=>{let i=URL.createObjectURL(r),n=new Image;n.src=i,n.onload=()=>{URL.revokeObjectURL(n.src),t(n)},n.onerror=t=>{e(new Error("Can't convert blob to image : "+(t instanceof Event?t.type:t)))}})))),i})(i),n=r instanceof HTMLImageElement?r.naturalWidth:r.width,s=r instanceof HTMLImageElement?r.naturalHeight:r.height;let o=ki.convert(Xe(this,us,"f"),n,s);o||(o={x:0,y:0,width:n,height:s});const a=Xe(this,hs,"f").call(this,r,n,s,o);t&&t(a)})),document.body.appendChild(e),e.click()}convertToPageCoordinates(t){const e=Xe(this,is,"m",Ts).call(this,t);return{x:e.pageX,y:e.pageY}}convertToClientCoordinates(t){const e=Xe(this,is,"m",Ts).call(this,t);return{x:e.clientX,y:e.clientY}}convertToScanRegionCoordinates(t){if(!Xe(this,us,"f"))return JSON.parse(JSON.stringify(t));let e,i,r=Xe(this,us,"f").left||Xe(this,us,"f").x||0,n=Xe(this,us,"f").top||Xe(this,us,"f").y||0;if(!Xe(this,us,"f").isMeasuredInPercentage)return{x:t.x-r,y:t.y-n};if(!this.cameraView)throw new Error("Camera view is not set.");if(this.cameraView.disposed)throw new Error("'cameraView' has been disposed.");if(!this.isOpen())throw new Error("Not open.");if(!Xe(this,is,"m",ys).call(this)&&!this.cameraManager.isVideoLoaded())throw new Error("Video is not loaded.");if(Xe(this,is,"m",ys).call(this)&&!this.cameraView._cvsSingleFrameMode)throw new Error("No image is selected.");if(Xe(this,is,"m",ys).call(this)){const t=this.cameraView._innerComponent.getElement("content");e=t.width,i=t.height}else{const t=this.getVideoEl();e=t.videoWidth,i=t.videoHeight}return{x:t.x-Math.round(r*e/100),y:t.y-Math.round(n*i/100)}}dispose(){this.close(),this.cameraManager.dispose(),this.releaseCameraView(),ze(this,vs,!0,"f")}}var As,Rs,Ds,Ls,Ms,Fs,Ps,ks;rs=Os,ss=new WeakMap,os=new WeakMap,as=new WeakMap,hs=new WeakMap,ls=new WeakMap,cs=new WeakMap,us=new WeakMap,ds=new WeakMap,fs=new WeakMap,gs=new WeakMap,ms=new WeakMap,ps=new WeakMap,_s=new WeakMap,vs=new WeakMap,is=new WeakSet,ys=function(){return"disabled"!==this.singleFrameMode},ws=function(){return!this.videoSrc&&"opened"===this.cameraManager.state},Cs=function(){for(let t in Xe(this,ms,"f"))if(1==Xe(this,ms,"f")[t])return!0;return!1},Es=function t(){if(this.disposed)return;if("open"!==this.getCameraState()||!Xe(this,fs,"f"))return Xe(this,gs,"f")&&clearTimeout(Xe(this,gs,"f")),void ze(this,gs,setTimeout((()=>{this.disposed||Xe(this,is,"m",t).call(this)}),this.fetchInterval),"f");const e=()=>{var t;let e;Os._onLog&&Os._onLog("DCE: start fetching a frame into buffer: "+Date.now());try{e=this.fetchImage()}catch(e){const i=e.message||e;if("The video is not loaded."===i)return;if(null===(t=Xe(this,cs,"f"))||void 0===t?void 0:t.onErrorReceived)return void setTimeout((()=>{var t;null===(t=Xe(this,cs,"f"))||void 0===t||t.onErrorReceived(_t.EC_IMAGE_READ_FAILED,i)}),0);console.warn(e)}e?(this.addImageToBuffer(e),Os._onLog&&Os._onLog("DCE: finish fetching a frame into buffer: "+Date.now()),Xe(this,os,"f").fire("frameAddedToBuffer",null,{async:!1})):Os._onLog&&Os._onLog("DCE: get a invalid frame, abandon it: "+Date.now())};if(this.getImageCount()>=this.getMaxImageCount())switch(this.getBufferOverflowProtectionMode()){case o.BOPM_BLOCK:break;case o.BOPM_UPDATE:e()}else e();Xe(this,gs,"f")&&clearTimeout(Xe(this,gs,"f")),ze(this,gs,setTimeout((()=>{this.disposed||Xe(this,is,"m",t).call(this)}),this.fetchInterval),"f")},Ts=function(t){if(!this.cameraView)throw new Error("Camera view is not set.");if(this.cameraView.disposed)throw new Error("'cameraView' has been disposed.");if(!this.isOpen())throw new Error("Not open.");if(!Xe(this,is,"m",ys).call(this)&&!this.cameraManager.isVideoLoaded())throw new Error("Video is not loaded.");if(Xe(this,is,"m",ys).call(this)&&!this.cameraView._cvsSingleFrameMode)throw new Error("No image is selected.");const e=this.cameraView._innerComponent.getBoundingClientRect(),i=e.left,r=e.top,n=i+window.scrollX,s=r+window.scrollY,{width:o,height:a}=this.cameraView._innerComponent.getBoundingClientRect();if(o<=0||a<=0)throw new Error("Unable to get content dimensions. Camera view may not be rendered on the page.");let h,l,c;if(Xe(this,is,"m",ys).call(this)){const t=this.cameraView._innerComponent.getElement("content");h=t.width,l=t.height,c="contain"}else{const t=this.getVideoEl();h=t.videoWidth,l=t.videoHeight,c=this.cameraView.getVideoFit()}const u=o/a,d=h/l;let f,g,m,p,_=1;if("contain"===c)u{var e;if(!this.isUseMagnifier)return;if(Xe(this,Ls,"f")||ze(this,Ls,new Bs,"f"),!Xe(this,Ls,"f").magnifierCanvas)return;document.body.contains(Xe(this,Ls,"f").magnifierCanvas)||(Xe(this,Ls,"f").magnifierCanvas.style.position="fixed",Xe(this,Ls,"f").magnifierCanvas.style.boxSizing="content-box",Xe(this,Ls,"f").magnifierCanvas.style.border="2px solid #FFFFFF",document.body.append(Xe(this,Ls,"f").magnifierCanvas));const i=this._innerComponent.getElement("content");if(!i)return;if(t.pointer.x<0||t.pointer.x>i.width||t.pointer.y<0||t.pointer.y>i.height)return void Xe(this,Fs,"f").call(this);const r=null===(e=this._drawingLayerManager._getFabricCanvas())||void 0===e?void 0:e.lowerCanvasEl;if(!r)return;const n=Math.max(i.clientWidth/5/1.5,i.clientHeight/4/1.5),s=1.5*n,o=[{image:i,width:i.width,height:i.height},{image:r,width:r.width,height:r.height}];Xe(this,Ls,"f").update(s,t.pointer,n,o);{let e=0,i=0;t.e instanceof MouseEvent?(e=t.e.clientX,i=t.e.clientY):t.e instanceof TouchEvent&&t.e.changedTouches.length&&(e=t.e.changedTouches[0].clientX,i=t.e.changedTouches[0].clientY),e<1.5*s&&i<1.5*s?(Xe(this,Ls,"f").magnifierCanvas.style.left="auto",Xe(this,Ls,"f").magnifierCanvas.style.top="0",Xe(this,Ls,"f").magnifierCanvas.style.right="0"):(Xe(this,Ls,"f").magnifierCanvas.style.left="0",Xe(this,Ls,"f").magnifierCanvas.style.top="0",Xe(this,Ls,"f").magnifierCanvas.style.right="auto")}Xe(this,Ls,"f").show()})),Fs.set(this,(()=>{Xe(this,Ls,"f")&&Xe(this,Ls,"f").hide()})),Ps.set(this,!1)}_setUIElement(t){this.UIElement=t,this._unbindUI(),this._bindUI()}async setUIElement(t){let e;if("string"==typeof t){let i=await Wi(t);e=document.createElement("div"),Object.assign(e.style,{width:"100%",height:"100%"}),e.attachShadow({mode:"open"}).appendChild(i)}else e=t;this._setUIElement(e)}getUIElement(){return this.UIElement}_bindUI(){if(!this.UIElement)throw new Error("Need to set 'UIElement'.");if(this._innerComponent)return;const t=this.UIElement;let e=t.classList.contains(this.containerClassName)?t:t.querySelector(`.${this.containerClassName}`);e||(e=document.createElement("div"),e.style.width="100%",e.style.height="100%",e.className=this.containerClassName,t.append(e)),this._innerComponent=document.createElement("dce-component"),e.appendChild(this._innerComponent)}_unbindUI(){var t,e,i;null===(t=this._drawingLayerManager)||void 0===t||t.clearDrawingLayers(),null===(e=this._innerComponent)||void 0===e||e.removeElement("drawing-layer"),this._layerBaseCvs=null,null===(i=this._innerComponent)||void 0===i||i.remove(),this._innerComponent=null}setImage(t,e,i){if(!this._innerComponent)throw new Error("Need to set 'UIElement'.");let r=this._innerComponent.getElement("content");r||(r=document.createElement("canvas"),r.style.objectFit="contain",this._innerComponent.setElement("content",r)),r.width===e&&r.height===i||(r.width=e,r.height=i);const n=r.getContext("2d");n.clearRect(0,0,r.width,r.height),t instanceof Uint8Array||t instanceof Uint8ClampedArray?(t instanceof Uint8Array&&(t=new Uint8ClampedArray(t.buffer)),n.putImageData(new ImageData(t,e,i),0,0)):(t instanceof HTMLCanvasElement||t instanceof HTMLImageElement)&&n.drawImage(t,0,0)}getImage(){return this._innerComponent.getElement("content")}clearImage(){if(!this._innerComponent)return;let t=this._innerComponent.getElement("content");t&&t.getContext("2d").clearRect(0,0,t.width,t.height)}removeImage(){this._innerComponent&&this._innerComponent.removeElement("content")}setOriginalImage(t){if(y(t)){ze(this,Ds,t,"f");const{width:e,height:i,bytes:r,format:n}=Object.assign({},t);let s;if(n===h.IPF_GRAYSCALED){s=new Uint8ClampedArray(e*i*4);for(let t=0;t({x:e.x-t.left-t.width/2,y:e.y-t.top-t.height/2}))),t.addWithUpdate()}else i.points=e;const r=i.points.length-1;return i.controls=i.points.reduce((function(t,e,i){return t["p"+i]=new oi.Control({positionHandler:Ei,actionHandler:bi(i>0?i-1:r,Si),actionName:"modifyPolygon",pointIndex:i}),t}),{}),i._setPositionDimensions({}),!0}}extendGet(t){if("startPoint"===t||"endPoint"===t){const e=[],i=this._fabricObject;if(i.selectable&&!i.group)for(let t in i.oCoords)e.push({x:i.oCoords[t].x,y:i.oCoords[t].y});else for(let t of i.points){let r=t.x-i.pathOffset.x,n=t.y-i.pathOffset.y;const s=oi.util.transformPoint({x:r,y:n},i.calcTransformMatrix());e.push({x:s.x,y:s.y})}return"startPoint"===t?e[0]:e[1]}}updateCoordinateBaseFromImageToView(){const t=this.get("startPoint"),e=this.get("endPoint");this.set("startPoint",{x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)}),this.set("endPoint",{x:this.convertPropFromViewToImage(e.x),y:this.convertPropFromViewToImage(e.y)})}updateCoordinateBaseFromViewToImage(){const t=this.get("startPoint"),e=this.get("endPoint");this.set("startPoint",{x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)}),this.set("endPoint",{x:this.convertPropFromImageToView(e.x),y:this.convertPropFromImageToView(e.y)})}setPosition(t){this.setLine(t)}getPosition(){return this.getLine()}updatePosition(){Xe(this,Ai,"f")&&this.setLine(Xe(this,Ai,"f"))}setPolygon(){}getPolygon(){return null}setLine(t){if(!E(t))throw new TypeError("Invalid 'line'.");if(this._drawingLayer){if("view"===this.coordinateBase)this.set("startPoint",{x:this.convertPropFromViewToImage(t.startPoint.x),y:this.convertPropFromViewToImage(t.startPoint.y)}),this.set("endPoint",{x:this.convertPropFromViewToImage(t.endPoint.x),y:this.convertPropFromViewToImage(t.endPoint.y)});else{if("image"!==this.coordinateBase)throw new Error("Invalid 'coordinateBase'.");this.set("startPoint",t.startPoint),this.set("endPoint",t.endPoint)}this._drawingLayer.renderAll()}else ze(this,Ai,JSON.parse(JSON.stringify(t)),"f")}getLine(){if(this._drawingLayer){if("view"===this.coordinateBase)return{startPoint:{x:this.convertPropFromImageToView(this.get("startPoint").x),y:this.convertPropFromImageToView(this.get("startPoint").y)},endPoint:{x:this.convertPropFromImageToView(this.get("endPoint").x),y:this.convertPropFromImageToView(this.get("endPoint").y)}};if("image"===this.coordinateBase)return{startPoint:this.get("startPoint"),endPoint:this.get("endPoint")};throw new Error("Invalid 'coordinateBase'.")}return Xe(this,Ai,"f")?JSON.parse(JSON.stringify(Xe(this,Ai,"f"))):null}},QuadDrawingItem:Di,RectDrawingItem:Ci,TextDrawingItem:Oi});const Us="undefined"==typeof self,Vs="function"==typeof importScripts,Gs=(()=>{if(!Vs){if(!Us&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),Ws=t=>{if(null==t&&(t="./"),Us||Vs);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t};gt.engineResourcePaths.dbr={version:"10.4.31",path:Gs,isInternal:!0},ut.dbr={js:!1,wasm:!0,deps:["license","dip"]},ct.dbr={};const Ys="1.4.21";"string"!=typeof gt.engineResourcePaths.std&&O(gt.engineResourcePaths.std.version,Ys)<0&&(gt.engineResourcePaths.std={version:Ys,path:Ws(Gs+`../../dynamsoft-capture-vision-std@${Ys}/dist/`),isInternal:!0});const Hs="2.4.31";(!gt.engineResourcePaths.dip||"string"!=typeof gt.engineResourcePaths.dip&&O(gt.engineResourcePaths.dip.version,Hs)<0)&&(gt.engineResourcePaths.dip={version:Hs,path:Ws(Gs+`../../dynamsoft-image-processing@${Hs}/dist/`),isInternal:!0});const Xs={BF_NULL:BigInt(0),BF_ALL:BigInt("0xFFFFFFFEFFFFFFFF"),BF_DEFAULT:BigInt(4265345023),BF_ONED:BigInt(3147775),BF_GS1_DATABAR:BigInt(260096),BF_CODE_39:BigInt(1),BF_CODE_128:BigInt(2),BF_CODE_93:BigInt(4),BF_CODABAR:BigInt(8),BF_ITF:BigInt(16),BF_EAN_13:BigInt(32),BF_EAN_8:BigInt(64),BF_UPC_A:BigInt(128),BF_UPC_E:BigInt(256),BF_INDUSTRIAL_25:BigInt(512),BF_CODE_39_EXTENDED:BigInt(1024),BF_GS1_DATABAR_OMNIDIRECTIONAL:BigInt(2048),BF_GS1_DATABAR_TRUNCATED:BigInt(4096),BF_GS1_DATABAR_STACKED:BigInt(8192),BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL:BigInt(16384),BF_GS1_DATABAR_EXPANDED:BigInt(32768),BF_GS1_DATABAR_EXPANDED_STACKED:BigInt(65536),BF_GS1_DATABAR_LIMITED:BigInt(131072),BF_PATCHCODE:BigInt(262144),BF_CODE_32:BigInt(16777216),BF_PDF417:BigInt(33554432),BF_QR_CODE:BigInt(67108864),BF_DATAMATRIX:BigInt(134217728),BF_AZTEC:BigInt(268435456),BF_MAXICODE:BigInt(536870912),BF_MICRO_QR:BigInt(1073741824),BF_MICRO_PDF417:BigInt(524288),BF_GS1_COMPOSITE:BigInt(2147483648),BF_MSI_CODE:BigInt(1048576),BF_CODE_11:BigInt(2097152),BF_TWO_DIGIT_ADD_ON:BigInt(4194304),BF_FIVE_DIGIT_ADD_ON:BigInt(8388608),BF_MATRIX_25:BigInt(68719476736),BF_POSTALCODE:BigInt(0x3f0000000000000),BF_NONSTANDARD_BARCODE:BigInt(4294967296),BF_USPSINTELLIGENTMAIL:BigInt(4503599627370496),BF_POSTNET:BigInt(9007199254740992),BF_PLANET:BigInt(0x40000000000000),BF_AUSTRALIANPOST:BigInt(0x80000000000000),BF_RM4SCC:BigInt(72057594037927940),BF_KIX:BigInt(0x200000000000000),BF_DOTCODE:BigInt(8589934592),BF_PHARMACODE_ONE_TRACK:BigInt(17179869184),BF_PHARMACODE_TWO_TRACK:BigInt(34359738368),BF_PHARMACODE:BigInt(51539607552)};var zs,Zs,qs,Ks;!function(t){t[t.EBRT_STANDARD_RESULT=0]="EBRT_STANDARD_RESULT",t[t.EBRT_CANDIDATE_RESULT=1]="EBRT_CANDIDATE_RESULT",t[t.EBRT_PARTIAL_RESULT=2]="EBRT_PARTIAL_RESULT"}(zs||(zs={})),function(t){t[t.QRECL_ERROR_CORRECTION_H=0]="QRECL_ERROR_CORRECTION_H",t[t.QRECL_ERROR_CORRECTION_L=1]="QRECL_ERROR_CORRECTION_L",t[t.QRECL_ERROR_CORRECTION_M=2]="QRECL_ERROR_CORRECTION_M",t[t.QRECL_ERROR_CORRECTION_Q=3]="QRECL_ERROR_CORRECTION_Q"}(Zs||(Zs={})),function(t){t[t.LM_AUTO=1]="LM_AUTO",t[t.LM_CONNECTED_BLOCKS=2]="LM_CONNECTED_BLOCKS",t[t.LM_STATISTICS=4]="LM_STATISTICS",t[t.LM_LINES=8]="LM_LINES",t[t.LM_SCAN_DIRECTLY=16]="LM_SCAN_DIRECTLY",t[t.LM_STATISTICS_MARKS=32]="LM_STATISTICS_MARKS",t[t.LM_STATISTICS_POSTAL_CODE=64]="LM_STATISTICS_POSTAL_CODE",t[t.LM_CENTRE=128]="LM_CENTRE",t[t.LM_ONED_FAST_SCAN=256]="LM_ONED_FAST_SCAN",t[t.LM_REV=-2147483648]="LM_REV",t[t.LM_SKIP=0]="LM_SKIP"}(qs||(qs={})),function(t){t[t.DM_DIRECT_BINARIZATION=1]="DM_DIRECT_BINARIZATION",t[t.DM_THRESHOLD_BINARIZATION=2]="DM_THRESHOLD_BINARIZATION",t[t.DM_GRAY_EQUALIZATION=4]="DM_GRAY_EQUALIZATION",t[t.DM_SMOOTHING=8]="DM_SMOOTHING",t[t.DM_MORPHING=16]="DM_MORPHING",t[t.DM_DEEP_ANALYSIS=32]="DM_DEEP_ANALYSIS",t[t.DM_SHARPENING=64]="DM_SHARPENING",t[t.DM_BASED_ON_LOC_BIN=128]="DM_BASED_ON_LOC_BIN",t[t.DM_SHARPENING_SMOOTHING=256]="DM_SHARPENING_SMOOTHING",t[t.DM_REV=-2147483648]="DM_REV",t[t.DM_SKIP=0]="DM_SKIP"}(Ks||(Ks={}));var Js=Object.freeze({__proto__:null,BarcodeReaderModule:class{static getVersion(){const t=lt.dbr&<.dbr.wasm;return`10.4.31(Worker: ${lt.dbr&<.dbr.worker||"Not Loaded"}, Wasm: ${t||"Not Loaded"})`}},EnumBarcodeFormat:Xs,get EnumDeblurMode(){return Ks},get EnumExtendedBarcodeResultType(){return zs},get EnumLocalizationMode(){return qs},get EnumQRCodeErrorCorrectionLevel(){return Zs}});const Qs=async t=>{let e;await new Promise(((i,r)=>{e=new Image,e.onload=()=>i(e),e.onerror=r,e.src=URL.createObjectURL(t)}));const i=document.createElement("canvas"),r=i.getContext("2d");return i.width=e.width,i.height=e.height,r.drawImage(e,0,0),{bytes:Uint8Array.from(r.getImageData(0,0,i.width,i.height).data),width:i.width,height:i.height,stride:4*i.width,format:10}};const $s="undefined"==typeof self,to="function"==typeof importScripts,eo=(()=>{if(!to){if(!$s&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),io=t=>{if(null==t&&(t="./"),$s||to);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t};gt.engineResourcePaths.utility={version:"1.4.32",path:eo,isInternal:!0},ut.utility={js:!0,wasm:!0};const ro="1.4.21";"string"!=typeof gt.engineResourcePaths.std&&O(gt.engineResourcePaths.std.version,ro)<0&&(gt.engineResourcePaths.std={version:ro,path:io(eo+`../../dynamsoft-capture-vision-std@${ro}/dist/`),isInternal:!0});const no="2.4.31";(!gt.engineResourcePaths.dip||"string"!=typeof gt.engineResourcePaths.dip&&O(gt.engineResourcePaths.dip.version,no)<0)&&(gt.engineResourcePaths.dip={version:no,path:io(eo+`../../dynamsoft-image-processing@${no}/dist/`),isInternal:!0});function so(t,e,i,r){if("a"===i&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?r:"a"===i?r.call(t):r?r.value:e.get(t)}var oo,ao,ho,lo,co;function uo(t,e){let i=!0;for(let o=0;o1)return Math.sqrt((h-o)**2+(l-a)**2);{const t=n+u*(o-n),e=s+u*(a-s);return Math.sqrt((h-t)**2+(l-e)**2)}}function mo(t){const e=[];for(let i=0;i=0&&h<=1&&l>=0&&l<=1?{x:t.x+l*n,y:t.y+l*s}:null}function vo(t){let e=0;for(let i=0;i0}function wo(t,e){for(let i=0;i<4;i++)if(!yo(t.points[i],t.points[(i+1)%4],e))return!1;return!0}"function"==typeof SuppressedError&&SuppressedError;function Co(t,e,i,r){const n=t.points,s=e.points;let o=8*i;o=Math.max(o,5);const a=mo(n)[3],h=mo(n)[1],l=mo(s)[3],c=mo(s)[1];let u,d=0;if(u=Math.max(Math.abs(go(a,e.points[0])),Math.abs(go(a,e.points[3]))),u>d&&(d=u),u=Math.max(Math.abs(go(h,e.points[1])),Math.abs(go(h,e.points[2]))),u>d&&(d=u),u=Math.max(Math.abs(go(l,t.points[0])),Math.abs(go(l,t.points[3]))),u>d&&(d=u),u=Math.max(Math.abs(go(c,t.points[1])),Math.abs(go(c,t.points[2]))),u>d&&(d=u),d>o)return!1;const f=po(mo(n)[0]),g=po(mo(n)[2]),m=po(mo(s)[0]),p=po(mo(s)[2]),_=fo(f,p),v=fo(m,g),y=_>v,w=Math.min(_,v),C=fo(f,g),E=fo(m,p);let T=12*i;return T=Math.max(T,5),T=Math.min(T,C),T=Math.min(T,E),!!(w{e.x+=t,e.y+=i})),e.x/=t.length,e.y/=t.length,e}isProbablySameLocationWithOffset(t,e){const i=this.item.location,r=t.location;if(i.area<=0)return!1;if(Math.abs(i.area-r.area)>.4*i.area)return!1;let n=new Array(4).fill(0),s=new Array(4).fill(0),o=0,a=0;for(let t=0;t<4;++t)n[t]=Math.round(100*(r.points[t].x-i.points[t].x))/100,o+=n[t],s[t]=Math.round(100*(r.points[t].y-i.points[t].y))/100,a+=s[t];o/=4,a/=4;for(let t=0;t<4;++t){if(Math.abs(n[t]-o)>this.strictLimit||Math.abs(o)>.8)return!1;if(Math.abs(s[t]-a)>this.strictLimit||Math.abs(a)>.8)return!1}return e.x=o,e.y=a,!0}isLocationOverlap(t,e){if(this.locationArea>e){for(let e=0;e<4;e++)if(wo(this.location,t.points[e]))return!0;const e=this.getCenterPoint(t.points);if(wo(this.location,e))return!0}else{for(let e=0;e<4;e++)if(wo(t,this.location.points[e]))return!0;if(wo(t,this.getCenterPoint(this.location.points)))return!0}return!1}isMatchedLocationWithOffset(t,e={x:0,y:0}){if(this.isOneD){const i=Object.assign({},t.location);for(let t=0;t<4;t++)i.points[t].x-=e.x,i.points[t].y-=e.y;if(!this.isLocationOverlap(i,t.locationArea))return!1;const r=[this.location.points[0],this.location.points[3]],n=[this.location.points[1],this.location.points[2]];for(let t=0;t<4;t++){const e=i.points[t],s=0===t||3===t?r:n;if(Math.abs(go(s,e))>this.locationThreshold)return!1}}else for(let i=0;i<4;i++){const r=t.location.points[i],n=this.location.points[i];if(!(Math.abs(n.x+e.x-r.x)=this.locationThreshold)return!1}return!0}isOverlappedLocationWithOffset(t,e,i=!0){const r=Object.assign({},t.location);for(let t=0;t<4;t++)r.points[t].x-=e.x,r.points[t].y-=e.y;if(!this.isLocationOverlap(r,t.location.area))return!1;if(i){const t=.75;return function(t,e){const i=[];for(let r=0;r<4;r++)for(let n=0;n<4;n++){const s=_o(t[r],t[(r+1)%4],e[n],e[(n+1)%4]);s&&i.push(s)}return t.forEach((t=>{uo(e,t)&&i.push(t)})),e.forEach((e=>{uo(t,e)&&i.push(e)})),vo(function(t){if(t.length<=1)return t;t.sort(((t,e)=>t.x-e.x||t.y-e.y));const e=t.shift();return t.sort(((t,i)=>Math.atan2(t.y-e.y,t.x-e.x)-Math.atan2(i.y-e.y,i.x-e.x))),[e,...t]}(i))}([...this.location.points],r.points)>this.locationArea*t}return!0}}const To={BF_ONED:BigInt(3147775),BF_GS1_DATABAR:BigInt(260096)},So={barcode:2,text_line:4,detected_quad:8,normalized_image:16},bo=t=>Object.values(So).includes(t)||So.hasOwnProperty(t),Io=(t,e)=>"string"==typeof t?e[So[t]]:e[t],xo=(t,e,i)=>{"string"==typeof t?e[So[t]]=i:e[t]=i},Oo=(t,e,i)=>{const r=[8,16].includes(i);if(!r&&t.isResultCrossVerificationEnabled(i))for(let t=0;t{let h=rt();nt[h]=async e=>{if(e.success)return s&&this.saveToFile(e.image,"test.png",s),t(e.image);{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,a(t)}},et.postMessage({type:"utility_drawOnImage",id:h,body:{dsImage:o,drawingItem:e instanceof Array?e:[e],color:r,thickness:n,type:i}})}))}},MultiFrameResultCrossFilter:class{constructor(){this.verificationEnabled={[mt.CRIT_BARCODE]:!1,[mt.CRIT_TEXT_LINE]:!0,[mt.CRIT_DETECTED_QUAD]:!0,[mt.CRIT_NORMALIZED_IMAGE]:!1},this.duplicateFilterEnabled={[mt.CRIT_BARCODE]:!1,[mt.CRIT_TEXT_LINE]:!1,[mt.CRIT_DETECTED_QUAD]:!1,[mt.CRIT_NORMALIZED_IMAGE]:!1},this.duplicateForgetTime={[mt.CRIT_BARCODE]:3e3,[mt.CRIT_TEXT_LINE]:3e3,[mt.CRIT_DETECTED_QUAD]:3e3,[mt.CRIT_NORMALIZED_IMAGE]:3e3},this.latestOverlappingEnabled={[mt.CRIT_BARCODE]:!1,[mt.CRIT_TEXT_LINE]:!1,[mt.CRIT_DETECTED_QUAD]:!1,[mt.CRIT_NORMALIZED_IMAGE]:!1},this.maxOverlappingFrames={[mt.CRIT_BARCODE]:5,[mt.CRIT_TEXT_LINE]:5,[mt.CRIT_DETECTED_QUAD]:5,[mt.CRIT_NORMALIZED_IMAGE]:5},this.overlapSet=[],this.stabilityCount=0,this.crossVerificationFrames=5,oo.set(this,new Map),ao.set(this,new Map),ho.set(this,new Map),lo.set(this,new Map),co.set(this,new Map)}_dynamsoft(){so(this,oo,"f").forEach(((t,e)=>{xo(e,this.verificationEnabled,t)})),so(this,ao,"f").forEach(((t,e)=>{xo(e,this.duplicateFilterEnabled,t)})),so(this,ho,"f").forEach(((t,e)=>{xo(e,this.duplicateForgetTime,t)})),so(this,lo,"f").forEach(((t,e)=>{xo(e,this.latestOverlappingEnabled,t)})),so(this,co,"f").forEach(((t,e)=>{xo(e,this.maxOverlappingFrames,t)}))}enableResultCrossVerification(t,e){bo(t)&&so(this,oo,"f").set(t,e)}isResultCrossVerificationEnabled(t){return!!bo(t)&&Io(t,this.verificationEnabled)}enableResultDeduplication(t,e){bo(t)&&(e&&this.enableLatestOverlapping(t,!1),so(this,ao,"f").set(t,e))}isResultDeduplicationEnabled(t){return!!bo(t)&&Io(t,this.duplicateFilterEnabled)}setDuplicateForgetTime(t,e){bo(t)&&(e>18e4&&(e=18e4),e<0&&(e=0),so(this,ho,"f").set(t,e))}getDuplicateForgetTime(t){return bo(t)?Io(t,this.duplicateForgetTime):-1}setMaxOverlappingFrames(t,e){bo(t)&&so(this,co,"f").set(t,e)}getMaxOverlappingFrames(t){return bo(t)?Io(t,this.maxOverlappingFrames):-1}enableLatestOverlapping(t,e){bo(t)&&(e&&this.enableResultDeduplication(t,!1),so(this,lo,"f").set(t,e))}isLatestOverlappingEnabled(t){return!!bo(t)&&Io(t,this.latestOverlappingEnabled)}getFilteredResultItemTypes(){let t=0;const e=[mt.CRIT_BARCODE,mt.CRIT_TEXT_LINE,mt.CRIT_DETECTED_QUAD,mt.CRIT_NORMALIZED_IMAGE];for(let i=0;i{if(1!==t.type){const e=(BigInt(t.format)&BigInt(To.BF_ONED))!=BigInt(0)||(BigInt(t.format)&BigInt(To.BF_GS1_DATABAR))!=BigInt(0);return new Eo(h,e?1:2,e,t)}})).filter(Boolean);if(this.overlapSet.length>0){const t=new Array(l).fill(new Array(this.overlapSet.length).fill(1));let e=0;for(;e-1!==t)).length;n>p&&(p=n,m=r,g.x=i.x,g.y=i.y)}}if(0===p){for(let e=0;e-1!=t)).length}let i=this.overlapSet.length<=3?p>=1:p>=2;if(!i&&s&&u>0){let t=0;for(let e=0;e=1:t>=3}i||(this.overlapSet=[])}if(0===this.overlapSet.length)this.stabilityCount=0,t.items.forEach(((t,e)=>{if(1!==t.type){const i=Object.assign({},t),r=(BigInt(t.format)&BigInt(To.BF_ONED))!=BigInt(0)||(BigInt(t.format)&BigInt(To.BF_GS1_DATABAR))!=BigInt(0),s=t.confidence5||Math.abs(g.y)>5)&&(e=!1):e=!1;for(let i=0;i0){for(let t=0;t!(t.overlapCount+this.stabilityCount<=0&&t.crossVerificationFrame<=0)))}f.sort(((t,e)=>e-t)).forEach(((e,i)=>{t.items.splice(e,1)})),d.forEach((e=>{t.items.push(Object.assign(Object.assign({},e),{overlapped:!0}))}))}}onDecodedBarcodesReceived(t){this.latestOverlappingFilter(t),Oo(this,t.items,mt.CRIT_BARCODE)}onRecognizedTextLinesReceived(t){Oo(this,t.items,mt.CRIT_TEXT_LINE)}onDetectedQuadsReceived(t){Oo(this,t.items,mt.CRIT_DETECTED_QUAD)}onNormalizedImagesReceived(t){Oo(this,t.items,mt.CRIT_NORMALIZED_IMAGE)}},UtilityModule:class{static getVersion(){return`1.4.32(Worker: ${lt.utility&<.utility.worker||"Not Loaded"}, Wasm: ${lt.utility&<.utility.wasm||"Not Loaded"})`}}});le._defaultTemplate="ReadSingleBarcode",t.CVR=ge,t.Core=xt,t.DBR=Js,t.DCE=js,t.License=Be,t.Utility=Ao})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Dynamsoft=t.Dynamsoft||{})}(this,(function(t){"use strict";const e=t=>t&&"object"==typeof t&&"function"==typeof t.then,i=(async()=>{})().constructor;let n=class extends i{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(t){let n;this._task=t,e(t)?n=t:"function"==typeof t&&(n=new i(t)),n&&(async()=>{try{const e=await n;t===this._task&&this.resolve(e)}catch(e){t===this._task&&this.reject(e)}})()}get isEmpty(){return null==this._task}constructor(t){let i,n;super(((t,e)=>{i=t,n=e})),this._s="pending",this.resolve=t=>{this.isPending&&(e(t)?this.task=t:(this._s="fulfilled",i(t)))},this.reject=t=>{this.isPending&&(this._s="rejected",n(t))},this.task=t}};function r(t,e,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(t):n?n.value:e.get(t)}function s(t,e,i,n,r){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?r.call(t,i):r?r.value=i:e.set(t,i),i}var o,a,h;"function"==typeof SuppressedError&&SuppressedError,function(t){t[t.BOPM_BLOCK=0]="BOPM_BLOCK",t[t.BOPM_UPDATE=1]="BOPM_UPDATE"}(o||(o={})),function(t){t[t.CCUT_AUTO=0]="CCUT_AUTO",t[t.CCUT_FULL_CHANNEL=1]="CCUT_FULL_CHANNEL",t[t.CCUT_Y_CHANNEL_ONLY=2]="CCUT_Y_CHANNEL_ONLY",t[t.CCUT_RGB_R_CHANNEL_ONLY=3]="CCUT_RGB_R_CHANNEL_ONLY",t[t.CCUT_RGB_G_CHANNEL_ONLY=4]="CCUT_RGB_G_CHANNEL_ONLY",t[t.CCUT_RGB_B_CHANNEL_ONLY=5]="CCUT_RGB_B_CHANNEL_ONLY"}(a||(a={})),function(t){t[t.IPF_BINARY=0]="IPF_BINARY",t[t.IPF_BINARYINVERTED=1]="IPF_BINARYINVERTED",t[t.IPF_GRAYSCALED=2]="IPF_GRAYSCALED",t[t.IPF_NV21=3]="IPF_NV21",t[t.IPF_RGB_565=4]="IPF_RGB_565",t[t.IPF_RGB_555=5]="IPF_RGB_555",t[t.IPF_RGB_888=6]="IPF_RGB_888",t[t.IPF_ARGB_8888=7]="IPF_ARGB_8888",t[t.IPF_RGB_161616=8]="IPF_RGB_161616",t[t.IPF_ARGB_16161616=9]="IPF_ARGB_16161616",t[t.IPF_ABGR_8888=10]="IPF_ABGR_8888",t[t.IPF_ABGR_16161616=11]="IPF_ABGR_16161616",t[t.IPF_BGR_888=12]="IPF_BGR_888",t[t.IPF_BINARY_8=13]="IPF_BINARY_8",t[t.IPF_NV12=14]="IPF_NV12",t[t.IPF_BINARY_8_INVERTED=15]="IPF_BINARY_8_INVERTED"}(h||(h={}));const l="undefined"==typeof self,c="function"==typeof importScripts,u=(()=>{if(!c){if(!l&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),d=t=>{if(null==t&&(t="./"),l||c);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t},f=t=>Object.prototype.toString.call(t),g=t=>Array.isArray?Array.isArray(t):"[object Array]"===f(t),m=t=>"[object Boolean]"===f(t),p=t=>"number"==typeof t&&!Number.isNaN(t),_=t=>null!==t&&"object"==typeof t&&!Array.isArray(t),v=t=>!(!_(t)||!p(t.width)||t.width<=0||!p(t.height)||t.height<=0||!p(t.stride)||t.stride<=0||!("format"in t)||"tag"in t&&!C(t.tag)),y=t=>!!v(t)&&t.bytes instanceof Uint8Array,w=t=>!(!_(t)||!p(t.left)||t.left<0||!p(t.top)||t.top<0||!p(t.right)||t.right<0||!p(t.bottom)||t.bottom<0||t.left>=t.right||t.top>=t.bottom||!m(t.isMeasuredInPercentage)),C=t=>null===t||!!_(t)&&!!p(t.imageId)&&"type"in t,E=t=>!(!_(t)||!S(t.startPoint)||!S(t.endPoint)||t.startPoint.x==t.endPoint.x&&t.startPoint.y==t.endPoint.y),S=t=>!!_(t)&&!!p(t.x)&&!!p(t.y),T=t=>!!_(t)&&!!g(t.points)&&0!=t.points.length&&!t.points.some((t=>!S(t))),b=t=>!!_(t)&&!!g(t.points)&&0!=t.points.length&&4==t.points.length&&!t.points.some((t=>!S(t))),I=t=>!(!_(t)||!p(t.x)||!p(t.y)||!p(t.width)||t.width<0||!p(t.height)||t.height<0||"isMeasuredInPercentage"in t&&!m(t.isMeasuredInPercentage)),x=async(t,e)=>await new Promise(((i,n)=>{let r=new XMLHttpRequest;r.open("GET",t,!0),r.responseType=e,r.send(),r.onloadend=async()=>{r.status<200||r.status>=300?n(new Error(t+" "+r.status)):i(r.response)},r.onerror=()=>{n(new Error("Network Error: "+r.statusText))}})),O=(t,e)=>{let i=t.split("."),n=e.split(".");for(let t=0;t{const e={},i={std:"dynamsoft-capture-vision-std",dip:"dynamsoft-image-processing",core:"dynamsoft-core",dnn:"dynamsoft-capture-vision-dnn",license:"dynamsoft-license",utility:"dynamsoft-utility",cvr:"dynamsoft-capture-vision-router",dbr:"dynamsoft-barcode-reader",dlr:"dynamsoft-label-recognizer",ddn:"dynamsoft-document-normalizer",dcp:"dynamsoft-code-parser",dcpd:"dynamsoft-code-parser",dlrData:"dynamsoft-label-recognizer-data",dce:"dynamsoft-camera-enhancer",ddv:"dynamsoft-document-viewer"};for(let n in t){if("rootDirectory"===n)continue;let r=n,s=t[r],o=s&&"object"==typeof s&&s.path?s.path:s,a=t.rootDirectory;if(a&&!a.endsWith("/")&&(a+="/"),"object"==typeof s&&s.isInternal)a&&(o=t[r].version?`${a}${i[r]}@${t[r].version}/dist/${"ddv"===r?"engine":""}`:`${a}${i[r]}/dist/${"ddv"===r?"engine":""}`);else{const i=/^@engineRootDirectory(\/?)/;if("string"==typeof o&&(o=o.replace(i,a||"")),"object"==typeof o&&"dwt"===r){const n=t[r].resourcesPath,s=t[r].serviceInstallerLocation;e[r]={resourcesPath:n.replace(i,a||""),serviceInstallerLocation:s.replace(i,a||"")};continue}}e[r]=d(o)}return e},R=async(t,e,i)=>await new Promise((async(n,r)=>{try{const r=e.split(".");let s=r[r.length-1];const o=await L(`image/${s}`,t);r.length<=1&&(s="png");const a=new File([o],e,{type:`image/${s}`});if(i){const t=URL.createObjectURL(a),i=document.createElement("a");i.href=t,i.download=e,i.click()}return n(a)}catch(t){return r()}})),D=t=>{y(t)&&(t=M(t));const e=document.createElement("canvas");return e.width=t.width,e.height=t.height,e.getContext("2d",{willReadFrequently:!0}).putImageData(t,0,0),e},L=async(t,e)=>{y(e)&&(e=M(e));const i=D(e);return new Promise(((e,n)=>{i.toBlob((t=>e(t)),t)}))},M=t=>{let e,i=t.bytes;if(!(i&&i instanceof Uint8Array))throw Error("Parameter type error");if(Number(t.format)===h.IPF_BGR_888){const t=i.length/3;e=new Uint8ClampedArray(4*t);for(let n=0;n=r)break;e[o]=e[o+1]=e[o+2]=(128&n)/128*255,e[o+3]=255,n<<=1}}}else if(Number(t.format)===h.IPF_ABGR_8888){const t=i.length/4;e=new Uint8ClampedArray(i.length);for(let n=0;n=r)break;e[o]=e[o+1]=e[o+2]=128&n?0:255,e[o+3]=255,n<<=1}}}return new ImageData(e,t.width,t.height)};var F,P,k,B,N,j,U,V;let G,W,Y,H,X,z=class t{get _isFetchingStarted(){return r(this,N,"f")}constructor(){F.add(this),P.set(this,[]),k.set(this,1),B.set(this,o.BOPM_BLOCK),N.set(this,!1),j.set(this,void 0),U.set(this,a.CCUT_AUTO)}setErrorListener(t){}addImageToBuffer(t){var e;if(!y(t))throw new TypeError("Invalid 'image'.");if((null===(e=t.tag)||void 0===e?void 0:e.hasOwnProperty("imageId"))&&"number"==typeof t.tag.imageId&&this.hasImage(t.tag.imageId))throw new Error("Existed imageId.");if(r(this,P,"f").length>=r(this,k,"f"))switch(r(this,B,"f")){case o.BOPM_BLOCK:break;case o.BOPM_UPDATE:if(r(this,P,"f").push(t),_(r(this,j,"f"))&&p(r(this,j,"f").imageId)&&1==r(this,j,"f").keepInBuffer)for(;r(this,P,"f").length>r(this,k,"f");){const t=r(this,P,"f").findIndex((t=>{var e;return(null===(e=t.tag)||void 0===e?void 0:e.imageId)!==r(this,j,"f").imageId}));r(this,P,"f").splice(t,1)}else r(this,P,"f").splice(0,r(this,P,"f").length-r(this,k,"f"))}else r(this,P,"f").push(t)}getImage(){if(0===r(this,P,"f").length)return null;let e;if(r(this,j,"f")&&p(r(this,j,"f").imageId)){const t=r(this,F,"m",V).call(this,r(this,j,"f").imageId);if(t<0)throw new Error(`Image with id ${r(this,j,"f").imageId} doesn't exist.`);e=r(this,P,"f").slice(t,t+1)[0]}else e=r(this,P,"f").pop();if([h.IPF_RGB_565,h.IPF_RGB_555,h.IPF_RGB_888,h.IPF_ARGB_8888,h.IPF_RGB_161616,h.IPF_ARGB_16161616,h.IPF_ABGR_8888,h.IPF_ABGR_16161616,h.IPF_BGR_888].includes(e.format)){if(r(this,U,"f")===a.CCUT_RGB_R_CHANNEL_ONLY){t._onLog&&t._onLog("only get R channel data.");const i=new Uint8Array(e.width*e.height);for(let t=0;t0!==t.length&&t.every((t=>p(t))))(t))throw new TypeError("Invalid 'imageId'.");if(void 0!==e&&!m(e))throw new TypeError("Invalid 'keepInBuffer'.");s(this,j,{imageId:t,keepInBuffer:e},"f")}_resetNextReturnedImage(){s(this,j,null,"f")}hasImage(t){return r(this,F,"m",V).call(this,t)>=0}startFetching(){s(this,N,!0,"f")}stopFetching(){s(this,N,!1,"f")}setMaxImageCount(t){if("number"!=typeof t)throw new TypeError("Invalid 'count'.");if(t<1||Math.round(t)!==t)throw new Error("Invalid 'count'.");for(s(this,k,t,"f");r(this,P,"f")&&r(this,P,"f").length>t;)r(this,P,"f").shift()}getMaxImageCount(){return r(this,k,"f")}getImageCount(){return r(this,P,"f").length}clearBuffer(){r(this,P,"f").length=0}isBufferEmpty(){return 0===r(this,P,"f").length}setBufferOverflowProtectionMode(t){s(this,B,t,"f")}getBufferOverflowProtectionMode(){return r(this,B,"f")}setColourChannelUsageType(t){s(this,U,t,"f")}getColourChannelUsageType(){return r(this,U,"f")}};P=new WeakMap,k=new WeakMap,B=new WeakMap,N=new WeakMap,j=new WeakMap,U=new WeakMap,F=new WeakSet,V=function(t){if("number"!=typeof t)throw new TypeError("Invalid 'imageId'.");return r(this,P,"f").findIndex((e=>{var i;return(null===(i=e.tag)||void 0===i?void 0:i.imageId)===t}))},"undefined"!=typeof navigator&&(G=navigator,W=G.userAgent,Y=G.platform,H=G.mediaDevices),function(){if(!l){const t={Edge:{search:"Edg",verSearch:"Edg"},OPR:null,Chrome:null,Safari:{str:G.vendor,search:"Apple",verSearch:["Version","iPhone OS","CPU OS"]},Firefox:null,Explorer:{search:"MSIE",verSearch:"MSIE"}},e={HarmonyOS:null,Android:null,iPhone:null,iPad:null,Windows:{str:Y,search:"Win"},Mac:{str:Y},Linux:{str:Y}};let i="unknownBrowser",n=0,r="unknownOS";for(let e in t){const r=t[e]||{};let s=r.str||W,o=r.search||e,a=r.verStr||W,h=r.verSearch||e;if(h instanceof Array||(h=[h]),-1!=s.indexOf(o)){i=e;for(let t of h){let e=a.indexOf(t);if(-1!=e){n=parseFloat(a.substring(e+t.length+1));break}}break}}for(let t in e){const i=e[t]||{};let n=i.str||W,s=i.search||t;if(-1!=n.indexOf(s)){r=t;break}}"Linux"==r&&-1!=W.indexOf("Windows NT")&&(r="HarmonyOS"),X={browser:i,version:n,OS:r}}l&&(X={browser:"ssr",version:0,OS:"ssr"})}();const q="undefined"!=typeof WebAssembly&&W&&!(/Safari/.test(W)&&!/Chrome/.test(W)&&/\(.+\s11_2_([2-6]).*\)/.test(W)),Z=!("undefined"==typeof Worker),K=!(!H||!H.getUserMedia),J=async()=>{let t=!1;if(K)try{(await H.getUserMedia({video:!0})).getTracks().forEach((t=>{t.stop()})),t=!0}catch(t){}return t};"Chrome"===X.browser&&X.version>66||"Safari"===X.browser&&X.version>13||"OPR"===X.browser&&X.version>43||"Edge"===X.browser&&X.version;const Q={},$=async t=>{let e="string"==typeof t?[t]:t,i=[];for(let t of e)i.push(Q[t]=Q[t]||new n);await Promise.all(i)},tt=async(t,e)=>{let i,r="string"==typeof t?[t]:t,s=[];for(let t of r){let r;s.push(r=Q[t]=Q[t]||new n(i=i||e())),r.isEmpty&&(r.task=i=i||e())}await Promise.all(s)};let et,it=0;const nt=()=>it++,rt={};let st;const ot=t=>{st=t,et&&et.postMessage({type:"setBLog",body:{value:!!t}})};let at=!1;const ht=t=>{at=t,et&&et.postMessage({type:"setBDebug",body:{value:!!t}})},lt={},ct={},ut={dip:{wasm:!0}},dt={std:{version:"1.4.21",path:d(u+"../../dynamsoft-capture-vision-std@1.4.21/dist/"),isInternal:!0},core:{version:"3.4.31",path:u,isInternal:!0}},ft=async t=>{let e;t instanceof Array||(t=t?[t]:[]);let i=Q.core;e=!i||i.isEmpty;let r=new Map;const s=t=>{if("std"==(t=t.toLowerCase())||"core"==t)return;if(!ut[t])throw Error("The '"+t+"' module cannot be found.");let e=ut[t].deps;if(null==e?void 0:e.length)for(let t of e)s(t);let i=Q[t];r.has(t)||r.set(t,!i||i.isEmpty)};for(let e of t)s(e);let o=[];e&&o.push("core"),o.push(...r.keys());const a=[...r.entries()].filter((t=>!t[1])).map((t=>t[0]));await tt(o,(async()=>{const t=[...r.entries()].filter((t=>t[1])).map((t=>t[0]));await $(a);const i=A(dt),s={};for(let e of t)s[e]=ut[e];const o={engineResourcePaths:i,autoResources:s,names:t};let h=new n;if(e){o.needLoadCore=!0;let t=i.core+gt._workerName;t.startsWith(location.origin)||(t=await fetch(t).then((t=>t.blob())).then((t=>URL.createObjectURL(t)))),et=new Worker(t),et.onerror=t=>{let e=new Error(t.message);h.reject(e)},et.addEventListener("message",(t=>{let e=t.data?t.data:t,i=e.type,n=e.id,r=e.body;switch(i){case"log":st&&st(e.message);break;case"task":try{rt[n](r),delete rt[n]}catch(t){throw delete rt[n],t}break;case"event":try{rt[n](r)}catch(t){throw t}break;default:console.log(t)}})),o.bLog=!!st,o.bd=at,o.dm=location.origin.startsWith("http")?location.origin:"https://localhost"}else await $("core");let l=it++;rt[l]=t=>{if(t.success)Object.assign(lt,t.versions),"{}"!==JSON.stringify(t.versions)&&(gt._versions=t.versions),h.resolve(void 0);else{const e=Error(t.message);t.stack&&(e.stack=t.stack),h.reject(e)}},et.postMessage({type:"loadWasm",body:o,id:l}),await h}))};class gt{static get engineResourcePaths(){return dt}static set engineResourcePaths(t){Object.assign(dt,t)}static get bSupportDce4Module(){return this._bSupportDce4Module}static get bSupportIRTModule(){return this._bSupportIRTModule}static get versions(){return this._versions}static get _onLog(){return st}static set _onLog(t){ot(t)}static get _bDebug(){return at}static set _bDebug(t){ht(t)}static isModuleLoaded(t){return t=(t=t||"core").toLowerCase(),!!Q[t]&&Q[t].isFulfilled}static async loadWasm(t){return await ft(t)}static async detectEnvironment(){return await(async()=>({wasm:q,worker:Z,getUserMedia:K,camera:await J(),browser:X.browser,version:X.version,OS:X.OS}))()}static async getModuleVersion(){return await new Promise(((t,e)=>{let i=nt();rt[i]=async i=>{if(i.success)return t(i.versions);{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},et.postMessage({type:"getModuleVersion",id:i})}))}static getVersion(){return`3.4.31(Worker: ${lt.core&<.core.worker||"Not Loaded"}, Wasm: ${lt.core&<.core.wasm||"Not Loaded"})`}static enableLogging(){z._onLog=console.log,gt._onLog=console.log}static disableLogging(){z._onLog=null,gt._onLog=null}static async cfd(t){return await new Promise(((e,i)=>{let n=nt();rt[n]=async t=>{if(t.success)return e();{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},et.postMessage({type:"cfd",id:n,body:{count:t}})}))}}var mt,pt,_t,vt,yt,wt,Ct,Et,St;gt._bSupportDce4Module=-1,gt._bSupportIRTModule=-1,gt._versions=null,gt._workerName="core.worker.js",gt.browserInfo=X,function(t){t[t.CRIT_ORIGINAL_IMAGE=1]="CRIT_ORIGINAL_IMAGE",t[t.CRIT_BARCODE=2]="CRIT_BARCODE",t[t.CRIT_TEXT_LINE=4]="CRIT_TEXT_LINE",t[t.CRIT_DETECTED_QUAD=8]="CRIT_DETECTED_QUAD",t[t.CRIT_NORMALIZED_IMAGE=16]="CRIT_NORMALIZED_IMAGE",t[t.CRIT_PARSED_RESULT=32]="CRIT_PARSED_RESULT"}(mt||(mt={})),function(t){t[t.CT_NORMAL_INTERSECTED=0]="CT_NORMAL_INTERSECTED",t[t.CT_T_INTERSECTED=1]="CT_T_INTERSECTED",t[t.CT_CROSS_INTERSECTED=2]="CT_CROSS_INTERSECTED",t[t.CT_NOT_INTERSECTED=3]="CT_NOT_INTERSECTED"}(pt||(pt={})),function(t){t[t.EC_OK=0]="EC_OK",t[t.EC_UNKNOWN=-1e4]="EC_UNKNOWN",t[t.EC_NO_MEMORY=-10001]="EC_NO_MEMORY",t[t.EC_NULL_POINTER=-10002]="EC_NULL_POINTER",t[t.EC_LICENSE_INVALID=-10003]="EC_LICENSE_INVALID",t[t.EC_LICENSE_EXPIRED=-10004]="EC_LICENSE_EXPIRED",t[t.EC_FILE_NOT_FOUND=-10005]="EC_FILE_NOT_FOUND",t[t.EC_FILE_TYPE_NOT_SUPPORTED=-10006]="EC_FILE_TYPE_NOT_SUPPORTED",t[t.EC_BPP_NOT_SUPPORTED=-10007]="EC_BPP_NOT_SUPPORTED",t[t.EC_INDEX_INVALID=-10008]="EC_INDEX_INVALID",t[t.EC_CUSTOM_REGION_INVALID=-10010]="EC_CUSTOM_REGION_INVALID",t[t.EC_IMAGE_READ_FAILED=-10012]="EC_IMAGE_READ_FAILED",t[t.EC_TIFF_READ_FAILED=-10013]="EC_TIFF_READ_FAILED",t[t.EC_DIB_BUFFER_INVALID=-10018]="EC_DIB_BUFFER_INVALID",t[t.EC_PDF_READ_FAILED=-10021]="EC_PDF_READ_FAILED",t[t.EC_PDF_DLL_MISSING=-10022]="EC_PDF_DLL_MISSING",t[t.EC_PAGE_NUMBER_INVALID=-10023]="EC_PAGE_NUMBER_INVALID",t[t.EC_CUSTOM_SIZE_INVALID=-10024]="EC_CUSTOM_SIZE_INVALID",t[t.EC_TIMEOUT=-10026]="EC_TIMEOUT",t[t.EC_JSON_PARSE_FAILED=-10030]="EC_JSON_PARSE_FAILED",t[t.EC_JSON_TYPE_INVALID=-10031]="EC_JSON_TYPE_INVALID",t[t.EC_JSON_KEY_INVALID=-10032]="EC_JSON_KEY_INVALID",t[t.EC_JSON_VALUE_INVALID=-10033]="EC_JSON_VALUE_INVALID",t[t.EC_JSON_NAME_KEY_MISSING=-10034]="EC_JSON_NAME_KEY_MISSING",t[t.EC_JSON_NAME_VALUE_DUPLICATED=-10035]="EC_JSON_NAME_VALUE_DUPLICATED",t[t.EC_TEMPLATE_NAME_INVALID=-10036]="EC_TEMPLATE_NAME_INVALID",t[t.EC_JSON_NAME_REFERENCE_INVALID=-10037]="EC_JSON_NAME_REFERENCE_INVALID",t[t.EC_PARAMETER_VALUE_INVALID=-10038]="EC_PARAMETER_VALUE_INVALID",t[t.EC_DOMAIN_NOT_MATCH=-10039]="EC_DOMAIN_NOT_MATCH",t[t.EC_RESERVED_INFO_NOT_MATCH=-10040]="EC_RESERVED_INFO_NOT_MATCH",t[t.EC_LICENSE_KEY_NOT_MATCH=-10043]="EC_LICENSE_KEY_NOT_MATCH",t[t.EC_REQUEST_FAILED=-10044]="EC_REQUEST_FAILED",t[t.EC_LICENSE_INIT_FAILED=-10045]="EC_LICENSE_INIT_FAILED",t[t.EC_SET_MODE_ARGUMENT_ERROR=-10051]="EC_SET_MODE_ARGUMENT_ERROR",t[t.EC_LICENSE_CONTENT_INVALID=-10052]="EC_LICENSE_CONTENT_INVALID",t[t.EC_LICENSE_KEY_INVALID=-10053]="EC_LICENSE_KEY_INVALID",t[t.EC_LICENSE_DEVICE_RUNS_OUT=-10054]="EC_LICENSE_DEVICE_RUNS_OUT",t[t.EC_GET_MODE_ARGUMENT_ERROR=-10055]="EC_GET_MODE_ARGUMENT_ERROR",t[t.EC_IRT_LICENSE_INVALID=-10056]="EC_IRT_LICENSE_INVALID",t[t.EC_FILE_SAVE_FAILED=-10058]="EC_FILE_SAVE_FAILED",t[t.EC_STAGE_TYPE_INVALID=-10059]="EC_STAGE_TYPE_INVALID",t[t.EC_IMAGE_ORIENTATION_INVALID=-10060]="EC_IMAGE_ORIENTATION_INVALID",t[t.EC_CONVERT_COMPLEX_TEMPLATE_ERROR=-10061]="EC_CONVERT_COMPLEX_TEMPLATE_ERROR",t[t.EC_CALL_REJECTED_WHEN_CAPTURING=-10062]="EC_CALL_REJECTED_WHEN_CAPTURING",t[t.EC_NO_IMAGE_SOURCE=-10063]="EC_NO_IMAGE_SOURCE",t[t.EC_READ_DIRECTORY_FAILED=-10064]="EC_READ_DIRECTORY_FAILED",t[t.EC_MODULE_NOT_FOUND=-10065]="EC_MODULE_NOT_FOUND",t[t.EC_MULTI_PAGES_NOT_SUPPORTED=-10066]="EC_MULTI_PAGES_NOT_SUPPORTED",t[t.EC_FILE_ALREADY_EXISTS=-10067]="EC_FILE_ALREADY_EXISTS",t[t.EC_CREATE_FILE_FAILED=-10068]="EC_CREATE_FILE_FAILED",t[t.EC_IMGAE_DATA_INVALID=-10069]="EC_IMGAE_DATA_INVALID",t[t.EC_IMAGE_SIZE_NOT_MATCH=-10070]="EC_IMAGE_SIZE_NOT_MATCH",t[t.EC_IMAGE_PIXEL_FORMAT_NOT_MATCH=-10071]="EC_IMAGE_PIXEL_FORMAT_NOT_MATCH",t[t.EC_SECTION_LEVEL_RESULT_IRREPLACEABLE=-10072]="EC_SECTION_LEVEL_RESULT_IRREPLACEABLE",t[t.EC_AXIS_DEFINITION_INCORRECT=-10073]="EC_AXIS_DEFINITION_INCORRECT",t[t.EC_RESULT_TYPE_MISMATCH_IRREPLACEABLE=-10074]="EC_RESULT_TYPE_MISMATCH_IRREPLACEABLE",t[t.EC_PDF_LIBRARY_LOAD_FAILED=-10075]="EC_PDF_LIBRARY_LOAD_FAILED",t[t.EC_NO_LICENSE=-2e4]="EC_NO_LICENSE",t[t.EC_HANDSHAKE_CODE_INVALID=-20001]="EC_HANDSHAKE_CODE_INVALID",t[t.EC_LICENSE_BUFFER_FAILED=-20002]="EC_LICENSE_BUFFER_FAILED",t[t.EC_LICENSE_SYNC_FAILED=-20003]="EC_LICENSE_SYNC_FAILED",t[t.EC_DEVICE_NOT_MATCH=-20004]="EC_DEVICE_NOT_MATCH",t[t.EC_BIND_DEVICE_FAILED=-20005]="EC_BIND_DEVICE_FAILED",t[t.EC_INSTANCE_COUNT_OVER_LIMIT=-20008]="EC_INSTANCE_COUNT_OVER_LIMIT",t[t.EC_LICENSE_INIT_SEQUENCE_FAILED=-20009]="EC_LICENSE_INIT_SEQUENCE_FAILED",t[t.EC_TRIAL_LICENSE=-20010]="EC_TRIAL_LICENSE",t[t.EC_FAILED_TO_REACH_DLS=-20200]="EC_FAILED_TO_REACH_DLS",t[t.EC_LICENSE_CACHE_USED=-20012]="EC_LICENSE_CACHE_USED",t[t.EC_BARCODE_FORMAT_INVALID=-30009]="EC_BARCODE_FORMAT_INVALID",t[t.EC_QR_LICENSE_INVALID=-30016]="EC_QR_LICENSE_INVALID",t[t.EC_1D_LICENSE_INVALID=-30017]="EC_1D_LICENSE_INVALID",t[t.EC_PDF417_LICENSE_INVALID=-30019]="EC_PDF417_LICENSE_INVALID",t[t.EC_DATAMATRIX_LICENSE_INVALID=-30020]="EC_DATAMATRIX_LICENSE_INVALID",t[t.EC_CUSTOM_MODULESIZE_INVALID=-30025]="EC_CUSTOM_MODULESIZE_INVALID",t[t.EC_AZTEC_LICENSE_INVALID=-30041]="EC_AZTEC_LICENSE_INVALID",t[t.EC_PATCHCODE_LICENSE_INVALID=-30046]="EC_PATCHCODE_LICENSE_INVALID",t[t.EC_POSTALCODE_LICENSE_INVALID=-30047]="EC_POSTALCODE_LICENSE_INVALID",t[t.EC_DPM_LICENSE_INVALID=-30048]="EC_DPM_LICENSE_INVALID",t[t.EC_FRAME_DECODING_THREAD_EXISTS=-30049]="EC_FRAME_DECODING_THREAD_EXISTS",t[t.EC_STOP_DECODING_THREAD_FAILED=-30050]="EC_STOP_DECODING_THREAD_FAILED",t[t.EC_MAXICODE_LICENSE_INVALID=-30057]="EC_MAXICODE_LICENSE_INVALID",t[t.EC_GS1_DATABAR_LICENSE_INVALID=-30058]="EC_GS1_DATABAR_LICENSE_INVALID",t[t.EC_GS1_COMPOSITE_LICENSE_INVALID=-30059]="EC_GS1_COMPOSITE_LICENSE_INVALID",t[t.EC_DOTCODE_LICENSE_INVALID=-30061]="EC_DOTCODE_LICENSE_INVALID",t[t.EC_PHARMACODE_LICENSE_INVALID=-30062]="EC_PHARMACODE_LICENSE_INVALID",t[t.EC_CHARACTER_MODEL_FILE_NOT_FOUND=-40100]="EC_CHARACTER_MODEL_FILE_NOT_FOUND",t[t.EC_TEXT_LINE_GROUP_LAYOUT_CONFLICT=-40101]="EC_TEXT_LINE_GROUP_LAYOUT_CONFLICT",t[t.EC_TEXT_LINE_GROUP_REGEX_CONFLICT=-40102]="EC_TEXT_LINE_GROUP_REGEX_CONFLICT",t[t.EC_QUADRILATERAL_INVALID=-50057]="EC_QUADRILATERAL_INVALID",t[t.EC_PANORAMA_LICENSE_INVALID=-70060]="EC_PANORAMA_LICENSE_INVALID",t[t.EC_RESOURCE_PATH_NOT_EXIST=-90001]="EC_RESOURCE_PATH_NOT_EXIST",t[t.EC_RESOURCE_LOAD_FAILED=-90002]="EC_RESOURCE_LOAD_FAILED",t[t.EC_CODE_SPECIFICATION_NOT_FOUND=-90003]="EC_CODE_SPECIFICATION_NOT_FOUND",t[t.EC_FULL_CODE_EMPTY=-90004]="EC_FULL_CODE_EMPTY",t[t.EC_FULL_CODE_PREPROCESS_FAILED=-90005]="EC_FULL_CODE_PREPROCESS_FAILED",t[t.EC_ZA_DL_LICENSE_INVALID=-90006]="EC_ZA_DL_LICENSE_INVALID",t[t.EC_AAMVA_DL_ID_LICENSE_INVALID=-90007]="EC_AAMVA_DL_ID_LICENSE_INVALID",t[t.EC_AADHAAR_LICENSE_INVALID=-90008]="EC_AADHAAR_LICENSE_INVALID",t[t.EC_MRTD_LICENSE_INVALID=-90009]="EC_MRTD_LICENSE_INVALID",t[t.EC_VIN_LICENSE_INVALID=-90010]="EC_VIN_LICENSE_INVALID",t[t.EC_CUSTOMIZED_CODE_TYPE_LICENSE_INVALID=-90011]="EC_CUSTOMIZED_CODE_TYPE_LICENSE_INVALID",t[t.EC_LICENSE_WARNING=-10076]="EC_LICENSE_WARNING",t[t.EC_BARCODE_READER_LICENSE_NOT_FOUND=-30063]="EC_BARCODE_READER_LICENSE_NOT_FOUND",t[t.EC_LABEL_RECOGNIZER_LICENSE_NOT_FOUND=-40103]="EC_LABEL_RECOGNIZER_LICENSE_NOT_FOUND",t[t.EC_DOCUMENT_NORMALIZER_LICENSE_NOT_FOUND=-50058]="EC_DOCUMENT_NORMALIZER_LICENSE_NOT_FOUND",t[t.EC_CODE_PARSER_LICENSE_NOT_FOUND=-90012]="EC_CODE_PARSER_LICENSE_NOT_FOUND"}(_t||(_t={})),function(t){t[t.GEM_SKIP=0]="GEM_SKIP",t[t.GEM_AUTO=1]="GEM_AUTO",t[t.GEM_GENERAL=2]="GEM_GENERAL",t[t.GEM_GRAY_EQUALIZE=4]="GEM_GRAY_EQUALIZE",t[t.GEM_GRAY_SMOOTH=8]="GEM_GRAY_SMOOTH",t[t.GEM_SHARPEN_SMOOTH=16]="GEM_SHARPEN_SMOOTH",t[t.GEM_REV=-2147483648]="GEM_REV"}(vt||(vt={})),function(t){t[t.GTM_SKIP=0]="GTM_SKIP",t[t.GTM_INVERTED=1]="GTM_INVERTED",t[t.GTM_ORIGINAL=2]="GTM_ORIGINAL",t[t.GTM_AUTO=4]="GTM_AUTO",t[t.GTM_REV=-2147483648]="GTM_REV"}(yt||(yt={})),function(t){t[t.ITT_FILE_IMAGE=0]="ITT_FILE_IMAGE",t[t.ITT_VIDEO_FRAME=1]="ITT_VIDEO_FRAME"}(wt||(wt={})),function(t){t[t.PDFRM_VECTOR=1]="PDFRM_VECTOR",t[t.PDFRM_RASTER=2]="PDFRM_RASTER",t[t.PDFRM_REV=-2147483648]="PDFRM_REV"}(Ct||(Ct={})),function(t){t[t.RDS_RASTERIZED_PAGES=0]="RDS_RASTERIZED_PAGES",t[t.RDS_EXTRACTED_IMAGES=1]="RDS_EXTRACTED_IMAGES"}(Et||(Et={})),function(t){t[t.CVS_NOT_VERIFIED=0]="CVS_NOT_VERIFIED",t[t.CVS_PASSED=1]="CVS_PASSED",t[t.CVS_FAILED=2]="CVS_FAILED"}(St||(St={}));const Tt={IRUT_NULL:BigInt(0),IRUT_COLOUR_IMAGE:BigInt(1),IRUT_SCALED_DOWN_COLOUR_IMAGE:BigInt(2),IRUT_GRAYSCALE_IMAGE:BigInt(4),IRUT_TRANSOFORMED_GRAYSCALE_IMAGE:BigInt(8),IRUT_ENHANCED_GRAYSCALE_IMAGE:BigInt(16),IRUT_PREDETECTED_REGIONS:BigInt(32),IRUT_BINARY_IMAGE:BigInt(64),IRUT_TEXTURE_DETECTION_RESULT:BigInt(128),IRUT_TEXTURE_REMOVED_GRAYSCALE_IMAGE:BigInt(256),IRUT_TEXTURE_REMOVED_BINARY_IMAGE:BigInt(512),IRUT_CONTOURS:BigInt(1024),IRUT_LINE_SEGMENTS:BigInt(2048),IRUT_TEXT_ZONES:BigInt(4096),IRUT_TEXT_REMOVED_BINARY_IMAGE:BigInt(8192),IRUT_CANDIDATE_BARCODE_ZONES:BigInt(16384),IRUT_LOCALIZED_BARCODES:BigInt(32768),IRUT_SCALED_UP_BARCODE_IMAGE:BigInt(65536),IRUT_DEFORMATION_RESISTED_BARCODE_IMAGE:BigInt(1<<17),IRUT_COMPLEMENTED_BARCODE_IMAGE:BigInt(1<<18),IRUT_DECODED_BARCODES:BigInt(1<<19),IRUT_LONG_LINES:BigInt(1<<20),IRUT_CORNERS:BigInt(1<<21),IRUT_CANDIDATE_QUAD_EDGES:BigInt(1<<22),IRUT_DETECTED_QUADS:BigInt(1<<23),IRUT_LOCALIZED_TEXT_LINES:BigInt(1<<24),IRUT_RECOGNIZED_TEXT_LINES:BigInt(1<<25),IRUT_NORMALIZED_IMAGES:BigInt(1<<26),IRUT_SHORT_LINES:BigInt(1<<27),IRUT_RAW_TEXT_LINES:BigInt(1<<28),IRUT_LOGIC_LINES:BigInt(1<<29),IRUT_ALL:BigInt("0xFFFFFFFFFFFFFFFF")};var bt,It;!function(t){t[t.ROET_PREDETECTED_REGION=0]="ROET_PREDETECTED_REGION",t[t.ROET_LOCALIZED_BARCODE=1]="ROET_LOCALIZED_BARCODE",t[t.ROET_DECODED_BARCODE=2]="ROET_DECODED_BARCODE",t[t.ROET_LOCALIZED_TEXT_LINE=3]="ROET_LOCALIZED_TEXT_LINE",t[t.ROET_RECOGNIZED_TEXT_LINE=4]="ROET_RECOGNIZED_TEXT_LINE",t[t.ROET_DETECTED_QUAD=5]="ROET_DETECTED_QUAD",t[t.ROET_NORMALIZED_IMAGE=6]="ROET_NORMALIZED_IMAGE",t[t.ROET_SOURCE_IMAGE=7]="ROET_SOURCE_IMAGE",t[t.ROET_TARGET_ROI=8]="ROET_TARGET_ROI"}(bt||(bt={})),function(t){t[t.ST_NULL=0]="ST_NULL",t[t.ST_REGION_PREDETECTION=1]="ST_REGION_PREDETECTION",t[t.ST_BARCODE_LOCALIZATION=2]="ST_BARCODE_LOCALIZATION",t[t.ST_BARCODE_DECODING=3]="ST_BARCODE_DECODING",t[t.ST_TEXT_LINE_LOCALIZATION=4]="ST_TEXT_LINE_LOCALIZATION",t[t.ST_TEXT_LINE_RECOGNITION=5]="ST_TEXT_LINE_RECOGNITION",t[t.ST_DOCUMENT_DETECTION=6]="ST_DOCUMENT_DETECTION",t[t.ST_DOCUMENT_NORMALIZATION=7]="ST_DOCUMENT_NORMALIZATION"}(It||(It={}));var xt=Object.freeze({__proto__:null,CoreModule:gt,get EnumBufferOverflowProtectionMode(){return o},get EnumCapturedResultItemType(){return mt},get EnumColourChannelUsageType(){return a},get EnumCornerType(){return pt},get EnumCrossVerificationStatus(){return St},get EnumErrorCode(){return _t},get EnumGrayscaleEnhancementMode(){return vt},get EnumGrayscaleTransformationMode(){return yt},get EnumImagePixelFormat(){return h},get EnumImageTagType(){return wt},EnumIntermediateResultUnitType:Tt,get EnumPDFReadingMode(){return Ct},get EnumRasterDataSource(){return Et},get EnumRegionObjectElementType(){return bt},get EnumSectionType(){return It},ImageSourceAdapter:z,_getNorImageData:M,_saveToFile:R,_toBlob:L,_toCanvas:D,_toImage:(t,e)=>{y(e)&&(e=M(e));const i=D(e);let n=new Image,r=i.toDataURL(t);return n.src=r,n},get bDebug(){return at},checkIsLink:t=>/^(https:\/\/www\.|http:\/\/www\.|https:\/\/|http:\/\/)|^[a-zA-Z0-9]{2,}(\.[a-zA-Z0-9]{2,})(\.[a-zA-Z0-9]{2,})?/.test(t),compareVersion:O,doOrWaitAsyncDependency:tt,getNextTaskID:nt,handleEngineResourcePaths:A,innerVersions:lt,isArc:t=>!(!_(t)||!p(t.x)||!p(t.y)||!p(t.radius)||t.radius<0||!p(t.startAngle)||!p(t.endAngle)),isContour:t=>!!_(t)&&!!g(t.points)&&0!=t.points.length&&!t.points.some((t=>!S(t))),isDSImageData:y,isDSRect:w,isImageTag:C,isLineSegment:E,isObject:_,isOriginalDsImageData:t=>!(!v(t)||!p(t.bytes.length)&&!p(t.bytes.ptr)),isPoint:S,isPolygon:T,isQuad:b,isRect:I,loadWasm:ft,mapAsyncDependency:Q,mapPackageRegister:ct,mapTaskCallBack:rt,get onLog(){return st},requestResource:x,setBDebug:ht,setOnLog:ot,waitAsyncDependency:$,get worker(){return et},workerAutoResources:ut});let Ot="./";if(document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}Ot=t.substring(0,t.lastIndexOf("/")+1)}function At(t,e,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(t):n?n.value:e.get(t)}function Rt(t,e,i,n,r){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?r.call(t,i):r?r.value=i:e.set(t,i),i}gt.engineResourcePaths={rootDirectory:(t=>{null==t&&(t="./");let e=document.createElement("a");return e.href=t,(t=e.href).endsWith("/")||(t+="/"),t})(Ot+"../../")},"function"==typeof SuppressedError&&SuppressedError;const Dt="undefined"==typeof self,Lt="function"==typeof importScripts,Mt=(()=>{if(!Lt){if(!Dt&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),Ft=t=>{if(null==t&&(t="./"),Dt||Lt);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t};var Pt,kt,Bt;t.EnumScanMode=void 0,(Pt=t.EnumScanMode||(t.EnumScanMode={}))[Pt.SM_SINGLE=0]="SM_SINGLE",Pt[Pt.SM_MULTI_UNIQUE=1]="SM_MULTI_UNIQUE",t.EnumOptimizationMode=void 0,(kt=t.EnumOptimizationMode||(t.EnumOptimizationMode={}))[kt.OM_NONE=0]="OM_NONE",kt[kt.OM_SPEED=1]="OM_SPEED",kt[kt.OM_COVERAGE=2]="OM_COVERAGE",kt[kt.OM_BALANCE=3]="OM_BALANCE",kt[kt.OM_DPM=4]="OM_DPM",kt[kt.OM_DENSE=5]="OM_DENSE",t.EnumResultStatus=void 0,(Bt=t.EnumResultStatus||(t.EnumResultStatus={}))[Bt.RS_SUCCESS=0]="RS_SUCCESS",Bt[Bt.RS_CANCELLED=1]="RS_CANCELLED",Bt[Bt.RS_FAILED=2]="RS_FAILED";var Nt={license:"",scanMode:t.EnumScanMode.SM_SINGLE,templateFilePath:void 0,utilizedTemplateNames:{single:"ReadSingleBarcode",multi_unique:"ReadBarcodes_SpeedFirst",image:"ReadBarcodes_ReadRateFirst"},engineResourcePaths:{rootDirectory:Mt},barcodeFormats:void 0,duplicateForgetTime:3e3,container:void 0,onUniqueBarcodeScanned:void 0,showResultView:!1,showUploadImageButton:!1,removePoweredByMessage:!1,uiPath:Mt,scannerViewConfig:{container:void 0,showCloseButton:!1},resultViewConfig:{container:void 0,toolbarButtonsConfig:{clear:{label:"Clear",className:"btn-clear",isHidden:!1},done:{label:"Done",className:"btn-done",isHidden:!1}}}};const jt=t=>t&&"object"==typeof t&&"function"==typeof t.then,Ut=(async()=>{})().constructor;let Vt=class extends Ut{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(t){let e;this._task=t,jt(t)?e=t:"function"==typeof t&&(e=new Ut(t)),e&&(async()=>{try{const i=await e;t===this._task&&this.resolve(i)}catch(e){t===this._task&&this.reject(e)}})()}get isEmpty(){return null==this._task}constructor(t){let e,i;super(((t,n)=>{e=t,i=n})),this._s="pending",this.resolve=t=>{this.isPending&&(jt(t)?this.task=t:(this._s="fulfilled",e(t)))},this.reject=t=>{this.isPending&&(this._s="rejected",i(t))},this.task=t}};function Gt(t,e,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(t):n?n.value:e.get(t)}function Wt(t,e,i,n,r){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?r.call(t,i):r?r.value=i:e.set(t,i),i}"function"==typeof SuppressedError&&SuppressedError;const Yt=t=>t&&"object"==typeof t&&"function"==typeof t.then,Ht=(async()=>{})().constructor;class Xt extends Ht{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(t){let e;this._task=t,Yt(t)?e=t:"function"==typeof t&&(e=new Ht(t)),e&&(async()=>{try{const i=await e;t===this._task&&this.resolve(i)}catch(e){t===this._task&&this.reject(e)}})()}get isEmpty(){return null==this._task}constructor(t){let e,i;super(((t,n)=>{e=t,i=n})),this._s="pending",this.resolve=t=>{this.isPending&&(Yt(t)?this.task=t:(this._s="fulfilled",e(t)))},this.reject=t=>{this.isPending&&(this._s="rejected",i(t))},this.task=t}}class zt{constructor(t){this._cvr=t}async getMaxBufferedItems(){return await new Promise(((t,e)=>{let i=nt();rt[i]=async i=>{if(i.success)return t(i.count);{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},et.postMessage({type:"cvr_getMaxBufferedItems",id:i,instanceID:this._cvr._instanceID})}))}async setMaxBufferedItems(t){return await new Promise(((e,i)=>{let n=nt();rt[n]=async t=>{if(t.success)return e();{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},et.postMessage({type:"cvr_setMaxBufferedItems",id:n,instanceID:this._cvr._instanceID,body:{count:t}})}))}async getBufferedCharacterItemSet(){return await new Promise(((t,e)=>{let i=nt();rt[i]=async i=>{if(i.success)return t(i.itemSet);{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},et.postMessage({type:"cvr_getBufferedCharacterItemSet",id:i,instanceID:this._cvr._instanceID})}))}}var qt={onTaskResultsReceived:!1,onTaskResultsReceivedForDce:!1,onPredetectedRegionsReceived:!1,onLocalizedBarcodesReceived:!1,onDecodedBarcodesReceived:!1,onLocalizedTextLinesReceived:!1,onRecognizedTextLinesReceived:!1,onDetectedQuadsReceived:!1,onNormalizedImagesReceived:!1,onColourImageUnitReceived:!1,onScaledDownColourImageUnitReceived:!1,onGrayscaleImageUnitReceived:!1,onTransformedGrayscaleImageUnitReceived:!1,onEnhancedGrayscaleImageUnitReceived:!1,onBinaryImageUnitReceived:!1,onTextureDetectionResultUnitReceived:!1,onTextureRemovedGrayscaleImageUnitReceived:!1,onTextureRemovedBinaryImageUnitReceived:!1,onContoursUnitReceived:!1,onLineSegmentsUnitReceived:!1,onTextZonesUnitReceived:!1,onTextRemovedBinaryImageUnitReceived:!1,onRawTextLinesReceived:!1,onLongLinesUnitReceived:!1,onCornersUnitReceived:!1,onCandidateQuadEdgesUnitReceived:!1,onCandidateBarcodeZonesUnitReceived:!1,onScaledUpBarcodeImageUnitReceived:!1,onDeformationResistedBarcodeImageUnitReceived:!1,onComplementedBarcodeImageUnitReceived:!1,onShortLinesUnitReceived:!1,onLogicLinesReceived:!1};const Zt=t=>{for(let e in t._irrRegistryState)t._irrRegistryState[e]=!1;for(let e of t._intermediateResultReceiverSet)if(e.isDce||e.isFilter)t._irrRegistryState.onTaskResultsReceivedForDce=!0;else for(let i in e)t._irrRegistryState[i]||(t._irrRegistryState[i]=!!e[i])};class Kt{constructor(t){this._irrRegistryState=qt,this._intermediateResultReceiverSet=new Set,this._cvr=t}async addResultReceiver(t){if("object"!=typeof t)throw new Error("Invalid receiver.");this._intermediateResultReceiverSet.add(t),Zt(this);let e=-1,i={};if(!t.isDce&&!t.isFilter){if(!t._observedResultUnitTypes||!t._observedTaskMap)throw new Error("Invalid Intermediate Result Receiver.");e=t._observedResultUnitTypes,t._observedTaskMap.forEach(((t,e)=>{i[e]=t})),t._observedTaskMap.clear()}return await new Promise(((t,n)=>{let r=nt();rt[r]=async e=>{if(e.success)return t();{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,n(t)}},et.postMessage({type:"cvr_setIrrRegistry",id:r,instanceID:this._cvr._instanceID,body:{receiverObj:this._irrRegistryState,observedResultUnitTypes:e.toString(),observedTaskMap:i}})}))}async removeResultReceiver(t){return this._intermediateResultReceiverSet.delete(t),Zt(this),await new Promise(((t,e)=>{let i=nt();rt[i]=async i=>{if(i.success)return t();{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},et.postMessage({type:"cvr_setIrrRegistry",id:i,instanceID:this._cvr._instanceID,body:{receiverObj:this._irrRegistryState}})}))}getOriginalImage(){return this._cvr._dsImage}}const Jt="undefined"==typeof self,Qt="function"==typeof importScripts,$t=(()=>{if(!Qt){if(!Jt&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),te=t=>{if(null==t&&(t="./"),Jt||Qt);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t};var ee;gt.engineResourcePaths.cvr={version:"2.4.33",path:$t,isInternal:!0},ut.cvr={js:!0,wasm:!0,deps:["license","dip"]},ct.cvr={};const ie="1.4.21";"string"!=typeof gt.engineResourcePaths.std&&O(gt.engineResourcePaths.std.version,ie)<0&&(gt.engineResourcePaths.std={version:ie,path:te($t+`../../dynamsoft-capture-vision-std@${ie}/dist/`),isInternal:!0});const ne="2.4.31";(!gt.engineResourcePaths.dip||"string"!=typeof gt.engineResourcePaths.dip&&O(gt.engineResourcePaths.dip.version,ne)<0)&&(gt.engineResourcePaths.dip={version:ne,path:te($t+`../../dynamsoft-image-processing@${ne}/dist/`),isInternal:!0});class re{static getVersion(){return this._version}}re._version=`2.4.33(Worker: ${null===(ee=lt.cvr)||void 0===ee?void 0:ee.worker}, Wasm: loading...`;const se={barcodeResultItems:{type:mt.CRIT_BARCODE,reveiver:"onDecodedBarcodesReceived",isNeedFilter:!0},textLineResultItems:{type:mt.CRIT_TEXT_LINE,reveiver:"onRecognizedTextLinesReceived",isNeedFilter:!0},detectedQuadResultItems:{type:mt.CRIT_DETECTED_QUAD,reveiver:"onDetectedQuadsReceived",isNeedFilter:!1},normalizedImageResultItems:{type:mt.CRIT_NORMALIZED_IMAGE,reveiver:"onNormalizedImagesReceived",isNeedFilter:!1},parsedResultItems:{type:mt.CRIT_PARSED_RESULT,reveiver:"onParsedResultsReceived",isNeedFilter:!1}};var oe,ae,he,le,ce,ue,de,fe,ge,me,pe,_e,ve;function ye(t,e){if(t&&t.location){const i=t.location.points;for(let t of i)t.x=t.x/e,t.y=t.y/e;ye(t.referencedItem,e)}}function we(t){if(t.disposed)throw new Error('"CaptureVisionRouter" instance has been disposed')}!function(t){t[t.ISS_BUFFER_EMPTY=0]="ISS_BUFFER_EMPTY",t[t.ISS_EXHAUSTED=1]="ISS_EXHAUSTED"}(oe||(oe={}));const Ce={onTaskResultsReceived:()=>{},isFilter:!0};class Ee{constructor(){this.maxImageSideLength=["iPhone","Android","HarmonyOS"].includes(gt.browserInfo.OS)?2048:4096,this._instanceID=void 0,this._dsImage=null,this._isPauseScan=!0,this._isOutputOriginalImage=!1,this._isOpenDetectVerify=!1,this._isOpenNormalizeVerify=!1,this._isOpenBarcodeVerify=!1,this._isOpenLabelVerify=!1,this._minImageCaptureInterval=0,this._averageProcessintTimeArray=[],this._averageFetchImageTimeArray=[],this._currentSettings=null,this._averageTime=999,ae.set(this,null),he.set(this,null),le.set(this,null),ce.set(this,null),ue.set(this,null),de.set(this,new Set),fe.set(this,new Set),ge.set(this,new Set),me.set(this,0),pe.set(this,!1),_e.set(this,!1),ve.set(this,!1),this._singleFrameModeCallbackBind=this._singleFrameModeCallback.bind(this)}get disposed(){return Gt(this,ve,"f")}static async createInstance(){if(!ct.license)throw Error("Module `license` is not existed.");await ct.license.dynamsoft(),await ft(["cvr"]);const t=new Ee,e=new Xt;let i=nt();return rt[i]=async i=>{var n;if(i.success)t._instanceID=i.instanceID,t._currentSettings=JSON.parse(JSON.parse(i.outputSettings).data),re._version=`2.4.33(Worker: ${null===(n=lt.cvr)||void 0===n?void 0:n.worker}, Wasm: ${i.version})`,Wt(t,_e,!0,"f"),Wt(t,ce,t.getIntermediateResultManager(),"f"),Wt(t,_e,!1,"f"),e.resolve(t);else{const t=Error(i.message);i.stack&&(t.stack=i.stack),e.reject(t)}},et.postMessage({type:"cvr_createInstance",id:i}),e}async _singleFrameModeCallback(t){for(let e of Gt(this,de,"f"))this._isOutputOriginalImage&&e.onOriginalImageResultReceived&&e.onOriginalImageResultReceived({imageData:t});const e={bytes:new Uint8Array(t.bytes),width:t.width,height:t.height,stride:t.stride,format:t.format,tag:t.tag};this._templateName||(this._templateName=this._currentSettings.CaptureVisionTemplates[0].Name);const i=await this.capture(e,this._templateName);i.originalImageTag=t.tag;const n={originalImageHashId:i.originalImageHashId,originalImageTag:i.originalImageTag,errorCode:i.errorCode,errorString:i.errorString};for(let t of Gt(this,de,"f"))if(t.isDce)t.onCapturedResultReceived(i,{isDetectVerifyOpen:!1,isNormalizeVerifyOpen:!1,isBarcodeVerifyOpen:!1,isLabelVerifyOpen:!1});else{for(let e in se){const r=e,s=se[r];t[s.reveiver]&&i[r]&&t[s.reveiver](Object.assign(Object.assign({},n),{[r]:i[r]}))}t.onCapturedResultReceived&&t.onCapturedResultReceived(i)}}setInput(t){if(we(this),t){if(Wt(this,ae,t,"f"),t.isCameraEnhancer){Gt(this,ce,"f")&&(Gt(this,ae,"f")._intermediateResultReceiver.isDce=!0,Gt(this,ce,"f").addResultReceiver(Gt(this,ae,"f")._intermediateResultReceiver));const t=Gt(this,ae,"f").getCameraView();if(t){const e=t._capturedResultReceiver;e.isDce=!0,Gt(this,de,"f").add(e)}}}else Wt(this,ae,null,"f")}getInput(){return Gt(this,ae,"f")}addImageSourceStateListener(t){if(we(this),"object"!=typeof t)return console.warn("Invalid ISA state listener.");t&&Object.keys(t)&&Gt(this,fe,"f").add(t)}removeImageSourceStateListener(t){return we(this),Gt(this,fe,"f").delete(t)}addResultReceiver(t){if(we(this),"object"!=typeof t)throw new Error("Invalid receiver.");t&&Object.keys(t).length&&(Gt(this,de,"f").add(t),this._setCrrRegistry())}removeResultReceiver(t){we(this),Gt(this,de,"f").delete(t),this._setCrrRegistry()}async _setCrrRegistry(){const t={onCapturedResultReceived:!1,onDecodedBarcodesReceived:!1,onRecognizedTextLinesReceived:!1,onDetectedQuadsReceived:!1,onNormalizedImagesReceived:!1,onParsedResultsReceived:!1};for(let e of Gt(this,de,"f"))e.isDce||(t.onCapturedResultReceived=!!e.onCapturedResultReceived,t.onDecodedBarcodesReceived=!!e.onDecodedBarcodesReceived,t.onRecognizedTextLinesReceived=!!e.onRecognizedTextLinesReceived,t.onDetectedQuadsReceived=!!e.onDetectedQuadsReceived,t.onNormalizedImagesReceived=!!e.onNormalizedImagesReceived,t.onParsedResultsReceived=!!e.onParsedResultsReceived);const e=new Xt;let i=nt();return rt[i]=async t=>{if(t.success)e.resolve();else{let i=new Error(t.message);i.stack=t.stack+"\n"+i.stack,e.reject()}},et.postMessage({type:"cvr_setCrrRegistry",id:i,instanceID:this._instanceID,body:{receiver:JSON.stringify(t)}}),e}async addResultFilter(t){if(we(this),!t||"object"!=typeof t||!Object.keys(t).length)return console.warn("Invalid filter.");Gt(this,ge,"f").add(t),t._dynamsoft(),await this._handleFilterUpdate()}async removeResultFilter(t){we(this),Gt(this,ge,"f").delete(t),await this._handleFilterUpdate()}async _handleFilterUpdate(){if(Gt(this,ce,"f").removeResultReceiver(Ce),0===Gt(this,ge,"f").size){this._isOpenBarcodeVerify=!1,this._isOpenLabelVerify=!1,this._isOpenDetectVerify=!1,this._isOpenNormalizeVerify=!1;const t={[mt.CRIT_BARCODE]:!1,[mt.CRIT_TEXT_LINE]:!1,[mt.CRIT_DETECTED_QUAD]:!1,[mt.CRIT_NORMALIZED_IMAGE]:!1},e={[mt.CRIT_BARCODE]:!1,[mt.CRIT_TEXT_LINE]:!1,[mt.CRIT_DETECTED_QUAD]:!1,[mt.CRIT_NORMALIZED_IMAGE]:!1};return await Se(this,t),void await Te(this,e)}for(let t of Gt(this,ge,"f")){if(this._isOpenBarcodeVerify=t.isResultCrossVerificationEnabled(mt.CRIT_BARCODE),this._isOpenLabelVerify=t.isResultCrossVerificationEnabled(mt.CRIT_TEXT_LINE),this._isOpenDetectVerify=t.isResultCrossVerificationEnabled(mt.CRIT_DETECTED_QUAD),this._isOpenNormalizeVerify=t.isResultCrossVerificationEnabled(mt.CRIT_NORMALIZED_IMAGE),t.isLatestOverlappingEnabled(mt.CRIT_BARCODE)){[...Gt(this,ce,"f")._intermediateResultReceiverSet.values()].find((t=>t.isFilter))||Gt(this,ce,"f").addResultReceiver(Ce)}await Se(this,t.verificationEnabled),await Te(this,t.duplicateFilterEnabled),await be(this,t.duplicateForgetTime)}}async startCapturing(t){var e,i;if(we(this),!this._isPauseScan)return;if(!Gt(this,ae,"f"))throw new Error("'ImageSourceAdapter' is not set. call 'setInput' before 'startCapturing'");t||(t=Ee._defaultTemplate);const n=await this.containsTask(t);await ft(n);for(let t of Gt(this,ge,"f"))await this.addResultFilter(t);if(n.includes("dlr")&&!(null===(e=ct.dlr)||void 0===e?void 0:e.bLoadConfusableCharsData)){const t=A(gt.engineResourcePaths);await(null===(i=ct.dlr)||void 0===i?void 0:i.loadRecognitionData("ConfusableChars",t.dlr))}if(Gt(this,ae,"f").isCameraEnhancer&&(n.includes("ddn")?Gt(this,ae,"f").setPixelFormat(h.IPF_ABGR_8888):Gt(this,ae,"f").setPixelFormat(h.IPF_GRAYSCALED)),void 0!==Gt(this,ae,"f").singleFrameMode&&"disabled"!==Gt(this,ae,"f").singleFrameMode)return this._templateName=t,void Gt(this,ae,"f").on("singleFrameAcquired",this._singleFrameModeCallbackBind);return Gt(this,ae,"f").getColourChannelUsageType()===a.CCUT_AUTO&&Gt(this,ae,"f").setColourChannelUsageType(n.includes("ddn")?a.CCUT_FULL_CHANNEL:a.CCUT_Y_CHANNEL_ONLY),Gt(this,le,"f")&&Gt(this,le,"f").isPending?Gt(this,le,"f"):(Wt(this,le,new Xt(((e,i)=>{if(this.disposed)return;let n=nt();rt[n]=async n=>{if(Gt(this,le,"f")&&!Gt(this,le,"f").isFulfilled){if(!n.success){let t=new Error(n.message);return t.stack=n.stack+"\n"+t.stack,i(t)}this._isPauseScan=!1,this._isOutputOriginalImage=n.isOutputOriginalImage,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((async()=>{-1!==this._minImageCaptureInterval&&Gt(this,ae,"f").startFetching(),this._loopReadVideo(t),e()}),0)}},et.postMessage({type:"cvr_startCapturing",id:n,instanceID:this._instanceID,body:{templateName:t}})})),"f"),await Gt(this,le,"f"))}stopCapturing(){we(this),Gt(this,ae,"f")&&(Gt(this,ae,"f").isCameraEnhancer&&void 0!==Gt(this,ae,"f").singleFrameMode&&"disabled"!==Gt(this,ae,"f").singleFrameMode?Gt(this,ae,"f").off("singleFrameAcquired",this._singleFrameModeCallbackBind):(!async function(t){let e=nt();const i=new Xt;rt[e]=async t=>{if(t.success)return i.resolve();{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i.reject(e)}},et.postMessage({type:"cvr_clearVerifyList",id:e,instanceID:t._instanceID})}(this),Gt(this,ae,"f").stopFetching(),this._averageProcessintTimeArray=[],this._averageTime=999,this._isPauseScan=!0,Wt(this,le,null,"f"),Gt(this,ae,"f").setColourChannelUsageType(a.CCUT_AUTO)))}async containsTask(t){return we(this),await new Promise(((e,i)=>{let n=nt();rt[n]=async t=>{if(t.success)return e(JSON.parse(t.tasks));{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},et.postMessage({type:"cvr_containsTask",id:n,instanceID:this._instanceID,body:{templateName:t}})}))}async _loopReadVideo(t){if(this.disposed||this._isPauseScan)return;if(Wt(this,pe,!0,"f"),Gt(this,ae,"f").isBufferEmpty())if(Gt(this,ae,"f").hasNextImageToFetch())for(let t of Gt(this,fe,"f"))t.onImageSourceStateReceived&&t.onImageSourceStateReceived(oe.ISS_BUFFER_EMPTY);else if(!Gt(this,ae,"f").hasNextImageToFetch())for(let t of Gt(this,fe,"f"))t.onImageSourceStateReceived&&t.onImageSourceStateReceived(oe.ISS_EXHAUSTED);if(-1===this._minImageCaptureInterval||Gt(this,ae,"f").isBufferEmpty())try{Gt(this,ae,"f").isBufferEmpty()&&Ee._onLog&&Ee._onLog("buffer is empty so fetch image"),Ee._onLog&&Ee._onLog(`DCE: start fetching a frame: ${Date.now()}`),this._dsImage=Gt(this,ae,"f").fetchImage(),Ee._onLog&&Ee._onLog(`DCE: finish fetching a frame: ${Date.now()}`),Gt(this,ae,"f").setImageFetchInterval(this._averageTime)}catch(e){return void this._reRunCurrnetFunc(t)}else if(Gt(this,ae,"f").setImageFetchInterval(this._averageTime-(this._dsImage&&this._dsImage.tag?this._dsImage.tag.timeSpent:0)),this._dsImage=Gt(this,ae,"f").getImage(),this._dsImage.tag&&Date.now()-this._dsImage.tag.timeStamp>200)return void this._reRunCurrnetFunc(t);if(!this._dsImage)return void this._reRunCurrnetFunc(t);for(let t of Gt(this,de,"f"))this._isOutputOriginalImage&&t.onOriginalImageResultReceived&&t.onOriginalImageResultReceived({imageData:this._dsImage});const e=Date.now();this._captureDsimage(this._dsImage,t).then((async i=>{if(Ee._onLog&&Ee._onLog("no js handle time: "+(Date.now()-e)),this._isPauseScan)return void this._reRunCurrnetFunc(t);i.originalImageTag=this._dsImage.tag?this._dsImage.tag:null;const n={originalImageHashId:i.originalImageHashId,originalImageTag:i.originalImageTag,errorCode:i.errorCode,errorString:i.errorString};for(let t of Gt(this,de,"f"))if(t.isDce){const e=Date.now();if(t.onCapturedResultReceived(i,{isDetectVerifyOpen:this._isOpenDetectVerify,isNormalizeVerifyOpen:this._isOpenNormalizeVerify,isBarcodeVerifyOpen:this._isOpenBarcodeVerify,isLabelVerifyOpen:this._isOpenLabelVerify}),Ee._onLog){const t=Date.now()-e;t>10&&Ee._onLog(`draw result time: ${t}`)}}else{for(let e in se){const r=e,s=se[r];t[s.reveiver],t[s.reveiver]&&i[r]&&t[s.reveiver](Object.assign(Object.assign({},n),{[r]:i[r].filter((t=>!s.isNeedFilter||!t.isFilter))})),i[r]&&(i[r]=i[r].filter((t=>!s.isNeedFilter||!t.isFilter)))}t.onCapturedResultReceived&&(i.items=i.items.filter((t=>[mt.CRIT_DETECTED_QUAD,mt.CRIT_NORMALIZED_IMAGE].includes(t.type)||!t.isFilter)),t.onCapturedResultReceived(i))}const r=Date.now();if(this._minImageCaptureInterval>-1&&(5===this._averageProcessintTimeArray.length&&this._averageProcessintTimeArray.shift(),5===this._averageFetchImageTimeArray.length&&this._averageFetchImageTimeArray.shift(),this._averageProcessintTimeArray.push(Date.now()-e),this._averageFetchImageTimeArray.push(this._dsImage&&this._dsImage.tag?this._dsImage.tag.timeSpent:0),this._averageTime=Math.min(...this._averageProcessintTimeArray)-Math.max(...this._averageFetchImageTimeArray),this._averageTime=this._averageTime>0?this._averageTime:0,Ee._onLog&&(Ee._onLog(`minImageCaptureInterval: ${this._minImageCaptureInterval}`),Ee._onLog(`averageProcessintTimeArray: ${this._averageProcessintTimeArray}`),Ee._onLog(`averageFetchImageTimeArray: ${this._averageFetchImageTimeArray}`),Ee._onLog(`averageTime: ${this._averageTime}`))),Ee._onLog){const t=Date.now()-r;t>10&&Ee._onLog(`fetch image calculate time: ${t}`)}Ee._onLog&&Ee._onLog(`time finish decode: ${Date.now()}`),Ee._onLog&&Ee._onLog("main time: "+(Date.now()-e)),Ee._onLog&&Ee._onLog("===================================================="),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._minImageCaptureInterval>0&&this._minImageCaptureInterval>=this._averageTime?this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo(t)}),this._minImageCaptureInterval-this._averageTime):this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo(t)}),Math.max(this._minImageCaptureInterval,0))})).catch((e=>{Gt(this,ae,"f").stopFetching(),e.errorCode&&0===e.errorCode&&(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{Gt(this,ae,"f").startFetching(),this._loopReadVideo(t)}),Math.max(this._minImageCaptureInterval,1e3))),"platform error"!==e.message&&setTimeout((()=>{throw e}),0)}))}_reRunCurrnetFunc(t){this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo(t)}),0)}async capture(t,e){var i,n;we(this),e||(e=Ee._defaultTemplate);const r=await this.containsTask(e);if(await ft(r),r.includes("dlr")&&!(null===(i=ct.dlr)||void 0===i?void 0:i.bLoadConfusableCharsData)){const t=A(gt.engineResourcePaths);await(null===(n=ct.dlr)||void 0===n?void 0:n.loadRecognitionData("ConfusableChars",t.dlr))}let s;if(Wt(this,pe,!1,"f"),y(t))s=await this._captureDsimage(t,e);else if("string"==typeof t)s="data:image/"==t.substring(0,11)?await this._captureBase64(t,e):await this._captureUrl(t,e);else if(t instanceof Blob)s=await this._captureBlob(t,e);else if(t instanceof HTMLImageElement)s=await this._captureImage(t,e);else if(t instanceof HTMLCanvasElement)s=await this._captureCanvas(t,e);else{if(!(t instanceof HTMLVideoElement))throw new TypeError("'capture(imageOrFile, templateName)': Type of 'imageOrFile' should be 'DSImageData', 'Url', 'Base64', 'Blob', 'HTMLImageElement', 'HTMLCanvasElement', 'HTMLVideoElement'.");s=await this._captureVideo(t,e)}return s}async _captureDsimage(t,e){return await this._captureInWorker(t,e)}async _captureUrl(t,e){let i=await x(t,"blob");return await this._captureBlob(i,e)}async _captureBase64(t,e){t=t.substring(t.indexOf(",")+1);let i=atob(t),n=i.length,r=new Uint8Array(n);for(;n--;)r[n]=i.charCodeAt(n);return await this._captureBlob(new Blob([r]),e)}async _captureBlob(t,e){let i=null,n=null;if("undefined"!=typeof createImageBitmap)try{i=await createImageBitmap(t)}catch(t){}i||(n=await async function(t){return await new Promise(((e,i)=>{let n=URL.createObjectURL(t),r=new Image;r.src=n,r.onload=()=>{URL.revokeObjectURL(r.dbrObjUrl),e(r)},r.onerror=t=>{i(new Error("Can't convert blob to image : "+(t instanceof Event?t.type:t)))}}))}(t));let r=await this._captureImage(i||n,e);return i&&i.close(),r}async _captureImage(t,e){let i,n,r=t instanceof HTMLImageElement?t.naturalWidth:t.width,s=t instanceof HTMLImageElement?t.naturalHeight:t.height,o=Math.max(r,s);o>this.maxImageSideLength?(Wt(this,me,this.maxImageSideLength/o,"f"),i=Math.round(r*Gt(this,me,"f")),n=Math.round(s*Gt(this,me,"f"))):(i=r,n=s),Gt(this,he,"f")||Wt(this,he,document.createElement("canvas"),"f");const a=Gt(this,he,"f");a.width===i&&a.height===n||(a.width=i,a.height=n),a.ctx2d||(a.ctx2d=a.getContext("2d",{willReadFrequently:!0}));return a.ctx2d.drawImage(t,0,0,r,s,0,0,i,n),t.dbrObjUrl&&URL.revokeObjectURL(t.dbrObjUrl),await this._captureCanvas(a,e)}async _captureCanvas(t,e){if(t.crossOrigin&&"anonymous"!=t.crossOrigin)throw"cors";if([t.width,t.height].includes(0))throw Error("The width or height of the 'canvas' is 0.");const i=t.ctx2d||t.getContext("2d",{willReadFrequently:!0}),n={bytes:Uint8Array.from(i.getImageData(0,0,t.width,t.height).data),width:t.width,height:t.height,stride:4*t.width,format:10};return await this._captureInWorker(n,e)}async _captureVideo(t,e){if(t.crossOrigin&&"anonymous"!=t.crossOrigin)throw"cors";let i,n,r=t.videoWidth,s=t.videoHeight,o=Math.max(r,s);o>this.maxImageSideLength?(Wt(this,me,this.maxImageSideLength/o,"f"),i=Math.round(r*Gt(this,me,"f")),n=Math.round(s*Gt(this,me,"f"))):(i=r,n=s),Gt(this,he,"f")||Wt(this,he,document.createElement("canvas"),"f");const a=Gt(this,he,"f");a.width===i&&a.height===n||(a.width=i,a.height=n),a.ctx2d||(a.ctx2d=a.getContext("2d",{willReadFrequently:!0}));return a.ctx2d.drawImage(t,0,0,r,s,0,0,i,n),await this._captureCanvas(a,e)}async _captureInWorker(t,e){const{bytes:i,width:n,height:r,stride:s,format:o}=t;let a=nt();const h=new Xt;return rt[a]=async e=>{var i,n;if(!e.success){let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,h.reject(t)}{const r=Date.now();Ee._onLog&&(Ee._onLog(`get result time from worker: ${r}`),Ee._onLog("worker to main time consume: "+(r-e.workerReturnMsgTime)));try{const r=e.captureResult;if(0!==r.errorCode){let t=new Error(r.errorString);return t.errorCode=r.errorCode,h.reject(t)}t.bytes=e.bytes;for(let e of r.items)0!==Gt(this,me,"f")&&ye(e,Gt(this,me,"f")),e.type===mt.CRIT_ORIGINAL_IMAGE?e.imageData=t:e.type===mt.CRIT_NORMALIZED_IMAGE?null===(i=ct.ddn)||void 0===i||i.handleNormalizedImageResultItem(e):e.type===mt.CRIT_PARSED_RESULT&&(null===(n=ct.dcp)||void 0===n||n.handleParsedResultItem(e));if(Gt(this,pe,"f"))for(let t of Gt(this,ge,"f"))t.onDecodedBarcodesReceived(r),t.onRecognizedTextLinesReceived(r),t.onDetectedQuadsReceived(r),t.onNormalizedImagesReceived(r);for(let t in se){const e=t,i=r.items.filter((t=>t.type===se[e].type));i.length&&(r[t]=i)}if(!this._isPauseScan||!Gt(this,pe,"f")){const e=r.intermediateResult;if(e){let i=0;for(let n of Gt(this,ce,"f")._intermediateResultReceiverSet){i++;for(let r of e){if("onTaskResultsReceived"===r.info.callbackName){for(let e of r.intermediateResultUnits)e.originalImageTag=t.tag?t.tag:null;n[r.info.callbackName]&&n[r.info.callbackName]({intermediateResultUnits:r.intermediateResultUnits},r.info)}else n[r.info.callbackName]&&n[r.info.callbackName](r.result,r.info);i===Gt(this,ce,"f")._intermediateResultReceiverSet.size&&delete r.info.callbackName}}}}return r&&r.hasOwnProperty("intermediateResult")&&delete r.intermediateResult,Wt(this,me,0,"f"),h.resolve(r)}catch(t){return h.reject(t)}}},Ee._onLog&&Ee._onLog(`send buffer to worker: ${Date.now()}`),et.postMessage({type:"cvr_capture",id:a,instanceID:this._instanceID,body:{bytes:i,width:n,height:r,stride:s,format:o,templateName:e||"",isScanner:Gt(this,pe,"f")}},[i.buffer]),h}async initSettings(t){return we(this),t&&["string","object"].includes(typeof t)?("string"==typeof t?t.trimStart().startsWith("{")||(t=await x(t,"text")):"object"==typeof t&&(t=JSON.stringify(t)),await new Promise(((e,i)=>{let n=nt();rt[n]=async n=>{if(n.success){const r=JSON.parse(n.response);if(0!==r.errorCode){let t=new Error(r.errorString?r.errorString:"Init Settings Failed.");return t.errorCode=r.errorCode,i(t)}const s=JSON.parse(t);this._currentSettings=s;let o=[],a=s.CaptureVisionTemplates;for(let t=0;t{let n=nt();rt[n]=async t=>{if(t.success){const n=JSON.parse(t.response);if(0!==n.errorCode){let t=new Error(n.errorString);return t.errorCode=n.errorCode,i(t)}return e(JSON.parse(n.data))}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},et.postMessage({type:"cvr_outputSettings",id:n,instanceID:this._instanceID,body:{templateName:t||"*"}})}))}async outputSettingsToFile(t,e,i){const n=await this.outputSettings(t),r=new Blob([JSON.stringify(n,null,2,(function(t,e){return e instanceof Array?JSON.stringify(e):e}),2)],{type:"application/json"});if(i){const t=document.createElement("a");t.href=URL.createObjectURL(r),e.endsWith(".json")&&(e=e.replace(".json","")),t.download=`${e}.json`,t.onclick=()=>{setTimeout((()=>{URL.revokeObjectURL(t.href)}),500)},t.click()}return r}async getTemplateNames(){return we(this),await new Promise(((t,e)=>{let i=nt();rt[i]=async i=>{if(i.success){const n=JSON.parse(i.response);if(0!==n.errorCode){let t=new Error(n.errorString);return t.errorCode=n.errorCode,e(t)}return t(JSON.parse(n.data))}{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},et.postMessage({type:"cvr_getTemplateNames",id:i,instanceID:this._instanceID})}))}async getSimplifiedSettings(t){we(this),t||(t=this._currentSettings.CaptureVisionTemplates[0].Name);const e=await this.containsTask(t);return await ft(e),await new Promise(((e,i)=>{let n=nt();rt[n]=async t=>{if(t.success){const n=JSON.parse(t.response);if(0!==n.errorCode){let t=new Error(n.errorString);return t.errorCode=n.errorCode,i(t)}const r=JSON.parse(n.data,((t,e)=>"barcodeFormatIds"===t?BigInt(e):e));return r.minImageCaptureInterval=this._minImageCaptureInterval,e(r)}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},et.postMessage({type:"cvr_getSimplifiedSettings",id:n,instanceID:this._instanceID,body:{templateName:t}})}))}async updateSettings(t,e){we(this);const i=await this.containsTask(t);return await ft(i),await new Promise(((i,n)=>{let r=nt();rt[r]=async t=>{if(t.success){const r=JSON.parse(t.response);if(e.minImageCaptureInterval&&e.minImageCaptureInterval>=-1&&(this._minImageCaptureInterval=e.minImageCaptureInterval),this._isOutputOriginalImage=t.isOutputOriginalImage,0!==r.errorCode){let t=new Error(r.errorString?r.errorString:"Update Settings Failed.");return t.errorCode=r.errorCode,n(t)}return this._currentSettings=await this.outputSettings("*"),i(r)}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,n(e)}},et.postMessage({type:"cvr_updateSettings",id:r,instanceID:this._instanceID,body:{settings:e,templateName:t}})}))}async resetSettings(){return we(this),await new Promise(((t,e)=>{let i=nt();rt[i]=async i=>{if(i.success){const n=JSON.parse(i.response);if(0!==n.errorCode){let t=new Error(n.errorString?n.errorString:"Reset Settings Failed.");return t.errorCode=n.errorCode,e(t)}return this._currentSettings=await this.outputSettings("*"),t(n)}{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},et.postMessage({type:"cvr_resetSettings",id:i,instanceID:this._instanceID})}))}getBufferedItemsManager(){return Gt(this,ue,"f")||Wt(this,ue,new zt(this),"f"),Gt(this,ue,"f")}getIntermediateResultManager(){if(we(this),!Gt(this,_e,"f")&&0!==gt.bSupportIRTModule)throw new Error("The current license does not support the use of intermediate results.");return Gt(this,ce,"f")||Wt(this,ce,new Kt(this),"f"),Gt(this,ce,"f")}async parseRequiredResources(t){return we(this),await new Promise(((e,i)=>{let n=nt();rt[n]=async t=>{if(t.success)return e(JSON.parse(t.resources));{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},et.postMessage({type:"cvr_parseRequiredResources",id:n,instanceID:this._instanceID,body:{templateName:t}})}))}async dispose(){we(this),Gt(this,le,"f")&&this.stopCapturing(),Wt(this,ae,null,"f"),Gt(this,de,"f").clear(),Gt(this,fe,"f").clear(),Gt(this,ge,"f").clear(),Gt(this,ce,"f")._intermediateResultReceiverSet.clear(),Wt(this,ve,!0,"f");let t=nt();rt[t]=t=>{if(!t.success){let e=new Error(t.message);throw e.stack=t.stack+"\n"+e.stack,e}},et.postMessage({type:"cvr_dispose",id:t,instanceID:this._instanceID})}_getInternalData(){return{isa:Gt(this,ae,"f"),promiseStartScan:Gt(this,le,"f"),intermediateResultManager:Gt(this,ce,"f"),bufferdItemsManager:Gt(this,ue,"f"),resultReceiverSet:Gt(this,de,"f"),isaStateListenerSet:Gt(this,fe,"f"),resultFilterSet:Gt(this,ge,"f"),compressRate:Gt(this,me,"f"),canvas:Gt(this,he,"f"),isScanner:Gt(this,pe,"f"),innerUseTag:Gt(this,_e,"f"),isDestroyed:Gt(this,ve,"f")}}async _getWasmFilterState(){return await new Promise(((t,e)=>{let i=nt();rt[i]=async i=>{if(i.success){const e=JSON.parse(i.response);return t(e)}{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},et.postMessage({type:"cvr_getWasmFilterState",id:i,instanceID:this._instanceID})}))}}async function Se(t,e){return we(t),await new Promise(((i,n)=>{let r=nt();rt[r]=async t=>{if(t.success)return i(t.result);{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,n(e)}},et.postMessage({type:"cvr_enableResultCrossVerification",id:r,instanceID:t._instanceID,body:{verificationEnabled:e}})}))}async function Te(t,e){return we(t),await new Promise(((i,n)=>{let r=nt();rt[r]=async t=>{if(t.success)return i(t.result);{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,n(e)}},et.postMessage({type:"cvr_enableResultDeduplication",id:r,instanceID:t._instanceID,body:{duplicateFilterEnabled:e}})}))}async function be(t,e){return we(t),await new Promise(((i,n)=>{let r=nt();rt[r]=async t=>{if(t.success)return i(t.result);{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,n(e)}},et.postMessage({type:"cvr_setDuplicateForgetTime",id:r,instanceID:t._instanceID,body:{duplicateForgetTime:e}})}))}ae=new WeakMap,he=new WeakMap,le=new WeakMap,ce=new WeakMap,ue=new WeakMap,de=new WeakMap,fe=new WeakMap,ge=new WeakMap,me=new WeakMap,pe=new WeakMap,_e=new WeakMap,ve=new WeakMap,Ee._defaultTemplate="Default";class Ie{constructor(){this.onCapturedResultReceived=null,this.onOriginalImageResultReceived=null}}var xe;!function(t){t.PT_DEFAULT="Default",t.PT_READ_BARCODES="ReadBarcodes_Default",t.PT_RECOGNIZE_TEXT_LINES="RecognizeTextLines_Default",t.PT_DETECT_DOCUMENT_BOUNDARIES="DetectDocumentBoundaries_Default",t.PT_DETECT_AND_NORMALIZE_DOCUMENT="DetectAndNormalizeDocument_Default",t.PT_NORMALIZE_DOCUMENT="NormalizeDocument_Default",t.PT_READ_BARCODES_SPEED_FIRST="ReadBarcodes_SpeedFirst",t.PT_READ_BARCODES_READ_RATE_FIRST="ReadBarcodes_ReadRateFirst",t.PT_READ_BARCODES_BALANCE="ReadBarcodes_Balance",t.PT_READ_SINGLE_BARCODE="ReadBarcodes_Balanced",t.PT_READ_DENSE_BARCODES="ReadDenseBarcodes",t.PT_READ_DISTANT_BARCODES="ReadDistantBarcodes",t.PT_RECOGNIZE_NUMBERS="RecognizeNumbers",t.PT_RECOGNIZE_LETTERS="RecognizeLetters",t.PT_RECOGNIZE_NUMBERS_AND_LETTERS="RecognizeNumbersAndLetters",t.PT_RECOGNIZE_NUMBERS_AND_UPPERCASE_LETTERS="RecognizeNumbersAndUppercaseLetters",t.PT_RECOGNIZE_UPPERCASE_LETTERS="RecognizeUppercaseLetters"}(xe||(xe={}));var Oe=Object.freeze({__proto__:null,CaptureVisionRouter:Ee,CaptureVisionRouterModule:re,CapturedResultReceiver:Ie,get EnumImageSourceState(){return oe},get EnumPresetTemplate(){return xe},IntermediateResultReceiver:class{constructor(){this._observedResultUnitTypes=Tt.IRUT_ALL,this._observedTaskMap=new Map,this._parameters={setObservedResultUnitTypes:t=>{this._observedResultUnitTypes=t},getObservedResultUnitTypes:()=>this._observedResultUnitTypes,isResultUnitTypeObserved:t=>!!(t&this._observedResultUnitTypes),addObservedTask:t=>{this._observedTaskMap.set(t,!0)},removeObservedTask:t=>{this._observedTaskMap.set(t,!1)},isTaskObserved:t=>0===this._observedTaskMap.size||!!this._observedTaskMap.get(t)},this.onTaskResultsReceived=null,this.onPredetectedRegionsReceived=null,this.onColourImageUnitReceived=null,this.onScaledDownColourImageUnitReceived=null,this.onGrayscaleImageUnitReceived=null,this.onTransformedGrayscaleImageUnitReceived=null,this.onEnhancedGrayscaleImageUnitReceived=null,this.onBinaryImageUnitReceived=null,this.onTextureDetectionResultUnitReceived=null,this.onTextureRemovedGrayscaleImageUnitReceived=null,this.onTextureRemovedBinaryImageUnitReceived=null,this.onContoursUnitReceived=null,this.onLineSegmentsUnitReceived=null,this.onTextZonesUnitReceived=null,this.onTextRemovedBinaryImageUnitReceived=null,this.onShortLinesUnitReceived=null}getObservationParameters(){return this._parameters}}});const Ae="undefined"==typeof self,Re="function"==typeof importScripts,De=(()=>{if(!Re){if(!Ae&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})();gt.engineResourcePaths.dce={version:"4.1.1",path:De,isInternal:!0},ut.dce={wasm:!1,js:!1},ct.dce={};let Le,Me,Fe,Pe,ke;function Be(t,e,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(t):n?n.value:e.get(t)}function Ne(t,e,i,n,r){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?r.call(t,i):r?r.value=i:e.set(t,i),i}"function"==typeof SuppressedError&&SuppressedError,"undefined"!=typeof navigator&&(Le=navigator,Me=Le.userAgent,Fe=Le.platform,Pe=Le.mediaDevices),function(){if(!Ae){const t={Edge:{search:"Edg",verSearch:"Edg"},OPR:null,Chrome:null,Safari:{str:Le.vendor,search:"Apple",verSearch:["Version","iPhone OS","CPU OS"]},Firefox:null,Explorer:{search:"MSIE",verSearch:"MSIE"}},e={HarmonyOS:null,Android:null,iPhone:null,iPad:null,Windows:{str:Fe,search:"Win"},Mac:{str:Fe},Linux:{str:Fe}};let i="unknownBrowser",n=0,r="unknownOS";for(let e in t){const r=t[e]||{};let s=r.str||Me,o=r.search||e,a=r.verStr||Me,h=r.verSearch||e;if(h instanceof Array||(h=[h]),-1!=s.indexOf(o)){i=e;for(let t of h){let e=a.indexOf(t);if(-1!=e){n=parseFloat(a.substring(e+t.length+1));break}}break}}for(let t in e){const i=e[t]||{};let n=i.str||Me,s=i.search||t;if(-1!=n.indexOf(s)){r=t;break}}"Linux"==r&&-1!=Me.indexOf("Windows NT")&&(r="HarmonyOS"),ke={browser:i,version:n,OS:r}}Ae&&(ke={browser:"ssr",version:0,OS:"ssr"})}();const je="undefined"!=typeof WebAssembly&&Me&&!(/Safari/.test(Me)&&!/Chrome/.test(Me)&&/\(.+\s11_2_([2-6]).*\)/.test(Me)),Ue=!("undefined"==typeof Worker),Ve=!(!Pe||!Pe.getUserMedia),Ge=async()=>{let t=!1;if(Ve)try{(await Pe.getUserMedia({video:!0})).getTracks().forEach((t=>{t.stop()})),t=!0}catch(t){}return t};"Chrome"===ke.browser&&ke.version>66||"Safari"===ke.browser&&ke.version>13||"OPR"===ke.browser&&ke.version>43||"Edge"===ke.browser&&ke.version;var We={653:(t,e,i)=>{var n,r,s,o,a,h,l,c,u,d,f,g,m,p,_,v,y,w,C,E,S,T=T||{version:"5.2.1"};if(e.fabric=T,"undefined"!=typeof document&&"undefined"!=typeof window)document instanceof("undefined"!=typeof HTMLDocument?HTMLDocument:Document)?T.document=document:T.document=document.implementation.createHTMLDocument(""),T.window=window;else{var b=new(i(192).JSDOM)(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"),{features:{FetchExternalResources:["img"]},resources:"usable"}).window;T.document=b.document,T.jsdomImplForWrapper=i(898).implForWrapper,T.nodeCanvas=i(245).Canvas,T.window=b,DOMParser=T.window.DOMParser}function I(t,e){var i=t.canvas,n=e.targetCanvas,r=n.getContext("2d");r.translate(0,n.height),r.scale(1,-1);var s=i.height-n.height;r.drawImage(i,0,s,n.width,n.height,0,0,n.width,n.height)}function x(t,e){var i=e.targetCanvas.getContext("2d"),n=e.destinationWidth,r=e.destinationHeight,s=n*r*4,o=new Uint8Array(this.imageBuffer,0,s),a=new Uint8ClampedArray(this.imageBuffer,0,s);t.readPixels(0,0,n,r,t.RGBA,t.UNSIGNED_BYTE,o);var h=new ImageData(a,n,r);i.putImageData(h,0,0)}T.isTouchSupported="ontouchstart"in T.window||"ontouchstart"in T.document||T.window&&T.window.navigator&&T.window.navigator.maxTouchPoints>0,T.isLikelyNode="undefined"!=typeof Buffer&&"undefined"==typeof window,T.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-dashoffset","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id","paint-order","vector-effect","instantiated_by_use","clip-path"],T.DPI=96,T.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)",T.commaWsp="(?:\\s+,?\\s*|,\\s*)",T.rePathCommand=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/gi,T.reNonWord=/[ \n\.,;!\?\-]/,T.fontPaths={},T.iMatrix=[1,0,0,1,0,0],T.svgNS="http://www.w3.org/2000/svg",T.perfLimitSizeTotal=2097152,T.maxCacheSideLimit=4096,T.minCacheSideLimit=256,T.charWidthsCache={},T.textureSize=2048,T.disableStyleCopyPaste=!1,T.enableGLFiltering=!0,T.devicePixelRatio=T.window.devicePixelRatio||T.window.webkitDevicePixelRatio||T.window.mozDevicePixelRatio||1,T.browserShadowBlurConstant=1,T.arcToSegmentsCache={},T.boundsOfCurveCache={},T.cachesBoundsOfCurve=!0,T.forceGLPutImageData=!1,T.initFilterBackend=function(){return T.enableGLFiltering&&T.isWebglSupported&&T.isWebglSupported(T.textureSize)?(console.log("max texture size: "+T.maxTextureSize),new T.WebglFilterBackend({tileSize:T.textureSize})):T.Canvas2dFilterBackend?new T.Canvas2dFilterBackend:void 0},"undefined"!=typeof document&&"undefined"!=typeof window&&(window.fabric=T),function(){function t(t,e){if(this.__eventListeners[t]){var i=this.__eventListeners[t];e?i[i.indexOf(e)]=!1:T.util.array.fill(i,!1)}}function e(t,e){var i=function(){e.apply(this,arguments),this.off(t,i)}.bind(this);this.on(t,i)}T.Observable={fire:function(t,e){if(!this.__eventListeners)return this;var i=this.__eventListeners[t];if(!i)return this;for(var n=0,r=i.length;n-1||!!e&&this._objects.some((function(e){return"function"==typeof e.contains&&e.contains(t,!0)}))},complexity:function(){return this._objects.reduce((function(t,e){return t+(e.complexity?e.complexity():0)}),0)}},T.CommonMethods={_setOptions:function(t){for(var e in t)this.set(e,t[e])},_initGradient:function(t,e){!t||!t.colorStops||t instanceof T.Gradient||this.set(e,new T.Gradient(t))},_initPattern:function(t,e,i){!t||!t.source||t instanceof T.Pattern?i&&i():this.set(e,new T.Pattern(t,i))},_setObject:function(t){for(var e in t)this._set(e,t[e])},set:function(t,e){return"object"==typeof t?this._setObject(t):this._set(t,e),this},_set:function(t,e){this[t]=e},toggle:function(t){var e=this.get(t);return"boolean"==typeof e&&this.set(t,!e),this},get:function(t){return this[t]}},n=e,r=Math.sqrt,s=Math.atan2,o=Math.pow,a=Math.PI/180,h=Math.PI/2,T.util={cos:function(t){if(0===t)return 1;switch(t<0&&(t=-t),t/h){case 1:case 3:return 0;case 2:return-1}return Math.cos(t)},sin:function(t){if(0===t)return 0;var e=1;switch(t<0&&(e=-1),t/h){case 1:return e;case 2:return 0;case 3:return-e}return Math.sin(t)},removeFromArray:function(t,e){var i=t.indexOf(e);return-1!==i&&t.splice(i,1),t},getRandomInt:function(t,e){return Math.floor(Math.random()*(e-t+1))+t},degreesToRadians:function(t){return t*a},radiansToDegrees:function(t){return t/a},rotatePoint:function(t,e,i){var n=new T.Point(t.x-e.x,t.y-e.y),r=T.util.rotateVector(n,i);return new T.Point(r.x,r.y).addEquals(e)},rotateVector:function(t,e){var i=T.util.sin(e),n=T.util.cos(e);return{x:t.x*n-t.y*i,y:t.x*i+t.y*n}},createVector:function(t,e){return new T.Point(e.x-t.x,e.y-t.y)},calcAngleBetweenVectors:function(t,e){return Math.acos((t.x*e.x+t.y*e.y)/(Math.hypot(t.x,t.y)*Math.hypot(e.x,e.y)))},getHatVector:function(t){return new T.Point(t.x,t.y).multiply(1/Math.hypot(t.x,t.y))},getBisector:function(t,e,i){var n=T.util.createVector(t,e),r=T.util.createVector(t,i),s=T.util.calcAngleBetweenVectors(n,r),o=s*(0===T.util.calcAngleBetweenVectors(T.util.rotateVector(n,s),r)?1:-1)/2;return{vector:T.util.getHatVector(T.util.rotateVector(n,o)),angle:s}},projectStrokeOnPoints:function(t,e,i){var n=[],r=e.strokeWidth/2,s=e.strokeUniform?new T.Point(1/e.scaleX,1/e.scaleY):new T.Point(1,1),o=function(t){var e=r/Math.hypot(t.x,t.y);return new T.Point(t.x*e*s.x,t.y*e*s.y)};return t.length<=1||t.forEach((function(a,h){var l,c,u=new T.Point(a.x,a.y);0===h?(c=t[h+1],l=i?o(T.util.createVector(c,u)).addEquals(u):t[t.length-1]):h===t.length-1?(l=t[h-1],c=i?o(T.util.createVector(l,u)).addEquals(u):t[0]):(l=t[h-1],c=t[h+1]);var d,f,g=T.util.getBisector(u,l,c),m=g.vector,p=g.angle;if("miter"===e.strokeLineJoin&&(d=-r/Math.sin(p/2),f=new T.Point(m.x*d*s.x,m.y*d*s.y),Math.hypot(f.x,f.y)/r<=e.strokeMiterLimit))return n.push(u.add(f)),void n.push(u.subtract(f));d=-r*Math.SQRT2,f=new T.Point(m.x*d*s.x,m.y*d*s.y),n.push(u.add(f)),n.push(u.subtract(f))})),n},transformPoint:function(t,e,i){return i?new T.Point(e[0]*t.x+e[2]*t.y,e[1]*t.x+e[3]*t.y):new T.Point(e[0]*t.x+e[2]*t.y+e[4],e[1]*t.x+e[3]*t.y+e[5])},makeBoundingBoxFromPoints:function(t,e){if(e)for(var i=0;i0&&(e>n?e-=n:e=0,i>n?i-=n:i=0);var r,s=!0,o=t.getImageData(e,i,2*n||1,2*n||1),a=o.data.length;for(r=3;r=r?s-r:2*Math.PI-(r-s)}function s(t,e,i){for(var s=i[1],o=i[2],a=i[3],h=i[4],l=i[5],c=function(t,e,i,s,o,a,h){var l=Math.PI,c=h*l/180,u=T.util.sin(c),d=T.util.cos(c),f=0,g=0,m=-d*t*.5-u*e*.5,p=-d*e*.5+u*t*.5,_=(i=Math.abs(i))*i,v=(s=Math.abs(s))*s,y=p*p,w=m*m,C=_*v-_*y-v*w,E=0;if(C<0){var S=Math.sqrt(1-C/(_*v));i*=S,s*=S}else E=(o===a?-1:1)*Math.sqrt(C/(_*y+v*w));var b=E*i*p/s,I=-E*s*m/i,x=d*b-u*I+.5*t,O=u*b+d*I+.5*e,A=r(1,0,(m-b)/i,(p-I)/s),R=r((m-b)/i,(p-I)/s,(-m-b)/i,(-p-I)/s);0===a&&R>0?R-=2*l:1===a&&R<0&&(R+=2*l);for(var D=Math.ceil(Math.abs(R/l*2)),L=[],M=R/D,F=8/3*Math.sin(M/4)*Math.sin(M/4)/Math.sin(M/2),P=A+M,k=0;kE)for(var b=1,I=m.length;b2;for(e=e||0,l&&(a=t[2].xt[i-2].x?1:r.x===t[i-2].x?0:-1,h=r.y>t[i-2].y?1:r.y===t[i-2].y?0:-1),n.push(["L",r.x+a*e,r.y+h*e]),n},T.util.getPathSegmentsInfo=d,T.util.getBoundsOfCurve=function(e,i,n,r,s,o,a,h){var l;if(T.cachesBoundsOfCurve&&(l=t.call(arguments),T.boundsOfCurveCache[l]))return T.boundsOfCurveCache[l];var c,u,d,f,g,m,p,_,v=Math.sqrt,y=Math.min,w=Math.max,C=Math.abs,E=[],S=[[],[]];u=6*e-12*n+6*s,c=-3*e+9*n-9*s+3*a,d=3*n-3*e;for(var b=0;b<2;++b)if(b>0&&(u=6*i-12*r+6*o,c=-3*i+9*r-9*o+3*h,d=3*r-3*i),C(c)<1e-12){if(C(u)<1e-12)continue;0<(f=-d/u)&&f<1&&E.push(f)}else(p=u*u-4*d*c)<0||(0<(g=(-u+(_=v(p)))/(2*c))&&g<1&&E.push(g),0<(m=(-u-_)/(2*c))&&m<1&&E.push(m));for(var I,x,O,A=E.length,R=A;A--;)I=(O=1-(f=E[A]))*O*O*e+3*O*O*f*n+3*O*f*f*s+f*f*f*a,S[0][A]=I,x=O*O*O*i+3*O*O*f*r+3*O*f*f*o+f*f*f*h,S[1][A]=x;S[0][R]=e,S[1][R]=i,S[0][R+1]=a,S[1][R+1]=h;var D=[{x:y.apply(null,S[0]),y:y.apply(null,S[1])},{x:w.apply(null,S[0]),y:w.apply(null,S[1])}];return T.cachesBoundsOfCurve&&(T.boundsOfCurveCache[l]=D),D},T.util.getPointOnPath=function(t,e,i){i||(i=d(t));for(var n=0;e-i[n].length>0&&n1e-4;)i=h(s),r=s,(n=o(l.x,l.y,i.x,i.y))+a>e?(s-=c,c/=2):(l=i,s+=c,a+=n);return i.angle=u(r),i}(s,e)}},T.util.transformPath=function(t,e,i){return i&&(e=T.util.multiplyTransformMatrices(e,[1,0,0,1,-i.x,-i.y])),t.map((function(t){for(var i=t.slice(0),n={},r=1;r=e}))}}}(),function(){function t(e,i,n){if(n)if(!T.isLikelyNode&&i instanceof Element)e=i;else if(i instanceof Array){e=[];for(var r=0,s=i.length;r57343)return t.charAt(e);if(55296<=i&&i<=56319){if(t.length<=e+1)throw"High surrogate without following low surrogate";var n=t.charCodeAt(e+1);if(56320>n||n>57343)throw"High surrogate without following low surrogate";return t.charAt(e)+t.charAt(e+1)}if(0===e)throw"Low surrogate without preceding high surrogate";var r=t.charCodeAt(e-1);if(55296>r||r>56319)throw"Low surrogate without preceding high surrogate";return!1}T.util.string={camelize:function(t){return t.replace(/-+(.)?/g,(function(t,e){return e?e.toUpperCase():""}))},capitalize:function(t,e){return t.charAt(0).toUpperCase()+(e?t.slice(1):t.slice(1).toLowerCase())},escapeXml:function(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")},graphemeSplit:function(e){var i,n=0,r=[];for(n=0;n-1?t.prototype[r]=function(t){return function(){var i=this.constructor.superclass;this.constructor.superclass=n;var r=e[t].apply(this,arguments);if(this.constructor.superclass=i,"initialize"!==t)return r}}(r):t.prototype[r]=e[r],i&&(e.toString!==Object.prototype.toString&&(t.prototype.toString=e.toString),e.valueOf!==Object.prototype.valueOf&&(t.prototype.valueOf=e.valueOf))};function r(){}function s(e){for(var i=null,n=this;n.constructor.superclass;){var r=n.constructor.superclass.prototype[e];if(n[e]!==r){i=r;break}n=n.constructor.superclass.prototype}return i?arguments.length>1?i.apply(this,t.call(arguments,1)):i.call(this):console.log("tried to callSuper "+e+", method not found in prototype chain",this)}T.util.createClass=function(){var i=null,o=t.call(arguments,0);function a(){this.initialize.apply(this,arguments)}"function"==typeof o[0]&&(i=o.shift()),a.superclass=i,a.subclasses=[],i&&(r.prototype=i.prototype,a.prototype=new r,i.subclasses.push(a));for(var h=0,l=o.length;h-1||"touch"===t.pointerType},d="string"==typeof(u=T.document.createElement("div")).style.opacity,f="string"==typeof u.style.filter,g=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,m=function(t){return t},d?m=function(t,e){return t.style.opacity=e,t}:f&&(m=function(t,e){var i=t.style;return t.currentStyle&&!t.currentStyle.hasLayout&&(i.zoom=1),g.test(i.filter)?(e=e>=.9999?"":"alpha(opacity="+100*e+")",i.filter=i.filter.replace(g,e)):i.filter+=" alpha(opacity="+100*e+")",t}),T.util.setStyle=function(t,e){var i=t.style;if(!i)return t;if("string"==typeof e)return t.style.cssText+=";"+e,e.indexOf("opacity")>-1?m(t,e.match(/opacity:\s*(\d?\.?\d*)/)[1]):t;for(var n in e)"opacity"===n?m(t,e[n]):i["float"===n||"cssFloat"===n?void 0===i.styleFloat?"cssFloat":"styleFloat":n]=e[n];return t},function(){var t,e,i,n,r=Array.prototype.slice,s=function(t){return r.call(t,0)};try{t=s(T.document.childNodes)instanceof Array}catch(t){}function o(t,e){var i=T.document.createElement(t);for(var n in e)"class"===n?i.className=e[n]:"for"===n?i.htmlFor=e[n]:i.setAttribute(n,e[n]);return i}function a(t){for(var e=0,i=0,n=T.document.documentElement,r=T.document.body||{scrollLeft:0,scrollTop:0};t&&(t.parentNode||t.host)&&((t=t.parentNode||t.host)===T.document?(e=r.scrollLeft||n.scrollLeft||0,i=r.scrollTop||n.scrollTop||0):(e+=t.scrollLeft||0,i+=t.scrollTop||0),1!==t.nodeType||"fixed"!==t.style.position););return{left:e,top:i}}t||(s=function(t){for(var e=new Array(t.length),i=t.length;i--;)e[i]=t[i];return e}),e=T.document.defaultView&&T.document.defaultView.getComputedStyle?function(t,e){var i=T.document.defaultView.getComputedStyle(t,null);return i?i[e]:void 0}:function(t,e){var i=t.style[e];return!i&&t.currentStyle&&(i=t.currentStyle[e]),i},i=T.document.documentElement.style,n="userSelect"in i?"userSelect":"MozUserSelect"in i?"MozUserSelect":"WebkitUserSelect"in i?"WebkitUserSelect":"KhtmlUserSelect"in i?"KhtmlUserSelect":"",T.util.makeElementUnselectable=function(t){return void 0!==t.onselectstart&&(t.onselectstart=T.util.falseFunction),n?t.style[n]="none":"string"==typeof t.unselectable&&(t.unselectable="on"),t},T.util.makeElementSelectable=function(t){return void 0!==t.onselectstart&&(t.onselectstart=null),n?t.style[n]="":"string"==typeof t.unselectable&&(t.unselectable=""),t},T.util.setImageSmoothing=function(t,e){t.imageSmoothingEnabled=t.imageSmoothingEnabled||t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled||t.oImageSmoothingEnabled,t.imageSmoothingEnabled=e},T.util.getById=function(t){return"string"==typeof t?T.document.getElementById(t):t},T.util.toArray=s,T.util.addClass=function(t,e){t&&-1===(" "+t.className+" ").indexOf(" "+e+" ")&&(t.className+=(t.className?" ":"")+e)},T.util.makeElement=o,T.util.wrapElement=function(t,e,i){return"string"==typeof e&&(e=o(e,i)),t.parentNode&&t.parentNode.replaceChild(e,t),e.appendChild(t),e},T.util.getScrollLeftTop=a,T.util.getElementOffset=function(t){var i,n,r=t&&t.ownerDocument,s={left:0,top:0},o={left:0,top:0},h={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!r)return o;for(var l in h)o[h[l]]+=parseInt(e(t,l),10)||0;return i=r.documentElement,void 0!==t.getBoundingClientRect&&(s=t.getBoundingClientRect()),n=a(t),{left:s.left+n.left-(i.clientLeft||0)+o.left,top:s.top+n.top-(i.clientTop||0)+o.top}},T.util.getNodeCanvas=function(t){var e=T.jsdomImplForWrapper(t);return e._canvas||e._image},T.util.cleanUpJsdomNode=function(t){if(T.isLikelyNode){var e=T.jsdomImplForWrapper(t);e&&(e._image=null,e._canvas=null,e._currentSrc=null,e._attributes=null,e._classList=null)}}}(),function(){function t(){}T.util.request=function(e,i){i||(i={});var n=i.method?i.method.toUpperCase():"GET",r=i.onComplete||function(){},s=new T.window.XMLHttpRequest,o=i.body||i.parameters;return s.onreadystatechange=function(){4===s.readyState&&(r(s),s.onreadystatechange=t)},"GET"===n&&(o=null,"string"==typeof i.parameters&&(e=function(t,e){return t+(/\?/.test(t)?"&":"?")+e}(e,i.parameters))),s.open(n,e,!0),"POST"!==n&&"PUT"!==n||s.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),s.send(o),s}}(),T.log=console.log,T.warn=console.warn,function(){var t=T.util.object.extend,e=T.util.object.clone,i=[];function n(){return!1}function r(t,e,i,n){return-i*Math.cos(t/n*(Math.PI/2))+i+e}T.util.object.extend(i,{cancelAll:function(){var t=this.splice(0);return t.forEach((function(t){t.cancel()})),t},cancelByCanvas:function(t){if(!t)return[];var e=this.filter((function(e){return"object"==typeof e.target&&e.target.canvas===t}));return e.forEach((function(t){t.cancel()})),e},cancelByTarget:function(t){var e=this.findAnimationsByTarget(t);return e.forEach((function(t){t.cancel()})),e},findAnimationIndex:function(t){return this.indexOf(this.findAnimation(t))},findAnimation:function(t){return this.find((function(e){return e.cancel===t}))},findAnimationsByTarget:function(t){return t?this.filter((function(e){return e.target===t})):[]}});var s=T.window.requestAnimationFrame||T.window.webkitRequestAnimationFrame||T.window.mozRequestAnimationFrame||T.window.oRequestAnimationFrame||T.window.msRequestAnimationFrame||function(t){return T.window.setTimeout(t,1e3/60)},o=T.window.cancelAnimationFrame||T.window.clearTimeout;function a(){return s.apply(T.window,arguments)}T.util.animate=function(i){i||(i={});var s,o=!1,h=function(){var t=T.runningAnimations.indexOf(s);return t>-1&&T.runningAnimations.splice(t,1)[0]};return s=t(e(i),{cancel:function(){return o=!0,h()},currentValue:"startValue"in i?i.startValue:0,completionRate:0,durationRate:0}),T.runningAnimations.push(s),a((function(t){var e,l=t||+new Date,c=i.duration||500,u=l+c,d=i.onChange||n,f=i.abort||n,g=i.onComplete||n,m=i.easing||r,p="startValue"in i&&i.startValue.length>0,_="startValue"in i?i.startValue:0,v="endValue"in i?i.endValue:100,y=i.byValue||(p?_.map((function(t,e){return v[e]-_[e]})):v-_);i.onStart&&i.onStart(),function t(i){var n=(e=i||+new Date)>u?c:e-l,r=n/c,w=p?_.map((function(t,e){return m(n,_[e],y[e],c)})):m(n,_,y,c),C=p?Math.abs((w[0]-_[0])/y[0]):Math.abs((w-_)/y);if(s.currentValue=p?w.slice():w,s.completionRate=C,s.durationRate=r,!o){if(!f(w,C,r))return e>u?(s.currentValue=p?v.slice():v,s.completionRate=1,s.durationRate=1,d(p?v.slice():v,1,1),g(v,1,1),void h()):(d(w,C,r),void a(t));h()}}(l)})),s.cancel},T.util.requestAnimFrame=a,T.util.cancelAnimFrame=function(){return o.apply(T.window,arguments)},T.runningAnimations=i}(),function(){function t(t,e,i){var n="rgba("+parseInt(t[0]+i*(e[0]-t[0]),10)+","+parseInt(t[1]+i*(e[1]-t[1]),10)+","+parseInt(t[2]+i*(e[2]-t[2]),10);return(n+=","+(t&&e?parseFloat(t[3]+i*(e[3]-t[3])):1))+")"}T.util.animateColor=function(e,i,n,r){var s=new T.Color(e).getSource(),o=new T.Color(i).getSource(),a=r.onComplete,h=r.onChange;return r=r||{},T.util.animate(T.util.object.extend(r,{duration:n||500,startValue:s,endValue:o,byValue:o,easing:function(e,i,n,s){return t(i,n,r.colorEasing?r.colorEasing(e,s):1-Math.cos(e/s*(Math.PI/2)))},onComplete:function(e,i,n){if(a)return a(t(o,o,0),i,n)},onChange:function(e,i,n){if(h){if(Array.isArray(e))return h(t(e,e,0),i,n);h(e,i,n)}}}))}}(),function(){function t(t,e,i,n){return t-1&&c>-1&&c-1)&&(i="stroke")}else{if("href"===t||"xlink:href"===t||"font"===t)return i;if("imageSmoothing"===t)return"optimizeQuality"===i;a=h?i.map(s):s(i,r)}}else i="";return!h&&isNaN(a)?i:a}function f(t){return new RegExp("^("+t.join("|")+")\\b","i")}function g(t,e){var i,n,r,s,o=[];for(r=0,s=e.length;r1;)h.shift(),l=e.util.multiplyTransformMatrices(l,h[0]);return l}}();var v=new RegExp("^\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*$");function y(t){if(!e.svgViewBoxElementsRegEx.test(t.nodeName))return{};var i,n,r,o,a,h,l=t.getAttribute("viewBox"),c=1,u=1,d=t.getAttribute("width"),f=t.getAttribute("height"),g=t.getAttribute("x")||0,m=t.getAttribute("y")||0,p=t.getAttribute("preserveAspectRatio")||"",_=!l||!(l=l.match(v)),y=!d||!f||"100%"===d||"100%"===f,w=_&&y,C={},E="",S=0,T=0;if(C.width=0,C.height=0,C.toBeParsed=w,_&&(g||m)&&t.parentNode&&"#document"!==t.parentNode.nodeName&&(E=" translate("+s(g)+" "+s(m)+") ",a=(t.getAttribute("transform")||"")+E,t.setAttribute("transform",a),t.removeAttribute("x"),t.removeAttribute("y")),w)return C;if(_)return C.width=s(d),C.height=s(f),C;if(i=-parseFloat(l[1]),n=-parseFloat(l[2]),r=parseFloat(l[3]),o=parseFloat(l[4]),C.minX=i,C.minY=n,C.viewBoxWidth=r,C.viewBoxHeight=o,y?(C.width=r,C.height=o):(C.width=s(d),C.height=s(f),c=C.width/r,u=C.height/o),"none"!==(p=e.util.parsePreserveAspectRatioAttribute(p)).alignX&&("meet"===p.meetOrSlice&&(u=c=c>u?u:c),"slice"===p.meetOrSlice&&(u=c=c>u?c:u),S=C.width-r*c,T=C.height-o*c,"Mid"===p.alignX&&(S/=2),"Mid"===p.alignY&&(T/=2),"Min"===p.alignX&&(S=0),"Min"===p.alignY&&(T=0)),1===c&&1===u&&0===i&&0===n&&0===g&&0===m)return C;if((g||m)&&"#document"!==t.parentNode.nodeName&&(E=" translate("+s(g)+" "+s(m)+") "),a=E+" matrix("+c+" 0 0 "+u+" "+(i*c+S)+" "+(n*u+T)+") ","svg"===t.nodeName){for(h=t.ownerDocument.createElementNS(e.svgNS,"g");t.firstChild;)h.appendChild(t.firstChild);t.appendChild(h)}else(h=t).removeAttribute("x"),h.removeAttribute("y"),a=h.getAttribute("transform")+a;return h.setAttribute("transform",a),C}function w(t,e){var i="xlink:href",n=_(t,e.getAttribute(i).slice(1));if(n&&n.getAttribute(i)&&w(t,n),["gradientTransform","x1","x2","y1","y2","gradientUnits","cx","cy","r","fx","fy"].forEach((function(t){n&&!e.hasAttribute(t)&&n.hasAttribute(t)&&e.setAttribute(t,n.getAttribute(t))})),!e.children.length)for(var r=n.cloneNode(!0);r.firstChild;)e.appendChild(r.firstChild);e.removeAttribute(i)}e.parseSVGDocument=function(t,i,r,s){if(t){!function(t){for(var i=g(t,["use","svg:use"]),n=0;i.length&&nt.x&&this.y>t.y},gte:function(t){return this.x>=t.x&&this.y>=t.y},lerp:function(t,e){return void 0===e&&(e=.5),e=Math.max(Math.min(1,e),0),new i(this.x+(t.x-this.x)*e,this.y+(t.y-this.y)*e)},distanceFrom:function(t){var e=this.x-t.x,i=this.y-t.y;return Math.sqrt(e*e+i*i)},midPointFrom:function(t){return this.lerp(t)},min:function(t){return new i(Math.min(this.x,t.x),Math.min(this.y,t.y))},max:function(t){return new i(Math.max(this.x,t.x),Math.max(this.y,t.y))},toString:function(){return this.x+","+this.y},setXY:function(t,e){return this.x=t,this.y=e,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setFromPoint:function(t){return this.x=t.x,this.y=t.y,this},swap:function(t){var e=this.x,i=this.y;this.x=t.x,this.y=t.y,t.x=e,t.y=i},clone:function(){return new i(this.x,this.y)}})}(e),function(t){var e=t.fabric||(t.fabric={});function i(t){this.status=t,this.points=[]}e.Intersection?e.warn("fabric.Intersection is already defined"):(e.Intersection=i,e.Intersection.prototype={constructor:i,appendPoint:function(t){return this.points.push(t),this},appendPoints:function(t){return this.points=this.points.concat(t),this}},e.Intersection.intersectLineLine=function(t,n,r,s){var o,a=(s.x-r.x)*(t.y-r.y)-(s.y-r.y)*(t.x-r.x),h=(n.x-t.x)*(t.y-r.y)-(n.y-t.y)*(t.x-r.x),l=(s.y-r.y)*(n.x-t.x)-(s.x-r.x)*(n.y-t.y);if(0!==l){var c=a/l,u=h/l;0<=c&&c<=1&&0<=u&&u<=1?(o=new i("Intersection")).appendPoint(new e.Point(t.x+c*(n.x-t.x),t.y+c*(n.y-t.y))):o=new i}else o=new i(0===a||0===h?"Coincident":"Parallel");return o},e.Intersection.intersectLinePolygon=function(t,e,n){var r,s,o,a,h=new i,l=n.length;for(a=0;a0&&(h.status="Intersection"),h},e.Intersection.intersectPolygonPolygon=function(t,e){var n,r=new i,s=t.length;for(n=0;n0&&(r.status="Intersection"),r},e.Intersection.intersectPolygonRectangle=function(t,n,r){var s=n.min(r),o=n.max(r),a=new e.Point(o.x,s.y),h=new e.Point(s.x,o.y),l=i.intersectLinePolygon(s,a,t),c=i.intersectLinePolygon(a,o,t),u=i.intersectLinePolygon(o,h,t),d=i.intersectLinePolygon(h,s,t),f=new i;return f.appendPoints(l.points),f.appendPoints(c.points),f.appendPoints(u.points),f.appendPoints(d.points),f.points.length>0&&(f.status="Intersection"),f})}(e),function(t){var e=t.fabric||(t.fabric={});function i(t){t?this._tryParsingColor(t):this.setSource([0,0,0,1])}function n(t,e,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+6*(e-t)*i:i<.5?e:i<2/3?t+(e-t)*(2/3-i)*6:t}e.Color?e.warn("fabric.Color is already defined."):(e.Color=i,e.Color.prototype={_tryParsingColor:function(t){var e;t in i.colorNameMap&&(t=i.colorNameMap[t]),"transparent"===t&&(e=[255,255,255,0]),e||(e=i.sourceFromHex(t)),e||(e=i.sourceFromRgb(t)),e||(e=i.sourceFromHsl(t)),e||(e=[0,0,0,1]),e&&this.setSource(e)},_rgbToHsl:function(t,i,n){t/=255,i/=255,n/=255;var r,s,o,a=e.util.array.max([t,i,n]),h=e.util.array.min([t,i,n]);if(o=(a+h)/2,a===h)r=s=0;else{var l=a-h;switch(s=o>.5?l/(2-a-h):l/(a+h),a){case t:r=(i-n)/l+(i0)-(t<0)||+t};function f(t,e){var i=t.angle+u(Math.atan2(e.y,e.x))+360;return Math.round(i%360/45)}function g(t,i){var n=i.transform.target,r=n.canvas,s=e.util.object.clone(i);s.target=n,r&&r.fire("object:"+t,s),n.fire(t,i)}function m(t,e){var i=e.canvas,n=t[i.uniScaleKey];return i.uniformScaling&&!n||!i.uniformScaling&&n}function p(t){return t.originX===l&&t.originY===l}function _(t,e,i){var n=t.lockScalingX,r=t.lockScalingY;return!((!n||!r)&&(e||!n&&!r||!i)&&(!n||"x"!==e)&&(!r||"y"!==e))}function v(t,e,i,n){return{e:t,transform:e,pointer:{x:i,y:n}}}function y(t){return function(e,i,n,r){var s=i.target,o=s.getCenterPoint(),a=s.translateToOriginPoint(o,i.originX,i.originY),h=t(e,i,n,r);return s.setPositionByOrigin(a,i.originX,i.originY),h}}function w(t,e){return function(i,n,r,s){var o=e(i,n,r,s);return o&&g(t,v(i,n,r,s)),o}}function C(t,i,n,r,s){var o=t.target,a=o.controls[t.corner],h=o.canvas.getZoom(),l=o.padding/h,c=o.toLocalPoint(new e.Point(r,s),i,n);return c.x>=l&&(c.x-=l),c.x<=-l&&(c.x+=l),c.y>=l&&(c.y-=l),c.y<=l&&(c.y+=l),c.x-=a.offsetX,c.y-=a.offsetY,c}function E(t){return t.flipX!==t.flipY}function S(t,e,i,n,r){if(0!==t[e]){var s=r/t._getTransformedDimensions()[n]*t[i];t.set(i,s)}}function T(t,e,i,n){var r,l=e.target,c=l._getTransformedDimensions(0,l.skewY),d=C(e,e.originX,e.originY,i,n),f=Math.abs(2*d.x)-c.x,g=l.skewX;f<2?r=0:(r=u(Math.atan2(f/l.scaleX,c.y/l.scaleY)),e.originX===s&&e.originY===h&&(r=-r),e.originX===a&&e.originY===o&&(r=-r),E(l)&&(r=-r));var m=g!==r;if(m){var p=l._getTransformedDimensions().y;l.set("skewX",r),S(l,"skewY","scaleY","y",p)}return m}function b(t,e,i,n){var r,l=e.target,c=l._getTransformedDimensions(l.skewX,0),d=C(e,e.originX,e.originY,i,n),f=Math.abs(2*d.y)-c.y,g=l.skewY;f<2?r=0:(r=u(Math.atan2(f/l.scaleY,c.x/l.scaleX)),e.originX===s&&e.originY===h&&(r=-r),e.originX===a&&e.originY===o&&(r=-r),E(l)&&(r=-r));var m=g!==r;if(m){var p=l._getTransformedDimensions().x;l.set("skewY",r),S(l,"skewX","scaleX","x",p)}return m}function I(t,e,i,n,r){r=r||{};var s,o,a,h,l,u,f=e.target,g=f.lockScalingX,v=f.lockScalingY,y=r.by,w=m(t,f),E=_(f,y,w),S=e.gestureScale;if(E)return!1;if(S)o=e.scaleX*S,a=e.scaleY*S;else{if(s=C(e,e.originX,e.originY,i,n),l="y"!==y?d(s.x):1,u="x"!==y?d(s.y):1,e.signX||(e.signX=l),e.signY||(e.signY=u),f.lockScalingFlip&&(e.signX!==l||e.signY!==u))return!1;if(h=f._getTransformedDimensions(),w&&!y){var T=Math.abs(s.x)+Math.abs(s.y),b=e.original,I=T/(Math.abs(h.x*b.scaleX/f.scaleX)+Math.abs(h.y*b.scaleY/f.scaleY));o=b.scaleX*I,a=b.scaleY*I}else o=Math.abs(s.x*f.scaleX/h.x),a=Math.abs(s.y*f.scaleY/h.y);p(e)&&(o*=2,a*=2),e.signX!==l&&"y"!==y&&(e.originX=c[e.originX],o*=-1,e.signX=l),e.signY!==u&&"x"!==y&&(e.originY=c[e.originY],a*=-1,e.signY=u)}var x=f.scaleX,O=f.scaleY;return y?("x"===y&&f.set("scaleX",o),"y"===y&&f.set("scaleY",a)):(!g&&f.set("scaleX",o),!v&&f.set("scaleY",a)),x!==f.scaleX||O!==f.scaleY}r.scaleCursorStyleHandler=function(t,e,n){var r=m(t,n),s="";if(0!==e.x&&0===e.y?s="x":0===e.x&&0!==e.y&&(s="y"),_(n,s,r))return"not-allowed";var o=f(n,e);return i[o]+"-resize"},r.skewCursorStyleHandler=function(t,e,i){var r="not-allowed";if(0!==e.x&&i.lockSkewingY)return r;if(0!==e.y&&i.lockSkewingX)return r;var s=f(i,e)%4;return n[s]+"-resize"},r.scaleSkewCursorStyleHandler=function(t,e,i){return t[i.canvas.altActionKey]?r.skewCursorStyleHandler(t,e,i):r.scaleCursorStyleHandler(t,e,i)},r.rotationWithSnapping=w("rotating",y((function(t,e,i,n){var r=e,s=r.target,o=s.translateToOriginPoint(s.getCenterPoint(),r.originX,r.originY);if(s.lockRotation)return!1;var a,h=Math.atan2(r.ey-o.y,r.ex-o.x),l=Math.atan2(n-o.y,i-o.x),c=u(l-h+r.theta);if(s.snapAngle>0){var d=s.snapAngle,f=s.snapThreshold||d,g=Math.ceil(c/d)*d,m=Math.floor(c/d)*d;Math.abs(c-m)0?s:a:(c>0&&(r=u===o?s:a),c<0&&(r=u===o?a:s),E(h)&&(r=r===s?a:s)),e.originX=r,w("skewing",y(T))(t,e,i,n))},r.skewHandlerY=function(t,e,i,n){var r,a=e.target,c=a.skewY,u=e.originX;return!a.lockSkewingY&&(0===c?r=C(e,l,l,i,n).y>0?o:h:(c>0&&(r=u===s?o:h),c<0&&(r=u===s?h:o),E(a)&&(r=r===o?h:o)),e.originY=r,w("skewing",y(b))(t,e,i,n))},r.dragHandler=function(t,e,i,n){var r=e.target,s=i-e.offsetX,o=n-e.offsetY,a=!r.get("lockMovementX")&&r.left!==s,h=!r.get("lockMovementY")&&r.top!==o;return a&&r.set("left",s),h&&r.set("top",o),(a||h)&&g("moving",v(t,e,i,n)),a||h},r.scaleOrSkewActionName=function(t,e,i){var n=t[i.canvas.altActionKey];return 0===e.x?n?"skewX":"scaleY":0===e.y?n?"skewY":"scaleX":void 0},r.rotationStyleHandler=function(t,e,i){return i.lockRotation?"not-allowed":e.cursorStyle},r.fireEvent=g,r.wrapWithFixedAnchor=y,r.wrapWithFireEvent=w,r.getLocalPoint=C,e.controlsUtils=r}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.degreesToRadians,n=e.controlsUtils;n.renderCircleControl=function(t,e,i,n,r){n=n||{};var s,o=this.sizeX||n.cornerSize||r.cornerSize,a=this.sizeY||n.cornerSize||r.cornerSize,h=void 0!==n.transparentCorners?n.transparentCorners:r.transparentCorners,l=h?"stroke":"fill",c=!h&&(n.cornerStrokeColor||r.cornerStrokeColor),u=e,d=i;t.save(),t.fillStyle=n.cornerColor||r.cornerColor,t.strokeStyle=n.cornerStrokeColor||r.cornerStrokeColor,o>a?(s=o,t.scale(1,a/o),d=i*o/a):a>o?(s=a,t.scale(o/a,1),u=e*a/o):s=o,t.lineWidth=1,t.beginPath(),t.arc(u,d,s/2,0,2*Math.PI,!1),t[l](),c&&t.stroke(),t.restore()},n.renderSquareControl=function(t,e,n,r,s){r=r||{};var o=this.sizeX||r.cornerSize||s.cornerSize,a=this.sizeY||r.cornerSize||s.cornerSize,h=void 0!==r.transparentCorners?r.transparentCorners:s.transparentCorners,l=h?"stroke":"fill",c=!h&&(r.cornerStrokeColor||s.cornerStrokeColor),u=o/2,d=a/2;t.save(),t.fillStyle=r.cornerColor||s.cornerColor,t.strokeStyle=r.cornerStrokeColor||s.cornerStrokeColor,t.lineWidth=1,t.translate(e,n),t.rotate(i(s.angle)),t[l+"Rect"](-u,-d,o,a),c&&t.strokeRect(-u,-d,o,a),t.restore()}}(e),function(t){var e=t.fabric||(t.fabric={});e.Control=function(t){for(var e in t)this[e]=t[e]},e.Control.prototype={visible:!0,actionName:"scale",angle:0,x:0,y:0,offsetX:0,offsetY:0,sizeX:null,sizeY:null,touchSizeX:null,touchSizeY:null,cursorStyle:"crosshair",withConnection:!1,actionHandler:function(){},mouseDownHandler:function(){},mouseUpHandler:function(){},getActionHandler:function(){return this.actionHandler},getMouseDownHandler:function(){return this.mouseDownHandler},getMouseUpHandler:function(){return this.mouseUpHandler},cursorStyleHandler:function(t,e){return e.cursorStyle},getActionName:function(t,e){return e.actionName},getVisibility:function(t,e){var i=t._controlsVisibility;return i&&void 0!==i[e]?i[e]:this.visible},setVisibility:function(t){this.visible=t},positionHandler:function(t,i){return e.util.transformPoint({x:this.x*t.x+this.offsetX,y:this.y*t.y+this.offsetY},i)},calcCornerCoords:function(t,i,n,r,s){var o,a,h,l,c=s?this.touchSizeX:this.sizeX,u=s?this.touchSizeY:this.sizeY;if(c&&u&&c!==u){var d=Math.atan2(u,c),f=Math.sqrt(c*c+u*u)/2,g=d-e.util.degreesToRadians(t),m=Math.PI/2-d-e.util.degreesToRadians(t);o=f*e.util.cos(g),a=f*e.util.sin(g),h=f*e.util.cos(m),l=f*e.util.sin(m)}else f=.7071067812*(c&&u?c:i),g=e.util.degreesToRadians(45-t),o=h=f*e.util.cos(g),a=l=f*e.util.sin(g);return{tl:{x:n-l,y:r-h},tr:{x:n+o,y:r-a},bl:{x:n-o,y:r+a},br:{x:n+l,y:r+h}}},render:function(t,i,n,r,s){"circle"===((r=r||{}).cornerStyle||s.cornerStyle)?e.controlsUtils.renderCircleControl.call(this,t,i,n,r,s):e.controlsUtils.renderSquareControl.call(this,t,i,n,r,s)}}}(e),function(){function t(t,e){var i,n,r,s,o=t.getAttribute("style"),a=t.getAttribute("offset")||0;if(a=(a=parseFloat(a)/(/%$/.test(a)?100:1))<0?0:a>1?1:a,o){var h=o.split(/\s*;\s*/);for(""===h[h.length-1]&&h.pop(),s=h.length;s--;){var l=h[s].split(/\s*:\s*/),c=l[0].trim(),u=l[1].trim();"stop-color"===c?i=u:"stop-opacity"===c&&(r=u)}}return i||(i=t.getAttribute("stop-color")||"rgb(0,0,0)"),r||(r=t.getAttribute("stop-opacity")),n=(i=new T.Color(i)).getAlpha(),r=isNaN(parseFloat(r))?1:parseFloat(r),r*=n*e,{offset:a,color:i.toRgb(),opacity:r}}var e=T.util.object.clone;T.Gradient=T.util.createClass({offsetX:0,offsetY:0,gradientTransform:null,gradientUnits:"pixels",type:"linear",initialize:function(t){t||(t={}),t.coords||(t.coords={});var e,i=this;Object.keys(t).forEach((function(e){i[e]=t[e]})),this.id?this.id+="_"+T.Object.__uid++:this.id=T.Object.__uid++,e={x1:t.coords.x1||0,y1:t.coords.y1||0,x2:t.coords.x2||0,y2:t.coords.y2||0},"radial"===this.type&&(e.r1=t.coords.r1||0,e.r2=t.coords.r2||0),this.coords=e,this.colorStops=t.colorStops.slice()},addColorStop:function(t){for(var e in t){var i=new T.Color(t[e]);this.colorStops.push({offset:parseFloat(e),color:i.toRgb(),opacity:i.getAlpha()})}return this},toObject:function(t){var e={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return T.util.populateWithProperties(this,e,t),e},toSVG:function(t,i){var n,r,s,o,a=e(this.coords,!0),h=(i=i||{},e(this.colorStops,!0)),l=a.r1>a.r2,c=this.gradientTransform?this.gradientTransform.concat():T.iMatrix.concat(),u=-this.offsetX,d=-this.offsetY,f=!!i.additionalTransform,g="pixels"===this.gradientUnits?"userSpaceOnUse":"objectBoundingBox";if(h.sort((function(t,e){return t.offset-e.offset})),"objectBoundingBox"===g?(u/=t.width,d/=t.height):(u+=t.width/2,d+=t.height/2),"path"===t.type&&"percentage"!==this.gradientUnits&&(u-=t.pathOffset.x,d-=t.pathOffset.y),c[4]-=u,c[5]-=d,o='id="SVGID_'+this.id+'" gradientUnits="'+g+'"',o+=' gradientTransform="'+(f?i.additionalTransform+" ":"")+T.util.matrixToSVG(c)+'" ',"linear"===this.type?s=["\n']:"radial"===this.type&&(s=["\n']),"radial"===this.type){if(l)for((h=h.concat()).reverse(),n=0,r=h.length;n0){var p=m/Math.max(a.r1,a.r2);for(n=0,r=h.length;n\n')}return s.push("linear"===this.type?"\n":"\n"),s.join("")},toLive:function(t){var e,i,n,r=T.util.object.clone(this.coords);if(this.type){for("linear"===this.type?e=t.createLinearGradient(r.x1,r.y1,r.x2,r.y2):"radial"===this.type&&(e=t.createRadialGradient(r.x1,r.y1,r.r1,r.x2,r.y2,r.r2)),i=0,n=this.colorStops.length;i1?1:s,isNaN(s)&&(s=1);var o,a,h,l,c=e.getElementsByTagName("stop"),u="userSpaceOnUse"===e.getAttribute("gradientUnits")?"pixels":"percentage",d=e.getAttribute("gradientTransform")||"",f=[],g=0,m=0;for("linearGradient"===e.nodeName||"LINEARGRADIENT"===e.nodeName?(o="linear",a=function(t){return{x1:t.getAttribute("x1")||0,y1:t.getAttribute("y1")||0,x2:t.getAttribute("x2")||"100%",y2:t.getAttribute("y2")||0}}(e)):(o="radial",a=function(t){return{x1:t.getAttribute("fx")||t.getAttribute("cx")||"50%",y1:t.getAttribute("fy")||t.getAttribute("cy")||"50%",r1:0,x2:t.getAttribute("cx")||"50%",y2:t.getAttribute("cy")||"50%",r2:t.getAttribute("r")||"50%"}}(e)),h=c.length;h--;)f.push(t(c[h],s));return l=T.parseTransformAttribute(d),function(t,e,i,n){var r,s;Object.keys(e).forEach((function(t){"Infinity"===(r=e[t])?s=1:"-Infinity"===r?s=0:(s=parseFloat(e[t],10),"string"==typeof r&&/^(\d+\.\d+)%|(\d+)%$/.test(r)&&(s*=.01,"pixels"===n&&("x1"!==t&&"x2"!==t&&"r2"!==t||(s*=i.viewBoxWidth||i.width),"y1"!==t&&"y2"!==t||(s*=i.viewBoxHeight||i.height)))),e[t]=s}))}(0,a,r,u),"pixels"===u&&(g=-i.left,m=-i.top),new T.Gradient({id:e.getAttribute("id"),type:o,coords:a,colorStops:f,gradientUnits:u,gradientTransform:l,offsetX:g,offsetY:m})}})}(),_=T.util.toFixed,T.Pattern=T.util.createClass({repeat:"repeat",offsetX:0,offsetY:0,crossOrigin:"",patternTransform:null,initialize:function(t,e){if(t||(t={}),this.id=T.Object.__uid++,this.setOptions(t),!t.source||t.source&&"string"!=typeof t.source)e&&e(this);else{var i=this;this.source=T.util.createImage(),T.util.loadImage(t.source,(function(t,n){i.source=t,e&&e(i,n)}),null,this.crossOrigin)}},toObject:function(t){var e,i,n=T.Object.NUM_FRACTION_DIGITS;return"string"==typeof this.source.src?e=this.source.src:"object"==typeof this.source&&this.source.toDataURL&&(e=this.source.toDataURL()),i={type:"pattern",source:e,repeat:this.repeat,crossOrigin:this.crossOrigin,offsetX:_(this.offsetX,n),offsetY:_(this.offsetY,n),patternTransform:this.patternTransform?this.patternTransform.concat():null},T.util.populateWithProperties(this,i,t),i},toSVG:function(t){var e="function"==typeof this.source?this.source():this.source,i=e.width/t.width,n=e.height/t.height,r=this.offsetX/t.width,s=this.offsetY/t.height,o="";return"repeat-x"!==this.repeat&&"no-repeat"!==this.repeat||(n=1,s&&(n+=Math.abs(s))),"repeat-y"!==this.repeat&&"no-repeat"!==this.repeat||(i=1,r&&(i+=Math.abs(r))),e.src?o=e.src:e.toDataURL&&(o=e.toDataURL()),'\n\n\n'},setOptions:function(t){for(var e in t)this[e]=t[e]},toLive:function(t){var e=this.source;if(!e)return"";if(void 0!==e.src){if(!e.complete)return"";if(0===e.naturalWidth||0===e.naturalHeight)return""}return t.createPattern(e,this.repeat)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.toFixed;e.Shadow?e.warn("fabric.Shadow is already defined."):(e.Shadow=e.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1,initialize:function(t){for(var i in"string"==typeof t&&(t=this._parseShadow(t)),t)this[i]=t[i];this.id=e.Object.__uid++},_parseShadow:function(t){var i=t.trim(),n=e.Shadow.reOffsetsAndBlur.exec(i)||[];return{color:(i.replace(e.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)").trim(),offsetX:parseFloat(n[1],10)||0,offsetY:parseFloat(n[2],10)||0,blur:parseFloat(n[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(t){var n=40,r=40,s=e.Object.NUM_FRACTION_DIGITS,o=e.util.rotateVector({x:this.offsetX,y:this.offsetY},e.util.degreesToRadians(-t.angle)),a=new e.Color(this.color);return t.width&&t.height&&(n=100*i((Math.abs(o.x)+this.blur)/t.width,s)+20,r=100*i((Math.abs(o.y)+this.blur)/t.height,s)+20),t.flipX&&(o.x*=-1),t.flipY&&(o.y*=-1),'\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\n\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling};var t={},i=e.Shadow.prototype;return["color","blur","offsetX","offsetY","affectStroke","nonScaling"].forEach((function(e){this[e]!==i[e]&&(t[e]=this[e])}),this),t}}),e.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(\d+(?:\.\d*)?(?:px)?)?(?:\s?|$)(?:$|\s)/)}(e),function(){if(T.StaticCanvas)T.warn("fabric.StaticCanvas is already defined.");else{var t=T.util.object.extend,e=T.util.getElementOffset,i=T.util.removeFromArray,n=T.util.toFixed,r=T.util.transformPoint,s=T.util.invertTransform,o=T.util.getNodeCanvas,a=T.util.createCanvasElement,h=new Error("Could not initialize `canvas` element");T.StaticCanvas=T.util.createClass(T.CommonMethods,{initialize:function(t,e){e||(e={}),this.renderAndResetBound=this.renderAndReset.bind(this),this.requestRenderAllBound=this.requestRenderAll.bind(this),this._initStatic(t,e)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!1,renderOnAddRemove:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:T.iMatrix.concat(),backgroundVpt:!0,overlayVpt:!0,enableRetinaScaling:!0,vptCoords:{},skipOffscreen:!0,clipPath:void 0,_initStatic:function(t,e){var i=this.requestRenderAllBound;this._objects=[],this._createLowerCanvas(t),this._initOptions(e),this.interactive||this._initRetinaScaling(),e.overlayImage&&this.setOverlayImage(e.overlayImage,i),e.backgroundImage&&this.setBackgroundImage(e.backgroundImage,i),e.backgroundColor&&this.setBackgroundColor(e.backgroundColor,i),e.overlayColor&&this.setOverlayColor(e.overlayColor,i),this.calcOffset()},_isRetinaScaling:function(){return T.devicePixelRatio>1&&this.enableRetinaScaling},getRetinaScaling:function(){return this._isRetinaScaling()?Math.max(1,T.devicePixelRatio):1},_initRetinaScaling:function(){if(this._isRetinaScaling()){var t=T.devicePixelRatio;this.__initRetinaScaling(t,this.lowerCanvasEl,this.contextContainer),this.upperCanvasEl&&this.__initRetinaScaling(t,this.upperCanvasEl,this.contextTop)}},__initRetinaScaling:function(t,e,i){e.setAttribute("width",this.width*t),e.setAttribute("height",this.height*t),i.scale(t,t)},calcOffset:function(){return this._offset=e(this.lowerCanvasEl),this},setOverlayImage:function(t,e,i){return this.__setBgOverlayImage("overlayImage",t,e,i)},setBackgroundImage:function(t,e,i){return this.__setBgOverlayImage("backgroundImage",t,e,i)},setOverlayColor:function(t,e){return this.__setBgOverlayColor("overlayColor",t,e)},setBackgroundColor:function(t,e){return this.__setBgOverlayColor("backgroundColor",t,e)},__setBgOverlayImage:function(t,e,i,n){return"string"==typeof e?T.util.loadImage(e,(function(e,r){if(e){var s=new T.Image(e,n);this[t]=s,s.canvas=this}i&&i(e,r)}),this,n&&n.crossOrigin):(n&&e.setOptions(n),this[t]=e,e&&(e.canvas=this),i&&i(e,!1)),this},__setBgOverlayColor:function(t,e,i){return this[t]=e,this._initGradient(e,t),this._initPattern(e,t,i),this},_createCanvasElement:function(){var t=a();if(!t)throw h;if(t.style||(t.style={}),void 0===t.getContext)throw h;return t},_initOptions:function(t){var e=this.lowerCanvasEl;this._setOptions(t),this.width=this.width||parseInt(e.width,10)||0,this.height=this.height||parseInt(e.height,10)||0,this.lowerCanvasEl.style&&(e.width=this.width,e.height=this.height,e.style.width=this.width+"px",e.style.height=this.height+"px",this.viewportTransform=this.viewportTransform.slice())},_createLowerCanvas:function(t){t&&t.getContext?this.lowerCanvasEl=t:this.lowerCanvasEl=T.util.getById(t)||this._createCanvasElement(),T.util.addClass(this.lowerCanvasEl,"lower-canvas"),this._originalCanvasStyle=this.lowerCanvasEl.style,this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(t,e){return this.setDimensions({width:t},e)},setHeight:function(t,e){return this.setDimensions({height:t},e)},setDimensions:function(t,e){var i;for(var n in e=e||{},t)i=t[n],e.cssOnly||(this._setBackstoreDimension(n,t[n]),i+="px",this.hasLostContext=!0),e.backstoreOnly||this._setCssDimension(n,i);return this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(this.contextTop),this._initRetinaScaling(),this.calcOffset(),e.cssOnly||this.requestRenderAll(),this},_setBackstoreDimension:function(t,e){return this.lowerCanvasEl[t]=e,this.upperCanvasEl&&(this.upperCanvasEl[t]=e),this.cacheCanvasEl&&(this.cacheCanvasEl[t]=e),this[t]=e,this},_setCssDimension:function(t,e){return this.lowerCanvasEl.style[t]=e,this.upperCanvasEl&&(this.upperCanvasEl.style[t]=e),this.wrapperEl&&(this.wrapperEl.style[t]=e),this},getZoom:function(){return this.viewportTransform[0]},setViewportTransform:function(t){var e,i,n,r=this._activeObject,s=this.backgroundImage,o=this.overlayImage;for(this.viewportTransform=t,i=0,n=this._objects.length;i\n'),this._setSVGBgOverlayColor(i,"background"),this._setSVGBgOverlayImage(i,"backgroundImage",e),this._setSVGObjects(i,e),this.clipPath&&i.push("\n"),this._setSVGBgOverlayColor(i,"overlay"),this._setSVGBgOverlayImage(i,"overlayImage",e),i.push(""),i.join("")},_setSVGPreamble:function(t,e){e.suppressPreamble||t.push('\n','\n')},_setSVGHeader:function(t,e){var i,r=e.width||this.width,s=e.height||this.height,o='viewBox="0 0 '+this.width+" "+this.height+'" ',a=T.Object.NUM_FRACTION_DIGITS;e.viewBox?o='viewBox="'+e.viewBox.x+" "+e.viewBox.y+" "+e.viewBox.width+" "+e.viewBox.height+'" ':this.svgViewportTransformation&&(i=this.viewportTransform,o='viewBox="'+n(-i[4]/i[0],a)+" "+n(-i[5]/i[3],a)+" "+n(this.width/i[0],a)+" "+n(this.height/i[3],a)+'" '),t.push("\n',"Created with Fabric.js ",T.version,"\n","\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(e),"\n")},createSVGClipPathMarkup:function(t){var e=this.clipPath;return e?(e.clipPathId="CLIPPATH_"+T.Object.__uid++,'\n'+this.clipPath.toClipPathSVG(t.reviver)+"\n"):""},createSVGRefElementsMarkup:function(){var t=this;return["background","overlay"].map((function(e){var i=t[e+"Color"];if(i&&i.toLive){var n=t[e+"Vpt"],r=t.viewportTransform,s={width:t.width/(n?r[0]:1),height:t.height/(n?r[3]:1)};return i.toSVG(s,{additionalTransform:n?T.util.matrixToSVG(r):""})}})).join("")},createSVGFontFacesMarkup:function(){var t,e,i,n,r,s,o,a,h="",l={},c=T.fontPaths,u=[];for(this._objects.forEach((function t(e){u.push(e),e._objects&&e._objects.forEach(t)})),o=0,a=u.length;o',"\n",h,"","\n"].join("")),h},_setSVGObjects:function(t,e){var i,n,r,s=this._objects;for(n=0,r=s.length;n\n")}else t.push('\n")},sendToBack:function(t){if(!t)return this;var e,n,r,s=this._activeObject;if(t===s&&"activeSelection"===t.type)for(e=(r=s._objects).length;e--;)n=r[e],i(this._objects,n),this._objects.unshift(n);else i(this._objects,t),this._objects.unshift(t);return this.renderOnAddRemove&&this.requestRenderAll(),this},bringToFront:function(t){if(!t)return this;var e,n,r,s=this._activeObject;if(t===s&&"activeSelection"===t.type)for(r=s._objects,e=0;e0+l&&(o=s-1,i(this._objects,r),this._objects.splice(o,0,r)),l++;else 0!==(s=this._objects.indexOf(t))&&(o=this._findNewLowerIndex(t,s,e),i(this._objects,t),this._objects.splice(o,0,t));return this.renderOnAddRemove&&this.requestRenderAll(),this},_findNewLowerIndex:function(t,e,i){var n,r;if(i){for(n=e,r=e-1;r>=0;--r)if(t.intersectsWithObject(this._objects[r])||t.isContainedWithinObject(this._objects[r])||this._objects[r].isContainedWithinObject(t)){n=r;break}}else n=e-1;return n},bringForward:function(t,e){if(!t)return this;var n,r,s,o,a,h=this._activeObject,l=0;if(t===h&&"activeSelection"===t.type)for(n=(a=h._objects).length;n--;)r=a[n],(s=this._objects.indexOf(r))"}}),t(T.StaticCanvas.prototype,T.Observable),t(T.StaticCanvas.prototype,T.Collection),t(T.StaticCanvas.prototype,T.DataURLExporter),t(T.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(t){var e=a();if(!e||!e.getContext)return null;var i=e.getContext("2d");return i&&"setLineDash"===t?void 0!==i.setLineDash:null}}),T.StaticCanvas.prototype.toJSON=T.StaticCanvas.prototype.toObject,T.isLikelyNode&&(T.StaticCanvas.prototype.createPNGStream=function(){var t=o(this.lowerCanvasEl);return t&&t.createPNGStream()},T.StaticCanvas.prototype.createJPEGStream=function(t){var e=o(this.lowerCanvasEl);return e&&e.createJPEGStream(t)})}}(),T.BaseBrush=T.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",strokeMiterLimit:10,strokeDashArray:null,limitedToCanvasSize:!1,_setBrushStyles:function(t){t.strokeStyle=this.color,t.lineWidth=this.width,t.lineCap=this.strokeLineCap,t.miterLimit=this.strokeMiterLimit,t.lineJoin=this.strokeLineJoin,t.setLineDash(this.strokeDashArray||[])},_saveAndTransform:function(t){var e=this.canvas.viewportTransform;t.save(),t.transform(e[0],e[1],e[2],e[3],e[4],e[5])},_setShadow:function(){if(this.shadow){var t=this.canvas,e=this.shadow,i=t.contextTop,n=t.getZoom();t&&t._isRetinaScaling()&&(n*=T.devicePixelRatio),i.shadowColor=e.color,i.shadowBlur=e.blur*n,i.shadowOffsetX=e.offsetX*n,i.shadowOffsetY=e.offsetY*n}},needsFullRender:function(){return new T.Color(this.color).getAlpha()<1||!!this.shadow},_resetShadow:function(){var t=this.canvas.contextTop;t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0},_isOutSideCanvas:function(t){return t.x<0||t.x>this.canvas.getWidth()||t.y<0||t.y>this.canvas.getHeight()}}),T.PencilBrush=T.util.createClass(T.BaseBrush,{decimate:.4,drawStraightLine:!1,straightLineKey:"shiftKey",initialize:function(t){this.canvas=t,this._points=[]},needsFullRender:function(){return this.callSuper("needsFullRender")||this._hasStraightLine},_drawSegment:function(t,e,i){var n=e.midPointFrom(i);return t.quadraticCurveTo(e.x,e.y,n.x,n.y),n},onMouseDown:function(t,e){this.canvas._isMainEvent(e.e)&&(this.drawStraightLine=e.e[this.straightLineKey],this._prepareForDrawing(t),this._captureDrawingPath(t),this._render())},onMouseMove:function(t,e){if(this.canvas._isMainEvent(e.e)&&(this.drawStraightLine=e.e[this.straightLineKey],(!0!==this.limitedToCanvasSize||!this._isOutSideCanvas(t))&&this._captureDrawingPath(t)&&this._points.length>1))if(this.needsFullRender())this.canvas.clearContext(this.canvas.contextTop),this._render();else{var i=this._points,n=i.length,r=this.canvas.contextTop;this._saveAndTransform(r),this.oldEnd&&(r.beginPath(),r.moveTo(this.oldEnd.x,this.oldEnd.y)),this.oldEnd=this._drawSegment(r,i[n-2],i[n-1],!0),r.stroke(),r.restore()}},onMouseUp:function(t){return!this.canvas._isMainEvent(t.e)||(this.drawStraightLine=!1,this.oldEnd=void 0,this._finalizeAndAddPath(),!1)},_prepareForDrawing:function(t){var e=new T.Point(t.x,t.y);this._reset(),this._addPoint(e),this.canvas.contextTop.moveTo(e.x,e.y)},_addPoint:function(t){return!(this._points.length>1&&t.eq(this._points[this._points.length-1])||(this.drawStraightLine&&this._points.length>1&&(this._hasStraightLine=!0,this._points.pop()),this._points.push(t),0))},_reset:function(){this._points=[],this._setBrushStyles(this.canvas.contextTop),this._setShadow(),this._hasStraightLine=!1},_captureDrawingPath:function(t){var e=new T.Point(t.x,t.y);return this._addPoint(e)},_render:function(t){var e,i,n=this._points[0],r=this._points[1];if(t=t||this.canvas.contextTop,this._saveAndTransform(t),t.beginPath(),2===this._points.length&&n.x===r.x&&n.y===r.y){var s=this.width/1e3;n=new T.Point(n.x,n.y),r=new T.Point(r.x,r.y),n.x-=s,r.x+=s}for(t.moveTo(n.x,n.y),e=1,i=this._points.length;e=r&&(o=t[i],a.push(o));return a.push(t[s]),a},_finalizeAndAddPath:function(){this.canvas.contextTop.closePath(),this.decimate&&(this._points=this.decimatePoints(this._points,this.decimate));var t=this.convertPointsToSVGPath(this._points);if(this._isEmptySVGPath(t))this.canvas.requestRenderAll();else{var e=this.createPath(t);this.canvas.clearContext(this.canvas.contextTop),this.canvas.fire("before:path:created",{path:e}),this.canvas.add(e),this.canvas.requestRenderAll(),e.setCoords(),this._resetShadow(),this.canvas.fire("path:created",{path:e})}}}),T.CircleBrush=T.util.createClass(T.BaseBrush,{width:10,initialize:function(t){this.canvas=t,this.points=[]},drawDot:function(t){var e=this.addPoint(t),i=this.canvas.contextTop;this._saveAndTransform(i),this.dot(i,e),i.restore()},dot:function(t,e){t.fillStyle=e.fill,t.beginPath(),t.arc(e.x,e.y,e.radius,0,2*Math.PI,!1),t.closePath(),t.fill()},onMouseDown:function(t){this.points.length=0,this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.drawDot(t)},_render:function(){var t,e,i=this.canvas.contextTop,n=this.points;for(this._saveAndTransform(i),t=0,e=n.length;t0&&!this.preserveObjectStacking){e=[],i=[];for(var r=0,s=this._objects.length;r1&&(this._activeObject._objects=i),e.push.apply(e,i)}else e=this._objects;return e},renderAll:function(){!this.contextTopDirty||this._groupSelector||this.isDrawingMode||(this.clearContext(this.contextTop),this.contextTopDirty=!1),this.hasLostContext&&(this.renderTopLayer(this.contextTop),this.hasLostContext=!1);var t=this.contextContainer;return this.renderCanvas(t,this._chooseObjectsToRender()),this},renderTopLayer:function(t){t.save(),this.isDrawingMode&&this._isCurrentlyDrawing&&(this.freeDrawingBrush&&this.freeDrawingBrush._render(),this.contextTopDirty=!0),this.selection&&this._groupSelector&&(this._drawSelection(t),this.contextTopDirty=!0),t.restore()},renderTop:function(){var t=this.contextTop;return this.clearContext(t),this.renderTopLayer(t),this.fire("after:render"),this},_normalizePointer:function(t,e){var i=t.calcTransformMatrix(),n=T.util.invertTransform(i),r=this.restorePointerVpt(e);return T.util.transformPoint(r,n)},isTargetTransparent:function(t,e,i){if(t.shouldCache()&&t._cacheCanvas&&t!==this._activeObject){var n=this._normalizePointer(t,{x:e,y:i}),r=Math.max(t.cacheTranslationX+n.x*t.zoomX,0),s=Math.max(t.cacheTranslationY+n.y*t.zoomY,0);return T.util.isTransparent(t._cacheContext,Math.round(r),Math.round(s),this.targetFindTolerance)}var o=this.contextCache,a=t.selectionBackgroundColor,h=this.viewportTransform;return t.selectionBackgroundColor="",this.clearContext(o),o.save(),o.transform(h[0],h[1],h[2],h[3],h[4],h[5]),t.render(o),o.restore(),t.selectionBackgroundColor=a,T.util.isTransparent(o,e,i,this.targetFindTolerance)},_isSelectionKeyPressed:function(t){return Array.isArray(this.selectionKey)?!!this.selectionKey.find((function(e){return!0===t[e]})):t[this.selectionKey]},_shouldClearSelection:function(t,e){var i=this.getActiveObjects(),n=this._activeObject;return!e||e&&n&&i.length>1&&-1===i.indexOf(e)&&n!==e&&!this._isSelectionKeyPressed(t)||e&&!e.evented||e&&!e.selectable&&n&&n!==e},_shouldCenterTransform:function(t,e,i){var n;if(t)return"scale"===e||"scaleX"===e||"scaleY"===e||"resizing"===e?n=this.centeredScaling||t.centeredScaling:"rotate"===e&&(n=this.centeredRotation||t.centeredRotation),n?!i:i},_getOriginFromCorner:function(t,e){var i={x:t.originX,y:t.originY};return"ml"===e||"tl"===e||"bl"===e?i.x="right":"mr"!==e&&"tr"!==e&&"br"!==e||(i.x="left"),"tl"===e||"mt"===e||"tr"===e?i.y="bottom":"bl"!==e&&"mb"!==e&&"br"!==e||(i.y="top"),i},_getActionFromCorner:function(t,e,i,n){if(!e||!t)return"drag";var r=n.controls[e];return r.getActionName(i,r,n)},_setupCurrentTransform:function(t,i,n){if(i){var r=this.getPointer(t),s=i.__corner,o=i.controls[s],a=n&&s?o.getActionHandler(t,i,o):T.controlsUtils.dragHandler,h=this._getActionFromCorner(n,s,t,i),l=this._getOriginFromCorner(i,s),c=t[this.centeredKey],u={target:i,action:h,actionHandler:a,corner:s,scaleX:i.scaleX,scaleY:i.scaleY,skewX:i.skewX,skewY:i.skewY,offsetX:r.x-i.left,offsetY:r.y-i.top,originX:l.x,originY:l.y,ex:r.x,ey:r.y,lastX:r.x,lastY:r.y,theta:e(i.angle),width:i.width*i.scaleX,shiftKey:t.shiftKey,altKey:c,original:T.util.saveObjectTransform(i)};this._shouldCenterTransform(i,h,c)&&(u.originX="center",u.originY="center"),u.original.originX=l.x,u.original.originY=l.y,this._currentTransform=u,this._beforeTransform(t)}},setCursor:function(t){this.upperCanvasEl.style.cursor=t},_drawSelection:function(t){var e=this._groupSelector,i=new T.Point(e.ex,e.ey),n=T.util.transformPoint(i,this.viewportTransform),r=new T.Point(e.ex+e.left,e.ey+e.top),s=T.util.transformPoint(r,this.viewportTransform),o=Math.min(n.x,s.x),a=Math.min(n.y,s.y),h=Math.max(n.x,s.x),l=Math.max(n.y,s.y),c=this.selectionLineWidth/2;this.selectionColor&&(t.fillStyle=this.selectionColor,t.fillRect(o,a,h-o,l-a)),this.selectionLineWidth&&this.selectionBorderColor&&(t.lineWidth=this.selectionLineWidth,t.strokeStyle=this.selectionBorderColor,o+=c,a+=c,h-=c,l-=c,T.Object.prototype._setLineDash.call(this,t,this.selectionDashArray),t.strokeRect(o,a,h-o,l-a))},findTarget:function(t,e){if(!this.skipTargetFind){var n,r,s=this.getPointer(t,!0),o=this._activeObject,a=this.getActiveObjects(),h=i(t),l=a.length>1&&!e||1===a.length;if(this.targets=[],l&&o._findTargetCorner(s,h))return o;if(a.length>1&&!e&&o===this._searchPossibleTargets([o],s))return o;if(1===a.length&&o===this._searchPossibleTargets([o],s)){if(!this.preserveObjectStacking)return o;n=o,r=this.targets,this.targets=[]}var c=this._searchPossibleTargets(this._objects,s);return t[this.altSelectionKey]&&c&&n&&c!==n&&(c=n,this.targets=r),c}},_checkTarget:function(t,e,i){if(e&&e.visible&&e.evented&&e.containsPoint(t)){if(!this.perPixelTargetFind&&!e.perPixelTargetFind||e.isEditing)return!0;if(!this.isTargetTransparent(e,i.x,i.y))return!0}},_searchPossibleTargets:function(t,e){for(var i,n,r=t.length;r--;){var s=t[r],o=s.group?this._normalizePointer(s.group,e):e;if(this._checkTarget(o,s,e)){(i=t[r]).subTargetCheck&&i instanceof T.Group&&(n=this._searchPossibleTargets(i._objects,e))&&this.targets.push(n);break}}return i},restorePointerVpt:function(t){return T.util.transformPoint(t,T.util.invertTransform(this.viewportTransform))},getPointer:function(e,i){if(this._absolutePointer&&!i)return this._absolutePointer;if(this._pointer&&i)return this._pointer;var n,r=t(e),s=this.upperCanvasEl,o=s.getBoundingClientRect(),a=o.width||0,h=o.height||0;a&&h||("top"in o&&"bottom"in o&&(h=Math.abs(o.top-o.bottom)),"right"in o&&"left"in o&&(a=Math.abs(o.right-o.left))),this.calcOffset(),r.x=r.x-this._offset.left,r.y=r.y-this._offset.top,i||(r=this.restorePointerVpt(r));var l=this.getRetinaScaling();return 1!==l&&(r.x/=l,r.y/=l),n=0===a||0===h?{width:1,height:1}:{width:s.width/a,height:s.height/h},{x:r.x*n.width,y:r.y*n.height}},_createUpperCanvas:function(){var t=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,""),e=this.lowerCanvasEl,i=this.upperCanvasEl;i?i.className="":(i=this._createCanvasElement(),this.upperCanvasEl=i),T.util.addClass(i,"upper-canvas "+t),this.wrapperEl.appendChild(i),this._copyCanvasStyle(e,i),this._applyCanvasStyle(i),this.contextTop=i.getContext("2d")},getTopContext:function(){return this.contextTop},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement(),this.cacheCanvasEl.setAttribute("width",this.width),this.cacheCanvasEl.setAttribute("height",this.height),this.contextCache=this.cacheCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=T.util.wrapElement(this.lowerCanvasEl,"div",{class:this.containerClass}),T.util.setStyle(this.wrapperEl,{width:this.width+"px",height:this.height+"px",position:"relative"}),T.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(t){var e=this.width||t.width,i=this.height||t.height;T.util.setStyle(t,{position:"absolute",width:e+"px",height:i+"px",left:0,top:0,"touch-action":this.allowTouchScrolling?"manipulation":"none","-ms-touch-action":this.allowTouchScrolling?"manipulation":"none"}),t.width=e,t.height=i,T.util.makeElementUnselectable(t)},_copyCanvasStyle:function(t,e){e.style.cssText=t.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},getActiveObject:function(){return this._activeObject},getActiveObjects:function(){var t=this._activeObject;return t?"activeSelection"===t.type&&t._objects?t._objects.slice(0):[t]:[]},_onObjectRemoved:function(t){t===this._activeObject&&(this.fire("before:selection:cleared",{target:t}),this._discardActiveObject(),this.fire("selection:cleared",{target:t}),t.fire("deselected")),t===this._hoveredTarget&&(this._hoveredTarget=null,this._hoveredTargets=[]),this.callSuper("_onObjectRemoved",t)},_fireSelectionEvents:function(t,e){var i=!1,n=this.getActiveObjects(),r=[],s=[];t.forEach((function(t){-1===n.indexOf(t)&&(i=!0,t.fire("deselected",{e:e,target:t}),s.push(t))})),n.forEach((function(n){-1===t.indexOf(n)&&(i=!0,n.fire("selected",{e:e,target:n}),r.push(n))})),t.length>0&&n.length>0?i&&this.fire("selection:updated",{e:e,selected:r,deselected:s}):n.length>0?this.fire("selection:created",{e:e,selected:r}):t.length>0&&this.fire("selection:cleared",{e:e,deselected:s})},setActiveObject:function(t,e){var i=this.getActiveObjects();return this._setActiveObject(t,e),this._fireSelectionEvents(i,e),this},_setActiveObject:function(t,e){return this._activeObject!==t&&!!this._discardActiveObject(e,t)&&!t.onSelect({e:e})&&(this._activeObject=t,!0)},_discardActiveObject:function(t,e){var i=this._activeObject;if(i){if(i.onDeselect({e:t,object:e}))return!1;this._activeObject=null}return!0},discardActiveObject:function(t){var e=this.getActiveObjects(),i=this.getActiveObject();return e.length&&this.fire("before:selection:cleared",{target:i,e:t}),this._discardActiveObject(t),this._fireSelectionEvents(e,t),this},dispose:function(){var t=this.wrapperEl;return this.removeListeners(),t.removeChild(this.upperCanvasEl),t.removeChild(this.lowerCanvasEl),this.contextCache=null,this.contextTop=null,["upperCanvasEl","cacheCanvasEl"].forEach(function(t){T.util.cleanUpJsdomNode(this[t]),this[t]=void 0}.bind(this)),t.parentNode&&t.parentNode.replaceChild(this.lowerCanvasEl,this.wrapperEl),delete this.wrapperEl,T.StaticCanvas.prototype.dispose.call(this),this},clear:function(){return this.discardActiveObject(),this.clearContext(this.contextTop),this.callSuper("clear")},drawControls:function(t){var e=this._activeObject;e&&e._renderControls(t)},_toObject:function(t,e,i){var n=this._realizeGroupTransformOnObject(t),r=this.callSuper("_toObject",t,e,i);return this._unwindGroupTransformOnObject(t,n),r},_realizeGroupTransformOnObject:function(t){if(t.group&&"activeSelection"===t.group.type&&this._activeObject===t.group){var e={};return["angle","flipX","flipY","left","scaleX","scaleY","skewX","skewY","top"].forEach((function(i){e[i]=t[i]})),T.util.addTransformToObject(t,this._activeObject.calcOwnMatrix()),e}return null},_unwindGroupTransformOnObject:function(t,e){e&&t.set(e)},_setSVGObject:function(t,e,i){var n=this._realizeGroupTransformOnObject(e);this.callSuper("_setSVGObject",t,e,i),this._unwindGroupTransformOnObject(e,n)},setViewportTransform:function(t){this.renderOnAddRemove&&this._activeObject&&this._activeObject.isEditing&&this._activeObject.clearContextTop(),T.StaticCanvas.prototype.setViewportTransform.call(this,t)}}),T.StaticCanvas)"prototype"!==n&&(T.Canvas[n]=T.StaticCanvas[n])}(),function(){var t=T.util.addListener,e=T.util.removeListener,i={passive:!1};function n(t,e){return t.button&&t.button===e-1}T.util.object.extend(T.Canvas.prototype,{mainTouchId:null,_initEventListeners:function(){this.removeListeners(),this._bindEvents(),this.addOrRemove(t,"add")},_getEventPrefix:function(){return this.enablePointerEvents?"pointer":"mouse"},addOrRemove:function(t,e){var n=this.upperCanvasEl,r=this._getEventPrefix();t(T.window,"resize",this._onResize),t(n,r+"down",this._onMouseDown),t(n,r+"move",this._onMouseMove,i),t(n,r+"out",this._onMouseOut),t(n,r+"enter",this._onMouseEnter),t(n,"wheel",this._onMouseWheel),t(n,"contextmenu",this._onContextMenu),t(n,"dblclick",this._onDoubleClick),t(n,"dragover",this._onDragOver),t(n,"dragenter",this._onDragEnter),t(n,"dragleave",this._onDragLeave),t(n,"drop",this._onDrop),this.enablePointerEvents||t(n,"touchstart",this._onTouchStart,i),"undefined"!=typeof eventjs&&e in eventjs&&(eventjs[e](n,"gesture",this._onGesture),eventjs[e](n,"drag",this._onDrag),eventjs[e](n,"orientation",this._onOrientationChange),eventjs[e](n,"shake",this._onShake),eventjs[e](n,"longpress",this._onLongPress))},removeListeners:function(){this.addOrRemove(e,"remove");var t=this._getEventPrefix();e(T.document,t+"up",this._onMouseUp),e(T.document,"touchend",this._onTouchEnd,i),e(T.document,t+"move",this._onMouseMove,i),e(T.document,"touchmove",this._onMouseMove,i)},_bindEvents:function(){this.eventsBound||(this._onMouseDown=this._onMouseDown.bind(this),this._onTouchStart=this._onTouchStart.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this._onTouchEnd=this._onTouchEnd.bind(this),this._onResize=this._onResize.bind(this),this._onGesture=this._onGesture.bind(this),this._onDrag=this._onDrag.bind(this),this._onShake=this._onShake.bind(this),this._onLongPress=this._onLongPress.bind(this),this._onOrientationChange=this._onOrientationChange.bind(this),this._onMouseWheel=this._onMouseWheel.bind(this),this._onMouseOut=this._onMouseOut.bind(this),this._onMouseEnter=this._onMouseEnter.bind(this),this._onContextMenu=this._onContextMenu.bind(this),this._onDoubleClick=this._onDoubleClick.bind(this),this._onDragOver=this._onDragOver.bind(this),this._onDragEnter=this._simpleEventHandler.bind(this,"dragenter"),this._onDragLeave=this._simpleEventHandler.bind(this,"dragleave"),this._onDrop=this._onDrop.bind(this),this.eventsBound=!0)},_onGesture:function(t,e){this.__onTransformGesture&&this.__onTransformGesture(t,e)},_onDrag:function(t,e){this.__onDrag&&this.__onDrag(t,e)},_onMouseWheel:function(t){this.__onMouseWheel(t)},_onMouseOut:function(t){var e=this._hoveredTarget;this.fire("mouse:out",{target:e,e:t}),this._hoveredTarget=null,e&&e.fire("mouseout",{e:t});var i=this;this._hoveredTargets.forEach((function(n){i.fire("mouse:out",{target:e,e:t}),n&&e.fire("mouseout",{e:t})})),this._hoveredTargets=[],this._iTextInstances&&this._iTextInstances.forEach((function(t){t.isEditing&&t.hiddenTextarea.focus()}))},_onMouseEnter:function(t){this._currentTransform||this.findTarget(t)||(this.fire("mouse:over",{target:null,e:t}),this._hoveredTarget=null,this._hoveredTargets=[])},_onOrientationChange:function(t,e){this.__onOrientationChange&&this.__onOrientationChange(t,e)},_onShake:function(t,e){this.__onShake&&this.__onShake(t,e)},_onLongPress:function(t,e){this.__onLongPress&&this.__onLongPress(t,e)},_onDragOver:function(t){t.preventDefault();var e=this._simpleEventHandler("dragover",t);this._fireEnterLeaveEvents(e,t)},_onDrop:function(t){return this._simpleEventHandler("drop:before",t),this._simpleEventHandler("drop",t)},_onContextMenu:function(t){return this.stopContextMenu&&(t.stopPropagation(),t.preventDefault()),!1},_onDoubleClick:function(t){this._cacheTransformEventData(t),this._handleEvent(t,"dblclick"),this._resetTransformEventData(t)},getPointerId:function(t){var e=t.changedTouches;return e?e[0]&&e[0].identifier:this.enablePointerEvents?t.pointerId:-1},_isMainEvent:function(t){return!0===t.isPrimary||!1!==t.isPrimary&&("touchend"===t.type&&0===t.touches.length||!t.changedTouches||t.changedTouches[0].identifier===this.mainTouchId)},_onTouchStart:function(n){n.preventDefault(),null===this.mainTouchId&&(this.mainTouchId=this.getPointerId(n)),this.__onMouseDown(n),this._resetTransformEventData();var r=this.upperCanvasEl,s=this._getEventPrefix();t(T.document,"touchend",this._onTouchEnd,i),t(T.document,"touchmove",this._onMouseMove,i),e(r,s+"down",this._onMouseDown)},_onMouseDown:function(n){this.__onMouseDown(n),this._resetTransformEventData();var r=this.upperCanvasEl,s=this._getEventPrefix();e(r,s+"move",this._onMouseMove,i),t(T.document,s+"up",this._onMouseUp),t(T.document,s+"move",this._onMouseMove,i)},_onTouchEnd:function(n){if(!(n.touches.length>0)){this.__onMouseUp(n),this._resetTransformEventData(),this.mainTouchId=null;var r=this._getEventPrefix();e(T.document,"touchend",this._onTouchEnd,i),e(T.document,"touchmove",this._onMouseMove,i);var s=this;this._willAddMouseDown&&clearTimeout(this._willAddMouseDown),this._willAddMouseDown=setTimeout((function(){t(s.upperCanvasEl,r+"down",s._onMouseDown),s._willAddMouseDown=0}),400)}},_onMouseUp:function(n){this.__onMouseUp(n),this._resetTransformEventData();var r=this.upperCanvasEl,s=this._getEventPrefix();this._isMainEvent(n)&&(e(T.document,s+"up",this._onMouseUp),e(T.document,s+"move",this._onMouseMove,i),t(r,s+"move",this._onMouseMove,i))},_onMouseMove:function(t){!this.allowTouchScrolling&&t.preventDefault&&t.preventDefault(),this.__onMouseMove(t)},_onResize:function(){this.calcOffset()},_shouldRender:function(t){var e=this._activeObject;return!!(!!e!=!!t||e&&t&&e!==t)||(e&&e.isEditing,!1)},__onMouseUp:function(t){var e,i=this._currentTransform,r=this._groupSelector,s=!1,o=!r||0===r.left&&0===r.top;if(this._cacheTransformEventData(t),e=this._target,this._handleEvent(t,"up:before"),n(t,3))this.fireRightClick&&this._handleEvent(t,"up",3,o);else{if(n(t,2))return this.fireMiddleClick&&this._handleEvent(t,"up",2,o),void this._resetTransformEventData();if(this.isDrawingMode&&this._isCurrentlyDrawing)this._onMouseUpInDrawingMode(t);else if(this._isMainEvent(t)){if(i&&(this._finalizeCurrentTransform(t),s=i.actionPerformed),!o){var a=e===this._activeObject;this._maybeGroupObjects(t),s||(s=this._shouldRender(e)||!a&&e===this._activeObject)}var h,l;if(e){if(h=e._findTargetCorner(this.getPointer(t,!0),T.util.isTouchEvent(t)),e.selectable&&e!==this._activeObject&&"up"===e.activeOn)this.setActiveObject(e,t),s=!0;else{var c=e.controls[h],u=c&&c.getMouseUpHandler(t,e,c);u&&u(t,i,(l=this.getPointer(t)).x,l.y)}e.isMoving=!1}if(i&&(i.target!==e||i.corner!==h)){var d=i.target&&i.target.controls[i.corner],f=d&&d.getMouseUpHandler(t,e,c);l=l||this.getPointer(t),f&&f(t,i,l.x,l.y)}this._setCursorFromEvent(t,e),this._handleEvent(t,"up",1,o),this._groupSelector=null,this._currentTransform=null,e&&(e.__corner=0),s?this.requestRenderAll():o||this.renderTop()}}},_simpleEventHandler:function(t,e){var i=this.findTarget(e),n=this.targets,r={e:e,target:i,subTargets:n};if(this.fire(t,r),i&&i.fire(t,r),!n)return i;for(var s=0;s1&&(e=new T.ActiveSelection(i.reverse(),{canvas:this}),this.setActiveObject(e,t))},_collectObjects:function(t){for(var e,i=[],n=this._groupSelector.ex,r=this._groupSelector.ey,s=n+this._groupSelector.left,o=r+this._groupSelector.top,a=new T.Point(v(n,s),v(r,o)),h=new T.Point(y(n,s),y(r,o)),l=!this.selectionFullyContained,c=n===s&&r===o,u=this._objects.length;u--&&!((e=this._objects[u])&&e.selectable&&e.visible&&(l&&e.intersectsWithRect(a,h,!0)||e.isContainedWithinRect(a,h,!0)||l&&e.containsPoint(a,null,!0)||l&&e.containsPoint(h,null,!0))&&(i.push(e),c)););return i.length>1&&(i=i.filter((function(e){return!e.onSelect({e:t})}))),i},_maybeGroupObjects:function(t){this.selection&&this._groupSelector&&this._groupSelectedObjects(t),this.setCursor(this.defaultCursor),this._groupSelector=null}}),T.util.object.extend(T.StaticCanvas.prototype,{toDataURL:function(t){t||(t={});var e=t.format||"png",i=t.quality||1,n=(t.multiplier||1)*(t.enableRetinaScaling?this.getRetinaScaling():1),r=this.toCanvasElement(n,t);return T.util.toDataURL(r,e,i)},toCanvasElement:function(t,e){t=t||1;var i=((e=e||{}).width||this.width)*t,n=(e.height||this.height)*t,r=this.getZoom(),s=this.width,o=this.height,a=r*t,h=this.viewportTransform,l=(h[4]-(e.left||0))*t,c=(h[5]-(e.top||0))*t,u=this.interactive,d=[a,0,0,a,l,c],f=this.enableRetinaScaling,g=T.util.createCanvasElement(),m=this.contextTop;return g.width=i,g.height=n,this.contextTop=null,this.enableRetinaScaling=!1,this.interactive=!1,this.viewportTransform=d,this.width=i,this.height=n,this.calcViewportBoundaries(),this.renderCanvas(g.getContext("2d"),this._objects),this.viewportTransform=h,this.width=s,this.height=o,this.calcViewportBoundaries(),this.interactive=u,this.enableRetinaScaling=f,this.contextTop=m,g}}),T.util.object.extend(T.StaticCanvas.prototype,{loadFromJSON:function(t,e,i){if(t){var n="string"==typeof t?JSON.parse(t):T.util.object.clone(t),r=this,s=n.clipPath,o=this.renderOnAddRemove;return this.renderOnAddRemove=!1,delete n.clipPath,this._enlivenObjects(n.objects,(function(t){r.clear(),r._setBgOverlay(n,(function(){s?r._enlivenObjects([s],(function(i){r.clipPath=i[0],r.__setupCanvas.call(r,n,t,o,e)})):r.__setupCanvas.call(r,n,t,o,e)}))}),i),this}},__setupCanvas:function(t,e,i,n){var r=this;e.forEach((function(t,e){r.insertAt(t,e)})),this.renderOnAddRemove=i,delete t.objects,delete t.backgroundImage,delete t.overlayImage,delete t.background,delete t.overlay,this._setOptions(t),this.renderAll(),n&&n()},_setBgOverlay:function(t,e){var i={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(t.backgroundImage||t.overlayImage||t.background||t.overlay){var n=function(){i.backgroundImage&&i.overlayImage&&i.backgroundColor&&i.overlayColor&&e&&e()};this.__setBgOverlay("backgroundImage",t.backgroundImage,i,n),this.__setBgOverlay("overlayImage",t.overlayImage,i,n),this.__setBgOverlay("backgroundColor",t.background,i,n),this.__setBgOverlay("overlayColor",t.overlay,i,n)}else e&&e()},__setBgOverlay:function(t,e,i,n){var r=this;if(!e)return i[t]=!0,void(n&&n());"backgroundImage"===t||"overlayImage"===t?T.util.enlivenObjects([e],(function(e){r[t]=e[0],i[t]=!0,n&&n()})):this["set"+T.util.string.capitalize(t,!0)](e,(function(){i[t]=!0,n&&n()}))},_enlivenObjects:function(t,e,i){t&&0!==t.length?T.util.enlivenObjects(t,(function(t){e&&e(t)}),null,i):e&&e([])},_toDataURL:function(t,e){this.clone((function(i){e(i.toDataURL(t))}))},_toDataURLWithMultiplier:function(t,e,i){this.clone((function(n){i(n.toDataURLWithMultiplier(t,e))}))},clone:function(t,e){var i=JSON.stringify(this.toJSON(e));this.cloneWithoutData((function(e){e.loadFromJSON(i,(function(){t&&t(e)}))}))},cloneWithoutData:function(t){var e=T.util.createCanvasElement();e.width=this.width,e.height=this.height;var i=new T.Canvas(e);this.backgroundImage?(i.setBackgroundImage(this.backgroundImage.src,(function(){i.renderAll(),t&&t(i)})),i.backgroundImageOpacity=this.backgroundImageOpacity,i.backgroundImageStretch=this.backgroundImageStretch):t&&t(i)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,n=e.util.object.clone,r=e.util.toFixed,s=e.util.string.capitalize,o=e.util.degreesToRadians,a=!e.isLikelyNode;e.Object||(e.Object=e.util.createClass(e.CommonMethods,{type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,skewX:0,skewY:0,cornerSize:13,touchCornerSize:24,transparentCorners:!0,hoverCursor:null,moveCursor:null,padding:0,borderColor:"rgb(178,204,255)",borderDashArray:null,cornerColor:"rgb(178,204,255)",cornerStrokeColor:null,cornerStyle:"rect",cornerDashArray:null,centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"nonzero",globalCompositeOperation:"source-over",backgroundColor:"",selectionBackgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeDashOffset:0,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:4,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,minScaleLimit:0,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,perPixelTargetFind:!1,includeDefaultValues:!0,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,excludeFromExport:!1,objectCaching:a,statefullCache:!1,noScaleCache:!0,strokeUniform:!1,dirty:!0,__corner:0,paintFirst:"fill",activeOn:"down",stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit angle opacity fill globalCompositeOperation shadow visible backgroundColor skewX skewY fillRule paintFirst clipPath strokeUniform".split(" "),cacheProperties:"fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath".split(" "),colorProperties:"fill stroke backgroundColor".split(" "),clipPath:void 0,inverted:!1,absolutePositioned:!1,initialize:function(t){t&&this.setOptions(t)},_createCacheCanvas:function(){this._cacheProperties={},this._cacheCanvas=e.util.createCanvasElement(),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas(),this.dirty=!0},_limitCacheSize:function(t){var i=e.perfLimitSizeTotal,n=t.width,r=t.height,s=e.maxCacheSideLimit,o=e.minCacheSideLimit;if(n<=s&&r<=s&&n*r<=i)return nc&&(t.zoomX/=n/c,t.width=c,t.capped=!0),r>u&&(t.zoomY/=r/u,t.height=u,t.capped=!0),t},_getCacheCanvasDimensions:function(){var t=this.getTotalObjectScaling(),e=this._getTransformedDimensions(0,0),i=e.x*t.scaleX/this.scaleX,n=e.y*t.scaleY/this.scaleY;return{width:i+2,height:n+2,zoomX:t.scaleX,zoomY:t.scaleY,x:i,y:n}},_updateCacheCanvas:function(){var t=this.canvas;if(this.noScaleCache&&t&&t._currentTransform){var i=t._currentTransform.target,n=t._currentTransform.action;if(this===i&&n.slice&&"scale"===n.slice(0,5))return!1}var r,s,o=this._cacheCanvas,a=this._limitCacheSize(this._getCacheCanvasDimensions()),h=e.minCacheSideLimit,l=a.width,c=a.height,u=a.zoomX,d=a.zoomY,f=l!==this.cacheWidth||c!==this.cacheHeight,g=this.zoomX!==u||this.zoomY!==d,m=f||g,p=0,_=0,v=!1;if(f){var y=this._cacheCanvas.width,w=this._cacheCanvas.height,C=l>y||c>w;v=C||(l<.9*y||c<.9*w)&&y>h&&w>h,C&&!a.capped&&(l>h||c>h)&&(p=.1*l,_=.1*c)}return this instanceof e.Text&&this.path&&(m=!0,v=!0,p+=this.getHeightOfLine(0)*this.zoomX,_+=this.getHeightOfLine(0)*this.zoomY),!!m&&(v?(o.width=Math.ceil(l+p),o.height=Math.ceil(c+_)):(this._cacheContext.setTransform(1,0,0,1,0,0),this._cacheContext.clearRect(0,0,o.width,o.height)),r=a.x/2,s=a.y/2,this.cacheTranslationX=Math.round(o.width/2-r)+r,this.cacheTranslationY=Math.round(o.height/2-s)+s,this.cacheWidth=l,this.cacheHeight=c,this._cacheContext.translate(this.cacheTranslationX,this.cacheTranslationY),this._cacheContext.scale(u,d),this.zoomX=u,this.zoomY=d,!0)},setOptions:function(t){this._setOptions(t),this._initGradient(t.fill,"fill"),this._initGradient(t.stroke,"stroke"),this._initPattern(t.fill,"fill"),this._initPattern(t.stroke,"stroke")},transform:function(t){var e=this.group&&!this.group._transformDone||this.group&&this.canvas&&t===this.canvas.contextTop,i=this.calcTransformMatrix(!e);t.transform(i[0],i[1],i[2],i[3],i[4],i[5])},toObject:function(t){var i=e.Object.NUM_FRACTION_DIGITS,n={type:this.type,version:e.version,originX:this.originX,originY:this.originY,left:r(this.left,i),top:r(this.top,i),width:r(this.width,i),height:r(this.height,i),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:r(this.strokeWidth,i),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeDashOffset:this.strokeDashOffset,strokeLineJoin:this.strokeLineJoin,strokeUniform:this.strokeUniform,strokeMiterLimit:r(this.strokeMiterLimit,i),scaleX:r(this.scaleX,i),scaleY:r(this.scaleY,i),angle:r(this.angle,i),flipX:this.flipX,flipY:this.flipY,opacity:r(this.opacity,i),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,backgroundColor:this.backgroundColor,fillRule:this.fillRule,paintFirst:this.paintFirst,globalCompositeOperation:this.globalCompositeOperation,skewX:r(this.skewX,i),skewY:r(this.skewY,i)};return this.clipPath&&!this.clipPath.excludeFromExport&&(n.clipPath=this.clipPath.toObject(t),n.clipPath.inverted=this.clipPath.inverted,n.clipPath.absolutePositioned=this.clipPath.absolutePositioned),e.util.populateWithProperties(this,n,t),this.includeDefaultValues||(n=this._removeDefaultValues(n)),n},toDatalessObject:function(t){return this.toObject(t)},_removeDefaultValues:function(t){var i=e.util.getKlass(t.type).prototype;return i.stateProperties.forEach((function(e){"left"!==e&&"top"!==e&&(t[e]===i[e]&&delete t[e],Array.isArray(t[e])&&Array.isArray(i[e])&&0===t[e].length&&0===i[e].length&&delete t[e])})),t},toString:function(){return"#"},getObjectScaling:function(){if(!this.group)return{scaleX:this.scaleX,scaleY:this.scaleY};var t=e.util.qrDecompose(this.calcTransformMatrix());return{scaleX:Math.abs(t.scaleX),scaleY:Math.abs(t.scaleY)}},getTotalObjectScaling:function(){var t=this.getObjectScaling(),e=t.scaleX,i=t.scaleY;if(this.canvas){var n=this.canvas.getZoom(),r=this.canvas.getRetinaScaling();e*=n*r,i*=n*r}return{scaleX:e,scaleY:i}},getObjectOpacity:function(){var t=this.opacity;return this.group&&(t*=this.group.getObjectOpacity()),t},_set:function(t,i){var n="scaleX"===t||"scaleY"===t,r=this[t]!==i,s=!1;return n&&(i=this._constrainScale(i)),"scaleX"===t&&i<0?(this.flipX=!this.flipX,i*=-1):"scaleY"===t&&i<0?(this.flipY=!this.flipY,i*=-1):"shadow"!==t||!i||i instanceof e.Shadow?"dirty"===t&&this.group&&this.group.set("dirty",i):i=new e.Shadow(i),this[t]=i,r&&(s=this.group&&this.group.isOnACache(),this.cacheProperties.indexOf(t)>-1?(this.dirty=!0,s&&this.group.set("dirty",!0)):s&&this.stateProperties.indexOf(t)>-1&&this.group.set("dirty",!0)),this},setOnGroup:function(){},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:e.iMatrix.concat()},isNotVisible:function(){return 0===this.opacity||!this.width&&!this.height&&0===this.strokeWidth||!this.visible},render:function(t){this.isNotVisible()||this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(t.save(),this._setupCompositeOperation(t),this.drawSelectionBackground(t),this.transform(t),this._setOpacity(t),this._setShadow(t,this),this.shouldCache()?(this.renderCache(),this.drawCacheOnCanvas(t)):(this._removeCacheCanvas(),this.dirty=!1,this.drawObject(t),this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})),t.restore())},renderCache:function(t){t=t||{},this._cacheCanvas&&this._cacheContext||this._createCacheCanvas(),this.isCacheDirty()&&(this.statefullCache&&this.saveState({propertySet:"cacheProperties"}),this.drawObject(this._cacheContext,t.forClipping),this.dirty=!1)},_removeCacheCanvas:function(){this._cacheCanvas=null,this._cacheContext=null,this.cacheWidth=0,this.cacheHeight=0},hasStroke:function(){return this.stroke&&"transparent"!==this.stroke&&0!==this.strokeWidth},hasFill:function(){return this.fill&&"transparent"!==this.fill},needsItsOwnCache:function(){return!("stroke"!==this.paintFirst||!this.hasFill()||!this.hasStroke()||"object"!=typeof this.shadow)||!!this.clipPath},shouldCache:function(){return this.ownCaching=this.needsItsOwnCache()||this.objectCaching&&(!this.group||!this.group.isOnACache()),this.ownCaching},willDrawShadow:function(){return!!this.shadow&&(0!==this.shadow.offsetX||0!==this.shadow.offsetY)},drawClipPathOnCache:function(t,i){if(t.save(),i.inverted?t.globalCompositeOperation="destination-out":t.globalCompositeOperation="destination-in",i.absolutePositioned){var n=e.util.invertTransform(this.calcTransformMatrix());t.transform(n[0],n[1],n[2],n[3],n[4],n[5])}i.transform(t),t.scale(1/i.zoomX,1/i.zoomY),t.drawImage(i._cacheCanvas,-i.cacheTranslationX,-i.cacheTranslationY),t.restore()},drawObject:function(t,e){var i=this.fill,n=this.stroke;e?(this.fill="black",this.stroke="",this._setClippingProperties(t)):this._renderBackground(t),this._render(t),this._drawClipPath(t,this.clipPath),this.fill=i,this.stroke=n},_drawClipPath:function(t,e){e&&(e.canvas=this.canvas,e.shouldCache(),e._transformDone=!0,e.renderCache({forClipping:!0}),this.drawClipPathOnCache(t,e))},drawCacheOnCanvas:function(t){t.scale(1/this.zoomX,1/this.zoomY),t.drawImage(this._cacheCanvas,-this.cacheTranslationX,-this.cacheTranslationY)},isCacheDirty:function(t){if(this.isNotVisible())return!1;if(this._cacheCanvas&&this._cacheContext&&!t&&this._updateCacheCanvas())return!0;if(this.dirty||this.clipPath&&this.clipPath.absolutePositioned||this.statefullCache&&this.hasStateChanged("cacheProperties")){if(this._cacheCanvas&&this._cacheContext&&!t){var e=this.cacheWidth/this.zoomX,i=this.cacheHeight/this.zoomY;this._cacheContext.clearRect(-e/2,-i/2,e,i)}return!0}return!1},_renderBackground:function(t){if(this.backgroundColor){var e=this._getNonTransformedDimensions();t.fillStyle=this.backgroundColor,t.fillRect(-e.x/2,-e.y/2,e.x,e.y),this._removeShadow(t)}},_setOpacity:function(t){this.group&&!this.group._transformDone?t.globalAlpha=this.getObjectOpacity():t.globalAlpha*=this.opacity},_setStrokeStyles:function(t,e){var i=e.stroke;i&&(t.lineWidth=e.strokeWidth,t.lineCap=e.strokeLineCap,t.lineDashOffset=e.strokeDashOffset,t.lineJoin=e.strokeLineJoin,t.miterLimit=e.strokeMiterLimit,i.toLive?"percentage"===i.gradientUnits||i.gradientTransform||i.patternTransform?this._applyPatternForTransformedGradient(t,i):(t.strokeStyle=i.toLive(t,this),this._applyPatternGradientTransform(t,i)):t.strokeStyle=e.stroke)},_setFillStyles:function(t,e){var i=e.fill;i&&(i.toLive?(t.fillStyle=i.toLive(t,this),this._applyPatternGradientTransform(t,e.fill)):t.fillStyle=i)},_setClippingProperties:function(t){t.globalAlpha=1,t.strokeStyle="transparent",t.fillStyle="#000000"},_setLineDash:function(t,e){e&&0!==e.length&&(1&e.length&&e.push.apply(e,e),t.setLineDash(e))},_renderControls:function(t,i){var n,r,s,a=this.getViewportTransform(),h=this.calcTransformMatrix();r=void 0!==(i=i||{}).hasBorders?i.hasBorders:this.hasBorders,s=void 0!==i.hasControls?i.hasControls:this.hasControls,h=e.util.multiplyTransformMatrices(a,h),n=e.util.qrDecompose(h),t.save(),t.translate(n.translateX,n.translateY),t.lineWidth=1*this.borderScaleFactor,this.group||(t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.flipX&&(n.angle-=180),t.rotate(o(this.group?n.angle:this.angle)),i.forActiveSelection||this.group?r&&this.drawBordersInGroup(t,n,i):r&&this.drawBorders(t,i),s&&this.drawControls(t,i),t.restore()},_setShadow:function(t){if(this.shadow){var i,n=this.shadow,r=this.canvas,s=r&&r.viewportTransform[0]||1,o=r&&r.viewportTransform[3]||1;i=n.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),r&&r._isRetinaScaling()&&(s*=e.devicePixelRatio,o*=e.devicePixelRatio),t.shadowColor=n.color,t.shadowBlur=n.blur*e.browserShadowBlurConstant*(s+o)*(i.scaleX+i.scaleY)/4,t.shadowOffsetX=n.offsetX*s*i.scaleX,t.shadowOffsetY=n.offsetY*o*i.scaleY}},_removeShadow:function(t){this.shadow&&(t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0)},_applyPatternGradientTransform:function(t,e){if(!e||!e.toLive)return{offsetX:0,offsetY:0};var i=e.gradientTransform||e.patternTransform,n=-this.width/2+e.offsetX||0,r=-this.height/2+e.offsetY||0;return"percentage"===e.gradientUnits?t.transform(this.width,0,0,this.height,n,r):t.transform(1,0,0,1,n,r),i&&t.transform(i[0],i[1],i[2],i[3],i[4],i[5]),{offsetX:n,offsetY:r}},_renderPaintInOrder:function(t){"stroke"===this.paintFirst?(this._renderStroke(t),this._renderFill(t)):(this._renderFill(t),this._renderStroke(t))},_render:function(){},_renderFill:function(t){this.fill&&(t.save(),this._setFillStyles(t,this),"evenodd"===this.fillRule?t.fill("evenodd"):t.fill(),t.restore())},_renderStroke:function(t){if(this.stroke&&0!==this.strokeWidth){if(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(t),t.save(),this.strokeUniform&&this.group){var e=this.getObjectScaling();t.scale(1/e.scaleX,1/e.scaleY)}else this.strokeUniform&&t.scale(1/this.scaleX,1/this.scaleY);this._setLineDash(t,this.strokeDashArray),this._setStrokeStyles(t,this),t.stroke(),t.restore()}},_applyPatternForTransformedGradient:function(t,i){var n,r=this._limitCacheSize(this._getCacheCanvasDimensions()),s=e.util.createCanvasElement(),o=this.canvas.getRetinaScaling(),a=r.x/this.scaleX/o,h=r.y/this.scaleY/o;s.width=a,s.height=h,(n=s.getContext("2d")).beginPath(),n.moveTo(0,0),n.lineTo(a,0),n.lineTo(a,h),n.lineTo(0,h),n.closePath(),n.translate(a/2,h/2),n.scale(r.zoomX/this.scaleX/o,r.zoomY/this.scaleY/o),this._applyPatternGradientTransform(n,i),n.fillStyle=i.toLive(t),n.fill(),t.translate(-this.width/2-this.strokeWidth/2,-this.height/2-this.strokeWidth/2),t.scale(o*this.scaleX/r.zoomX,o*this.scaleY/r.zoomY),t.strokeStyle=n.createPattern(s,"no-repeat")},_findCenterFromElement:function(){return{x:this.left+this.width/2,y:this.top+this.height/2}},_assignTransformMatrixProps:function(){if(this.transformMatrix){var t=e.util.qrDecompose(this.transformMatrix);this.flipX=!1,this.flipY=!1,this.set("scaleX",t.scaleX),this.set("scaleY",t.scaleY),this.angle=t.angle,this.skewX=t.skewX,this.skewY=0}},_removeTransformMatrix:function(t){var i=this._findCenterFromElement();this.transformMatrix&&(this._assignTransformMatrixProps(),i=e.util.transformPoint(i,this.transformMatrix)),this.transformMatrix=null,t&&(this.scaleX*=t.scaleX,this.scaleY*=t.scaleY,this.cropX=t.cropX,this.cropY=t.cropY,i.x+=t.offsetLeft,i.y+=t.offsetTop,this.width=t.width,this.height=t.height),this.setPositionByOrigin(i,"center","center")},clone:function(t,i){var n=this.toObject(i);this.constructor.fromObject?this.constructor.fromObject(n,t):e.Object._fromObject("Object",n,t)},cloneAsImage:function(t,i){var n=this.toCanvasElement(i);return t&&t(new e.Image(n)),this},toCanvasElement:function(t){t||(t={});var i=e.util,n=i.saveObjectTransform(this),r=this.group,s=this.shadow,o=Math.abs,a=(t.multiplier||1)*(t.enableRetinaScaling?e.devicePixelRatio:1);delete this.group,t.withoutTransform&&i.resetObjectTransform(this),t.withoutShadow&&(this.shadow=null);var h,l,c,u,d=e.util.createCanvasElement(),f=this.getBoundingRect(!0,!0),g=this.shadow,m={x:0,y:0};g&&(l=g.blur,h=g.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),m.x=2*Math.round(o(g.offsetX)+l)*o(h.scaleX),m.y=2*Math.round(o(g.offsetY)+l)*o(h.scaleY)),c=f.width+m.x,u=f.height+m.y,d.width=Math.ceil(c),d.height=Math.ceil(u);var p=new e.StaticCanvas(d,{enableRetinaScaling:!1,renderOnAddRemove:!1,skipOffscreen:!1});"jpeg"===t.format&&(p.backgroundColor="#fff"),this.setPositionByOrigin(new e.Point(p.width/2,p.height/2),"center","center");var _=this.canvas;p.add(this);var v=p.toCanvasElement(a||1,t);return this.shadow=s,this.set("canvas",_),r&&(this.group=r),this.set(n).setCoords(),p._objects=[],p.dispose(),p=null,v},toDataURL:function(t){return t||(t={}),e.util.toDataURL(this.toCanvasElement(t),t.format||"png",t.quality||1)},isType:function(t){return arguments.length>1?Array.from(arguments).includes(this.type):this.type===t},complexity:function(){return 1},toJSON:function(t){return this.toObject(t)},rotate:function(t){var e=("center"!==this.originX||"center"!==this.originY)&&this.centeredRotation;return e&&this._setOriginToCenter(),this.set("angle",t),e&&this._resetOrigin(),this},centerH:function(){return this.canvas&&this.canvas.centerObjectH(this),this},viewportCenterH:function(){return this.canvas&&this.canvas.viewportCenterObjectH(this),this},centerV:function(){return this.canvas&&this.canvas.centerObjectV(this),this},viewportCenterV:function(){return this.canvas&&this.canvas.viewportCenterObjectV(this),this},center:function(){return this.canvas&&this.canvas.centerObject(this),this},viewportCenter:function(){return this.canvas&&this.canvas.viewportCenterObject(this),this},getLocalPointer:function(t,i){i=i||this.canvas.getPointer(t);var n=new e.Point(i.x,i.y),r=this._getLeftTopCoords();return this.angle&&(n=e.util.rotatePoint(n,r,o(-this.angle))),{x:n.x-r.x,y:n.y-r.y}},_setupCompositeOperation:function(t){this.globalCompositeOperation&&(t.globalCompositeOperation=this.globalCompositeOperation)},dispose:function(){e.runningAnimations&&e.runningAnimations.cancelByTarget(this)}}),e.util.createAccessors&&e.util.createAccessors(e.Object),i(e.Object.prototype,e.Observable),e.Object.NUM_FRACTION_DIGITS=2,e.Object.ENLIVEN_PROPS=["clipPath"],e.Object._fromObject=function(t,i,r,s){var o=e[t];i=n(i,!0),e.util.enlivenPatterns([i.fill,i.stroke],(function(t){void 0!==t[0]&&(i.fill=t[0]),void 0!==t[1]&&(i.stroke=t[1]),e.util.enlivenObjectEnlivables(i,i,(function(){var t=s?new o(i[s],i):new o(i);r&&r(t)}))}))},e.Object.__uid=0)}(e),w=T.util.degreesToRadians,C={left:-.5,center:0,right:.5},E={top:-.5,center:0,bottom:.5},T.util.object.extend(T.Object.prototype,{translateToGivenOrigin:function(t,e,i,n,r){var s,o,a,h=t.x,l=t.y;return"string"==typeof e?e=C[e]:e-=.5,"string"==typeof n?n=C[n]:n-=.5,"string"==typeof i?i=E[i]:i-=.5,"string"==typeof r?r=E[r]:r-=.5,o=r-i,((s=n-e)||o)&&(a=this._getTransformedDimensions(),h=t.x+s*a.x,l=t.y+o*a.y),new T.Point(h,l)},translateToCenterPoint:function(t,e,i){var n=this.translateToGivenOrigin(t,e,i,"center","center");return this.angle?T.util.rotatePoint(n,t,w(this.angle)):n},translateToOriginPoint:function(t,e,i){var n=this.translateToGivenOrigin(t,"center","center",e,i);return this.angle?T.util.rotatePoint(n,t,w(this.angle)):n},getCenterPoint:function(){var t=new T.Point(this.left,this.top);return this.translateToCenterPoint(t,this.originX,this.originY)},getPointByOrigin:function(t,e){var i=this.getCenterPoint();return this.translateToOriginPoint(i,t,e)},toLocalPoint:function(t,e,i){var n,r,s=this.getCenterPoint();return n=void 0!==e&&void 0!==i?this.translateToGivenOrigin(s,"center","center",e,i):new T.Point(this.left,this.top),r=new T.Point(t.x,t.y),this.angle&&(r=T.util.rotatePoint(r,s,-w(this.angle))),r.subtractEquals(n)},setPositionByOrigin:function(t,e,i){var n=this.translateToCenterPoint(t,e,i),r=this.translateToOriginPoint(n,this.originX,this.originY);this.set("left",r.x),this.set("top",r.y)},adjustPosition:function(t){var e,i,n=w(this.angle),r=this.getScaledWidth(),s=T.util.cos(n)*r,o=T.util.sin(n)*r;e="string"==typeof this.originX?C[this.originX]:this.originX-.5,i="string"==typeof t?C[t]:t-.5,this.left+=s*(i-e),this.top+=o*(i-e),this.setCoords(),this.originX=t},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var t=this.getCenterPoint();this.originX="center",this.originY="center",this.left=t.x,this.top=t.y},_resetOrigin:function(){var t=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX,this.originY=this._originalOriginY,this.left=t.x,this.top=t.y,this._originalOriginX=null,this._originalOriginY=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","top")}}),function(){var t=T.util,e=t.degreesToRadians,i=t.multiplyTransformMatrices,n=t.transformPoint;t.object.extend(T.Object.prototype,{oCoords:null,aCoords:null,lineCoords:null,ownMatrixCache:null,matrixCache:null,controls:{},_getCoords:function(t,e){return e?t?this.calcACoords():this.calcLineCoords():(this.aCoords&&this.lineCoords||this.setCoords(!0),t?this.aCoords:this.lineCoords)},getCoords:function(t,e){return i=this._getCoords(t,e),[new T.Point(i.tl.x,i.tl.y),new T.Point(i.tr.x,i.tr.y),new T.Point(i.br.x,i.br.y),new T.Point(i.bl.x,i.bl.y)];var i},intersectsWithRect:function(t,e,i,n){var r=this.getCoords(i,n);return"Intersection"===T.Intersection.intersectPolygonRectangle(r,t,e).status},intersectsWithObject:function(t,e,i){return"Intersection"===T.Intersection.intersectPolygonPolygon(this.getCoords(e,i),t.getCoords(e,i)).status||t.isContainedWithinObject(this,e,i)||this.isContainedWithinObject(t,e,i)},isContainedWithinObject:function(t,e,i){for(var n=this.getCoords(e,i),r=e?t.aCoords:t.lineCoords,s=0,o=t._getImageLines(r);s<4;s++)if(!t.containsPoint(n[s],o))return!1;return!0},isContainedWithinRect:function(t,e,i,n){var r=this.getBoundingRect(i,n);return r.left>=t.x&&r.left+r.width<=e.x&&r.top>=t.y&&r.top+r.height<=e.y},containsPoint:function(t,e,i,n){var r=this._getCoords(i,n),s=(e=e||this._getImageLines(r),this._findCrossPoints(t,e));return 0!==s&&s%2==1},isOnScreen:function(t){if(!this.canvas)return!1;var e=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.getCoords(!0,t).some((function(t){return t.x<=i.x&&t.x>=e.x&&t.y<=i.y&&t.y>=e.y}))||!!this.intersectsWithRect(e,i,!0,t)||this._containsCenterOfCanvas(e,i,t)},_containsCenterOfCanvas:function(t,e,i){var n={x:(t.x+e.x)/2,y:(t.y+e.y)/2};return!!this.containsPoint(n,null,!0,i)},isPartiallyOnScreen:function(t){if(!this.canvas)return!1;var e=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.intersectsWithRect(e,i,!0,t)||this.getCoords(!0,t).every((function(t){return(t.x>=i.x||t.x<=e.x)&&(t.y>=i.y||t.y<=e.y)}))&&this._containsCenterOfCanvas(e,i,t)},_getImageLines:function(t){return{topline:{o:t.tl,d:t.tr},rightline:{o:t.tr,d:t.br},bottomline:{o:t.br,d:t.bl},leftline:{o:t.bl,d:t.tl}}},_findCrossPoints:function(t,e){var i,n,r,s=0;for(var o in e)if(!((r=e[o]).o.y=t.y&&r.d.y>=t.y||(r.o.x===r.d.x&&r.o.x>=t.x?n=r.o.x:(i=(r.d.y-r.o.y)/(r.d.x-r.o.x),n=-(t.y-0*t.x-(r.o.y-i*r.o.x))/(0-i)),n>=t.x&&(s+=1),2!==s)))break;return s},getBoundingRect:function(e,i){var n=this.getCoords(e,i);return t.makeBoundingBoxFromPoints(n)},getScaledWidth:function(){return this._getTransformedDimensions().x},getScaledHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(t){return Math.abs(t)\n')}},toSVG:function(t){return this._createBaseSVGMarkup(this._toSVG(t),{reviver:t})},toClipPathSVG:function(t){return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(t),{reviver:t})},_createBaseClipPathSVGMarkup:function(t,e){var i=(e=e||{}).reviver,n=e.additionalTransform||"",r=[this.getSvgTransform(!0,n),this.getSvgCommons()].join(""),s=t.indexOf("COMMON_PARTS");return t[s]=r,i?i(t.join("")):t.join("")},_createBaseSVGMarkup:function(t,e){var i,n,r=(e=e||{}).noStyle,s=e.reviver,o=r?"":'style="'+this.getSvgStyles()+'" ',a=e.withShadow?'style="'+this.getSvgFilter()+'" ':"",h=this.clipPath,l=this.strokeUniform?'vector-effect="non-scaling-stroke" ':"",c=h&&h.absolutePositioned,u=this.stroke,d=this.fill,f=this.shadow,g=[],m=t.indexOf("COMMON_PARTS"),p=e.additionalTransform;return h&&(h.clipPathId="CLIPPATH_"+T.Object.__uid++,n='\n'+h.toClipPathSVG(s)+"\n"),c&&g.push("\n"),g.push("\n"),i=[o,l,r?"":this.addPaintOrder()," ",p?'transform="'+p+'" ':""].join(""),t[m]=i,d&&d.toLive&&g.push(d.toSVG(this)),u&&u.toLive&&g.push(u.toSVG(this)),f&&g.push(f.toSVG(this)),h&&g.push(n),g.push(t.join("")),g.push("\n"),c&&g.push("\n"),s?s(g.join("")):g.join("")},addPaintOrder:function(){return"fill"!==this.paintFirst?' paint-order="'+this.paintFirst+'" ':""}})}(),function(){var t=T.util.object.extend,e="stateProperties";function i(e,i,n){var r={};n.forEach((function(t){r[t]=e[t]})),t(e[i],r,!0)}function n(t,e,i){if(t===e)return!0;if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(var r=0,s=t.length;r=0;h--)if(r=a[h],this.isControlVisible(r)&&(n=this._getImageLines(e?this.oCoords[r].touchCorner:this.oCoords[r].corner),0!==(i=this._findCrossPoints({x:s,y:o},n))&&i%2==1))return this.__corner=r,r;return!1},forEachControl:function(t){for(var e in this.controls)t(this.controls[e],e,this)},_setCornerCoords:function(){var t=this.oCoords;for(var e in t){var i=this.controls[e];t[e].corner=i.calcCornerCoords(this.angle,this.cornerSize,t[e].x,t[e].y,!1),t[e].touchCorner=i.calcCornerCoords(this.angle,this.touchCornerSize,t[e].x,t[e].y,!0)}},drawSelectionBackground:function(e){if(!this.selectionBackgroundColor||this.canvas&&!this.canvas.interactive||this.canvas&&this.canvas._activeObject!==this)return this;e.save();var i=this.getCenterPoint(),n=this._calculateCurrentDimensions(),r=this.canvas.viewportTransform;return e.translate(i.x,i.y),e.scale(1/r[0],1/r[3]),e.rotate(t(this.angle)),e.fillStyle=this.selectionBackgroundColor,e.fillRect(-n.x/2,-n.y/2,n.x,n.y),e.restore(),this},drawBorders:function(t,e){e=e||{};var i=this._calculateCurrentDimensions(),n=this.borderScaleFactor,r=i.x+n,s=i.y+n,o=void 0!==e.hasControls?e.hasControls:this.hasControls,a=!1;return t.save(),t.strokeStyle=e.borderColor||this.borderColor,this._setLineDash(t,e.borderDashArray||this.borderDashArray),t.strokeRect(-r/2,-s/2,r,s),o&&(t.beginPath(),this.forEachControl((function(e,i,n){e.withConnection&&e.getVisibility(n,i)&&(a=!0,t.moveTo(e.x*r,e.y*s),t.lineTo(e.x*r+e.offsetX,e.y*s+e.offsetY))})),a&&t.stroke()),t.restore(),this},drawBordersInGroup:function(t,e,i){i=i||{};var n=T.util.sizeAfterTransform(this.width,this.height,e),r=this.strokeWidth,s=this.strokeUniform,o=this.borderScaleFactor,a=n.x+r*(s?this.canvas.getZoom():e.scaleX)+o,h=n.y+r*(s?this.canvas.getZoom():e.scaleY)+o;return t.save(),this._setLineDash(t,i.borderDashArray||this.borderDashArray),t.strokeStyle=i.borderColor||this.borderColor,t.strokeRect(-a/2,-h/2,a,h),t.restore(),this},drawControls:function(t,e){e=e||{},t.save();var i,n,r=this.canvas.getRetinaScaling();return t.setTransform(r,0,0,r,0,0),t.strokeStyle=t.fillStyle=e.cornerColor||this.cornerColor,this.transparentCorners||(t.strokeStyle=e.cornerStrokeColor||this.cornerStrokeColor),this._setLineDash(t,e.cornerDashArray||this.cornerDashArray),this.setCoords(),this.group&&(i=this.group.calcTransformMatrix()),this.forEachControl((function(r,s,o){n=o.oCoords[s],r.getVisibility(o,s)&&(i&&(n=T.util.transformPoint(n,i)),r.render(t,n.x,n.y,e,o))})),t.restore(),this},isControlVisible:function(t){return this.controls[t]&&this.controls[t].getVisibility(this,t)},setControlVisible:function(t,e){return this._controlsVisibility||(this._controlsVisibility={}),this._controlsVisibility[t]=e,this},setControlsVisibility:function(t){for(var e in t||(t={}),t)this.setControlVisible(e,t[e]);return this},onDeselect:function(){},onSelect:function(){}})}(),T.util.object.extend(T.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(t,e){var i=function(){},n=(e=e||{}).onComplete||i,r=e.onChange||i,s=this;return T.util.animate({target:this,startValue:t.left,endValue:this.getCenterPoint().x,duration:this.FX_DURATION,onChange:function(e){t.set("left",e),s.requestRenderAll(),r()},onComplete:function(){t.setCoords(),n()}})},fxCenterObjectV:function(t,e){var i=function(){},n=(e=e||{}).onComplete||i,r=e.onChange||i,s=this;return T.util.animate({target:this,startValue:t.top,endValue:this.getCenterPoint().y,duration:this.FX_DURATION,onChange:function(e){t.set("top",e),s.requestRenderAll(),r()},onComplete:function(){t.setCoords(),n()}})},fxRemove:function(t,e){var i=function(){},n=(e=e||{}).onComplete||i,r=e.onChange||i,s=this;return T.util.animate({target:this,startValue:t.opacity,endValue:0,duration:this.FX_DURATION,onChange:function(e){t.set("opacity",e),s.requestRenderAll(),r()},onComplete:function(){s.remove(t),n()}})}}),T.util.object.extend(T.Object.prototype,{animate:function(){if(arguments[0]&&"object"==typeof arguments[0]){var t,e,i=[],n=[];for(t in arguments[0])i.push(t);for(var r=0,s=i.length;r-1||r&&s.colorProperties.indexOf(r[1])>-1,a=r?this.get(r[0])[r[1]]:this.get(t);"from"in i||(i.from=a),o||(e=~e.indexOf("=")?a+parseFloat(e.replace("=","")):parseFloat(e));var h={target:this,startValue:i.from,endValue:e,byValue:i.by,easing:i.easing,duration:i.duration,abort:i.abort&&function(t,e,n){return i.abort.call(s,t,e,n)},onChange:function(e,o,a){r?s[r[0]][r[1]]=e:s.set(t,e),n||i.onChange&&i.onChange(e,o,a)},onComplete:function(t,e,r){n||(s.setCoords(),i.onComplete&&i.onComplete(t,e,r))}};return o?T.util.animateColor(h.startValue,h.endValue,h.duration,h):T.util.animate(h)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,n=e.util.object.clone,r={x1:1,x2:1,y1:1,y2:1};function s(t,e){var i=t.origin,n=t.axis1,r=t.axis2,s=t.dimension,o=e.nearest,a=e.center,h=e.farthest;return function(){switch(this.get(i)){case o:return Math.min(this.get(n),this.get(r));case a:return Math.min(this.get(n),this.get(r))+.5*this.get(s);case h:return Math.max(this.get(n),this.get(r))}}}e.Line?e.warn("fabric.Line is already defined"):(e.Line=e.util.createClass(e.Object,{type:"line",x1:0,y1:0,x2:0,y2:0,cacheProperties:e.Object.prototype.cacheProperties.concat("x1","x2","y1","y2"),initialize:function(t,e){t||(t=[0,0,0,0]),this.callSuper("initialize",e),this.set("x1",t[0]),this.set("y1",t[1]),this.set("x2",t[2]),this.set("y2",t[3]),this._setWidthHeight(e)},_setWidthHeight:function(t){t||(t={}),this.width=Math.abs(this.x2-this.x1),this.height=Math.abs(this.y2-this.y1),this.left="left"in t?t.left:this._getLeftToOriginX(),this.top="top"in t?t.top:this._getTopToOriginY()},_set:function(t,e){return this.callSuper("_set",t,e),void 0!==r[t]&&this._setWidthHeight(),this},_getLeftToOriginX:s({origin:"originX",axis1:"x1",axis2:"x2",dimension:"width"},{nearest:"left",center:"center",farthest:"right"}),_getTopToOriginY:s({origin:"originY",axis1:"y1",axis2:"y2",dimension:"height"},{nearest:"top",center:"center",farthest:"bottom"}),_render:function(t){t.beginPath();var e=this.calcLinePoints();t.moveTo(e.x1,e.y1),t.lineTo(e.x2,e.y2),t.lineWidth=this.strokeWidth;var i=t.strokeStyle;t.strokeStyle=this.stroke||t.fillStyle,this.stroke&&this._renderStroke(t),t.strokeStyle=i},_findCenterFromElement:function(){return{x:(this.x1+this.x2)/2,y:(this.y1+this.y2)/2}},toObject:function(t){return i(this.callSuper("toObject",t),this.calcLinePoints())},_getNonTransformedDimensions:function(){var t=this.callSuper("_getNonTransformedDimensions");return"butt"===this.strokeLineCap&&(0===this.width&&(t.y-=this.strokeWidth),0===this.height&&(t.x-=this.strokeWidth)),t},calcLinePoints:function(){var t=this.x1<=this.x2?-1:1,e=this.y1<=this.y2?-1:1,i=t*this.width*.5,n=e*this.height*.5;return{x1:i,x2:t*this.width*-.5,y1:n,y2:e*this.height*-.5}},_toSVG:function(){var t=this.calcLinePoints();return["\n']}}),e.Line.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),e.Line.fromElement=function(t,n,r){r=r||{};var s=e.parseAttributes(t,e.Line.ATTRIBUTE_NAMES),o=[s.x1||0,s.y1||0,s.x2||0,s.y2||0];n(new e.Line(o,i(s,r)))},e.Line.fromObject=function(t,i){var r=n(t,!0);r.points=[t.x1,t.y1,t.x2,t.y2],e.Object._fromObject("Line",r,(function(t){delete t.points,i&&i(t)}),"points")})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.degreesToRadians;e.Circle?e.warn("fabric.Circle is already defined."):(e.Circle=e.util.createClass(e.Object,{type:"circle",radius:0,startAngle:0,endAngle:360,cacheProperties:e.Object.prototype.cacheProperties.concat("radius","startAngle","endAngle"),_set:function(t,e){return this.callSuper("_set",t,e),"radius"===t&&this.setRadius(e),this},toObject:function(t){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(t))},_toSVG:function(){var t,n=(this.endAngle-this.startAngle)%360;if(0===n)t=["\n'];else{var r=i(this.startAngle),s=i(this.endAngle),o=this.radius;t=['180?"1":"0")+" 1"," "+e.util.cos(s)*o+" "+e.util.sin(s)*o,'" ',"COMMON_PARTS"," />\n"]}return t},_render:function(t){t.beginPath(),t.arc(0,0,this.radius,i(this.startAngle),i(this.endAngle),!1),this._renderPaintInOrder(t)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(t){return this.radius=t,this.set("width",2*t).set("height",2*t)}}),e.Circle.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),e.Circle.fromElement=function(t,i){var n,r=e.parseAttributes(t,e.Circle.ATTRIBUTE_NAMES);if(!("radius"in(n=r)&&n.radius>=0))throw new Error("value of `r` attribute is required and can not be negative");r.left=(r.left||0)-r.radius,r.top=(r.top||0)-r.radius,i(new e.Circle(r))},e.Circle.fromObject=function(t,i){e.Object._fromObject("Circle",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={});e.Triangle?e.warn("fabric.Triangle is already defined"):(e.Triangle=e.util.createClass(e.Object,{type:"triangle",width:100,height:100,_render:function(t){var e=this.width/2,i=this.height/2;t.beginPath(),t.moveTo(-e,i),t.lineTo(0,-i),t.lineTo(e,i),t.closePath(),this._renderPaintInOrder(t)},_toSVG:function(){var t=this.width/2,e=this.height/2;return["']}}),e.Triangle.fromObject=function(t,i){return e.Object._fromObject("Triangle",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=2*Math.PI;e.Ellipse?e.warn("fabric.Ellipse is already defined."):(e.Ellipse=e.util.createClass(e.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:e.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this.set("rx",t&&t.rx||0),this.set("ry",t&&t.ry||0)},_set:function(t,e){switch(this.callSuper("_set",t,e),t){case"rx":this.rx=e,this.set("width",2*e);break;case"ry":this.ry=e,this.set("height",2*e)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']},_render:function(t){t.beginPath(),t.save(),t.transform(1,0,0,this.ry/this.rx,0,0),t.arc(0,0,this.rx,0,i,!1),t.restore(),this._renderPaintInOrder(t)}}),e.Ellipse.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),e.Ellipse.fromElement=function(t,i){var n=e.parseAttributes(t,e.Ellipse.ATTRIBUTE_NAMES);n.left=(n.left||0)-n.rx,n.top=(n.top||0)-n.ry,i(new e.Ellipse(n))},e.Ellipse.fromObject=function(t,i){e.Object._fromObject("Ellipse",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend;e.Rect?e.warn("fabric.Rect is already defined"):(e.Rect=e.util.createClass(e.Object,{stateProperties:e.Object.prototype.stateProperties.concat("rx","ry"),type:"rect",rx:0,ry:0,cacheProperties:e.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(t){var e=this.rx?Math.min(this.rx,this.width/2):0,i=this.ry?Math.min(this.ry,this.height/2):0,n=this.width,r=this.height,s=-this.width/2,o=-this.height/2,a=0!==e||0!==i,h=.4477152502;t.beginPath(),t.moveTo(s+e,o),t.lineTo(s+n-e,o),a&&t.bezierCurveTo(s+n-h*e,o,s+n,o+h*i,s+n,o+i),t.lineTo(s+n,o+r-i),a&&t.bezierCurveTo(s+n,o+r-h*i,s+n-h*e,o+r,s+n-e,o+r),t.lineTo(s+e,o+r),a&&t.bezierCurveTo(s+h*e,o+r,s,o+r-h*i,s,o+r-i),t.lineTo(s,o+i),a&&t.bezierCurveTo(s,o+h*i,s+h*e,o,s+e,o),t.closePath(),this._renderPaintInOrder(t)},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']}}),e.Rect.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),e.Rect.fromElement=function(t,n,r){if(!t)return n(null);r=r||{};var s=e.parseAttributes(t,e.Rect.ATTRIBUTE_NAMES);s.left=s.left||0,s.top=s.top||0,s.height=s.height||0,s.width=s.width||0;var o=new e.Rect(i(r?e.util.object.clone(r):{},s));o.visible=o.visible&&o.width>0&&o.height>0,n(o)},e.Rect.fromObject=function(t,i){return e.Object._fromObject("Rect",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,n=e.util.array.min,r=e.util.array.max,s=e.util.toFixed,o=e.util.projectStrokeOnPoints;e.Polyline?e.warn("fabric.Polyline is already defined"):(e.Polyline=e.util.createClass(e.Object,{type:"polyline",points:null,exactBoundingBox:!1,cacheProperties:e.Object.prototype.cacheProperties.concat("points"),initialize:function(t,e){e=e||{},this.points=t||[],this.callSuper("initialize",e),this._setPositionDimensions(e)},_projectStrokeOnPoints:function(){return o(this.points,this,!0)},_setPositionDimensions:function(t){var e,i=this._calcDimensions(t),n=this.exactBoundingBox?this.strokeWidth:0;this.width=i.width-n,this.height=i.height-n,t.fromSVG||(e=this.translateToGivenOrigin({x:i.left-this.strokeWidth/2+n/2,y:i.top-this.strokeWidth/2+n/2},"left","top",this.originX,this.originY)),void 0===t.left&&(this.left=t.fromSVG?i.left:e.x),void 0===t.top&&(this.top=t.fromSVG?i.top:e.y),this.pathOffset={x:i.left+this.width/2+n/2,y:i.top+this.height/2+n/2}},_calcDimensions:function(){var t=this.exactBoundingBox?this._projectStrokeOnPoints():this.points,e=n(t,"x")||0,i=n(t,"y")||0;return{left:e,top:i,width:(r(t,"x")||0)-e,height:(r(t,"y")||0)-i}},toObject:function(t){return i(this.callSuper("toObject",t),{points:this.points.concat()})},_toSVG:function(){for(var t=[],i=this.pathOffset.x,n=this.pathOffset.y,r=e.Object.NUM_FRACTION_DIGITS,o=0,a=this.points.length;o\n']},commonRender:function(t){var e,i=this.points.length,n=this.pathOffset.x,r=this.pathOffset.y;if(!i||isNaN(this.points[i-1].y))return!1;t.beginPath(),t.moveTo(this.points[0].x-n,this.points[0].y-r);for(var s=0;s"},toObject:function(t){return r(this.callSuper("toObject",t),{path:this.path.map((function(t){return t.slice()}))})},toDatalessObject:function(t){var e=this.toObject(["sourcePath"].concat(t));return e.sourcePath&&delete e.path,e},_toSVG:function(){return["\n"]},_getOffsetTransform:function(){var t=e.Object.NUM_FRACTION_DIGITS;return" translate("+o(-this.pathOffset.x,t)+", "+o(-this.pathOffset.y,t)+")"},toClipPathSVG:function(t){var e=this._getOffsetTransform();return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},toSVG:function(t){var e=this._getOffsetTransform();return this._createBaseSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},complexity:function(){return this.path.length},_calcDimensions:function(){for(var t,r,s=[],o=[],a=0,h=0,l=0,c=0,u=0,d=this.path.length;u"},addWithUpdate:function(t){var i=!!this.group;return this._restoreObjectsState(),e.util.resetObjectTransform(this),t&&(i&&e.util.removeTransformFromObject(t,this.group.calcTransformMatrix()),this._objects.push(t),t.group=this,t._set("canvas",this.canvas)),this._calcBounds(),this._updateObjectsCoords(),this.dirty=!0,i?this.group.addWithUpdate():this.setCoords(),this},removeWithUpdate:function(t){return this._restoreObjectsState(),e.util.resetObjectTransform(this),this.remove(t),this._calcBounds(),this._updateObjectsCoords(),this.setCoords(),this.dirty=!0,this},_onObjectAdded:function(t){this.dirty=!0,t.group=this,t._set("canvas",this.canvas)},_onObjectRemoved:function(t){this.dirty=!0,delete t.group},_set:function(t,i){var n=this._objects.length;if(this.useSetOnGroup)for(;n--;)this._objects[n].setOnGroup(t,i);if("canvas"===t)for(;n--;)this._objects[n]._set(t,i);e.Object.prototype._set.call(this,t,i)},toObject:function(t){var i=this.includeDefaultValues,n=this._objects.filter((function(t){return!t.excludeFromExport})).map((function(e){var n=e.includeDefaultValues;e.includeDefaultValues=i;var r=e.toObject(t);return e.includeDefaultValues=n,r})),r=e.Object.prototype.toObject.call(this,t);return r.objects=n,r},toDatalessObject:function(t){var i,n=this.sourcePath;if(n)i=n;else{var r=this.includeDefaultValues;i=this._objects.map((function(e){var i=e.includeDefaultValues;e.includeDefaultValues=r;var n=e.toDatalessObject(t);return e.includeDefaultValues=i,n}))}var s=e.Object.prototype.toDatalessObject.call(this,t);return s.objects=i,s},render:function(t){this._transformDone=!0,this.callSuper("render",t),this._transformDone=!1},shouldCache:function(){var t=e.Object.prototype.shouldCache.call(this);if(t)for(var i=0,n=this._objects.length;i\n"],i=0,n=this._objects.length;i\n"),e},getSvgStyles:function(){var t=void 0!==this.opacity&&1!==this.opacity?"opacity: "+this.opacity+";":"",e=this.visible?"":" visibility: hidden;";return[t,this.getSvgFilter(),e].join("")},toClipPathSVG:function(t){for(var e=[],i=0,n=this._objects.length;i"},shouldCache:function(){return!1},isOnACache:function(){return!1},_renderControls:function(t,e,i){t.save(),t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,this.callSuper("_renderControls",t,e),void 0===(i=i||{}).hasControls&&(i.hasControls=!1),i.forActiveSelection=!0;for(var n=0,r=this._objects.length;n\n','\t\n',"\n"),o=' clip-path="url(#imageCrop_'+h+')" '}if(this.imageSmoothing||(a='" image-rendering="optimizeSpeed'),i.push("\t\n"),this.stroke||this.strokeDashArray){var l=this.fill;this.fill=null,t=["\t\n'],this.fill=l}return"fill"!==this.paintFirst?e.concat(t,i):e.concat(i,t)},getSrc:function(t){var e=t?this._element:this._originalElement;return e?e.toDataURL?e.toDataURL():this.srcFromAttribute?e.getAttribute("src"):e.src:this.src||""},setSrc:function(t,e,i){return T.util.loadImage(t,(function(t,n){this.setElement(t,i),this._setWidthHeight(),e&&e(this,n)}),this,i&&i.crossOrigin),this},toString:function(){return'#'},applyResizeFilters:function(){var t=this.resizeFilter,e=this.minimumScaleTrigger,i=this.getTotalObjectScaling(),n=i.scaleX,r=i.scaleY,s=this._filteredEl||this._originalElement;if(this.group&&this.set("dirty",!0),!t||n>e&&r>e)return this._element=s,this._filterScalingX=1,this._filterScalingY=1,this._lastScaleX=n,void(this._lastScaleY=r);T.filterBackend||(T.filterBackend=T.initFilterBackend());var o=T.util.createCanvasElement(),a=this._filteredEl?this.cacheKey+"_filtered":this.cacheKey,h=s.width,l=s.height;o.width=h,o.height=l,this._element=o,this._lastScaleX=t.scaleX=n,this._lastScaleY=t.scaleY=r,T.filterBackend.applyFilters([t],s,h,l,this._element,a),this._filterScalingX=o.width/this._originalElement.width,this._filterScalingY=o.height/this._originalElement.height},applyFilters:function(t){if(t=(t=t||this.filters||[]).filter((function(t){return t&&!t.isNeutralState()})),this.set("dirty",!0),this.removeTexture(this.cacheKey+"_filtered"),0===t.length)return this._element=this._originalElement,this._filteredEl=null,this._filterScalingX=1,this._filterScalingY=1,this;var e=this._originalElement,i=e.naturalWidth||e.width,n=e.naturalHeight||e.height;if(this._element===this._originalElement){var r=T.util.createCanvasElement();r.width=i,r.height=n,this._element=r,this._filteredEl=r}else this._element=this._filteredEl,this._filteredEl.getContext("2d").clearRect(0,0,i,n),this._lastScaleX=1,this._lastScaleY=1;return T.filterBackend||(T.filterBackend=T.initFilterBackend()),T.filterBackend.applyFilters(t,this._originalElement,i,n,this._element,this.cacheKey),this._originalElement.width===this._element.width&&this._originalElement.height===this._element.height||(this._filterScalingX=this._element.width/this._originalElement.width,this._filterScalingY=this._element.height/this._originalElement.height),this},_render:function(t){T.util.setImageSmoothing(t,this.imageSmoothing),!0!==this.isMoving&&this.resizeFilter&&this._needsResize()&&this.applyResizeFilters(),this._stroke(t),this._renderPaintInOrder(t)},drawCacheOnCanvas:function(t){T.util.setImageSmoothing(t,this.imageSmoothing),T.Object.prototype.drawCacheOnCanvas.call(this,t)},shouldCache:function(){return this.needsItsOwnCache()},_renderFill:function(t){var e=this._element;if(e){var i=this._filterScalingX,n=this._filterScalingY,r=this.width,s=this.height,o=Math.min,a=Math.max,h=a(this.cropX,0),l=a(this.cropY,0),c=e.naturalWidth||e.width,u=e.naturalHeight||e.height,d=h*i,f=l*n,g=o(r*i,c-d),m=o(s*n,u-f),p=-r/2,_=-s/2,v=o(r,c/i-h),y=o(s,u/n-l);e&&t.drawImage(e,d,f,g,m,p,_,v,y)}},_needsResize:function(){var t=this.getTotalObjectScaling();return t.scaleX!==this._lastScaleX||t.scaleY!==this._lastScaleY},_resetWidthHeight:function(){this.set(this.getOriginalSize())},_initElement:function(t,e){this.setElement(T.util.getById(t),e),T.util.addClass(this.getElement(),T.Image.CSS_CANVAS)},_initConfig:function(t){t||(t={}),this.setOptions(t),this._setWidthHeight(t)},_initFilters:function(t,e){t&&t.length?T.util.enlivenObjects(t,(function(t){e&&e(t)}),"fabric.Image.filters"):e&&e()},_setWidthHeight:function(t){t||(t={});var e=this.getElement();this.width=t.width||e.naturalWidth||e.width||0,this.height=t.height||e.naturalHeight||e.height||0},parsePreserveAspectRatioAttribute:function(){var t,e=T.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio||""),i=this._element.width,n=this._element.height,r=1,s=1,o=0,a=0,h=0,l=0,c=this.width,u=this.height,d={width:c,height:u};return!e||"none"===e.alignX&&"none"===e.alignY?(r=c/i,s=u/n):("meet"===e.meetOrSlice&&(t=(c-i*(r=s=T.util.findScaleToFit(this._element,d)))/2,"Min"===e.alignX&&(o=-t),"Max"===e.alignX&&(o=t),t=(u-n*s)/2,"Min"===e.alignY&&(a=-t),"Max"===e.alignY&&(a=t)),"slice"===e.meetOrSlice&&(t=i-c/(r=s=T.util.findScaleToCover(this._element,d)),"Mid"===e.alignX&&(h=t/2),"Max"===e.alignX&&(h=t),t=n-u/s,"Mid"===e.alignY&&(l=t/2),"Max"===e.alignY&&(l=t),i=c/r,n=u/s)),{width:i,height:n,scaleX:r,scaleY:s,offsetLeft:o,offsetTop:a,cropX:h,cropY:l}}}),T.Image.CSS_CANVAS="canvas-img",T.Image.prototype.getSvgSrc=T.Image.prototype.getSrc,T.Image.fromObject=function(t,e){var i=T.util.object.clone(t);T.util.loadImage(i.src,(function(t,n){n?e&&e(null,!0):T.Image.prototype._initFilters.call(i,i.filters,(function(n){i.filters=n||[],T.Image.prototype._initFilters.call(i,[i.resizeFilter],(function(n){i.resizeFilter=n[0],T.util.enlivenObjectEnlivables(i,i,(function(){var n=new T.Image(t,i);e(n,!1)}))}))}))}),null,i.crossOrigin)},T.Image.fromURL=function(t,e,i){T.util.loadImage(t,(function(t,n){e&&e(new T.Image(t,i),n)}),null,i&&i.crossOrigin)},T.Image.ATTRIBUTE_NAMES=T.SHARED_ATTRIBUTES.concat("x y width height preserveAspectRatio xlink:href crossOrigin image-rendering".split(" ")),T.Image.fromElement=function(t,i,n){var r=T.parseAttributes(t,T.Image.ATTRIBUTE_NAMES);T.Image.fromURL(r["xlink:href"],i,e(n?T.util.object.clone(n):{},r))})}(e),T.util.object.extend(T.Object.prototype,{_getAngleValueForStraighten:function(){var t=this.angle%360;return t>0?90*Math.round((t-1)/90):90*Math.round(t/90)},straighten:function(){return this.rotate(this._getAngleValueForStraighten())},fxStraighten:function(t){var e=function(){},i=(t=t||{}).onComplete||e,n=t.onChange||e,r=this;return T.util.animate({target:this,startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(t){r.rotate(t),n()},onComplete:function(){r.setCoords(),i()}})}}),T.util.object.extend(T.StaticCanvas.prototype,{straightenObject:function(t){return t.straighten(),this.requestRenderAll(),this},fxStraightenObject:function(t){return t.fxStraighten({onChange:this.requestRenderAllBound})}}),function(){function t(t,e){var i="precision "+e+" float;\nvoid main(){}",n=t.createShader(t.FRAGMENT_SHADER);return t.shaderSource(n,i),t.compileShader(n),!!t.getShaderParameter(n,t.COMPILE_STATUS)}function e(t){t&&t.tileSize&&(this.tileSize=t.tileSize),this.setupGLContext(this.tileSize,this.tileSize),this.captureGPUInfo()}T.isWebglSupported=function(e){if(T.isLikelyNode)return!1;e=e||T.WebglFilterBackend.prototype.tileSize;var i=document.createElement("canvas"),n=i.getContext("webgl")||i.getContext("experimental-webgl"),r=!1;if(n){T.maxTextureSize=n.getParameter(n.MAX_TEXTURE_SIZE),r=T.maxTextureSize>=e;for(var s=["highp","mediump","lowp"],o=0;o<3;o++)if(t(n,s[o])){T.webGlPrecision=s[o];break}}return this.isSupported=r,r},T.WebglFilterBackend=e,e.prototype={tileSize:2048,resources:{},setupGLContext:function(t,e){this.dispose(),this.createWebGLCanvas(t,e),this.aPosition=new Float32Array([0,0,0,1,1,0,1,1]),this.chooseFastestCopyGLTo2DMethod(t,e)},chooseFastestCopyGLTo2DMethod:function(t,e){var i,n=void 0!==window.performance;try{new ImageData(1,1),i=!0}catch(t){i=!1}var r="undefined"!=typeof ArrayBuffer,s="undefined"!=typeof Uint8ClampedArray;if(n&&i&&r&&s){var o=T.util.createCanvasElement(),a=new ArrayBuffer(t*e*4);if(T.forceGLPutImageData)return this.imageBuffer=a,void(this.copyGLTo2D=x);var h,l,c={imageBuffer:a,destinationWidth:t,destinationHeight:e,targetCanvas:o};o.width=t,o.height=e,h=window.performance.now(),I.call(c,this.gl,c),l=window.performance.now()-h,h=window.performance.now(),x.call(c,this.gl,c),l>window.performance.now()-h?(this.imageBuffer=a,this.copyGLTo2D=x):this.copyGLTo2D=I}},createWebGLCanvas:function(t,e){var i=T.util.createCanvasElement();i.width=t,i.height=e;var n={alpha:!0,premultipliedAlpha:!1,depth:!1,stencil:!1,antialias:!1},r=i.getContext("webgl",n);r||(r=i.getContext("experimental-webgl",n)),r&&(r.clearColor(0,0,0,0),this.canvas=i,this.gl=r)},applyFilters:function(t,e,i,n,r,s){var o,a=this.gl;s&&(o=this.getCachedTexture(s,e));var h={originalWidth:e.width||e.originalWidth,originalHeight:e.height||e.originalHeight,sourceWidth:i,sourceHeight:n,destinationWidth:i,destinationHeight:n,context:a,sourceTexture:this.createTexture(a,i,n,!o&&e),targetTexture:this.createTexture(a,i,n),originalTexture:o||this.createTexture(a,i,n,!o&&e),passes:t.length,webgl:!0,aPosition:this.aPosition,programCache:this.programCache,pass:0,filterBackend:this,targetCanvas:r},l=a.createFramebuffer();return a.bindFramebuffer(a.FRAMEBUFFER,l),t.forEach((function(t){t&&t.applyTo(h)})),function(t){var e=t.targetCanvas,i=e.width,n=e.height,r=t.destinationWidth,s=t.destinationHeight;i===r&&n===s||(e.width=r,e.height=s)}(h),this.copyGLTo2D(a,h),a.bindTexture(a.TEXTURE_2D,null),a.deleteTexture(h.sourceTexture),a.deleteTexture(h.targetTexture),a.deleteFramebuffer(l),r.getContext("2d").setTransform(1,0,0,1,0,0),h},dispose:function(){this.canvas&&(this.canvas=null,this.gl=null),this.clearWebGLCaches()},clearWebGLCaches:function(){this.programCache={},this.textureCache={}},createTexture:function(t,e,i,n){var r=t.createTexture();return t.bindTexture(t.TEXTURE_2D,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),n?t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,n):t.texImage2D(t.TEXTURE_2D,0,t.RGBA,e,i,0,t.RGBA,t.UNSIGNED_BYTE,null),r},getCachedTexture:function(t,e){if(this.textureCache[t])return this.textureCache[t];var i=this.createTexture(this.gl,e.width,e.height,e);return this.textureCache[t]=i,i},evictCachesForKey:function(t){this.textureCache[t]&&(this.gl.deleteTexture(this.textureCache[t]),delete this.textureCache[t])},copyGLTo2D:I,captureGPUInfo:function(){if(this.gpuInfo)return this.gpuInfo;var t=this.gl,e={renderer:"",vendor:""};if(!t)return e;var i=t.getExtension("WEBGL_debug_renderer_info");if(i){var n=t.getParameter(i.UNMASKED_RENDERER_WEBGL),r=t.getParameter(i.UNMASKED_VENDOR_WEBGL);n&&(e.renderer=n.toLowerCase()),r&&(e.vendor=r.toLowerCase())}return this.gpuInfo=e,e}}}(),function(){var t=function(){};function e(){}T.Canvas2dFilterBackend=e,e.prototype={evictCachesForKey:t,dispose:t,clearWebGLCaches:t,resources:{},applyFilters:function(t,e,i,n,r){var s=r.getContext("2d");s.drawImage(e,0,0,i,n);var o={sourceWidth:i,sourceHeight:n,imageData:s.getImageData(0,0,i,n),originalEl:e,originalImageData:s.getImageData(0,0,i,n),canvasEl:r,ctx:s,filterBackend:this};return t.forEach((function(t){t.applyTo(o)})),o.imageData.width===i&&o.imageData.height===n||(r.width=o.imageData.width,r.height=o.imageData.height),s.putImageData(o.imageData,0,0),o}}}(),T.Image=T.Image||{},T.Image.filters=T.Image.filters||{},T.Image.filters.BaseFilter=T.util.createClass({type:"BaseFilter",vertexSource:"attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvoid main() {\nvTexCoord = aPosition;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",fragmentSource:"precision highp float;\nvarying vec2 vTexCoord;\nuniform sampler2D uTexture;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\n}",initialize:function(t){t&&this.setOptions(t)},setOptions:function(t){for(var e in t)this[e]=t[e]},createProgram:function(t,e,i){e=e||this.fragmentSource,i=i||this.vertexSource,"highp"!==T.webGlPrecision&&(e=e.replace(/precision highp float/g,"precision "+T.webGlPrecision+" float"));var n=t.createShader(t.VERTEX_SHADER);if(t.shaderSource(n,i),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS))throw new Error("Vertex shader compile error for "+this.type+": "+t.getShaderInfoLog(n));var r=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(r,e),t.compileShader(r),!t.getShaderParameter(r,t.COMPILE_STATUS))throw new Error("Fragment shader compile error for "+this.type+": "+t.getShaderInfoLog(r));var s=t.createProgram();if(t.attachShader(s,n),t.attachShader(s,r),t.linkProgram(s),!t.getProgramParameter(s,t.LINK_STATUS))throw new Error('Shader link error for "${this.type}" '+t.getProgramInfoLog(s));var o=this.getAttributeLocations(t,s),a=this.getUniformLocations(t,s)||{};return a.uStepW=t.getUniformLocation(s,"uStepW"),a.uStepH=t.getUniformLocation(s,"uStepH"),{program:s,attributeLocations:o,uniformLocations:a}},getAttributeLocations:function(t,e){return{aPosition:t.getAttribLocation(e,"aPosition")}},getUniformLocations:function(){return{}},sendAttributeData:function(t,e,i){var n=e.aPosition,r=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,r),t.enableVertexAttribArray(n),t.vertexAttribPointer(n,2,t.FLOAT,!1,0,0),t.bufferData(t.ARRAY_BUFFER,i,t.STATIC_DRAW)},_setupFrameBuffer:function(t){var e,i,n=t.context;t.passes>1?(e=t.destinationWidth,i=t.destinationHeight,t.sourceWidth===e&&t.sourceHeight===i||(n.deleteTexture(t.targetTexture),t.targetTexture=t.filterBackend.createTexture(n,e,i)),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,t.targetTexture,0)):(n.bindFramebuffer(n.FRAMEBUFFER,null),n.finish())},_swapTextures:function(t){t.passes--,t.pass++;var e=t.targetTexture;t.targetTexture=t.sourceTexture,t.sourceTexture=e},isNeutralState:function(){var t=this.mainParameter,e=T.Image.filters[this.type].prototype;if(t){if(Array.isArray(e[t])){for(var i=e[t].length;i--;)if(this[t][i]!==e[t][i])return!1;return!0}return e[t]===this[t]}return!1},applyTo:function(t){t.webgl?(this._setupFrameBuffer(t),this.applyToWebGL(t),this._swapTextures(t)):this.applyTo2d(t)},retrieveShader:function(t){return t.programCache.hasOwnProperty(this.type)||(t.programCache[this.type]=this.createProgram(t.context)),t.programCache[this.type]},applyToWebGL:function(t){var e=t.context,i=this.retrieveShader(t);0===t.pass&&t.originalTexture?e.bindTexture(e.TEXTURE_2D,t.originalTexture):e.bindTexture(e.TEXTURE_2D,t.sourceTexture),e.useProgram(i.program),this.sendAttributeData(e,i.attributeLocations,t.aPosition),e.uniform1f(i.uniformLocations.uStepW,1/t.sourceWidth),e.uniform1f(i.uniformLocations.uStepH,1/t.sourceHeight),this.sendUniformData(e,i.uniformLocations),e.viewport(0,0,t.destinationWidth,t.destinationHeight),e.drawArrays(e.TRIANGLE_STRIP,0,4)},bindAdditionalTexture:function(t,e,i){t.activeTexture(i),t.bindTexture(t.TEXTURE_2D,e),t.activeTexture(t.TEXTURE0)},unbindAdditionalTexture:function(t,e){t.activeTexture(e),t.bindTexture(t.TEXTURE_2D,null),t.activeTexture(t.TEXTURE0)},getMainParameter:function(){return this[this.mainParameter]},setMainParameter:function(t){this[this.mainParameter]=t},sendUniformData:function(){},createHelpLayer:function(t){if(!t.helpLayer){var e=document.createElement("canvas");e.width=t.sourceWidth,e.height=t.sourceHeight,t.helpLayer=e}},toObject:function(){var t={type:this.type},e=this.mainParameter;return e&&(t[e]=this[e]),t},toJSON:function(){return this.toObject()}}),T.Image.filters.BaseFilter.fromObject=function(t,e){var i=new T.Image.filters[t.type](t);return e&&e(i),i},function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,n=e.util.createClass;i.ColorMatrix=n(i.BaseFilter,{type:"ColorMatrix",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nuniform mat4 uColorMatrix;\nuniform vec4 uConstants;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor *= uColorMatrix;\ncolor += uConstants;\ngl_FragColor = color;\n}",matrix:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],mainParameter:"matrix",colorsOnly:!0,initialize:function(t){this.callSuper("initialize",t),this.matrix=this.matrix.slice(0)},applyTo2d:function(t){var e,i,n,r,s,o=t.imageData.data,a=o.length,h=this.matrix,l=this.colorsOnly;for(s=0;s=w||o<0||o>=y||(h=4*(a*y+o),l=p[f*_+d],e+=m[h]*l,i+=m[h+1]*l,n+=m[h+2]*l,S||(r+=m[h+3]*l));E[s]=e,E[s+1]=i,E[s+2]=n,E[s+3]=S?m[s+3]:r}t.imageData=C},getUniformLocations:function(t,e){return{uMatrix:t.getUniformLocation(e,"uMatrix"),uOpaque:t.getUniformLocation(e,"uOpaque"),uHalfSize:t.getUniformLocation(e,"uHalfSize"),uSize:t.getUniformLocation(e,"uSize")}},sendUniformData:function(t,e){t.uniform1fv(e.uMatrix,this.matrix)},toObject:function(){return i(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),e.Image.filters.Convolute.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,n=e.util.createClass;i.Grayscale=n(i.BaseFilter,{type:"Grayscale",fragmentSource:{average:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat average = (color.r + color.b + color.g) / 3.0;\ngl_FragColor = vec4(average, average, average, color.a);\n}",lightness:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\ngl_FragColor = vec4(average, average, average, col.a);\n}",luminosity:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\ngl_FragColor = vec4(average, average, average, col.a);\n}"},mode:"average",mainParameter:"mode",applyTo2d:function(t){var e,i,n=t.imageData.data,r=n.length,s=this.mode;for(e=0;el[0]&&r>l[1]&&s>l[2]&&n 0.0) {\n"+this.fragmentSource[t]+"}\n}"},retrieveShader:function(t){var e,i=this.type+"_"+this.mode;return t.programCache.hasOwnProperty(i)||(e=this.buildSource(this.mode),t.programCache[i]=this.createProgram(t.context,e)),t.programCache[i]},applyTo2d:function(t){var i,n,r,s,o,a,h,l=t.imageData.data,c=l.length,u=1-this.alpha;i=(h=new e.Color(this.color).getSource())[0]*this.alpha,n=h[1]*this.alpha,r=h[2]*this.alpha;for(var d=0;d=t||e<=-t)return 0;if(e<1.1920929e-7&&e>-1.1920929e-7)return 1;var i=(e*=Math.PI)/t;return a(e)/e*a(i)/i}},applyTo2d:function(t){var e=t.imageData,i=this.scaleX,n=this.scaleY;this.rcpScaleX=1/i,this.rcpScaleY=1/n;var r,s=e.width,a=e.height,h=o(s*i),l=o(a*n);"sliceHack"===this.resizeType?r=this.sliceByTwo(t,s,a,h,l):"hermite"===this.resizeType?r=this.hermiteFastResize(t,s,a,h,l):"bilinear"===this.resizeType?r=this.bilinearFiltering(t,s,a,h,l):"lanczos"===this.resizeType&&(r=this.lanczosResize(t,s,a,h,l)),t.imageData=r},sliceByTwo:function(t,i,r,s,o){var a,h,l=t.imageData,c=.5,u=!1,d=!1,f=i*c,g=r*c,m=e.filterBackend.resources,p=0,_=0,v=i,y=0;for(m.sliceByTwo||(m.sliceByTwo=document.createElement("canvas")),((a=m.sliceByTwo).width<1.5*i||a.height=e)){L=n(1e3*s(T-C.x)),w[L]||(w[L]={});for(var F=E.y-y;F<=E.y+y;F++)F<0||F>=o||(M=n(1e3*s(F-C.y)),w[L][M]||(w[L][M]=f(r(i(L*p,2)+i(M*_,2))/1e3)),(b=w[L][M])>0&&(x+=b,O+=b*c[I=4*(F*e+T)],A+=b*c[I+1],R+=b*c[I+2],D+=b*c[I+3]))}d[I=4*(S*a+h)]=O/x,d[I+1]=A/x,d[I+2]=R/x,d[I+3]=D/x}return++h1&&M<-1||(y=2*M*M*M-3*M*M+1)>0&&(b+=y*f[3+(L=4*(D+x*e))],C+=y,f[L+3]<255&&(y=y*f[L+3]/250),E+=y*f[L],S+=y*f[L+1],T+=y*f[L+2],w+=y)}m[v]=E/w,m[v+1]=S/w,m[v+2]=T/w,m[v+3]=b/C}return g},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),e.Image.filters.Resize.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,n=e.util.createClass;i.Contrast=n(i.BaseFilter,{type:"Contrast",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uContrast;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\ncolor.rgb = contrastF * (color.rgb - 0.5) + 0.5;\ngl_FragColor = color;\n}",contrast:0,mainParameter:"contrast",applyTo2d:function(t){if(0!==this.contrast){var e,i=t.imageData.data,n=i.length,r=Math.floor(255*this.contrast),s=259*(r+255)/(255*(259-r));for(e=0;e1&&(e=1/this.aspectRatio):this.aspectRatio<1&&(e=this.aspectRatio),t=e*this.blur*.12,this.horizontal?i[0]=t:i[1]=t,i}}),i.Blur.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,n=e.util.createClass;i.Gamma=n(i.BaseFilter,{type:"Gamma",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform vec3 uGamma;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec3 correction = (1.0 / uGamma);\ncolor.r = pow(color.r, correction.r);\ncolor.g = pow(color.g, correction.g);\ncolor.b = pow(color.b, correction.b);\ngl_FragColor = color;\ngl_FragColor.rgb *= color.a;\n}",gamma:[1,1,1],mainParameter:"gamma",initialize:function(t){this.gamma=[1,1,1],i.BaseFilter.prototype.initialize.call(this,t)},applyTo2d:function(t){var e,i=t.imageData.data,n=this.gamma,r=i.length,s=1/n[0],o=1/n[1],a=1/n[2];for(this.rVals||(this.rVals=new Uint8Array(256),this.gVals=new Uint8Array(256),this.bVals=new Uint8Array(256)),e=0,r=256;e'},_getCacheCanvasDimensions:function(){var t=this.callSuper("_getCacheCanvasDimensions"),e=this.fontSize;return t.width+=e*t.zoomX,t.height+=e*t.zoomY,t},_render:function(t){var e=this.path;e&&!e.isNotVisible()&&e._render(t),this._setTextStyles(t),this._renderTextLinesBackground(t),this._renderTextDecoration(t,"underline"),this._renderText(t),this._renderTextDecoration(t,"overline"),this._renderTextDecoration(t,"linethrough")},_renderText:function(t){"stroke"===this.paintFirst?(this._renderTextStroke(t),this._renderTextFill(t)):(this._renderTextFill(t),this._renderTextStroke(t))},_setTextStyles:function(t,e,i){if(t.textBaseline="alphabetical",this.path)switch(this.pathAlign){case"center":t.textBaseline="middle";break;case"ascender":t.textBaseline="top";break;case"descender":t.textBaseline="bottom"}t.font=this._getFontDeclaration(e,i)},calcTextWidth:function(){for(var t=this.getLineWidth(0),e=1,i=this._textLines.length;et&&(t=n)}return t},_renderTextLine:function(t,e,i,n,r,s){this._renderChars(t,e,i,n,r,s)},_renderTextLinesBackground:function(t){if(this.textBackgroundColor||this.styleHas("textBackgroundColor")){for(var e,i,n,r,s,o,a,h=t.fillStyle,l=this._getLeftOffset(),c=this._getTopOffset(),u=0,d=0,f=this.path,g=0,m=this._textLines.length;g=0:ia?u%=a:u<0&&(u+=a),this._setGraphemeOnPath(u,s,o),u+=s.kernedWidth}return{width:h,numOfSpaces:0}},_setGraphemeOnPath:function(t,i,n){var r=t+i.kernedWidth/2,s=this.path,o=e.util.getPointOnPath(s.path,r,s.segmentsInfo);i.renderLeft=o.x-n.x,i.renderTop=o.y-n.y,i.angle=o.angle+("right"===this.pathSide?Math.PI:0)},_getGraphemeBox:function(t,e,i,n,r){var s,o=this.getCompleteStyleDeclaration(e,i),a=n?this.getCompleteStyleDeclaration(e,i-1):{},h=this._measureChar(t,o,n,a),l=h.kernedWidth,c=h.width;0!==this.charSpacing&&(c+=s=this._getWidthOfCharSpacing(),l+=s);var u={width:c,left:0,height:o.fontSize,kernedWidth:l,deltaY:o.deltaY};if(i>0&&!r){var d=this.__charBounds[e][i-1];u.left=d.left+d.width+h.kernedWidth-h.width}return u},getHeightOfLine:function(t){if(this.__lineHeights[t])return this.__lineHeights[t];for(var e=this._textLines[t],i=this.getHeightOfChar(t,0),n=1,r=e.length;n0){var x=v+s+u;"rtl"===this.direction&&(x=this.width-x-d),l&&_&&(t.fillStyle=_,t.fillRect(x,c+E*n+o,d,this.fontSize/15)),u=f.left,d=f.width,l=g,_=p,n=r,o=a}else d+=f.kernedWidth;x=v+s+u,"rtl"===this.direction&&(x=this.width-x-d),t.fillStyle=p,g&&p&&t.fillRect(x,c+E*n+o,d-C,this.fontSize/15),y+=i}else y+=i;this._removeShadow(t)}},_getFontDeclaration:function(t,i){var n=t||this,r=this.fontFamily,s=e.Text.genericFonts.indexOf(r.toLowerCase())>-1,o=void 0===r||r.indexOf("'")>-1||r.indexOf(",")>-1||r.indexOf('"')>-1||s?n.fontFamily:'"'+n.fontFamily+'"';return[e.isLikelyNode?n.fontWeight:n.fontStyle,e.isLikelyNode?n.fontStyle:n.fontWeight,i?this.CACHE_FONT_SIZE+"px":n.fontSize+"px",o].join(" ")},render:function(t){this.visible&&(this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(this._shouldClearDimensionCache()&&this.initDimensions(),this.callSuper("render",t)))},_splitTextIntoLines:function(t){for(var i=t.split(this._reNewline),n=new Array(i.length),r=["\n"],s=[],o=0;o-1&&(t.underline=!0),t.textDecoration.indexOf("line-through")>-1&&(t.linethrough=!0),t.textDecoration.indexOf("overline")>-1&&(t.overline=!0),delete t.textDecoration)}T.IText=T.util.createClass(T.Text,T.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"",cursorDelay:1e3,cursorDuration:600,caching:!0,hiddenTextareaContainer:null,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,__widthOfSpace:[],inCompositionMode:!1,initialize:function(t,e){this.callSuper("initialize",t,e),this.initBehavior()},setSelectionStart:function(t){t=Math.max(t,0),this._updateAndFire("selectionStart",t)},setSelectionEnd:function(t){t=Math.min(t,this.text.length),this._updateAndFire("selectionEnd",t)},_updateAndFire:function(t,e){this[t]!==e&&(this._fireSelectionChanged(),this[t]=e),this._updateTextarea()},_fireSelectionChanged:function(){this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},initDimensions:function(){this.isEditing&&this.initDelayedCursor(),this.clearContextTop(),this.callSuper("initDimensions")},render:function(t){this.clearContextTop(),this.callSuper("render",t),this.cursorOffsetCache={},this.renderCursorOrSelection()},_render:function(t){this.callSuper("_render",t)},clearContextTop:function(t){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var e=this.canvas.contextTop,i=this.canvas.viewportTransform;e.save(),e.transform(i[0],i[1],i[2],i[3],i[4],i[5]),this.transform(e),this._clearTextArea(e),t||e.restore()}},renderCursorOrSelection:function(){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var t=this._getCursorBoundaries(),e=this.canvas.contextTop;this.clearContextTop(!0),this.selectionStart===this.selectionEnd?this.renderCursor(t,e):this.renderSelection(t,e),e.restore()}},_clearTextArea:function(t){var e=this.width+4,i=this.height+4;t.clearRect(-e/2,-i/2,e,i)},_getCursorBoundaries:function(t){void 0===t&&(t=this.selectionStart);var e=this._getLeftOffset(),i=this._getTopOffset(),n=this._getCursorBoundariesOffsets(t);return{left:e,top:i,leftOffset:n.left,topOffset:n.top}},_getCursorBoundariesOffsets:function(t){if(this.cursorOffsetCache&&"top"in this.cursorOffsetCache)return this.cursorOffsetCache;var e,i,n,r,s=0,o=0,a=this.get2DCursorLocation(t);n=a.charIndex,i=a.lineIndex;for(var h=0;h0?o:0)},"rtl"===this.direction&&(r.left*=-1),this.cursorOffsetCache=r,this.cursorOffsetCache},renderCursor:function(t,e){var i=this.get2DCursorLocation(),n=i.lineIndex,r=i.charIndex>0?i.charIndex-1:0,s=this.getValueOfPropertyAt(n,r,"fontSize"),o=this.scaleX*this.canvas.getZoom(),a=this.cursorWidth/o,h=t.topOffset,l=this.getValueOfPropertyAt(n,r,"deltaY");h+=(1-this._fontSizeFraction)*this.getHeightOfLine(n)/this.lineHeight-s*(1-this._fontSizeFraction),this.inCompositionMode&&this.renderSelection(t,e),e.fillStyle=this.cursorColor||this.getValueOfPropertyAt(n,r,"fill"),e.globalAlpha=this.__isMousedown?1:this._currentCursorOpacity,e.fillRect(t.left+t.leftOffset-a/2,h+t.top+l,a,s)},renderSelection:function(t,e){for(var i=this.inCompositionMode?this.hiddenTextarea.selectionStart:this.selectionStart,n=this.inCompositionMode?this.hiddenTextarea.selectionEnd:this.selectionEnd,r=-1!==this.textAlign.indexOf("justify"),s=this.get2DCursorLocation(i),o=this.get2DCursorLocation(n),a=s.lineIndex,h=o.lineIndex,l=s.charIndex<0?0:s.charIndex,c=o.charIndex<0?0:o.charIndex,u=a;u<=h;u++){var d,f=this._getLineLeftOffset(u)||0,g=this.getHeightOfLine(u),m=0,p=0;if(u===a&&(m=this.__charBounds[a][l].left),u>=a&&u1)&&(g/=this.lineHeight);var v=t.left+f+m,y=p-m,w=g,C=0;this.inCompositionMode?(e.fillStyle=this.compositionColor||"black",w=1,C=g):e.fillStyle=this.selectionColor,"rtl"===this.direction&&(v=this.width-v-y),e.fillRect(v,t.top+t.topOffset+C,y,w),t.topOffset+=d}},getCurrentCharFontSize:function(){var t=this._getCurrentCharIndex();return this.getValueOfPropertyAt(t.l,t.c,"fontSize")},getCurrentCharColor:function(){var t=this._getCurrentCharIndex();return this.getValueOfPropertyAt(t.l,t.c,"fill")},_getCurrentCharIndex:function(){var t=this.get2DCursorLocation(this.selectionStart,!0),e=t.charIndex>0?t.charIndex-1:0;return{l:t.lineIndex,c:e}}}),T.IText.fromObject=function(e,i){if(t(e),e.styles)for(var n in e.styles)for(var r in e.styles[n])t(e.styles[n][r]);T.Object._fromObject("IText",e,i,"text")}}(),S=T.util.object.clone,T.util.object.extend(T.IText.prototype,{initBehavior:function(){this.initAddedHandler(),this.initRemovedHandler(),this.initCursorSelectionHandlers(),this.initDoubleClickSimulation(),this.mouseMoveHandler=this.mouseMoveHandler.bind(this)},onDeselect:function(){this.isEditing&&this.exitEditing(),this.selected=!1},initAddedHandler:function(){var t=this;this.on("added",(function(){var e=t.canvas;e&&(e._hasITextHandlers||(e._hasITextHandlers=!0,t._initCanvasHandlers(e)),e._iTextInstances=e._iTextInstances||[],e._iTextInstances.push(t))}))},initRemovedHandler:function(){var t=this;this.on("removed",(function(){var e=t.canvas;e&&(e._iTextInstances=e._iTextInstances||[],T.util.removeFromArray(e._iTextInstances,t),0===e._iTextInstances.length&&(e._hasITextHandlers=!1,t._removeCanvasHandlers(e)))}))},_initCanvasHandlers:function(t){t._mouseUpITextHandler=function(){t._iTextInstances&&t._iTextInstances.forEach((function(t){t.__isMousedown=!1}))},t.on("mouse:up",t._mouseUpITextHandler)},_removeCanvasHandlers:function(t){t.off("mouse:up",t._mouseUpITextHandler)},_tick:function(){this._currentTickState=this._animateCursor(this,1,this.cursorDuration,"_onTickComplete")},_animateCursor:function(t,e,i,n){var r;return r={isAborted:!1,abort:function(){this.isAborted=!0}},t.animate("_currentCursorOpacity",e,{duration:i,onComplete:function(){r.isAborted||t[n]()},onChange:function(){t.canvas&&t.selectionStart===t.selectionEnd&&t.renderCursorOrSelection()},abort:function(){return r.isAborted}}),r},_onTickComplete:function(){var t=this;this._cursorTimeout1&&clearTimeout(this._cursorTimeout1),this._cursorTimeout1=setTimeout((function(){t._currentTickCompleteState=t._animateCursor(t,0,this.cursorDuration/2,"_tick")}),100)},initDelayedCursor:function(t){var e=this,i=t?0:this.cursorDelay;this.abortCursorAnimation(),this._currentCursorOpacity=1,this._cursorTimeout2=setTimeout((function(){e._tick()}),i)},abortCursorAnimation:function(){var t=this._currentTickState||this._currentTickCompleteState,e=this.canvas;this._currentTickState&&this._currentTickState.abort(),this._currentTickCompleteState&&this._currentTickCompleteState.abort(),clearTimeout(this._cursorTimeout1),clearTimeout(this._cursorTimeout2),this._currentCursorOpacity=0,t&&e&&e.clearContext(e.contextTop||e.contextContainer)},selectAll:function(){return this.selectionStart=0,this.selectionEnd=this._text.length,this._fireSelectionChanged(),this._updateTextarea(),this},getSelectedText:function(){return this._text.slice(this.selectionStart,this.selectionEnd).join("")},findWordBoundaryLeft:function(t){var e=0,i=t-1;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)e++,i--;for(;/\S/.test(this._text[i])&&i>-1;)e++,i--;return t-e},findWordBoundaryRight:function(t){var e=0,i=t;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)e++,i++;for(;/\S/.test(this._text[i])&&i-1;)e++,i--;return t-e},findLineBoundaryRight:function(t){for(var e=0,i=t;!/\n/.test(this._text[i])&&i0&&nthis.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=e):(this.selectionStart=e,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===i&&this.selectionEnd===n||(this.restartCursorIfNeeded(),this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},fromStringToGraphemeSelection:function(t,e,i){var n=i.slice(0,t),r=T.util.string.graphemeSplit(n).length;if(t===e)return{selectionStart:r,selectionEnd:r};var s=i.slice(t,e);return{selectionStart:r,selectionEnd:r+T.util.string.graphemeSplit(s).length}},fromGraphemeToStringSelection:function(t,e,i){var n=i.slice(0,t).join("").length;return t===e?{selectionStart:n,selectionEnd:n}:{selectionStart:n,selectionEnd:n+i.slice(t,e).join("").length}},_updateTextarea:function(){if(this.cursorOffsetCache={},this.hiddenTextarea){if(!this.inCompositionMode){var t=this.fromGraphemeToStringSelection(this.selectionStart,this.selectionEnd,this._text);this.hiddenTextarea.selectionStart=t.selectionStart,this.hiddenTextarea.selectionEnd=t.selectionEnd}this.updateTextareaPosition()}},updateFromTextArea:function(){if(this.hiddenTextarea){this.cursorOffsetCache={},this.text=this.hiddenTextarea.value,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords());var t=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value);this.selectionEnd=this.selectionStart=t.selectionEnd,this.inCompositionMode||(this.selectionStart=t.selectionStart),this.updateTextareaPosition()}},updateTextareaPosition:function(){if(this.selectionStart===this.selectionEnd){var t=this._calcTextareaPosition();this.hiddenTextarea.style.left=t.left,this.hiddenTextarea.style.top=t.top}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var t=this.inCompositionMode?this.compositionStart:this.selectionStart,e=this._getCursorBoundaries(t),i=this.get2DCursorLocation(t),n=i.lineIndex,r=i.charIndex,s=this.getValueOfPropertyAt(n,r,"fontSize")*this.lineHeight,o=e.leftOffset,a=this.calcTransformMatrix(),h={x:e.left+o,y:e.top+e.topOffset+s},l=this.canvas.getRetinaScaling(),c=this.canvas.upperCanvasEl,u=c.width/l,d=c.height/l,f=u-s,g=d-s,m=c.clientWidth/u,p=c.clientHeight/d;return h=T.util.transformPoint(h,a),(h=T.util.transformPoint(h,this.canvas.viewportTransform)).x*=m,h.y*=p,h.x<0&&(h.x=0),h.x>f&&(h.x=f),h.y<0&&(h.y=0),h.y>g&&(h.y=g),h.x+=this.canvas._offset.left,h.y+=this.canvas._offset.top,{left:h.x+"px",top:h.y+"px",fontSize:s+"px",charHeight:s}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,selectable:this.selectable,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.hoverCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.selectable=this._savedProps.selectable,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var t=this._textBeforeEdit!==this.text,e=this.hiddenTextarea;return this.selected=!1,this.isEditing=!1,this.selectionEnd=this.selectionStart,e&&(e.blur&&e.blur(),e.parentNode&&e.parentNode.removeChild(e)),this.hiddenTextarea=null,this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this.fire("editing:exited"),t&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),t&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var t in this.styles)this._textLines[t]||delete this.styles[t]},removeStyleFromTo:function(t,e){var i,n,r=this.get2DCursorLocation(t,!0),s=this.get2DCursorLocation(e,!0),o=r.lineIndex,a=r.charIndex,h=s.lineIndex,l=s.charIndex;if(o!==h){if(this.styles[o])for(i=a;i=l&&(n[c-d]=n[u],delete n[u])}},shiftLineStyles:function(t,e){var i=S(this.styles);for(var n in this.styles){var r=parseInt(n,10);r>t&&(this.styles[r+e]=i[r],i[r-e]||delete this.styles[r])}},restartCursorIfNeeded:function(){this._currentTickState&&!this._currentTickState.isAborted&&this._currentTickCompleteState&&!this._currentTickCompleteState.isAborted||this.initDelayedCursor()},insertNewlineStyleObject:function(t,e,i,n){var r,s={},o=!1,a=this._unwrappedTextLines[t].length===e;for(var h in i||(i=1),this.shiftLineStyles(t,i),this.styles[t]&&(r=this.styles[t][0===e?e:e-1]),this.styles[t]){var l=parseInt(h,10);l>=e&&(o=!0,s[l-e]=this.styles[t][h],a&&0===e||delete this.styles[t][h])}var c=!1;for(o&&!a&&(this.styles[t+i]=s,c=!0),c&&i--;i>0;)n&&n[i-1]?this.styles[t+i]={0:S(n[i-1])}:r?this.styles[t+i]={0:S(r)}:delete this.styles[t+i],i--;this._forceClearCache=!0},insertCharStyleObject:function(t,e,i,n){this.styles||(this.styles={});var r=this.styles[t],s=r?S(r):{};for(var o in i||(i=1),s){var a=parseInt(o,10);a>=e&&(r[a+i]=s[a],s[a-i]||delete r[a])}if(this._forceClearCache=!0,n)for(;i--;)Object.keys(n[i]).length&&(this.styles[t]||(this.styles[t]={}),this.styles[t][e+i]=S(n[i]));else if(r)for(var h=r[e?e-1:1];h&&i--;)this.styles[t][e+i]=S(h)},insertNewStyleBlock:function(t,e,i){for(var n=this.get2DCursorLocation(e,!0),r=[0],s=0,o=0;o0&&(this.insertCharStyleObject(n.lineIndex,n.charIndex,r[0],i),i=i&&i.slice(r[0]+1)),s&&this.insertNewlineStyleObject(n.lineIndex,n.charIndex+r[0],s),o=1;o0?this.insertCharStyleObject(n.lineIndex+o,0,r[o],i):i&&this.styles[n.lineIndex+o]&&i[0]&&(this.styles[n.lineIndex+o][0]=i[0]),i=i&&i.slice(r[o]+1);r[o]>0&&this.insertCharStyleObject(n.lineIndex+o,0,r[o],i)},setSelectionStartEndWithShift:function(t,e,i){i<=t?(e===t?this._selectionDirection="left":"right"===this._selectionDirection&&(this._selectionDirection="left",this.selectionEnd=t),this.selectionStart=i):i>t&&it?this.selectionStart=t:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>t?this.selectionEnd=t:this.selectionEnd<0&&(this.selectionEnd=0)}}),T.util.object.extend(T.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown)},onMouseDown:function(t){if(this.canvas){this.__newClickTime=+new Date;var e=t.pointer;this.isTripleClick(e)&&(this.fire("tripleclick",t),this._stopEvent(t.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=e,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected}},isTripleClick:function(t){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===t.x&&this.__lastPointer.y===t.y},_stopEvent:function(t){t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation()},initCursorSelectionHandlers:function(){this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},doubleClickHandler:function(t){this.isEditing&&this.selectWord(this.getSelectionStartFromPointer(t.e))},tripleClickHandler:function(t){this.isEditing&&this.selectLine(this.getSelectionStartFromPointer(t.e))},initClicks:function(){this.on("mousedblclick",this.doubleClickHandler),this.on("tripleclick",this.tripleClickHandler)},_mouseDownHandler:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.__isMousedown=!0,this.selected&&(this.inCompositionMode=!1,this.setCursorByClick(t.e)),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection()))},_mouseDownHandlerBefore:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.selected=this===this.canvas._activeObject)},initMousedownHandler:function(){this.on("mousedown",this._mouseDownHandler),this.on("mousedown:before",this._mouseDownHandlerBefore)},initMouseupHandler:function(){this.on("mouseup",this.mouseUpHandler)},mouseUpHandler:function(t){if(this.__isMousedown=!1,!(!this.editable||this.group||t.transform&&t.transform.actionPerformed||t.e.button&&1!==t.e.button)){if(this.canvas){var e=this.canvas._activeObject;if(e&&e!==this)return}this.__lastSelected&&!this.__corner?(this.selected=!1,this.__lastSelected=!1,this.enterEditing(t.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()):this.selected=!0}},setCursorByClick:function(t){var e=this.getSelectionStartFromPointer(t),i=this.selectionStart,n=this.selectionEnd;t.shiftKey?this.setSelectionStartEndWithShift(i,n,e):(this.selectionStart=e,this.selectionEnd=e),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(t){for(var e,i=this.getLocalPointer(t),n=0,r=0,s=0,o=0,a=0,h=0,l=this._textLines.length;h0&&(o+=this._textLines[h-1].length+this.missingNewlineOffset(h-1));r=this._getLineLeftOffset(a)*this.scaleX,e=this._textLines[a],"rtl"===this.direction&&(i.x=this.width*this.scaleX-i.x+r);for(var c=0,u=e.length;cs||o<0?0:1);return this.flipX&&(a=r-a),a>this._text.length&&(a=this._text.length),a}}),T.util.object.extend(T.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=T.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.setAttribute("autocorrect","off"),this.hiddenTextarea.setAttribute("autocomplete","off"),this.hiddenTextarea.setAttribute("spellcheck","false"),this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea",""),this.hiddenTextarea.setAttribute("wrap","off");var t=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+t.top+"; left: "+t.left+"; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; paddingーtop: "+t.fontSize+";",this.hiddenTextareaContainer?this.hiddenTextareaContainer.appendChild(this.hiddenTextarea):T.document.body.appendChild(this.hiddenTextarea),T.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),T.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),T.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),T.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),T.util.addListener(this.hiddenTextarea,"cut",this.copy.bind(this)),T.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(T.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},keysMap:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown"},keysMapRtl:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorLeft",36:"moveCursorRight",37:"moveCursorRight",38:"moveCursorUp",39:"moveCursorLeft",40:"moveCursorDown"},ctrlKeysMapUp:{67:"copy",88:"cut"},ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(t){if(this.isEditing){var e="rtl"===this.direction?this.keysMapRtl:this.keysMap;if(t.keyCode in e)this[e[t.keyCode]](t);else{if(!(t.keyCode in this.ctrlKeysMapDown)||!t.ctrlKey&&!t.metaKey)return;this[this.ctrlKeysMapDown[t.keyCode]](t)}t.stopImmediatePropagation(),t.preventDefault(),t.keyCode>=33&&t.keyCode<=40?(this.inCompositionMode=!1,this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.requestRenderAll()}},onKeyUp:function(t){!this.isEditing||this._copyDone||this.inCompositionMode?this._copyDone=!1:t.keyCode in this.ctrlKeysMapUp&&(t.ctrlKey||t.metaKey)&&(this[this.ctrlKeysMapUp[t.keyCode]](t),t.stopImmediatePropagation(),t.preventDefault(),this.canvas&&this.canvas.requestRenderAll())},onInput:function(t){var e=this.fromPaste;if(this.fromPaste=!1,t&&t.stopPropagation(),this.isEditing){var i,n,r,s,o,a=this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,h=this._text.length,l=a.length,c=l-h,u=this.selectionStart,d=this.selectionEnd,f=u!==d;if(""===this.hiddenTextarea.value)return this.styles={},this.updateFromTextArea(),this.fire("changed"),void(this.canvas&&(this.canvas.fire("text:changed",{target:this}),this.canvas.requestRenderAll()));var g=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value),m=u>g.selectionStart;f?(i=this._text.slice(u,d),c+=d-u):l0&&(n+=(i=this.__charBounds[t][e-1]).left+i.width),n},getDownCursorOffset:function(t,e){var i=this._getSelectionForOffset(t,e),n=this.get2DCursorLocation(i),r=n.lineIndex;if(r===this._textLines.length-1||t.metaKey||34===t.keyCode)return this._text.length-i;var s=n.charIndex,o=this._getWidthBeforeCursor(r,s),a=this._getIndexOnLine(r+1,o);return this._textLines[r].slice(s).length+a+1+this.missingNewlineOffset(r)},_getSelectionForOffset:function(t,e){return t.shiftKey&&this.selectionStart!==this.selectionEnd&&e?this.selectionEnd:this.selectionStart},getUpCursorOffset:function(t,e){var i=this._getSelectionForOffset(t,e),n=this.get2DCursorLocation(i),r=n.lineIndex;if(0===r||t.metaKey||33===t.keyCode)return-i;var s=n.charIndex,o=this._getWidthBeforeCursor(r,s),a=this._getIndexOnLine(r-1,o),h=this._textLines[r].slice(0,s),l=this.missingNewlineOffset(r-1);return-this._textLines[r-1].length+a-h.length+(1-l)},_getIndexOnLine:function(t,e){for(var i,n,r=this._textLines[t],s=this._getLineLeftOffset(t),o=0,a=0,h=r.length;ae){n=!0;var l=s-i,c=s,u=Math.abs(l-e);o=Math.abs(c-e)=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorUpOrDown("Down",t)},moveCursorUp:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",t)},_moveCursorUpOrDown:function(t,e){var i=this["get"+t+"CursorOffset"](e,"right"===this._selectionDirection);e.shiftKey?this.moveCursorWithShift(i):this.moveCursorWithoutShift(i),0!==i&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(t){var e="left"===this._selectionDirection?this.selectionStart+t:this.selectionEnd+t;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,e),0!==t},moveCursorWithoutShift:function(t){return t<0?(this.selectionStart+=t,this.selectionEnd=this.selectionStart):(this.selectionEnd+=t,this.selectionStart=this.selectionEnd),0!==t},moveCursorLeft:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",t)},_move:function(t,e,i){var n;if(t.altKey)n=this["findWordBoundary"+i](this[e]);else{if(!t.metaKey&&35!==t.keyCode&&36!==t.keyCode)return this[e]+="Left"===i?-1:1,!0;n=this["findLineBoundary"+i](this[e])}if(void 0!==typeof n&&this[e]!==n)return this[e]=n,!0},_moveLeft:function(t,e){return this._move(t,e,"Left")},_moveRight:function(t,e){return this._move(t,e,"Right")},moveCursorLeftWithoutShift:function(t){var e=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(e=this._moveLeft(t,"selectionStart")),this.selectionEnd=this.selectionStart,e},moveCursorLeftWithShift:function(t){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(t,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(t,"selectionStart")):void 0},moveCursorRight:function(t){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorLeftOrRight("Right",t)},_moveCursorLeftOrRight:function(t,e){var i="moveCursor"+t+"With";this._currentCursorOpacity=1,e.shiftKey?i+="Shift":i+="outShift",this[i](e)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(t){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(t,"selectionStart"):this.selectionEnd!==this._text.length?(this._selectionDirection="right",this._moveRight(t,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(t){var e=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(e=this._moveRight(t,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,e},removeChars:function(t,e){void 0===e&&(e=t+1),this.removeStyleFromTo(t,e),this._text.splice(t,e-t),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()},insertChars:function(t,e,i,n){void 0===n&&(n=i),n>i&&this.removeStyleFromTo(i,n);var r=T.util.string.graphemeSplit(t);this.insertNewStyleBlock(r,i,e),this._text=[].concat(this._text.slice(0,i),r,this._text.slice(n)),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()}}),function(){var t=T.util.toFixed,e=/ +/g;T.util.object.extend(T.Text.prototype,{_toSVG:function(){var t=this._getSVGLeftTopOffsets(),e=this._getSVGTextAndBg(t.textTop,t.textLeft);return this._wrapSVGTextAndBg(e)},toSVG:function(t){return this._createBaseSVGMarkup(this._toSVG(),{reviver:t,noStyle:!0,withShadow:!0})},_getSVGLeftTopOffsets:function(){return{textLeft:-this.width/2,textTop:-this.height/2,lineTop:this.getHeightOfLine(0)}},_wrapSVGTextAndBg:function(t){var e=this.getSvgTextDecoration(this);return[t.textBgRects.join(""),'\t\t",t.textSpans.join(""),"\n"]},_getSVGTextAndBg:function(t,e){var i,n=[],r=[],s=t;this._setSVGBg(r);for(var o=0,a=this._textLines.length;o",T.util.string.escapeXml(i),""].join("")},_setSVGTextLineText:function(t,e,i,n){var r,s,o,a,h,l=this.getHeightOfLine(e),c=-1!==this.textAlign.indexOf("justify"),u="",d=0,f=this._textLines[e];n+=l*(1-this._fontSizeFraction)/this.lineHeight;for(var g=0,m=f.length-1;g<=m;g++)h=g===m||this.charSpacing,u+=f[g],o=this.__charBounds[e][g],0===d?(i+=o.kernedWidth-o.width,d+=o.width):d+=o.kernedWidth,c&&!h&&this._reSpaceAndTab.test(f[g])&&(h=!0),h||(r=r||this.getCompleteStyleDeclaration(e,g),s=this.getCompleteStyleDeclaration(e,g+1),h=this._hasStyleChangedForSvg(r,s)),h&&(a=this._getStyleDeclaration(e,g)||{},t.push(this._createTextCharSpan(u,a,i,n)),u="",r=s,i+=d,d=0)},_pushTextBgRect:function(e,i,n,r,s,o){var a=T.Object.NUM_FRACTION_DIGITS;e.push("\t\t\n')},_setSVGTextLineBg:function(t,e,i,n){for(var r,s,o=this._textLines[e],a=this.getHeightOfLine(e)/this.lineHeight,h=0,l=0,c=this.getValueOfPropertyAt(e,0,"textBackgroundColor"),u=0,d=o.length;uthis.width&&this._set("width",this.dynamicMinWidth),-1!==this.textAlign.indexOf("justify")&&this.enlargeSpaces(),this.height=this.calcTextHeight(),this.saveState({propertySet:"_dimensionAffectingProps"}))},_generateStyleMap:function(t){for(var e=0,i=0,n=0,r={},s=0;s0?(i=0,n++,e++):!this.splitByGrapheme&&this._reSpaceAndTab.test(t.graphemeText[n])&&s>0&&(i++,n++),r[s]={line:e,offset:i},n+=t.graphemeLines[s].length,i+=t.graphemeLines[s].length;return r},styleHas:function(t,i){if(this._styleMap&&!this.isWrapping){var n=this._styleMap[i];n&&(i=n.line)}return e.Text.prototype.styleHas.call(this,t,i)},isEmptyStyles:function(t){if(!this.styles)return!0;var e,i,n=0,r=!1,s=this._styleMap[t],o=this._styleMap[t+1];for(var a in s&&(t=s.line,n=s.offset),o&&(r=o.line===t,e=o.offset),i=void 0===t?this.styles:{line:this.styles[t]})for(var h in i[a])if(h>=n&&(!r||hn&&!p?(a.push(h),h=[],s=f,p=!0):s+=_,p||o||h.push(d),h=h.concat(c),g=o?0:this._measureWord([d],i,u),u++,p=!1,f>m&&(m=f);return v&&a.push(h),m+r>this.dynamicMinWidth&&(this.dynamicMinWidth=m-_+r),a},isEndOfWrapping:function(t){return!this._styleMap[t+1]||this._styleMap[t+1].line!==this._styleMap[t].line},missingNewlineOffset:function(t){return this.splitByGrapheme?this.isEndOfWrapping(t)?1:0:1},_splitTextIntoLines:function(t){for(var i=e.Text.prototype._splitTextIntoLines.call(this,t),n=this._wrapText(i.lines,this.width),r=new Array(n.length),s=0;s{},898:()=>{},245:()=>{}},Ye={};function He(t){var e=Ye[t];if(void 0!==e)return e.exports;var i=Ye[t]={exports:{}};return We[t](i,i.exports,He),i.exports}He.d=(t,e)=>{for(var i in e)He.o(e,i)&&!He.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},He.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Xe={};(()=>{let t;He.d(Xe,{R:()=>t}),t="undefined"!=typeof document&&"undefined"!=typeof window?He(653).fabric:{version:"5.2.1"}})();var ze,qe,Ze,Ke,Je=Xe.R;!function(t){t[t.DIMT_RECTANGLE=1]="DIMT_RECTANGLE",t[t.DIMT_QUADRILATERAL=2]="DIMT_QUADRILATERAL",t[t.DIMT_TEXT=4]="DIMT_TEXT",t[t.DIMT_ARC=8]="DIMT_ARC",t[t.DIMT_IMAGE=16]="DIMT_IMAGE",t[t.DIMT_POLYGON=32]="DIMT_POLYGON",t[t.DIMT_LINE=64]="DIMT_LINE",t[t.DIMT_GROUP=128]="DIMT_GROUP"}(ze||(ze={})),function(t){t[t.DIS_DEFAULT=1]="DIS_DEFAULT",t[t.DIS_SELECTED=2]="DIS_SELECTED"}(qe||(qe={})),function(t){t[t.EF_ENHANCED_FOCUS=4]="EF_ENHANCED_FOCUS",t[t.EF_AUTO_ZOOM=16]="EF_AUTO_ZOOM",t[t.EF_TAP_TO_FOCUS=64]="EF_TAP_TO_FOCUS"}(Ze||(Ze={})),function(t){t.GREY="grey",t.GREY32="grey32",t.RGBA="rgba",t.RBGA="rbga",t.GRBA="grba",t.GBRA="gbra",t.BRGA="brga",t.BGRA="bgra"}(Ke||(Ke={}));const Qe=t=>"number"==typeof t&&!Number.isNaN(t),$e=t=>"string"==typeof t;var ti,ei,ii,ni,ri,si,oi,ai,hi,li,ci;!function(t){t[t.ARC=0]="ARC",t[t.IMAGE=1]="IMAGE",t[t.LINE=2]="LINE",t[t.POLYGON=3]="POLYGON",t[t.QUAD=4]="QUAD",t[t.RECT=5]="RECT",t[t.TEXT=6]="TEXT",t[t.GROUP=7]="GROUP"}(ri||(ri={})),function(t){t[t.DEFAULT=0]="DEFAULT",t[t.SELECTED=1]="SELECTED"}(si||(si={}));class ui{get mediaType(){return new Map([["rect",ze.DIMT_RECTANGLE],["quad",ze.DIMT_QUADRILATERAL],["text",ze.DIMT_TEXT],["arc",ze.DIMT_ARC],["image",ze.DIMT_IMAGE],["polygon",ze.DIMT_POLYGON],["line",ze.DIMT_LINE],["group",ze.DIMT_GROUP]]).get(this._mediaType)}get styleSelector(){switch(Be(this,ei,"f")){case qe.DIS_DEFAULT:return"default";case qe.DIS_SELECTED:return"selected"}}set drawingStyleId(t){this.styleId=t}get drawingStyleId(){return this.styleId}set coordinateBase(t){if(!["view","image"].includes(t))throw new Error("Invalid 'coordinateBase'.");this._drawingLayer&&("image"===Be(this,ii,"f")&&"view"===t?this.updateCoordinateBaseFromImageToView():"view"===Be(this,ii,"f")&&"image"===t&&this.updateCoordinateBaseFromViewToImage()),Ne(this,ii,t,"f")}get coordinateBase(){return Be(this,ii,"f")}get drawingLayerId(){return this._drawingLayerId}constructor(t,e){if(ti.add(this),ei.set(this,void 0),ii.set(this,"image"),this._zIndex=null,this._drawingLayer=null,this._drawingLayerId=null,this._mapState_StyleId=new Map,this.mapEvent_Callbacks=new Map([["selected",new Map],["deselected",new Map],["mousedown",new Map],["mouseup",new Map],["dblclick",new Map],["mouseover",new Map],["mouseout",new Map]]),this.mapNoteName_Content=new Map([]),this.isDrawingItem=!0,null!=e&&!Qe(e))throw new TypeError("Invalid 'drawingStyleId'.");t&&this._setFabricObject(t),this.setState(qe.DIS_DEFAULT),this.styleId=e}_setFabricObject(t){this._fabricObject=t,this._fabricObject.on("selected",(()=>{this.setState(qe.DIS_SELECTED)})),this._fabricObject.on("deselected",(()=>{this._fabricObject.canvas&&this._fabricObject.canvas.getActiveObjects().includes(this._fabricObject)?this.setState(qe.DIS_SELECTED):this.setState(qe.DIS_DEFAULT),"textbox"===this._fabricObject.type&&(this._fabricObject.isEditing&&this._fabricObject.exitEditing(),this._fabricObject.selected=!1)})),t.getDrawingItem=()=>this}_getFabricObject(){return this._fabricObject}setState(t){Ne(this,ei,t,"f")}getState(){return Be(this,ei,"f")}_on(t,e){if(!e)return;const i=t.toLowerCase(),n=this.mapEvent_Callbacks.get(i);if(!n)throw new Error(`Event '${t}' does not exist.`);let r=n.get(e);r||(r=t=>{const i=t.e;if(!i)return void(e&&e.apply(this,[{targetItem:this,itemClientX:null,itemClientY:null,itemPageX:null,itemPageY:null}]));const n={targetItem:this,itemClientX:null,itemClientY:null,itemPageX:null,itemPageY:null};if(this._drawingLayer){let t,e,r,s;const o=i.target.getBoundingClientRect();t=o.left,e=o.top,r=t+window.scrollX,s=e+window.scrollY;const{width:a,height:h}=this._drawingLayer.fabricCanvas.lowerCanvasEl.getBoundingClientRect(),l=this._drawingLayer.width,c=this._drawingLayer.height,u=a/h,d=l/c,f=this._drawingLayer._getObjectFit();let g,m,p,_,v=1;if("contain"===f)u0?i-1:n,mi),actionName:"modifyPolygon",pointIndex:i}),t}),{}),Ne(this,ai,JSON.parse(JSON.stringify(t)),"f"),this._mediaType="polygon"}extendSet(t,e){if("vertices"===t){const t=this._fabricObject;if(t.group){const i=t.group;t.points=e.map((t=>({x:t.x-i.left-i.width/2,y:t.y-i.top-i.height/2}))),i.addWithUpdate()}else t.points=e;const i=t.points.length-1;return t.controls=t.points.reduce((function(t,e,n){return t["p"+n]=new Je.Control({positionHandler:fi,actionHandler:pi(n>0?n-1:i,mi),actionName:"modifyPolygon",pointIndex:n}),t}),{}),t._setPositionDimensions({}),!0}}extendGet(t){if("vertices"===t){const t=[],e=this._fabricObject;if(e.selectable&&!e.group)for(let i in e.oCoords)t.push({x:e.oCoords[i].x,y:e.oCoords[i].y});else for(let i of e.points){let n=i.x-e.pathOffset.x,r=i.y-e.pathOffset.y;const s=Je.util.transformPoint({x:n,y:r},e.calcTransformMatrix());t.push({x:s.x,y:s.y})}return t}}updateCoordinateBaseFromImageToView(){const t=this.get("vertices").map((t=>({x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)})));this.set("vertices",t)}updateCoordinateBaseFromViewToImage(){const t=this.get("vertices").map((t=>({x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)})));this.set("vertices",t)}setPosition(t){this.setPolygon(t)}getPosition(){return this.getPolygon()}updatePosition(){Be(this,ai,"f")&&this.setPolygon(Be(this,ai,"f"))}setPolygon(t){if(!T(t))throw new TypeError("Invalid 'polygon'.");if(this._drawingLayer){if("view"===this.coordinateBase){const e=t.points.map((t=>({x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)})));this.set("vertices",e)}else{if("image"!==this.coordinateBase)throw new Error("Invalid 'coordinateBase'.");this.set("vertices",t.points)}this._drawingLayer.renderAll()}else Ne(this,ai,JSON.parse(JSON.stringify(t)),"f")}getPolygon(){if(this._drawingLayer){if("view"===this.coordinateBase)return{points:this.get("vertices").map((t=>({x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)})))};if("image"===this.coordinateBase)return{points:this.get("vertices")};throw new Error("Invalid 'coordinateBase'.")}return Be(this,ai,"f")?JSON.parse(JSON.stringify(Be(this,ai,"f"))):null}}ai=new WeakMap;hi=new WeakMap,li=new WeakMap;const vi=t=>{let e=(t=>t.split("\n").map((t=>t.split("\t"))))(t);return(t=>{for(let e=0;;e++){let i=-1;for(let n=0;ni&&(i=r.length)}if(-1===i)break;for(let n=0;n=t[n].length-1)continue;let r=" ".repeat(i+2-t[n][e].length);t[n][e]=t[n][e].concat(r)}}})(e),(t=>{let e="";for(let i=0;i({x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)})));this.set("vertices",e)}else{if("image"!==this.coordinateBase)throw new Error("Invalid 'coordinateBase'.");this.set("vertices",t.points)}this._drawingLayer.renderAll()}else Ne(this,Ci,JSON.parse(JSON.stringify(t)),"f")}getQuad(){if(this._drawingLayer){if("view"===this.coordinateBase)return{points:this.get("vertices").map((t=>({x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)})))};if("image"===this.coordinateBase)return{points:this.get("vertices")};throw new Error("Invalid 'coordinateBase'.")}return Be(this,Ci,"f")?JSON.parse(JSON.stringify(Be(this,Ci,"f"))):null}}Ci=new WeakMap;class Si extends ui{constructor(t){super(new Je.Group(t.map((t=>t._getFabricObject())))),this._fabricObject.on("selected",(()=>{this.setState(qe.DIS_SELECTED);const t=this._fabricObject._objects;for(let e of t)setTimeout((()=>{e&&e.fire("selected")}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)})),this._fabricObject.on("deselected",(()=>{this.setState(qe.DIS_DEFAULT);const t=this._fabricObject._objects;for(let e of t)setTimeout((()=>{e&&e.fire("deselected")}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)})),this._mediaType="group"}extendSet(t,e){return!1}extendGet(t){}updateCoordinateBaseFromImageToView(){}updateCoordinateBaseFromViewToImage(){}setPosition(){}getPosition(){}updatePosition(){}getChildDrawingItems(){return this._fabricObject._objects.map((t=>t.getDrawingItem()))}setChildDrawingItems(t){if(!t||!t.isDrawingItem)throw TypeError("Illegal drawing item.");this._drawingLayer?this._drawingLayer._updateGroupItem(this,t,"add"):this._fabricObject.addWithUpdate(t._getFabricObject())}removeChildItem(t){t&&t.isDrawingItem&&(this._drawingLayer?this._drawingLayer._updateGroupItem(this,t,"remove"):this._fabricObject.removeWithUpdate(t._getFabricObject()))}}const Ti=t=>null!==t&&"object"==typeof t&&!Array.isArray(t),bi=t=>!!$e(t)&&""!==t,Ii=t=>!(!Ti(t)||"id"in t&&!Qe(t.id)||"lineWidth"in t&&!Qe(t.lineWidth)||"fillStyle"in t&&!bi(t.fillStyle)||"strokeStyle"in t&&!bi(t.strokeStyle)||"paintMode"in t&&!["fill","stroke","strokeAndFill"].includes(t.paintMode)||"fontFamily"in t&&!bi(t.fontFamily)||"fontSize"in t&&!Qe(t.fontSize));class xi{static convert(t,e,i){const n={x:0,y:0,width:e,height:i};if(!t)return n;if(I(t))t.isMeasuredInPercentage?(n.x=t.x/100*e,n.y=t.y/100*i,n.width=t.width/100*e,n.height=t.height/100*i):(n.x=t.x,n.y=t.y,n.width=t.width,n.height=t.height);else{if(!w(t))throw TypeError("Invalid region.");t.isMeasuredInPercentage?(n.x=t.left/100*e,n.y=t.top/100*i,n.width=(t.right-t.left)/100*e,n.height=(t.bottom-t.top)/100*i):(n.x=t.left,n.y=t.top,n.width=t.right-t.left,n.height=t.bottom-t.top)}return n.x=Math.round(n.x),n.y=Math.round(n.y),n.width=Math.round(n.width),n.height=Math.round(n.height),n}}var Oi,Ai;class Ri{constructor(){Oi.set(this,new Map),Ai.set(this,!1)}get disposed(){return Be(this,Ai,"f")}on(t,e){t=t.toLowerCase();const i=Be(this,Oi,"f").get(t);if(i){if(i.includes(e))return;i.push(e)}else Be(this,Oi,"f").set(t,[e])}off(t,e){t=t.toLowerCase();const i=Be(this,Oi,"f").get(t);if(!i)return;const n=i.indexOf(e);-1!==n&&i.splice(n,1)}offAll(t){t=t.toLowerCase();const e=Be(this,Oi,"f").get(t);e&&(e.length=0)}fire(t,e=[],i={async:!1,copy:!0}){e||(e=[]),t=t.toLowerCase();const n=Be(this,Oi,"f").get(t);if(n&&n.length){i=Object.assign({async:!1,copy:!0},i);for(let r of n){if(!r)continue;let s=[];if(i.copy)for(let i of e){try{i=JSON.parse(JSON.stringify(i))}catch(t){}s.push(i)}else s=e;let o=!1;if(i.async)setTimeout((()=>{this.disposed||n.includes(r)&&r.apply(i.target,s)}),0);else try{o=r.apply(i.target,s)}catch(t){}if(!0===o)break}}}dispose(){Ne(this,Ai,!0,"f")}}function Di(t,e,i){return(i.x-t.x)*(e.y-t.y)==(e.x-t.x)*(i.y-t.y)&&Math.min(t.x,e.x)<=i.x&&i.x<=Math.max(t.x,e.x)&&Math.min(t.y,e.y)<=i.y&&i.y<=Math.max(t.y,e.y)}function Li(t){return Math.abs(t)<1e-6?0:t<0?-1:1}function Mi(t,e,i,n){let r=t[0]*(i[1]-e[1])+e[0]*(t[1]-i[1])+i[0]*(e[1]-t[1]),s=t[0]*(n[1]-e[1])+e[0]*(t[1]-n[1])+n[0]*(e[1]-t[1]);return!((r^s)>=0&&0!==r&&0!==s||(r=i[0]*(t[1]-n[1])+n[0]*(i[1]-t[1])+t[0]*(n[1]-i[1]),s=i[0]*(e[1]-n[1])+n[0]*(i[1]-e[1])+e[0]*(n[1]-i[1]),(r^s)>=0&&0!==r&&0!==s))}Oi=new WeakMap,Ai=new WeakMap;const Fi=async t=>{if("string"!=typeof t)throw new TypeError("Invalid url.");const e=await fetch(t);if(!e.ok)throw Error("Network Error: "+e.statusText);const i=await e.text();if(!i.trim().startsWith("<"))throw Error("Unable to get valid HTMLElement.");const n=document.createElement("div");if(n.insertAdjacentHTML("beforeend",i),1===n.childElementCount&&n.firstChild instanceof HTMLTemplateElement)return n.firstChild.content;const r=new DocumentFragment;for(let t of n.children)r.append(t);return r};var Pi,ki,Bi,Ni,ji,Ui,Vi,Gi,Wi,Yi,Hi,Xi,zi,qi,Zi,Ki,Ji,Qi,$i,tn,en,nn,rn,sn,on,an,hn,ln,cn,un,dn,fn,gn,mn;class pn{static createDrawingStyle(t){if(!Ii(t))throw new Error("Invalid style definition.");let e,i=pn.USER_START_STYLE_ID;for(;Be(pn,Pi,"f",ki).has(i);)i++;e=i;const n=JSON.parse(JSON.stringify(t));n.id=e;for(let t in Be(pn,Pi,"f",Bi))n.hasOwnProperty(t)||(n[t]=Be(pn,Pi,"f",Bi)[t]);return Be(pn,Pi,"f",ki).set(e,n),n.id}static _getDrawingStyle(t,e){if("number"!=typeof t)throw new Error("Invalid style id.");const i=Be(pn,Pi,"f",ki).get(t);return i?e?JSON.parse(JSON.stringify(i)):i:null}static getDrawingStyle(t){return this._getDrawingStyle(t,!0)}static getAllDrawingStyles(){return JSON.parse(JSON.stringify(Array.from(Be(pn,Pi,"f",ki).values())))}static _updateDrawingStyle(t,e){if(!Ii(e))throw new Error("Invalid style definition.");const i=Be(pn,Pi,"f",ki).get(t);if(i)for(let t in e)i.hasOwnProperty(t)&&(i[t]=e[t])}static updateDrawingStyle(t,e){this._updateDrawingStyle(t,e)}}Pi=pn,pn.STYLE_BLUE_STROKE=1,pn.STYLE_GREEN_STROKE=2,pn.STYLE_ORANGE_STROKE=3,pn.STYLE_YELLOW_STROKE=4,pn.STYLE_BLUE_STROKE_FILL=5,pn.STYLE_GREEN_STROKE_FILL=6,pn.STYLE_ORANGE_STROKE_FILL=7,pn.STYLE_YELLOW_STROKE_FILL=8,pn.STYLE_BLUE_STROKE_TRANSPARENT=9,pn.STYLE_GREEN_STROKE_TRANSPARENT=10,pn.STYLE_ORANGE_STROKE_TRANSPARENT=11,pn.USER_START_STYLE_ID=1024,ki={value:new Map([[pn.STYLE_BLUE_STROKE,{id:pn.STYLE_BLUE_STROKE,lineWidth:4,fillStyle:"rgba(73, 173, 245, 0.3)",strokeStyle:"rgba(73, 173, 245, 1)",paintMode:"stroke",fontFamily:"consolas",fontSize:40}],[pn.STYLE_GREEN_STROKE,{id:pn.STYLE_GREEN_STROKE,lineWidth:2,fillStyle:"rgba(73, 245, 73, 0.3)",strokeStyle:"rgba(73, 245, 73, 0.9)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[pn.STYLE_ORANGE_STROKE,{id:pn.STYLE_ORANGE_STROKE,lineWidth:2,fillStyle:"rgba(254, 180, 32, 0.3)",strokeStyle:"rgba(254, 180, 32, 0.9)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[pn.STYLE_YELLOW_STROKE,{id:pn.STYLE_YELLOW_STROKE,lineWidth:2,fillStyle:"rgba(245, 236, 73, 0.3)",strokeStyle:"rgba(245, 236, 73, 1)",paintMode:"stroke",fontFamily:"consolas",fontSize:40}],[pn.STYLE_BLUE_STROKE_FILL,{id:pn.STYLE_BLUE_STROKE_FILL,lineWidth:4,fillStyle:"rgba(73, 173, 245, 0.3)",strokeStyle:"rgba(73, 173, 245, 1)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[pn.STYLE_GREEN_STROKE_FILL,{id:pn.STYLE_GREEN_STROKE_FILL,lineWidth:2,fillStyle:"rgba(73, 245, 73, 0.3)",strokeStyle:"rgba(73, 245, 73, 0.9)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[pn.STYLE_ORANGE_STROKE_FILL,{id:pn.STYLE_ORANGE_STROKE_FILL,lineWidth:2,fillStyle:"rgba(254, 180, 32, 0.3)",strokeStyle:"rgba(254, 180, 32, 1)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[pn.STYLE_YELLOW_STROKE_FILL,{id:pn.STYLE_YELLOW_STROKE_FILL,lineWidth:2,fillStyle:"rgba(245, 236, 73, 0.3)",strokeStyle:"rgba(245, 236, 73, 1)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[pn.STYLE_BLUE_STROKE_TRANSPARENT,{id:pn.STYLE_BLUE_STROKE_TRANSPARENT,lineWidth:4,fillStyle:"rgba(73, 173, 245, 0.2)",strokeStyle:"transparent",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[pn.STYLE_GREEN_STROKE_TRANSPARENT,{id:pn.STYLE_GREEN_STROKE_TRANSPARENT,lineWidth:2,fillStyle:"rgba(73, 245, 73, 0.2)",strokeStyle:"transparent",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[pn.STYLE_ORANGE_STROKE_TRANSPARENT,{id:pn.STYLE_ORANGE_STROKE_TRANSPARENT,lineWidth:2,fillStyle:"rgba(254, 180, 32, 0.2)",strokeStyle:"transparent",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}]])},Bi={value:{lineWidth:2,fillStyle:"rgba(245, 236, 73, 0.3)",strokeStyle:"rgba(245, 236, 73, 1)",paintMode:"stroke",fontFamily:"consolas",fontSize:40}},"undefined"!=typeof document&&"undefined"!=typeof window&&(Je.StaticCanvas.prototype.dispose=function(){return this.isRendering&&(Je.util.cancelAnimFrame(this.isRendering),this.isRendering=0),this.forEachObject((function(t){t.dispose&&t.dispose()})),this._objects=[],this.backgroundImage&&this.backgroundImage.dispose&&this.backgroundImage.dispose(),this.backgroundImage=null,this.overlayImage&&this.overlayImage.dispose&&this.overlayImage.dispose(),this.overlayImage=null,this._iTextInstances=null,this.contextContainer=null,this.lowerCanvasEl.classList.remove("lower-canvas"),delete this._originalCanvasStyle,this.lowerCanvasEl.setAttribute("width",this.width),this.lowerCanvasEl.setAttribute("height",this.height),Je.util.cleanUpJsdomNode(this.lowerCanvasEl),this.lowerCanvasEl=void 0,this},Je.Object.prototype.transparentCorners=!1,Je.Object.prototype.cornerSize=20,Je.Object.prototype.touchCornerSize=100,Je.Object.prototype.cornerColor="rgb(254,142,20)",Je.Object.prototype.cornerStyle="circle",Je.Object.prototype.strokeUniform=!0,Je.Object.prototype.hasBorders=!1,Je.Canvas.prototype.containerClass="",Je.Canvas.prototype.getPointer=function(t,e){if(this._absolutePointer&&!e)return this._absolutePointer;if(this._pointer&&e)return this._pointer;var i,n=this.upperCanvasEl,r=Je.util.getPointer(t,n),s=n.getBoundingClientRect(),o=s.width||0,a=s.height||0;o&&a||("top"in s&&"bottom"in s&&(a=Math.abs(s.top-s.bottom)),"right"in s&&"left"in s&&(o=Math.abs(s.right-s.left))),this.calcOffset(),r.x=r.x-this._offset.left,r.y=r.y-this._offset.top,e||(r=this.restorePointerVpt(r));var h=this.getRetinaScaling();if(1!==h&&(r.x/=h,r.y/=h),0!==o&&0!==a){var l=window.getComputedStyle(n).objectFit,c=n.width,u=n.height,d=o,f=a;i={width:c/d,height:u/f};var g,m,p=c/u,_=d/f;return"contain"===l?p>_?(g=d,m=d/p,{x:r.x*i.width,y:(r.y-(f-m)/2)*i.width}):(g=f*p,m=f,{x:(r.x-(d-g)/2)*i.height,y:r.y*i.height}):"cover"===l?p>_?{x:(c-i.height*d)/2+r.x*i.height,y:r.y*i.height}:{x:r.x*i.width,y:(u-i.width*f)/2+r.y*i.width}:{x:r.x*i.width,y:r.y*i.height}}return i={width:1,height:1},{x:r.x*i.width,y:r.y*i.height}},Je.Canvas.prototype._onTouchStart=function(t){var e=this.findTarget(t);!this.allowTouchScrolling&&t.cancelable&&t.preventDefault&&t.preventDefault(),e&&t.cancelable&&t.preventDefault&&t.preventDefault(),null===this.mainTouchId&&(this.mainTouchId=this.getPointerId(t)),this.__onMouseDown(t),this._resetTransformEventData();var i=this.upperCanvasEl,n=this._getEventPrefix();Je.util.addListener(Je.document,"touchend",this._onTouchEnd,{passive:!1}),Je.util.addListener(Je.document,"touchmove",this._onMouseMove,{passive:!1}),Je.util.removeListener(i,n+"down",this._onMouseDown)},Je.Textbox.prototype._wrapLine=function(t,e,i,n){const r=t.match(/[\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff\uff66-\uff9f]/g),s=!(!r||!r.length);var o=0,a=this.splitByGrapheme||s,h=[],l=[],c=a?Je.util.string.graphemeSplit(t):t.split(this._wordJoiners),u="",d=0,f=a?"":" ",g=0,m=0,p=0,_=!0,v=this._getWidthOfCharSpacing();n=n||0,0===c.length&&c.push([]),i-=n;for(var y=0;yi&&!_?(h.push(l),l=[],o=g,_=!0):o+=v,_||a||l.push(f),l=l.concat(u),m=a?0:this._measureWord([f],e,d),d++,_=!1,g>p&&(p=g);return y&&h.push(l),p+n>this.dynamicMinWidth&&(this.dynamicMinWidth=p-v+n),h});class _n{get width(){return this.fabricCanvas.width}get height(){return this.fabricCanvas.height}set _allowMultiSelect(t){this.fabricCanvas.selection=t,this.fabricCanvas.renderAll()}get _allowMultiSelect(){return this.fabricCanvas.selection}constructor(t,e,i){if(this.mapType_StateAndStyleId=new Map,this.mode="viewer",this.onSelectionChanged=null,this._arrDrwaingItem=[],this._arrFabricObject=[],this._visible=!0,t.hasOwnProperty("getFabricCanvas"))this.fabricCanvas=t.getFabricCanvas();else{let e=this.fabricCanvas=new Je.Canvas(t,Object.assign(i,{allowTouchScrolling:!0,selection:!1}));e.setDimensions({width:"100%",height:"100%"},{cssOnly:!0}),e.lowerCanvasEl.className="",e.upperCanvasEl.className="",e.on("selection:created",(function(t){const e=t.selected,i=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!i.includes(e)&&i.push(e)}for(let t of i){const i=[];for(let n of e){const e=n.getDrawingItem();e._drawingLayer===t&&i.push(e)}setTimeout((()=>{t.onSelectionChanged&&t.onSelectionChanged(i,[])}),0)}})),e.on("before:selection:cleared",(function(t){const e=this.getActiveObjects(),i=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!i.includes(e)&&i.push(e)}for(let t of i){const i=[];for(let n of e){const e=n.getDrawingItem();e._drawingLayer===t&&i.push(e)}setTimeout((()=>{const e=[];for(let n of i)t.hasDrawingItem(n)&&e.push(n);e.length>0&&t.onSelectionChanged&&t.onSelectionChanged([],e)}),0)}})),e.on("selection:updated",(function(t){const e=t.selected,i=t.deselected,n=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!n.includes(e)&&n.push(e)}for(let t of i){const e=t.getDrawingItem()._drawingLayer;e&&!n.includes(e)&&n.push(e)}for(let t of n){const n=[],r=[];for(let i of e){const e=i.getDrawingItem();e._drawingLayer===t&&n.push(e)}for(let e of i){const i=e.getDrawingItem();i._drawingLayer===t&&r.push(i)}setTimeout((()=>{t.onSelectionChanged&&t.onSelectionChanged(n,r)}),0)}})),e.wrapperEl.style.position="absolute",t.getFabricCanvas=()=>this.fabricCanvas}let n,r;switch(this.id=e,e){case _n.DDN_LAYER_ID:n=pn.getDrawingStyle(pn.STYLE_BLUE_STROKE),r=pn.getDrawingStyle(pn.STYLE_BLUE_STROKE_FILL);break;case _n.DBR_LAYER_ID:n=pn.getDrawingStyle(pn.STYLE_ORANGE_STROKE),r=pn.getDrawingStyle(pn.STYLE_ORANGE_STROKE_FILL);break;case _n.DLR_LAYER_ID:n=pn.getDrawingStyle(pn.STYLE_GREEN_STROKE),r=pn.getDrawingStyle(pn.STYLE_GREEN_STROKE_FILL);break;default:n=pn.getDrawingStyle(pn.STYLE_YELLOW_STROKE),r=pn.getDrawingStyle(pn.STYLE_YELLOW_STROKE_FILL)}for(let t of ui.arrMediaTypes)this.mapType_StateAndStyleId.set(t,{default:n.id,selected:r.id})}getId(){return this.id}setVisible(t){if(t){for(let t of this._arrFabricObject)t.visible=!0,t.hasControls=!0;this._visible=!0}else{for(let t of this._arrFabricObject)t.visible=!1,t.hasControls=!1;this._visible=!1}this.fabricCanvas.renderAll()}isVisible(){return this._visible}_getItemCurrentStyle(t){if(t.styleId)return pn.getDrawingStyle(t.styleId);return pn.getDrawingStyle(t._mapState_StyleId.get(t.styleSelector))||null}_changeMediaTypeCurStyleInStyleSelector(t,e,i,n){const r=this.getDrawingItems((e=>e._mediaType===t));for(let t of r)t.styleSelector===e&&this._changeItemStyle(t,i,!0);n||this.fabricCanvas.renderAll()}_changeItemStyle(t,e,i){if(!t||!e)return;const n=t._getFabricObject();"number"==typeof t.styleId&&(e=pn.getDrawingStyle(t.styleId)),n.strokeWidth=e.lineWidth,"fill"===e.paintMode?(n.fill=e.fillStyle,n.stroke=e.fillStyle):"stroke"===e.paintMode?(n.fill="transparent",n.stroke=e.strokeStyle):"strokeAndFill"===e.paintMode&&(n.fill=e.fillStyle,n.stroke=e.strokeStyle),n.fontFamily&&(n.fontFamily=e.fontFamily),n.fontSize&&(n.fontSize=e.fontSize),n.group||(n.dirty=!0),i||this.fabricCanvas.renderAll()}_updateGroupItem(t,e,i){if(!t||!e)return;const n=t.getChildDrawingItems();if("add"===i){if(n.includes(e))return;const i=e._getFabricObject();if(this.fabricCanvas.getObjects().includes(i)){if(!this._arrFabricObject.includes(i))throw new Error("Existed in other drawing layers.");e._zIndex=null}else{let i;if(e.styleId)i=pn.getDrawingStyle(e.styleId);else{const n=this.mapType_StateAndStyleId.get(e._mediaType);i=pn.getDrawingStyle(n[t.styleSelector]);const r=()=>{this._changeItemStyle(e,pn.getDrawingStyle(this.mapType_StateAndStyleId.get(e._mediaType).selected),!0)},s=()=>{this._changeItemStyle(e,pn.getDrawingStyle(this.mapType_StateAndStyleId.get(e._mediaType).default),!0)};e._on("selected",r),e._on("deselected",s),e._funcChangeStyleToSelected=r,e._funcChangeStyleToDefault=s}e._drawingLayer=this,e._drawingLayerId=this.id,this._changeItemStyle(e,i,!0)}t._fabricObject.addWithUpdate(e._getFabricObject())}else{if("remove"!==i)return;if(!n.includes(e))return;e._zIndex=null,e._drawingLayer=null,e._drawingLayerId=null,e._off("selected",e._funcChangeStyleToSelected),e._off("deselected",e._funcChangeStyleToDefault),e._funcChangeStyleToSelected=null,e._funcChangeStyleToDefault=null,t._fabricObject.removeWithUpdate(e._getFabricObject())}this.fabricCanvas.renderAll()}_addDrawingItem(t,e){if(!(t instanceof ui))throw new TypeError("Invalid 'drawingItem'.");if(t._drawingLayer){if(t._drawingLayer==this)return;throw new Error("This drawing item has existed in other layer.")}let i=t._getFabricObject();const n=this.fabricCanvas.getObjects();let r,s;if(n.includes(i)){if(this._arrFabricObject.includes(i))return;throw new Error("Existed in other drawing layers.")}if("group"===t._mediaType){r=t.getChildDrawingItems();for(let t of r)if(t._drawingLayer&&t._drawingLayer!==this)throw new Error("The childItems of DT_Group have existed in other drawing layers.")}if(e&&"object"==typeof e&&!Array.isArray(e))for(let t in e)i.set(t,e[t]);if(r){for(let t of r){const e=this.mapType_StateAndStyleId.get(t._mediaType);for(let i of ui.arrStyleSelectors)t._mapState_StyleId.set(i,e[i]);if(t.styleId)s=pn.getDrawingStyle(t.styleId);else{s=pn.getDrawingStyle(e.default);const i=()=>{this._changeItemStyle(t,pn.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).selected),!0)},n=()=>{this._changeItemStyle(t,pn.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).default),!0)};t._on("selected",i),t._on("deselected",n),t._funcChangeStyleToSelected=i,t._funcChangeStyleToDefault=n}t._drawingLayer=this,t._drawingLayerId=this.id,this._changeItemStyle(t,s,!0)}i.dirty=!0,this.fabricCanvas.renderAll()}else{const e=this.mapType_StateAndStyleId.get(t._mediaType);for(let i of ui.arrStyleSelectors)t._mapState_StyleId.set(i,e[i]);if(t.styleId)s=pn.getDrawingStyle(t.styleId);else{s=pn.getDrawingStyle(e.default);const i=()=>{this._changeItemStyle(t,pn.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).selected))},n=()=>{this._changeItemStyle(t,pn.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).default))};t._on("selected",i),t._on("deselected",n),t._funcChangeStyleToSelected=i,t._funcChangeStyleToDefault=n}this._changeItemStyle(t,s)}t._zIndex=this.id,t._drawingLayer=this,t._drawingLayerId=this.id;const o=this._arrFabricObject.length;let a=n.length;if(o)a=n.indexOf(this._arrFabricObject[o-1])+1;else for(let e=0;et.toLowerCase())):e=ui.arrMediaTypes,i?i.forEach((t=>t.toLowerCase())):i=ui.arrStyleSelectors;const n=pn.getDrawingStyle(t);if(!n)throw new Error(`The 'drawingStyle' with id '${t}' doesn't exist.`);let r;for(let s of e)if(r=this.mapType_StateAndStyleId.get(s),r)for(let e of i){this._changeMediaTypeCurStyleInStyleSelector(s,e,n,!0),r[e]=t;for(let i of this._arrDrwaingItem)i._mediaType===s&&i._mapState_StyleId.set(e,t)}this.fabricCanvas.renderAll()}setDefaultStyle(t,e,i){const n=[];i&ze.DIMT_RECTANGLE&&n.push("rect"),i&ze.DIMT_QUADRILATERAL&&n.push("quad"),i&ze.DIMT_TEXT&&n.push("text"),i&ze.DIMT_ARC&&n.push("arc"),i&ze.DIMT_IMAGE&&n.push("image"),i&ze.DIMT_POLYGON&&n.push("polygon"),i&ze.DIMT_LINE&&n.push("line");const r=[];e&qe.DIS_DEFAULT&&r.push("default"),e&qe.DIS_SELECTED&&r.push("selected"),this._setDefaultStyle(t,n.length?n:null,r.length?r:null)}setMode(t){if("viewer"===(t=t.toLowerCase())){for(let t of this._arrDrwaingItem)t._setEditable(!1);this.fabricCanvas.discardActiveObject(),this.fabricCanvas.renderAll(),this.mode="viewer"}else{if("editor"!==t)throw new RangeError("Invalid value.");for(let t of this._arrDrwaingItem)t._setEditable(!0);this.mode="editor"}this._manager._switchPointerEvent()}getMode(){return this.mode}_setDimensions(t,e){this.fabricCanvas.setDimensions(t,e)}_setObjectFit(t){if(t=t.toLowerCase(),!["contain","cover"].includes(t))throw new Error(`Unsupported value '${t}'.`);this.fabricCanvas.lowerCanvasEl.style.objectFit=t,this.fabricCanvas.upperCanvasEl.style.objectFit=t}_getObjectFit(){return this.fabricCanvas.lowerCanvasEl.style.objectFit}renderAll(){for(let t of this._arrDrwaingItem){const e=this._getItemCurrentStyle(t);this._changeItemStyle(t,e,!0)}this.fabricCanvas.renderAll()}dispose(){this.clearDrawingItems(),1===this._manager._arrDrawingLayer.length&&(this.fabricCanvas.wrapperEl.style.pointerEvents="none",this.fabricCanvas.dispose(),this._arrDrwaingItem.length=0,this._arrFabricObject.length=0)}}_n.DDN_LAYER_ID=1,_n.DBR_LAYER_ID=2,_n.DLR_LAYER_ID=3,_n.USER_DEFINED_LAYER_BASE_ID=100,_n.TIP_LAYER_ID=999;class vn{constructor(){this._arrDrawingLayer=[]}createDrawingLayer(t,e){if(this.getDrawingLayer(e))throw new Error("Existed drawing layer id.");const i=new _n(t,e,{enableRetinaScaling:!1});return i._manager=this,this._arrDrawingLayer.push(i),this._switchPointerEvent(),i}deleteDrawingLayer(t){const e=this.getDrawingLayer(t);if(!e)return;const i=this._arrDrawingLayer;e.dispose(),i.splice(i.indexOf(e),1),this._switchPointerEvent()}clearDrawingLayers(){for(let t of this._arrDrawingLayer)t.dispose();this._arrDrawingLayer.length=0}getDrawingLayer(t){for(let e of this._arrDrawingLayer)if(e.getId()===t)return e;return null}getAllDrawingLayers(){return Array.from(this._arrDrawingLayer)}getSelectedDrawingItems(){if(!this._arrDrawingLayer.length)return;const t=this._getFabricCanvas().getActiveObjects(),e=[];for(let i of t)e.push(i.getDrawingItem());return e}setDimensions(t,e){this._arrDrawingLayer.length&&this._arrDrawingLayer[0]._setDimensions(t,e)}setObjectFit(t){for(let e of this._arrDrawingLayer)e&&e._setObjectFit(t)}getObjectFit(){return this._arrDrawingLayer.length?this._arrDrawingLayer[0]._getObjectFit():null}setVisible(t){if(!this._arrDrawingLayer.length)return;this._getFabricCanvas().wrapperEl.style.display=t?"block":"none"}_getFabricCanvas(){return this._arrDrawingLayer.length?this._arrDrawingLayer[0].fabricCanvas:null}_switchPointerEvent(){if(this._arrDrawingLayer.length)for(let t of this._arrDrawingLayer)t.getMode()}}class yn extends yi{constructor(t,e,i,n,r){super(t,{x:e,y:i,width:n,height:0},r),Ni.set(this,void 0),ji.set(this,void 0),this._fabricObject.paddingTop=15,this._fabricObject.calcTextHeight=function(){for(var t=0,e=0,i=this._textLines.length;e=0&&Ne(this,ji,setTimeout((()=>{this.set("visible",!1),this._drawingLayer&&this._drawingLayer.renderAll()}),Be(this,Ni,"f")),"f")}getDuration(){return Be(this,Ni,"f")}}Ni=new WeakMap,ji=new WeakMap;class wn{constructor(){Ui.add(this),Vi.set(this,void 0),Gi.set(this,void 0),Wi.set(this,void 0),Yi.set(this,!0),this._drawingLayerManager=new vn}createDrawingLayerBaseCvs(t,e,i="contain"){if("number"!=typeof t||t<=1)throw new Error("Invalid 'width'.");if("number"!=typeof e||e<=1)throw new Error("Invalid 'height'.");if(!["contain","cover"].includes(i))throw new Error("Unsupported 'objectFit'.");const n=document.createElement("canvas");return n.width==t&&n.height==e||(n.width=t,n.height=e),n.style.objectFit=i,n}_createDrawingLayer(t,e,i,n){if(!this._layerBaseCvs){let r;try{r=this.getContentDimensions()}catch(t){if("Invalid content dimensions."!==(t.message||t))throw t}e||(e=(null==r?void 0:r.width)||1280),i||(i=(null==r?void 0:r.height)||720),n||(n=(null==r?void 0:r.objectFit)||"contain"),this._layerBaseCvs=this.createDrawingLayerBaseCvs(e,i,n)}const r=this._layerBaseCvs,s=this._drawingLayerManager.createDrawingLayer(r,t);return this._innerComponent.getElement("drawing-layer")||this._innerComponent.setElement("drawing-layer",r.parentElement),s}createDrawingLayer(){let t;for(let e=_n.USER_DEFINED_LAYER_BASE_ID;;e++)if(!this._drawingLayerManager.getDrawingLayer(e)&&e!==_n.TIP_LAYER_ID){t=e;break}return this._createDrawingLayer(t)}deleteDrawingLayer(t){var e;this._drawingLayerManager.deleteDrawingLayer(t),this._drawingLayerManager.getAllDrawingLayers().length||(null===(e=this._innerComponent)||void 0===e||e.removeElement("drawing-layer"),this._layerBaseCvs=null)}deleteUserDefinedDrawingLayer(t){if("number"!=typeof t)throw new TypeError("Invalid id.");if(t<_n.USER_DEFINED_LAYER_BASE_ID)throw new Error(`The drawing layer with id ${t} is not defined by users.`);this.deleteDrawingLayer(t)}_clearDrawingLayers(){const t=this.getAllDrawingLayers();for(let e of t)this.deleteDrawingLayer(e.getId())}clearUserDefinedDrawingLayers(){const t=this.getAllDrawingLayers();for(let e of t){const t=e.getId();t<_n.USER_DEFINED_LAYER_BASE_ID||this.deleteUserDefinedDrawingLayer(t)}}getDrawingLayer(t){if(t==_n.TIP_LAYER_ID)return null;return this._drawingLayerManager.getDrawingLayer(t)||([_n.DDN_LAYER_ID,_n.DBR_LAYER_ID,_n.DLR_LAYER_ID].includes(t)?this._createDrawingLayer(t):null)}getAllDrawingLayers(){return this._drawingLayerManager.getAllDrawingLayers().filter((t=>t.getId()>=0&&t.getId()!==_n.TIP_LAYER_ID))}updateDrawingLayers(t){((t,e,i)=>{if(!(t<=1||e<=1)){if(!["contain","cover"].includes(i))throw new Error("Unsupported 'objectFit'.");this._drawingLayerManager.setDimensions({width:t,height:e},{backstoreOnly:!0}),this._drawingLayerManager.setObjectFit(i)}})(t.width,t.height,t.objectFit)}getSelectedDrawingItems(){return this._drawingLayerManager.getSelectedDrawingItems()}setTipConfig(t){if(!(Ti(e=t)&&S(e.topLeftPoint)&&Qe(e.width))||e.width<=0||!Qe(e.duration)||"coordinateBase"in e&&!["view","image"].includes(e.coordinateBase))throw new Error("Invalid tip config.");var e;Ne(this,Vi,JSON.parse(JSON.stringify(t)),"f"),Be(this,Vi,"f").coordinateBase||(Be(this,Vi,"f").coordinateBase="view"),Ne(this,Wi,t.duration,"f"),Be(this,Ui,"m",qi).call(this)}getTipConfig(){return Be(this,Vi,"f")?Be(this,Vi,"f"):null}setTipVisible(t){if("boolean"!=typeof t)throw new TypeError("Invalid value.");this._tip&&(this._tip.set("visible",t),this._drawingLayerOfTip&&this._drawingLayerOfTip.renderAll()),Ne(this,Yi,t,"f")}isTipVisible(){return Be(this,Yi,"f")}updateTipMessage(t){if(!Be(this,Vi,"f"))throw new Error("Tip config is not set.");this._tipStyleId||(this._tipStyleId=pn.createDrawingStyle({fillStyle:"#FFFFFF",paintMode:"fill",fontFamily:"Open Sans",fontSize:40})),this._drawingLayerOfTip||(this._drawingLayerOfTip=this._drawingLayerManager.getDrawingLayer(_n.TIP_LAYER_ID)||this._createDrawingLayer(_n.TIP_LAYER_ID)),this._tip?this._tip.set("text",t):this._tip=Be(this,Ui,"m",Hi).call(this,t,Be(this,Vi,"f").topLeftPoint.x,Be(this,Vi,"f").topLeftPoint.y,Be(this,Vi,"f").width,Be(this,Vi,"f").coordinateBase,this._tipStyleId),Be(this,Ui,"m",Xi).call(this,this._tip,this._drawingLayerOfTip),this._tip.set("visible",Be(this,Yi,"f")),this._drawingLayerOfTip&&this._drawingLayerOfTip.renderAll(),Be(this,Gi,"f")&&clearTimeout(Be(this,Gi,"f")),Be(this,Wi,"f")>=0&&Ne(this,Gi,setTimeout((()=>{Be(this,Ui,"m",zi).call(this)}),Be(this,Wi,"f")),"f")}}Vi=new WeakMap,Gi=new WeakMap,Wi=new WeakMap,Yi=new WeakMap,Ui=new WeakSet,Hi=function(t,e,i,n,r,s){const o=new yn(t,e,i,n,s);return o.coordinateBase=r,o},Xi=function(t,e){e.hasDrawingItem(t)||e.addDrawingItems([t])},zi=function(){this._tip&&this._drawingLayerOfTip.removeDrawingItems([this._tip])},qi=function(){if(!this._tip)return;const t=Be(this,Vi,"f");this._tip.coordinateBase=t.coordinateBase,this._tip.setTextRect({x:t.topLeftPoint.x,y:t.topLeftPoint.y,width:t.width,height:0}),this._tip.set("width",this._tip.get("width")),this._tip._drawingLayer&&this._tip._drawingLayer.renderAll()};class Cn extends HTMLElement{constructor(){super(),Zi.set(this,void 0);const t=new DocumentFragment,e=document.createElement("div");e.setAttribute("class","wrapper"),t.appendChild(e),Ne(this,Zi,e,"f");const i=document.createElement("slot");i.setAttribute("name","single-frame-input-container"),e.append(i);const n=document.createElement("slot");n.setAttribute("name","content"),e.append(n);const r=document.createElement("slot");r.setAttribute("name","drawing-layer"),e.append(r);const s=document.createElement("style");s.textContent='\n.wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n}\n::slotted(canvas[slot="content"]) {\n object-fit: contain;\n pointer-events: none;\n}\n::slotted(div[slot="single-frame-input-container"]) {\n width: 1px;\n height: 1px;\n overflow: hidden;\n pointer-events: none;\n}\n::slotted(*) {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n ',t.appendChild(s),this.attachShadow({mode:"open"}).appendChild(t)}getWrapper(){return Be(this,Zi,"f")}setElement(t,e){if(!(e instanceof HTMLElement))throw new TypeError("Invalid 'el'.");if(!["content","single-frame-input-container","drawing-layer"].includes(t))throw new TypeError("Invalid 'slot'.");this.removeElement(t),e.setAttribute("slot",t),this.appendChild(e)}getElement(t){if(!["content","single-frame-input-container","drawing-layer"].includes(t))throw new TypeError("Invalid 'slot'.");return this.querySelector(`[slot="${t}"]`)}removeElement(t){var e;if(!["content","single-frame-input-container","drawing-layer"].includes(t))throw new TypeError("Invalid 'slot'.");null===(e=this.querySelectorAll(`[slot="${t}"]`))||void 0===e||e.forEach((t=>t.remove()))}}Zi=new WeakMap,customElements.get("dce-component")||customElements.define("dce-component",Cn);class En extends wn{static get engineResourcePath(){return A(gt.engineResourcePaths).dce}static set defaultUIElementURL(t){En._defaultUIElementURL=t}static get defaultUIElementURL(){var t;return null===(t=En._defaultUIElementURL)||void 0===t?void 0:t.replace("@engineResourcePath/",En.engineResourcePath)}static async createInstance(t){const e=new En;return"string"==typeof t&&(t=t.replace("@engineResourcePath/",En.engineResourcePath)),await e.setUIElement(t||En.defaultUIElementURL),e}static _transformCoordinates(t,e,i,n,r,s,o){const a=s/n,h=o/r;t.x=Math.round(t.x/a+e),t.y=Math.round(t.y/h+i)}set _singleFrameMode(t){if(!["disabled","image","camera"].includes(t))throw new Error("Invalid value.");if(t!==Be(this,on,"f")){if(Ne(this,on,t,"f"),Be(this,Ki,"m",ln).call(this))Ne(this,tn,null,"f"),this._videoContainer=null,this._innerComponent.removeElement("content"),this._innerComponent&&(this._innerComponent.addEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.setAttribute("title","Take a photo")),this._bgCamera&&(this._bgCamera.style.display="block");else if(this._innerComponent&&(this._innerComponent.removeEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.removeAttribute("title")),this._bgCamera&&(this._bgCamera.style.display="none"),!Be(this,tn,"f")){const t=document.createElement("video");t.style.position="absolute",t.style.left="0",t.style.top="0",t.style.width="100%",t.style.height="100%",t.style.objectFit=this.getVideoFit(),t.setAttribute("autoplay","true"),t.setAttribute("playsinline","true"),t.setAttribute("muted","true"),["iPhone","iPad","Mac"].includes(ke.OS)&&t.setAttribute("poster","data:image/gif;base64,R0lGODlhAQABAIEAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAgEAAEEBAA7"),Ne(this,tn,t,"f");const e=document.createElement("div");e.append(t),e.style.overflow="hidden",this._videoContainer=e,this._innerComponent.setElement("content",e)}Be(this,Ki,"m",ln).call(this)||this._hideDefaultSelection?(this._selCam&&(this._selCam.style.display="none"),this._selRsl&&(this._selRsl.style.display="none"),this._selMinLtr&&(this._selMinLtr.style.display="none")):(this._selCam&&(this._selCam.style.display="block"),this._selRsl&&(this._selRsl.style.display="block"),this._selMinLtr&&(this._selMinLtr.style.display="block"),this._stopLoading())}}get _singleFrameMode(){return Be(this,on,"f")}get disposed(){return Be(this,hn,"f")}constructor(){super(),Ki.add(this),Ji.set(this,void 0),Qi.set(this,void 0),$i.set(this,void 0),this.containerClassName="dce-video-container",tn.set(this,void 0),this.videoFit="contain",this._hideDefaultSelection=!1,this._divScanArea=null,this._divScanLight=null,this._bgLoading=null,this._selCam=null,this._bgCamera=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,en.set(this,null),this.regionMaskFillStyle="rgba(0,0,0,0.5)",this.regionMaskStrokeStyle="rgb(254,142,20)",this.regionMaskLineWidth=6,nn.set(this,!1),rn.set(this,!1),sn.set(this,{width:0,height:0}),this._updateLayersTimeout=500,this._videoResizeListener=()=>{Be(this,Ki,"m",gn).call(this),this._updateLayersTimeoutId&&clearTimeout(this._updateLayersTimeoutId),this._updateLayersTimeoutId=setTimeout((()=>{this.disposed||(this.eventHandler.fire("videoEl:resized",null,{async:!1}),this.eventHandler.fire("content:updated",null,{async:!1}),this.isScanLaserVisible()&&Be(this,Ki,"m",fn).call(this))}),this._updateLayersTimeout)},this._windowResizeListener=()=>{En._onLog&&En._onLog("window resize event triggered."),Be(this,sn,"f").width===document.documentElement.clientWidth&&Be(this,sn,"f").height===document.documentElement.clientHeight||(Be(this,sn,"f").width=document.documentElement.clientWidth,Be(this,sn,"f").height=document.documentElement.clientHeight,this._videoResizeListener())},on.set(this,"disabled"),this._clickIptSingleFrameMode=()=>{if(!Be(this,Ki,"m",ln).call(this))return;let t;if(this._singleFrameInputContainer)t=this._singleFrameInputContainer.firstElementChild;else{t=document.createElement("input"),t.setAttribute("type","file"),"camera"===this._singleFrameMode?(t.setAttribute("capture",""),t.setAttribute("accept","image/*")):"image"===this._singleFrameMode&&(t.removeAttribute("capture"),t.setAttribute("accept",".jpg,.jpeg,.icon,.gif,.svg,.webp,.png,.bmp")),t.addEventListener("change",(async()=>{const e=t.files[0];t.value="";{const t=async t=>{let e=null,i=null;if("undefined"!=typeof createImageBitmap)try{if(e=await createImageBitmap(t),e)return e}catch(t){}var n;return e||(i=await(n=t,new Promise(((t,e)=>{let i=URL.createObjectURL(n),r=new Image;r.src=i,r.onload=()=>{URL.revokeObjectURL(r.src),t(r)},r.onerror=t=>{e(new Error("Can't convert blob to image : "+(t instanceof Event?t.type:t)))}})))),i},i=(t,e,i,n)=>{t.width==i&&t.height==n||(t.width=i,t.height=n);const r=t.getContext("2d");r.clearRect(0,0,t.width,t.height),r.drawImage(e,0,0)},n=await t(e),r=n instanceof HTMLImageElement?n.naturalWidth:n.width,s=n instanceof HTMLImageElement?n.naturalHeight:n.height;let o=this._cvsSingleFrameMode;const a=null==o?void 0:o.width,h=null==o?void 0:o.height;o||(o=document.createElement("canvas"),this._cvsSingleFrameMode=o),i(o,n,r,s),this._innerComponent.setElement("content",o),a===o.width&&h===o.height||this.eventHandler.fire("content:updated",null,{async:!1})}this._onSingleFrameAcquired&&setTimeout((()=>{this._onSingleFrameAcquired(this._cvsSingleFrameMode)}),0)})),t.style.position="absolute",t.style.top="-9999px",t.style.backgroundColor="transparent",t.style.color="transparent";const e=document.createElement("div");e.append(t),this._innerComponent.setElement("single-frame-input-container",e),this._singleFrameInputContainer=e}null==t||t.click()},an.set(this,[]),this._capturedResultReceiver={onCapturedResultReceived:(t,e)=>{var i,n,r,s;if(this.disposed)return;if(this.clearAllInnerDrawingItems(),!t)return;const o=t.originalImageTag;if(!o)return;const a=t.items;if(!(null==a?void 0:a.length))return;const h=(null===(i=o.cropRegion)||void 0===i?void 0:i.left)||0,l=(null===(n=o.cropRegion)||void 0===n?void 0:n.top)||0,c=(null===(r=o.cropRegion)||void 0===r?void 0:r.right)?o.cropRegion.right-h:o.originalWidth,u=(null===(s=o.cropRegion)||void 0===s?void 0:s.bottom)?o.cropRegion.bottom-l:o.originalHeight,d=o.currentWidth,f=o.currentHeight,g=(t,e,i,n,r,s,o,a,h=[],l)=>{e.forEach((t=>En._transformCoordinates(t,i,n,r,s,o,a)));const c=new Ei({points:[{x:e[0].x,y:e[0].y},{x:e[1].x,y:e[1].y},{x:e[2].x,y:e[2].y},{x:e[3].x,y:e[3].y}]},l);for(let t of h)c.addNote(t);t.addDrawingItems([c]),Be(this,an,"f").push(c)};let m,p;for(let t of a)switch(t.type){case mt.CRIT_ORIGINAL_IMAGE:break;case mt.CRIT_BARCODE:m=this.getDrawingLayer(_n.DBR_LAYER_ID),p=[{name:"format",content:t.formatString},{name:"text",content:t.text}],(null==e?void 0:e.isBarcodeVerifyOpen)?t.verified?g(m,t.location.points,h,l,c,u,d,f,p):g(m,t.location.points,h,l,c,u,d,f,p,pn.STYLE_ORANGE_STROKE_TRANSPARENT):g(m,t.location.points,h,l,c,u,d,f,p);break;case mt.CRIT_TEXT_LINE:m=this.getDrawingLayer(_n.DLR_LAYER_ID),p=[{name:"text",content:t.text}],e.isLabelVerifyOpen?t.verified?g(m,t.location.points,h,l,c,u,d,f,p):g(m,t.location.points,h,l,c,u,d,f,p,pn.STYLE_GREEN_STROKE_TRANSPARENT):g(m,t.location.points,h,l,c,u,d,f,p);break;case mt.CRIT_DETECTED_QUAD:m=this.getDrawingLayer(_n.DDN_LAYER_ID),(null==e?void 0:e.isDetectVerifyOpen)?t.crossVerificationStatus===St.CVS_PASSED?g(m,t.location.points,h,l,c,u,d,f,[]):g(m,t.location.points,h,l,c,u,d,f,[],pn.STYLE_BLUE_STROKE_TRANSPARENT):g(m,t.location.points,h,l,c,u,d,f,[]);break;case mt.CRIT_NORMALIZED_IMAGE:m=this.getDrawingLayer(_n.DDN_LAYER_ID),(null==e?void 0:e.isNormalizeVerifyOpen)?t.crossVerificationStatus===St.CVS_PASSED?g(m,t.location.points,h,l,c,u,d,f,[]):g(m,t.location.points,h,l,c,u,d,f,[],pn.STYLE_BLUE_STROKE_TRANSPARENT):g(m,t.location.points,h,l,c,u,d,f,[]);break;case mt.CRIT_PARSED_RESULT:break;default:throw new Error("Illegal item type.")}}},hn.set(this,!1),this.eventHandler=new Ri,this.eventHandler.on("content:updated",(()=>{Be(this,Ji,"f")&&clearTimeout(Be(this,Ji,"f")),Ne(this,Ji,setTimeout((()=>{if(this.disposed)return;let t;this._updateVideoContainer();try{t=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}this.updateDrawingLayers(t),this.updateConvertedRegion(t)}),0),"f")})),this.eventHandler.on("videoEl:resized",(()=>{Be(this,Qi,"f")&&clearTimeout(Be(this,Qi,"f")),Ne(this,Qi,setTimeout((()=>{this.disposed||this._updateVideoContainer()}),0),"f")}))}_setUIElement(t){this.UIElement=t,this._unbindUI(),this._bindUI()}async setUIElement(t){let e;if("string"==typeof t){let i=await Fi(t);e=document.createElement("div"),Object.assign(e.style,{width:"100%",height:"100%"}),e.attachShadow({mode:"open"}).appendChild(i.cloneNode(!0))}else e=t;this._setUIElement(e)}getUIElement(){return this.UIElement}_bindUI(){var t,e;if(!this.UIElement)throw new Error("Need to set 'UIElement'.");if(this._innerComponent)return;let i=this.UIElement;i=i.shadowRoot||i;let n=(null===(t=i.classList)||void 0===t?void 0:t.contains(this.containerClassName))?i:i.querySelector(`.${this.containerClassName}`);if(!n)throw Error(`Can not find the element with class '${this.containerClassName}'.`);if(this._innerComponent=document.createElement("dce-component"),n.appendChild(this._innerComponent),Be(this,Ki,"m",ln).call(this));else{const t=document.createElement("video");Object.assign(t.style,{position:"absolute",left:"0",top:"0",width:"100%",height:"100%",objectFit:this.getVideoFit()}),t.setAttribute("autoplay","true"),t.setAttribute("playsinline","true"),t.setAttribute("muted","true"),["iPhone","iPad","Mac"].includes(ke.OS)&&t.setAttribute("poster","data:image/gif;base64,R0lGODlhAQABAIEAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAgEAAEEBAA7"),Ne(this,tn,t,"f");const e=document.createElement("div");e.append(t),e.style.overflow="hidden",this._videoContainer=e,this._innerComponent.setElement("content",e)}if(this._selRsl=i.querySelector(".dce-sel-resolution"),this._selMinLtr=i.querySelector(".dlr-sel-minletter"),this._divScanArea=i.querySelector(".dce-scanarea"),this._divScanLight=i.querySelector(".dce-scanlight"),this._bgLoading=i.querySelector(".dce-bg-loading"),this._bgCamera=i.querySelector(".dce-bg-camera"),this._selCam=i.querySelector(".dce-sel-camera"),this._optGotRsl=i.querySelector(".dce-opt-gotResolution"),this._btnClose=i.querySelector(".dce-btn-close"),this._optGotMinLtr=i.querySelector(".dlr-opt-gotMinLtr"),this._selRsl&&(this._hideDefaultSelection||Be(this,Ki,"m",ln).call(this)||this._selRsl.options.length||(this._selRsl.innerHTML=['','','',''].join(""),this._optGotRsl=this._selRsl.options[0])),this._selMinLtr&&(this._hideDefaultSelection||Be(this,Ki,"m",ln).call(this)||this._selMinLtr.options.length||(this._selMinLtr.innerHTML=['','','','','','','','','','',''].join(""),this._optGotMinLtr=this._selMinLtr.options[0])),this.isScanLaserVisible()||Be(this,Ki,"m",gn).call(this),Be(this,Ki,"m",ln).call(this)&&(this._innerComponent&&(this._innerComponent.addEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.setAttribute("title","Take a photo")),this._bgCamera&&(this._bgCamera.style.display="block")),Be(this,Ki,"m",ln).call(this)||this._hideDefaultSelection?(this._selCam&&(this._selCam.style.display="none"),this._selRsl&&(this._selRsl.style.display="none"),this._selMinLtr&&(this._selMinLtr.style.display="none")):(this._selCam&&(this._selCam.style.display="block"),this._selRsl&&(this._selRsl.style.display="block"),this._selMinLtr&&(this._selMinLtr.style.display="block"),this._stopLoading()),window.ResizeObserver){this._resizeObserver||(this._resizeObserver=new ResizeObserver((t=>{var e;En._onLog&&En._onLog("resize observer triggered.");for(let i of t)i.target===(null===(e=this._innerComponent)||void 0===e?void 0:e.getWrapper())&&this._videoResizeListener()})));const t=null===(e=this._innerComponent)||void 0===e?void 0:e.getWrapper();t&&this._resizeObserver.observe(t)}Be(this,sn,"f").width=document.documentElement.clientWidth,Be(this,sn,"f").height=document.documentElement.clientHeight,window.addEventListener("resize",this._windowResizeListener)}_unbindUI(){var t,e,i,n;Be(this,Ki,"m",ln).call(this)?(this._innerComponent&&(this._innerComponent.removeEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.removeAttribute("title")),this._bgCamera&&(this._bgCamera.style.display="none")):this._stopLoading(),Be(this,Ki,"m",gn).call(this),null===(t=this._drawingLayerManager)||void 0===t||t.clearDrawingLayers(),null===(e=this._innerComponent)||void 0===e||e.removeElement("drawing-layer"),this._layerBaseCvs=null,this._drawingLayerOfMask=null,this._drawingLayerOfTip=null,null===(i=this._innerComponent)||void 0===i||i.remove(),this._innerComponent=null,Ne(this,tn,null,"f"),null===(n=this._videoContainer)||void 0===n||n.remove(),this._videoContainer=null,this._selCam=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,this._divScanArea=null,this._divScanLight=null,this._singleFrameInputContainer&&(this._singleFrameInputContainer.remove(),this._singleFrameInputContainer=null),window.ResizeObserver&&this._resizeObserver&&this._resizeObserver.disconnect(),window.removeEventListener("resize",this._windowResizeListener)}_startLoading(){this._bgLoading&&(this._bgLoading.style.display="",this._bgLoading.style.animationPlayState="")}_stopLoading(){this._bgLoading&&(this._bgLoading.style.display="none",this._bgLoading.style.animationPlayState="paused")}_renderCamerasInfo(t,e){if(this._selCam){let i;this._selCam.textContent="";for(let n of e){const e=document.createElement("option");e.value=n.deviceId,e.innerText=n.label,this._selCam.append(e),n.deviceId&&t&&t.deviceId==n.deviceId&&(i=e)}this._selCam.value=i?i.value:""}let i=this.UIElement;if(i=i.shadowRoot||i,i.querySelector(".dce-macro-use-mobile-native-like-ui")){let t=i.querySelector(".dce-mn-cameras");if(t){t.textContent="";for(let i of e){const e=document.createElement("div");e.classList.add("dce-mn-camera-option"),e.setAttribute("data-davice-id",i.deviceId),e.textContent=i.label,t.append(e)}}}}_renderResolutionInfo(t){this._optGotRsl&&(this._optGotRsl.setAttribute("data-width",t.width),this._optGotRsl.setAttribute("data-height",t.height),this._optGotRsl.innerText="got "+t.width+"x"+t.height,this._selRsl&&this._optGotRsl.parentNode==this._selRsl&&(this._selRsl.value="got"));{let e=this.UIElement;e=(null==e?void 0:e.shadowRoot)||e;let i=null==e?void 0:e.querySelector(".dce-mn-resolution-box");if(i){let e="";if(t&&t.width&&t.height){let i=Math.max(t.width,t.height),n=Math.min(t.width,t.height);e=n<=1080?n+"P":i<3e3?"2K":Math.round(i/1e3)+"K"}i.textContent=e}}}getVideoElement(){return Be(this,tn,"f")}isVideoLoaded(){return!(!Be(this,tn,"f")||!this.cameraEnhancer)&&this.cameraEnhancer.isOpen()}setVideoFit(t){if(t=t.toLowerCase(),!["contain","cover"].includes(t))throw new Error(`Unsupported value '${t}'.`);if(this.videoFit=t,!Be(this,tn,"f"))return;if(Be(this,tn,"f").style.objectFit=t,Be(this,Ki,"m",ln).call(this))return;let e;this._updateVideoContainer();try{e=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}Be(this,Ki,"m",mn).call(this,e,this.getConvertedRegion()),this.updateDrawingLayers(e)}getVideoFit(){return this.videoFit}getContentDimensions(){var t,e,i,n;let r,s,o;if(Be(this,Ki,"m",ln).call(this)?(r=null===(i=this._cvsSingleFrameMode)||void 0===i?void 0:i.width,s=null===(n=this._cvsSingleFrameMode)||void 0===n?void 0:n.height,o="contain"):(r=null===(t=Be(this,tn,"f"))||void 0===t?void 0:t.videoWidth,s=null===(e=Be(this,tn,"f"))||void 0===e?void 0:e.videoHeight,o=this.getVideoFit()),!r||!s)throw new Error("Invalid content dimensions.");return{width:r,height:s,objectFit:o}}updateConvertedRegion(t){const e=xi.convert(this.scanRegion,t.width,t.height);Ne(this,en,e,"f"),Be(this,$i,"f")&&clearTimeout(Be(this,$i,"f")),Ne(this,$i,setTimeout((()=>{let t;try{t=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}Be(this,Ki,"m",cn).call(this,t,e),Be(this,Ki,"m",mn).call(this,t,e)}),0),"f")}getConvertedRegion(){return Be(this,en,"f")}setScanRegion(t){if(null!=t&&!w(t)&&!I(t))throw TypeError("Invalid 'region'.");let e;this.scanRegion=t?JSON.parse(JSON.stringify(t)):null;try{e=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}this.updateConvertedRegion(e)}getScanRegion(){return JSON.parse(JSON.stringify(this.scanRegion))}getVisibleRegionOfVideo(t){if(!this.isVideoLoaded())throw new Error("The video is not loaded.");const e=Be(this,tn,"f").videoWidth,i=Be(this,tn,"f").videoHeight,n=this.getVideoFit(),{width:r,height:s}=this._innerComponent.getBoundingClientRect();if(r<=0||s<=0)throw new Error("Unable to get video dimensions. Video may not be rendered on the page.");let o;const a={x:0,y:0,width:e,height:i,isMeasuredInPercentage:!1};if("cover"===n&&(r/s1){const t=Be(this,tn,"f").videoWidth,e=Be(this,tn,"f").videoHeight,{width:n,height:r}=this._innerComponent.getBoundingClientRect(),s=t/e;if(n/rt.remove())),Be(this,an,"f").length=0}dispose(){this._unbindUI(),Ne(this,hn,!0,"f")}}function Sn(t,e,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(t):n?n.value:e.get(t)}function Tn(t,e,i,n,r){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?r.call(t,i):r?r.value=i:e.set(t,i),i}Ji=new WeakMap,Qi=new WeakMap,$i=new WeakMap,tn=new WeakMap,en=new WeakMap,nn=new WeakMap,rn=new WeakMap,sn=new WeakMap,on=new WeakMap,an=new WeakMap,hn=new WeakMap,Ki=new WeakSet,ln=function(){return"disabled"!==this._singleFrameMode},cn=function(t,e){!e||0===e.x&&0===e.y&&e.width===t.width&&e.height===t.height?this.clearScanRegionMask():this.setScanRegionMask(e.x,e.y,e.width,e.height)},un=function(){this._drawingLayerOfMask&&this._drawingLayerOfMask.setVisible(!0)},dn=function(){this._drawingLayerOfMask&&this._drawingLayerOfMask.setVisible(!1)},fn=function(){this._divScanLight&&"none"==this._divScanLight.style.display&&(this._divScanLight.style.display="block")},gn=function(){this._divScanLight&&(this._divScanLight.style.display="none")},mn=function(t,e){if(!this._divScanArea)return;if(!this._innerComponent.getElement("content"))return;const{width:i,height:n,objectFit:r}=t;e||(e={x:0,y:0,width:i,height:n});const{width:s,height:o}=this._innerComponent.getBoundingClientRect();if(s<=0||o<=0)return;const a=s/o,h=i/n;let l,c,u,d,f=1;if("contain"===r)a66||"Safari"===Rn.browser&&Rn.version>13||"OPR"===Rn.browser&&Rn.version>43||"Edge"===Rn.browser&&Rn.version,"function"==typeof SuppressedError&&SuppressedError;class Mn{static multiply(t,e){const i=[];for(let n=0;n<3;n++){const r=e.slice(3*n,3*n+3);for(let e=0;e<3;e++){const n=[t[e],t[e+3],t[e+6]].reduce(((t,e,i)=>t+e*r[i]),0);i.push(n)}}return i}static identity(){return[1,0,0,0,1,0,0,0,1]}static translate(t,e,i){return Mn.multiply(t,[1,0,0,0,1,0,e,i,1])}static rotate(t,e){var i=Math.cos(e),n=Math.sin(e);return Mn.multiply(t,[i,-n,0,n,i,0,0,0,1])}static scale(t,e,i){return Mn.multiply(t,[e,0,0,0,i,0,0,0,1])}}var Fn,Pn,kn,Bn,Nn,jn,Un,Vn,Gn,Wn,Yn,Hn,Xn,zn,qn,Zn,Kn,Jn,Qn,$n,tr,er,ir,nr,rr,sr,or,ar,hr,lr,cr,ur,dr,fr,gr,mr,pr,_r,vr,yr,wr,Cr,Er,Sr,Tr,br,Ir,xr,Or,Ar;!function(t){t.GREY="grey",t.GREY32="grey32",t.RGBA="rgba",t.RBGA="rbga",t.GRBA="grba",t.GBRA="gbra",t.BRGA="brga",t.BGRA="bgra"}(Fn||(Fn={}));class Rr{static get version(){return"1.1.3"}static get webGLSupported(){return void 0===Rr._webGLSupported&&(Rr._webGLSupported=!!document.createElement("canvas").getContext("webgl")),Rr._webGLSupported}get disposed(){return Dn(this,Un,"f")}constructor(){Pn.set(this,Fn.RGBA),kn.set(this,null),Bn.set(this,null),Nn.set(this,null),this.useWebGLByDefault=!0,this._reusedCvs=null,this._reusedWebGLCvs=null,jn.set(this,null),Un.set(this,!1)}drawImage(t,e,i,n,r,s){if(this.disposed)throw Error("The 'ImageDataGetter' instance has been disposed.");if(!i||!n)throw new Error("Invalid 'sourceWidth' or 'sourceHeight'.");if((null==s?void 0:s.bUseWebGL)&&!Rr.webGLSupported)throw new Error("Your browser or machine may not support WebGL.");if(e instanceof HTMLVideoElement&&4!==e.readyState||e instanceof HTMLImageElement&&!e.complete)throw new Error("The source is not loaded.");let o;Rr._onLog&&(o=Date.now(),Rr._onLog("drawImage(), START: "+o));let a=0,h=0,l=i,c=n,u=0,d=0,f=i,g=n;r&&(r.sx&&(a=Math.round(r.sx)),r.sy&&(h=Math.round(r.sy)),r.sWidth&&(l=Math.round(r.sWidth)),r.sHeight&&(c=Math.round(r.sHeight)),r.dx&&(u=Math.round(r.dx)),r.dy&&(d=Math.round(r.dy)),r.dWidth&&(f=Math.round(r.dWidth)),r.dHeight&&(g=Math.round(r.dHeight)));let m,p=Fn.RGBA;if((null==s?void 0:s.pixelFormat)&&(p=s.pixelFormat),(null==s?void 0:s.bufferContainer)&&(m=s.bufferContainer,m.length<4*f*g))throw new Error("Unexpected size of the 'bufferContainer'.");const _=t;if(!Rr.webGLSupported||!(this.useWebGLByDefault&&null==(null==s?void 0:s.bUseWebGL)||(null==s?void 0:s.bUseWebGL))){Rr._onLog&&Rr._onLog("drawImage() in context2d."),_.ctx2d||(_.ctx2d=_.getContext("2d",{willReadFrequently:!0}));const t=_.ctx2d;if(!t)throw new Error("Unable to get 'CanvasRenderingContext2D' from canvas.");return(_.width{const e=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,e),t.bufferData(t.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),t.STATIC_DRAW);const i=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,i),t.bufferData(t.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),t.STATIC_DRAW),{positions:e,texCoords:i}},i=t=>{const e=t.createTexture();return t.bindTexture(t.TEXTURE_2D,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),e},n=(t,e)=>{const i=t.createProgram();if(e.forEach((e=>t.attachShader(i,e))),t.linkProgram(i),!t.getProgramParameter(i,t.LINK_STATUS)){const e=new Error(`An error occured linking the program: ${t.getProgramInfoLog(i)}.`);throw e.name="WebGLError",e}return t.useProgram(i),i},r=(t,e,i)=>{const n=t.createShader(e);if(t.shaderSource(n,i),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS)){const e=new Error(`An error occured compiling the shader: ${t.getShaderInfoLog(n)}.`);throw e.name="WebGLError",e}return n},s="\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\n\nuniform mat3 u_matrix;\nuniform mat3 u_textureMatrix;\n\nvarying vec2 v_texCoord;\nvoid main(void) {\ngl_Position = vec4((u_matrix * vec3(a_position, 1)).xy, 0, 1.0);\nv_texCoord = vec4((u_textureMatrix * vec3(a_texCoord, 1)).xy, 0, 1.0).xy;\n}";let o="rgb";["rgba","rbga","grba","gbra","brga","bgra"].includes(p)&&(o=p.slice(0,3));const a=`\nprecision mediump float;\nvarying vec2 v_texCoord;\nuniform sampler2D u_image;\nuniform float uColorFactor;\n\nvoid main() {\nvec4 sample = texture2D(u_image, v_texCoord);\nfloat grey = 0.3 * sample.r + 0.59 * sample.g + 0.11 * sample.b;\ngl_FragColor = vec4(sample.${o} * (1.0 - uColorFactor) + (grey * uColorFactor), sample.a);\n}`,h=n(t,[r(t,t.VERTEX_SHADER,s),r(t,t.FRAGMENT_SHADER,a)]);Ln(this,Bn,{program:h,attribLocations:{vertexPosition:t.getAttribLocation(h,"a_position"),texPosition:t.getAttribLocation(h,"a_texCoord")},uniformLocations:{uSampler:t.getUniformLocation(h,"u_image"),uColorFactor:t.getUniformLocation(h,"uColorFactor"),uMatrix:t.getUniformLocation(h,"u_matrix"),uTextureMatrix:t.getUniformLocation(h,"u_textureMatrix")}},"f"),Ln(this,Nn,e(t),"f"),Ln(this,kn,i(t),"f"),Ln(this,Pn,p,"f")}const r=(t,e,i)=>{t.bindBuffer(t.ARRAY_BUFFER,e),t.enableVertexAttribArray(i),t.vertexAttribPointer(i,2,t.FLOAT,!1,0,0)},s=(t,e,i)=>{const n=t.RGBA,r=t.RGBA,s=t.UNSIGNED_BYTE;t.bindTexture(t.TEXTURE_2D,e),t.texImage2D(t.TEXTURE_2D,0,n,r,s,i)},v=(t,e,s,o)=>{t.clearColor(0,0,0,1),t.clearDepth(1),t.enable(t.DEPTH_TEST),t.depthFunc(t.LEQUAL),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT),r(t,s.positions,e.attribLocations.vertexPosition),r(t,s.texCoords,e.attribLocations.texPosition),t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,o),t.uniform1i(e.uniformLocations.uSampler,0),t.uniform1f(e.uniformLocations.uColorFactor,[Fn.GREY,Fn.GREY32].includes(p)?1:0);let m,_,v=Mn.translate(Mn.identity(),-1,-1);v=Mn.scale(v,2,2),v=Mn.scale(v,1/t.canvas.width,1/t.canvas.height),m=Mn.translate(v,u,d),m=Mn.scale(m,f,g),t.uniformMatrix3fv(e.uniformLocations.uMatrix,!1,m),_=Mn.translate(Mn.identity(),a/i,h/n),_=Mn.scale(_,l/i,c/n),t.uniformMatrix3fv(e.uniformLocations.uTextureMatrix,!1,_),t.drawArrays(t.TRIANGLES,0,6)};s(t,Dn(this,kn,"f"),e),v(t,Dn(this,Bn,"f"),Dn(this,Nn,"f"),Dn(this,kn,"f"));const y=m||new Uint8Array(4*f*g);if(t.readPixels(u,d,f,g,t.RGBA,t.UNSIGNED_BYTE,y),255!==y[3]){Rr._onLog&&Rr._onLog("Incorrect WebGL drawing .");const t=new Error("WebGL error: incorrect drawing.");throw t.name="WebGLError",t}return Rr._onLog&&Rr._onLog("drawImage() in WebGL end. Costs: "+(Date.now()-o)),{context:t,pixelFormat:p===Fn.GREY?Fn.GREY32:p,bUseWebGL:!0}}catch(o){if(this.forceLoseContext(),null==(null==s?void 0:s.bUseWebGL))return Rr._onLog&&Rr._onLog("'drawImage()' in WebGL failed, try again in context2d."),this.useWebGLByDefault=!1,this.drawImage(t,e,i,n,r,Object.assign({},s,{bUseWebGL:!1}));throw o.name="WebGLError",o}}readCvsData(t,e,i){if(!(t instanceof CanvasRenderingContext2D||t instanceof WebGLRenderingContext))throw new Error("Invalid 'context'.");let n,r=0,s=0,o=t.canvas.width,a=t.canvas.height;if(e&&(e.x&&(r=e.x),e.y&&(s=e.y),e.width&&(o=e.width),e.height&&(a=e.height)),(null==i?void 0:i.length)<4*o*a)throw new Error("Unexpected size of the 'bufferContainer'.");if(t instanceof WebGLRenderingContext){const e=t;i?(e.readPixels(r,s,o,a,e.RGBA,e.UNSIGNED_BYTE,i),n=new Uint8Array(i.buffer,0,4*o*a)):(n=new Uint8Array(4*o*a),e.readPixels(r,s,o,a,e.RGBA,e.UNSIGNED_BYTE,n))}else if(t instanceof CanvasRenderingContext2D){let e;e=t.getImageData(r,s,o,a),n=new Uint8Array(e.data.buffer),null==i||i.set(n)}return n}transformPixelFormat(t,e,i,n){let r,s;if(Rr._onLog&&(r=Date.now(),Rr._onLog("transformPixelFormat(), START: "+r)),e===i)return Rr._onLog&&Rr._onLog("transformPixelFormat() end. Costs: "+(Date.now()-r)),n?new Uint8Array(t):t;const o=[Fn.RGBA,Fn.RBGA,Fn.GRBA,Fn.GBRA,Fn.BRGA,Fn.BGRA];if(o.includes(e))if(i===Fn.GREY){s=new Uint8Array(t.length/4);for(let e=0;eh||e.sy+e.sHeight>l)throw new Error("Invalid position.");null===(n=Rr._onLog)||void 0===n||n.call(Rr,"getImageData(), START: "+(c=Date.now()));const d=Math.round(e.sx),f=Math.round(e.sy),g=Math.round(e.sWidth),m=Math.round(e.sHeight),p=Math.round(e.dWidth),_=Math.round(e.dHeight);let v,y=(null==i?void 0:i.pixelFormat)||Fn.RGBA,w=null==i?void 0:i.bufferContainer;if(w&&(Fn.GREY===y&&w.length{this.disposed||n.includes(r)&&r.apply(i.target,s)}),0);else try{o=r.apply(i.target,s)}catch(t){}if(!0===o)break}}}dispose(){Tn(this,Gn,!0,"f")}}Vn=new WeakMap,Gn=new WeakMap;const Lr=(t,e,i,n)=>{if(!i)return t;let r=e+Math.round((t-e)/i)*i;return n&&(r=Math.min(r,n)),r};class Mr{static get version(){return"2.0.18"}static isStorageAvailable(t){let e;try{e=window[t];const i="__storage_test__";return e.setItem(i,i),e.removeItem(i),!0}catch(t){return t instanceof DOMException&&(22===t.code||1014===t.code||"QuotaExceededError"===t.name||"NS_ERROR_DOM_QUOTA_REACHED"===t.name)&&e&&0!==e.length}}static findBestRearCameraInIOS(t,e){if(!t||!t.length)return null;let i=!1;if((null==e?void 0:e.getMainCamera)&&(i=!0),i){const e=["후면 카메라","背面カメラ","後置鏡頭","后置相机","กล้องด้านหลัง","बैक कैमरा","الكاميرا الخلفية","מצלמה אחורית","камера на задней панели","задня камера","задна камера","артқы камера","πίσω κάμερα","zadní fotoaparát","zadná kamera","tylny aparat","takakamera","stražnja kamera","rückkamera","kamera på baksidan","kamera belakang","kamera bak","hátsó kamera","fotocamera (posteriore)","câmera traseira","câmara traseira","cámara trasera","càmera posterior","caméra arrière","cameră spate","camera mặt sau","camera aan achterzijde","bagsidekamera","back camera","arka kamera"],i=t.find((t=>e.includes(t.label.toLowerCase())));return null==i?void 0:i.deviceId}{const e=["후면","背面","後置","后置","านหลัง","बैक","خلفية","אחורית","задняя","задней","задна","πίσω","zadní","zadná","tylny","trasera","traseira","taka","stražnja","spate","sau","rück","posteriore","posterior","hátsó","belakang","baksidan","bakre","bak","bagside","back","aртқы","arrière","arka","achterzijde"],i=["트리플","三镜头","三鏡頭","トリプル","สาม","ट्रिपल","ثلاثية","משולשת","үштік","тройная","тройна","потроєна","τριπλή","üçlü","trójobiektywowy","trostruka","trojný","trojitá","trippelt","trippel","triplă","triple","tripla","tiga","kolmois","ba camera"],n=["듀얼 와이드","雙廣角","双广角","デュアル広角","คู่ด้านหลังมุมกว้าง","ड्युअल वाइड","مزدوجة عريضة","כפולה רחבה","қос кең бұрышты","здвоєна ширококутна","двойная широкоугольная","двойна широкоъгълна","διπλή ευρεία","çift geniş","laajakulmainen kaksois","kép rộng mặt sau","kettős, széles látószögű","grande angular dupla","ganda","dwuobiektywowy","dwikamera","dvostruka široka","duální širokoúhlý","duálna širokouhlá","dupla grande-angular","dublă","dubbel vidvinkel","dual-weitwinkel","dual wide","dual con gran angular","dual","double","doppia con grandangolo","doble","dobbelt vidvinkelkamera"],r=t.filter((t=>{const i=t.label.toLowerCase();return e.some((t=>i.includes(t)))}));if(!r.length)return null;const s=r.find((t=>{const e=t.label.toLowerCase();return i.some((t=>e.includes(t)))}));if(s)return s.deviceId;const o=r.find((t=>{const e=t.label.toLowerCase();return n.some((t=>e.includes(t)))}));return o?o.deviceId:r[0].deviceId}}static findBestRearCamera(t,e){if(!t||!t.length)return null;if(["iPhone","iPad","Mac"].includes(Rn.OS))return Mr.findBestRearCameraInIOS(t,{getMainCamera:null==e?void 0:e.getMainCameraInIOS});const i=["후","背面","背置","後面","後置","后面","后置","านหลัง","หลัง","बैक","خلفية","אחורית","задняя","задня","задней","задна","πίσω","zadní","zadná","tylny","trás","trasera","traseira","taka","stražnja","spate","sau","rück","rear","posteriore","posterior","hátsó","darrere","belakang","baksidan","bakre","bak","bagside","back","aртқы","arrière","arka","achterzijde"];for(let e of t){const t=e.label.toLowerCase();if(t&&i.some((e=>t.includes(e)))&&/\b0(\b)?/.test(t))return e.deviceId}return["Android","HarmonyOS"].includes(Rn.OS)?t[t.length-1].deviceId:null}static findBestCamera(t,e,i){return t&&t.length?"environment"===e?this.findBestRearCamera(t,i):"user"===e?null:e?void 0:null:null}static async playVideo(t,e,i){if(!t)throw new Error("Invalid 'videoEl'.");if(!e)throw new Error("Invalid 'source'.");return new Promise((async(n,r)=>{let s;const o=()=>{t.removeEventListener("loadstart",c),t.removeEventListener("abort",u),t.removeEventListener("play",d),t.removeEventListener("error",f),t.removeEventListener("loadedmetadata",p)};let a=!1;const h=()=>{a=!0,s&&clearTimeout(s),o(),n(t)},l=t=>{s&&clearTimeout(s),o(),r(t)},c=()=>{t.addEventListener("abort",u,{once:!0})},u=()=>{const t=new Error("Video playing was interrupted.");t.name="AbortError",l(t)},d=()=>{h()},f=()=>{l(new Error(`Video error ${t.error.code}: ${t.error.message}.`))};let g;const m=new Promise((t=>{g=t})),p=()=>{g()};if(t.addEventListener("loadstart",c,{once:!0}),t.addEventListener("play",d,{once:!0}),t.addEventListener("error",f,{once:!0}),t.addEventListener("loadedmetadata",p,{once:!0}),"string"==typeof e||e instanceof String?t.src=e:t.srcObject=e,t.autoplay&&await new Promise((t=>{setTimeout(t,1e3)})),!a){i&&(s=setTimeout((()=>{o(),r(new Error("Failed to play video. Timeout."))}),i)),await m;try{await t.play(),h()}catch(t){console.warn("1st play error: "+((null==t?void 0:t.message)||t))}if(!a)try{await t.play(),h()}catch(t){console.warn("2rd play error: "+((null==t?void 0:t.message)||t)),l(t)}}}))}static async testCameraAccess(t){var e,i;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))return{ok:!1,errorName:"InsecureContext",errorMessage:"Insecure context."};let n;try{n=t?await navigator.mediaDevices.getUserMedia(t):await navigator.mediaDevices.getUserMedia({video:!0})}catch(t){return{ok:!1,errorName:t.name,errorMessage:t.message}}finally{null==n||n.getTracks().forEach((t=>{t.stop()}))}return{ok:!0}}get state(){if(!Sn(this,ir,"f"))return"closed";if("pending"===Sn(this,ir,"f"))return"opening";if("fulfilled"===Sn(this,ir,"f"))return"opened";throw new Error("Unknown state.")}set ifSaveLastUsedCamera(t){t?Mr.isStorageAvailable("localStorage")?Tn(this,Qn,!0,"f"):(Tn(this,Qn,!1,"f"),console.warn("Local storage is unavailable")):Tn(this,Qn,!1,"f")}get ifSaveLastUsedCamera(){return Sn(this,Qn,"f")}get isVideoPlaying(){return!(!Sn(this,Hn,"f")||Sn(this,Hn,"f").paused)&&"opened"===this.state}set tapFocusEventBoundEl(t){var e,i,n;if(!(t instanceof HTMLElement)&&null!=t)throw new TypeError("Invalid 'element'.");null===(e=Sn(this,hr,"f"))||void 0===e||e.removeEventListener("click",Sn(this,ar,"f")),null===(i=Sn(this,hr,"f"))||void 0===i||i.removeEventListener("touchend",Sn(this,ar,"f")),null===(n=Sn(this,hr,"f"))||void 0===n||n.removeEventListener("touchmove",Sn(this,or,"f")),Tn(this,hr,t,"f"),t&&(window.TouchEvent&&["Android","HarmonyOS","iPhone","iPad"].includes(Rn.OS)?(t.addEventListener("touchend",Sn(this,ar,"f")),t.addEventListener("touchmove",Sn(this,or,"f"))):t.addEventListener("click",Sn(this,ar,"f")))}get tapFocusEventBoundEl(){return Sn(this,hr,"f")}get disposed(){return Sn(this,_r,"f")}constructor(t){var e,i;Yn.add(this),Hn.set(this,null),Xn.set(this,void 0),zn.set(this,(()=>{"opened"===this.state&&Sn(this,dr,"f").fire("resumed",null,{target:this,async:!1})})),qn.set(this,(()=>{Sn(this,dr,"f").fire("paused",null,{target:this,async:!1})})),Zn.set(this,void 0),Kn.set(this,void 0),this.cameraOpenTimeout=15e3,this._arrCameras=[],Jn.set(this,void 0),Qn.set(this,!1),this.ifSkipCameraInspection=!1,this.selectIOSRearMainCameraAsDefault=!1,$n.set(this,void 0),tr.set(this,!0),er.set(this,void 0),ir.set(this,void 0),nr.set(this,!1),this._focusParameters={maxTimeout:400,minTimeout:300,kTimeout:void 0,oldDistance:null,fds:null,isDoingFocus:0,taskBackToContinous:null,curFocusTaskId:0,focusCancelableTime:1500,defaultFocusAreaSizeRatio:6,focusBackToContinousTime:5e3,tapFocusMinDistance:null,tapFocusMaxDistance:null,focusArea:null,tempBufferContainer:null,defaultTempBufferContainerLenRatio:1/4},rr.set(this,!1),this._focusSupported=!0,this.calculateCoordInVideo=(t,e)=>{let i,n;const r=window.getComputedStyle(Sn(this,Hn,"f")).objectFit,s=this.getResolution(),o=Sn(this,Hn,"f").getBoundingClientRect(),a=o.left,h=o.top,{width:l,height:c}=Sn(this,Hn,"f").getBoundingClientRect();if(l<=0||c<=0)throw new Error("Unable to get video dimensions. Video may not be rendered on the page.");const u=l/c,d=s.width/s.height;let f=1;if("contain"===r)d>u?(f=l/s.width,i=(t-a)/f,n=(e-h-(c-l/d)/2)/f):(f=c/s.height,n=(e-h)/f,i=(t-a-(l-c*d)/2)/f);else{if("cover"!==r)throw new Error("Unsupported object-fit.");d>u?(f=c/s.height,n=(e-h)/f,i=(t-a+(c*d-l)/2)/f):(f=l/s.width,i=(t-a)/f,n=(e-h+(l/d-c)/2)/f)}return{x:i,y:n}},sr.set(this,!1),or.set(this,(()=>{Tn(this,sr,!0,"f")})),ar.set(this,(async t=>{var e;if(Sn(this,sr,"f"))return void Tn(this,sr,!1,"f");if(!Sn(this,rr,"f"))return;if(!this.isVideoPlaying)return;if(!Sn(this,Xn,"f"))return;if(!this._focusSupported)return;if(!this._focusParameters.fds&&(this._focusParameters.fds=null===(e=this.getCameraCapabilities())||void 0===e?void 0:e.focusDistance,!this._focusParameters.fds))return void(this._focusSupported=!1);if(null==this._focusParameters.kTimeout&&(this._focusParameters.kTimeout=(this._focusParameters.maxTimeout-this._focusParameters.minTimeout)/(1/this._focusParameters.fds.min-1/this._focusParameters.fds.max)),1==this._focusParameters.isDoingFocus)return;let i,n;if(this._focusParameters.taskBackToContinous&&(clearTimeout(this._focusParameters.taskBackToContinous),this._focusParameters.taskBackToContinous=null),t instanceof MouseEvent)i=t.clientX,n=t.clientY;else{if(!(t instanceof TouchEvent))throw new Error("Unknown event type.");if(!t.changedTouches.length)return;i=t.changedTouches[0].clientX,n=t.changedTouches[0].clientY}const r=this.getResolution(),s=2*Math.round(Math.min(r.width,r.height)/this._focusParameters.defaultFocusAreaSizeRatio/2);let o;try{o=this.calculateCoordInVideo(i,n)}catch(t){}if(o.x<0||o.x>r.width||o.y<0||o.y>r.height)return;const a={x:o.x+"px",y:o.y+"px"},h=s+"px",l=h;let c;Mr._onLog&&(c=Date.now());try{await Sn(this,Yn,"m",xr).call(this,a,h,l,this._focusParameters.tapFocusMinDistance,this._focusParameters.tapFocusMaxDistance)}catch(t){if(Mr._onLog)throw Mr._onLog(t),t}Mr._onLog&&Mr._onLog(`Tap focus costs: ${Date.now()-c} ms`),this._focusParameters.taskBackToContinous=setTimeout((()=>{var t;Mr._onLog&&Mr._onLog("Back to continuous focus."),null===(t=Sn(this,Xn,"f"))||void 0===t||t.applyConstraints({advanced:[{focusMode:"continuous"}]}).catch((()=>{}))}),this._focusParameters.focusBackToContinousTime),Sn(this,dr,"f").fire("tapfocus",null,{target:this,async:!1})})),hr.set(this,null),lr.set(this,1),cr.set(this,{x:0,y:0}),this.updateVideoElWhenSoftwareScaled=()=>{if(!Sn(this,Hn,"f"))return;const t=Sn(this,lr,"f");if(t<1)throw new RangeError("Invalid scale value.");if(1===t)Sn(this,Hn,"f").style.transform="";else{const e=window.getComputedStyle(Sn(this,Hn,"f")).objectFit,i=Sn(this,Hn,"f").videoWidth,n=Sn(this,Hn,"f").videoHeight,{width:r,height:s}=Sn(this,Hn,"f").getBoundingClientRect();if(r<=0||s<=0)throw new Error("Unable to get video dimensions. Video may not be rendered on the page.");const o=r/s,a=i/n;let h=1;"contain"===e?h=oo?s/(i/t):r/(n/t));const l=h*(1-1/t)*(i/2-Sn(this,cr,"f").x),c=h*(1-1/t)*(n/2-Sn(this,cr,"f").y);Sn(this,Hn,"f").style.transform=`translate(${l}px, ${c}px) scale(${t})`}},ur.set(this,(function(){if(!(this.data instanceof Uint8Array||this.data instanceof Uint8ClampedArray))throw new TypeError("Invalid data.");if("number"!=typeof this.width||this.width<=0)throw new Error("Invalid width.");if("number"!=typeof this.height||this.height<=0)throw new Error("Invalid height.");const t=document.createElement("canvas");let e;if(t.width=this.width,t.height=this.height,this.pixelFormat===Fn.GREY){e=new Uint8ClampedArray(this.width*this.height*4);for(let t=0;t{var t,e;if("visible"===document.visibilityState){if(Mr._onLog&&Mr._onLog("document visible. video paused: "+(null===(t=Sn(this,Hn,"f"))||void 0===t?void 0:t.paused)),"opening"==this.state||"opened"==this.state){let e=!1;if(!this.isVideoPlaying){Mr._onLog&&Mr._onLog("document visible. Not auto resume. 1st resume start.");try{await this.resume(),e=!0}catch(t){Mr._onLog&&Mr._onLog("document visible. 1st resume video failed, try open instead.")}e||await Sn(this,Yn,"m",Er).call(this)}if(await new Promise((t=>setTimeout(t,300))),!this.isVideoPlaying){Mr._onLog&&Mr._onLog("document visible. 1st open failed. 2rd resume start."),e=!1;try{await this.resume(),e=!0}catch(t){Mr._onLog&&Mr._onLog("document visible. 2rd resume video failed, try open instead.")}e||await Sn(this,Yn,"m",Er).call(this)}}}else"hidden"===document.visibilityState&&(Mr._onLog&&Mr._onLog("document hidden. video paused: "+(null===(e=Sn(this,Hn,"f"))||void 0===e?void 0:e.paused)),"opening"==this.state||"opened"==this.state&&this.isVideoPlaying&&this.pause())})),_r.set(this,!1),(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia)||setTimeout((()=>{Mr.onWarning&&Mr.onWarning("The browser is too old or the page is loaded from an insecure origin.")}),0),this.defaultConstraints={video:{facingMode:{ideal:"environment"}}},this.resetMediaStreamConstraints(),t instanceof HTMLVideoElement&&this.setVideoEl(t),Tn(this,dr,new Dr,"f"),this.imageDataGetter=new Rr,document.addEventListener("visibilitychange",Sn(this,pr,"f"))}setVideoEl(t){if(!(t&&t instanceof HTMLVideoElement))throw new Error("Invalid 'videoEl'.");t.addEventListener("play",Sn(this,zn,"f")),t.addEventListener("pause",Sn(this,qn,"f")),Tn(this,Hn,t,"f")}getVideoEl(){return Sn(this,Hn,"f")}releaseVideoEl(){var t,e;null===(t=Sn(this,Hn,"f"))||void 0===t||t.removeEventListener("play",Sn(this,zn,"f")),null===(e=Sn(this,Hn,"f"))||void 0===e||e.removeEventListener("pause",Sn(this,qn,"f")),Tn(this,Hn,null,"f")}isVideoLoaded(){return!!Sn(this,Hn,"f")&&4==Sn(this,Hn,"f").readyState}async open(){if(Sn(this,er,"f")&&!Sn(this,tr,"f")){if("pending"===Sn(this,ir,"f"))return Sn(this,er,"f");if("fulfilled"===Sn(this,ir,"f"))return}Sn(this,dr,"f").fire("before:open",null,{target:this}),await Sn(this,Yn,"m",Er).call(this),Sn(this,dr,"f").fire("played",null,{target:this,async:!1}),Sn(this,dr,"f").fire("opened",null,{target:this,async:!1})}async close(){if("closed"===this.state)return;Sn(this,dr,"f").fire("before:close",null,{target:this});const t=Sn(this,er,"f");if(Sn(this,Yn,"m",Tr).call(this),t&&"pending"===Sn(this,ir,"f")){try{await t}catch(t){}if(!1===Sn(this,tr,"f")){const t=new Error("'close()' was interrupted.");throw t.name="AbortError",t}}Tn(this,er,null,"f"),Tn(this,ir,null,"f"),Sn(this,dr,"f").fire("closed",null,{target:this,async:!1})}pause(){if(!this.isVideoLoaded())throw new Error("Video is not loaded.");if("opened"!==this.state)throw new Error("Camera or video is not open.");Sn(this,Hn,"f").pause()}async resume(){if(!this.isVideoLoaded())throw new Error("Video is not loaded.");if("opened"!==this.state)throw new Error("Camera or video is not open.");await Sn(this,Hn,"f").play()}async setCamera(t){if("string"!=typeof t)throw new TypeError("Invalid 'deviceId'.");if("object"!=typeof Sn(this,Zn,"f").video&&(Sn(this,Zn,"f").video={}),delete Sn(this,Zn,"f").video.facingMode,Sn(this,Zn,"f").video.deviceId={exact:t},!("closed"===this.state||this.videoSrc||"opening"===this.state&&Sn(this,tr,"f"))){Sn(this,dr,"f").fire("before:camera:change",[],{target:this,async:!1}),await Sn(this,Yn,"m",Sr).call(this);try{this.resetSoftwareScale()}catch(t){}return Sn(this,Kn,"f")}}async switchToFrontCamera(t){if("object"!=typeof Sn(this,Zn,"f").video&&(Sn(this,Zn,"f").video={}),(null==t?void 0:t.resolution)&&(Sn(this,Zn,"f").video.width={ideal:t.resolution.width},Sn(this,Zn,"f").video.height={ideal:t.resolution.height}),delete Sn(this,Zn,"f").video.deviceId,Sn(this,Zn,"f").video.facingMode={exact:"user"},Tn(this,Jn,null,"f"),!("closed"===this.state||this.videoSrc||"opening"===this.state&&Sn(this,tr,"f"))){Sn(this,dr,"f").fire("before:camera:change",[],{target:this,async:!1}),Sn(this,Yn,"m",Sr).call(this);try{this.resetSoftwareScale()}catch(t){}return Sn(this,Kn,"f")}}getCamera(){var t;if(Sn(this,Kn,"f"))return Sn(this,Kn,"f");{let e=(null===(t=Sn(this,Zn,"f").video)||void 0===t?void 0:t.deviceId)||"";if(e){e=e.exact||e.ideal||e;for(let t of this._arrCameras)if(t.deviceId===e)return JSON.parse(JSON.stringify(t))}return{deviceId:"",label:"",_checked:!1}}}async _getCameras(t){var e,i;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))throw new Error("Failed to access the camera because the browser is too old or the page is loaded from an insecure origin.");let n;if(t){let t=await navigator.mediaDevices.getUserMedia({video:!0});n=(await navigator.mediaDevices.enumerateDevices()).filter((t=>"videoinput"===t.kind)),t.getTracks().forEach((t=>{t.stop()}))}else n=(await navigator.mediaDevices.enumerateDevices()).filter((t=>"videoinput"===t.kind));const r=[],s=[];if(this._arrCameras)for(let t of this._arrCameras)t._checked&&s.push(t);for(let t=0;t"videoinput"===t.kind));return i&&i.length&&!i[0].deviceId?this._getCameras(!0):this._getCameras(!1)}async getAllCameras(){return this.getCameras()}async setResolution(t,e,i){if("number"!=typeof t||t<=0)throw new TypeError("Invalid 'width'.");if("number"!=typeof e||e<=0)throw new TypeError("Invalid 'height'.");if("object"!=typeof Sn(this,Zn,"f").video&&(Sn(this,Zn,"f").video={}),i?(Sn(this,Zn,"f").video.width={exact:t},Sn(this,Zn,"f").video.height={exact:e}):(Sn(this,Zn,"f").video.width={ideal:t},Sn(this,Zn,"f").video.height={ideal:e}),"closed"===this.state||this.videoSrc||"opening"===this.state&&Sn(this,tr,"f"))return null;Sn(this,dr,"f").fire("before:resolution:change",[],{target:this,async:!1}),await Sn(this,Yn,"m",Sr).call(this);try{this.resetSoftwareScale()}catch(t){}const n=this.getResolution();return{width:n.width,height:n.height}}getResolution(){if("opened"===this.state&&this.videoSrc&&Sn(this,Hn,"f"))return{width:Sn(this,Hn,"f").videoWidth,height:Sn(this,Hn,"f").videoHeight};if(Sn(this,Xn,"f")){const t=Sn(this,Xn,"f").getSettings();return{width:t.width,height:t.height}}if(this.isVideoLoaded())return{width:Sn(this,Hn,"f").videoWidth,height:Sn(this,Hn,"f").videoHeight};{const t={width:0,height:0};let e=Sn(this,Zn,"f").video.width||0,i=Sn(this,Zn,"f").video.height||0;return e&&(t.width=e.exact||e.ideal||e),i&&(t.height=i.exact||i.ideal||i),t}}async getResolutions(t){var e,i,n,r,s,o,a,h,l,c,u;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))throw new Error("Failed to access the camera because the browser is too old or the page is loaded from an insecure origin.");let d="";const f=(t,e)=>{const i=Sn(this,gr,"f").get(t);if(!i||!i.length)return!1;for(let t of i)if(t.width===e.width&&t.height===e.height)return!0;return!1};if(this._mediaStream){d=null===(u=Sn(this,Kn,"f"))||void 0===u?void 0:u.deviceId;let e=Sn(this,gr,"f").get(d);if(e&&!t)return JSON.parse(JSON.stringify(e));e=[],Sn(this,gr,"f").set(d,e),Tn(this,nr,!0,"f");try{for(let t of this.detectedResolutions){await Sn(this,Xn,"f").applyConstraints({width:{ideal:t.width},height:{ideal:t.height}}),Sn(this,Yn,"m",yr).call(this);const i=Sn(this,Xn,"f").getSettings(),n={width:i.width,height:i.height};f(d,n)||e.push({width:n.width,height:n.height})}}catch(t){throw Sn(this,Yn,"m",Tr).call(this),Tn(this,nr,!1,"f"),t}try{await Sn(this,Yn,"m",Er).call(this)}catch(t){if("AbortError"===t.name)return e;throw t}finally{Tn(this,nr,!1,"f")}return e}{const e=async(t,e,i)=>{const n={video:{deviceId:{exact:t},width:{ideal:e},height:{ideal:i}}};let r=null;try{r=await navigator.mediaDevices.getUserMedia(n)}catch(t){return null}if(!r)return null;const s=r.getVideoTracks();let o=null;try{const t=s[0].getSettings();o={width:t.width,height:t.height}}catch(t){const e=document.createElement("video");e.srcObject=r,o={width:e.videoWidth,height:e.videoHeight},e.srcObject=null}return s.forEach((t=>{t.stop()})),o};let i=(null===(s=null===(r=null===(n=Sn(this,Zn,"f"))||void 0===n?void 0:n.video)||void 0===r?void 0:r.deviceId)||void 0===s?void 0:s.exact)||(null===(h=null===(a=null===(o=Sn(this,Zn,"f"))||void 0===o?void 0:o.video)||void 0===a?void 0:a.deviceId)||void 0===h?void 0:h.ideal)||(null===(c=null===(l=Sn(this,Zn,"f"))||void 0===l?void 0:l.video)||void 0===c?void 0:c.deviceId);if(!i)return[];let u=Sn(this,gr,"f").get(i);if(u&&!t)return JSON.parse(JSON.stringify(u));u=[],Sn(this,gr,"f").set(i,u);for(let t of this.detectedResolutions){const n=await e(i,t.width,t.height);n&&!f(i,n)&&u.push({width:n.width,height:n.height})}return u}}async setMediaStreamConstraints(t,e){if(!(t=>{return null!==t&&"[object Object]"===(e=t,Object.prototype.toString.call(e));var e})(t))throw new TypeError("Invalid 'mediaStreamConstraints'.");Tn(this,Zn,JSON.parse(JSON.stringify(t)),"f"),Tn(this,Jn,null,"f"),e&&Sn(this,Yn,"m",Sr).call(this)}getMediaStreamConstraints(){return JSON.parse(JSON.stringify(Sn(this,Zn,"f")))}resetMediaStreamConstraints(){Tn(this,Zn,this.defaultConstraints?JSON.parse(JSON.stringify(this.defaultConstraints)):null,"f")}getCameraCapabilities(){if(!Sn(this,Xn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");return Sn(this,Xn,"f").getCapabilities?Sn(this,Xn,"f").getCapabilities():{}}getCameraSettings(){if(!Sn(this,Xn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");return Sn(this,Xn,"f").getSettings()}async turnOnTorch(){if(!Sn(this,Xn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const t=this.getCameraCapabilities();if(!(null==t?void 0:t.torch))throw Error("Not supported.");await Sn(this,Xn,"f").applyConstraints({advanced:[{torch:!0}]})}async turnOffTorch(){if(!Sn(this,Xn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const t=this.getCameraCapabilities();if(!(null==t?void 0:t.torch))throw Error("Not supported.");await Sn(this,Xn,"f").applyConstraints({advanced:[{torch:!1}]})}async setColorTemperature(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(!Sn(this,Xn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const n=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.colorTemperature;if(!n)throw Error("Not supported.");return e&&(tn.max&&(t=n.max),t=Lr(t,n.min,n.step,n.max)),await Sn(this,Xn,"f").applyConstraints({advanced:[{colorTemperature:t,whiteBalanceMode:"manual"}]}),t}getColorTemperature(){return this.getCameraSettings().colorTemperature||0}async setExposureCompensation(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(!Sn(this,Xn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const n=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.exposureCompensation;if(!n)throw Error("Not supported.");return e&&(tn.max&&(t=n.max),t=Lr(t,n.min,n.step,n.max)),await Sn(this,Xn,"f").applyConstraints({advanced:[{exposureCompensation:t}]}),t}getExposureCompensation(){return this.getCameraSettings().exposureCompensation||0}async setFrameRate(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(!Sn(this,Xn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");let n=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.frameRate;if(!n)throw Error("Not supported.");e&&(tn.max&&(t=n.max));const r=this.getResolution();return await Sn(this,Xn,"f").applyConstraints({width:{ideal:Math.max(r.width,r.height)},frameRate:t}),t}getFrameRate(){return this.getCameraSettings().frameRate}async setFocus(t,e){if("object"!=typeof t||Array.isArray(t)||null==t)throw new TypeError("Invalid 'settings'.");if(!Sn(this,Xn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const i=this.getCameraCapabilities(),n=null==i?void 0:i.focusMode,r=null==i?void 0:i.focusDistance;if(!n)throw Error("Not supported.");if("string"!=typeof t.mode)throw TypeError("Invalid 'mode'.");const s=t.mode.toLowerCase();if(!n.includes(s))throw Error("Unsupported focus mode.");if("manual"===s){if(!r)throw Error("Manual focus unsupported.");if(t.hasOwnProperty("distance")){let i=t.distance;e&&(ir.max&&(i=r.max),i=Lr(i,r.min,r.step,r.max)),this._focusParameters.focusArea=null,await Sn(this,Xn,"f").applyConstraints({advanced:[{focusMode:s,focusDistance:i}]})}else{if(!t.area)throw new Error("'distance' or 'area' should be specified in 'manual' mode.");{const e=t.area.centerPoint;let i=t.area.width,n=t.area.height;if(!i||!n){const t=this.getResolution();i||(i=2*Math.round(Math.min(t.width,t.height)/this._focusParameters.defaultFocusAreaSizeRatio/2)+"px"),n||(n=2*Math.round(Math.min(t.width,t.height)/this._focusParameters.defaultFocusAreaSizeRatio/2)+"px")}this._focusParameters.focusArea={centerPoint:{x:e.x,y:e.y},width:i,height:n},await Sn(this,Yn,"m",xr).call(this,e,i,n)}}}else this._focusParameters.focusArea=null,await Sn(this,Xn,"f").applyConstraints({advanced:[{focusMode:s}]})}getFocus(){const t=this.getCameraSettings(),e=t.focusMode;return e?"manual"===e?this._focusParameters.focusArea?{mode:"manual",area:JSON.parse(JSON.stringify(this._focusParameters.focusArea))}:{mode:"manual",distance:t.focusDistance}:{mode:e}:null}async enableTapToFocus(){Tn(this,rr,!0,"f")}disableTapToFocus(){Tn(this,rr,!1,"f")}isTapToFocusEnabled(){return Sn(this,rr,"f")}async setZoom(t){if("object"!=typeof t||Array.isArray(t)||null==t)throw new TypeError("Invalid 'settings'.");if("number"!=typeof t.factor)throw new TypeError("Illegal type of 'factor'.");if(t.factor<1)throw new RangeError("Invalid 'factor'.");if("opened"!==this.state)throw new Error("Video is not playing.");t.centerPoint?Sn(this,Yn,"m",Or).call(this,t.centerPoint):this.resetScaleCenter();try{if(Sn(this,Yn,"m",Ar).call(this,Sn(this,cr,"f"))){const e=await this.setHardwareScale(t.factor,!0);let i=this.getHardwareScale();1==i&&1!=e&&(i=e),t.factor>i?this.setSoftwareScale(t.factor/i):this.setSoftwareScale(1)}else await this.setHardwareScale(1),this.setSoftwareScale(t.factor)}catch(e){const i=e.message||e;if("Not supported."!==i&&"Camera is not open."!==i)throw e;this.setSoftwareScale(t.factor)}}getZoom(){if("opened"!==this.state)throw new Error("Video is not playing.");let t=1;try{t=this.getHardwareScale()}catch(t){if("Camera is not open."!==(t.message||t))throw t}return{factor:t*Sn(this,lr,"f")}}async resetZoom(){await this.setZoom({factor:1})}async setHardwareScale(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(t<1)throw new RangeError("Invalid 'value'.");if(!Sn(this,Xn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const n=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.zoom;if(!n)throw Error("Not supported.");return e&&(tn.max&&(t=n.max),t=Lr(t,n.min,n.step,n.max)),await Sn(this,Xn,"f").applyConstraints({advanced:[{zoom:t}]}),t}getHardwareScale(){return this.getCameraSettings().zoom||1}setSoftwareScale(t,e){if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(t<1)throw new RangeError("Invalid 'value'.");if("opened"!==this.state)throw new Error("Video is not playing.");e&&Sn(this,Yn,"m",Or).call(this,e),Tn(this,lr,t,"f"),this.updateVideoElWhenSoftwareScaled()}getSoftwareScale(){return Sn(this,lr,"f")}resetScaleCenter(){if("opened"!==this.state)throw new Error("Video is not playing.");const t=this.getResolution();Tn(this,cr,{x:t.width/2,y:t.height/2},"f")}resetSoftwareScale(){this.setSoftwareScale(1),this.resetScaleCenter()}getFrameData(t){if(this.disposed)throw Error("The 'Camera' instance has been disposed.");if(!this.isVideoLoaded())return null;if(Sn(this,nr,"f"))return null;const e=Date.now();Mr._onLog&&Mr._onLog("getFrameData() START: "+e);const i=Sn(this,Hn,"f").videoWidth,n=Sn(this,Hn,"f").videoHeight;let r={sx:0,sy:0,sWidth:i,sHeight:n,dWidth:i,dHeight:n};(null==t?void 0:t.position)&&(r=JSON.parse(JSON.stringify(t.position)));let s=Fn.RGBA;(null==t?void 0:t.pixelFormat)&&(s=t.pixelFormat);let o=Sn(this,lr,"f");(null==t?void 0:t.scale)&&(o=t.scale);let a=Sn(this,cr,"f");if(null==t?void 0:t.scaleCenter){if("string"!=typeof t.scaleCenter.x||"string"!=typeof t.scaleCenter.y)throw new Error("Invalid scale center.");let e=0,r=0;if(t.scaleCenter.x.endsWith("px"))e=parseFloat(t.scaleCenter.x);else{if(!t.scaleCenter.x.endsWith("%"))throw new Error("Invalid scale center.");e=parseFloat(t.scaleCenter.x)/100*i}if(t.scaleCenter.y.endsWith("px"))r=parseFloat(t.scaleCenter.y);else{if(!t.scaleCenter.y.endsWith("%"))throw new Error("Invalid scale center.");r=parseFloat(t.scaleCenter.y)/100*n}if(isNaN(e)||isNaN(r))throw new Error("Invalid scale center.");a.x=Math.round(e),a.y=Math.round(r)}let h=null;if((null==t?void 0:t.bufferContainer)&&(h=t.bufferContainer),0==i||0==n)return null;1!==o&&(r.sWidth=Math.round(r.sWidth/o),r.sHeight=Math.round(r.sHeight/o),r.sx=Math.round((1-1/o)*a.x+r.sx/o),r.sy=Math.round((1-1/o)*a.y+r.sy/o));const l=this.imageDataGetter.getImageData(Sn(this,Hn,"f"),r,{pixelFormat:s,bufferContainer:h});if(!l)return null;const c=Date.now();return Mr._onLog&&Mr._onLog("getFrameData() END: "+c),{data:l.data,width:l.width,height:l.height,pixelFormat:l.pixelFormat,timeSpent:c-e,timeStamp:c,toCanvas:Sn(this,ur,"f")}}on(t,e){if(!Sn(this,fr,"f").includes(t.toLowerCase()))throw new Error(`Event '${t}' does not exist.`);Sn(this,dr,"f").on(t,e)}off(t,e){Sn(this,dr,"f").off(t,e)}async dispose(){this.tapFocusEventBoundEl=null,await this.close(),this.releaseVideoEl(),Sn(this,dr,"f").dispose(),this.imageDataGetter.dispose(),document.removeEventListener("visibilitychange",Sn(this,pr,"f")),Tn(this,_r,!0,"f")}}var Fr,Pr,kr,Br,Nr,jr,Ur,Vr,Gr,Wr,Yr,Hr,Xr,zr,qr,Zr,Kr,Jr,Qr,$r,ts,es,is,ns,rs,ss,os,as,hs,ls,cs,us,ds,fs,gs;Hn=new WeakMap,Xn=new WeakMap,zn=new WeakMap,qn=new WeakMap,Zn=new WeakMap,Kn=new WeakMap,Jn=new WeakMap,Qn=new WeakMap,$n=new WeakMap,tr=new WeakMap,er=new WeakMap,ir=new WeakMap,nr=new WeakMap,rr=new WeakMap,sr=new WeakMap,or=new WeakMap,ar=new WeakMap,hr=new WeakMap,lr=new WeakMap,cr=new WeakMap,ur=new WeakMap,dr=new WeakMap,fr=new WeakMap,gr=new WeakMap,mr=new WeakMap,pr=new WeakMap,_r=new WeakMap,Yn=new WeakSet,vr=async function(){const t=this.getMediaStreamConstraints();if("boolean"==typeof t.video&&(t.video={}),t.video.deviceId);else if(Sn(this,Jn,"f"))delete t.video.facingMode,t.video.deviceId={exact:Sn(this,Jn,"f")};else if(this.ifSaveLastUsedCamera&&Mr.isStorageAvailable&&window.localStorage.getItem("dce_last_camera_id")){delete t.video.facingMode,t.video.deviceId={ideal:window.localStorage.getItem("dce_last_camera_id")};const e=JSON.parse(window.localStorage.getItem("dce_last_apply_width")),i=JSON.parse(window.localStorage.getItem("dce_last_apply_height"));e&&i&&(t.video.width=e,t.video.height=i)}else if(this.ifSkipCameraInspection);else{const e=async t=>{let e=null;return"environment"===t&&["Android","HarmonyOS","iPhone","iPad"].includes(Rn.OS)?(await this._getCameras(!1),Sn(this,Yn,"m",yr).call(this),e=Mr.findBestCamera(this._arrCameras,"environment",{getMainCameraInIOS:this.selectIOSRearMainCameraAsDefault})):t||["Android","HarmonyOS","iPhone","iPad"].includes(Rn.OS)||(await this._getCameras(!1),Sn(this,Yn,"m",yr).call(this),e=Mr.findBestCamera(this._arrCameras,null,{getMainCameraInIOS:this.selectIOSRearMainCameraAsDefault})),e};let i=t.video.facingMode;i instanceof Array&&i.length&&(i=i[0]),"object"==typeof i&&(i=i.exact||i.ideal);const n=await e(i);n&&(delete t.video.facingMode,t.video.deviceId={exact:n})}return t},yr=function(){if(Sn(this,tr,"f")){const t=new Error("The operation was interrupted.");throw t.name="AbortError",t}},wr=async function(t){var e,i;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))throw new Error("Failed to access the camera because the browser is too old or the page is loaded from an insecure origin.");let n;try{Mr._onLog&&Mr._onLog("======try getUserMedia========");let e=[0,500,1e3,2e3],i=null;const r=async t=>{for(let r of e){r&&(await new Promise((t=>setTimeout(t,r))),Sn(this,Yn,"m",yr).call(this));try{Mr._onLog&&Mr._onLog("ask "+JSON.stringify(t)),n=await navigator.mediaDevices.getUserMedia(t),Sn(this,Yn,"m",yr).call(this);break}catch(t){if("NotFoundError"===t.name||"NotAllowedError"===t.name||"AbortError"===t.name||"OverconstrainedError"===t.name)throw t;i=t,Mr._onLog&&Mr._onLog(t.message||t)}}};if(await r(t),n||"object"!=typeof t.video||(t.video.deviceId&&(delete t.video.deviceId,await r(t)),!n&&t.video.facingMode&&(delete t.video.facingMode,await r(t)),n||!t.video.width&&!t.video.height||(delete t.video.width,delete t.video.height,await r(t))),!n)throw i;return n}catch(t){throw null==n||n.getTracks().forEach((t=>{t.stop()})),"NotFoundError"===t.name&&(DOMException?t=new DOMException("No camera available, please use a device with an accessible camera.",t.name):(t=new Error("No camera available, please use a device with an accessible camera.")).name="NotFoundError"),t}},Cr=function(){this._mediaStream&&(this._mediaStream.getTracks().forEach((t=>{t.stop()})),this._mediaStream=null),Tn(this,Xn,null,"f")},Er=async function(){Tn(this,tr,!1,"f");const t=Tn(this,$n,Symbol(),"f");if(Sn(this,er,"f")&&"pending"===Sn(this,ir,"f")){try{await Sn(this,er,"f")}catch(t){}Sn(this,Yn,"m",yr).call(this)}if(t!==Sn(this,$n,"f"))return;const e=Tn(this,er,(async()=>{Tn(this,ir,"pending","f");try{if(this.videoSrc){if(!Sn(this,Hn,"f"))throw new Error("'videoEl' should be set.");await Mr.playVideo(Sn(this,Hn,"f"),this.videoSrc,this.cameraOpenTimeout),Sn(this,Yn,"m",yr).call(this)}else{let t=await Sn(this,Yn,"m",vr).call(this);Sn(this,Yn,"m",Cr).call(this);let e=await Sn(this,Yn,"m",wr).call(this,t);await this._getCameras(!1),Sn(this,Yn,"m",yr).call(this);const i=()=>{const t=e.getVideoTracks();let i,n;if(t.length&&(i=t[0]),i){const t=i.getSettings();if(t)for(let e of this._arrCameras)if(t.deviceId===e.deviceId){e._checked=!0,e.label=i.label,n=e;break}}return n},n=Sn(this,Zn,"f");if("object"==typeof n.video){let r=n.video.facingMode;if(r instanceof Array&&r.length&&(r=r[0]),"object"==typeof r&&(r=r.exact||r.ideal),!(Sn(this,Jn,"f")||this.ifSaveLastUsedCamera&&Mr.isStorageAvailable&&window.localStorage.getItem("dce_last_camera_id")||this.ifSkipCameraInspection||n.video.deviceId)){const n=i(),s=Mr.findBestCamera(this._arrCameras,r,{getMainCameraInIOS:this.selectIOSRearMainCameraAsDefault});s&&s!=(null==n?void 0:n.deviceId)&&(e.getTracks().forEach((t=>{t.stop()})),t.video.deviceId={exact:s},e=await Sn(this,Yn,"m",wr).call(this,t),Sn(this,Yn,"m",yr).call(this))}}const r=i();(null==r?void 0:r.deviceId)&&(Tn(this,Jn,r&&r.deviceId,"f"),this.ifSaveLastUsedCamera&&Mr.isStorageAvailable&&(window.localStorage.setItem("dce_last_camera_id",Sn(this,Jn,"f")),"object"==typeof t.video&&t.video.width&&t.video.height&&(window.localStorage.setItem("dce_last_apply_width",JSON.stringify(t.video.width)),window.localStorage.setItem("dce_last_apply_height",JSON.stringify(t.video.height))))),Sn(this,Hn,"f")&&(await Mr.playVideo(Sn(this,Hn,"f"),e,this.cameraOpenTimeout),Sn(this,Yn,"m",yr).call(this)),this._mediaStream=e;const s=e.getVideoTracks();(null==s?void 0:s.length)&&Tn(this,Xn,s[0],"f"),Tn(this,Kn,r,"f")}}catch(t){throw Sn(this,Yn,"m",Tr).call(this),Tn(this,ir,null,"f"),t}Tn(this,ir,"fulfilled","f")})(),"f");return e},Sr=async function(){var t;if("closed"===this.state||this.videoSrc)return;const e=null===(t=Sn(this,Kn,"f"))||void 0===t?void 0:t.deviceId,i=this.getResolution();await Sn(this,Yn,"m",Er).call(this);const n=this.getResolution();e&&e!==Sn(this,Kn,"f").deviceId&&Sn(this,dr,"f").fire("camera:changed",[Sn(this,Kn,"f").deviceId,e],{target:this,async:!1}),i.width==n.width&&i.height==n.height||Sn(this,dr,"f").fire("resolution:changed",[{width:n.width,height:n.height},{width:i.width,height:i.height}],{target:this,async:!1}),Sn(this,dr,"f").fire("played",null,{target:this,async:!1})},Tr=function(){Sn(this,Yn,"m",Cr).call(this),Tn(this,Kn,null,"f"),Sn(this,Hn,"f")&&(Sn(this,Hn,"f").srcObject=null,this.videoSrc&&(Sn(this,Hn,"f").pause(),Sn(this,Hn,"f").currentTime=0)),Tn(this,tr,!0,"f");try{this.resetSoftwareScale()}catch(t){}},br=async function t(e,i){const n=t=>{if(!Sn(this,Xn,"f")||!this.isVideoPlaying||t.focusTaskId!=this._focusParameters.curFocusTaskId){Sn(this,Xn,"f")&&this.isVideoPlaying||(this._focusParameters.isDoingFocus=0);const e=new Error(`Focus task ${t.focusTaskId} canceled.`);throw e.name="DeprecatedTaskError",e}1===this._focusParameters.isDoingFocus&&Date.now()-t.timeStart>this._focusParameters.focusCancelableTime&&(this._focusParameters.isDoingFocus=-1)};let r;i=Lr(i,this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),await Sn(this,Xn,"f").applyConstraints({advanced:[{focusMode:"manual",focusDistance:i}]}),n(e),r=null==this._focusParameters.oldDistance?this._focusParameters.kTimeout*Math.max(Math.abs(1/this._focusParameters.fds.min-1/i),Math.abs(1/this._focusParameters.fds.max-1/i))+this._focusParameters.minTimeout:this._focusParameters.kTimeout*Math.abs(1/this._focusParameters.oldDistance-1/i)+this._focusParameters.minTimeout,this._focusParameters.oldDistance=i,await new Promise((t=>{setTimeout(t,r)})),n(e);let s=e.focusL-e.focusW/2,o=e.focusT-e.focusH/2,a=e.focusW,h=e.focusH;const l=this.getResolution();s=Math.round(s),o=Math.round(o),a=Math.round(a),h=Math.round(h),a>l.width&&(a=l.width),h>l.height&&(h=l.height),s<0?s=0:s+a>l.width&&(s=l.width-a),o<0?o=0:o+h>l.height&&(o=l.height-h);const c=4*l.width*l.height*this._focusParameters.defaultTempBufferContainerLenRatio,u=4*a*h;let d=this._focusParameters.tempBufferContainer;if(d){const t=d.length;c>t&&c>=u?d=new Uint8Array(c):u>t&&u>=c&&(d=new Uint8Array(u))}else d=this._focusParameters.tempBufferContainer=new Uint8Array(Math.max(c,u));if(!this.imageDataGetter.getImageData(Sn(this,Hn,"f"),{sx:s,sy:o,sWidth:a,sHeight:h,dWidth:a,dHeight:h},{pixelFormat:Fn.RGBA,bufferContainer:d}))return Sn(this,Yn,"m",t).call(this,e,i);const f=d;let g=0;for(let t=0,e=u-8;ta&&au)return await Sn(this,Yn,"m",t).call(this,e,o,a,r,s,c,u)}else{let h=await Sn(this,Yn,"m",br).call(this,e,c);if(a>h)return await Sn(this,Yn,"m",t).call(this,e,o,a,r,s,c,h);if(a==h)return await Sn(this,Yn,"m",t).call(this,e,o,a,c,h);let u=await Sn(this,Yn,"m",br).call(this,e,l);if(u>a&&ao.width||h<0||h>o.height)throw new Error("Invalid 'centerPoint'.");let l=0;if(e.endsWith("px"))l=parseFloat(e);else{if(!e.endsWith("%"))throw new Error("Invalid 'width'.");l=parseFloat(e)/100*o.width}if(isNaN(l)||l<0)throw new Error("Invalid 'width'.");let c=0;if(i.endsWith("px"))c=parseFloat(i);else{if(!i.endsWith("%"))throw new Error("Invalid 'height'.");c=parseFloat(i)/100*o.height}if(isNaN(c)||c<0)throw new Error("Invalid 'height'.");if(1!==Sn(this,lr,"f")){const t=Sn(this,lr,"f"),e=Sn(this,cr,"f");l/=t,c/=t,a=(1-1/t)*e.x+a/t,h=(1-1/t)*e.y+h/t}if(!this._focusSupported)throw new Error("Manual focus unsupported.");if(!this._focusParameters.fds&&(this._focusParameters.fds=null===(s=this.getCameraCapabilities())||void 0===s?void 0:s.focusDistance,!this._focusParameters.fds))throw this._focusSupported=!1,new Error("Manual focus unsupported.");null==this._focusParameters.kTimeout&&(this._focusParameters.kTimeout=(this._focusParameters.maxTimeout-this._focusParameters.minTimeout)/(1/this._focusParameters.fds.min-1/this._focusParameters.fds.max)),this._focusParameters.isDoingFocus=1;const u={focusL:a,focusT:h,focusW:l,focusH:c,focusTaskId:++this._focusParameters.curFocusTaskId,timeStart:Date.now()},d=async(t,e,i)=>{try{(null==e||ethis._focusParameters.fds.max)&&(i=this._focusParameters.fds.max),this._focusParameters.oldDistance=null;let n=Lr(Math.sqrt(i*(e||this._focusParameters.fds.step)),this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),r=Lr(Math.sqrt((e||this._focusParameters.fds.step)*n),this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),s=Lr(Math.sqrt(n*i),this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),o=await Sn(this,Yn,"m",br).call(this,t,s),a=await Sn(this,Yn,"m",br).call(this,t,r),h=await Sn(this,Yn,"m",br).call(this,t,n);if(a>h&&ho&&a>o){let e=await Sn(this,Yn,"m",br).call(this,t,i);const r=await Sn(this,Yn,"m",Ir).call(this,t,n,h,i,e,s,o);return this._focusParameters.isDoingFocus=0,r}if(a==h&&hh){const e=await Sn(this,Yn,"m",Ir).call(this,t,n,h,s,o);return this._focusParameters.isDoingFocus=0,e}return d(t,e,i)}catch(t){if("DeprecatedTaskError"!==t.name)throw t}};return d(u,n,r)},Or=function(t){if("opened"!==this.state)throw new Error("Video is not playing.");if(!t||"string"!=typeof t.x||"string"!=typeof t.y)throw new Error("Invalid 'center'.");const e=this.getResolution();let i=0,n=0;if(t.x.endsWith("px"))i=parseFloat(t.x);else{if(!t.x.endsWith("%"))throw new Error("Invalid scale center.");i=parseFloat(t.x)/100*e.width}if(t.y.endsWith("px"))n=parseFloat(t.y);else{if(!t.y.endsWith("%"))throw new Error("Invalid scale center.");n=parseFloat(t.y)/100*e.height}if(isNaN(i)||isNaN(n))throw new Error("Invalid scale center.");Tn(this,cr,{x:i,y:n},"f")},Ar=function(t){if("opened"!==this.state)throw new Error("Video is not playing.");const e=this.getResolution();return t&&t.x==e.width/2&&t.y==e.height/2},Mr.browserInfo=Rn,Mr.onWarning=null===(Wn=null===window||void 0===window?void 0:window.console)||void 0===Wn?void 0:Wn.warn;class ms{constructor(t){Fr.add(this),Pr.set(this,void 0),kr.set(this,0),Br.set(this,void 0),Nr.set(this,0),jr.set(this,!1),Ne(this,Pr,t,"f")}startCharging(){Be(this,jr,"f")||(ms._onLog&&ms._onLog("start charging."),Be(this,Fr,"m",Vr).call(this),Ne(this,jr,!0,"f"))}stopCharging(){Be(this,Br,"f")&&clearTimeout(Be(this,Br,"f")),Be(this,jr,"f")&&(ms._onLog&&ms._onLog("stop charging."),Ne(this,kr,Date.now()-Be(this,Nr,"f"),"f"),Ne(this,jr,!1,"f"))}}Pr=new WeakMap,kr=new WeakMap,Br=new WeakMap,Nr=new WeakMap,jr=new WeakMap,Fr=new WeakSet,Ur=function(){gt.cfd(1),ms._onLog&&ms._onLog("charge 1.")},Vr=function t(){0==Be(this,kr,"f")&&Be(this,Fr,"m",Ur).call(this),Ne(this,Nr,Date.now(),"f"),Be(this,Br,"f")&&clearTimeout(Be(this,Br,"f")),Ne(this,Br,setTimeout((()=>{Ne(this,kr,0,"f"),Be(this,Fr,"m",t).call(this)}),Be(this,Pr,"f")-Be(this,kr,"f")),"f")};class ps{static beep(){if(!this.allowBeep)return;if(!this.beepSoundSource)return;let t,e=Date.now();if(!(e-Be(this,Gr,"f",Hr)<100)){if(Ne(this,Gr,e,"f",Hr),Be(this,Gr,"f",Wr).size&&(t=Be(this,Gr,"f",Wr).values().next().value,this.beepSoundSource==t.src?(Be(this,Gr,"f",Wr).delete(t),t.play()):t=null),!t)if(Be(this,Gr,"f",Yr).size<16){t=new Audio(this.beepSoundSource);let e=null,i=()=>{t.removeEventListener("loadedmetadata",i),t.play(),e=setTimeout((()=>{Be(this,Gr,"f",Yr).delete(t)}),2e3*t.duration)};t.addEventListener("loadedmetadata",i),t.addEventListener("ended",(()=>{null!=e&&(clearTimeout(e),e=null),t.pause(),t.currentTime=0,Be(this,Gr,"f",Yr).delete(t),Be(this,Gr,"f",Wr).add(t)}))}else Be(this,Gr,"f",Xr)||(Ne(this,Gr,!0,"f",Xr),console.warn("The requested audio tracks exceed 16 and will not be played."));t&&Be(this,Gr,"f",Yr).add(t)}}static vibrate(){if(this.allowVibrate){if(!navigator||!navigator.vibrate)throw new Error("Not supported.");navigator.vibrate(ps.vibrateDuration)}}}Gr=ps,Wr={value:new Set},Yr={value:new Set},Hr={value:0},Xr={value:!1},ps.allowBeep=!0,ps.beepSoundSource="data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA/+M4wAAAAAAAAAAAAEluZm8AAAAPAAAABQAAAkAAgICAgICAgICAgICAgICAgICAgKCgoKCgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4ODg4P//////////////////////////AAAAAExhdmM1OC41NAAAAAAAAAAAAAAAACQEUQAAAAAAAAJAk0uXRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MYxAANQAbGeUEQAAHZYZ3fASqD4P5TKBgocg+Bw/8+CAYBA4XB9/4EBAEP4nB9+UOf/6gfUCAIKyjgQ/Kf//wfswAAAwQA/+MYxAYOqrbdkZGQAMA7DJLCsQxNOij///////////+tv///3RWiZGBEhsf/FO/+LoCSFs1dFVS/g8f/4Mhv0nhqAieHleLy/+MYxAYOOrbMAY2gABf/////////////////usPJ66R0wI4boY9/8jQYg//g2SPx1M0N3Z0kVJLIs///Uw4aMyvHJJYmPBYG/+MYxAgPMALBucAQAoGgaBoFQVBUFQWDv6gZBUFQVBUGgaBr5YSgqCoKhIGg7+IQVBUFQVBoGga//SsFSoKnf/iVTEFNRTMu/+MYxAYAAANIAAAAADEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",ps.allowVibrate=!0,ps.vibrateDuration=300;const _s=new Map([[Fn.GREY,h.IPF_GRAYSCALED],[Fn.RGBA,h.IPF_ABGR_8888]]),vs="function"==typeof BigInt?{BF_NULL:BigInt(0),BF_ALL:BigInt(0x10000000000000000),BF_DEFAULT:BigInt(4265345023),BF_ONED:BigInt(3147775),BF_GS1_DATABAR:BigInt(260096),BF_CODE_39:BigInt(1),BF_CODE_128:BigInt(2),BF_CODE_93:BigInt(4),BF_CODABAR:BigInt(8),BF_ITF:BigInt(16),BF_EAN_13:BigInt(32),BF_EAN_8:BigInt(64),BF_UPC_A:BigInt(128),BF_UPC_E:BigInt(256),BF_INDUSTRIAL_25:BigInt(512),BF_CODE_39_EXTENDED:BigInt(1024),BF_GS1_DATABAR_OMNIDIRECTIONAL:BigInt(2048),BF_GS1_DATABAR_TRUNCATED:BigInt(4096),BF_GS1_DATABAR_STACKED:BigInt(8192),BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL:BigInt(16384),BF_GS1_DATABAR_EXPANDED:BigInt(32768),BF_GS1_DATABAR_EXPANDED_STACKED:BigInt(65536),BF_GS1_DATABAR_LIMITED:BigInt(131072),BF_PATCHCODE:BigInt(262144),BF_CODE_32:BigInt(16777216),BF_PDF417:BigInt(33554432),BF_QR_CODE:BigInt(67108864),BF_DATAMATRIX:BigInt(134217728),BF_AZTEC:BigInt(268435456),BF_MAXICODE:BigInt(536870912),BF_MICRO_QR:BigInt(1073741824),BF_MICRO_PDF417:BigInt(524288),BF_GS1_COMPOSITE:BigInt(2147483648),BF_MSI_CODE:BigInt(1048576),BF_CODE_11:BigInt(2097152),BF_TWO_DIGIT_ADD_ON:BigInt(4194304),BF_FIVE_DIGIT_ADD_ON:BigInt(8388608),BF_MATRIX_25:BigInt(68719476736),BF_POSTALCODE:BigInt(0x3f0000000000000),BF_NONSTANDARD_BARCODE:BigInt(4294967296),BF_USPSINTELLIGENTMAIL:BigInt(4503599627370496),BF_POSTNET:BigInt(9007199254740992),BF_PLANET:BigInt(0x40000000000000),BF_AUSTRALIANPOST:BigInt(0x80000000000000),BF_RM4SCC:BigInt(72057594037927940),BF_KIX:BigInt(0x200000000000000),BF_DOTCODE:BigInt(8589934592),BF_PHARMACODE_ONE_TRACK:BigInt(17179869184),BF_PHARMACODE_TWO_TRACK:BigInt(34359738368),BF_PHARMACODE:BigInt(51539607552)}:{BF_NULL:"0x00",BF_ALL:"0xFFFFFFFFFFFFFFFF",BF_DEFAULT:"0xFE3BFFFF",BF_ONED:"0x003007FF",BF_GS1_DATABAR:"0x0003F800",BF_CODE_39:"0x1",BF_CODE_128:"0x2",BF_CODE_93:"0x4",BF_CODABAR:"0x8",BF_ITF:"0x10",BF_EAN_13:"0x20",BF_EAN_8:"0x40",BF_UPC_A:"0x80",BF_UPC_E:"0x100",BF_INDUSTRIAL_25:"0x200",BF_CODE_39_EXTENDED:"0x400",BF_GS1_DATABAR_OMNIDIRECTIONAL:"0x800",BF_GS1_DATABAR_TRUNCATED:"0x1000",BF_GS1_DATABAR_STACKED:"0x2000",BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL:"0x4000",BF_GS1_DATABAR_EXPANDED:"0x8000",BF_GS1_DATABAR_EXPANDED_STACKED:"0x10000",BF_GS1_DATABAR_LIMITED:"0x20000",BF_PATCHCODE:"0x00040000",BF_CODE_32:"0x01000000",BF_PDF417:"0x02000000",BF_QR_CODE:"0x04000000",BF_DATAMATRIX:"0x08000000",BF_AZTEC:"0x10000000",BF_MAXICODE:"0x20000000",BF_MICRO_QR:"0x40000000",BF_MICRO_PDF417:"0x00080000",BF_GS1_COMPOSITE:"0x80000000",BF_MSI_CODE:"0x100000",BF_CODE_11:"0x200000",BF_TWO_DIGIT_ADD_ON:"0x400000",BF_FIVE_DIGIT_ADD_ON:"0x800000",BF_MATRIX_25:"0x1000000000",BF_POSTALCODE:"0x3F0000000000000",BF_NONSTANDARD_BARCODE:"0x100000000",BF_USPSINTELLIGENTMAIL:"0x10000000000000",BF_POSTNET:"0x20000000000000",BF_PLANET:"0x40000000000000",BF_AUSTRALIANPOST:"0x80000000000000",BF_RM4SCC:"0x100000000000000",BF_KIX:"0x200000000000000",BF_DOTCODE:"0x200000000",BF_PHARMACODE_ONE_TRACK:"0x400000000",BF_PHARMACODE_TWO_TRACK:"0x800000000",BF_PHARMACODE:"0xC00000000"};class ys extends z{static set _onLog(t){Ne(ys,qr,t,"f",Zr),Mr._onLog=t,ms._onLog=t}static get _onLog(){return Be(ys,qr,"f",Zr)}static async detectEnvironment(){return await(async()=>({wasm:je,worker:Ue,getUserMedia:Ve,camera:await Ge(),browser:ke.browser,version:ke.version,OS:ke.OS}))()}static async testCameraAccess(){const t=await Mr.testCameraAccess();return t.ok?{ok:!0,message:"Successfully accessed the camera."}:"InsecureContext"===t.errorName?{ok:!1,message:"Insecure context."}:"OverconstrainedError"===t.errorName||"NotFoundError"===t.errorName?{ok:!1,message:"No camera detected."}:"NotAllowedError"===t.errorName?{ok:!1,message:"No permission to access camera."}:"AbortError"===t.errorName?{ok:!1,message:"Some problem occurred which prevented the device from being used."}:"NotReadableError"===t.errorName?{ok:!1,message:"A hardware error occurred."}:"SecurityError"===t.errorName?{ok:!1,message:"User media support is disabled."}:{ok:!1,message:t.errorMessage}}static async createInstance(t){var e,i;if(t&&!(t instanceof En))throw new TypeError("Invalid view.");if(null===(e=ct.license)||void 0===e?void 0:e.LicenseManager){if(!(null===(i=ct.license)||void 0===i?void 0:i.LicenseManager.bCallInitLicense))throw new Error("License is not set.");await gt.loadWasm(["license"]),await ct.license.dynamsoft()}const n=new ys(t);return ys.onWarning&&(location&&"file:"===location.protocol?setTimeout((()=>{ys.onWarning&&ys.onWarning({id:1,message:"The page is opened over file:// and Dynamsoft Camera Enhancer may not work properly. Please open the page via https://."})}),0):!1!==window.isSecureContext&&navigator&&navigator.mediaDevices&&navigator.mediaDevices.getUserMedia||setTimeout((()=>{ys.onWarning&&ys.onWarning({id:2,message:"Dynamsoft Camera Enhancer may not work properly in a non-secure context. Please open the page via https://."})}),0)),n}get video(){return this.cameraManager.getVideoEl()}set videoSrc(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraView&&(this.cameraView._hideDefaultSelection=!0),this.cameraManager.videoSrc=t}get videoSrc(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.videoSrc}set ifSaveLastUsedCamera(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraManager.ifSaveLastUsedCamera=t}get ifSaveLastUsedCamera(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.ifSaveLastUsedCamera}set ifSkipCameraInspection(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraManager.ifSkipCameraInspection=t}get ifSkipCameraInspection(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.ifSkipCameraInspection}set cameraOpenTimeout(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraManager.cameraOpenTimeout=t}get cameraOpenTimeout(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.cameraOpenTimeout}set singleFrameMode(t){if(!["disabled","image","camera"].includes(t))throw new Error("Invalid value.");if(this.isOpen())throw new Error("It is not allowed to change `singleFrameMode` when the camera is open.");Ne(this,Qr,t,"f")}get singleFrameMode(){return Be(this,Qr,"f")}get _isFetchingStarted(){return Be(this,rs,"f")}get disposed(){return Be(this,ls,"f")}constructor(t){if(super(),zr.add(this),Kr.set(this,"closed"),Jr.set(this,void 0),this.isTorchOn=void 0,Qr.set(this,void 0),this._onCameraSelChange=async()=>{this.isOpen()&&this.cameraView&&!this.cameraView.disposed&&await this.selectCamera(this.cameraView._selCam.value)},this._onResolutionSelChange=async()=>{if(!this.isOpen())return;if(!this.cameraView||this.cameraView.disposed)return;let t,e;if(this.cameraView._selRsl&&-1!=this.cameraView._selRsl.selectedIndex){let i=this.cameraView._selRsl.options[this.cameraView._selRsl.selectedIndex];t=parseInt(i.getAttribute("data-width")),e=parseInt(i.getAttribute("data-height"))}await this.setResolution({width:t,height:e})},this._onCloseBtnClick=async()=>{this.isOpen()&&this.cameraView&&!this.cameraView.disposed&&this.close()},$r.set(this,((t,e,i,n)=>{const r=Date.now(),s={sx:n.x,sy:n.y,sWidth:n.width,sHeight:n.height,dWidth:n.width,dHeight:n.height},o=Math.max(s.dWidth,s.dHeight);if(this.canvasSizeLimit&&o>this.canvasSizeLimit){const t=this.canvasSizeLimit/o;s.dWidth>s.dHeight?(s.dWidth=this.canvasSizeLimit,s.dHeight=Math.round(s.dHeight*t)):(s.dWidth=Math.round(s.dWidth*t),s.dHeight=this.canvasSizeLimit)}const a=this.cameraManager.imageDataGetter.getImageData(t,s,{pixelFormat:this.getPixelFormat()===h.IPF_GRAYSCALED?Fn.GREY:Fn.RGBA});let l=null;if(a){const t=Date.now();let o;o=a.pixelFormat===Fn.GREY?a.width:4*a.width;let h=!0;0===s.sx&&0===s.sy&&s.sWidth===e&&s.sHeight===i&&(h=!1),l={bytes:a.data,width:a.width,height:a.height,stride:o,format:_s.get(a.pixelFormat),tag:{imageId:this._imageId==Number.MAX_VALUE?this._imageId=0:++this._imageId,type:wt.ITT_FILE_IMAGE,isCropped:h,cropRegion:{left:n.x,top:n.y,right:n.x+n.width,bottom:n.y+n.height,isMeasuredInPercentage:!1},originalWidth:e,originalHeight:i,currentWidth:a.width,currentHeight:a.height,timeSpent:t-r,timeStamp:t},toCanvas:Be(this,ts,"f"),isDCEFrame:!0}}return l})),this._onSingleFrameAcquired=t=>{let e;e=this.cameraView?this.cameraView.getConvertedRegion():xi.convert(Be(this,is,"f"),t.width,t.height),e||(e={x:0,y:0,width:t.width,height:t.height});const i=Be(this,$r,"f").call(this,t,t.width,t.height,e);Be(this,Jr,"f").fire("singleFrameAcquired",[i],{async:!1,copy:!1})},ts.set(this,(function(){if(!(this.bytes instanceof Uint8Array||this.bytes instanceof Uint8ClampedArray))throw new TypeError("Invalid bytes.");if("number"!=typeof this.width||this.width<=0)throw new Error("Invalid width.");if("number"!=typeof this.height||this.height<=0)throw new Error("Invalid height.");const t=document.createElement("canvas");let e;if(t.width=this.width,t.height=this.height,this.format===h.IPF_GRAYSCALED){e=new Uint8ClampedArray(this.width*this.height*4);for(let t=0;t{if(!this.video)return;const t=this.cameraManager.getSoftwareScale();if(t<1)throw new RangeError("Invalid scale value.");this.cameraView&&!this.cameraView.disposed?(this.video.style.transform=1===t?"":`scale(${t})`,this.cameraView._updateVideoContainer()):this.video.style.transform=1===t?"":`scale(${t})`},["iPhone","iPad","Android","HarmonyOS"].includes(ke.OS)?this.cameraManager.setResolution(1280,720):this.cameraManager.setResolution(1920,1080),navigator&&navigator.mediaDevices&&navigator.mediaDevices.getUserMedia?this.singleFrameMode="disabled":this.singleFrameMode="image",t&&(this.setCameraView(t),t.cameraEnhancer=this),this._on("before:camera:change",(()=>{Be(this,hs,"f").stopCharging();const t=this.cameraView;t&&!t.disposed&&(t._startLoading(),t.clearAllInnerDrawingItems())})),this._on("camera:changed",(()=>{this.clearBuffer()})),this._on("before:resolution:change",(()=>{const t=this.cameraView;t&&!t.disposed&&(t._startLoading(),t.clearAllInnerDrawingItems())})),this._on("resolution:changed",(()=>{this.clearBuffer(),t.eventHandler.fire("content:updated",null,{async:!1})})),this._on("paused",(()=>{Be(this,hs,"f").stopCharging();const t=this.cameraView;t&&t.disposed})),this._on("resumed",(()=>{const t=this.cameraView;t&&t.disposed})),this._on("tapfocus",(()=>{Be(this,os,"f").tapToFocus&&Be(this,hs,"f").startCharging()})),this._intermediateResultReceiver={},this._intermediateResultReceiver.onTaskResultsReceived=async(t,e)=>{var i,n,r,s;if(Be(this,zr,"m",cs).call(this)||!this.isOpen()||this.isPaused())return;const o=t.intermediateResultUnits;ys._onLog&&(ys._onLog("intermediateResultUnits:"),ys._onLog(o));let a=!1,h=!1;for(let t of o){if(t.unitType===Tt.IRUT_DECODED_BARCODES&&t.decodedBarcodes.length){a=!0;break}t.unitType===Tt.IRUT_LOCALIZED_BARCODES&&t.localizedBarcodes.length&&(h=!0)}if(ys._onLog&&(ys._onLog("hasLocalizedBarcodes:"),ys._onLog(h)),Be(this,os,"f").autoZoom||Be(this,os,"f").enhancedFocus)if(a)Be(this,as,"f").autoZoomInFrameArray.length=0,Be(this,as,"f").autoZoomOutFrameCount=0,Be(this,as,"f").frameArrayInIdealZoom.length=0,Be(this,as,"f").autoFocusFrameArray.length=0;else{const e=async t=>{await this.setZoom(t),Be(this,os,"f").autoZoom&&Be(this,hs,"f").startCharging()},a=async t=>{await this.setFocus(t),Be(this,os,"f").enhancedFocus&&Be(this,hs,"f").startCharging()};if(h){const h=o[0].originalImageTag,l=(null===(i=h.cropRegion)||void 0===i?void 0:i.left)||0,c=(null===(n=h.cropRegion)||void 0===n?void 0:n.top)||0,u=(null===(r=h.cropRegion)||void 0===r?void 0:r.right)?h.cropRegion.right-l:h.originalWidth,d=(null===(s=h.cropRegion)||void 0===s?void 0:s.bottom)?h.cropRegion.bottom-c:h.originalHeight,f=h.currentWidth,g=h.currentHeight;let m;{let t,e,i,n,r;{const t=this.video.videoWidth*(1-Be(this,as,"f").autoZoomDetectionArea)/2,e=this.video.videoWidth*(1+Be(this,as,"f").autoZoomDetectionArea)/2,i=e,n=t,s=this.video.videoHeight*(1-Be(this,as,"f").autoZoomDetectionArea)/2,o=s,a=this.video.videoHeight*(1+Be(this,as,"f").autoZoomDetectionArea)/2;r=[{x:t,y:s},{x:e,y:o},{x:i,y:a},{x:n,y:a}]}ys._onLog&&(ys._onLog("detectionArea:"),ys._onLog(r));const s=[];{const t=(t,e)=>{const i=(t,e)=>{if(!t&&!e)throw new Error("Invalid arguments.");return function(t,e,i){let n=!1;const r=t.length;if(r<=2)return!1;for(let s=0;s0!=Li(a.y-i)>0&&Li(e-(i-o.y)*(o.x-a.x)/(o.y-a.y)-o.x)<0&&(n=!n)}return n}(e,t.x,t.y)},n=(t,e)=>!!(Mi([t[0],t[1]],[t[2],t[3]],[e[0].x,e[0].y],[e[1].x,e[1].y])||Mi([t[0],t[1]],[t[2],t[3]],[e[1].x,e[1].y],[e[2].x,e[2].y])||Mi([t[0],t[1]],[t[2],t[3]],[e[2].x,e[2].y],[e[3].x,e[3].y])||Mi([t[0],t[1]],[t[2],t[3]],[e[3].x,e[3].y],[e[0].x,e[0].y]));return!!(i({x:t[0].x,y:t[0].y},e)||i({x:t[1].x,y:t[1].y},e)||i({x:t[2].x,y:t[2].y},e)||i({x:t[3].x,y:t[3].y},e))||!!(i({x:e[0].x,y:e[0].y},t)||i({x:e[1].x,y:e[1].y},t)||i({x:e[2].x,y:e[2].y},t)||i({x:e[3].x,y:e[3].y},t))||!!(n([e[0].x,e[0].y,e[1].x,e[1].y],t)||n([e[1].x,e[1].y,e[2].x,e[2].y],t)||n([e[2].x,e[2].y,e[3].x,e[3].y],t)||n([e[3].x,e[3].y,e[0].x,e[0].y],t))};for(let e of o)if(e.unitType===Tt.IRUT_LOCALIZED_BARCODES)for(let i of e.localizedBarcodes){if(!i)continue;const e=i.location.points;e.forEach((t=>{En._transformCoordinates(t,l,c,u,d,f,g)})),t(r,e)&&s.push(i)}if(ys._debug&&this.cameraView){const t=this.__layer||(this.__layer=this.cameraView._createDrawingLayer(99));t.clearDrawingItems();const e=this.__styleId2||(this.__styleId2=pn.createDrawingStyle({strokeStyle:"red"}));for(let i of o)if(i.unitType===Tt.IRUT_LOCALIZED_BARCODES)for(let n of i.localizedBarcodes){if(!n)continue;const i=n.location.points,r=new _i({points:i},e);t.addDrawingItems([r])}}}if(ys._onLog&&(ys._onLog("intersectedResults:"),ys._onLog(s)),!s.length)return;let a;if(s.length){let t=s.filter((t=>t.possibleFormats==vs.BF_QR_CODE||t.possibleFormats==vs.BF_DATAMATRIX));if(t.length||(t=s.filter((t=>t.possibleFormats==vs.BF_ONED)),t.length||(t=s)),t.length){const e=t=>{const e=t.location.points,i=(e[0].x+e[1].x+e[2].x+e[3].x)/4,n=(e[0].y+e[1].y+e[2].y+e[3].y)/4;return(i-f/2)*(i-f/2)+(n-g/2)*(n-g/2)};a=t[0];let i=e(a);if(1!=t.length)for(let n=1;n1.1*a.confidence||t[n].confidence>.9*a.confidence&&ri&&s>i&&o>i&&h>i&&m.result.moduleSize{})),Be(this,as,"f").autoZoomInFrameArray.filter((t=>!0===t)).length>=Be(this,as,"f").autoZoomInFrameLimit[1]){Be(this,as,"f").autoZoomInFrameArray.length=0;const i=[(.5-n)/(.5-r),(.5-n)/(.5-s),(.5-n)/(.5-o),(.5-n)/(.5-h)].filter((t=>t>0)),a=Math.min(...i,Be(this,as,"f").autoZoomInIdealModuleSize/m.result.moduleSize),l=this.getZoomSettings().factor;let c=Math.max(Math.pow(l*a,1/Be(this,as,"f").autoZoomInMaxTimes),Be(this,as,"f").autoZoomInMinStep);c=Math.min(c,a);let u=l*c;u=Math.max(Be(this,as,"f").minValue,u),u=Math.min(Be(this,as,"f").maxValue,u);try{await e({factor:u})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}}else if(Be(this,as,"f").autoZoomInFrameArray.length=0,Be(this,as,"f").frameArrayInIdealZoom.push(!0),Be(this,as,"f").frameArrayInIdealZoom.splice(0,Be(this,as,"f").frameArrayInIdealZoom.length-Be(this,as,"f").frameLimitInIdealZoom[0]),Be(this,as,"f").frameArrayInIdealZoom.filter((t=>!0===t)).length>=Be(this,as,"f").frameLimitInIdealZoom[1]&&(Be(this,as,"f").frameArrayInIdealZoom.length=0,Be(this,os,"f").enhancedFocus)){const e=m.points;try{await a({mode:"manual",area:{centerPoint:{x:(e[0].x+e[2].x)/2+"px",y:(e[0].y+e[2].y)/2+"px"},width:e[2].x-e[0].x+"px",height:e[2].y-e[0].y+"px"}})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}}if(!Be(this,os,"f").autoZoom&&Be(this,os,"f").enhancedFocus&&(Be(this,as,"f").autoFocusFrameArray.push(!0),Be(this,as,"f").autoFocusFrameArray.splice(0,Be(this,as,"f").autoFocusFrameArray.length-Be(this,as,"f").autoFocusFrameLimit[0]),Be(this,as,"f").autoFocusFrameArray.filter((t=>!0===t)).length>=Be(this,as,"f").autoFocusFrameLimit[1])){Be(this,as,"f").autoFocusFrameArray.length=0;try{const t=m.points;await a({mode:"manual",area:{centerPoint:{x:(t[0].x+t[2].x)/2+"px",y:(t[0].y+t[2].y)/2+"px"},width:t[2].x-t[0].x+"px",height:t[2].y-t[0].y+"px"}})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}}else{if(Be(this,os,"f").autoZoom){if(Be(this,as,"f").autoZoomInFrameArray.push(!1),Be(this,as,"f").autoZoomInFrameArray.splice(0,Be(this,as,"f").autoZoomInFrameArray.length-Be(this,as,"f").autoZoomInFrameLimit[0]),Be(this,as,"f").autoZoomOutFrameCount++,Be(this,as,"f").frameArrayInIdealZoom.push(!1),Be(this,as,"f").frameArrayInIdealZoom.splice(0,Be(this,as,"f").frameArrayInIdealZoom.length-Be(this,as,"f").frameLimitInIdealZoom[0]),Be(this,as,"f").autoZoomOutFrameCount>=Be(this,as,"f").autoZoomOutFrameLimit){Be(this,as,"f").autoZoomOutFrameCount=0;const i=this.getZoomSettings().factor;let n=i-Math.max((i-1)*Be(this,as,"f").autoZoomOutStepRate,Be(this,as,"f").autoZoomOutMinStep);n=Math.max(Be(this,as,"f").minValue,n),n=Math.min(Be(this,as,"f").maxValue,n);try{await e({factor:n})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}Be(this,os,"f").enhancedFocus&&a({mode:"continuous"}).catch((()=>{}))}!Be(this,os,"f").autoZoom&&Be(this,os,"f").enhancedFocus&&(Be(this,as,"f").autoFocusFrameArray.length=0,a({mode:"continuous"}).catch((()=>{})))}}},Ne(this,hs,new ms(1e4),"f")}setCameraView(t){if(!(t instanceof En))throw new TypeError("Invalid view.");if(t.disposed)throw new Error("The camera view has been disposed.");if(this.isOpen())throw new Error("It is not allowed to change camera view when the camera is open.");this.releaseCameraView(),t._singleFrameMode=this.singleFrameMode,t._onSingleFrameAcquired=this._onSingleFrameAcquired,this.videoSrc&&(this.cameraView._hideDefaultSelection=!0),Be(this,zr,"m",cs).call(this)||this.cameraManager.setVideoEl(t.getVideoElement()),this.cameraView=t,this.addListenerToView()}getCameraView(){return this.cameraView}releaseCameraView(){this.cameraView&&(this.removeListenerFromView(),this.cameraView.disposed||(this.cameraView._singleFrameMode="disabled",this.cameraView._onSingleFrameAcquired=null,this.cameraView._hideDefaultSelection=!1),this.cameraManager.releaseVideoEl(),this.cameraView=null)}addListenerToView(){if(!this.cameraView)return;if(this.cameraView.disposed)throw new Error("'cameraView' has been disposed.");const t=this.cameraView;Be(this,zr,"m",cs).call(this)||this.videoSrc||(t._innerComponent&&(this.cameraManager.tapFocusEventBoundEl=t._innerComponent),t._selCam&&t._selCam.addEventListener("change",this._onCameraSelChange),t._selRsl&&t._selRsl.addEventListener("change",this._onResolutionSelChange)),t._btnClose&&t._btnClose.addEventListener("click",this._onCloseBtnClick)}removeListenerFromView(){if(!this.cameraView||this.cameraView.disposed)return;const t=this.cameraView;this.cameraManager.tapFocusEventBoundEl=null,t._selCam&&t._selCam.removeEventListener("change",this._onCameraSelChange),t._selRsl&&t._selRsl.removeEventListener("change",this._onResolutionSelChange),t._btnClose&&t._btnClose.removeEventListener("click",this._onCloseBtnClick)}getCameraState(){return Be(this,zr,"m",cs).call(this)?Be(this,Kr,"f"):new Map([["closed","closed"],["opening","opening"],["opened","open"]]).get(this.cameraManager.state)}isOpen(){return"open"===this.getCameraState()}getVideoEl(){return this.video}async open(){const t=this.cameraView;if(null==t?void 0:t.disposed)throw new Error("'cameraView' has been disposed.");t&&(t._singleFrameMode=this.singleFrameMode,Be(this,zr,"m",cs).call(this)?t._clickIptSingleFrameMode():(this.cameraManager.setVideoEl(t.getVideoElement()),t._startLoading()));let e={width:0,height:0,deviceId:""};if(Be(this,zr,"m",cs).call(this));else{try{await this.cameraManager.open()}catch(e){throw t&&t._stopLoading(),"NotFoundError"===e.name?new Error(`No camera devices were detected. Please ensure a camera is connected and recognized by your system. ${null==e?void 0:e.name}: ${null==e?void 0:e.message}`):"NotAllowedError"===e.name?new Error(`Camera access is blocked. Please check your browser settings or grant permission to use the camera. ${null==e?void 0:e.name}: ${null==e?void 0:e.message}`):e}let i,n=t.getUIElement();if(n=n.shadowRoot||n,i=n.querySelector(".dce-macro-use-mobile-native-like-ui")){let t=n.elTorchAuto=n.querySelector(".dce-mn-torch-auto"),e=n.elTorchOn=n.querySelector(".dce-mn-torch-on"),r=n.elTorchOff=n.querySelector(".dce-mn-torch-off");t&&(e.style.display=null==this.isTorchOn?"":"none"),e&&(e.style.display=1==this.isTorchOn?"":"none"),r&&(r.style.display=0==this.isTorchOn?"":"none");let s=n.elBeepOn=n.querySelector(".dce-mn-beep-on"),o=n.elBeepOff=n.querySelector(".dce-mn-beep-off");s&&(s.style.display=ps.allowBeep?"":"none"),o&&(o.style.display=ps.allowBeep?"none":"");let a=n.elVibrateOn=n.querySelector(".dce-mn-vibrate-on"),h=n.elVibrateOff=n.querySelector(".dce-mn-vibrate-off");a&&(a.style.display=ps.allowVibrate?"":"none"),h&&(h.style.display=ps.allowVibrate?"none":""),n.elResolutionBox=n.querySelector(".dce-mn-resolution-box");let l,c=n.elZoom=n.querySelector(".dce-mn-zoom");c&&(c.style.display="none",l=n.elZoomSpan=c.querySelector("span"));let u=n.elToast=n.querySelector(".dce-mn-toast"),d=n.elCameraClose=n.querySelector(".dce-mn-camera-close"),f=n.elTakePhoto=n.querySelector(".dce-mn-take-photo"),g=n.elCameraSwitch=n.querySelector(".dce-mn-camera-switch"),m=n.elCameraAndResolutionSettings=n.querySelector(".dce-mn-camera-and-resolution-settings");m&&(m.style.display="none");const p=n.dceMnFs={},_=()=>{this.turnOnTorch()};null==t||t.addEventListener("pointerdown",_);const v=()=>{this.turnOffTorch()};null==e||e.addEventListener("pointerdown",v);const y=()=>{this.turnAutoTorch()};null==r||r.addEventListener("pointerdown",y);const w=()=>{ps.allowBeep=!ps.allowBeep,s&&(s.style.display=ps.allowBeep?"":"none"),o&&(o.style.display=ps.allowBeep?"none":"")};for(let t of[o,s])null==t||t.addEventListener("pointerdown",w);const C=()=>{ps.allowVibrate=!ps.allowVibrate,a&&(a.style.display=ps.allowVibrate?"":"none"),h&&(h.style.display=ps.allowVibrate?"none":"")};for(let t of[h,a])null==t||t.addEventListener("pointerdown",C);const E=async t=>{let e,i=t.target;if(e=i.closest(".dce-mn-camera-option"))this.selectCamera(e.getAttribute("data-davice-id"));else if(e=i.closest(".dce-mn-resolution-option")){let t,i=parseInt(e.getAttribute("data-width")),n=parseInt(e.getAttribute("data-height")),r=await this.setResolution({width:i,height:n});{let e=Math.max(r.width,r.height),i=Math.min(r.width,r.height);t=i<=1080?i+"P":e<3e3?"2K":Math.round(e/1e3)+"K"}t!=e.textContent&&b(`Fallback to ${t}`)}else i.closest(".dce-mn-camera-and-resolution-settings")||(i.closest(".dce-mn-resolution-box")?m&&(m.style.display=m.style.display?"":"none"):m&&""===m.style.display&&(m.style.display="none"))};n.addEventListener("click",E);let S=null;p.funcInfoZoomChange=(t,e=3e3)=>{c&&l&&(l.textContent=t.toFixed(1),c.style.display="",null!=S&&(clearTimeout(S),S=null),S=setTimeout((()=>{c.style.display="none",S=null}),e))};let T=null,b=p.funcShowToast=(t,e=3e3)=>{u&&(u.textContent=t,u.style.display="",null!=T&&(clearTimeout(T),T=null),T=setTimeout((()=>{u.style.display="none",T=null}),e))};const I=()=>{this.close()};null==d||d.addEventListener("click",I);const x=()=>{};null==f||f.addEventListener("pointerdown",x);const O=()=>{var t,e;let i,n=this.getVideoSettings(),r=n.video.facingMode,s=null===(e=null===(t=this.cameraManager.getCamera())||void 0===t?void 0:t.label)||void 0===e?void 0:e.toLowerCase(),o=null==s?void 0:s.indexOf("front");-1===o&&(o=null==s?void 0:s.indexOf("前"));let a=null==s?void 0:s.indexOf("back");-1===a&&(a=null==s?void 0:s.indexOf("后")),"number"==typeof o&&-1!==o?i=!0:"number"==typeof a&&-1!==a&&(i=!1),void 0===i&&(i="user"===((null==r?void 0:r.ideal)||(null==r?void 0:r.exact)||r)),n.video.facingMode={ideal:i?"environment":"user"},delete n.video.deviceId,this.updateVideoSettings(n)};null==g||g.addEventListener("pointerdown",O);let A=-1/0,R=1;const D=t=>{let e=Date.now();e-A>1e3&&(R=this.getZoomSettings().factor),R-=t.deltaY/200,R>20&&(R=20),R<1&&(R=1),this.setZoom({factor:R}),A=e};i.addEventListener("wheel",D);const L=new Map;let M=!1;const F=async t=>{var e;for(t.touches.length>=2&&"touchmove"==t.type&&t.preventDefault();t.changedTouches.length>1&&2==t.touches.length;){let i=t.touches[0],n=t.touches[1],r=L.get(i.identifier),s=L.get(n.identifier);if(!r||!s)break;let o=Math.pow(Math.pow(r.x-s.x,2)+Math.pow(r.y-s.y,2),.5),a=Math.pow(Math.pow(i.clientX-n.clientX,2)+Math.pow(i.clientY-n.clientY,2),.5),h=Date.now();if(M||h-A<100)return;h-A>1e3&&(R=this.getZoomSettings().factor),R*=a/o,R>20&&(R=20),R<1&&(R=1);let l=!1;"safari"==(null===(e=null==ke?void 0:ke.browser)||void 0===e?void 0:e.toLocaleLowerCase())&&(a/o>1&&R<2?(R=2,l=!0):a/o<1&&R<2&&(R=1,l=!0)),M=!0,l&&b("zooming..."),await this.setZoom({factor:R}),l&&(u.textContent=""),M=!1,A=Date.now();break}L.clear();for(let e of t.touches)L.set(e.identifier,{x:e.clientX,y:e.clientY})};n.addEventListener("touchstart",F),n.addEventListener("touchmove",F),n.addEventListener("touchend",F),n.addEventListener("touchcancel",F),p.unbind=()=>{null==t||t.removeEventListener("pointerdown",_),null==e||e.removeEventListener("pointerdown",v),null==r||r.removeEventListener("pointerdown",y);for(let t of[o,s])null==t||t.removeEventListener("pointerdown",w);for(let t of[h,a])null==t||t.removeEventListener("pointerdown",C);n.removeEventListener("click",E),null==d||d.removeEventListener("click",I),null==f||f.removeEventListener("pointerdown",x),null==g||g.removeEventListener("pointerdown",O),i.removeEventListener("wheel",D),n.removeEventListener("touchstart",F),n.removeEventListener("touchmove",F),n.removeEventListener("touchend",F),n.removeEventListener("touchcancel",F),delete n.dceMnFs,i.style.display="none"},i.style.display="",t&&null==this.isTorchOn&&setTimeout((()=>{this.turnAutoTorch(1e3)}),0)}this.isTorchOn&&this.turnOnTorch().catch((()=>{}));const r=this.getResolution();e.width=r.width,e.height=r.height,e.deviceId=this.getSelectedCamera().deviceId}return Ne(this,Kr,"open","f"),t&&(t._innerComponent.style.display="",Be(this,zr,"m",cs).call(this)||(t._stopLoading(),t._renderCamerasInfo(this.getSelectedCamera(),this.cameraManager._arrCameras),t._renderResolutionInfo({width:e.width,height:e.height}),t.eventHandler.fire("content:updated",null,{async:!1}),t.eventHandler.fire("videoEl:resized",null,{async:!1}))),Be(this,Jr,"f").fire("opened",null,{target:this,async:!1}),e}close(){var t;const e=this.cameraView;if(null==e?void 0:e.disposed)throw new Error("'cameraView' has been disposed.");if(this.stopFetching(),this.clearBuffer(),Be(this,zr,"m",cs).call(this));else{this.cameraManager.close();let i=e.getUIElement();i=i.shadowRoot||i,i.querySelector(".dce-macro-use-mobile-native-like-ui")&&(null===(t=i.dceMnFs)||void 0===t||t.unbind())}Ne(this,Kr,"closed","f"),Be(this,hs,"f").stopCharging(),e&&(e._innerComponent.style.display="none",Be(this,zr,"m",cs).call(this)&&e._innerComponent.removeElement("content"),e._stopLoading()),Be(this,Jr,"f").fire("closed",null,{target:this,async:!1})}pause(){if(Be(this,zr,"m",cs).call(this))throw new Error("'pause()' is invalid in 'singleFrameMode'.");this.cameraManager.pause()}isPaused(){var t;return!Be(this,zr,"m",cs).call(this)&&!0===(null===(t=this.video)||void 0===t?void 0:t.paused)}async resume(){if(Be(this,zr,"m",cs).call(this))throw new Error("'resume()' is invalid in 'singleFrameMode'.");await this.cameraManager.resume()}async selectCamera(t){if(!t)throw new Error("Invalid value.");let e;e="string"==typeof t?t:t.deviceId,await this.cameraManager.setCamera(e),this.isTorchOn=!1;const i=this.getResolution(),n=this.cameraView;return n&&!n.disposed&&(n._stopLoading(),n._renderCamerasInfo(this.getSelectedCamera(),this.cameraManager._arrCameras),n._renderResolutionInfo({width:i.width,height:i.height})),{width:i.width,height:i.height,deviceId:this.getSelectedCamera().deviceId}}getSelectedCamera(){return this.cameraManager.getCamera()}async getAllCameras(){return this.cameraManager.getCameras()}async setResolution(t){await this.cameraManager.setResolution(t.width,t.height),this.isTorchOn&&this.turnOnTorch().catch((()=>{}));const e=this.getResolution(),i=this.cameraView;return i&&!i.disposed&&(i._stopLoading(),i._renderResolutionInfo({width:e.width,height:e.height})),{width:e.width,height:e.height,deviceId:this.getSelectedCamera().deviceId}}getResolution(){return this.cameraManager.getResolution()}getAvailableResolutions(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getResolutions()}_on(t,e){["opened","closed","singleframeacquired","frameaddedtobuffer"].includes(t.toLowerCase())?Be(this,Jr,"f").on(t,e):this.cameraManager.on(t,e)}_off(t,e){["opened","closed","singleframeacquired","frameaddedtobuffer"].includes(t.toLowerCase())?Be(this,Jr,"f").off(t,e):this.cameraManager.off(t,e)}on(t,e){const i=t.toLowerCase(),n=new Map([["cameraopen","opened"],["cameraclose","closed"],["camerachange","camera:changed"],["resolutionchange","resolution:changed"],["played","played"],["singleframeacquired","singleFrameAcquired"],["frameaddedtobuffer","frameAddedToBuffer"]]).get(i);if(!n)throw new Error("Invalid event.");this._on(n,e)}off(t,e){const i=t.toLowerCase(),n=new Map([["cameraopen","opened"],["cameraclose","closed"],["camerachange","camera:changed"],["resolutionchange","resolution:changed"],["played","played"],["singleframeacquired","singleFrameAcquired"],["frameaddedtobuffer","frameAddedToBuffer"]]).get(i);if(!n)throw new Error("Invalid event.");this._off(n,e)}getVideoSettings(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getMediaStreamConstraints()}async updateVideoSettings(t){var e;await(null===(e=this.cameraManager)||void 0===e?void 0:e.setMediaStreamConstraints(t,!0))}getCapabilities(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getCameraCapabilities()}getCameraSettings(){return this.cameraManager.getCameraSettings()}async turnOnTorch(){var t,e;if(Be(this,zr,"m",cs).call(this))throw new Error("'turnOnTorch()' is invalid in 'singleFrameMode'.");try{await(null===(t=this.cameraManager)||void 0===t?void 0:t.turnOnTorch())}catch(t){let i=this.cameraView.getUIElement();throw i=i.shadowRoot||i,null===(e=null==i?void 0:i.dceMnFs)||void 0===e||e.funcShowToast("Torch Not Supported"),t}this.isTorchOn=!0;let i=this.cameraView.getUIElement();i=i.shadowRoot||i,i.elTorchAuto&&(i.elTorchAuto.style.display="none"),i.elTorchOn&&(i.elTorchOn.style.display=""),i.elTorchOff&&(i.elTorchOff.style.display="none")}async turnOffTorch(){var t;if(Be(this,zr,"m",cs).call(this))throw new Error("'turnOffTorch()' is invalid in 'singleFrameMode'.");await(null===(t=this.cameraManager)||void 0===t?void 0:t.turnOffTorch()),this.isTorchOn=!1;let e=this.cameraView.getUIElement();e=e.shadowRoot||e,e.elTorchAuto&&(e.elTorchAuto.style.display="none"),e.elTorchOn&&(e.elTorchOn.style.display="none"),e.elTorchOff&&(e.elTorchOff.style.display="")}async turnAutoTorch(t=250){if(null!=this._taskid4AutoTorch){if(!(t{var t,r,s;if(this.disposed||e||null!=this.isTorchOn||!this.isOpen())return clearInterval(this._taskid4AutoTorch),void(this._taskid4AutoTorch=null);if(this.isPaused())return;if(++n>10&&this._delay4AutoTorch<1e3)return clearInterval(this._taskid4AutoTorch),this._taskid4AutoTorch=null,void this.turnAutoTorch(1e3);let o;try{o=this.fetchImage()}catch(t){}if(!o||!o.width||!o.height)return;let a=0;if(h.IPF_GRAYSCALED===o.format){for(let t=0;t=this.maxDarkCount4AutoTroch){null===(t=ys._onLog)||void 0===t||t.call(ys,`darkCount ${i}`);try{await this.turnOnTorch(),this.isTorchOn=!0;let t=this.cameraView.getUIElement();t=t.shadowRoot||t,null===(r=null==t?void 0:t.dceMnFs)||void 0===r||r.funcShowToast("Torch Auto On")}catch(t){console.warn(t),e=!0;let i=this.cameraView.getUIElement();i=i.shadowRoot||i,null===(s=null==i?void 0:i.dceMnFs)||void 0===s||s.funcShowToast("Torch Not Supported")}}}else i=0};this._taskid4AutoTorch=setInterval(r,t),this.isTorchOn=void 0,r();let s=this.cameraView.getUIElement();s=s.shadowRoot||s,s.elTorchAuto&&(s.elTorchAuto.style.display=""),s.elTorchOn&&(s.elTorchOn.style.display="none"),s.elTorchOff&&(s.elTorchOff.style.display="none")}async setColorTemperature(t){if(Be(this,zr,"m",cs).call(this))throw new Error("'setColorTemperature()' is invalid in 'singleFrameMode'.");await this.cameraManager.setColorTemperature(t,!0)}getColorTemperature(){return this.cameraManager.getColorTemperature()}async setExposureCompensation(t){var e;if(Be(this,zr,"m",cs).call(this))throw new Error("'setExposureCompensation()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setExposureCompensation(t,!0))}getExposureCompensation(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getExposureCompensation()}async _setZoom(t){var e,i,n;if(Be(this,zr,"m",cs).call(this))throw new Error("'setZoom()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setZoom(t));{let e=null===(i=this.cameraView)||void 0===i?void 0:i.getUIElement();e=(null==e?void 0:e.shadowRoot)||e,null===(n=null==e?void 0:e.dceMnFs)||void 0===n||n.funcInfoZoomChange(t.factor)}}async setZoom(t){await this._setZoom(t)}getZoomSettings(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getZoom()}async resetZoom(){var t;if(Be(this,zr,"m",cs).call(this))throw new Error("'resetZoom()' is invalid in 'singleFrameMode'.");await(null===(t=this.cameraManager)||void 0===t?void 0:t.resetZoom())}async setFrameRate(t){var e;if(Be(this,zr,"m",cs).call(this))throw new Error("'setFrameRate()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setFrameRate(t,!0))}getFrameRate(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getFrameRate()}async setFocus(t){var e;if(Be(this,zr,"m",cs).call(this))throw new Error("'setFocus()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setFocus(t,!0))}getFocusSettings(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getFocus()}setAutoZoomRange(t){Be(this,as,"f").minValue=t.min,Be(this,as,"f").maxValue=t.max}getAutoZoomRange(){return{min:Be(this,as,"f").minValue,max:Be(this,as,"f").maxValue}}async enableEnhancedFeatures(t){var e,i;if(!(null===(i=null===(e=ct.license)||void 0===e?void 0:e.LicenseManager)||void 0===i?void 0:i.bPassValidation))throw new Error("License is not verified, or license is invalid.");if(0!==gt.bSupportDce4Module)throw new Error("Please set a license containing the DCE module.");t&Ze.EF_ENHANCED_FOCUS&&(Be(this,os,"f").enhancedFocus=!0),t&Ze.EF_AUTO_ZOOM&&(Be(this,os,"f").autoZoom=!0),t&Ze.EF_TAP_TO_FOCUS&&(Be(this,os,"f").tapToFocus=!0,this.cameraManager.enableTapToFocus())}disableEnhancedFeatures(t){t&Ze.EF_ENHANCED_FOCUS&&(Be(this,os,"f").enhancedFocus=!1,this.setFocus({mode:"continuous"}).catch((()=>{}))),t&Ze.EF_AUTO_ZOOM&&(Be(this,os,"f").autoZoom=!1,this.resetZoom().catch((()=>{}))),t&Ze.EF_TAP_TO_FOCUS&&(Be(this,os,"f").tapToFocus=!1,this.cameraManager.disableTapToFocus()),Be(this,zr,"m",ds).call(this)&&Be(this,zr,"m",us).call(this)||Be(this,hs,"f").stopCharging()}_setScanRegion(t){if(null!=t&&!w(t)&&!I(t))throw TypeError("Invalid 'region'.");Ne(this,is,t?JSON.parse(JSON.stringify(t)):null,"f"),this.cameraView&&!this.cameraView.disposed&&this.cameraView.setScanRegion(t)}setScanRegion(t){this._setScanRegion(t),this.cameraView&&!this.cameraView.disposed&&(null===t?this.cameraView.setScanRegionMaskVisible(!1):this.cameraView.setScanRegionMaskVisible(!0))}getScanRegion(){return JSON.parse(JSON.stringify(Be(this,is,"f")))}setErrorListener(t){if(!t)throw new TypeError("Invalid 'listener'");Ne(this,es,t,"f")}hasNextImageToFetch(){return!("open"!==this.getCameraState()||!this.cameraManager.isVideoLoaded()||Be(this,zr,"m",cs).call(this))}startFetching(){if(Be(this,zr,"m",cs).call(this))throw Error("'startFetching()' is unavailable in 'singleFrameMode'.");Be(this,rs,"f")||(Ne(this,rs,!0,"f"),Be(this,zr,"m",fs).call(this))}stopFetching(){Be(this,rs,"f")&&(ys._onLog&&ys._onLog("DCE: stop fetching loop: "+Date.now()),Be(this,ss,"f")&&clearTimeout(Be(this,ss,"f")),Ne(this,rs,!1,"f"))}fetchImage(){if(Be(this,zr,"m",cs).call(this))throw new Error("'fetchImage()' is unavailable in 'singleFrameMode'.");if(!this.video)throw new Error("The video element does not exist.");if(4!==this.video.readyState)throw new Error("The video is not loaded.");const t=this.getResolution();if(!(null==t?void 0:t.width)||!(null==t?void 0:t.height))throw new Error("The video is not loaded.");let e;if(e=xi.convert(Be(this,is,"f"),t.width,t.height),e||(e={x:0,y:0,width:t.width,height:t.height}),e.x>t.width||e.y>t.height)throw new Error("Invalid scan region.");e.x+e.width>t.width&&(e.width=t.width-e.x),e.y+e.height>t.height&&(e.height=t.height-e.y);const i={sx:e.x,sy:e.y,sWidth:e.width,sHeight:e.height,dWidth:e.width,dHeight:e.height},n=Math.max(i.dWidth,i.dHeight);if(this.canvasSizeLimit&&n>this.canvasSizeLimit){const t=this.canvasSizeLimit/n;i.dWidth>i.dHeight?(i.dWidth=this.canvasSizeLimit,i.dHeight=Math.round(i.dHeight*t)):(i.dWidth=Math.round(i.dWidth*t),i.dHeight=this.canvasSizeLimit)}const r=this.cameraManager.getFrameData({position:i,pixelFormat:this.getPixelFormat()===h.IPF_GRAYSCALED?Fn.GREY:Fn.RGBA});if(!r)return null;let s;s=r.pixelFormat===Fn.GREY?r.width:4*r.width;let o=!0;return 0===i.sx&&0===i.sy&&i.sWidth===t.width&&i.sHeight===t.height&&(o=!1),{bytes:r.data,width:r.width,height:r.height,stride:s,format:_s.get(r.pixelFormat),tag:{imageId:this._imageId==Number.MAX_VALUE?this._imageId=0:++this._imageId,type:wt.ITT_VIDEO_FRAME,isCropped:o,cropRegion:{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height,isMeasuredInPercentage:!1},originalWidth:t.width,originalHeight:t.height,currentWidth:r.width,currentHeight:r.height,timeSpent:r.timeSpent,timeStamp:r.timeStamp},toCanvas:Be(this,ts,"f"),isDCEFrame:!0}}setImageFetchInterval(t){this.fetchInterval=t,Be(this,rs,"f")&&(Be(this,ss,"f")&&clearTimeout(Be(this,ss,"f")),Ne(this,ss,setTimeout((()=>{this.disposed||Be(this,zr,"m",fs).call(this)}),t),"f"))}getImageFetchInterval(){return this.fetchInterval}setPixelFormat(t){Ne(this,ns,t,"f")}getPixelFormat(){return Be(this,ns,"f")}takePhoto(t){if(!this.isOpen())throw new Error("Not open.");if(Be(this,zr,"m",cs).call(this))throw new Error("'takePhoto()' is unavailable in 'singleFrameMode'.");const e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("accept",".jpg,.jpeg,.icon,.gif,.svg,.webp,.png,.bmp"),e.setAttribute("capture",""),e.style.position="absolute",e.style.top="-9999px",e.style.backgroundColor="transparent",e.style.color="transparent",e.addEventListener("click",(()=>{const t=this.isOpen();this.close(),window.addEventListener("focus",(()=>{t&&this.open(),e.remove()}),{once:!0})})),e.addEventListener("change",(async()=>{const i=e.files[0],n=await(async t=>{let e=null,i=null;if("undefined"!=typeof createImageBitmap)try{if(e=await createImageBitmap(t),e)return e}catch(t){}var n;return e||(i=await(n=t,new Promise(((t,e)=>{let i=URL.createObjectURL(n),r=new Image;r.src=i,r.onload=()=>{URL.revokeObjectURL(r.src),t(r)},r.onerror=t=>{e(new Error("Can't convert blob to image : "+(t instanceof Event?t.type:t)))}})))),i})(i),r=n instanceof HTMLImageElement?n.naturalWidth:n.width,s=n instanceof HTMLImageElement?n.naturalHeight:n.height;let o=xi.convert(Be(this,is,"f"),r,s);o||(o={x:0,y:0,width:r,height:s});const a=Be(this,$r,"f").call(this,n,r,s,o);t&&t(a)})),document.body.appendChild(e),e.click()}convertToPageCoordinates(t){const e=Be(this,zr,"m",gs).call(this,t);return{x:e.pageX,y:e.pageY}}convertToClientCoordinates(t){const e=Be(this,zr,"m",gs).call(this,t);return{x:e.clientX,y:e.clientY}}convertToScanRegionCoordinates(t){if(!Be(this,is,"f"))return JSON.parse(JSON.stringify(t));let e,i,n=Be(this,is,"f").left||Be(this,is,"f").x||0,r=Be(this,is,"f").top||Be(this,is,"f").y||0;if(!Be(this,is,"f").isMeasuredInPercentage)return{x:t.x-n,y:t.y-r};if(!this.cameraView)throw new Error("Camera view is not set.");if(this.cameraView.disposed)throw new Error("'cameraView' has been disposed.");if(!this.isOpen())throw new Error("Not open.");if(!Be(this,zr,"m",cs).call(this)&&!this.cameraManager.isVideoLoaded())throw new Error("Video is not loaded.");if(Be(this,zr,"m",cs).call(this)&&!this.cameraView._cvsSingleFrameMode)throw new Error("No image is selected.");if(Be(this,zr,"m",cs).call(this)){const t=this.cameraView._innerComponent.getElement("content");e=t.width,i=t.height}else{const t=this.getVideoEl();e=t.videoWidth,i=t.videoHeight}return{x:t.x-Math.round(n*e/100),y:t.y-Math.round(r*i/100)}}dispose(){this.close(),this.cameraManager.dispose(),this.releaseCameraView(),Ne(this,ls,!0,"f")}}var ws,Cs,Es,Ss,Ts,bs,Is,xs;qr=ys,Kr=new WeakMap,Jr=new WeakMap,Qr=new WeakMap,$r=new WeakMap,ts=new WeakMap,es=new WeakMap,is=new WeakMap,ns=new WeakMap,rs=new WeakMap,ss=new WeakMap,os=new WeakMap,as=new WeakMap,hs=new WeakMap,ls=new WeakMap,zr=new WeakSet,cs=function(){return"disabled"!==this.singleFrameMode},us=function(){return!this.videoSrc&&"opened"===this.cameraManager.state},ds=function(){for(let t in Be(this,os,"f"))if(1==Be(this,os,"f")[t])return!0;return!1},fs=function t(){if(this.disposed)return;if("open"!==this.getCameraState()||!Be(this,rs,"f"))return Be(this,ss,"f")&&clearTimeout(Be(this,ss,"f")),void Ne(this,ss,setTimeout((()=>{this.disposed||Be(this,zr,"m",t).call(this)}),this.fetchInterval),"f");const e=()=>{var t;let e;ys._onLog&&ys._onLog("DCE: start fetching a frame into buffer: "+Date.now());try{e=this.fetchImage()}catch(e){const i=e.message||e;if("The video is not loaded."===i)return;if(null===(t=Be(this,es,"f"))||void 0===t?void 0:t.onErrorReceived)return void setTimeout((()=>{var t;null===(t=Be(this,es,"f"))||void 0===t||t.onErrorReceived(_t.EC_IMAGE_READ_FAILED,i)}),0);console.warn(e)}e?(this.addImageToBuffer(e),ys._onLog&&ys._onLog("DCE: finish fetching a frame into buffer: "+Date.now()),Be(this,Jr,"f").fire("frameAddedToBuffer",null,{async:!1})):ys._onLog&&ys._onLog("DCE: get a invalid frame, abandon it: "+Date.now())};if(this.getImageCount()>=this.getMaxImageCount())switch(this.getBufferOverflowProtectionMode()){case o.BOPM_BLOCK:break;case o.BOPM_UPDATE:e()}else e();Be(this,ss,"f")&&clearTimeout(Be(this,ss,"f")),Ne(this,ss,setTimeout((()=>{this.disposed||Be(this,zr,"m",t).call(this)}),this.fetchInterval),"f")},gs=function(t){if(!this.cameraView)throw new Error("Camera view is not set.");if(this.cameraView.disposed)throw new Error("'cameraView' has been disposed.");if(!this.isOpen())throw new Error("Not open.");if(!Be(this,zr,"m",cs).call(this)&&!this.cameraManager.isVideoLoaded())throw new Error("Video is not loaded.");if(Be(this,zr,"m",cs).call(this)&&!this.cameraView._cvsSingleFrameMode)throw new Error("No image is selected.");const e=this.cameraView._innerComponent.getBoundingClientRect(),i=e.left,n=e.top,r=i+window.scrollX,s=n+window.scrollY,{width:o,height:a}=this.cameraView._innerComponent.getBoundingClientRect();if(o<=0||a<=0)throw new Error("Unable to get content dimensions. Camera view may not be rendered on the page.");let h,l,c;if(Be(this,zr,"m",cs).call(this)){const t=this.cameraView._innerComponent.getElement("content");h=t.width,l=t.height,c="contain"}else{const t=this.getVideoEl();h=t.videoWidth,l=t.videoHeight,c=this.cameraView.getVideoFit()}const u=o/a,d=h/l;let f,g,m,p,_=1;if("contain"===c)u{var e;if(!this.isUseMagnifier)return;if(Be(this,Ss,"f")||Ne(this,Ss,new Os,"f"),!Be(this,Ss,"f").magnifierCanvas)return;document.body.contains(Be(this,Ss,"f").magnifierCanvas)||(Be(this,Ss,"f").magnifierCanvas.style.position="fixed",Be(this,Ss,"f").magnifierCanvas.style.boxSizing="content-box",Be(this,Ss,"f").magnifierCanvas.style.border="2px solid #FFFFFF",document.body.append(Be(this,Ss,"f").magnifierCanvas));const i=this._innerComponent.getElement("content");if(!i)return;if(t.pointer.x<0||t.pointer.x>i.width||t.pointer.y<0||t.pointer.y>i.height)return void Be(this,bs,"f").call(this);const n=null===(e=this._drawingLayerManager._getFabricCanvas())||void 0===e?void 0:e.lowerCanvasEl;if(!n)return;const r=Math.max(i.clientWidth/5/1.5,i.clientHeight/4/1.5),s=1.5*r,o=[{image:i,width:i.width,height:i.height},{image:n,width:n.width,height:n.height}];Be(this,Ss,"f").update(s,t.pointer,r,o);{let e=0,i=0;t.e instanceof MouseEvent?(e=t.e.clientX,i=t.e.clientY):t.e instanceof TouchEvent&&t.e.changedTouches.length&&(e=t.e.changedTouches[0].clientX,i=t.e.changedTouches[0].clientY),e<1.5*s&&i<1.5*s?(Be(this,Ss,"f").magnifierCanvas.style.left="auto",Be(this,Ss,"f").magnifierCanvas.style.top="0",Be(this,Ss,"f").magnifierCanvas.style.right="0"):(Be(this,Ss,"f").magnifierCanvas.style.left="0",Be(this,Ss,"f").magnifierCanvas.style.top="0",Be(this,Ss,"f").magnifierCanvas.style.right="auto")}Be(this,Ss,"f").show()})),bs.set(this,(()=>{Be(this,Ss,"f")&&Be(this,Ss,"f").hide()})),Is.set(this,!1)}_setUIElement(t){this.UIElement=t,this._unbindUI(),this._bindUI()}async setUIElement(t){let e;if("string"==typeof t){let i=await Fi(t);e=document.createElement("div"),Object.assign(e.style,{width:"100%",height:"100%"}),e.attachShadow({mode:"open"}).appendChild(i)}else e=t;this._setUIElement(e)}getUIElement(){return this.UIElement}_bindUI(){if(!this.UIElement)throw new Error("Need to set 'UIElement'.");if(this._innerComponent)return;const t=this.UIElement;let e=t.classList.contains(this.containerClassName)?t:t.querySelector(`.${this.containerClassName}`);e||(e=document.createElement("div"),e.style.width="100%",e.style.height="100%",e.className=this.containerClassName,t.append(e)),this._innerComponent=document.createElement("dce-component"),e.appendChild(this._innerComponent)}_unbindUI(){var t,e,i;null===(t=this._drawingLayerManager)||void 0===t||t.clearDrawingLayers(),null===(e=this._innerComponent)||void 0===e||e.removeElement("drawing-layer"),this._layerBaseCvs=null,null===(i=this._innerComponent)||void 0===i||i.remove(),this._innerComponent=null}setImage(t,e,i){if(!this._innerComponent)throw new Error("Need to set 'UIElement'.");let n=this._innerComponent.getElement("content");n||(n=document.createElement("canvas"),n.style.objectFit="contain",this._innerComponent.setElement("content",n)),n.width===e&&n.height===i||(n.width=e,n.height=i);const r=n.getContext("2d");r.clearRect(0,0,n.width,n.height),t instanceof Uint8Array||t instanceof Uint8ClampedArray?(t instanceof Uint8Array&&(t=new Uint8ClampedArray(t.buffer)),r.putImageData(new ImageData(t,e,i),0,0)):(t instanceof HTMLCanvasElement||t instanceof HTMLImageElement)&&r.drawImage(t,0,0)}getImage(){return this._innerComponent.getElement("content")}clearImage(){if(!this._innerComponent)return;let t=this._innerComponent.getElement("content");t&&t.getContext("2d").clearRect(0,0,t.width,t.height)}removeImage(){this._innerComponent&&this._innerComponent.removeElement("content")}setOriginalImage(t){if(y(t)){Ne(this,Es,t,"f");const{width:e,height:i,bytes:n,format:r}=Object.assign({},t);let s;if(r===h.IPF_GRAYSCALED){s=new Uint8ClampedArray(e*i*4);for(let t=0;t({x:e.x-t.left-t.width/2,y:e.y-t.top-t.height/2}))),t.addWithUpdate()}else i.points=e;const n=i.points.length-1;return i.controls=i.points.reduce((function(t,e,i){return t["p"+i]=new Je.Control({positionHandler:fi,actionHandler:pi(i>0?i-1:n,mi),actionName:"modifyPolygon",pointIndex:i}),t}),{}),i._setPositionDimensions({}),!0}}extendGet(t){if("startPoint"===t||"endPoint"===t){const e=[],i=this._fabricObject;if(i.selectable&&!i.group)for(let t in i.oCoords)e.push({x:i.oCoords[t].x,y:i.oCoords[t].y});else for(let t of i.points){let n=t.x-i.pathOffset.x,r=t.y-i.pathOffset.y;const s=Je.util.transformPoint({x:n,y:r},i.calcTransformMatrix());e.push({x:s.x,y:s.y})}return"startPoint"===t?e[0]:e[1]}}updateCoordinateBaseFromImageToView(){const t=this.get("startPoint"),e=this.get("endPoint");this.set("startPoint",{x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)}),this.set("endPoint",{x:this.convertPropFromViewToImage(e.x),y:this.convertPropFromViewToImage(e.y)})}updateCoordinateBaseFromViewToImage(){const t=this.get("startPoint"),e=this.get("endPoint");this.set("startPoint",{x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)}),this.set("endPoint",{x:this.convertPropFromImageToView(e.x),y:this.convertPropFromImageToView(e.y)})}setPosition(t){this.setLine(t)}getPosition(){return this.getLine()}updatePosition(){Be(this,wi,"f")&&this.setLine(Be(this,wi,"f"))}setPolygon(){}getPolygon(){return null}setLine(t){if(!E(t))throw new TypeError("Invalid 'line'.");if(this._drawingLayer){if("view"===this.coordinateBase)this.set("startPoint",{x:this.convertPropFromViewToImage(t.startPoint.x),y:this.convertPropFromViewToImage(t.startPoint.y)}),this.set("endPoint",{x:this.convertPropFromViewToImage(t.endPoint.x),y:this.convertPropFromViewToImage(t.endPoint.y)});else{if("image"!==this.coordinateBase)throw new Error("Invalid 'coordinateBase'.");this.set("startPoint",t.startPoint),this.set("endPoint",t.endPoint)}this._drawingLayer.renderAll()}else Ne(this,wi,JSON.parse(JSON.stringify(t)),"f")}getLine(){if(this._drawingLayer){if("view"===this.coordinateBase)return{startPoint:{x:this.convertPropFromImageToView(this.get("startPoint").x),y:this.convertPropFromImageToView(this.get("startPoint").y)},endPoint:{x:this.convertPropFromImageToView(this.get("endPoint").x),y:this.convertPropFromImageToView(this.get("endPoint").y)}};if("image"===this.coordinateBase)return{startPoint:this.get("startPoint"),endPoint:this.get("endPoint")};throw new Error("Invalid 'coordinateBase'.")}return Be(this,wi,"f")?JSON.parse(JSON.stringify(Be(this,wi,"f"))):null}},QuadDrawingItem:Ei,RectDrawingItem:di,TextDrawingItem:yi});const Ds="undefined"==typeof self,Ls=Ds?{}:self,Ms="function"==typeof importScripts,Fs=(()=>{if(!Ms){if(!Ds&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),Ps=t=>t&&"object"==typeof t&&"function"==typeof t.then,ks=(async()=>{})().constructor;let Bs=class extends ks{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(t){let e;this._task=t,Ps(t)?e=t:"function"==typeof t&&(e=new ks(t)),e&&(async()=>{try{const i=await e;t===this._task&&this.resolve(i)}catch(e){t===this._task&&this.reject(e)}})()}get isEmpty(){return null==this._task}constructor(t){let e,i;super(((t,n)=>{e=t,i=n})),this._s="pending",this.resolve=t=>{this.isPending&&(Ps(t)?this.task=t:(this._s="fulfilled",e(t)))},this.reject=t=>{this.isPending&&(this._s="rejected",i(t))},this.task=t}};const Ns=" is not allowed to change after `createInstance` or `loadWasm` is called.",js=!Ds&&document.currentScript&&(document.currentScript.getAttribute("data-license")||document.currentScript.getAttribute("data-productKeys")||document.currentScript.getAttribute("data-licenseKey")||document.currentScript.getAttribute("data-handshakeCode")||document.currentScript.getAttribute("data-organizationID"))||"",Us=(t,e)=>{const i=t;if(i._license!==e){if(!i._pLoad.isEmpty)throw new Error("`license`"+Ns);i._license=e}};!Ds&&document.currentScript&&document.currentScript.getAttribute("data-sessionPassword");const Vs=t=>{if(null==t)t=[];else{t=t instanceof Array?[...t]:[t];for(let e=0;e{e=Vs(e);const i=t;if(i._licenseServer!==e){if(!i._pLoad.isEmpty)throw new Error("`licenseServer`"+Ns);i._licenseServer=e}},Ws=(t,e)=>{e=e||"";const i=t;if(i._deviceFriendlyName!==e){if(!i._pLoad.isEmpty)throw new Error("`deviceFriendlyName`"+Ns);i._deviceFriendlyName=e}};let Ys,Hs,Xs,zs,qs;"undefined"!=typeof navigator&&(Ys=navigator,Hs=Ys.userAgent,Xs=Ys.platform,zs=Ys.mediaDevices),function(){if(!Ds){const t={Edge:{search:"Edg",verSearch:"Edg"},OPR:null,Chrome:null,Safari:{str:Ys.vendor,search:"Apple",verSearch:["Version","iPhone OS","CPU OS"]},Firefox:null,Explorer:{search:"MSIE",verSearch:"MSIE"}},e={HarmonyOS:null,Android:null,iPhone:null,iPad:null,Windows:{str:Xs,search:"Win"},Mac:{str:Xs},Linux:{str:Xs}};let i="unknownBrowser",n=0,r="unknownOS";for(let e in t){const r=t[e]||{};let s=r.str||Hs,o=r.search||e,a=r.verStr||Hs,h=r.verSearch||e;if(h instanceof Array||(h=[h]),-1!=s.indexOf(o)){i=e;for(let t of h){let e=a.indexOf(t);if(-1!=e){n=parseFloat(a.substring(e+t.length+1));break}}break}}for(let t in e){const i=e[t]||{};let n=i.str||Hs,s=i.search||t;if(-1!=n.indexOf(s)){r=t;break}}"Linux"==r&&-1!=Hs.indexOf("Windows NT")&&(r="HarmonyOS"),qs={browser:i,version:n,OS:r}}Ds&&(qs={browser:"ssr",version:0,OS:"ssr"})}(),zs&&zs.getUserMedia,"Chrome"===qs.browser&&qs.version>66||"Safari"===qs.browser&&qs.version>13||"OPR"===qs.browser&&qs.version>43||"Edge"===qs.browser&&qs.version;const Zs=()=>(ft("license"),tt("dynamsoft_inited",(async()=>{let{lt:t,l:e,ls:i,sp:n,rmk:r,cv:s}=((t,e=!1)=>{const i=t;if(i._pLoad.isEmpty){let n,r,s,o=i._license||"",a=JSON.parse(JSON.stringify(i._licenseServer)),h=i._sessionPassword,l=0;if(o.startsWith("t")||o.startsWith("f"))l=0;else if(0===o.length||o.startsWith("P")||o.startsWith("L")||o.startsWith("Y")||o.startsWith("A"))l=1;else{l=2;const e=o.indexOf(":");-1!=e&&(o=o.substring(e+1));const i=o.indexOf("?");if(-1!=i&&(r=o.substring(i+1),o=o.substring(0,i)),o.startsWith("DLC2"))l=0;else{if(o.startsWith("DLS2")){let e;try{let t=o.substring(4);t=atob(t),e=JSON.parse(t)}catch(t){throw new Error("Format Error: The license string you specified is invalid, please check to make sure it is correct.")}if(o=e.handshakeCode?e.handshakeCode:e.organizationID?e.organizationID:"","number"==typeof o&&(o=JSON.stringify(o)),0===a.length){let t=[];e.mainServerURL&&(t[0]=e.mainServerURL),e.standbyServerURL&&(t[1]=e.standbyServerURL),a=Vs(t)}!h&&e.sessionPassword&&(h=e.sessionPassword),n=e.remark}o&&"200001"!==o&&!o.startsWith("200001-")||(l=1)}}if(l&&(e||(Ls.crypto||(s="Please upgrade your browser to support online key."),Ls.crypto.subtle||(s="Require https to use online key in this browser."))),s)throw new Error(s);return 1===l&&(o="",console.warn("Applying for a public trial license ...")),{lt:l,l:o,ls:a,sp:h,rmk:n,cv:r}}throw new Error("Can't preprocess license again"+Ns)})(Js),o=new Bs;Js._pLoad.task=o,(async()=>{try{await Js._pLoad}catch(t){}})();let a=nt();rt[a]=e=>{if(e.message&&Js._onAuthMessage){let t=Js._onAuthMessage(e.message);null!=t&&(e.message=t)}let i,n=!1;if(1===t&&(n=!0),e.success?(st&&st("init license success"),e.message&&console.warn(e.message),gt._bSupportIRTModule=e.bSupportIRTModule,gt._bSupportDce4Module=e.bSupportDce4Module,Js.bPassValidation=!0,[0,-10076].includes(e.initLicenseInfo.errorCode)?[-10076].includes(e.initLicenseInfo.errorCode)&&console.warn(e.initLicenseInfo.errorString):o.reject(new Error(e.initLicenseInfo.errorString))):(i=Error(e.message),e.stack&&(i.stack=e.stack),e.ltsErrorCode&&(i.ltsErrorCode=e.ltsErrorCode),n||111==e.ltsErrorCode&&-1!=e.message.toLowerCase().indexOf("trial license")&&(n=!0)),n){const t=A(gt.engineResourcePaths);(async(t,e,i)=>{if(!t._bNeverShowDialog)try{let n=await fetch(t.engineResourcePath+"dls.license.dialog.html");if(!n.ok)throw Error("Get license dialog fail. Network Error: "+n.statusText);let r=await n.text();if(!r.trim().startsWith("<"))throw Error("Get license dialog fail. Can't get valid HTMLElement.");let s=document.createElement("div");s.innerHTML=r;let o=[];for(let t=0;t{if(t==e.target){a.remove();for(let t of o)t.remove()}}));else if(!l&&t.classList.contains("dls-license-icon-close"))l=t,t.addEventListener("click",(()=>{a.remove();for(let t of o)t.remove()}));else if(!c&&t.classList.contains("dls-license-icon-error"))c=t,"error"!=e&&t.remove();else if(!u&&t.classList.contains("dls-license-icon-warn"))u=t,"warn"!=e&&t.remove();else if(!d&&t.classList.contains("dls-license-msg-content")){d=t;let e=i;for(;e;){let i=e.indexOf("["),n=e.indexOf("]",i),r=e.indexOf("(",n),s=e.indexOf(")",r);if(-1==i||-1==n||-1==r||-1==s){t.appendChild(new Text(e));break}i>0&&t.appendChild(new Text(e.substring(0,i)));let o=document.createElement("a"),a=e.substring(i+1,n);o.innerText=a;let h=e.substring(r+1,s);o.setAttribute("href",h),o.setAttribute("target","_blank"),t.appendChild(o),e=e.substring(s+1)}}document.body.appendChild(a)}catch(e){t._onLog&&t._onLog(e.message||e)}})({_bNeverShowDialog:Js._bNeverShowDialog,engineResourcePath:t.license,_onLog:st},e.success?"warn":"error",e.message)}e.success?o.resolve(void 0):o.reject(i)},await $("core"),et.postMessage({type:"license_dynamsoft",body:{v:"3.4.31",brtk:!!t,bptk:1===t,l:e,os:qs,fn:Js.deviceFriendlyName,ls:i,sp:n,rmk:r,cv:s},id:a}),Js.bCallInitLicense=!0,await o})));let Ks;ct.license={},ct.license.dynamsoft=Zs,ct.license.getAR=async()=>{{let t=Q.dynamsoft_inited;t&&t.isRejected&&await t}return et?new Promise(((t,e)=>{let i=nt();rt[i]=async i=>{if(i.success){delete i.success;{let t=Js.license;t&&(t.startsWith("t")||t.startsWith("f"))&&(i.pk=t)}if(Object.keys(i).length){if(i.lem){let t=Error(i.lem);t.ltsErrorCode=i.lec,delete i.lem,delete i.lec,i.ae=t}t(i)}else t(null)}else{let t=Error(i.message);i.stack&&(t.stack=i.stack),e(t)}},et.postMessage({type:"license_getAR",id:i})})):null};let Js=class t{static setLicenseServer(e){Gs(t,e)}static get license(){return this._license}static set license(e){Us(t,e)}static get licenseServer(){return this._licenseServer}static set licenseServer(e){Gs(t,e)}static get deviceFriendlyName(){return this._deviceFriendlyName}static set deviceFriendlyName(e){Ws(t,e)}static initLicense(e,i){if(Us(t,e),t.bCallInitLicense=!0,"boolean"==typeof i&&i||"object"==typeof i&&i.executeNow)return Zs()}static setDeviceFriendlyName(e){Ws(t,e)}static getDeviceFriendlyName(){return t._deviceFriendlyName}static getDeviceUUID(){return(async()=>(await tt("dynamsoft_uuid",(async()=>{await ft();let t=new Bs,e=nt();rt[e]=e=>{if(e.success)t.resolve(e.uuid);else{const i=Error(e.message);e.stack&&(i.stack=e.stack),t.reject(i)}},et.postMessage({type:"license_getDeviceUUID",id:e}),Ks=await t})),Ks))()}};Js._pLoad=new Bs,Js.bPassValidation=!1,Js.bCallInitLicense=!1,Js._license=js,Js._licenseServer=[],Js._deviceFriendlyName="",gt.engineResourcePaths.license={version:"3.4.31",path:Fs,isInternal:!0},ut.license={wasm:!0,js:!0},ct.license.LicenseManager=Js;const Qs="1.4.21";"string"!=typeof gt.engineResourcePaths.std&&O(gt.engineResourcePaths.std.version,Qs)<0&&(gt.engineResourcePaths.std={version:Qs,path:(t=>{if(null==t&&(t="./"),Ds||Ms);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t})(Fs+`../../dynamsoft-capture-vision-std@${Qs}/dist/`),isInternal:!0});var $s=Object.freeze({__proto__:null,LicenseManager:Js,LicenseModule:class{static getVersion(){return`3.4.31(Worker: ${lt.license&<.license.worker||"Not Loaded"}, Wasm: ${lt.license&<.license.wasm||"Not Loaded"})`}}});const to=()=>window.matchMedia("(orientation: landscape)").matches;function eo(t,e){for(const n in e)"Object"===(i=e[n],Object.prototype.toString.call(i).slice(8,-1))&&n in t?eo(t[n],e[n]):t[n]=e[n];var i;return t}const io=async t=>{let e;await new Promise(((i,n)=>{e=new Image,e.onload=()=>i(e),e.onerror=n,e.src=URL.createObjectURL(t)}));const i=document.createElement("canvas"),n=i.getContext("2d");return i.width=e.width,i.height=e.height,n.drawImage(e,0,0),{bytes:Uint8Array.from(n.getImageData(0,0,i.width,i.height).data),width:i.width,height:i.height,stride:4*i.width,format:10}};const no="undefined"==typeof self,ro="function"==typeof importScripts,so=(()=>{if(!ro){if(!no&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),oo=t=>{if(null==t&&(t="./"),no||ro);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t};gt.engineResourcePaths.utility={version:"1.4.32",path:so,isInternal:!0},ut.utility={js:!0,wasm:!0};const ao="1.4.21";"string"!=typeof gt.engineResourcePaths.std&&O(gt.engineResourcePaths.std.version,ao)<0&&(gt.engineResourcePaths.std={version:ao,path:oo(so+`../../dynamsoft-capture-vision-std@${ao}/dist/`),isInternal:!0});const ho="2.4.31";(!gt.engineResourcePaths.dip||"string"!=typeof gt.engineResourcePaths.dip&&O(gt.engineResourcePaths.dip.version,ho)<0)&&(gt.engineResourcePaths.dip={version:ho,path:oo(so+`../../dynamsoft-image-processing@${ho}/dist/`),isInternal:!0});function lo(t,e,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(t):n?n.value:e.get(t)}var co,uo,fo,go,mo;function po(t,e){let i=!0;for(let o=0;o1)return Math.sqrt((h-o)**2+(l-a)**2);{const t=r+u*(o-r),e=s+u*(a-s);return Math.sqrt((h-t)**2+(l-e)**2)}}function yo(t){const e=[];for(let i=0;i=0&&h<=1&&l>=0&&l<=1?{x:t.x+l*r,y:t.y+l*s}:null}function Eo(t){let e=0;for(let i=0;i0}function To(t,e){for(let i=0;i<4;i++)if(!So(t.points[i],t.points[(i+1)%4],e))return!1;return!0}"function"==typeof SuppressedError&&SuppressedError;function bo(t,e,i,n){const r=t.points,s=e.points;let o=8*i;o=Math.max(o,5);const a=yo(r)[3],h=yo(r)[1],l=yo(s)[3],c=yo(s)[1];let u,d=0;if(u=Math.max(Math.abs(vo(a,e.points[0])),Math.abs(vo(a,e.points[3]))),u>d&&(d=u),u=Math.max(Math.abs(vo(h,e.points[1])),Math.abs(vo(h,e.points[2]))),u>d&&(d=u),u=Math.max(Math.abs(vo(l,t.points[0])),Math.abs(vo(l,t.points[3]))),u>d&&(d=u),u=Math.max(Math.abs(vo(c,t.points[1])),Math.abs(vo(c,t.points[2]))),u>d&&(d=u),d>o)return!1;const f=wo(yo(r)[0]),g=wo(yo(r)[2]),m=wo(yo(s)[0]),p=wo(yo(s)[2]),_=_o(f,p),v=_o(m,g),y=_>v,w=Math.min(_,v),C=_o(f,g),E=_o(m,p);let S=12*i;return S=Math.max(S,5),S=Math.min(S,C),S=Math.min(S,E),!!(w{e.x+=t,e.y+=i})),e.x/=t.length,e.y/=t.length,e}isProbablySameLocationWithOffset(t,e){const i=this.item.location,n=t.location;if(i.area<=0)return!1;if(Math.abs(i.area-n.area)>.4*i.area)return!1;let r=new Array(4).fill(0),s=new Array(4).fill(0),o=0,a=0;for(let t=0;t<4;++t)r[t]=Math.round(100*(n.points[t].x-i.points[t].x))/100,o+=r[t],s[t]=Math.round(100*(n.points[t].y-i.points[t].y))/100,a+=s[t];o/=4,a/=4;for(let t=0;t<4;++t){if(Math.abs(r[t]-o)>this.strictLimit||Math.abs(o)>.8)return!1;if(Math.abs(s[t]-a)>this.strictLimit||Math.abs(a)>.8)return!1}return e.x=o,e.y=a,!0}isLocationOverlap(t,e){if(this.locationArea>e){for(let e=0;e<4;e++)if(To(this.location,t.points[e]))return!0;const e=this.getCenterPoint(t.points);if(To(this.location,e))return!0}else{for(let e=0;e<4;e++)if(To(t,this.location.points[e]))return!0;if(To(t,this.getCenterPoint(this.location.points)))return!0}return!1}isMatchedLocationWithOffset(t,e={x:0,y:0}){if(this.isOneD){const i=Object.assign({},t.location);for(let t=0;t<4;t++)i.points[t].x-=e.x,i.points[t].y-=e.y;if(!this.isLocationOverlap(i,t.locationArea))return!1;const n=[this.location.points[0],this.location.points[3]],r=[this.location.points[1],this.location.points[2]];for(let t=0;t<4;t++){const e=i.points[t],s=0===t||3===t?n:r;if(Math.abs(vo(s,e))>this.locationThreshold)return!1}}else for(let i=0;i<4;i++){const n=t.location.points[i],r=this.location.points[i];if(!(Math.abs(r.x+e.x-n.x)=this.locationThreshold)return!1}return!0}isOverlappedLocationWithOffset(t,e,i=!0){const n=Object.assign({},t.location);for(let t=0;t<4;t++)n.points[t].x-=e.x,n.points[t].y-=e.y;if(!this.isLocationOverlap(n,t.location.area))return!1;if(i){const t=.75;return function(t,e){const i=[];for(let n=0;n<4;n++)for(let r=0;r<4;r++){const s=Co(t[n],t[(n+1)%4],e[r],e[(r+1)%4]);s&&i.push(s)}return t.forEach((t=>{po(e,t)&&i.push(t)})),e.forEach((e=>{po(t,e)&&i.push(e)})),Eo(function(t){if(t.length<=1)return t;t.sort(((t,e)=>t.x-e.x||t.y-e.y));const e=t.shift();return t.sort(((t,i)=>Math.atan2(t.y-e.y,t.x-e.x)-Math.atan2(i.y-e.y,i.x-e.x))),[e,...t]}(i))}([...this.location.points],n.points)>this.locationArea*t}return!0}}const xo={BF_ONED:BigInt(3147775),BF_GS1_DATABAR:BigInt(260096)},Oo={barcode:2,text_line:4,detected_quad:8,normalized_image:16},Ao=t=>Object.values(Oo).includes(t)||Oo.hasOwnProperty(t),Ro=(t,e)=>"string"==typeof t?e[Oo[t]]:e[t],Do=(t,e,i)=>{"string"==typeof t?e[Oo[t]]=i:e[t]=i},Lo=(t,e,i)=>{const n=[8,16].includes(i);if(!n&&t.isResultCrossVerificationEnabled(i))for(let t=0;t{Do(e,this.verificationEnabled,t)})),lo(this,uo,"f").forEach(((t,e)=>{Do(e,this.duplicateFilterEnabled,t)})),lo(this,fo,"f").forEach(((t,e)=>{Do(e,this.duplicateForgetTime,t)})),lo(this,go,"f").forEach(((t,e)=>{Do(e,this.latestOverlappingEnabled,t)})),lo(this,mo,"f").forEach(((t,e)=>{Do(e,this.maxOverlappingFrames,t)}))}enableResultCrossVerification(t,e){Ao(t)&&lo(this,co,"f").set(t,e)}isResultCrossVerificationEnabled(t){return!!Ao(t)&&Ro(t,this.verificationEnabled)}enableResultDeduplication(t,e){Ao(t)&&(e&&this.enableLatestOverlapping(t,!1),lo(this,uo,"f").set(t,e))}isResultDeduplicationEnabled(t){return!!Ao(t)&&Ro(t,this.duplicateFilterEnabled)}setDuplicateForgetTime(t,e){Ao(t)&&(e>18e4&&(e=18e4),e<0&&(e=0),lo(this,fo,"f").set(t,e))}getDuplicateForgetTime(t){return Ao(t)?Ro(t,this.duplicateForgetTime):-1}setMaxOverlappingFrames(t,e){Ao(t)&&lo(this,mo,"f").set(t,e)}getMaxOverlappingFrames(t){return Ao(t)?Ro(t,this.maxOverlappingFrames):-1}enableLatestOverlapping(t,e){Ao(t)&&(e&&this.enableResultDeduplication(t,!1),lo(this,go,"f").set(t,e))}isLatestOverlappingEnabled(t){return!!Ao(t)&&Ro(t,this.latestOverlappingEnabled)}getFilteredResultItemTypes(){let t=0;const e=[mt.CRIT_BARCODE,mt.CRIT_TEXT_LINE,mt.CRIT_DETECTED_QUAD,mt.CRIT_NORMALIZED_IMAGE];for(let i=0;i{if(1!==t.type){const e=(BigInt(t.format)&BigInt(xo.BF_ONED))!=BigInt(0)||(BigInt(t.format)&BigInt(xo.BF_GS1_DATABAR))!=BigInt(0);return new Io(h,e?1:2,e,t)}})).filter(Boolean);if(this.overlapSet.length>0){const t=new Array(l).fill(new Array(this.overlapSet.length).fill(1));let e=0;for(;e-1!==t)).length;r>p&&(p=r,m=n,g.x=i.x,g.y=i.y)}}if(0===p){for(let e=0;e-1!=t)).length}let i=this.overlapSet.length<=3?p>=1:p>=2;if(!i&&s&&u>0){let t=0;for(let e=0;e=1:t>=3}i||(this.overlapSet=[])}if(0===this.overlapSet.length)this.stabilityCount=0,t.items.forEach(((t,e)=>{if(1!==t.type){const i=Object.assign({},t),n=(BigInt(t.format)&BigInt(xo.BF_ONED))!=BigInt(0)||(BigInt(t.format)&BigInt(xo.BF_GS1_DATABAR))!=BigInt(0),s=t.confidence5||Math.abs(g.y)>5)&&(e=!1):e=!1;for(let i=0;i0){for(let t=0;t!(t.overlapCount+this.stabilityCount<=0&&t.crossVerificationFrame<=0)))}f.sort(((t,e)=>e-t)).forEach(((e,i)=>{t.items.splice(e,1)})),d.forEach((e=>{t.items.push(Object.assign(Object.assign({},e),{overlapped:!0}))}))}}onDecodedBarcodesReceived(t){this.latestOverlappingFilter(t),Lo(this,t.items,mt.CRIT_BARCODE)}onRecognizedTextLinesReceived(t){Lo(this,t.items,mt.CRIT_TEXT_LINE)}onDetectedQuadsReceived(t){Lo(this,t.items,mt.CRIT_DETECTED_QUAD)}onNormalizedImagesReceived(t){Lo(this,t.items,mt.CRIT_NORMALIZED_IMAGE)}}co=new WeakMap,uo=new WeakMap,fo=new WeakMap,go=new WeakMap,mo=new WeakMap;var Fo,Po,ko,Bo,No,jo,Uo,Vo,Go,Wo,Yo,Ho,Xo,zo,qo,Zo,Ko,Jo,Qo,$o,ta,ea=Object.freeze({__proto__:null,ImageManager:class{async saveToFile(t,e,i){if(!t||!e)return null;if("string"!=typeof e)throw new TypeError("FileName must be of type string.");const n=M(t);return R(n,e,i)}async drawOnImage(t,e,i,n=4294901760,r=1,s){let o;if(t instanceof Blob)o=await io(t);else if("string"==typeof t){let e=await x(t,"blob");o=await io(e)}return await new Promise(((t,a)=>{let h=nt();rt[h]=async e=>{if(e.success)return s&&this.saveToFile(e.image,"test.png",s),t(e.image);{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,a(t)}},et.postMessage({type:"utility_drawOnImage",id:h,body:{dsImage:o,drawingItem:e instanceof Array?e:[e],color:n,thickness:r,type:i}})}))}},MultiFrameResultCrossFilter:Mo,UtilityModule:class{static getVersion(){return`1.4.32(Worker: ${lt.utility&<.utility.worker||"Not Loaded"}, Wasm: ${lt.utility&<.utility.wasm||"Not Loaded"})`}}});class ia{constructor(e){if(Fo.add(this),Bo.set(this,void 0),No.set(this,{status:{code:t.EnumResultStatus.RS_SUCCESS,message:"Success."},barcodeResults:[]}),jo.set(this,!1),Uo.set(this,void 0),Vo.set(this,void 0),this.config=Nt,e&&"object"!=typeof e||Array.isArray(e))throw"Invalid config.";eo(this.config,e)}async launch(){if(At(this,jo,"f"))throw new Error("The BarcodeScanner instance has been destroyed.");if(At(ia,Po,"f",ko)&&!At(ia,Po,"f",ko).isFulfilled)throw new Error("Cannot call `launch()` while a previous task is still running.");return Rt(ia,Po,new Vt,"f",ko),await At(this,Fo,"m",Go).call(this),At(ia,Po,"f",ko)}async decode(t,e="ReadBarcodes_Default"){return Rt(this,Vo,e,"f"),await At(this,Fo,"m",Wo).call(this,!0),this._cvRouter.capture(t,e)}dispose(){Rt(this,jo,!0,"f"),At(ia,Po,"f",ko)&&At(ia,Po,"f",ko).isPending&&At(ia,Po,"f",ko).resolve(At(this,No,"f")),this._cameraEnhancer?.dispose(),this._cameraView?.dispose(),this._cvRouter?.dispose(),this._cameraEnhancer=null,this._cameraView=null,this._cvRouter=null,window.removeEventListener("resize",At(this,Bo,"f")),document.querySelector(".scanner-view-container")?.remove(),document.querySelector(".result-view-container")?.remove(),document.querySelector(".barcode-scanner-container")?.remove(),document.querySelector(".loading-page")?.remove()}}Po=ia,Bo=new WeakMap,No=new WeakMap,jo=new WeakMap,Uo=new WeakMap,Vo=new WeakMap,Fo=new WeakSet,Go=async function(){try{await At(this,Fo,"m",Wo).call(this);try{await this._cameraEnhancer.open()}catch(t){At(this,Fo,"m",ta).call(this);document.querySelector(".no-camera-view").style.display="flex"}await this._cvRouter.startCapturing(At(this,Vo,"f"))}catch(e){At(this,No,"f").status={code:t.EnumResultStatus.RS_FAILED,message:e.message||e},At(ia,Po,"f",ko).reject(new Error(At(this,No,"f").status.message)),this.dispose()}finally{const t=document.querySelector(".loading-page");t&&(t.style.display="none")}},Wo=async function(e=!1){gt.engineResourcePaths=this.config.engineResourcePaths,e||(this._cameraView=await En.createInstance(),this.config.scanMode===t.EnumScanMode.SM_SINGLE&&(this._cameraView._capturedResultReceiver.onCapturedResultReceived=()=>{}),await At(this,Fo,"m",Ho).call(this)),await Js.initLicense(this.config.license||"",{executeNow:!0}),this._cvRouter=this._cvRouter||await Ee.createInstance(),await At(this,Fo,"m",Yo).call(this,e),e||(this._cameraEnhancer=await ys.createInstance(this._cameraView),this._cvRouter.setInput(this._cameraEnhancer),At(this,Fo,"m",Xo).call(this),await At(this,Fo,"m",zo).call(this))},Yo=async function(e=!1){e||(this.config.scanMode===t.EnumScanMode.SM_SINGLE?Rt(this,Vo,this.config.utilizedTemplateNames.single,"f"):this.config.scanMode===t.EnumScanMode.SM_MULTI_UNIQUE&&Rt(this,Vo,this.config.utilizedTemplateNames.multi_unique,"f")),this.config.templateFilePath&&await this._cvRouter.initSettings(this.config.templateFilePath);const i=await this._cvRouter.getSimplifiedSettings(At(this,Vo,"f"));e||this.config.scanMode!==t.EnumScanMode.SM_SINGLE||(i.capturedResultItemTypes=mt.CRIT_ORIGINAL_IMAGE|mt.CRIT_BARCODE);let n=this.config.barcodeFormats;if(n){Array.isArray(n)||(n=[n]),i.barcodeSettings.barcodeFormatIds=BigInt(0);for(let t=0;t{if("string"!=typeof t)throw new TypeError("Invalid url.");const e=await fetch(t);if(!e.ok)throw Error("Network Error: "+e.statusText);const i=await e.text();if(!i.trim().startsWith("<"))throw Error("Unable to get valid HTMLElement.");const n=document.createElement("div");if(n.insertAdjacentHTML("beforeend",i),1===n.childElementCount&&n.firstChild instanceof HTMLTemplateElement)return n.firstChild.content;const r=new DocumentFragment;for(let t of n.children)r.append(t);return r})(i);n.querySelectorAll("style").forEach((t=>{document.head.appendChild(t.cloneNode(!0))})),Rt(this,Uo,n.querySelector(".result-item"),"f");const r=n.querySelector(".btn-clear");if(r&&(r.addEventListener("click",(()=>{At(this,No,"f").barcodeResults=[],At(this,Fo,"m",Qo).call(this)})),this.config?.resultViewConfig?.toolbarButtonsConfig?.clear)){const t=this.config.resultViewConfig.toolbarButtonsConfig.clear;r.style.display=t.isHidden?"none":"flex",r.className=t.className?t.className:"btn-clear",r.innerText=t.label?t.label:"Clear",t.isHidden&&(n.querySelector(".toolbar-btns").style.justifyContent="center")}const s=n.querySelector(".btn-done");if(s&&(s.addEventListener("click",(()=>{const t=document.querySelector(".loading-page");t&&"none"===getComputedStyle(t).display&&this.dispose()})),this.config?.resultViewConfig?.toolbarButtonsConfig?.done)){const t=this.config.resultViewConfig.toolbarButtonsConfig.done;s.style.display=t.isHidden?"none":"flex",s.className=t.className?t.className:"btn-done",s.innerText=t.label?t.label:"Done",t.isHidden&&(n.querySelector(".toolbar-btns").style.justifyContent="center")}const o=this.config?.scannerViewConfig?.showCloseButton;if(o){const e=n.querySelector(".btn-close");e&&(e.style.display="",e.addEventListener("click",(()=>{At(this,No,"f").barcodeResults=[],At(this,No,"f").status={code:t.EnumResultStatus.RS_CANCELLED,message:"Cancelled."},this.dispose()})))}this.config.showUploadImageButton&&At(this,Fo,"m",ta).call(this,n.querySelector(".btn-upload-image"));const a=this._cameraView.getUIElement();a.shadowRoot.querySelector(".dce-sel-camera").remove(),a.shadowRoot.querySelector(".dce-sel-resolution").remove(),this._cameraView.setVideoFit("cover");const h=n.querySelector(".barcode-scanner-container");h.style.display=to()?"flex":"";const l=this.config.showResultView&&this.config.scanMode!==t.EnumScanMode.SM_SINGLE;let c;if(this.config.container?(h.style.position="relative",c=this.config.container):c=document.body,"string"==typeof c&&(c=document.querySelector(c),null===c))throw new Error("Failed to get the container");let u=this.config.scannerViewConfig.container;if("string"==typeof u&&(u=document.querySelector(u),null===u))throw new Error("Failed to get the container of the scanner view.");let d=this.config.resultViewConfig.container;if("string"==typeof d&&(d=document.querySelector(d),null===d))throw new Error("Failed to get the container of the result view.");const f=n.querySelector(".scanner-view-container"),g=n.querySelector(".result-view-container"),m=n.querySelector(".loading-page");f.append(m),u&&(f.append(a),u.append(f)),d&&d.append(g),u||d?u&&!d?(this.config.container||(g.style.position="absolute"),d=g,c.append(g)):!u&&d&&(this.config.container||(f.style.position="absolute"),u=f,f.append(a),c.append(f)):(u=f,d=g,l&&(Object.assign(f.style,{width:to()?"50%":"100%",height:to()?"100%":"50%"}),Object.assign(g.style,{width:to()?"50%":"100%",height:to()?"100%":"50%"})),f.append(a),c.append(h)),document.querySelector(".result-view-container").style.display=l?"":"none",this.config.removePoweredByMessage&&(a.shadowRoot.querySelector(".dce-msg-poweredby").style.display="none",document.querySelector(".no-result-svg").style.display="none"),Rt(this,Bo,(()=>{Object.assign(h.style,{display:to()?"flex":""}),!l||this.config.scannerViewConfig.container||this.config.resultViewConfig.container||(Object.assign(u.style,{width:to()?"50%":"100%",height:to()?"100%":"50%"}),Object.assign(d.style,{width:to()?"50%":"100%",height:to()?"100%":"50%"}))}),"f"),window.addEventListener("resize",At(this,Bo,"f")),this._cameraView._createDrawingLayer(2)},Xo=function(){const e=new Ie;let i=0;e.onCapturedResultReceived=async e=>{e.barcodeResultItems&&(this.config.scanMode===t.EnumScanMode.SM_SINGLE?2==++i&&At(this,Fo,"m",qo).call(this,e):At(this,Fo,"m",Zo).call(this,e))},this._cvRouter.addResultReceiver(e)},zo=async function(){const t=new Mo;t.enableResultCrossVerification(2,!0),t.enableResultDeduplication(2,!0),t.setDuplicateForgetTime(2,this.config.duplicateForgetTime),t.onDecodedBarcodesReceived=()=>{},await this._cvRouter.addResultFilter(t)},qo=function(e){const i=this._cameraView.getUIElement().shadowRoot;let n=new Promise((t=>{if(e.barcodeResultItems.length>1){At(this,Fo,"m",Jo).call(this);for(let n of e.barcodeResultItems){let e=0,r=0;for(let t=0;t<4;++t){let i=n.location.points[t];e+=i.x,r+=i.y}let s=this._cameraEnhancer.convertToClientCoordinates({x:e/4,y:r/4}),o=document.createElement("div");o.className="single-barcode-result-option",Object.assign(o.style,{position:"fixed",width:"32px",height:"32px",border:"#fff solid 4px","box-sizing":"border-box","border-radius":"16px",background:"#080",cursor:"pointer",transform:"translate(-50%, -50%)"}),o.style.left=s.x+"px",o.style.top=s.y+"px",o.addEventListener("click",(()=>{t(n)})),i.append(o)}}else t(e.barcodeResultItems[0])}));n.then((i=>{const n=e.items.filter((t=>t.type===mt.CRIT_ORIGINAL_IMAGE))[0].imageData,r={status:{code:t.EnumResultStatus.RS_SUCCESS,message:"Success."},originalImageResult:n,barcodeImage:(()=>{const t=D(n),e=i.location.points,r=Math.min(...e.map((t=>t.x))),s=Math.min(...e.map((t=>t.y))),o=Math.max(...e.map((t=>t.x))),a=Math.max(...e.map((t=>t.y))),l=o-r,c=a-s,u=document.createElement("canvas");u.width=l,u.height=c;const d=u.getContext("2d");d.beginPath(),d.moveTo(e[0].x-r,e[0].y-s);for(let t=1;tt.id===`${i.formatString}_${i.text}`));-1===t?(i.count=1,At(this,No,"f").barcodeResults.unshift(i),At(this,Fo,"m",Qo).call(this,i)):(At(this,No,"f").barcodeResults[t].count++,At(this,Fo,"m",$o).call(this,t)),this.config.onUniqueBarcodeScanned&&this.config.onUniqueBarcodeScanned(i)}},Ko=function(t){const e=At(this,Uo,"f").cloneNode(!0);e.querySelector(".format-string").innerText=t.formatString;e.querySelector(".text-string").innerText=t.text.replace(/\n|\r/g,""),e.id=`${t.formatString}_${t.text}`;return e.querySelector(".delete-icon").addEventListener("click",(()=>{const e=[...document.querySelectorAll(".main-list .result-item")],i=e.findIndex((e=>e.id===`${t.formatString}_${t.text}`));At(this,No,"f").barcodeResults.splice(i,1),e[i].remove()})),e},Jo=function(){const t=this._cameraView.getUIElement().shadowRoot;if(t.querySelector(".single-mode-mask"))return;const e=document.createElement("div");e.className="single-mode-mask",Object.assign(e.style,{width:"100%",height:"100%",position:"absolute",top:"0",left:"0",right:"0",bottom:"0","background-color":"#4C4C4C",opacity:"0.5"}),t.append(e),this._cameraEnhancer.pause(),this._cvRouter.stopCapturing()},Qo=function(e){const i=document.querySelector(".no-result-svg");if(!(this.config.showResultView&&this.config.scanMode!==t.EnumScanMode.SM_SINGLE))return;const n=document.querySelector(".main-list");if(!e)return n.textContent="",void(i.style.display="");i.style.display="none";const r=At(this,Fo,"m",Ko).call(this,e);n.insertBefore(r,document.querySelector(".result-item"))},$o=function(t){const e=document.querySelectorAll(".main-list .result-item"),i=e[t].querySelector(".result-count");let n=parseInt(i.textContent.replace("x",""));e[t].querySelector(".result-count").textContent="x"+ ++n},ta=function(e){e||(e=document.querySelector(".btn-upload-image")),e&&(e.style.display="",e.addEventListener("change",(async e=>{const i=e.target.files,n={status:{code:t.EnumResultStatus.RS_SUCCESS,message:"Success."},barcodeResults:[]};for(let e of i)try{const t=await this.decode(e,this.config.utilizedTemplateNames.image);t.barcodeResultItems&&n.barcodeResults.push(...t.barcodeResultItems)}catch(e){n.status={code:t.EnumResultStatus.RS_FAILED,message:e.message||e},At(ia,Po,"f",ko).reject(n.status.message),this.dispose()}At(ia,Po,"f",ko).resolve(n),this.dispose()})))},ko={value:null};const na="undefined"==typeof self,ra="function"==typeof importScripts,sa=(()=>{if(!ra){if(!na&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),oa=t=>{if(null==t&&(t="./"),na||ra);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t};gt.engineResourcePaths.dbr={version:"10.4.31",path:sa,isInternal:!0},ut.dbr={js:!1,wasm:!0,deps:["license","dip"]},ct.dbr={};const aa="1.4.21";"string"!=typeof gt.engineResourcePaths.std&&O(gt.engineResourcePaths.std.version,aa)<0&&(gt.engineResourcePaths.std={version:aa,path:oa(sa+`../../dynamsoft-capture-vision-std@${aa}/dist/`),isInternal:!0});const ha="2.4.31";(!gt.engineResourcePaths.dip||"string"!=typeof gt.engineResourcePaths.dip&&O(gt.engineResourcePaths.dip.version,ha)<0)&&(gt.engineResourcePaths.dip={version:ha,path:oa(sa+`../../dynamsoft-image-processing@${ha}/dist/`),isInternal:!0});const la={BF_NULL:BigInt(0),BF_ALL:BigInt("0xFFFFFFFEFFFFFFFF"),BF_DEFAULT:BigInt(4265345023),BF_ONED:BigInt(3147775),BF_GS1_DATABAR:BigInt(260096),BF_CODE_39:BigInt(1),BF_CODE_128:BigInt(2),BF_CODE_93:BigInt(4),BF_CODABAR:BigInt(8),BF_ITF:BigInt(16),BF_EAN_13:BigInt(32),BF_EAN_8:BigInt(64),BF_UPC_A:BigInt(128),BF_UPC_E:BigInt(256),BF_INDUSTRIAL_25:BigInt(512),BF_CODE_39_EXTENDED:BigInt(1024),BF_GS1_DATABAR_OMNIDIRECTIONAL:BigInt(2048),BF_GS1_DATABAR_TRUNCATED:BigInt(4096),BF_GS1_DATABAR_STACKED:BigInt(8192),BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL:BigInt(16384),BF_GS1_DATABAR_EXPANDED:BigInt(32768),BF_GS1_DATABAR_EXPANDED_STACKED:BigInt(65536),BF_GS1_DATABAR_LIMITED:BigInt(131072),BF_PATCHCODE:BigInt(262144),BF_CODE_32:BigInt(16777216),BF_PDF417:BigInt(33554432),BF_QR_CODE:BigInt(67108864),BF_DATAMATRIX:BigInt(134217728),BF_AZTEC:BigInt(268435456),BF_MAXICODE:BigInt(536870912),BF_MICRO_QR:BigInt(1073741824),BF_MICRO_PDF417:BigInt(524288),BF_GS1_COMPOSITE:BigInt(2147483648),BF_MSI_CODE:BigInt(1048576),BF_CODE_11:BigInt(2097152),BF_TWO_DIGIT_ADD_ON:BigInt(4194304),BF_FIVE_DIGIT_ADD_ON:BigInt(8388608),BF_MATRIX_25:BigInt(68719476736),BF_POSTALCODE:BigInt(0x3f0000000000000),BF_NONSTANDARD_BARCODE:BigInt(4294967296),BF_USPSINTELLIGENTMAIL:BigInt(4503599627370496),BF_POSTNET:BigInt(9007199254740992),BF_PLANET:BigInt(0x40000000000000),BF_AUSTRALIANPOST:BigInt(0x80000000000000),BF_RM4SCC:BigInt(72057594037927940),BF_KIX:BigInt(0x200000000000000),BF_DOTCODE:BigInt(8589934592),BF_PHARMACODE_ONE_TRACK:BigInt(17179869184),BF_PHARMACODE_TWO_TRACK:BigInt(34359738368),BF_PHARMACODE:BigInt(51539607552)};var ca,ua,da,fa;!function(t){t[t.EBRT_STANDARD_RESULT=0]="EBRT_STANDARD_RESULT",t[t.EBRT_CANDIDATE_RESULT=1]="EBRT_CANDIDATE_RESULT",t[t.EBRT_PARTIAL_RESULT=2]="EBRT_PARTIAL_RESULT"}(ca||(ca={})),function(t){t[t.QRECL_ERROR_CORRECTION_H=0]="QRECL_ERROR_CORRECTION_H",t[t.QRECL_ERROR_CORRECTION_L=1]="QRECL_ERROR_CORRECTION_L",t[t.QRECL_ERROR_CORRECTION_M=2]="QRECL_ERROR_CORRECTION_M",t[t.QRECL_ERROR_CORRECTION_Q=3]="QRECL_ERROR_CORRECTION_Q"}(ua||(ua={})),function(t){t[t.LM_AUTO=1]="LM_AUTO",t[t.LM_CONNECTED_BLOCKS=2]="LM_CONNECTED_BLOCKS",t[t.LM_STATISTICS=4]="LM_STATISTICS",t[t.LM_LINES=8]="LM_LINES",t[t.LM_SCAN_DIRECTLY=16]="LM_SCAN_DIRECTLY",t[t.LM_STATISTICS_MARKS=32]="LM_STATISTICS_MARKS",t[t.LM_STATISTICS_POSTAL_CODE=64]="LM_STATISTICS_POSTAL_CODE",t[t.LM_CENTRE=128]="LM_CENTRE",t[t.LM_ONED_FAST_SCAN=256]="LM_ONED_FAST_SCAN",t[t.LM_REV=-2147483648]="LM_REV",t[t.LM_SKIP=0]="LM_SKIP"}(da||(da={})),function(t){t[t.DM_DIRECT_BINARIZATION=1]="DM_DIRECT_BINARIZATION",t[t.DM_THRESHOLD_BINARIZATION=2]="DM_THRESHOLD_BINARIZATION",t[t.DM_GRAY_EQUALIZATION=4]="DM_GRAY_EQUALIZATION",t[t.DM_SMOOTHING=8]="DM_SMOOTHING",t[t.DM_MORPHING=16]="DM_MORPHING",t[t.DM_DEEP_ANALYSIS=32]="DM_DEEP_ANALYSIS",t[t.DM_SHARPENING=64]="DM_SHARPENING",t[t.DM_BASED_ON_LOC_BIN=128]="DM_BASED_ON_LOC_BIN",t[t.DM_SHARPENING_SMOOTHING=256]="DM_SHARPENING_SMOOTHING",t[t.DM_REV=-2147483648]="DM_REV",t[t.DM_SKIP=0]="DM_SKIP"}(fa||(fa={}));var ga=Object.freeze({__proto__:null,BarcodeReaderModule:class{static getVersion(){const t=lt.dbr&<.dbr.wasm;return`10.4.31(Worker: ${lt.dbr&<.dbr.worker||"Not Loaded"}, Wasm: ${t||"Not Loaded"})`}},EnumBarcodeFormat:la,get EnumDeblurMode(){return fa},get EnumExtendedBarcodeResultType(){return ca},get EnumLocalizationMode(){return da},get EnumQRCodeErrorCorrectionLevel(){return ua}});Ee._defaultTemplate="ReadSingleBarcode",t.BarcodeScanner=ia,t.CVR=Oe,t.Core=xt,t.DBR=ga,t.DCE=Rs,t.License=$s,t.Utility=ea})); diff --git a/dist/dbr.bundle.mjs b/dist/dbr.bundle.mjs index 43a1ab1..531689d 100644 --- a/dist/dbr.bundle.mjs +++ b/dist/dbr.bundle.mjs @@ -4,8 +4,8 @@ * @website http://www.dynamsoft.com * @copyright Copyright 2025, Dynamsoft Corporation * @author Dynamsoft -* @version 10.4.3100 +* @version 10.5.3000 * @fileoverview Dynamsoft JavaScript Library for Barcode Reader * More info on dbr JS: https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/ */ -const t=t=>t&&"object"==typeof t&&"function"==typeof t.then,e=(async()=>{})().constructor;let i=class extends e{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(i){let r;this._task=i,t(i)?r=i:"function"==typeof i&&(r=new e(i)),r&&(async()=>{try{const t=await r;i===this._task&&this.resolve(t)}catch(t){i===this._task&&this.reject(t)}})()}get isEmpty(){return null==this._task}constructor(e){let i,r;super(((t,e)=>{i=t,r=e})),this._s="pending",this.resolve=e=>{this.isPending&&(t(e)?this.task=e:(this._s="fulfilled",i(e)))},this.reject=t=>{this.isPending&&(this._s="rejected",r(t))},this.task=e}};function r(t,e,i,r){if("a"===i&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?r:"a"===i?r.call(t):r?r.value:e.get(t)}function n(t,e,i,r,n){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?n.call(t,i):n?n.value=i:e.set(t,i),i}var s,o,a;"function"==typeof SuppressedError&&SuppressedError,function(t){t[t.BOPM_BLOCK=0]="BOPM_BLOCK",t[t.BOPM_UPDATE=1]="BOPM_UPDATE"}(s||(s={})),function(t){t[t.CCUT_AUTO=0]="CCUT_AUTO",t[t.CCUT_FULL_CHANNEL=1]="CCUT_FULL_CHANNEL",t[t.CCUT_Y_CHANNEL_ONLY=2]="CCUT_Y_CHANNEL_ONLY",t[t.CCUT_RGB_R_CHANNEL_ONLY=3]="CCUT_RGB_R_CHANNEL_ONLY",t[t.CCUT_RGB_G_CHANNEL_ONLY=4]="CCUT_RGB_G_CHANNEL_ONLY",t[t.CCUT_RGB_B_CHANNEL_ONLY=5]="CCUT_RGB_B_CHANNEL_ONLY"}(o||(o={})),function(t){t[t.IPF_BINARY=0]="IPF_BINARY",t[t.IPF_BINARYINVERTED=1]="IPF_BINARYINVERTED",t[t.IPF_GRAYSCALED=2]="IPF_GRAYSCALED",t[t.IPF_NV21=3]="IPF_NV21",t[t.IPF_RGB_565=4]="IPF_RGB_565",t[t.IPF_RGB_555=5]="IPF_RGB_555",t[t.IPF_RGB_888=6]="IPF_RGB_888",t[t.IPF_ARGB_8888=7]="IPF_ARGB_8888",t[t.IPF_RGB_161616=8]="IPF_RGB_161616",t[t.IPF_ARGB_16161616=9]="IPF_ARGB_16161616",t[t.IPF_ABGR_8888=10]="IPF_ABGR_8888",t[t.IPF_ABGR_16161616=11]="IPF_ABGR_16161616",t[t.IPF_BGR_888=12]="IPF_BGR_888",t[t.IPF_BINARY_8=13]="IPF_BINARY_8",t[t.IPF_NV12=14]="IPF_NV12",t[t.IPF_BINARY_8_INVERTED=15]="IPF_BINARY_8_INVERTED"}(a||(a={}));const h="undefined"==typeof self,l="function"==typeof importScripts,c=(()=>{if(!l){if(!h&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),u=t=>{if(null==t&&(t="./"),h||l);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t},d=t=>Object.prototype.toString.call(t),f=t=>Array.isArray?Array.isArray(t):"[object Array]"===d(t),g=t=>"[object Boolean]"===d(t),m=t=>"number"==typeof t&&!Number.isNaN(t),p=t=>null!==t&&"object"==typeof t&&!Array.isArray(t),_=t=>!(!p(t)||!m(t.x)||!m(t.y)||!m(t.radius)||t.radius<0||!m(t.startAngle)||!m(t.endAngle)),v=t=>!!p(t)&&!!f(t.points)&&0!=t.points.length&&!t.points.some((t=>!b(t))),y=t=>!(!p(t)||!m(t.width)||t.width<=0||!m(t.height)||t.height<=0||!m(t.stride)||t.stride<=0||!("format"in t)||"tag"in t&&!T(t.tag)),w=t=>!(!y(t)||!m(t.bytes.length)&&!m(t.bytes.ptr)),C=t=>!!y(t)&&t.bytes instanceof Uint8Array,E=t=>!(!p(t)||!m(t.left)||t.left<0||!m(t.top)||t.top<0||!m(t.right)||t.right<0||!m(t.bottom)||t.bottom<0||t.left>=t.right||t.top>=t.bottom||!g(t.isMeasuredInPercentage)),T=t=>null===t||!!p(t)&&!!m(t.imageId)&&"type"in t,S=t=>!(!p(t)||!b(t.startPoint)||!b(t.endPoint)||t.startPoint.x==t.endPoint.x&&t.startPoint.y==t.endPoint.y),b=t=>!!p(t)&&!!m(t.x)&&!!m(t.y),I=t=>!!p(t)&&!!f(t.points)&&0!=t.points.length&&!t.points.some((t=>!b(t))),x=t=>!!p(t)&&!!f(t.points)&&0!=t.points.length&&4==t.points.length&&!t.points.some((t=>!b(t))),A=t=>!(!p(t)||!m(t.x)||!m(t.y)||!m(t.width)||t.width<0||!m(t.height)||t.height<0||"isMeasuredInPercentage"in t&&!g(t.isMeasuredInPercentage)),O=async(t,e)=>await new Promise(((i,r)=>{let n=new XMLHttpRequest;n.open("GET",t,!0),n.responseType=e,n.send(),n.onloadend=async()=>{n.status<200||n.status>=300?r(new Error(t+" "+n.status)):i(n.response)},n.onerror=()=>{r(new Error("Network Error: "+n.statusText))}})),R=t=>/^(https:\/\/www\.|http:\/\/www\.|https:\/\/|http:\/\/)|^[a-zA-Z0-9]{2,}(\.[a-zA-Z0-9]{2,})(\.[a-zA-Z0-9]{2,})?/.test(t),D=(t,e)=>{let i=t.split("."),r=e.split(".");for(let t=0;t{const e={},i={std:"dynamsoft-capture-vision-std",dip:"dynamsoft-image-processing",core:"dynamsoft-core",dnn:"dynamsoft-capture-vision-dnn",license:"dynamsoft-license",utility:"dynamsoft-utility",cvr:"dynamsoft-capture-vision-router",dbr:"dynamsoft-barcode-reader",dlr:"dynamsoft-label-recognizer",ddn:"dynamsoft-document-normalizer",dcp:"dynamsoft-code-parser",dcpd:"dynamsoft-code-parser",dlrData:"dynamsoft-label-recognizer-data",dce:"dynamsoft-camera-enhancer",ddv:"dynamsoft-document-viewer"};for(let r in t){if("rootDirectory"===r)continue;let n=r,s=t[n],o=s&&"object"==typeof s&&s.path?s.path:s,a=t.rootDirectory;if(a&&!a.endsWith("/")&&(a+="/"),"object"==typeof s&&s.isInternal)a&&(o=t[n].version?`${a}${i[n]}@${t[n].version}/dist/${"ddv"===n?"engine":""}`:`${a}${i[n]}/dist/${"ddv"===n?"engine":""}`);else{const i=/^@engineRootDirectory(\/?)/;if("string"==typeof o&&(o=o.replace(i,a||"")),"object"==typeof o&&"dwt"===n){const r=t[n].resourcesPath,s=t[n].serviceInstallerLocation;e[n]={resourcesPath:r.replace(i,a||""),serviceInstallerLocation:s.replace(i,a||"")};continue}}e[n]=u(o)}return e},M=async(t,e,i)=>await new Promise((async(r,n)=>{try{const n=e.split(".");let s=n[n.length-1];const o=await k(`image/${s}`,t);n.length<=1&&(s="png");const a=new File([o],e,{type:`image/${s}`});if(i){const t=URL.createObjectURL(a),i=document.createElement("a");i.href=t,i.download=e,i.click()}return r(a)}catch(t){return n()}})),F=t=>{C(t)&&(t=B(t));const e=document.createElement("canvas");return e.width=t.width,e.height=t.height,e.getContext("2d",{willReadFrequently:!0}).putImageData(t,0,0),e},P=(t,e)=>{C(e)&&(e=B(e));const i=F(e);let r=new Image,n=i.toDataURL(t);return r.src=n,r},k=async(t,e)=>{C(e)&&(e=B(e));const i=F(e);return new Promise(((e,r)=>{i.toBlob((t=>e(t)),t)}))},B=t=>{let e,i=t.bytes;if(!(i&&i instanceof Uint8Array))throw Error("Parameter type error");if(Number(t.format)===a.IPF_BGR_888){const t=i.length/3;e=new Uint8ClampedArray(4*t);for(let r=0;r=n)break;e[o]=e[o+1]=e[o+2]=(128&r)/128*255,e[o+3]=255,r<<=1}}}else if(Number(t.format)===a.IPF_ABGR_8888){const t=i.length/4;e=new Uint8ClampedArray(i.length);for(let r=0;r=n)break;e[o]=e[o+1]=e[o+2]=128&r?0:255,e[o+3]=255,r<<=1}}}return new ImageData(e,t.width,t.height)};var N,j,U,V,G,W,Y,H;let X,z,Z,q,K,J=class t{get _isFetchingStarted(){return r(this,G,"f")}constructor(){N.add(this),j.set(this,[]),U.set(this,1),V.set(this,s.BOPM_BLOCK),G.set(this,!1),W.set(this,void 0),Y.set(this,o.CCUT_AUTO)}setErrorListener(t){}addImageToBuffer(t){var e;if(!C(t))throw new TypeError("Invalid 'image'.");if((null===(e=t.tag)||void 0===e?void 0:e.hasOwnProperty("imageId"))&&"number"==typeof t.tag.imageId&&this.hasImage(t.tag.imageId))throw new Error("Existed imageId.");if(r(this,j,"f").length>=r(this,U,"f"))switch(r(this,V,"f")){case s.BOPM_BLOCK:break;case s.BOPM_UPDATE:if(r(this,j,"f").push(t),p(r(this,W,"f"))&&m(r(this,W,"f").imageId)&&1==r(this,W,"f").keepInBuffer)for(;r(this,j,"f").length>r(this,U,"f");){const t=r(this,j,"f").findIndex((t=>{var e;return(null===(e=t.tag)||void 0===e?void 0:e.imageId)!==r(this,W,"f").imageId}));r(this,j,"f").splice(t,1)}else r(this,j,"f").splice(0,r(this,j,"f").length-r(this,U,"f"))}else r(this,j,"f").push(t)}getImage(){if(0===r(this,j,"f").length)return null;let e;if(r(this,W,"f")&&m(r(this,W,"f").imageId)){const t=r(this,N,"m",H).call(this,r(this,W,"f").imageId);if(t<0)throw new Error(`Image with id ${r(this,W,"f").imageId} doesn't exist.`);e=r(this,j,"f").slice(t,t+1)[0]}else e=r(this,j,"f").pop();if([a.IPF_RGB_565,a.IPF_RGB_555,a.IPF_RGB_888,a.IPF_ARGB_8888,a.IPF_RGB_161616,a.IPF_ARGB_16161616,a.IPF_ABGR_8888,a.IPF_ABGR_16161616,a.IPF_BGR_888].includes(e.format)){if(r(this,Y,"f")===o.CCUT_RGB_R_CHANNEL_ONLY){t._onLog&&t._onLog("only get R channel data.");const i=new Uint8Array(e.width*e.height);for(let t=0;t0!==t.length&&t.every((t=>m(t))))(t))throw new TypeError("Invalid 'imageId'.");if(void 0!==e&&!g(e))throw new TypeError("Invalid 'keepInBuffer'.");n(this,W,{imageId:t,keepInBuffer:e},"f")}_resetNextReturnedImage(){n(this,W,null,"f")}hasImage(t){return r(this,N,"m",H).call(this,t)>=0}startFetching(){n(this,G,!0,"f")}stopFetching(){n(this,G,!1,"f")}setMaxImageCount(t){if("number"!=typeof t)throw new TypeError("Invalid 'count'.");if(t<1||Math.round(t)!==t)throw new Error("Invalid 'count'.");for(n(this,U,t,"f");r(this,j,"f")&&r(this,j,"f").length>t;)r(this,j,"f").shift()}getMaxImageCount(){return r(this,U,"f")}getImageCount(){return r(this,j,"f").length}clearBuffer(){r(this,j,"f").length=0}isBufferEmpty(){return 0===r(this,j,"f").length}setBufferOverflowProtectionMode(t){n(this,V,t,"f")}getBufferOverflowProtectionMode(){return r(this,V,"f")}setColourChannelUsageType(t){n(this,Y,t,"f")}getColourChannelUsageType(){return r(this,Y,"f")}};j=new WeakMap,U=new WeakMap,V=new WeakMap,G=new WeakMap,W=new WeakMap,Y=new WeakMap,N=new WeakSet,H=function(t){if("number"!=typeof t)throw new TypeError("Invalid 'imageId'.");return r(this,j,"f").findIndex((e=>{var i;return(null===(i=e.tag)||void 0===i?void 0:i.imageId)===t}))},"undefined"!=typeof navigator&&(X=navigator,z=X.userAgent,Z=X.platform,q=X.mediaDevices),function(){if(!h){const t={Edge:{search:"Edg",verSearch:"Edg"},OPR:null,Chrome:null,Safari:{str:X.vendor,search:"Apple",verSearch:["Version","iPhone OS","CPU OS"]},Firefox:null,Explorer:{search:"MSIE",verSearch:"MSIE"}},e={HarmonyOS:null,Android:null,iPhone:null,iPad:null,Windows:{str:Z,search:"Win"},Mac:{str:Z},Linux:{str:Z}};let i="unknownBrowser",r=0,n="unknownOS";for(let e in t){const n=t[e]||{};let s=n.str||z,o=n.search||e,a=n.verStr||z,h=n.verSearch||e;if(h instanceof Array||(h=[h]),-1!=s.indexOf(o)){i=e;for(let t of h){let e=a.indexOf(t);if(-1!=e){r=parseFloat(a.substring(e+t.length+1));break}}break}}for(let t in e){const i=e[t]||{};let r=i.str||z,s=i.search||t;if(-1!=r.indexOf(s)){n=t;break}}"Linux"==n&&-1!=z.indexOf("Windows NT")&&(n="HarmonyOS"),K={browser:i,version:r,OS:n}}h&&(K={browser:"ssr",version:0,OS:"ssr"})}();const Q="undefined"!=typeof WebAssembly&&z&&!(/Safari/.test(z)&&!/Chrome/.test(z)&&/\(.+\s11_2_([2-6]).*\)/.test(z)),$=!("undefined"==typeof Worker),tt=!(!q||!q.getUserMedia),et=async()=>{let t=!1;if(tt)try{(await q.getUserMedia({video:!0})).getTracks().forEach((t=>{t.stop()})),t=!0}catch(t){}return t};"Chrome"===K.browser&&K.version>66||"Safari"===K.browser&&K.version>13||"OPR"===K.browser&&K.version>43||"Edge"===K.browser&&K.version;const it={},rt=async t=>{let e="string"==typeof t?[t]:t,r=[];for(let t of e)r.push(it[t]=it[t]||new i);await Promise.all(r)},nt=async(t,e)=>{let r,n="string"==typeof t?[t]:t,s=[];for(let t of n){let n;s.push(n=it[t]=it[t]||new i(r=r||e())),n.isEmpty&&(n.task=r=r||e())}await Promise.all(s)};let st,ot=0;const at=()=>ot++,ht={};let lt;const ct=t=>{lt=t,st&&st.postMessage({type:"setBLog",body:{value:!!t}})};let ut=!1;const dt=t=>{ut=t,st&&st.postMessage({type:"setBDebug",body:{value:!!t}})},ft={},gt={},mt={dip:{wasm:!0}},pt={std:{version:"1.4.21",path:u(c+"../../dynamsoft-capture-vision-std@1.4.21/dist/"),isInternal:!0},core:{version:"3.4.31",path:c,isInternal:!0}},_t=async t=>{let e;t instanceof Array||(t=t?[t]:[]);let r=it.core;e=!r||r.isEmpty;let n=new Map;const s=t=>{if("std"==(t=t.toLowerCase())||"core"==t)return;if(!mt[t])throw Error("The '"+t+"' module cannot be found.");let e=mt[t].deps;if(null==e?void 0:e.length)for(let t of e)s(t);let i=it[t];n.has(t)||n.set(t,!i||i.isEmpty)};for(let e of t)s(e);let o=[];e&&o.push("core"),o.push(...n.keys());const a=[...n.entries()].filter((t=>!t[1])).map((t=>t[0]));await nt(o,(async()=>{const t=[...n.entries()].filter((t=>t[1])).map((t=>t[0]));await rt(a);const r=L(pt),s={};for(let e of t)s[e]=mt[e];const o={engineResourcePaths:r,autoResources:s,names:t};let h=new i;if(e){o.needLoadCore=!0;let t=r.core+vt._workerName;t.startsWith(location.origin)||(t=await fetch(t).then((t=>t.blob())).then((t=>URL.createObjectURL(t)))),st=new Worker(t),st.onerror=t=>{let e=new Error(t.message);h.reject(e)},st.addEventListener("message",(t=>{let e=t.data?t.data:t,i=e.type,r=e.id,n=e.body;switch(i){case"log":lt&<(e.message);break;case"task":try{ht[r](n),delete ht[r]}catch(t){throw delete ht[r],t}break;case"event":try{ht[r](n)}catch(t){throw t}break;default:console.log(t)}})),o.bLog=!!lt,o.bd=ut,o.dm=location.origin.startsWith("http")?location.origin:"https://localhost"}else await rt("core");let l=ot++;ht[l]=t=>{if(t.success)Object.assign(ft,t.versions),"{}"!==JSON.stringify(t.versions)&&(vt._versions=t.versions),h.resolve(void 0);else{const e=Error(t.message);t.stack&&(e.stack=t.stack),h.reject(e)}},st.postMessage({type:"loadWasm",body:o,id:l}),await h}))};class vt{static get engineResourcePaths(){return pt}static set engineResourcePaths(t){Object.assign(pt,t)}static get bSupportDce4Module(){return this._bSupportDce4Module}static get bSupportIRTModule(){return this._bSupportIRTModule}static get versions(){return this._versions}static get _onLog(){return lt}static set _onLog(t){ct(t)}static get _bDebug(){return ut}static set _bDebug(t){dt(t)}static isModuleLoaded(t){return t=(t=t||"core").toLowerCase(),!!it[t]&&it[t].isFulfilled}static async loadWasm(t){return await _t(t)}static async detectEnvironment(){return await(async()=>({wasm:Q,worker:$,getUserMedia:tt,camera:await et(),browser:K.browser,version:K.version,OS:K.OS}))()}static async getModuleVersion(){return await new Promise(((t,e)=>{let i=at();ht[i]=async i=>{if(i.success)return t(i.versions);{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},st.postMessage({type:"getModuleVersion",id:i})}))}static getVersion(){return`3.4.31(Worker: ${ft.core&&ft.core.worker||"Not Loaded"}, Wasm: ${ft.core&&ft.core.wasm||"Not Loaded"})`}static enableLogging(){J._onLog=console.log,vt._onLog=console.log}static disableLogging(){J._onLog=null,vt._onLog=null}static async cfd(t){return await new Promise(((e,i)=>{let r=at();ht[r]=async t=>{if(t.success)return e();{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},st.postMessage({type:"cfd",id:r,body:{count:t}})}))}}var yt,wt,Ct,Et,Tt,St,bt,It,xt;vt._bSupportDce4Module=-1,vt._bSupportIRTModule=-1,vt._versions=null,vt._workerName="core.worker.js",vt.browserInfo=K,function(t){t[t.CRIT_ORIGINAL_IMAGE=1]="CRIT_ORIGINAL_IMAGE",t[t.CRIT_BARCODE=2]="CRIT_BARCODE",t[t.CRIT_TEXT_LINE=4]="CRIT_TEXT_LINE",t[t.CRIT_DETECTED_QUAD=8]="CRIT_DETECTED_QUAD",t[t.CRIT_NORMALIZED_IMAGE=16]="CRIT_NORMALIZED_IMAGE",t[t.CRIT_PARSED_RESULT=32]="CRIT_PARSED_RESULT"}(yt||(yt={})),function(t){t[t.CT_NORMAL_INTERSECTED=0]="CT_NORMAL_INTERSECTED",t[t.CT_T_INTERSECTED=1]="CT_T_INTERSECTED",t[t.CT_CROSS_INTERSECTED=2]="CT_CROSS_INTERSECTED",t[t.CT_NOT_INTERSECTED=3]="CT_NOT_INTERSECTED"}(wt||(wt={})),function(t){t[t.EC_OK=0]="EC_OK",t[t.EC_UNKNOWN=-1e4]="EC_UNKNOWN",t[t.EC_NO_MEMORY=-10001]="EC_NO_MEMORY",t[t.EC_NULL_POINTER=-10002]="EC_NULL_POINTER",t[t.EC_LICENSE_INVALID=-10003]="EC_LICENSE_INVALID",t[t.EC_LICENSE_EXPIRED=-10004]="EC_LICENSE_EXPIRED",t[t.EC_FILE_NOT_FOUND=-10005]="EC_FILE_NOT_FOUND",t[t.EC_FILE_TYPE_NOT_SUPPORTED=-10006]="EC_FILE_TYPE_NOT_SUPPORTED",t[t.EC_BPP_NOT_SUPPORTED=-10007]="EC_BPP_NOT_SUPPORTED",t[t.EC_INDEX_INVALID=-10008]="EC_INDEX_INVALID",t[t.EC_CUSTOM_REGION_INVALID=-10010]="EC_CUSTOM_REGION_INVALID",t[t.EC_IMAGE_READ_FAILED=-10012]="EC_IMAGE_READ_FAILED",t[t.EC_TIFF_READ_FAILED=-10013]="EC_TIFF_READ_FAILED",t[t.EC_DIB_BUFFER_INVALID=-10018]="EC_DIB_BUFFER_INVALID",t[t.EC_PDF_READ_FAILED=-10021]="EC_PDF_READ_FAILED",t[t.EC_PDF_DLL_MISSING=-10022]="EC_PDF_DLL_MISSING",t[t.EC_PAGE_NUMBER_INVALID=-10023]="EC_PAGE_NUMBER_INVALID",t[t.EC_CUSTOM_SIZE_INVALID=-10024]="EC_CUSTOM_SIZE_INVALID",t[t.EC_TIMEOUT=-10026]="EC_TIMEOUT",t[t.EC_JSON_PARSE_FAILED=-10030]="EC_JSON_PARSE_FAILED",t[t.EC_JSON_TYPE_INVALID=-10031]="EC_JSON_TYPE_INVALID",t[t.EC_JSON_KEY_INVALID=-10032]="EC_JSON_KEY_INVALID",t[t.EC_JSON_VALUE_INVALID=-10033]="EC_JSON_VALUE_INVALID",t[t.EC_JSON_NAME_KEY_MISSING=-10034]="EC_JSON_NAME_KEY_MISSING",t[t.EC_JSON_NAME_VALUE_DUPLICATED=-10035]="EC_JSON_NAME_VALUE_DUPLICATED",t[t.EC_TEMPLATE_NAME_INVALID=-10036]="EC_TEMPLATE_NAME_INVALID",t[t.EC_JSON_NAME_REFERENCE_INVALID=-10037]="EC_JSON_NAME_REFERENCE_INVALID",t[t.EC_PARAMETER_VALUE_INVALID=-10038]="EC_PARAMETER_VALUE_INVALID",t[t.EC_DOMAIN_NOT_MATCH=-10039]="EC_DOMAIN_NOT_MATCH",t[t.EC_RESERVED_INFO_NOT_MATCH=-10040]="EC_RESERVED_INFO_NOT_MATCH",t[t.EC_LICENSE_KEY_NOT_MATCH=-10043]="EC_LICENSE_KEY_NOT_MATCH",t[t.EC_REQUEST_FAILED=-10044]="EC_REQUEST_FAILED",t[t.EC_LICENSE_INIT_FAILED=-10045]="EC_LICENSE_INIT_FAILED",t[t.EC_SET_MODE_ARGUMENT_ERROR=-10051]="EC_SET_MODE_ARGUMENT_ERROR",t[t.EC_LICENSE_CONTENT_INVALID=-10052]="EC_LICENSE_CONTENT_INVALID",t[t.EC_LICENSE_KEY_INVALID=-10053]="EC_LICENSE_KEY_INVALID",t[t.EC_LICENSE_DEVICE_RUNS_OUT=-10054]="EC_LICENSE_DEVICE_RUNS_OUT",t[t.EC_GET_MODE_ARGUMENT_ERROR=-10055]="EC_GET_MODE_ARGUMENT_ERROR",t[t.EC_IRT_LICENSE_INVALID=-10056]="EC_IRT_LICENSE_INVALID",t[t.EC_FILE_SAVE_FAILED=-10058]="EC_FILE_SAVE_FAILED",t[t.EC_STAGE_TYPE_INVALID=-10059]="EC_STAGE_TYPE_INVALID",t[t.EC_IMAGE_ORIENTATION_INVALID=-10060]="EC_IMAGE_ORIENTATION_INVALID",t[t.EC_CONVERT_COMPLEX_TEMPLATE_ERROR=-10061]="EC_CONVERT_COMPLEX_TEMPLATE_ERROR",t[t.EC_CALL_REJECTED_WHEN_CAPTURING=-10062]="EC_CALL_REJECTED_WHEN_CAPTURING",t[t.EC_NO_IMAGE_SOURCE=-10063]="EC_NO_IMAGE_SOURCE",t[t.EC_READ_DIRECTORY_FAILED=-10064]="EC_READ_DIRECTORY_FAILED",t[t.EC_MODULE_NOT_FOUND=-10065]="EC_MODULE_NOT_FOUND",t[t.EC_MULTI_PAGES_NOT_SUPPORTED=-10066]="EC_MULTI_PAGES_NOT_SUPPORTED",t[t.EC_FILE_ALREADY_EXISTS=-10067]="EC_FILE_ALREADY_EXISTS",t[t.EC_CREATE_FILE_FAILED=-10068]="EC_CREATE_FILE_FAILED",t[t.EC_IMGAE_DATA_INVALID=-10069]="EC_IMGAE_DATA_INVALID",t[t.EC_IMAGE_SIZE_NOT_MATCH=-10070]="EC_IMAGE_SIZE_NOT_MATCH",t[t.EC_IMAGE_PIXEL_FORMAT_NOT_MATCH=-10071]="EC_IMAGE_PIXEL_FORMAT_NOT_MATCH",t[t.EC_SECTION_LEVEL_RESULT_IRREPLACEABLE=-10072]="EC_SECTION_LEVEL_RESULT_IRREPLACEABLE",t[t.EC_AXIS_DEFINITION_INCORRECT=-10073]="EC_AXIS_DEFINITION_INCORRECT",t[t.EC_RESULT_TYPE_MISMATCH_IRREPLACEABLE=-10074]="EC_RESULT_TYPE_MISMATCH_IRREPLACEABLE",t[t.EC_PDF_LIBRARY_LOAD_FAILED=-10075]="EC_PDF_LIBRARY_LOAD_FAILED",t[t.EC_NO_LICENSE=-2e4]="EC_NO_LICENSE",t[t.EC_HANDSHAKE_CODE_INVALID=-20001]="EC_HANDSHAKE_CODE_INVALID",t[t.EC_LICENSE_BUFFER_FAILED=-20002]="EC_LICENSE_BUFFER_FAILED",t[t.EC_LICENSE_SYNC_FAILED=-20003]="EC_LICENSE_SYNC_FAILED",t[t.EC_DEVICE_NOT_MATCH=-20004]="EC_DEVICE_NOT_MATCH",t[t.EC_BIND_DEVICE_FAILED=-20005]="EC_BIND_DEVICE_FAILED",t[t.EC_INSTANCE_COUNT_OVER_LIMIT=-20008]="EC_INSTANCE_COUNT_OVER_LIMIT",t[t.EC_LICENSE_INIT_SEQUENCE_FAILED=-20009]="EC_LICENSE_INIT_SEQUENCE_FAILED",t[t.EC_TRIAL_LICENSE=-20010]="EC_TRIAL_LICENSE",t[t.EC_FAILED_TO_REACH_DLS=-20200]="EC_FAILED_TO_REACH_DLS",t[t.EC_LICENSE_CACHE_USED=-20012]="EC_LICENSE_CACHE_USED",t[t.EC_BARCODE_FORMAT_INVALID=-30009]="EC_BARCODE_FORMAT_INVALID",t[t.EC_QR_LICENSE_INVALID=-30016]="EC_QR_LICENSE_INVALID",t[t.EC_1D_LICENSE_INVALID=-30017]="EC_1D_LICENSE_INVALID",t[t.EC_PDF417_LICENSE_INVALID=-30019]="EC_PDF417_LICENSE_INVALID",t[t.EC_DATAMATRIX_LICENSE_INVALID=-30020]="EC_DATAMATRIX_LICENSE_INVALID",t[t.EC_CUSTOM_MODULESIZE_INVALID=-30025]="EC_CUSTOM_MODULESIZE_INVALID",t[t.EC_AZTEC_LICENSE_INVALID=-30041]="EC_AZTEC_LICENSE_INVALID",t[t.EC_PATCHCODE_LICENSE_INVALID=-30046]="EC_PATCHCODE_LICENSE_INVALID",t[t.EC_POSTALCODE_LICENSE_INVALID=-30047]="EC_POSTALCODE_LICENSE_INVALID",t[t.EC_DPM_LICENSE_INVALID=-30048]="EC_DPM_LICENSE_INVALID",t[t.EC_FRAME_DECODING_THREAD_EXISTS=-30049]="EC_FRAME_DECODING_THREAD_EXISTS",t[t.EC_STOP_DECODING_THREAD_FAILED=-30050]="EC_STOP_DECODING_THREAD_FAILED",t[t.EC_MAXICODE_LICENSE_INVALID=-30057]="EC_MAXICODE_LICENSE_INVALID",t[t.EC_GS1_DATABAR_LICENSE_INVALID=-30058]="EC_GS1_DATABAR_LICENSE_INVALID",t[t.EC_GS1_COMPOSITE_LICENSE_INVALID=-30059]="EC_GS1_COMPOSITE_LICENSE_INVALID",t[t.EC_DOTCODE_LICENSE_INVALID=-30061]="EC_DOTCODE_LICENSE_INVALID",t[t.EC_PHARMACODE_LICENSE_INVALID=-30062]="EC_PHARMACODE_LICENSE_INVALID",t[t.EC_CHARACTER_MODEL_FILE_NOT_FOUND=-40100]="EC_CHARACTER_MODEL_FILE_NOT_FOUND",t[t.EC_TEXT_LINE_GROUP_LAYOUT_CONFLICT=-40101]="EC_TEXT_LINE_GROUP_LAYOUT_CONFLICT",t[t.EC_TEXT_LINE_GROUP_REGEX_CONFLICT=-40102]="EC_TEXT_LINE_GROUP_REGEX_CONFLICT",t[t.EC_QUADRILATERAL_INVALID=-50057]="EC_QUADRILATERAL_INVALID",t[t.EC_PANORAMA_LICENSE_INVALID=-70060]="EC_PANORAMA_LICENSE_INVALID",t[t.EC_RESOURCE_PATH_NOT_EXIST=-90001]="EC_RESOURCE_PATH_NOT_EXIST",t[t.EC_RESOURCE_LOAD_FAILED=-90002]="EC_RESOURCE_LOAD_FAILED",t[t.EC_CODE_SPECIFICATION_NOT_FOUND=-90003]="EC_CODE_SPECIFICATION_NOT_FOUND",t[t.EC_FULL_CODE_EMPTY=-90004]="EC_FULL_CODE_EMPTY",t[t.EC_FULL_CODE_PREPROCESS_FAILED=-90005]="EC_FULL_CODE_PREPROCESS_FAILED",t[t.EC_ZA_DL_LICENSE_INVALID=-90006]="EC_ZA_DL_LICENSE_INVALID",t[t.EC_AAMVA_DL_ID_LICENSE_INVALID=-90007]="EC_AAMVA_DL_ID_LICENSE_INVALID",t[t.EC_AADHAAR_LICENSE_INVALID=-90008]="EC_AADHAAR_LICENSE_INVALID",t[t.EC_MRTD_LICENSE_INVALID=-90009]="EC_MRTD_LICENSE_INVALID",t[t.EC_VIN_LICENSE_INVALID=-90010]="EC_VIN_LICENSE_INVALID",t[t.EC_CUSTOMIZED_CODE_TYPE_LICENSE_INVALID=-90011]="EC_CUSTOMIZED_CODE_TYPE_LICENSE_INVALID",t[t.EC_LICENSE_WARNING=-10076]="EC_LICENSE_WARNING",t[t.EC_BARCODE_READER_LICENSE_NOT_FOUND=-30063]="EC_BARCODE_READER_LICENSE_NOT_FOUND",t[t.EC_LABEL_RECOGNIZER_LICENSE_NOT_FOUND=-40103]="EC_LABEL_RECOGNIZER_LICENSE_NOT_FOUND",t[t.EC_DOCUMENT_NORMALIZER_LICENSE_NOT_FOUND=-50058]="EC_DOCUMENT_NORMALIZER_LICENSE_NOT_FOUND",t[t.EC_CODE_PARSER_LICENSE_NOT_FOUND=-90012]="EC_CODE_PARSER_LICENSE_NOT_FOUND"}(Ct||(Ct={})),function(t){t[t.GEM_SKIP=0]="GEM_SKIP",t[t.GEM_AUTO=1]="GEM_AUTO",t[t.GEM_GENERAL=2]="GEM_GENERAL",t[t.GEM_GRAY_EQUALIZE=4]="GEM_GRAY_EQUALIZE",t[t.GEM_GRAY_SMOOTH=8]="GEM_GRAY_SMOOTH",t[t.GEM_SHARPEN_SMOOTH=16]="GEM_SHARPEN_SMOOTH",t[t.GEM_REV=-2147483648]="GEM_REV"}(Et||(Et={})),function(t){t[t.GTM_SKIP=0]="GTM_SKIP",t[t.GTM_INVERTED=1]="GTM_INVERTED",t[t.GTM_ORIGINAL=2]="GTM_ORIGINAL",t[t.GTM_AUTO=4]="GTM_AUTO",t[t.GTM_REV=-2147483648]="GTM_REV"}(Tt||(Tt={})),function(t){t[t.ITT_FILE_IMAGE=0]="ITT_FILE_IMAGE",t[t.ITT_VIDEO_FRAME=1]="ITT_VIDEO_FRAME"}(St||(St={})),function(t){t[t.PDFRM_VECTOR=1]="PDFRM_VECTOR",t[t.PDFRM_RASTER=2]="PDFRM_RASTER",t[t.PDFRM_REV=-2147483648]="PDFRM_REV"}(bt||(bt={})),function(t){t[t.RDS_RASTERIZED_PAGES=0]="RDS_RASTERIZED_PAGES",t[t.RDS_EXTRACTED_IMAGES=1]="RDS_EXTRACTED_IMAGES"}(It||(It={})),function(t){t[t.CVS_NOT_VERIFIED=0]="CVS_NOT_VERIFIED",t[t.CVS_PASSED=1]="CVS_PASSED",t[t.CVS_FAILED=2]="CVS_FAILED"}(xt||(xt={}));const At={IRUT_NULL:BigInt(0),IRUT_COLOUR_IMAGE:BigInt(1),IRUT_SCALED_DOWN_COLOUR_IMAGE:BigInt(2),IRUT_GRAYSCALE_IMAGE:BigInt(4),IRUT_TRANSOFORMED_GRAYSCALE_IMAGE:BigInt(8),IRUT_ENHANCED_GRAYSCALE_IMAGE:BigInt(16),IRUT_PREDETECTED_REGIONS:BigInt(32),IRUT_BINARY_IMAGE:BigInt(64),IRUT_TEXTURE_DETECTION_RESULT:BigInt(128),IRUT_TEXTURE_REMOVED_GRAYSCALE_IMAGE:BigInt(256),IRUT_TEXTURE_REMOVED_BINARY_IMAGE:BigInt(512),IRUT_CONTOURS:BigInt(1024),IRUT_LINE_SEGMENTS:BigInt(2048),IRUT_TEXT_ZONES:BigInt(4096),IRUT_TEXT_REMOVED_BINARY_IMAGE:BigInt(8192),IRUT_CANDIDATE_BARCODE_ZONES:BigInt(16384),IRUT_LOCALIZED_BARCODES:BigInt(32768),IRUT_SCALED_UP_BARCODE_IMAGE:BigInt(65536),IRUT_DEFORMATION_RESISTED_BARCODE_IMAGE:BigInt(1<<17),IRUT_COMPLEMENTED_BARCODE_IMAGE:BigInt(1<<18),IRUT_DECODED_BARCODES:BigInt(1<<19),IRUT_LONG_LINES:BigInt(1<<20),IRUT_CORNERS:BigInt(1<<21),IRUT_CANDIDATE_QUAD_EDGES:BigInt(1<<22),IRUT_DETECTED_QUADS:BigInt(1<<23),IRUT_LOCALIZED_TEXT_LINES:BigInt(1<<24),IRUT_RECOGNIZED_TEXT_LINES:BigInt(1<<25),IRUT_NORMALIZED_IMAGES:BigInt(1<<26),IRUT_SHORT_LINES:BigInt(1<<27),IRUT_RAW_TEXT_LINES:BigInt(1<<28),IRUT_LOGIC_LINES:BigInt(1<<29),IRUT_ALL:BigInt("0xFFFFFFFFFFFFFFFF")};var Ot,Rt;!function(t){t[t.ROET_PREDETECTED_REGION=0]="ROET_PREDETECTED_REGION",t[t.ROET_LOCALIZED_BARCODE=1]="ROET_LOCALIZED_BARCODE",t[t.ROET_DECODED_BARCODE=2]="ROET_DECODED_BARCODE",t[t.ROET_LOCALIZED_TEXT_LINE=3]="ROET_LOCALIZED_TEXT_LINE",t[t.ROET_RECOGNIZED_TEXT_LINE=4]="ROET_RECOGNIZED_TEXT_LINE",t[t.ROET_DETECTED_QUAD=5]="ROET_DETECTED_QUAD",t[t.ROET_NORMALIZED_IMAGE=6]="ROET_NORMALIZED_IMAGE",t[t.ROET_SOURCE_IMAGE=7]="ROET_SOURCE_IMAGE",t[t.ROET_TARGET_ROI=8]="ROET_TARGET_ROI"}(Ot||(Ot={})),function(t){t[t.ST_NULL=0]="ST_NULL",t[t.ST_REGION_PREDETECTION=1]="ST_REGION_PREDETECTION",t[t.ST_BARCODE_LOCALIZATION=2]="ST_BARCODE_LOCALIZATION",t[t.ST_BARCODE_DECODING=3]="ST_BARCODE_DECODING",t[t.ST_TEXT_LINE_LOCALIZATION=4]="ST_TEXT_LINE_LOCALIZATION",t[t.ST_TEXT_LINE_RECOGNITION=5]="ST_TEXT_LINE_RECOGNITION",t[t.ST_DOCUMENT_DETECTION=6]="ST_DOCUMENT_DETECTION",t[t.ST_DOCUMENT_NORMALIZATION=7]="ST_DOCUMENT_NORMALIZATION"}(Rt||(Rt={}));let Dt="./";if(document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}Dt=t.substring(0,t.lastIndexOf("/")+1)}function Lt(t,e,i,r){if("a"===i&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?r:"a"===i?r.call(t):r?r.value:e.get(t)}function Mt(t,e,i,r,n){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?n.call(t,i):n?n.value=i:e.set(t,i),i}vt.engineResourcePaths={rootDirectory:(t=>{null==t&&(t="./");let e=document.createElement("a");return e.href=t,(t=e.href).endsWith("/")||(t+="/"),t})(Dt+"../../")},"function"==typeof SuppressedError&&SuppressedError;const Ft=t=>t&&"object"==typeof t&&"function"==typeof t.then,Pt=(async()=>{})().constructor;class kt extends Pt{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(t){let e;this._task=t,Ft(t)?e=t:"function"==typeof t&&(e=new Pt(t)),e&&(async()=>{try{const i=await e;t===this._task&&this.resolve(i)}catch(e){t===this._task&&this.reject(e)}})()}get isEmpty(){return null==this._task}constructor(t){let e,i;super(((t,r)=>{e=t,i=r})),this._s="pending",this.resolve=t=>{this.isPending&&(Ft(t)?this.task=t:(this._s="fulfilled",e(t)))},this.reject=t=>{this.isPending&&(this._s="rejected",i(t))},this.task=t}}class Bt{constructor(t){this._cvr=t}async getMaxBufferedItems(){return await new Promise(((t,e)=>{let i=at();ht[i]=async i=>{if(i.success)return t(i.count);{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},st.postMessage({type:"cvr_getMaxBufferedItems",id:i,instanceID:this._cvr._instanceID})}))}async setMaxBufferedItems(t){return await new Promise(((e,i)=>{let r=at();ht[r]=async t=>{if(t.success)return e();{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},st.postMessage({type:"cvr_setMaxBufferedItems",id:r,instanceID:this._cvr._instanceID,body:{count:t}})}))}async getBufferedCharacterItemSet(){return await new Promise(((t,e)=>{let i=at();ht[i]=async i=>{if(i.success)return t(i.itemSet);{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},st.postMessage({type:"cvr_getBufferedCharacterItemSet",id:i,instanceID:this._cvr._instanceID})}))}}var Nt={onTaskResultsReceived:!1,onTaskResultsReceivedForDce:!1,onPredetectedRegionsReceived:!1,onLocalizedBarcodesReceived:!1,onDecodedBarcodesReceived:!1,onLocalizedTextLinesReceived:!1,onRecognizedTextLinesReceived:!1,onDetectedQuadsReceived:!1,onNormalizedImagesReceived:!1,onColourImageUnitReceived:!1,onScaledDownColourImageUnitReceived:!1,onGrayscaleImageUnitReceived:!1,onTransformedGrayscaleImageUnitReceived:!1,onEnhancedGrayscaleImageUnitReceived:!1,onBinaryImageUnitReceived:!1,onTextureDetectionResultUnitReceived:!1,onTextureRemovedGrayscaleImageUnitReceived:!1,onTextureRemovedBinaryImageUnitReceived:!1,onContoursUnitReceived:!1,onLineSegmentsUnitReceived:!1,onTextZonesUnitReceived:!1,onTextRemovedBinaryImageUnitReceived:!1,onRawTextLinesReceived:!1,onLongLinesUnitReceived:!1,onCornersUnitReceived:!1,onCandidateQuadEdgesUnitReceived:!1,onCandidateBarcodeZonesUnitReceived:!1,onScaledUpBarcodeImageUnitReceived:!1,onDeformationResistedBarcodeImageUnitReceived:!1,onComplementedBarcodeImageUnitReceived:!1,onShortLinesUnitReceived:!1,onLogicLinesReceived:!1};const jt=t=>{for(let e in t._irrRegistryState)t._irrRegistryState[e]=!1;for(let e of t._intermediateResultReceiverSet)if(e.isDce||e.isFilter)t._irrRegistryState.onTaskResultsReceivedForDce=!0;else for(let i in e)t._irrRegistryState[i]||(t._irrRegistryState[i]=!!e[i])};class Ut{constructor(t){this._irrRegistryState=Nt,this._intermediateResultReceiverSet=new Set,this._cvr=t}async addResultReceiver(t){if("object"!=typeof t)throw new Error("Invalid receiver.");this._intermediateResultReceiverSet.add(t),jt(this);let e=-1,i={};if(!t.isDce&&!t.isFilter){if(!t._observedResultUnitTypes||!t._observedTaskMap)throw new Error("Invalid Intermediate Result Receiver.");e=t._observedResultUnitTypes,t._observedTaskMap.forEach(((t,e)=>{i[e]=t})),t._observedTaskMap.clear()}return await new Promise(((t,r)=>{let n=at();ht[n]=async e=>{if(e.success)return t();{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,r(t)}},st.postMessage({type:"cvr_setIrrRegistry",id:n,instanceID:this._cvr._instanceID,body:{receiverObj:this._irrRegistryState,observedResultUnitTypes:e.toString(),observedTaskMap:i}})}))}async removeResultReceiver(t){return this._intermediateResultReceiverSet.delete(t),jt(this),await new Promise(((t,e)=>{let i=at();ht[i]=async i=>{if(i.success)return t();{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},st.postMessage({type:"cvr_setIrrRegistry",id:i,instanceID:this._cvr._instanceID,body:{receiverObj:this._irrRegistryState}})}))}getOriginalImage(){return this._cvr._dsImage}}const Vt="undefined"==typeof self,Gt="function"==typeof importScripts,Wt=(()=>{if(!Gt){if(!Vt&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),Yt=t=>{if(null==t&&(t="./"),Vt||Gt);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t};var Ht;vt.engineResourcePaths.cvr={version:"2.4.33",path:Wt,isInternal:!0},mt.cvr={js:!0,wasm:!0,deps:["license","dip"]},gt.cvr={};const Xt="1.4.21";"string"!=typeof vt.engineResourcePaths.std&&D(vt.engineResourcePaths.std.version,Xt)<0&&(vt.engineResourcePaths.std={version:Xt,path:Yt(Wt+`../../dynamsoft-capture-vision-std@${Xt}/dist/`),isInternal:!0});const zt="2.4.31";(!vt.engineResourcePaths.dip||"string"!=typeof vt.engineResourcePaths.dip&&D(vt.engineResourcePaths.dip.version,zt)<0)&&(vt.engineResourcePaths.dip={version:zt,path:Yt(Wt+`../../dynamsoft-image-processing@${zt}/dist/`),isInternal:!0});class Zt{static getVersion(){return this._version}}Zt._version=`2.4.33(Worker: ${null===(Ht=ft.cvr)||void 0===Ht?void 0:Ht.worker}, Wasm: loading...`;const qt={barcodeResultItems:{type:yt.CRIT_BARCODE,reveiver:"onDecodedBarcodesReceived",isNeedFilter:!0},textLineResultItems:{type:yt.CRIT_TEXT_LINE,reveiver:"onRecognizedTextLinesReceived",isNeedFilter:!0},detectedQuadResultItems:{type:yt.CRIT_DETECTED_QUAD,reveiver:"onDetectedQuadsReceived",isNeedFilter:!1},normalizedImageResultItems:{type:yt.CRIT_NORMALIZED_IMAGE,reveiver:"onNormalizedImagesReceived",isNeedFilter:!1},parsedResultItems:{type:yt.CRIT_PARSED_RESULT,reveiver:"onParsedResultsReceived",isNeedFilter:!1}};var Kt,Jt,Qt,$t,te,ee,ie,re,ne,se,oe,ae,he;function le(t,e){if(t&&t.location){const i=t.location.points;for(let t of i)t.x=t.x/e,t.y=t.y/e;le(t.referencedItem,e)}}function ce(t){if(t.disposed)throw new Error('"CaptureVisionRouter" instance has been disposed')}!function(t){t[t.ISS_BUFFER_EMPTY=0]="ISS_BUFFER_EMPTY",t[t.ISS_EXHAUSTED=1]="ISS_EXHAUSTED"}(Kt||(Kt={}));const ue={onTaskResultsReceived:()=>{},isFilter:!0};class de{constructor(){this.maxImageSideLength=["iPhone","Android","HarmonyOS"].includes(vt.browserInfo.OS)?2048:4096,this._instanceID=void 0,this._dsImage=null,this._isPauseScan=!0,this._isOutputOriginalImage=!1,this._isOpenDetectVerify=!1,this._isOpenNormalizeVerify=!1,this._isOpenBarcodeVerify=!1,this._isOpenLabelVerify=!1,this._minImageCaptureInterval=0,this._averageProcessintTimeArray=[],this._averageFetchImageTimeArray=[],this._currentSettings=null,this._averageTime=999,Jt.set(this,null),Qt.set(this,null),$t.set(this,null),te.set(this,null),ee.set(this,null),ie.set(this,new Set),re.set(this,new Set),ne.set(this,new Set),se.set(this,0),oe.set(this,!1),ae.set(this,!1),he.set(this,!1),this._singleFrameModeCallbackBind=this._singleFrameModeCallback.bind(this)}get disposed(){return Lt(this,he,"f")}static async createInstance(){if(!gt.license)throw Error("Module `license` is not existed.");await gt.license.dynamsoft(),await _t(["cvr"]);const t=new de,e=new kt;let i=at();return ht[i]=async i=>{var r;if(i.success)t._instanceID=i.instanceID,t._currentSettings=JSON.parse(JSON.parse(i.outputSettings).data),Zt._version=`2.4.33(Worker: ${null===(r=ft.cvr)||void 0===r?void 0:r.worker}, Wasm: ${i.version})`,Mt(t,ae,!0,"f"),Mt(t,te,t.getIntermediateResultManager(),"f"),Mt(t,ae,!1,"f"),e.resolve(t);else{const t=Error(i.message);i.stack&&(t.stack=i.stack),e.reject(t)}},st.postMessage({type:"cvr_createInstance",id:i}),e}async _singleFrameModeCallback(t){for(let e of Lt(this,ie,"f"))this._isOutputOriginalImage&&e.onOriginalImageResultReceived&&e.onOriginalImageResultReceived({imageData:t});const e={bytes:new Uint8Array(t.bytes),width:t.width,height:t.height,stride:t.stride,format:t.format,tag:t.tag};this._templateName||(this._templateName=this._currentSettings.CaptureVisionTemplates[0].Name);const i=await this.capture(e,this._templateName);i.originalImageTag=t.tag;const r={originalImageHashId:i.originalImageHashId,originalImageTag:i.originalImageTag,errorCode:i.errorCode,errorString:i.errorString};for(let t of Lt(this,ie,"f"))if(t.isDce)t.onCapturedResultReceived(i,{isDetectVerifyOpen:!1,isNormalizeVerifyOpen:!1,isBarcodeVerifyOpen:!1,isLabelVerifyOpen:!1});else{for(let e in qt){const n=e,s=qt[n];t[s.reveiver]&&i[n]&&t[s.reveiver](Object.assign(Object.assign({},r),{[n]:i[n]}))}t.onCapturedResultReceived&&t.onCapturedResultReceived(i)}}setInput(t){if(ce(this),t){if(Mt(this,Jt,t,"f"),t.isCameraEnhancer){Lt(this,te,"f")&&(Lt(this,Jt,"f")._intermediateResultReceiver.isDce=!0,Lt(this,te,"f").addResultReceiver(Lt(this,Jt,"f")._intermediateResultReceiver));const t=Lt(this,Jt,"f").getCameraView();if(t){const e=t._capturedResultReceiver;e.isDce=!0,Lt(this,ie,"f").add(e)}}}else Mt(this,Jt,null,"f")}getInput(){return Lt(this,Jt,"f")}addImageSourceStateListener(t){if(ce(this),"object"!=typeof t)return console.warn("Invalid ISA state listener.");t&&Object.keys(t)&&Lt(this,re,"f").add(t)}removeImageSourceStateListener(t){return ce(this),Lt(this,re,"f").delete(t)}addResultReceiver(t){if(ce(this),"object"!=typeof t)throw new Error("Invalid receiver.");t&&Object.keys(t).length&&(Lt(this,ie,"f").add(t),this._setCrrRegistry())}removeResultReceiver(t){ce(this),Lt(this,ie,"f").delete(t),this._setCrrRegistry()}async _setCrrRegistry(){const t={onCapturedResultReceived:!1,onDecodedBarcodesReceived:!1,onRecognizedTextLinesReceived:!1,onDetectedQuadsReceived:!1,onNormalizedImagesReceived:!1,onParsedResultsReceived:!1};for(let e of Lt(this,ie,"f"))e.isDce||(t.onCapturedResultReceived=!!e.onCapturedResultReceived,t.onDecodedBarcodesReceived=!!e.onDecodedBarcodesReceived,t.onRecognizedTextLinesReceived=!!e.onRecognizedTextLinesReceived,t.onDetectedQuadsReceived=!!e.onDetectedQuadsReceived,t.onNormalizedImagesReceived=!!e.onNormalizedImagesReceived,t.onParsedResultsReceived=!!e.onParsedResultsReceived);const e=new kt;let i=at();return ht[i]=async t=>{if(t.success)e.resolve();else{let i=new Error(t.message);i.stack=t.stack+"\n"+i.stack,e.reject()}},st.postMessage({type:"cvr_setCrrRegistry",id:i,instanceID:this._instanceID,body:{receiver:JSON.stringify(t)}}),e}async addResultFilter(t){if(ce(this),!t||"object"!=typeof t||!Object.keys(t).length)return console.warn("Invalid filter.");Lt(this,ne,"f").add(t),t._dynamsoft(),await this._handleFilterUpdate()}async removeResultFilter(t){ce(this),Lt(this,ne,"f").delete(t),await this._handleFilterUpdate()}async _handleFilterUpdate(){if(Lt(this,te,"f").removeResultReceiver(ue),0===Lt(this,ne,"f").size){this._isOpenBarcodeVerify=!1,this._isOpenLabelVerify=!1,this._isOpenDetectVerify=!1,this._isOpenNormalizeVerify=!1;const t={[yt.CRIT_BARCODE]:!1,[yt.CRIT_TEXT_LINE]:!1,[yt.CRIT_DETECTED_QUAD]:!1,[yt.CRIT_NORMALIZED_IMAGE]:!1},e={[yt.CRIT_BARCODE]:!1,[yt.CRIT_TEXT_LINE]:!1,[yt.CRIT_DETECTED_QUAD]:!1,[yt.CRIT_NORMALIZED_IMAGE]:!1};return await fe(this,t),void await ge(this,e)}for(let t of Lt(this,ne,"f")){if(this._isOpenBarcodeVerify=t.isResultCrossVerificationEnabled(yt.CRIT_BARCODE),this._isOpenLabelVerify=t.isResultCrossVerificationEnabled(yt.CRIT_TEXT_LINE),this._isOpenDetectVerify=t.isResultCrossVerificationEnabled(yt.CRIT_DETECTED_QUAD),this._isOpenNormalizeVerify=t.isResultCrossVerificationEnabled(yt.CRIT_NORMALIZED_IMAGE),t.isLatestOverlappingEnabled(yt.CRIT_BARCODE)){[...Lt(this,te,"f")._intermediateResultReceiverSet.values()].find((t=>t.isFilter))||Lt(this,te,"f").addResultReceiver(ue)}await fe(this,t.verificationEnabled),await ge(this,t.duplicateFilterEnabled),await me(this,t.duplicateForgetTime)}}async startCapturing(t){var e,i;if(ce(this),!this._isPauseScan)return;if(!Lt(this,Jt,"f"))throw new Error("'ImageSourceAdapter' is not set. call 'setInput' before 'startCapturing'");t||(t=de._defaultTemplate);const r=await this.containsTask(t);await _t(r);for(let t of Lt(this,ne,"f"))await this.addResultFilter(t);if(r.includes("dlr")&&!(null===(e=gt.dlr)||void 0===e?void 0:e.bLoadConfusableCharsData)){const t=L(vt.engineResourcePaths);await(null===(i=gt.dlr)||void 0===i?void 0:i.loadRecognitionData("ConfusableChars",t.dlr))}if(Lt(this,Jt,"f").isCameraEnhancer&&(r.includes("ddn")?Lt(this,Jt,"f").setPixelFormat(a.IPF_ABGR_8888):Lt(this,Jt,"f").setPixelFormat(a.IPF_GRAYSCALED)),void 0!==Lt(this,Jt,"f").singleFrameMode&&"disabled"!==Lt(this,Jt,"f").singleFrameMode)return this._templateName=t,void Lt(this,Jt,"f").on("singleFrameAcquired",this._singleFrameModeCallbackBind);return Lt(this,Jt,"f").getColourChannelUsageType()===o.CCUT_AUTO&&Lt(this,Jt,"f").setColourChannelUsageType(r.includes("ddn")?o.CCUT_FULL_CHANNEL:o.CCUT_Y_CHANNEL_ONLY),Lt(this,$t,"f")&&Lt(this,$t,"f").isPending?Lt(this,$t,"f"):(Mt(this,$t,new kt(((e,i)=>{if(this.disposed)return;let r=at();ht[r]=async r=>{if(Lt(this,$t,"f")&&!Lt(this,$t,"f").isFulfilled){if(!r.success){let t=new Error(r.message);return t.stack=r.stack+"\n"+t.stack,i(t)}this._isPauseScan=!1,this._isOutputOriginalImage=r.isOutputOriginalImage,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((async()=>{-1!==this._minImageCaptureInterval&&Lt(this,Jt,"f").startFetching(),this._loopReadVideo(t),e()}),0)}},st.postMessage({type:"cvr_startCapturing",id:r,instanceID:this._instanceID,body:{templateName:t}})})),"f"),await Lt(this,$t,"f"))}stopCapturing(){ce(this),Lt(this,Jt,"f")&&(Lt(this,Jt,"f").isCameraEnhancer&&void 0!==Lt(this,Jt,"f").singleFrameMode&&"disabled"!==Lt(this,Jt,"f").singleFrameMode?Lt(this,Jt,"f").off("singleFrameAcquired",this._singleFrameModeCallbackBind):(!async function(t){let e=at();const i=new kt;ht[e]=async t=>{if(t.success)return i.resolve();{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i.reject(e)}},st.postMessage({type:"cvr_clearVerifyList",id:e,instanceID:t._instanceID})}(this),Lt(this,Jt,"f").stopFetching(),this._averageProcessintTimeArray=[],this._averageTime=999,this._isPauseScan=!0,Mt(this,$t,null,"f"),Lt(this,Jt,"f").setColourChannelUsageType(o.CCUT_AUTO)))}async containsTask(t){return ce(this),await new Promise(((e,i)=>{let r=at();ht[r]=async t=>{if(t.success)return e(JSON.parse(t.tasks));{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},st.postMessage({type:"cvr_containsTask",id:r,instanceID:this._instanceID,body:{templateName:t}})}))}async _loopReadVideo(t){if(this.disposed||this._isPauseScan)return;if(Mt(this,oe,!0,"f"),Lt(this,Jt,"f").isBufferEmpty())if(Lt(this,Jt,"f").hasNextImageToFetch())for(let t of Lt(this,re,"f"))t.onImageSourceStateReceived&&t.onImageSourceStateReceived(Kt.ISS_BUFFER_EMPTY);else if(!Lt(this,Jt,"f").hasNextImageToFetch())for(let t of Lt(this,re,"f"))t.onImageSourceStateReceived&&t.onImageSourceStateReceived(Kt.ISS_EXHAUSTED);if(-1===this._minImageCaptureInterval||Lt(this,Jt,"f").isBufferEmpty())try{Lt(this,Jt,"f").isBufferEmpty()&&de._onLog&&de._onLog("buffer is empty so fetch image"),de._onLog&&de._onLog(`DCE: start fetching a frame: ${Date.now()}`),this._dsImage=Lt(this,Jt,"f").fetchImage(),de._onLog&&de._onLog(`DCE: finish fetching a frame: ${Date.now()}`),Lt(this,Jt,"f").setImageFetchInterval(this._averageTime)}catch(e){return void this._reRunCurrnetFunc(t)}else if(Lt(this,Jt,"f").setImageFetchInterval(this._averageTime-(this._dsImage&&this._dsImage.tag?this._dsImage.tag.timeSpent:0)),this._dsImage=Lt(this,Jt,"f").getImage(),this._dsImage.tag&&Date.now()-this._dsImage.tag.timeStamp>200)return void this._reRunCurrnetFunc(t);if(!this._dsImage)return void this._reRunCurrnetFunc(t);for(let t of Lt(this,ie,"f"))this._isOutputOriginalImage&&t.onOriginalImageResultReceived&&t.onOriginalImageResultReceived({imageData:this._dsImage});const e=Date.now();this._captureDsimage(this._dsImage,t).then((async i=>{if(de._onLog&&de._onLog("no js handle time: "+(Date.now()-e)),this._isPauseScan)return void this._reRunCurrnetFunc(t);i.originalImageTag=this._dsImage.tag?this._dsImage.tag:null;const r={originalImageHashId:i.originalImageHashId,originalImageTag:i.originalImageTag,errorCode:i.errorCode,errorString:i.errorString};for(let t of Lt(this,ie,"f"))if(t.isDce){const e=Date.now();if(t.onCapturedResultReceived(i,{isDetectVerifyOpen:this._isOpenDetectVerify,isNormalizeVerifyOpen:this._isOpenNormalizeVerify,isBarcodeVerifyOpen:this._isOpenBarcodeVerify,isLabelVerifyOpen:this._isOpenLabelVerify}),de._onLog){const t=Date.now()-e;t>10&&de._onLog(`draw result time: ${t}`)}}else{for(let e in qt){const n=e,s=qt[n];t[s.reveiver],t[s.reveiver]&&i[n]&&t[s.reveiver](Object.assign(Object.assign({},r),{[n]:i[n].filter((t=>!s.isNeedFilter||!t.isFilter))})),i[n]&&(i[n]=i[n].filter((t=>!s.isNeedFilter||!t.isFilter)))}t.onCapturedResultReceived&&(i.items=i.items.filter((t=>[yt.CRIT_DETECTED_QUAD,yt.CRIT_NORMALIZED_IMAGE].includes(t.type)||!t.isFilter)),t.onCapturedResultReceived(i))}const n=Date.now();if(this._minImageCaptureInterval>-1&&(5===this._averageProcessintTimeArray.length&&this._averageProcessintTimeArray.shift(),5===this._averageFetchImageTimeArray.length&&this._averageFetchImageTimeArray.shift(),this._averageProcessintTimeArray.push(Date.now()-e),this._averageFetchImageTimeArray.push(this._dsImage&&this._dsImage.tag?this._dsImage.tag.timeSpent:0),this._averageTime=Math.min(...this._averageProcessintTimeArray)-Math.max(...this._averageFetchImageTimeArray),this._averageTime=this._averageTime>0?this._averageTime:0,de._onLog&&(de._onLog(`minImageCaptureInterval: ${this._minImageCaptureInterval}`),de._onLog(`averageProcessintTimeArray: ${this._averageProcessintTimeArray}`),de._onLog(`averageFetchImageTimeArray: ${this._averageFetchImageTimeArray}`),de._onLog(`averageTime: ${this._averageTime}`))),de._onLog){const t=Date.now()-n;t>10&&de._onLog(`fetch image calculate time: ${t}`)}de._onLog&&de._onLog(`time finish decode: ${Date.now()}`),de._onLog&&de._onLog("main time: "+(Date.now()-e)),de._onLog&&de._onLog("===================================================="),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._minImageCaptureInterval>0&&this._minImageCaptureInterval>=this._averageTime?this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo(t)}),this._minImageCaptureInterval-this._averageTime):this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo(t)}),Math.max(this._minImageCaptureInterval,0))})).catch((e=>{Lt(this,Jt,"f").stopFetching(),e.errorCode&&0===e.errorCode&&(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{Lt(this,Jt,"f").startFetching(),this._loopReadVideo(t)}),Math.max(this._minImageCaptureInterval,1e3))),"platform error"!==e.message&&setTimeout((()=>{throw e}),0)}))}_reRunCurrnetFunc(t){this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo(t)}),0)}async capture(t,e){var i,r;ce(this),e||(e=de._defaultTemplate);const n=await this.containsTask(e);if(await _t(n),n.includes("dlr")&&!(null===(i=gt.dlr)||void 0===i?void 0:i.bLoadConfusableCharsData)){const t=L(vt.engineResourcePaths);await(null===(r=gt.dlr)||void 0===r?void 0:r.loadRecognitionData("ConfusableChars",t.dlr))}let s;if(Mt(this,oe,!1,"f"),C(t))s=await this._captureDsimage(t,e);else if("string"==typeof t)s="data:image/"==t.substring(0,11)?await this._captureBase64(t,e):await this._captureUrl(t,e);else if(t instanceof Blob)s=await this._captureBlob(t,e);else if(t instanceof HTMLImageElement)s=await this._captureImage(t,e);else if(t instanceof HTMLCanvasElement)s=await this._captureCanvas(t,e);else{if(!(t instanceof HTMLVideoElement))throw new TypeError("'capture(imageOrFile, templateName)': Type of 'imageOrFile' should be 'DSImageData', 'Url', 'Base64', 'Blob', 'HTMLImageElement', 'HTMLCanvasElement', 'HTMLVideoElement'.");s=await this._captureVideo(t,e)}return s}async _captureDsimage(t,e){return await this._captureInWorker(t,e)}async _captureUrl(t,e){let i=await O(t,"blob");return await this._captureBlob(i,e)}async _captureBase64(t,e){t=t.substring(t.indexOf(",")+1);let i=atob(t),r=i.length,n=new Uint8Array(r);for(;r--;)n[r]=i.charCodeAt(r);return await this._captureBlob(new Blob([n]),e)}async _captureBlob(t,e){let i=null,r=null;if("undefined"!=typeof createImageBitmap)try{i=await createImageBitmap(t)}catch(t){}i||(r=await async function(t){return await new Promise(((e,i)=>{let r=URL.createObjectURL(t),n=new Image;n.src=r,n.onload=()=>{URL.revokeObjectURL(n.dbrObjUrl),e(n)},n.onerror=t=>{i(new Error("Can't convert blob to image : "+(t instanceof Event?t.type:t)))}}))}(t));let n=await this._captureImage(i||r,e);return i&&i.close(),n}async _captureImage(t,e){let i,r,n=t instanceof HTMLImageElement?t.naturalWidth:t.width,s=t instanceof HTMLImageElement?t.naturalHeight:t.height,o=Math.max(n,s);o>this.maxImageSideLength?(Mt(this,se,this.maxImageSideLength/o,"f"),i=Math.round(n*Lt(this,se,"f")),r=Math.round(s*Lt(this,se,"f"))):(i=n,r=s),Lt(this,Qt,"f")||Mt(this,Qt,document.createElement("canvas"),"f");const a=Lt(this,Qt,"f");a.width===i&&a.height===r||(a.width=i,a.height=r),a.ctx2d||(a.ctx2d=a.getContext("2d",{willReadFrequently:!0}));return a.ctx2d.drawImage(t,0,0,n,s,0,0,i,r),t.dbrObjUrl&&URL.revokeObjectURL(t.dbrObjUrl),await this._captureCanvas(a,e)}async _captureCanvas(t,e){if(t.crossOrigin&&"anonymous"!=t.crossOrigin)throw"cors";if([t.width,t.height].includes(0))throw Error("The width or height of the 'canvas' is 0.");const i=t.ctx2d||t.getContext("2d",{willReadFrequently:!0}),r={bytes:Uint8Array.from(i.getImageData(0,0,t.width,t.height).data),width:t.width,height:t.height,stride:4*t.width,format:10};return await this._captureInWorker(r,e)}async _captureVideo(t,e){if(t.crossOrigin&&"anonymous"!=t.crossOrigin)throw"cors";let i,r,n=t.videoWidth,s=t.videoHeight,o=Math.max(n,s);o>this.maxImageSideLength?(Mt(this,se,this.maxImageSideLength/o,"f"),i=Math.round(n*Lt(this,se,"f")),r=Math.round(s*Lt(this,se,"f"))):(i=n,r=s),Lt(this,Qt,"f")||Mt(this,Qt,document.createElement("canvas"),"f");const a=Lt(this,Qt,"f");a.width===i&&a.height===r||(a.width=i,a.height=r),a.ctx2d||(a.ctx2d=a.getContext("2d",{willReadFrequently:!0}));return a.ctx2d.drawImage(t,0,0,n,s,0,0,i,r),await this._captureCanvas(a,e)}async _captureInWorker(t,e){const{bytes:i,width:r,height:n,stride:s,format:o}=t;let a=at();const h=new kt;return ht[a]=async e=>{var i,r;if(!e.success){let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,h.reject(t)}{const n=Date.now();de._onLog&&(de._onLog(`get result time from worker: ${n}`),de._onLog("worker to main time consume: "+(n-e.workerReturnMsgTime)));try{const n=e.captureResult;if(0!==n.errorCode){let t=new Error(n.errorString);return t.errorCode=n.errorCode,h.reject(t)}t.bytes=e.bytes;for(let e of n.items)0!==Lt(this,se,"f")&&le(e,Lt(this,se,"f")),e.type===yt.CRIT_ORIGINAL_IMAGE?e.imageData=t:e.type===yt.CRIT_NORMALIZED_IMAGE?null===(i=gt.ddn)||void 0===i||i.handleNormalizedImageResultItem(e):e.type===yt.CRIT_PARSED_RESULT&&(null===(r=gt.dcp)||void 0===r||r.handleParsedResultItem(e));if(Lt(this,oe,"f"))for(let t of Lt(this,ne,"f"))t.onDecodedBarcodesReceived(n),t.onRecognizedTextLinesReceived(n),t.onDetectedQuadsReceived(n),t.onNormalizedImagesReceived(n);for(let t in qt){const e=t,i=n.items.filter((t=>t.type===qt[e].type));i.length&&(n[t]=i)}if(!this._isPauseScan||!Lt(this,oe,"f")){const e=n.intermediateResult;if(e){let i=0;for(let r of Lt(this,te,"f")._intermediateResultReceiverSet){i++;for(let n of e){if("onTaskResultsReceived"===n.info.callbackName){for(let e of n.intermediateResultUnits)e.originalImageTag=t.tag?t.tag:null;r[n.info.callbackName]&&r[n.info.callbackName]({intermediateResultUnits:n.intermediateResultUnits},n.info)}else r[n.info.callbackName]&&r[n.info.callbackName](n.result,n.info);i===Lt(this,te,"f")._intermediateResultReceiverSet.size&&delete n.info.callbackName}}}}return n&&n.hasOwnProperty("intermediateResult")&&delete n.intermediateResult,Mt(this,se,0,"f"),h.resolve(n)}catch(t){return h.reject(t)}}},de._onLog&&de._onLog(`send buffer to worker: ${Date.now()}`),st.postMessage({type:"cvr_capture",id:a,instanceID:this._instanceID,body:{bytes:i,width:r,height:n,stride:s,format:o,templateName:e||"",isScanner:Lt(this,oe,"f")}},[i.buffer]),h}async initSettings(t){return ce(this),t&&["string","object"].includes(typeof t)?("string"==typeof t?t.trimStart().startsWith("{")||(t=await O(t,"text")):"object"==typeof t&&(t=JSON.stringify(t)),await new Promise(((e,i)=>{let r=at();ht[r]=async r=>{if(r.success){const n=JSON.parse(r.response);if(0!==n.errorCode){let t=new Error(n.errorString?n.errorString:"Init Settings Failed.");return t.errorCode=n.errorCode,i(t)}const s=JSON.parse(t);this._currentSettings=s;let o=[],a=s.CaptureVisionTemplates;for(let t=0;t{let r=at();ht[r]=async t=>{if(t.success){const r=JSON.parse(t.response);if(0!==r.errorCode){let t=new Error(r.errorString);return t.errorCode=r.errorCode,i(t)}return e(JSON.parse(r.data))}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},st.postMessage({type:"cvr_outputSettings",id:r,instanceID:this._instanceID,body:{templateName:t||"*"}})}))}async outputSettingsToFile(t,e,i){const r=await this.outputSettings(t),n=new Blob([JSON.stringify(r,null,2,(function(t,e){return e instanceof Array?JSON.stringify(e):e}),2)],{type:"application/json"});if(i){const t=document.createElement("a");t.href=URL.createObjectURL(n),e.endsWith(".json")&&(e=e.replace(".json","")),t.download=`${e}.json`,t.onclick=()=>{setTimeout((()=>{URL.revokeObjectURL(t.href)}),500)},t.click()}return n}async getTemplateNames(){return ce(this),await new Promise(((t,e)=>{let i=at();ht[i]=async i=>{if(i.success){const r=JSON.parse(i.response);if(0!==r.errorCode){let t=new Error(r.errorString);return t.errorCode=r.errorCode,e(t)}return t(JSON.parse(r.data))}{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},st.postMessage({type:"cvr_getTemplateNames",id:i,instanceID:this._instanceID})}))}async getSimplifiedSettings(t){ce(this),t||(t=this._currentSettings.CaptureVisionTemplates[0].Name);const e=await this.containsTask(t);return await _t(e),await new Promise(((e,i)=>{let r=at();ht[r]=async t=>{if(t.success){const r=JSON.parse(t.response);if(0!==r.errorCode){let t=new Error(r.errorString);return t.errorCode=r.errorCode,i(t)}const n=JSON.parse(r.data,((t,e)=>"barcodeFormatIds"===t?BigInt(e):e));return n.minImageCaptureInterval=this._minImageCaptureInterval,e(n)}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},st.postMessage({type:"cvr_getSimplifiedSettings",id:r,instanceID:this._instanceID,body:{templateName:t}})}))}async updateSettings(t,e){ce(this);const i=await this.containsTask(t);return await _t(i),await new Promise(((i,r)=>{let n=at();ht[n]=async t=>{if(t.success){const n=JSON.parse(t.response);if(e.minImageCaptureInterval&&e.minImageCaptureInterval>=-1&&(this._minImageCaptureInterval=e.minImageCaptureInterval),this._isOutputOriginalImage=t.isOutputOriginalImage,0!==n.errorCode){let t=new Error(n.errorString?n.errorString:"Update Settings Failed.");return t.errorCode=n.errorCode,r(t)}return this._currentSettings=await this.outputSettings("*"),i(n)}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,r(e)}},st.postMessage({type:"cvr_updateSettings",id:n,instanceID:this._instanceID,body:{settings:e,templateName:t}})}))}async resetSettings(){return ce(this),await new Promise(((t,e)=>{let i=at();ht[i]=async i=>{if(i.success){const r=JSON.parse(i.response);if(0!==r.errorCode){let t=new Error(r.errorString?r.errorString:"Reset Settings Failed.");return t.errorCode=r.errorCode,e(t)}return this._currentSettings=await this.outputSettings("*"),t(r)}{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},st.postMessage({type:"cvr_resetSettings",id:i,instanceID:this._instanceID})}))}getBufferedItemsManager(){return Lt(this,ee,"f")||Mt(this,ee,new Bt(this),"f"),Lt(this,ee,"f")}getIntermediateResultManager(){if(ce(this),!Lt(this,ae,"f")&&0!==vt.bSupportIRTModule)throw new Error("The current license does not support the use of intermediate results.");return Lt(this,te,"f")||Mt(this,te,new Ut(this),"f"),Lt(this,te,"f")}async parseRequiredResources(t){return ce(this),await new Promise(((e,i)=>{let r=at();ht[r]=async t=>{if(t.success)return e(JSON.parse(t.resources));{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},st.postMessage({type:"cvr_parseRequiredResources",id:r,instanceID:this._instanceID,body:{templateName:t}})}))}async dispose(){ce(this),Lt(this,$t,"f")&&this.stopCapturing(),Mt(this,Jt,null,"f"),Lt(this,ie,"f").clear(),Lt(this,re,"f").clear(),Lt(this,ne,"f").clear(),Lt(this,te,"f")._intermediateResultReceiverSet.clear(),Mt(this,he,!0,"f");let t=at();ht[t]=t=>{if(!t.success){let e=new Error(t.message);throw e.stack=t.stack+"\n"+e.stack,e}},st.postMessage({type:"cvr_dispose",id:t,instanceID:this._instanceID})}_getInternalData(){return{isa:Lt(this,Jt,"f"),promiseStartScan:Lt(this,$t,"f"),intermediateResultManager:Lt(this,te,"f"),bufferdItemsManager:Lt(this,ee,"f"),resultReceiverSet:Lt(this,ie,"f"),isaStateListenerSet:Lt(this,re,"f"),resultFilterSet:Lt(this,ne,"f"),compressRate:Lt(this,se,"f"),canvas:Lt(this,Qt,"f"),isScanner:Lt(this,oe,"f"),innerUseTag:Lt(this,ae,"f"),isDestroyed:Lt(this,he,"f")}}async _getWasmFilterState(){return await new Promise(((t,e)=>{let i=at();ht[i]=async i=>{if(i.success){const e=JSON.parse(i.response);return t(e)}{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},st.postMessage({type:"cvr_getWasmFilterState",id:i,instanceID:this._instanceID})}))}}async function fe(t,e){return ce(t),await new Promise(((i,r)=>{let n=at();ht[n]=async t=>{if(t.success)return i(t.result);{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,r(e)}},st.postMessage({type:"cvr_enableResultCrossVerification",id:n,instanceID:t._instanceID,body:{verificationEnabled:e}})}))}async function ge(t,e){return ce(t),await new Promise(((i,r)=>{let n=at();ht[n]=async t=>{if(t.success)return i(t.result);{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,r(e)}},st.postMessage({type:"cvr_enableResultDeduplication",id:n,instanceID:t._instanceID,body:{duplicateFilterEnabled:e}})}))}async function me(t,e){return ce(t),await new Promise(((i,r)=>{let n=at();ht[n]=async t=>{if(t.success)return i(t.result);{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,r(e)}},st.postMessage({type:"cvr_setDuplicateForgetTime",id:n,instanceID:t._instanceID,body:{duplicateForgetTime:e}})}))}Jt=new WeakMap,Qt=new WeakMap,$t=new WeakMap,te=new WeakMap,ee=new WeakMap,ie=new WeakMap,re=new WeakMap,ne=new WeakMap,se=new WeakMap,oe=new WeakMap,ae=new WeakMap,he=new WeakMap,de._defaultTemplate="Default";class pe{constructor(){this.onCapturedResultReceived=null,this.onOriginalImageResultReceived=null}}class _e{constructor(){this._observedResultUnitTypes=At.IRUT_ALL,this._observedTaskMap=new Map,this._parameters={setObservedResultUnitTypes:t=>{this._observedResultUnitTypes=t},getObservedResultUnitTypes:()=>this._observedResultUnitTypes,isResultUnitTypeObserved:t=>!!(t&this._observedResultUnitTypes),addObservedTask:t=>{this._observedTaskMap.set(t,!0)},removeObservedTask:t=>{this._observedTaskMap.set(t,!1)},isTaskObserved:t=>0===this._observedTaskMap.size||!!this._observedTaskMap.get(t)},this.onTaskResultsReceived=null,this.onPredetectedRegionsReceived=null,this.onColourImageUnitReceived=null,this.onScaledDownColourImageUnitReceived=null,this.onGrayscaleImageUnitReceived=null,this.onTransformedGrayscaleImageUnitReceived=null,this.onEnhancedGrayscaleImageUnitReceived=null,this.onBinaryImageUnitReceived=null,this.onTextureDetectionResultUnitReceived=null,this.onTextureRemovedGrayscaleImageUnitReceived=null,this.onTextureRemovedBinaryImageUnitReceived=null,this.onContoursUnitReceived=null,this.onLineSegmentsUnitReceived=null,this.onTextZonesUnitReceived=null,this.onTextRemovedBinaryImageUnitReceived=null,this.onShortLinesUnitReceived=null}getObservationParameters(){return this._parameters}}var ve;!function(t){t.PT_DEFAULT="Default",t.PT_READ_BARCODES="ReadBarcodes_Default",t.PT_RECOGNIZE_TEXT_LINES="RecognizeTextLines_Default",t.PT_DETECT_DOCUMENT_BOUNDARIES="DetectDocumentBoundaries_Default",t.PT_DETECT_AND_NORMALIZE_DOCUMENT="DetectAndNormalizeDocument_Default",t.PT_NORMALIZE_DOCUMENT="NormalizeDocument_Default",t.PT_READ_BARCODES_SPEED_FIRST="ReadBarcodes_SpeedFirst",t.PT_READ_BARCODES_READ_RATE_FIRST="ReadBarcodes_ReadRateFirst",t.PT_READ_BARCODES_BALANCE="ReadBarcodes_Balance",t.PT_READ_SINGLE_BARCODE="ReadBarcodes_Balanced",t.PT_READ_DENSE_BARCODES="ReadDenseBarcodes",t.PT_READ_DISTANT_BARCODES="ReadDistantBarcodes",t.PT_RECOGNIZE_NUMBERS="RecognizeNumbers",t.PT_RECOGNIZE_LETTERS="RecognizeLetters",t.PT_RECOGNIZE_NUMBERS_AND_LETTERS="RecognizeNumbersAndLetters",t.PT_RECOGNIZE_NUMBERS_AND_UPPERCASE_LETTERS="RecognizeNumbersAndUppercaseLetters",t.PT_RECOGNIZE_UPPERCASE_LETTERS="RecognizeUppercaseLetters"}(ve||(ve={}));const ye="undefined"==typeof self,we=ye?{}:self,Ce="function"==typeof importScripts,Ee=(()=>{if(!Ce){if(!ye&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),Te=t=>t&&"object"==typeof t&&"function"==typeof t.then,Se=(async()=>{})().constructor;let be=class extends Se{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(t){let e;this._task=t,Te(t)?e=t:"function"==typeof t&&(e=new Se(t)),e&&(async()=>{try{const i=await e;t===this._task&&this.resolve(i)}catch(e){t===this._task&&this.reject(e)}})()}get isEmpty(){return null==this._task}constructor(t){let e,i;super(((t,r)=>{e=t,i=r})),this._s="pending",this.resolve=t=>{this.isPending&&(Te(t)?this.task=t:(this._s="fulfilled",e(t)))},this.reject=t=>{this.isPending&&(this._s="rejected",i(t))},this.task=t}};const Ie=" is not allowed to change after `createInstance` or `loadWasm` is called.",xe=!ye&&document.currentScript&&(document.currentScript.getAttribute("data-license")||document.currentScript.getAttribute("data-productKeys")||document.currentScript.getAttribute("data-licenseKey")||document.currentScript.getAttribute("data-handshakeCode")||document.currentScript.getAttribute("data-organizationID"))||"",Ae=(t,e)=>{const i=t;if(i._license!==e){if(!i._pLoad.isEmpty)throw new Error("`license`"+Ie);i._license=e}};!ye&&document.currentScript&&document.currentScript.getAttribute("data-sessionPassword");const Oe=t=>{if(null==t)t=[];else{t=t instanceof Array?[...t]:[t];for(let e=0;e{e=Oe(e);const i=t;if(i._licenseServer!==e){if(!i._pLoad.isEmpty)throw new Error("`licenseServer`"+Ie);i._licenseServer=e}},De=(t,e)=>{e=e||"";const i=t;if(i._deviceFriendlyName!==e){if(!i._pLoad.isEmpty)throw new Error("`deviceFriendlyName`"+Ie);i._deviceFriendlyName=e}};let Le,Me,Fe,Pe,ke;"undefined"!=typeof navigator&&(Le=navigator,Me=Le.userAgent,Fe=Le.platform,Pe=Le.mediaDevices),function(){if(!ye){const t={Edge:{search:"Edg",verSearch:"Edg"},OPR:null,Chrome:null,Safari:{str:Le.vendor,search:"Apple",verSearch:["Version","iPhone OS","CPU OS"]},Firefox:null,Explorer:{search:"MSIE",verSearch:"MSIE"}},e={HarmonyOS:null,Android:null,iPhone:null,iPad:null,Windows:{str:Fe,search:"Win"},Mac:{str:Fe},Linux:{str:Fe}};let i="unknownBrowser",r=0,n="unknownOS";for(let e in t){const n=t[e]||{};let s=n.str||Me,o=n.search||e,a=n.verStr||Me,h=n.verSearch||e;if(h instanceof Array||(h=[h]),-1!=s.indexOf(o)){i=e;for(let t of h){let e=a.indexOf(t);if(-1!=e){r=parseFloat(a.substring(e+t.length+1));break}}break}}for(let t in e){const i=e[t]||{};let r=i.str||Me,s=i.search||t;if(-1!=r.indexOf(s)){n=t;break}}"Linux"==n&&-1!=Me.indexOf("Windows NT")&&(n="HarmonyOS"),ke={browser:i,version:r,OS:n}}ye&&(ke={browser:"ssr",version:0,OS:"ssr"})}(),Pe&&Pe.getUserMedia,"Chrome"===ke.browser&&ke.version>66||"Safari"===ke.browser&&ke.version>13||"OPR"===ke.browser&&ke.version>43||"Edge"===ke.browser&&ke.version;const Be=()=>(_t("license"),nt("dynamsoft_inited",(async()=>{let{lt:t,l:e,ls:i,sp:r,rmk:n,cv:s}=((t,e=!1)=>{const i=je;if(i._pLoad.isEmpty){let r,n,s,o=i._license||"",a=JSON.parse(JSON.stringify(i._licenseServer)),h=i._sessionPassword,l=0;if(o.startsWith("t")||o.startsWith("f"))l=0;else if(0===o.length||o.startsWith("P")||o.startsWith("L")||o.startsWith("Y")||o.startsWith("A"))l=1;else{l=2;const e=o.indexOf(":");-1!=e&&(o=o.substring(e+1));const i=o.indexOf("?");if(-1!=i&&(n=o.substring(i+1),o=o.substring(0,i)),o.startsWith("DLC2"))l=0;else{if(o.startsWith("DLS2")){let e;try{let t=o.substring(4);t=atob(t),e=JSON.parse(t)}catch(t){throw new Error("Format Error: The license string you specified is invalid, please check to make sure it is correct.")}if(o=e.handshakeCode?e.handshakeCode:e.organizationID?e.organizationID:"","number"==typeof o&&(o=JSON.stringify(o)),0===a.length){let t=[];e.mainServerURL&&(t[0]=e.mainServerURL),e.standbyServerURL&&(t[1]=e.standbyServerURL),a=Oe(t)}!h&&e.sessionPassword&&(h=e.sessionPassword),r=e.remark}o&&"200001"!==o&&!o.startsWith("200001-")||(l=1)}}if(l&&(e||(we.crypto||(s="Please upgrade your browser to support online key."),we.crypto.subtle||(s="Require https to use online key in this browser."))),s)throw new Error(s);return 1===l&&(o="",console.warn("Applying for a public trial license ...")),{lt:l,l:o,ls:a,sp:h,rmk:r,cv:n}}throw new Error("Can't preprocess license again"+Ie)})(),o=new be;je._pLoad.task=o,(async()=>{try{await je._pLoad}catch(t){}})();let a=at();ht[a]=e=>{if(e.message&&je._onAuthMessage){let t=je._onAuthMessage(e.message);null!=t&&(e.message=t)}let i,r=!1;if(1===t&&(r=!0),e.success?(lt&<("init license success"),e.message&&console.warn(e.message),vt._bSupportIRTModule=e.bSupportIRTModule,vt._bSupportDce4Module=e.bSupportDce4Module,je.bPassValidation=!0,[0,-10076].includes(e.initLicenseInfo.errorCode)?[-10076].includes(e.initLicenseInfo.errorCode)&&console.warn(e.initLicenseInfo.errorString):o.reject(new Error(e.initLicenseInfo.errorString))):(i=Error(e.message),e.stack&&(i.stack=e.stack),e.ltsErrorCode&&(i.ltsErrorCode=e.ltsErrorCode),r||111==e.ltsErrorCode&&-1!=e.message.toLowerCase().indexOf("trial license")&&(r=!0)),r){const t=L(vt.engineResourcePaths);(async(t,e,i)=>{if(!t._bNeverShowDialog)try{let r=await fetch(t.engineResourcePath+"dls.license.dialog.html");if(!r.ok)throw Error("Get license dialog fail. Network Error: "+r.statusText);let n=await r.text();if(!n.trim().startsWith("<"))throw Error("Get license dialog fail. Can't get valid HTMLElement.");let s=document.createElement("div");s.innerHTML=n;let o=[];for(let t=0;t{if(t==e.target){a.remove();for(let t of o)t.remove()}}));else if(!l&&t.classList.contains("dls-license-icon-close"))l=t,t.addEventListener("click",(()=>{a.remove();for(let t of o)t.remove()}));else if(!c&&t.classList.contains("dls-license-icon-error"))c=t,"error"!=e&&t.remove();else if(!u&&t.classList.contains("dls-license-icon-warn"))u=t,"warn"!=e&&t.remove();else if(!d&&t.classList.contains("dls-license-msg-content")){d=t;let e=i;for(;e;){let i=e.indexOf("["),r=e.indexOf("]",i),n=e.indexOf("(",r),s=e.indexOf(")",n);if(-1==i||-1==r||-1==n||-1==s){t.appendChild(new Text(e));break}i>0&&t.appendChild(new Text(e.substring(0,i)));let o=document.createElement("a"),a=e.substring(i+1,r);o.innerText=a;let h=e.substring(n+1,s);o.setAttribute("href",h),o.setAttribute("target","_blank"),t.appendChild(o),e=e.substring(s+1)}}document.body.appendChild(a)}catch(e){t._onLog&&t._onLog(e.message||e)}})({_bNeverShowDialog:je._bNeverShowDialog,engineResourcePath:t.license,_onLog:lt},e.success?"warn":"error",e.message)}e.success?o.resolve(void 0):o.reject(i)},await rt("core"),st.postMessage({type:"license_dynamsoft",body:{v:"3.4.31",brtk:!!t,bptk:1===t,l:e,os:ke,fn:je.deviceFriendlyName,ls:i,sp:r,rmk:n,cv:s},id:a}),je.bCallInitLicense=!0,await o})));let Ne;gt.license={},gt.license.dynamsoft=Be,gt.license.getAR=async()=>{{let t=it.dynamsoft_inited;t&&t.isRejected&&await t}return st?new Promise(((t,e)=>{let i=at();ht[i]=async i=>{if(i.success){delete i.success;{let t=je.license;t&&(t.startsWith("t")||t.startsWith("f"))&&(i.pk=t)}if(Object.keys(i).length){if(i.lem){let t=Error(i.lem);t.ltsErrorCode=i.lec,delete i.lem,delete i.lec,i.ae=t}t(i)}else t(null)}else{let t=Error(i.message);i.stack&&(t.stack=i.stack),e(t)}},st.postMessage({type:"license_getAR",id:i})})):null};let je=class t{static setLicenseServer(e){Re(t,e)}static get license(){return this._license}static set license(e){Ae(t,e)}static get licenseServer(){return this._licenseServer}static set licenseServer(e){Re(t,e)}static get deviceFriendlyName(){return this._deviceFriendlyName}static set deviceFriendlyName(e){De(t,e)}static initLicense(e,i){if(Ae(t,e),t.bCallInitLicense=!0,"boolean"==typeof i&&i||"object"==typeof i&&i.executeNow)return Be()}static setDeviceFriendlyName(e){De(t,e)}static getDeviceFriendlyName(){return t._deviceFriendlyName}static getDeviceUUID(){return(async()=>(await nt("dynamsoft_uuid",(async()=>{await _t();let t=new be,e=at();ht[e]=e=>{if(e.success)t.resolve(e.uuid);else{const i=Error(e.message);e.stack&&(i.stack=e.stack),t.reject(i)}},st.postMessage({type:"license_getDeviceUUID",id:e}),Ne=await t})),Ne))()}};je._pLoad=new be,je.bPassValidation=!1,je.bCallInitLicense=!1,je._license=xe,je._licenseServer=[],je._deviceFriendlyName="",vt.engineResourcePaths.license={version:"3.4.31",path:Ee,isInternal:!0},mt.license={wasm:!0,js:!0},gt.license.LicenseManager=je;const Ue="1.4.21";"string"!=typeof vt.engineResourcePaths.std&&D(vt.engineResourcePaths.std.version,Ue)<0&&(vt.engineResourcePaths.std={version:Ue,path:(t=>{if(null==t&&(t="./"),ye||Ce);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t})(Ee+`../../dynamsoft-capture-vision-std@${Ue}/dist/`),isInternal:!0});let Ve=class{static getVersion(){return`3.4.31(Worker: ${ft.license&&ft.license.worker||"Not Loaded"}, Wasm: ${ft.license&&ft.license.wasm||"Not Loaded"})`}};const Ge="undefined"==typeof self,We="function"==typeof importScripts,Ye=(()=>{if(!We){if(!Ge&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})();vt.engineResourcePaths.dce={version:"4.1.1",path:Ye,isInternal:!0},mt.dce={wasm:!1,js:!1},gt.dce={};let He,Xe,ze,Ze,qe,Ke=class{static getVersion(){return"4.1.1"}};function Je(t,e,i,r){if("a"===i&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?r:"a"===i?r.call(t):r?r.value:e.get(t)}function Qe(t,e,i,r,n){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?n.call(t,i):n?n.value=i:e.set(t,i),i}"function"==typeof SuppressedError&&SuppressedError,"undefined"!=typeof navigator&&(He=navigator,Xe=He.userAgent,ze=He.platform,Ze=He.mediaDevices),function(){if(!Ge){const t={Edge:{search:"Edg",verSearch:"Edg"},OPR:null,Chrome:null,Safari:{str:He.vendor,search:"Apple",verSearch:["Version","iPhone OS","CPU OS"]},Firefox:null,Explorer:{search:"MSIE",verSearch:"MSIE"}},e={HarmonyOS:null,Android:null,iPhone:null,iPad:null,Windows:{str:ze,search:"Win"},Mac:{str:ze},Linux:{str:ze}};let i="unknownBrowser",r=0,n="unknownOS";for(let e in t){const n=t[e]||{};let s=n.str||Xe,o=n.search||e,a=n.verStr||Xe,h=n.verSearch||e;if(h instanceof Array||(h=[h]),-1!=s.indexOf(o)){i=e;for(let t of h){let e=a.indexOf(t);if(-1!=e){r=parseFloat(a.substring(e+t.length+1));break}}break}}for(let t in e){const i=e[t]||{};let r=i.str||Xe,s=i.search||t;if(-1!=r.indexOf(s)){n=t;break}}"Linux"==n&&-1!=Xe.indexOf("Windows NT")&&(n="HarmonyOS"),qe={browser:i,version:r,OS:n}}Ge&&(qe={browser:"ssr",version:0,OS:"ssr"})}();const $e="undefined"!=typeof WebAssembly&&Xe&&!(/Safari/.test(Xe)&&!/Chrome/.test(Xe)&&/\(.+\s11_2_([2-6]).*\)/.test(Xe)),ti=!("undefined"==typeof Worker),ei=!(!Ze||!Ze.getUserMedia),ii=async()=>{let t=!1;if(ei)try{(await Ze.getUserMedia({video:!0})).getTracks().forEach((t=>{t.stop()})),t=!0}catch(t){}return t};"Chrome"===qe.browser&&qe.version>66||"Safari"===qe.browser&&qe.version>13||"OPR"===qe.browser&&qe.version>43||"Edge"===qe.browser&&qe.version;var ri={653:(t,e,i)=>{var r,n,s,o,a,h,l,c,u,d,f,g,m,p,_,v,y,w,C,E,T,S=S||{version:"5.2.1"};if(e.fabric=S,"undefined"!=typeof document&&"undefined"!=typeof window)document instanceof("undefined"!=typeof HTMLDocument?HTMLDocument:Document)?S.document=document:S.document=document.implementation.createHTMLDocument(""),S.window=window;else{var b=new(i(192).JSDOM)(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"),{features:{FetchExternalResources:["img"]},resources:"usable"}).window;S.document=b.document,S.jsdomImplForWrapper=i(898).implForWrapper,S.nodeCanvas=i(245).Canvas,S.window=b,DOMParser=S.window.DOMParser}function I(t,e){var i=t.canvas,r=e.targetCanvas,n=r.getContext("2d");n.translate(0,r.height),n.scale(1,-1);var s=i.height-r.height;n.drawImage(i,0,s,r.width,r.height,0,0,r.width,r.height)}function x(t,e){var i=e.targetCanvas.getContext("2d"),r=e.destinationWidth,n=e.destinationHeight,s=r*n*4,o=new Uint8Array(this.imageBuffer,0,s),a=new Uint8ClampedArray(this.imageBuffer,0,s);t.readPixels(0,0,r,n,t.RGBA,t.UNSIGNED_BYTE,o);var h=new ImageData(a,r,n);i.putImageData(h,0,0)}S.isTouchSupported="ontouchstart"in S.window||"ontouchstart"in S.document||S.window&&S.window.navigator&&S.window.navigator.maxTouchPoints>0,S.isLikelyNode="undefined"!=typeof Buffer&&"undefined"==typeof window,S.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-dashoffset","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id","paint-order","vector-effect","instantiated_by_use","clip-path"],S.DPI=96,S.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)",S.commaWsp="(?:\\s+,?\\s*|,\\s*)",S.rePathCommand=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/gi,S.reNonWord=/[ \n\.,;!\?\-]/,S.fontPaths={},S.iMatrix=[1,0,0,1,0,0],S.svgNS="http://www.w3.org/2000/svg",S.perfLimitSizeTotal=2097152,S.maxCacheSideLimit=4096,S.minCacheSideLimit=256,S.charWidthsCache={},S.textureSize=2048,S.disableStyleCopyPaste=!1,S.enableGLFiltering=!0,S.devicePixelRatio=S.window.devicePixelRatio||S.window.webkitDevicePixelRatio||S.window.mozDevicePixelRatio||1,S.browserShadowBlurConstant=1,S.arcToSegmentsCache={},S.boundsOfCurveCache={},S.cachesBoundsOfCurve=!0,S.forceGLPutImageData=!1,S.initFilterBackend=function(){return S.enableGLFiltering&&S.isWebglSupported&&S.isWebglSupported(S.textureSize)?(console.log("max texture size: "+S.maxTextureSize),new S.WebglFilterBackend({tileSize:S.textureSize})):S.Canvas2dFilterBackend?new S.Canvas2dFilterBackend:void 0},"undefined"!=typeof document&&"undefined"!=typeof window&&(window.fabric=S),function(){function t(t,e){if(this.__eventListeners[t]){var i=this.__eventListeners[t];e?i[i.indexOf(e)]=!1:S.util.array.fill(i,!1)}}function e(t,e){var i=function(){e.apply(this,arguments),this.off(t,i)}.bind(this);this.on(t,i)}S.Observable={fire:function(t,e){if(!this.__eventListeners)return this;var i=this.__eventListeners[t];if(!i)return this;for(var r=0,n=i.length;r-1||!!e&&this._objects.some((function(e){return"function"==typeof e.contains&&e.contains(t,!0)}))},complexity:function(){return this._objects.reduce((function(t,e){return t+(e.complexity?e.complexity():0)}),0)}},S.CommonMethods={_setOptions:function(t){for(var e in t)this.set(e,t[e])},_initGradient:function(t,e){!t||!t.colorStops||t instanceof S.Gradient||this.set(e,new S.Gradient(t))},_initPattern:function(t,e,i){!t||!t.source||t instanceof S.Pattern?i&&i():this.set(e,new S.Pattern(t,i))},_setObject:function(t){for(var e in t)this._set(e,t[e])},set:function(t,e){return"object"==typeof t?this._setObject(t):this._set(t,e),this},_set:function(t,e){this[t]=e},toggle:function(t){var e=this.get(t);return"boolean"==typeof e&&this.set(t,!e),this},get:function(t){return this[t]}},r=e,n=Math.sqrt,s=Math.atan2,o=Math.pow,a=Math.PI/180,h=Math.PI/2,S.util={cos:function(t){if(0===t)return 1;switch(t<0&&(t=-t),t/h){case 1:case 3:return 0;case 2:return-1}return Math.cos(t)},sin:function(t){if(0===t)return 0;var e=1;switch(t<0&&(e=-1),t/h){case 1:return e;case 2:return 0;case 3:return-e}return Math.sin(t)},removeFromArray:function(t,e){var i=t.indexOf(e);return-1!==i&&t.splice(i,1),t},getRandomInt:function(t,e){return Math.floor(Math.random()*(e-t+1))+t},degreesToRadians:function(t){return t*a},radiansToDegrees:function(t){return t/a},rotatePoint:function(t,e,i){var r=new S.Point(t.x-e.x,t.y-e.y),n=S.util.rotateVector(r,i);return new S.Point(n.x,n.y).addEquals(e)},rotateVector:function(t,e){var i=S.util.sin(e),r=S.util.cos(e);return{x:t.x*r-t.y*i,y:t.x*i+t.y*r}},createVector:function(t,e){return new S.Point(e.x-t.x,e.y-t.y)},calcAngleBetweenVectors:function(t,e){return Math.acos((t.x*e.x+t.y*e.y)/(Math.hypot(t.x,t.y)*Math.hypot(e.x,e.y)))},getHatVector:function(t){return new S.Point(t.x,t.y).multiply(1/Math.hypot(t.x,t.y))},getBisector:function(t,e,i){var r=S.util.createVector(t,e),n=S.util.createVector(t,i),s=S.util.calcAngleBetweenVectors(r,n),o=s*(0===S.util.calcAngleBetweenVectors(S.util.rotateVector(r,s),n)?1:-1)/2;return{vector:S.util.getHatVector(S.util.rotateVector(r,o)),angle:s}},projectStrokeOnPoints:function(t,e,i){var r=[],n=e.strokeWidth/2,s=e.strokeUniform?new S.Point(1/e.scaleX,1/e.scaleY):new S.Point(1,1),o=function(t){var e=n/Math.hypot(t.x,t.y);return new S.Point(t.x*e*s.x,t.y*e*s.y)};return t.length<=1||t.forEach((function(a,h){var l,c,u=new S.Point(a.x,a.y);0===h?(c=t[h+1],l=i?o(S.util.createVector(c,u)).addEquals(u):t[t.length-1]):h===t.length-1?(l=t[h-1],c=i?o(S.util.createVector(l,u)).addEquals(u):t[0]):(l=t[h-1],c=t[h+1]);var d,f,g=S.util.getBisector(u,l,c),m=g.vector,p=g.angle;if("miter"===e.strokeLineJoin&&(d=-n/Math.sin(p/2),f=new S.Point(m.x*d*s.x,m.y*d*s.y),Math.hypot(f.x,f.y)/n<=e.strokeMiterLimit))return r.push(u.add(f)),void r.push(u.subtract(f));d=-n*Math.SQRT2,f=new S.Point(m.x*d*s.x,m.y*d*s.y),r.push(u.add(f)),r.push(u.subtract(f))})),r},transformPoint:function(t,e,i){return i?new S.Point(e[0]*t.x+e[2]*t.y,e[1]*t.x+e[3]*t.y):new S.Point(e[0]*t.x+e[2]*t.y+e[4],e[1]*t.x+e[3]*t.y+e[5])},makeBoundingBoxFromPoints:function(t,e){if(e)for(var i=0;i0&&(e>r?e-=r:e=0,i>r?i-=r:i=0);var n,s=!0,o=t.getImageData(e,i,2*r||1,2*r||1),a=o.data.length;for(n=3;n=n?s-n:2*Math.PI-(n-s)}function s(t,e,i){for(var s=i[1],o=i[2],a=i[3],h=i[4],l=i[5],c=function(t,e,i,s,o,a,h){var l=Math.PI,c=h*l/180,u=S.util.sin(c),d=S.util.cos(c),f=0,g=0,m=-d*t*.5-u*e*.5,p=-d*e*.5+u*t*.5,_=(i=Math.abs(i))*i,v=(s=Math.abs(s))*s,y=p*p,w=m*m,C=_*v-_*y-v*w,E=0;if(C<0){var T=Math.sqrt(1-C/(_*v));i*=T,s*=T}else E=(o===a?-1:1)*Math.sqrt(C/(_*y+v*w));var b=E*i*p/s,I=-E*s*m/i,x=d*b-u*I+.5*t,A=u*b+d*I+.5*e,O=n(1,0,(m-b)/i,(p-I)/s),R=n((m-b)/i,(p-I)/s,(-m-b)/i,(-p-I)/s);0===a&&R>0?R-=2*l:1===a&&R<0&&(R+=2*l);for(var D=Math.ceil(Math.abs(R/l*2)),L=[],M=R/D,F=8/3*Math.sin(M/4)*Math.sin(M/4)/Math.sin(M/2),P=O+M,k=0;kE)for(var b=1,I=m.length;b2;for(e=e||0,l&&(a=t[2].xt[i-2].x?1:n.x===t[i-2].x?0:-1,h=n.y>t[i-2].y?1:n.y===t[i-2].y?0:-1),r.push(["L",n.x+a*e,n.y+h*e]),r},S.util.getPathSegmentsInfo=d,S.util.getBoundsOfCurve=function(e,i,r,n,s,o,a,h){var l;if(S.cachesBoundsOfCurve&&(l=t.call(arguments),S.boundsOfCurveCache[l]))return S.boundsOfCurveCache[l];var c,u,d,f,g,m,p,_,v=Math.sqrt,y=Math.min,w=Math.max,C=Math.abs,E=[],T=[[],[]];u=6*e-12*r+6*s,c=-3*e+9*r-9*s+3*a,d=3*r-3*e;for(var b=0;b<2;++b)if(b>0&&(u=6*i-12*n+6*o,c=-3*i+9*n-9*o+3*h,d=3*n-3*i),C(c)<1e-12){if(C(u)<1e-12)continue;0<(f=-d/u)&&f<1&&E.push(f)}else(p=u*u-4*d*c)<0||(0<(g=(-u+(_=v(p)))/(2*c))&&g<1&&E.push(g),0<(m=(-u-_)/(2*c))&&m<1&&E.push(m));for(var I,x,A,O=E.length,R=O;O--;)I=(A=1-(f=E[O]))*A*A*e+3*A*A*f*r+3*A*f*f*s+f*f*f*a,T[0][O]=I,x=A*A*A*i+3*A*A*f*n+3*A*f*f*o+f*f*f*h,T[1][O]=x;T[0][R]=e,T[1][R]=i,T[0][R+1]=a,T[1][R+1]=h;var D=[{x:y.apply(null,T[0]),y:y.apply(null,T[1])},{x:w.apply(null,T[0]),y:w.apply(null,T[1])}];return S.cachesBoundsOfCurve&&(S.boundsOfCurveCache[l]=D),D},S.util.getPointOnPath=function(t,e,i){i||(i=d(t));for(var r=0;e-i[r].length>0&&r1e-4;)i=h(s),n=s,(r=o(l.x,l.y,i.x,i.y))+a>e?(s-=c,c/=2):(l=i,s+=c,a+=r);return i.angle=u(n),i}(s,e)}},S.util.transformPath=function(t,e,i){return i&&(e=S.util.multiplyTransformMatrices(e,[1,0,0,1,-i.x,-i.y])),t.map((function(t){for(var i=t.slice(0),r={},n=1;n=e}))}}}(),function(){function t(e,i,r){if(r)if(!S.isLikelyNode&&i instanceof Element)e=i;else if(i instanceof Array){e=[];for(var n=0,s=i.length;n57343)return t.charAt(e);if(55296<=i&&i<=56319){if(t.length<=e+1)throw"High surrogate without following low surrogate";var r=t.charCodeAt(e+1);if(56320>r||r>57343)throw"High surrogate without following low surrogate";return t.charAt(e)+t.charAt(e+1)}if(0===e)throw"Low surrogate without preceding high surrogate";var n=t.charCodeAt(e-1);if(55296>n||n>56319)throw"Low surrogate without preceding high surrogate";return!1}S.util.string={camelize:function(t){return t.replace(/-+(.)?/g,(function(t,e){return e?e.toUpperCase():""}))},capitalize:function(t,e){return t.charAt(0).toUpperCase()+(e?t.slice(1):t.slice(1).toLowerCase())},escapeXml:function(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")},graphemeSplit:function(e){var i,r=0,n=[];for(r=0;r-1?t.prototype[n]=function(t){return function(){var i=this.constructor.superclass;this.constructor.superclass=r;var n=e[t].apply(this,arguments);if(this.constructor.superclass=i,"initialize"!==t)return n}}(n):t.prototype[n]=e[n],i&&(e.toString!==Object.prototype.toString&&(t.prototype.toString=e.toString),e.valueOf!==Object.prototype.valueOf&&(t.prototype.valueOf=e.valueOf))};function n(){}function s(e){for(var i=null,r=this;r.constructor.superclass;){var n=r.constructor.superclass.prototype[e];if(r[e]!==n){i=n;break}r=r.constructor.superclass.prototype}return i?arguments.length>1?i.apply(this,t.call(arguments,1)):i.call(this):console.log("tried to callSuper "+e+", method not found in prototype chain",this)}S.util.createClass=function(){var i=null,o=t.call(arguments,0);function a(){this.initialize.apply(this,arguments)}"function"==typeof o[0]&&(i=o.shift()),a.superclass=i,a.subclasses=[],i&&(n.prototype=i.prototype,a.prototype=new n,i.subclasses.push(a));for(var h=0,l=o.length;h-1||"touch"===t.pointerType},d="string"==typeof(u=S.document.createElement("div")).style.opacity,f="string"==typeof u.style.filter,g=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,m=function(t){return t},d?m=function(t,e){return t.style.opacity=e,t}:f&&(m=function(t,e){var i=t.style;return t.currentStyle&&!t.currentStyle.hasLayout&&(i.zoom=1),g.test(i.filter)?(e=e>=.9999?"":"alpha(opacity="+100*e+")",i.filter=i.filter.replace(g,e)):i.filter+=" alpha(opacity="+100*e+")",t}),S.util.setStyle=function(t,e){var i=t.style;if(!i)return t;if("string"==typeof e)return t.style.cssText+=";"+e,e.indexOf("opacity")>-1?m(t,e.match(/opacity:\s*(\d?\.?\d*)/)[1]):t;for(var r in e)"opacity"===r?m(t,e[r]):i["float"===r||"cssFloat"===r?void 0===i.styleFloat?"cssFloat":"styleFloat":r]=e[r];return t},function(){var t,e,i,r,n=Array.prototype.slice,s=function(t){return n.call(t,0)};try{t=s(S.document.childNodes)instanceof Array}catch(t){}function o(t,e){var i=S.document.createElement(t);for(var r in e)"class"===r?i.className=e[r]:"for"===r?i.htmlFor=e[r]:i.setAttribute(r,e[r]);return i}function a(t){for(var e=0,i=0,r=S.document.documentElement,n=S.document.body||{scrollLeft:0,scrollTop:0};t&&(t.parentNode||t.host)&&((t=t.parentNode||t.host)===S.document?(e=n.scrollLeft||r.scrollLeft||0,i=n.scrollTop||r.scrollTop||0):(e+=t.scrollLeft||0,i+=t.scrollTop||0),1!==t.nodeType||"fixed"!==t.style.position););return{left:e,top:i}}t||(s=function(t){for(var e=new Array(t.length),i=t.length;i--;)e[i]=t[i];return e}),e=S.document.defaultView&&S.document.defaultView.getComputedStyle?function(t,e){var i=S.document.defaultView.getComputedStyle(t,null);return i?i[e]:void 0}:function(t,e){var i=t.style[e];return!i&&t.currentStyle&&(i=t.currentStyle[e]),i},i=S.document.documentElement.style,r="userSelect"in i?"userSelect":"MozUserSelect"in i?"MozUserSelect":"WebkitUserSelect"in i?"WebkitUserSelect":"KhtmlUserSelect"in i?"KhtmlUserSelect":"",S.util.makeElementUnselectable=function(t){return void 0!==t.onselectstart&&(t.onselectstart=S.util.falseFunction),r?t.style[r]="none":"string"==typeof t.unselectable&&(t.unselectable="on"),t},S.util.makeElementSelectable=function(t){return void 0!==t.onselectstart&&(t.onselectstart=null),r?t.style[r]="":"string"==typeof t.unselectable&&(t.unselectable=""),t},S.util.setImageSmoothing=function(t,e){t.imageSmoothingEnabled=t.imageSmoothingEnabled||t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled||t.oImageSmoothingEnabled,t.imageSmoothingEnabled=e},S.util.getById=function(t){return"string"==typeof t?S.document.getElementById(t):t},S.util.toArray=s,S.util.addClass=function(t,e){t&&-1===(" "+t.className+" ").indexOf(" "+e+" ")&&(t.className+=(t.className?" ":"")+e)},S.util.makeElement=o,S.util.wrapElement=function(t,e,i){return"string"==typeof e&&(e=o(e,i)),t.parentNode&&t.parentNode.replaceChild(e,t),e.appendChild(t),e},S.util.getScrollLeftTop=a,S.util.getElementOffset=function(t){var i,r,n=t&&t.ownerDocument,s={left:0,top:0},o={left:0,top:0},h={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!n)return o;for(var l in h)o[h[l]]+=parseInt(e(t,l),10)||0;return i=n.documentElement,void 0!==t.getBoundingClientRect&&(s=t.getBoundingClientRect()),r=a(t),{left:s.left+r.left-(i.clientLeft||0)+o.left,top:s.top+r.top-(i.clientTop||0)+o.top}},S.util.getNodeCanvas=function(t){var e=S.jsdomImplForWrapper(t);return e._canvas||e._image},S.util.cleanUpJsdomNode=function(t){if(S.isLikelyNode){var e=S.jsdomImplForWrapper(t);e&&(e._image=null,e._canvas=null,e._currentSrc=null,e._attributes=null,e._classList=null)}}}(),function(){function t(){}S.util.request=function(e,i){i||(i={});var r=i.method?i.method.toUpperCase():"GET",n=i.onComplete||function(){},s=new S.window.XMLHttpRequest,o=i.body||i.parameters;return s.onreadystatechange=function(){4===s.readyState&&(n(s),s.onreadystatechange=t)},"GET"===r&&(o=null,"string"==typeof i.parameters&&(e=function(t,e){return t+(/\?/.test(t)?"&":"?")+e}(e,i.parameters))),s.open(r,e,!0),"POST"!==r&&"PUT"!==r||s.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),s.send(o),s}}(),S.log=console.log,S.warn=console.warn,function(){var t=S.util.object.extend,e=S.util.object.clone,i=[];function r(){return!1}function n(t,e,i,r){return-i*Math.cos(t/r*(Math.PI/2))+i+e}S.util.object.extend(i,{cancelAll:function(){var t=this.splice(0);return t.forEach((function(t){t.cancel()})),t},cancelByCanvas:function(t){if(!t)return[];var e=this.filter((function(e){return"object"==typeof e.target&&e.target.canvas===t}));return e.forEach((function(t){t.cancel()})),e},cancelByTarget:function(t){var e=this.findAnimationsByTarget(t);return e.forEach((function(t){t.cancel()})),e},findAnimationIndex:function(t){return this.indexOf(this.findAnimation(t))},findAnimation:function(t){return this.find((function(e){return e.cancel===t}))},findAnimationsByTarget:function(t){return t?this.filter((function(e){return e.target===t})):[]}});var s=S.window.requestAnimationFrame||S.window.webkitRequestAnimationFrame||S.window.mozRequestAnimationFrame||S.window.oRequestAnimationFrame||S.window.msRequestAnimationFrame||function(t){return S.window.setTimeout(t,1e3/60)},o=S.window.cancelAnimationFrame||S.window.clearTimeout;function a(){return s.apply(S.window,arguments)}S.util.animate=function(i){i||(i={});var s,o=!1,h=function(){var t=S.runningAnimations.indexOf(s);return t>-1&&S.runningAnimations.splice(t,1)[0]};return s=t(e(i),{cancel:function(){return o=!0,h()},currentValue:"startValue"in i?i.startValue:0,completionRate:0,durationRate:0}),S.runningAnimations.push(s),a((function(t){var e,l=t||+new Date,c=i.duration||500,u=l+c,d=i.onChange||r,f=i.abort||r,g=i.onComplete||r,m=i.easing||n,p="startValue"in i&&i.startValue.length>0,_="startValue"in i?i.startValue:0,v="endValue"in i?i.endValue:100,y=i.byValue||(p?_.map((function(t,e){return v[e]-_[e]})):v-_);i.onStart&&i.onStart(),function t(i){var r=(e=i||+new Date)>u?c:e-l,n=r/c,w=p?_.map((function(t,e){return m(r,_[e],y[e],c)})):m(r,_,y,c),C=p?Math.abs((w[0]-_[0])/y[0]):Math.abs((w-_)/y);if(s.currentValue=p?w.slice():w,s.completionRate=C,s.durationRate=n,!o){if(!f(w,C,n))return e>u?(s.currentValue=p?v.slice():v,s.completionRate=1,s.durationRate=1,d(p?v.slice():v,1,1),g(v,1,1),void h()):(d(w,C,n),void a(t));h()}}(l)})),s.cancel},S.util.requestAnimFrame=a,S.util.cancelAnimFrame=function(){return o.apply(S.window,arguments)},S.runningAnimations=i}(),function(){function t(t,e,i){var r="rgba("+parseInt(t[0]+i*(e[0]-t[0]),10)+","+parseInt(t[1]+i*(e[1]-t[1]),10)+","+parseInt(t[2]+i*(e[2]-t[2]),10);return(r+=","+(t&&e?parseFloat(t[3]+i*(e[3]-t[3])):1))+")"}S.util.animateColor=function(e,i,r,n){var s=new S.Color(e).getSource(),o=new S.Color(i).getSource(),a=n.onComplete,h=n.onChange;return n=n||{},S.util.animate(S.util.object.extend(n,{duration:r||500,startValue:s,endValue:o,byValue:o,easing:function(e,i,r,s){return t(i,r,n.colorEasing?n.colorEasing(e,s):1-Math.cos(e/s*(Math.PI/2)))},onComplete:function(e,i,r){if(a)return a(t(o,o,0),i,r)},onChange:function(e,i,r){if(h){if(Array.isArray(e))return h(t(e,e,0),i,r);h(e,i,r)}}}))}}(),function(){function t(t,e,i,r){return t-1&&c>-1&&c-1)&&(i="stroke")}else{if("href"===t||"xlink:href"===t||"font"===t)return i;if("imageSmoothing"===t)return"optimizeQuality"===i;a=h?i.map(s):s(i,n)}}else i="";return!h&&isNaN(a)?i:a}function f(t){return new RegExp("^("+t.join("|")+")\\b","i")}function g(t,e){var i,r,n,s,o=[];for(n=0,s=e.length;n1;)h.shift(),l=e.util.multiplyTransformMatrices(l,h[0]);return l}}();var v=new RegExp("^\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*$");function y(t){if(!e.svgViewBoxElementsRegEx.test(t.nodeName))return{};var i,r,n,o,a,h,l=t.getAttribute("viewBox"),c=1,u=1,d=t.getAttribute("width"),f=t.getAttribute("height"),g=t.getAttribute("x")||0,m=t.getAttribute("y")||0,p=t.getAttribute("preserveAspectRatio")||"",_=!l||!(l=l.match(v)),y=!d||!f||"100%"===d||"100%"===f,w=_&&y,C={},E="",T=0,S=0;if(C.width=0,C.height=0,C.toBeParsed=w,_&&(g||m)&&t.parentNode&&"#document"!==t.parentNode.nodeName&&(E=" translate("+s(g)+" "+s(m)+") ",a=(t.getAttribute("transform")||"")+E,t.setAttribute("transform",a),t.removeAttribute("x"),t.removeAttribute("y")),w)return C;if(_)return C.width=s(d),C.height=s(f),C;if(i=-parseFloat(l[1]),r=-parseFloat(l[2]),n=parseFloat(l[3]),o=parseFloat(l[4]),C.minX=i,C.minY=r,C.viewBoxWidth=n,C.viewBoxHeight=o,y?(C.width=n,C.height=o):(C.width=s(d),C.height=s(f),c=C.width/n,u=C.height/o),"none"!==(p=e.util.parsePreserveAspectRatioAttribute(p)).alignX&&("meet"===p.meetOrSlice&&(u=c=c>u?u:c),"slice"===p.meetOrSlice&&(u=c=c>u?c:u),T=C.width-n*c,S=C.height-o*c,"Mid"===p.alignX&&(T/=2),"Mid"===p.alignY&&(S/=2),"Min"===p.alignX&&(T=0),"Min"===p.alignY&&(S=0)),1===c&&1===u&&0===i&&0===r&&0===g&&0===m)return C;if((g||m)&&"#document"!==t.parentNode.nodeName&&(E=" translate("+s(g)+" "+s(m)+") "),a=E+" matrix("+c+" 0 0 "+u+" "+(i*c+T)+" "+(r*u+S)+") ","svg"===t.nodeName){for(h=t.ownerDocument.createElementNS(e.svgNS,"g");t.firstChild;)h.appendChild(t.firstChild);t.appendChild(h)}else(h=t).removeAttribute("x"),h.removeAttribute("y"),a=h.getAttribute("transform")+a;return h.setAttribute("transform",a),C}function w(t,e){var i="xlink:href",r=_(t,e.getAttribute(i).slice(1));if(r&&r.getAttribute(i)&&w(t,r),["gradientTransform","x1","x2","y1","y2","gradientUnits","cx","cy","r","fx","fy"].forEach((function(t){r&&!e.hasAttribute(t)&&r.hasAttribute(t)&&e.setAttribute(t,r.getAttribute(t))})),!e.children.length)for(var n=r.cloneNode(!0);n.firstChild;)e.appendChild(n.firstChild);e.removeAttribute(i)}e.parseSVGDocument=function(t,i,n,s){if(t){!function(t){for(var i=g(t,["use","svg:use"]),r=0;i.length&&rt.x&&this.y>t.y},gte:function(t){return this.x>=t.x&&this.y>=t.y},lerp:function(t,e){return void 0===e&&(e=.5),e=Math.max(Math.min(1,e),0),new i(this.x+(t.x-this.x)*e,this.y+(t.y-this.y)*e)},distanceFrom:function(t){var e=this.x-t.x,i=this.y-t.y;return Math.sqrt(e*e+i*i)},midPointFrom:function(t){return this.lerp(t)},min:function(t){return new i(Math.min(this.x,t.x),Math.min(this.y,t.y))},max:function(t){return new i(Math.max(this.x,t.x),Math.max(this.y,t.y))},toString:function(){return this.x+","+this.y},setXY:function(t,e){return this.x=t,this.y=e,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setFromPoint:function(t){return this.x=t.x,this.y=t.y,this},swap:function(t){var e=this.x,i=this.y;this.x=t.x,this.y=t.y,t.x=e,t.y=i},clone:function(){return new i(this.x,this.y)}})}(e),function(t){var e=t.fabric||(t.fabric={});function i(t){this.status=t,this.points=[]}e.Intersection?e.warn("fabric.Intersection is already defined"):(e.Intersection=i,e.Intersection.prototype={constructor:i,appendPoint:function(t){return this.points.push(t),this},appendPoints:function(t){return this.points=this.points.concat(t),this}},e.Intersection.intersectLineLine=function(t,r,n,s){var o,a=(s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x),h=(r.x-t.x)*(t.y-n.y)-(r.y-t.y)*(t.x-n.x),l=(s.y-n.y)*(r.x-t.x)-(s.x-n.x)*(r.y-t.y);if(0!==l){var c=a/l,u=h/l;0<=c&&c<=1&&0<=u&&u<=1?(o=new i("Intersection")).appendPoint(new e.Point(t.x+c*(r.x-t.x),t.y+c*(r.y-t.y))):o=new i}else o=new i(0===a||0===h?"Coincident":"Parallel");return o},e.Intersection.intersectLinePolygon=function(t,e,r){var n,s,o,a,h=new i,l=r.length;for(a=0;a0&&(h.status="Intersection"),h},e.Intersection.intersectPolygonPolygon=function(t,e){var r,n=new i,s=t.length;for(r=0;r0&&(n.status="Intersection"),n},e.Intersection.intersectPolygonRectangle=function(t,r,n){var s=r.min(n),o=r.max(n),a=new e.Point(o.x,s.y),h=new e.Point(s.x,o.y),l=i.intersectLinePolygon(s,a,t),c=i.intersectLinePolygon(a,o,t),u=i.intersectLinePolygon(o,h,t),d=i.intersectLinePolygon(h,s,t),f=new i;return f.appendPoints(l.points),f.appendPoints(c.points),f.appendPoints(u.points),f.appendPoints(d.points),f.points.length>0&&(f.status="Intersection"),f})}(e),function(t){var e=t.fabric||(t.fabric={});function i(t){t?this._tryParsingColor(t):this.setSource([0,0,0,1])}function r(t,e,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+6*(e-t)*i:i<.5?e:i<2/3?t+(e-t)*(2/3-i)*6:t}e.Color?e.warn("fabric.Color is already defined."):(e.Color=i,e.Color.prototype={_tryParsingColor:function(t){var e;t in i.colorNameMap&&(t=i.colorNameMap[t]),"transparent"===t&&(e=[255,255,255,0]),e||(e=i.sourceFromHex(t)),e||(e=i.sourceFromRgb(t)),e||(e=i.sourceFromHsl(t)),e||(e=[0,0,0,1]),e&&this.setSource(e)},_rgbToHsl:function(t,i,r){t/=255,i/=255,r/=255;var n,s,o,a=e.util.array.max([t,i,r]),h=e.util.array.min([t,i,r]);if(o=(a+h)/2,a===h)n=s=0;else{var l=a-h;switch(s=o>.5?l/(2-a-h):l/(a+h),a){case t:n=(i-r)/l+(i0)-(t<0)||+t};function f(t,e){var i=t.angle+u(Math.atan2(e.y,e.x))+360;return Math.round(i%360/45)}function g(t,i){var r=i.transform.target,n=r.canvas,s=e.util.object.clone(i);s.target=r,n&&n.fire("object:"+t,s),r.fire(t,i)}function m(t,e){var i=e.canvas,r=t[i.uniScaleKey];return i.uniformScaling&&!r||!i.uniformScaling&&r}function p(t){return t.originX===l&&t.originY===l}function _(t,e,i){var r=t.lockScalingX,n=t.lockScalingY;return!((!r||!n)&&(e||!r&&!n||!i)&&(!r||"x"!==e)&&(!n||"y"!==e))}function v(t,e,i,r){return{e:t,transform:e,pointer:{x:i,y:r}}}function y(t){return function(e,i,r,n){var s=i.target,o=s.getCenterPoint(),a=s.translateToOriginPoint(o,i.originX,i.originY),h=t(e,i,r,n);return s.setPositionByOrigin(a,i.originX,i.originY),h}}function w(t,e){return function(i,r,n,s){var o=e(i,r,n,s);return o&&g(t,v(i,r,n,s)),o}}function C(t,i,r,n,s){var o=t.target,a=o.controls[t.corner],h=o.canvas.getZoom(),l=o.padding/h,c=o.toLocalPoint(new e.Point(n,s),i,r);return c.x>=l&&(c.x-=l),c.x<=-l&&(c.x+=l),c.y>=l&&(c.y-=l),c.y<=l&&(c.y+=l),c.x-=a.offsetX,c.y-=a.offsetY,c}function E(t){return t.flipX!==t.flipY}function T(t,e,i,r,n){if(0!==t[e]){var s=n/t._getTransformedDimensions()[r]*t[i];t.set(i,s)}}function S(t,e,i,r){var n,l=e.target,c=l._getTransformedDimensions(0,l.skewY),d=C(e,e.originX,e.originY,i,r),f=Math.abs(2*d.x)-c.x,g=l.skewX;f<2?n=0:(n=u(Math.atan2(f/l.scaleX,c.y/l.scaleY)),e.originX===s&&e.originY===h&&(n=-n),e.originX===a&&e.originY===o&&(n=-n),E(l)&&(n=-n));var m=g!==n;if(m){var p=l._getTransformedDimensions().y;l.set("skewX",n),T(l,"skewY","scaleY","y",p)}return m}function b(t,e,i,r){var n,l=e.target,c=l._getTransformedDimensions(l.skewX,0),d=C(e,e.originX,e.originY,i,r),f=Math.abs(2*d.y)-c.y,g=l.skewY;f<2?n=0:(n=u(Math.atan2(f/l.scaleY,c.x/l.scaleX)),e.originX===s&&e.originY===h&&(n=-n),e.originX===a&&e.originY===o&&(n=-n),E(l)&&(n=-n));var m=g!==n;if(m){var p=l._getTransformedDimensions().x;l.set("skewY",n),T(l,"skewX","scaleX","x",p)}return m}function I(t,e,i,r,n){n=n||{};var s,o,a,h,l,u,f=e.target,g=f.lockScalingX,v=f.lockScalingY,y=n.by,w=m(t,f),E=_(f,y,w),T=e.gestureScale;if(E)return!1;if(T)o=e.scaleX*T,a=e.scaleY*T;else{if(s=C(e,e.originX,e.originY,i,r),l="y"!==y?d(s.x):1,u="x"!==y?d(s.y):1,e.signX||(e.signX=l),e.signY||(e.signY=u),f.lockScalingFlip&&(e.signX!==l||e.signY!==u))return!1;if(h=f._getTransformedDimensions(),w&&!y){var S=Math.abs(s.x)+Math.abs(s.y),b=e.original,I=S/(Math.abs(h.x*b.scaleX/f.scaleX)+Math.abs(h.y*b.scaleY/f.scaleY));o=b.scaleX*I,a=b.scaleY*I}else o=Math.abs(s.x*f.scaleX/h.x),a=Math.abs(s.y*f.scaleY/h.y);p(e)&&(o*=2,a*=2),e.signX!==l&&"y"!==y&&(e.originX=c[e.originX],o*=-1,e.signX=l),e.signY!==u&&"x"!==y&&(e.originY=c[e.originY],a*=-1,e.signY=u)}var x=f.scaleX,A=f.scaleY;return y?("x"===y&&f.set("scaleX",o),"y"===y&&f.set("scaleY",a)):(!g&&f.set("scaleX",o),!v&&f.set("scaleY",a)),x!==f.scaleX||A!==f.scaleY}n.scaleCursorStyleHandler=function(t,e,r){var n=m(t,r),s="";if(0!==e.x&&0===e.y?s="x":0===e.x&&0!==e.y&&(s="y"),_(r,s,n))return"not-allowed";var o=f(r,e);return i[o]+"-resize"},n.skewCursorStyleHandler=function(t,e,i){var n="not-allowed";if(0!==e.x&&i.lockSkewingY)return n;if(0!==e.y&&i.lockSkewingX)return n;var s=f(i,e)%4;return r[s]+"-resize"},n.scaleSkewCursorStyleHandler=function(t,e,i){return t[i.canvas.altActionKey]?n.skewCursorStyleHandler(t,e,i):n.scaleCursorStyleHandler(t,e,i)},n.rotationWithSnapping=w("rotating",y((function(t,e,i,r){var n=e,s=n.target,o=s.translateToOriginPoint(s.getCenterPoint(),n.originX,n.originY);if(s.lockRotation)return!1;var a,h=Math.atan2(n.ey-o.y,n.ex-o.x),l=Math.atan2(r-o.y,i-o.x),c=u(l-h+n.theta);if(s.snapAngle>0){var d=s.snapAngle,f=s.snapThreshold||d,g=Math.ceil(c/d)*d,m=Math.floor(c/d)*d;Math.abs(c-m)0?s:a:(c>0&&(n=u===o?s:a),c<0&&(n=u===o?a:s),E(h)&&(n=n===s?a:s)),e.originX=n,w("skewing",y(S))(t,e,i,r))},n.skewHandlerY=function(t,e,i,r){var n,a=e.target,c=a.skewY,u=e.originX;return!a.lockSkewingY&&(0===c?n=C(e,l,l,i,r).y>0?o:h:(c>0&&(n=u===s?o:h),c<0&&(n=u===s?h:o),E(a)&&(n=n===o?h:o)),e.originY=n,w("skewing",y(b))(t,e,i,r))},n.dragHandler=function(t,e,i,r){var n=e.target,s=i-e.offsetX,o=r-e.offsetY,a=!n.get("lockMovementX")&&n.left!==s,h=!n.get("lockMovementY")&&n.top!==o;return a&&n.set("left",s),h&&n.set("top",o),(a||h)&&g("moving",v(t,e,i,r)),a||h},n.scaleOrSkewActionName=function(t,e,i){var r=t[i.canvas.altActionKey];return 0===e.x?r?"skewX":"scaleY":0===e.y?r?"skewY":"scaleX":void 0},n.rotationStyleHandler=function(t,e,i){return i.lockRotation?"not-allowed":e.cursorStyle},n.fireEvent=g,n.wrapWithFixedAnchor=y,n.wrapWithFireEvent=w,n.getLocalPoint=C,e.controlsUtils=n}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.degreesToRadians,r=e.controlsUtils;r.renderCircleControl=function(t,e,i,r,n){r=r||{};var s,o=this.sizeX||r.cornerSize||n.cornerSize,a=this.sizeY||r.cornerSize||n.cornerSize,h=void 0!==r.transparentCorners?r.transparentCorners:n.transparentCorners,l=h?"stroke":"fill",c=!h&&(r.cornerStrokeColor||n.cornerStrokeColor),u=e,d=i;t.save(),t.fillStyle=r.cornerColor||n.cornerColor,t.strokeStyle=r.cornerStrokeColor||n.cornerStrokeColor,o>a?(s=o,t.scale(1,a/o),d=i*o/a):a>o?(s=a,t.scale(o/a,1),u=e*a/o):s=o,t.lineWidth=1,t.beginPath(),t.arc(u,d,s/2,0,2*Math.PI,!1),t[l](),c&&t.stroke(),t.restore()},r.renderSquareControl=function(t,e,r,n,s){n=n||{};var o=this.sizeX||n.cornerSize||s.cornerSize,a=this.sizeY||n.cornerSize||s.cornerSize,h=void 0!==n.transparentCorners?n.transparentCorners:s.transparentCorners,l=h?"stroke":"fill",c=!h&&(n.cornerStrokeColor||s.cornerStrokeColor),u=o/2,d=a/2;t.save(),t.fillStyle=n.cornerColor||s.cornerColor,t.strokeStyle=n.cornerStrokeColor||s.cornerStrokeColor,t.lineWidth=1,t.translate(e,r),t.rotate(i(s.angle)),t[l+"Rect"](-u,-d,o,a),c&&t.strokeRect(-u,-d,o,a),t.restore()}}(e),function(t){var e=t.fabric||(t.fabric={});e.Control=function(t){for(var e in t)this[e]=t[e]},e.Control.prototype={visible:!0,actionName:"scale",angle:0,x:0,y:0,offsetX:0,offsetY:0,sizeX:null,sizeY:null,touchSizeX:null,touchSizeY:null,cursorStyle:"crosshair",withConnection:!1,actionHandler:function(){},mouseDownHandler:function(){},mouseUpHandler:function(){},getActionHandler:function(){return this.actionHandler},getMouseDownHandler:function(){return this.mouseDownHandler},getMouseUpHandler:function(){return this.mouseUpHandler},cursorStyleHandler:function(t,e){return e.cursorStyle},getActionName:function(t,e){return e.actionName},getVisibility:function(t,e){var i=t._controlsVisibility;return i&&void 0!==i[e]?i[e]:this.visible},setVisibility:function(t){this.visible=t},positionHandler:function(t,i){return e.util.transformPoint({x:this.x*t.x+this.offsetX,y:this.y*t.y+this.offsetY},i)},calcCornerCoords:function(t,i,r,n,s){var o,a,h,l,c=s?this.touchSizeX:this.sizeX,u=s?this.touchSizeY:this.sizeY;if(c&&u&&c!==u){var d=Math.atan2(u,c),f=Math.sqrt(c*c+u*u)/2,g=d-e.util.degreesToRadians(t),m=Math.PI/2-d-e.util.degreesToRadians(t);o=f*e.util.cos(g),a=f*e.util.sin(g),h=f*e.util.cos(m),l=f*e.util.sin(m)}else f=.7071067812*(c&&u?c:i),g=e.util.degreesToRadians(45-t),o=h=f*e.util.cos(g),a=l=f*e.util.sin(g);return{tl:{x:r-l,y:n-h},tr:{x:r+o,y:n-a},bl:{x:r-o,y:n+a},br:{x:r+l,y:n+h}}},render:function(t,i,r,n,s){"circle"===((n=n||{}).cornerStyle||s.cornerStyle)?e.controlsUtils.renderCircleControl.call(this,t,i,r,n,s):e.controlsUtils.renderSquareControl.call(this,t,i,r,n,s)}}}(e),function(){function t(t,e){var i,r,n,s,o=t.getAttribute("style"),a=t.getAttribute("offset")||0;if(a=(a=parseFloat(a)/(/%$/.test(a)?100:1))<0?0:a>1?1:a,o){var h=o.split(/\s*;\s*/);for(""===h[h.length-1]&&h.pop(),s=h.length;s--;){var l=h[s].split(/\s*:\s*/),c=l[0].trim(),u=l[1].trim();"stop-color"===c?i=u:"stop-opacity"===c&&(n=u)}}return i||(i=t.getAttribute("stop-color")||"rgb(0,0,0)"),n||(n=t.getAttribute("stop-opacity")),r=(i=new S.Color(i)).getAlpha(),n=isNaN(parseFloat(n))?1:parseFloat(n),n*=r*e,{offset:a,color:i.toRgb(),opacity:n}}var e=S.util.object.clone;S.Gradient=S.util.createClass({offsetX:0,offsetY:0,gradientTransform:null,gradientUnits:"pixels",type:"linear",initialize:function(t){t||(t={}),t.coords||(t.coords={});var e,i=this;Object.keys(t).forEach((function(e){i[e]=t[e]})),this.id?this.id+="_"+S.Object.__uid++:this.id=S.Object.__uid++,e={x1:t.coords.x1||0,y1:t.coords.y1||0,x2:t.coords.x2||0,y2:t.coords.y2||0},"radial"===this.type&&(e.r1=t.coords.r1||0,e.r2=t.coords.r2||0),this.coords=e,this.colorStops=t.colorStops.slice()},addColorStop:function(t){for(var e in t){var i=new S.Color(t[e]);this.colorStops.push({offset:parseFloat(e),color:i.toRgb(),opacity:i.getAlpha()})}return this},toObject:function(t){var e={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return S.util.populateWithProperties(this,e,t),e},toSVG:function(t,i){var r,n,s,o,a=e(this.coords,!0),h=(i=i||{},e(this.colorStops,!0)),l=a.r1>a.r2,c=this.gradientTransform?this.gradientTransform.concat():S.iMatrix.concat(),u=-this.offsetX,d=-this.offsetY,f=!!i.additionalTransform,g="pixels"===this.gradientUnits?"userSpaceOnUse":"objectBoundingBox";if(h.sort((function(t,e){return t.offset-e.offset})),"objectBoundingBox"===g?(u/=t.width,d/=t.height):(u+=t.width/2,d+=t.height/2),"path"===t.type&&"percentage"!==this.gradientUnits&&(u-=t.pathOffset.x,d-=t.pathOffset.y),c[4]-=u,c[5]-=d,o='id="SVGID_'+this.id+'" gradientUnits="'+g+'"',o+=' gradientTransform="'+(f?i.additionalTransform+" ":"")+S.util.matrixToSVG(c)+'" ',"linear"===this.type?s=["\n']:"radial"===this.type&&(s=["\n']),"radial"===this.type){if(l)for((h=h.concat()).reverse(),r=0,n=h.length;r0){var p=m/Math.max(a.r1,a.r2);for(r=0,n=h.length;r\n')}return s.push("linear"===this.type?"\n":"\n"),s.join("")},toLive:function(t){var e,i,r,n=S.util.object.clone(this.coords);if(this.type){for("linear"===this.type?e=t.createLinearGradient(n.x1,n.y1,n.x2,n.y2):"radial"===this.type&&(e=t.createRadialGradient(n.x1,n.y1,n.r1,n.x2,n.y2,n.r2)),i=0,r=this.colorStops.length;i1?1:s,isNaN(s)&&(s=1);var o,a,h,l,c=e.getElementsByTagName("stop"),u="userSpaceOnUse"===e.getAttribute("gradientUnits")?"pixels":"percentage",d=e.getAttribute("gradientTransform")||"",f=[],g=0,m=0;for("linearGradient"===e.nodeName||"LINEARGRADIENT"===e.nodeName?(o="linear",a=function(t){return{x1:t.getAttribute("x1")||0,y1:t.getAttribute("y1")||0,x2:t.getAttribute("x2")||"100%",y2:t.getAttribute("y2")||0}}(e)):(o="radial",a=function(t){return{x1:t.getAttribute("fx")||t.getAttribute("cx")||"50%",y1:t.getAttribute("fy")||t.getAttribute("cy")||"50%",r1:0,x2:t.getAttribute("cx")||"50%",y2:t.getAttribute("cy")||"50%",r2:t.getAttribute("r")||"50%"}}(e)),h=c.length;h--;)f.push(t(c[h],s));return l=S.parseTransformAttribute(d),function(t,e,i,r){var n,s;Object.keys(e).forEach((function(t){"Infinity"===(n=e[t])?s=1:"-Infinity"===n?s=0:(s=parseFloat(e[t],10),"string"==typeof n&&/^(\d+\.\d+)%|(\d+)%$/.test(n)&&(s*=.01,"pixels"===r&&("x1"!==t&&"x2"!==t&&"r2"!==t||(s*=i.viewBoxWidth||i.width),"y1"!==t&&"y2"!==t||(s*=i.viewBoxHeight||i.height)))),e[t]=s}))}(0,a,n,u),"pixels"===u&&(g=-i.left,m=-i.top),new S.Gradient({id:e.getAttribute("id"),type:o,coords:a,colorStops:f,gradientUnits:u,gradientTransform:l,offsetX:g,offsetY:m})}})}(),_=S.util.toFixed,S.Pattern=S.util.createClass({repeat:"repeat",offsetX:0,offsetY:0,crossOrigin:"",patternTransform:null,initialize:function(t,e){if(t||(t={}),this.id=S.Object.__uid++,this.setOptions(t),!t.source||t.source&&"string"!=typeof t.source)e&&e(this);else{var i=this;this.source=S.util.createImage(),S.util.loadImage(t.source,(function(t,r){i.source=t,e&&e(i,r)}),null,this.crossOrigin)}},toObject:function(t){var e,i,r=S.Object.NUM_FRACTION_DIGITS;return"string"==typeof this.source.src?e=this.source.src:"object"==typeof this.source&&this.source.toDataURL&&(e=this.source.toDataURL()),i={type:"pattern",source:e,repeat:this.repeat,crossOrigin:this.crossOrigin,offsetX:_(this.offsetX,r),offsetY:_(this.offsetY,r),patternTransform:this.patternTransform?this.patternTransform.concat():null},S.util.populateWithProperties(this,i,t),i},toSVG:function(t){var e="function"==typeof this.source?this.source():this.source,i=e.width/t.width,r=e.height/t.height,n=this.offsetX/t.width,s=this.offsetY/t.height,o="";return"repeat-x"!==this.repeat&&"no-repeat"!==this.repeat||(r=1,s&&(r+=Math.abs(s))),"repeat-y"!==this.repeat&&"no-repeat"!==this.repeat||(i=1,n&&(i+=Math.abs(n))),e.src?o=e.src:e.toDataURL&&(o=e.toDataURL()),'\n\n\n'},setOptions:function(t){for(var e in t)this[e]=t[e]},toLive:function(t){var e=this.source;if(!e)return"";if(void 0!==e.src){if(!e.complete)return"";if(0===e.naturalWidth||0===e.naturalHeight)return""}return t.createPattern(e,this.repeat)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.toFixed;e.Shadow?e.warn("fabric.Shadow is already defined."):(e.Shadow=e.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1,initialize:function(t){for(var i in"string"==typeof t&&(t=this._parseShadow(t)),t)this[i]=t[i];this.id=e.Object.__uid++},_parseShadow:function(t){var i=t.trim(),r=e.Shadow.reOffsetsAndBlur.exec(i)||[];return{color:(i.replace(e.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)").trim(),offsetX:parseFloat(r[1],10)||0,offsetY:parseFloat(r[2],10)||0,blur:parseFloat(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(t){var r=40,n=40,s=e.Object.NUM_FRACTION_DIGITS,o=e.util.rotateVector({x:this.offsetX,y:this.offsetY},e.util.degreesToRadians(-t.angle)),a=new e.Color(this.color);return t.width&&t.height&&(r=100*i((Math.abs(o.x)+this.blur)/t.width,s)+20,n=100*i((Math.abs(o.y)+this.blur)/t.height,s)+20),t.flipX&&(o.x*=-1),t.flipY&&(o.y*=-1),'\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\n\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling};var t={},i=e.Shadow.prototype;return["color","blur","offsetX","offsetY","affectStroke","nonScaling"].forEach((function(e){this[e]!==i[e]&&(t[e]=this[e])}),this),t}}),e.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(\d+(?:\.\d*)?(?:px)?)?(?:\s?|$)(?:$|\s)/)}(e),function(){if(S.StaticCanvas)S.warn("fabric.StaticCanvas is already defined.");else{var t=S.util.object.extend,e=S.util.getElementOffset,i=S.util.removeFromArray,r=S.util.toFixed,n=S.util.transformPoint,s=S.util.invertTransform,o=S.util.getNodeCanvas,a=S.util.createCanvasElement,h=new Error("Could not initialize `canvas` element");S.StaticCanvas=S.util.createClass(S.CommonMethods,{initialize:function(t,e){e||(e={}),this.renderAndResetBound=this.renderAndReset.bind(this),this.requestRenderAllBound=this.requestRenderAll.bind(this),this._initStatic(t,e)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!1,renderOnAddRemove:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:S.iMatrix.concat(),backgroundVpt:!0,overlayVpt:!0,enableRetinaScaling:!0,vptCoords:{},skipOffscreen:!0,clipPath:void 0,_initStatic:function(t,e){var i=this.requestRenderAllBound;this._objects=[],this._createLowerCanvas(t),this._initOptions(e),this.interactive||this._initRetinaScaling(),e.overlayImage&&this.setOverlayImage(e.overlayImage,i),e.backgroundImage&&this.setBackgroundImage(e.backgroundImage,i),e.backgroundColor&&this.setBackgroundColor(e.backgroundColor,i),e.overlayColor&&this.setOverlayColor(e.overlayColor,i),this.calcOffset()},_isRetinaScaling:function(){return S.devicePixelRatio>1&&this.enableRetinaScaling},getRetinaScaling:function(){return this._isRetinaScaling()?Math.max(1,S.devicePixelRatio):1},_initRetinaScaling:function(){if(this._isRetinaScaling()){var t=S.devicePixelRatio;this.__initRetinaScaling(t,this.lowerCanvasEl,this.contextContainer),this.upperCanvasEl&&this.__initRetinaScaling(t,this.upperCanvasEl,this.contextTop)}},__initRetinaScaling:function(t,e,i){e.setAttribute("width",this.width*t),e.setAttribute("height",this.height*t),i.scale(t,t)},calcOffset:function(){return this._offset=e(this.lowerCanvasEl),this},setOverlayImage:function(t,e,i){return this.__setBgOverlayImage("overlayImage",t,e,i)},setBackgroundImage:function(t,e,i){return this.__setBgOverlayImage("backgroundImage",t,e,i)},setOverlayColor:function(t,e){return this.__setBgOverlayColor("overlayColor",t,e)},setBackgroundColor:function(t,e){return this.__setBgOverlayColor("backgroundColor",t,e)},__setBgOverlayImage:function(t,e,i,r){return"string"==typeof e?S.util.loadImage(e,(function(e,n){if(e){var s=new S.Image(e,r);this[t]=s,s.canvas=this}i&&i(e,n)}),this,r&&r.crossOrigin):(r&&e.setOptions(r),this[t]=e,e&&(e.canvas=this),i&&i(e,!1)),this},__setBgOverlayColor:function(t,e,i){return this[t]=e,this._initGradient(e,t),this._initPattern(e,t,i),this},_createCanvasElement:function(){var t=a();if(!t)throw h;if(t.style||(t.style={}),void 0===t.getContext)throw h;return t},_initOptions:function(t){var e=this.lowerCanvasEl;this._setOptions(t),this.width=this.width||parseInt(e.width,10)||0,this.height=this.height||parseInt(e.height,10)||0,this.lowerCanvasEl.style&&(e.width=this.width,e.height=this.height,e.style.width=this.width+"px",e.style.height=this.height+"px",this.viewportTransform=this.viewportTransform.slice())},_createLowerCanvas:function(t){t&&t.getContext?this.lowerCanvasEl=t:this.lowerCanvasEl=S.util.getById(t)||this._createCanvasElement(),S.util.addClass(this.lowerCanvasEl,"lower-canvas"),this._originalCanvasStyle=this.lowerCanvasEl.style,this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(t,e){return this.setDimensions({width:t},e)},setHeight:function(t,e){return this.setDimensions({height:t},e)},setDimensions:function(t,e){var i;for(var r in e=e||{},t)i=t[r],e.cssOnly||(this._setBackstoreDimension(r,t[r]),i+="px",this.hasLostContext=!0),e.backstoreOnly||this._setCssDimension(r,i);return this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(this.contextTop),this._initRetinaScaling(),this.calcOffset(),e.cssOnly||this.requestRenderAll(),this},_setBackstoreDimension:function(t,e){return this.lowerCanvasEl[t]=e,this.upperCanvasEl&&(this.upperCanvasEl[t]=e),this.cacheCanvasEl&&(this.cacheCanvasEl[t]=e),this[t]=e,this},_setCssDimension:function(t,e){return this.lowerCanvasEl.style[t]=e,this.upperCanvasEl&&(this.upperCanvasEl.style[t]=e),this.wrapperEl&&(this.wrapperEl.style[t]=e),this},getZoom:function(){return this.viewportTransform[0]},setViewportTransform:function(t){var e,i,r,n=this._activeObject,s=this.backgroundImage,o=this.overlayImage;for(this.viewportTransform=t,i=0,r=this._objects.length;i\n'),this._setSVGBgOverlayColor(i,"background"),this._setSVGBgOverlayImage(i,"backgroundImage",e),this._setSVGObjects(i,e),this.clipPath&&i.push("\n"),this._setSVGBgOverlayColor(i,"overlay"),this._setSVGBgOverlayImage(i,"overlayImage",e),i.push(""),i.join("")},_setSVGPreamble:function(t,e){e.suppressPreamble||t.push('\n','\n')},_setSVGHeader:function(t,e){var i,n=e.width||this.width,s=e.height||this.height,o='viewBox="0 0 '+this.width+" "+this.height+'" ',a=S.Object.NUM_FRACTION_DIGITS;e.viewBox?o='viewBox="'+e.viewBox.x+" "+e.viewBox.y+" "+e.viewBox.width+" "+e.viewBox.height+'" ':this.svgViewportTransformation&&(i=this.viewportTransform,o='viewBox="'+r(-i[4]/i[0],a)+" "+r(-i[5]/i[3],a)+" "+r(this.width/i[0],a)+" "+r(this.height/i[3],a)+'" '),t.push("\n',"Created with Fabric.js ",S.version,"\n","\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(e),"\n")},createSVGClipPathMarkup:function(t){var e=this.clipPath;return e?(e.clipPathId="CLIPPATH_"+S.Object.__uid++,'\n'+this.clipPath.toClipPathSVG(t.reviver)+"\n"):""},createSVGRefElementsMarkup:function(){var t=this;return["background","overlay"].map((function(e){var i=t[e+"Color"];if(i&&i.toLive){var r=t[e+"Vpt"],n=t.viewportTransform,s={width:t.width/(r?n[0]:1),height:t.height/(r?n[3]:1)};return i.toSVG(s,{additionalTransform:r?S.util.matrixToSVG(n):""})}})).join("")},createSVGFontFacesMarkup:function(){var t,e,i,r,n,s,o,a,h="",l={},c=S.fontPaths,u=[];for(this._objects.forEach((function t(e){u.push(e),e._objects&&e._objects.forEach(t)})),o=0,a=u.length;o',"\n",h,"","\n"].join("")),h},_setSVGObjects:function(t,e){var i,r,n,s=this._objects;for(r=0,n=s.length;r\n")}else t.push('\n")},sendToBack:function(t){if(!t)return this;var e,r,n,s=this._activeObject;if(t===s&&"activeSelection"===t.type)for(e=(n=s._objects).length;e--;)r=n[e],i(this._objects,r),this._objects.unshift(r);else i(this._objects,t),this._objects.unshift(t);return this.renderOnAddRemove&&this.requestRenderAll(),this},bringToFront:function(t){if(!t)return this;var e,r,n,s=this._activeObject;if(t===s&&"activeSelection"===t.type)for(n=s._objects,e=0;e0+l&&(o=s-1,i(this._objects,n),this._objects.splice(o,0,n)),l++;else 0!==(s=this._objects.indexOf(t))&&(o=this._findNewLowerIndex(t,s,e),i(this._objects,t),this._objects.splice(o,0,t));return this.renderOnAddRemove&&this.requestRenderAll(),this},_findNewLowerIndex:function(t,e,i){var r,n;if(i){for(r=e,n=e-1;n>=0;--n)if(t.intersectsWithObject(this._objects[n])||t.isContainedWithinObject(this._objects[n])||this._objects[n].isContainedWithinObject(t)){r=n;break}}else r=e-1;return r},bringForward:function(t,e){if(!t)return this;var r,n,s,o,a,h=this._activeObject,l=0;if(t===h&&"activeSelection"===t.type)for(r=(a=h._objects).length;r--;)n=a[r],(s=this._objects.indexOf(n))"}}),t(S.StaticCanvas.prototype,S.Observable),t(S.StaticCanvas.prototype,S.Collection),t(S.StaticCanvas.prototype,S.DataURLExporter),t(S.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(t){var e=a();if(!e||!e.getContext)return null;var i=e.getContext("2d");return i&&"setLineDash"===t?void 0!==i.setLineDash:null}}),S.StaticCanvas.prototype.toJSON=S.StaticCanvas.prototype.toObject,S.isLikelyNode&&(S.StaticCanvas.prototype.createPNGStream=function(){var t=o(this.lowerCanvasEl);return t&&t.createPNGStream()},S.StaticCanvas.prototype.createJPEGStream=function(t){var e=o(this.lowerCanvasEl);return e&&e.createJPEGStream(t)})}}(),S.BaseBrush=S.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",strokeMiterLimit:10,strokeDashArray:null,limitedToCanvasSize:!1,_setBrushStyles:function(t){t.strokeStyle=this.color,t.lineWidth=this.width,t.lineCap=this.strokeLineCap,t.miterLimit=this.strokeMiterLimit,t.lineJoin=this.strokeLineJoin,t.setLineDash(this.strokeDashArray||[])},_saveAndTransform:function(t){var e=this.canvas.viewportTransform;t.save(),t.transform(e[0],e[1],e[2],e[3],e[4],e[5])},_setShadow:function(){if(this.shadow){var t=this.canvas,e=this.shadow,i=t.contextTop,r=t.getZoom();t&&t._isRetinaScaling()&&(r*=S.devicePixelRatio),i.shadowColor=e.color,i.shadowBlur=e.blur*r,i.shadowOffsetX=e.offsetX*r,i.shadowOffsetY=e.offsetY*r}},needsFullRender:function(){return new S.Color(this.color).getAlpha()<1||!!this.shadow},_resetShadow:function(){var t=this.canvas.contextTop;t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0},_isOutSideCanvas:function(t){return t.x<0||t.x>this.canvas.getWidth()||t.y<0||t.y>this.canvas.getHeight()}}),S.PencilBrush=S.util.createClass(S.BaseBrush,{decimate:.4,drawStraightLine:!1,straightLineKey:"shiftKey",initialize:function(t){this.canvas=t,this._points=[]},needsFullRender:function(){return this.callSuper("needsFullRender")||this._hasStraightLine},_drawSegment:function(t,e,i){var r=e.midPointFrom(i);return t.quadraticCurveTo(e.x,e.y,r.x,r.y),r},onMouseDown:function(t,e){this.canvas._isMainEvent(e.e)&&(this.drawStraightLine=e.e[this.straightLineKey],this._prepareForDrawing(t),this._captureDrawingPath(t),this._render())},onMouseMove:function(t,e){if(this.canvas._isMainEvent(e.e)&&(this.drawStraightLine=e.e[this.straightLineKey],(!0!==this.limitedToCanvasSize||!this._isOutSideCanvas(t))&&this._captureDrawingPath(t)&&this._points.length>1))if(this.needsFullRender())this.canvas.clearContext(this.canvas.contextTop),this._render();else{var i=this._points,r=i.length,n=this.canvas.contextTop;this._saveAndTransform(n),this.oldEnd&&(n.beginPath(),n.moveTo(this.oldEnd.x,this.oldEnd.y)),this.oldEnd=this._drawSegment(n,i[r-2],i[r-1],!0),n.stroke(),n.restore()}},onMouseUp:function(t){return!this.canvas._isMainEvent(t.e)||(this.drawStraightLine=!1,this.oldEnd=void 0,this._finalizeAndAddPath(),!1)},_prepareForDrawing:function(t){var e=new S.Point(t.x,t.y);this._reset(),this._addPoint(e),this.canvas.contextTop.moveTo(e.x,e.y)},_addPoint:function(t){return!(this._points.length>1&&t.eq(this._points[this._points.length-1])||(this.drawStraightLine&&this._points.length>1&&(this._hasStraightLine=!0,this._points.pop()),this._points.push(t),0))},_reset:function(){this._points=[],this._setBrushStyles(this.canvas.contextTop),this._setShadow(),this._hasStraightLine=!1},_captureDrawingPath:function(t){var e=new S.Point(t.x,t.y);return this._addPoint(e)},_render:function(t){var e,i,r=this._points[0],n=this._points[1];if(t=t||this.canvas.contextTop,this._saveAndTransform(t),t.beginPath(),2===this._points.length&&r.x===n.x&&r.y===n.y){var s=this.width/1e3;r=new S.Point(r.x,r.y),n=new S.Point(n.x,n.y),r.x-=s,n.x+=s}for(t.moveTo(r.x,r.y),e=1,i=this._points.length;e=n&&(o=t[i],a.push(o));return a.push(t[s]),a},_finalizeAndAddPath:function(){this.canvas.contextTop.closePath(),this.decimate&&(this._points=this.decimatePoints(this._points,this.decimate));var t=this.convertPointsToSVGPath(this._points);if(this._isEmptySVGPath(t))this.canvas.requestRenderAll();else{var e=this.createPath(t);this.canvas.clearContext(this.canvas.contextTop),this.canvas.fire("before:path:created",{path:e}),this.canvas.add(e),this.canvas.requestRenderAll(),e.setCoords(),this._resetShadow(),this.canvas.fire("path:created",{path:e})}}}),S.CircleBrush=S.util.createClass(S.BaseBrush,{width:10,initialize:function(t){this.canvas=t,this.points=[]},drawDot:function(t){var e=this.addPoint(t),i=this.canvas.contextTop;this._saveAndTransform(i),this.dot(i,e),i.restore()},dot:function(t,e){t.fillStyle=e.fill,t.beginPath(),t.arc(e.x,e.y,e.radius,0,2*Math.PI,!1),t.closePath(),t.fill()},onMouseDown:function(t){this.points.length=0,this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.drawDot(t)},_render:function(){var t,e,i=this.canvas.contextTop,r=this.points;for(this._saveAndTransform(i),t=0,e=r.length;t0&&!this.preserveObjectStacking){e=[],i=[];for(var n=0,s=this._objects.length;n1&&(this._activeObject._objects=i),e.push.apply(e,i)}else e=this._objects;return e},renderAll:function(){!this.contextTopDirty||this._groupSelector||this.isDrawingMode||(this.clearContext(this.contextTop),this.contextTopDirty=!1),this.hasLostContext&&(this.renderTopLayer(this.contextTop),this.hasLostContext=!1);var t=this.contextContainer;return this.renderCanvas(t,this._chooseObjectsToRender()),this},renderTopLayer:function(t){t.save(),this.isDrawingMode&&this._isCurrentlyDrawing&&(this.freeDrawingBrush&&this.freeDrawingBrush._render(),this.contextTopDirty=!0),this.selection&&this._groupSelector&&(this._drawSelection(t),this.contextTopDirty=!0),t.restore()},renderTop:function(){var t=this.contextTop;return this.clearContext(t),this.renderTopLayer(t),this.fire("after:render"),this},_normalizePointer:function(t,e){var i=t.calcTransformMatrix(),r=S.util.invertTransform(i),n=this.restorePointerVpt(e);return S.util.transformPoint(n,r)},isTargetTransparent:function(t,e,i){if(t.shouldCache()&&t._cacheCanvas&&t!==this._activeObject){var r=this._normalizePointer(t,{x:e,y:i}),n=Math.max(t.cacheTranslationX+r.x*t.zoomX,0),s=Math.max(t.cacheTranslationY+r.y*t.zoomY,0);return S.util.isTransparent(t._cacheContext,Math.round(n),Math.round(s),this.targetFindTolerance)}var o=this.contextCache,a=t.selectionBackgroundColor,h=this.viewportTransform;return t.selectionBackgroundColor="",this.clearContext(o),o.save(),o.transform(h[0],h[1],h[2],h[3],h[4],h[5]),t.render(o),o.restore(),t.selectionBackgroundColor=a,S.util.isTransparent(o,e,i,this.targetFindTolerance)},_isSelectionKeyPressed:function(t){return Array.isArray(this.selectionKey)?!!this.selectionKey.find((function(e){return!0===t[e]})):t[this.selectionKey]},_shouldClearSelection:function(t,e){var i=this.getActiveObjects(),r=this._activeObject;return!e||e&&r&&i.length>1&&-1===i.indexOf(e)&&r!==e&&!this._isSelectionKeyPressed(t)||e&&!e.evented||e&&!e.selectable&&r&&r!==e},_shouldCenterTransform:function(t,e,i){var r;if(t)return"scale"===e||"scaleX"===e||"scaleY"===e||"resizing"===e?r=this.centeredScaling||t.centeredScaling:"rotate"===e&&(r=this.centeredRotation||t.centeredRotation),r?!i:i},_getOriginFromCorner:function(t,e){var i={x:t.originX,y:t.originY};return"ml"===e||"tl"===e||"bl"===e?i.x="right":"mr"!==e&&"tr"!==e&&"br"!==e||(i.x="left"),"tl"===e||"mt"===e||"tr"===e?i.y="bottom":"bl"!==e&&"mb"!==e&&"br"!==e||(i.y="top"),i},_getActionFromCorner:function(t,e,i,r){if(!e||!t)return"drag";var n=r.controls[e];return n.getActionName(i,n,r)},_setupCurrentTransform:function(t,i,r){if(i){var n=this.getPointer(t),s=i.__corner,o=i.controls[s],a=r&&s?o.getActionHandler(t,i,o):S.controlsUtils.dragHandler,h=this._getActionFromCorner(r,s,t,i),l=this._getOriginFromCorner(i,s),c=t[this.centeredKey],u={target:i,action:h,actionHandler:a,corner:s,scaleX:i.scaleX,scaleY:i.scaleY,skewX:i.skewX,skewY:i.skewY,offsetX:n.x-i.left,offsetY:n.y-i.top,originX:l.x,originY:l.y,ex:n.x,ey:n.y,lastX:n.x,lastY:n.y,theta:e(i.angle),width:i.width*i.scaleX,shiftKey:t.shiftKey,altKey:c,original:S.util.saveObjectTransform(i)};this._shouldCenterTransform(i,h,c)&&(u.originX="center",u.originY="center"),u.original.originX=l.x,u.original.originY=l.y,this._currentTransform=u,this._beforeTransform(t)}},setCursor:function(t){this.upperCanvasEl.style.cursor=t},_drawSelection:function(t){var e=this._groupSelector,i=new S.Point(e.ex,e.ey),r=S.util.transformPoint(i,this.viewportTransform),n=new S.Point(e.ex+e.left,e.ey+e.top),s=S.util.transformPoint(n,this.viewportTransform),o=Math.min(r.x,s.x),a=Math.min(r.y,s.y),h=Math.max(r.x,s.x),l=Math.max(r.y,s.y),c=this.selectionLineWidth/2;this.selectionColor&&(t.fillStyle=this.selectionColor,t.fillRect(o,a,h-o,l-a)),this.selectionLineWidth&&this.selectionBorderColor&&(t.lineWidth=this.selectionLineWidth,t.strokeStyle=this.selectionBorderColor,o+=c,a+=c,h-=c,l-=c,S.Object.prototype._setLineDash.call(this,t,this.selectionDashArray),t.strokeRect(o,a,h-o,l-a))},findTarget:function(t,e){if(!this.skipTargetFind){var r,n,s=this.getPointer(t,!0),o=this._activeObject,a=this.getActiveObjects(),h=i(t),l=a.length>1&&!e||1===a.length;if(this.targets=[],l&&o._findTargetCorner(s,h))return o;if(a.length>1&&!e&&o===this._searchPossibleTargets([o],s))return o;if(1===a.length&&o===this._searchPossibleTargets([o],s)){if(!this.preserveObjectStacking)return o;r=o,n=this.targets,this.targets=[]}var c=this._searchPossibleTargets(this._objects,s);return t[this.altSelectionKey]&&c&&r&&c!==r&&(c=r,this.targets=n),c}},_checkTarget:function(t,e,i){if(e&&e.visible&&e.evented&&e.containsPoint(t)){if(!this.perPixelTargetFind&&!e.perPixelTargetFind||e.isEditing)return!0;if(!this.isTargetTransparent(e,i.x,i.y))return!0}},_searchPossibleTargets:function(t,e){for(var i,r,n=t.length;n--;){var s=t[n],o=s.group?this._normalizePointer(s.group,e):e;if(this._checkTarget(o,s,e)){(i=t[n]).subTargetCheck&&i instanceof S.Group&&(r=this._searchPossibleTargets(i._objects,e))&&this.targets.push(r);break}}return i},restorePointerVpt:function(t){return S.util.transformPoint(t,S.util.invertTransform(this.viewportTransform))},getPointer:function(e,i){if(this._absolutePointer&&!i)return this._absolutePointer;if(this._pointer&&i)return this._pointer;var r,n=t(e),s=this.upperCanvasEl,o=s.getBoundingClientRect(),a=o.width||0,h=o.height||0;a&&h||("top"in o&&"bottom"in o&&(h=Math.abs(o.top-o.bottom)),"right"in o&&"left"in o&&(a=Math.abs(o.right-o.left))),this.calcOffset(),n.x=n.x-this._offset.left,n.y=n.y-this._offset.top,i||(n=this.restorePointerVpt(n));var l=this.getRetinaScaling();return 1!==l&&(n.x/=l,n.y/=l),r=0===a||0===h?{width:1,height:1}:{width:s.width/a,height:s.height/h},{x:n.x*r.width,y:n.y*r.height}},_createUpperCanvas:function(){var t=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,""),e=this.lowerCanvasEl,i=this.upperCanvasEl;i?i.className="":(i=this._createCanvasElement(),this.upperCanvasEl=i),S.util.addClass(i,"upper-canvas "+t),this.wrapperEl.appendChild(i),this._copyCanvasStyle(e,i),this._applyCanvasStyle(i),this.contextTop=i.getContext("2d")},getTopContext:function(){return this.contextTop},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement(),this.cacheCanvasEl.setAttribute("width",this.width),this.cacheCanvasEl.setAttribute("height",this.height),this.contextCache=this.cacheCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=S.util.wrapElement(this.lowerCanvasEl,"div",{class:this.containerClass}),S.util.setStyle(this.wrapperEl,{width:this.width+"px",height:this.height+"px",position:"relative"}),S.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(t){var e=this.width||t.width,i=this.height||t.height;S.util.setStyle(t,{position:"absolute",width:e+"px",height:i+"px",left:0,top:0,"touch-action":this.allowTouchScrolling?"manipulation":"none","-ms-touch-action":this.allowTouchScrolling?"manipulation":"none"}),t.width=e,t.height=i,S.util.makeElementUnselectable(t)},_copyCanvasStyle:function(t,e){e.style.cssText=t.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},getActiveObject:function(){return this._activeObject},getActiveObjects:function(){var t=this._activeObject;return t?"activeSelection"===t.type&&t._objects?t._objects.slice(0):[t]:[]},_onObjectRemoved:function(t){t===this._activeObject&&(this.fire("before:selection:cleared",{target:t}),this._discardActiveObject(),this.fire("selection:cleared",{target:t}),t.fire("deselected")),t===this._hoveredTarget&&(this._hoveredTarget=null,this._hoveredTargets=[]),this.callSuper("_onObjectRemoved",t)},_fireSelectionEvents:function(t,e){var i=!1,r=this.getActiveObjects(),n=[],s=[];t.forEach((function(t){-1===r.indexOf(t)&&(i=!0,t.fire("deselected",{e,target:t}),s.push(t))})),r.forEach((function(r){-1===t.indexOf(r)&&(i=!0,r.fire("selected",{e,target:r}),n.push(r))})),t.length>0&&r.length>0?i&&this.fire("selection:updated",{e,selected:n,deselected:s}):r.length>0?this.fire("selection:created",{e,selected:n}):t.length>0&&this.fire("selection:cleared",{e,deselected:s})},setActiveObject:function(t,e){var i=this.getActiveObjects();return this._setActiveObject(t,e),this._fireSelectionEvents(i,e),this},_setActiveObject:function(t,e){return this._activeObject!==t&&!!this._discardActiveObject(e,t)&&!t.onSelect({e})&&(this._activeObject=t,!0)},_discardActiveObject:function(t,e){var i=this._activeObject;if(i){if(i.onDeselect({e:t,object:e}))return!1;this._activeObject=null}return!0},discardActiveObject:function(t){var e=this.getActiveObjects(),i=this.getActiveObject();return e.length&&this.fire("before:selection:cleared",{target:i,e:t}),this._discardActiveObject(t),this._fireSelectionEvents(e,t),this},dispose:function(){var t=this.wrapperEl;return this.removeListeners(),t.removeChild(this.upperCanvasEl),t.removeChild(this.lowerCanvasEl),this.contextCache=null,this.contextTop=null,["upperCanvasEl","cacheCanvasEl"].forEach(function(t){S.util.cleanUpJsdomNode(this[t]),this[t]=void 0}.bind(this)),t.parentNode&&t.parentNode.replaceChild(this.lowerCanvasEl,this.wrapperEl),delete this.wrapperEl,S.StaticCanvas.prototype.dispose.call(this),this},clear:function(){return this.discardActiveObject(),this.clearContext(this.contextTop),this.callSuper("clear")},drawControls:function(t){var e=this._activeObject;e&&e._renderControls(t)},_toObject:function(t,e,i){var r=this._realizeGroupTransformOnObject(t),n=this.callSuper("_toObject",t,e,i);return this._unwindGroupTransformOnObject(t,r),n},_realizeGroupTransformOnObject:function(t){if(t.group&&"activeSelection"===t.group.type&&this._activeObject===t.group){var e={};return["angle","flipX","flipY","left","scaleX","scaleY","skewX","skewY","top"].forEach((function(i){e[i]=t[i]})),S.util.addTransformToObject(t,this._activeObject.calcOwnMatrix()),e}return null},_unwindGroupTransformOnObject:function(t,e){e&&t.set(e)},_setSVGObject:function(t,e,i){var r=this._realizeGroupTransformOnObject(e);this.callSuper("_setSVGObject",t,e,i),this._unwindGroupTransformOnObject(e,r)},setViewportTransform:function(t){this.renderOnAddRemove&&this._activeObject&&this._activeObject.isEditing&&this._activeObject.clearContextTop(),S.StaticCanvas.prototype.setViewportTransform.call(this,t)}}),S.StaticCanvas)"prototype"!==r&&(S.Canvas[r]=S.StaticCanvas[r])}(),function(){var t=S.util.addListener,e=S.util.removeListener,i={passive:!1};function r(t,e){return t.button&&t.button===e-1}S.util.object.extend(S.Canvas.prototype,{mainTouchId:null,_initEventListeners:function(){this.removeListeners(),this._bindEvents(),this.addOrRemove(t,"add")},_getEventPrefix:function(){return this.enablePointerEvents?"pointer":"mouse"},addOrRemove:function(t,e){var r=this.upperCanvasEl,n=this._getEventPrefix();t(S.window,"resize",this._onResize),t(r,n+"down",this._onMouseDown),t(r,n+"move",this._onMouseMove,i),t(r,n+"out",this._onMouseOut),t(r,n+"enter",this._onMouseEnter),t(r,"wheel",this._onMouseWheel),t(r,"contextmenu",this._onContextMenu),t(r,"dblclick",this._onDoubleClick),t(r,"dragover",this._onDragOver),t(r,"dragenter",this._onDragEnter),t(r,"dragleave",this._onDragLeave),t(r,"drop",this._onDrop),this.enablePointerEvents||t(r,"touchstart",this._onTouchStart,i),"undefined"!=typeof eventjs&&e in eventjs&&(eventjs[e](r,"gesture",this._onGesture),eventjs[e](r,"drag",this._onDrag),eventjs[e](r,"orientation",this._onOrientationChange),eventjs[e](r,"shake",this._onShake),eventjs[e](r,"longpress",this._onLongPress))},removeListeners:function(){this.addOrRemove(e,"remove");var t=this._getEventPrefix();e(S.document,t+"up",this._onMouseUp),e(S.document,"touchend",this._onTouchEnd,i),e(S.document,t+"move",this._onMouseMove,i),e(S.document,"touchmove",this._onMouseMove,i)},_bindEvents:function(){this.eventsBound||(this._onMouseDown=this._onMouseDown.bind(this),this._onTouchStart=this._onTouchStart.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this._onTouchEnd=this._onTouchEnd.bind(this),this._onResize=this._onResize.bind(this),this._onGesture=this._onGesture.bind(this),this._onDrag=this._onDrag.bind(this),this._onShake=this._onShake.bind(this),this._onLongPress=this._onLongPress.bind(this),this._onOrientationChange=this._onOrientationChange.bind(this),this._onMouseWheel=this._onMouseWheel.bind(this),this._onMouseOut=this._onMouseOut.bind(this),this._onMouseEnter=this._onMouseEnter.bind(this),this._onContextMenu=this._onContextMenu.bind(this),this._onDoubleClick=this._onDoubleClick.bind(this),this._onDragOver=this._onDragOver.bind(this),this._onDragEnter=this._simpleEventHandler.bind(this,"dragenter"),this._onDragLeave=this._simpleEventHandler.bind(this,"dragleave"),this._onDrop=this._onDrop.bind(this),this.eventsBound=!0)},_onGesture:function(t,e){this.__onTransformGesture&&this.__onTransformGesture(t,e)},_onDrag:function(t,e){this.__onDrag&&this.__onDrag(t,e)},_onMouseWheel:function(t){this.__onMouseWheel(t)},_onMouseOut:function(t){var e=this._hoveredTarget;this.fire("mouse:out",{target:e,e:t}),this._hoveredTarget=null,e&&e.fire("mouseout",{e:t});var i=this;this._hoveredTargets.forEach((function(r){i.fire("mouse:out",{target:e,e:t}),r&&e.fire("mouseout",{e:t})})),this._hoveredTargets=[],this._iTextInstances&&this._iTextInstances.forEach((function(t){t.isEditing&&t.hiddenTextarea.focus()}))},_onMouseEnter:function(t){this._currentTransform||this.findTarget(t)||(this.fire("mouse:over",{target:null,e:t}),this._hoveredTarget=null,this._hoveredTargets=[])},_onOrientationChange:function(t,e){this.__onOrientationChange&&this.__onOrientationChange(t,e)},_onShake:function(t,e){this.__onShake&&this.__onShake(t,e)},_onLongPress:function(t,e){this.__onLongPress&&this.__onLongPress(t,e)},_onDragOver:function(t){t.preventDefault();var e=this._simpleEventHandler("dragover",t);this._fireEnterLeaveEvents(e,t)},_onDrop:function(t){return this._simpleEventHandler("drop:before",t),this._simpleEventHandler("drop",t)},_onContextMenu:function(t){return this.stopContextMenu&&(t.stopPropagation(),t.preventDefault()),!1},_onDoubleClick:function(t){this._cacheTransformEventData(t),this._handleEvent(t,"dblclick"),this._resetTransformEventData(t)},getPointerId:function(t){var e=t.changedTouches;return e?e[0]&&e[0].identifier:this.enablePointerEvents?t.pointerId:-1},_isMainEvent:function(t){return!0===t.isPrimary||!1!==t.isPrimary&&("touchend"===t.type&&0===t.touches.length||!t.changedTouches||t.changedTouches[0].identifier===this.mainTouchId)},_onTouchStart:function(r){r.preventDefault(),null===this.mainTouchId&&(this.mainTouchId=this.getPointerId(r)),this.__onMouseDown(r),this._resetTransformEventData();var n=this.upperCanvasEl,s=this._getEventPrefix();t(S.document,"touchend",this._onTouchEnd,i),t(S.document,"touchmove",this._onMouseMove,i),e(n,s+"down",this._onMouseDown)},_onMouseDown:function(r){this.__onMouseDown(r),this._resetTransformEventData();var n=this.upperCanvasEl,s=this._getEventPrefix();e(n,s+"move",this._onMouseMove,i),t(S.document,s+"up",this._onMouseUp),t(S.document,s+"move",this._onMouseMove,i)},_onTouchEnd:function(r){if(!(r.touches.length>0)){this.__onMouseUp(r),this._resetTransformEventData(),this.mainTouchId=null;var n=this._getEventPrefix();e(S.document,"touchend",this._onTouchEnd,i),e(S.document,"touchmove",this._onMouseMove,i);var s=this;this._willAddMouseDown&&clearTimeout(this._willAddMouseDown),this._willAddMouseDown=setTimeout((function(){t(s.upperCanvasEl,n+"down",s._onMouseDown),s._willAddMouseDown=0}),400)}},_onMouseUp:function(r){this.__onMouseUp(r),this._resetTransformEventData();var n=this.upperCanvasEl,s=this._getEventPrefix();this._isMainEvent(r)&&(e(S.document,s+"up",this._onMouseUp),e(S.document,s+"move",this._onMouseMove,i),t(n,s+"move",this._onMouseMove,i))},_onMouseMove:function(t){!this.allowTouchScrolling&&t.preventDefault&&t.preventDefault(),this.__onMouseMove(t)},_onResize:function(){this.calcOffset()},_shouldRender:function(t){var e=this._activeObject;return!!(!!e!=!!t||e&&t&&e!==t)||(e&&e.isEditing,!1)},__onMouseUp:function(t){var e,i=this._currentTransform,n=this._groupSelector,s=!1,o=!n||0===n.left&&0===n.top;if(this._cacheTransformEventData(t),e=this._target,this._handleEvent(t,"up:before"),r(t,3))this.fireRightClick&&this._handleEvent(t,"up",3,o);else{if(r(t,2))return this.fireMiddleClick&&this._handleEvent(t,"up",2,o),void this._resetTransformEventData();if(this.isDrawingMode&&this._isCurrentlyDrawing)this._onMouseUpInDrawingMode(t);else if(this._isMainEvent(t)){if(i&&(this._finalizeCurrentTransform(t),s=i.actionPerformed),!o){var a=e===this._activeObject;this._maybeGroupObjects(t),s||(s=this._shouldRender(e)||!a&&e===this._activeObject)}var h,l;if(e){if(h=e._findTargetCorner(this.getPointer(t,!0),S.util.isTouchEvent(t)),e.selectable&&e!==this._activeObject&&"up"===e.activeOn)this.setActiveObject(e,t),s=!0;else{var c=e.controls[h],u=c&&c.getMouseUpHandler(t,e,c);u&&u(t,i,(l=this.getPointer(t)).x,l.y)}e.isMoving=!1}if(i&&(i.target!==e||i.corner!==h)){var d=i.target&&i.target.controls[i.corner],f=d&&d.getMouseUpHandler(t,e,c);l=l||this.getPointer(t),f&&f(t,i,l.x,l.y)}this._setCursorFromEvent(t,e),this._handleEvent(t,"up",1,o),this._groupSelector=null,this._currentTransform=null,e&&(e.__corner=0),s?this.requestRenderAll():o||this.renderTop()}}},_simpleEventHandler:function(t,e){var i=this.findTarget(e),r=this.targets,n={e,target:i,subTargets:r};if(this.fire(t,n),i&&i.fire(t,n),!r)return i;for(var s=0;s1&&(e=new S.ActiveSelection(i.reverse(),{canvas:this}),this.setActiveObject(e,t))},_collectObjects:function(t){for(var e,i=[],r=this._groupSelector.ex,n=this._groupSelector.ey,s=r+this._groupSelector.left,o=n+this._groupSelector.top,a=new S.Point(v(r,s),v(n,o)),h=new S.Point(y(r,s),y(n,o)),l=!this.selectionFullyContained,c=r===s&&n===o,u=this._objects.length;u--&&!((e=this._objects[u])&&e.selectable&&e.visible&&(l&&e.intersectsWithRect(a,h,!0)||e.isContainedWithinRect(a,h,!0)||l&&e.containsPoint(a,null,!0)||l&&e.containsPoint(h,null,!0))&&(i.push(e),c)););return i.length>1&&(i=i.filter((function(e){return!e.onSelect({e:t})}))),i},_maybeGroupObjects:function(t){this.selection&&this._groupSelector&&this._groupSelectedObjects(t),this.setCursor(this.defaultCursor),this._groupSelector=null}}),S.util.object.extend(S.StaticCanvas.prototype,{toDataURL:function(t){t||(t={});var e=t.format||"png",i=t.quality||1,r=(t.multiplier||1)*(t.enableRetinaScaling?this.getRetinaScaling():1),n=this.toCanvasElement(r,t);return S.util.toDataURL(n,e,i)},toCanvasElement:function(t,e){t=t||1;var i=((e=e||{}).width||this.width)*t,r=(e.height||this.height)*t,n=this.getZoom(),s=this.width,o=this.height,a=n*t,h=this.viewportTransform,l=(h[4]-(e.left||0))*t,c=(h[5]-(e.top||0))*t,u=this.interactive,d=[a,0,0,a,l,c],f=this.enableRetinaScaling,g=S.util.createCanvasElement(),m=this.contextTop;return g.width=i,g.height=r,this.contextTop=null,this.enableRetinaScaling=!1,this.interactive=!1,this.viewportTransform=d,this.width=i,this.height=r,this.calcViewportBoundaries(),this.renderCanvas(g.getContext("2d"),this._objects),this.viewportTransform=h,this.width=s,this.height=o,this.calcViewportBoundaries(),this.interactive=u,this.enableRetinaScaling=f,this.contextTop=m,g}}),S.util.object.extend(S.StaticCanvas.prototype,{loadFromJSON:function(t,e,i){if(t){var r="string"==typeof t?JSON.parse(t):S.util.object.clone(t),n=this,s=r.clipPath,o=this.renderOnAddRemove;return this.renderOnAddRemove=!1,delete r.clipPath,this._enlivenObjects(r.objects,(function(t){n.clear(),n._setBgOverlay(r,(function(){s?n._enlivenObjects([s],(function(i){n.clipPath=i[0],n.__setupCanvas.call(n,r,t,o,e)})):n.__setupCanvas.call(n,r,t,o,e)}))}),i),this}},__setupCanvas:function(t,e,i,r){var n=this;e.forEach((function(t,e){n.insertAt(t,e)})),this.renderOnAddRemove=i,delete t.objects,delete t.backgroundImage,delete t.overlayImage,delete t.background,delete t.overlay,this._setOptions(t),this.renderAll(),r&&r()},_setBgOverlay:function(t,e){var i={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(t.backgroundImage||t.overlayImage||t.background||t.overlay){var r=function(){i.backgroundImage&&i.overlayImage&&i.backgroundColor&&i.overlayColor&&e&&e()};this.__setBgOverlay("backgroundImage",t.backgroundImage,i,r),this.__setBgOverlay("overlayImage",t.overlayImage,i,r),this.__setBgOverlay("backgroundColor",t.background,i,r),this.__setBgOverlay("overlayColor",t.overlay,i,r)}else e&&e()},__setBgOverlay:function(t,e,i,r){var n=this;if(!e)return i[t]=!0,void(r&&r());"backgroundImage"===t||"overlayImage"===t?S.util.enlivenObjects([e],(function(e){n[t]=e[0],i[t]=!0,r&&r()})):this["set"+S.util.string.capitalize(t,!0)](e,(function(){i[t]=!0,r&&r()}))},_enlivenObjects:function(t,e,i){t&&0!==t.length?S.util.enlivenObjects(t,(function(t){e&&e(t)}),null,i):e&&e([])},_toDataURL:function(t,e){this.clone((function(i){e(i.toDataURL(t))}))},_toDataURLWithMultiplier:function(t,e,i){this.clone((function(r){i(r.toDataURLWithMultiplier(t,e))}))},clone:function(t,e){var i=JSON.stringify(this.toJSON(e));this.cloneWithoutData((function(e){e.loadFromJSON(i,(function(){t&&t(e)}))}))},cloneWithoutData:function(t){var e=S.util.createCanvasElement();e.width=this.width,e.height=this.height;var i=new S.Canvas(e);this.backgroundImage?(i.setBackgroundImage(this.backgroundImage.src,(function(){i.renderAll(),t&&t(i)})),i.backgroundImageOpacity=this.backgroundImageOpacity,i.backgroundImageStretch=this.backgroundImageStretch):t&&t(i)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.object.clone,n=e.util.toFixed,s=e.util.string.capitalize,o=e.util.degreesToRadians,a=!e.isLikelyNode;e.Object||(e.Object=e.util.createClass(e.CommonMethods,{type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,skewX:0,skewY:0,cornerSize:13,touchCornerSize:24,transparentCorners:!0,hoverCursor:null,moveCursor:null,padding:0,borderColor:"rgb(178,204,255)",borderDashArray:null,cornerColor:"rgb(178,204,255)",cornerStrokeColor:null,cornerStyle:"rect",cornerDashArray:null,centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"nonzero",globalCompositeOperation:"source-over",backgroundColor:"",selectionBackgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeDashOffset:0,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:4,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,minScaleLimit:0,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,perPixelTargetFind:!1,includeDefaultValues:!0,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,excludeFromExport:!1,objectCaching:a,statefullCache:!1,noScaleCache:!0,strokeUniform:!1,dirty:!0,__corner:0,paintFirst:"fill",activeOn:"down",stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit angle opacity fill globalCompositeOperation shadow visible backgroundColor skewX skewY fillRule paintFirst clipPath strokeUniform".split(" "),cacheProperties:"fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath".split(" "),colorProperties:"fill stroke backgroundColor".split(" "),clipPath:void 0,inverted:!1,absolutePositioned:!1,initialize:function(t){t&&this.setOptions(t)},_createCacheCanvas:function(){this._cacheProperties={},this._cacheCanvas=e.util.createCanvasElement(),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas(),this.dirty=!0},_limitCacheSize:function(t){var i=e.perfLimitSizeTotal,r=t.width,n=t.height,s=e.maxCacheSideLimit,o=e.minCacheSideLimit;if(r<=s&&n<=s&&r*n<=i)return rc&&(t.zoomX/=r/c,t.width=c,t.capped=!0),n>u&&(t.zoomY/=n/u,t.height=u,t.capped=!0),t},_getCacheCanvasDimensions:function(){var t=this.getTotalObjectScaling(),e=this._getTransformedDimensions(0,0),i=e.x*t.scaleX/this.scaleX,r=e.y*t.scaleY/this.scaleY;return{width:i+2,height:r+2,zoomX:t.scaleX,zoomY:t.scaleY,x:i,y:r}},_updateCacheCanvas:function(){var t=this.canvas;if(this.noScaleCache&&t&&t._currentTransform){var i=t._currentTransform.target,r=t._currentTransform.action;if(this===i&&r.slice&&"scale"===r.slice(0,5))return!1}var n,s,o=this._cacheCanvas,a=this._limitCacheSize(this._getCacheCanvasDimensions()),h=e.minCacheSideLimit,l=a.width,c=a.height,u=a.zoomX,d=a.zoomY,f=l!==this.cacheWidth||c!==this.cacheHeight,g=this.zoomX!==u||this.zoomY!==d,m=f||g,p=0,_=0,v=!1;if(f){var y=this._cacheCanvas.width,w=this._cacheCanvas.height,C=l>y||c>w;v=C||(l<.9*y||c<.9*w)&&y>h&&w>h,C&&!a.capped&&(l>h||c>h)&&(p=.1*l,_=.1*c)}return this instanceof e.Text&&this.path&&(m=!0,v=!0,p+=this.getHeightOfLine(0)*this.zoomX,_+=this.getHeightOfLine(0)*this.zoomY),!!m&&(v?(o.width=Math.ceil(l+p),o.height=Math.ceil(c+_)):(this._cacheContext.setTransform(1,0,0,1,0,0),this._cacheContext.clearRect(0,0,o.width,o.height)),n=a.x/2,s=a.y/2,this.cacheTranslationX=Math.round(o.width/2-n)+n,this.cacheTranslationY=Math.round(o.height/2-s)+s,this.cacheWidth=l,this.cacheHeight=c,this._cacheContext.translate(this.cacheTranslationX,this.cacheTranslationY),this._cacheContext.scale(u,d),this.zoomX=u,this.zoomY=d,!0)},setOptions:function(t){this._setOptions(t),this._initGradient(t.fill,"fill"),this._initGradient(t.stroke,"stroke"),this._initPattern(t.fill,"fill"),this._initPattern(t.stroke,"stroke")},transform:function(t){var e=this.group&&!this.group._transformDone||this.group&&this.canvas&&t===this.canvas.contextTop,i=this.calcTransformMatrix(!e);t.transform(i[0],i[1],i[2],i[3],i[4],i[5])},toObject:function(t){var i=e.Object.NUM_FRACTION_DIGITS,r={type:this.type,version:e.version,originX:this.originX,originY:this.originY,left:n(this.left,i),top:n(this.top,i),width:n(this.width,i),height:n(this.height,i),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:n(this.strokeWidth,i),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeDashOffset:this.strokeDashOffset,strokeLineJoin:this.strokeLineJoin,strokeUniform:this.strokeUniform,strokeMiterLimit:n(this.strokeMiterLimit,i),scaleX:n(this.scaleX,i),scaleY:n(this.scaleY,i),angle:n(this.angle,i),flipX:this.flipX,flipY:this.flipY,opacity:n(this.opacity,i),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,backgroundColor:this.backgroundColor,fillRule:this.fillRule,paintFirst:this.paintFirst,globalCompositeOperation:this.globalCompositeOperation,skewX:n(this.skewX,i),skewY:n(this.skewY,i)};return this.clipPath&&!this.clipPath.excludeFromExport&&(r.clipPath=this.clipPath.toObject(t),r.clipPath.inverted=this.clipPath.inverted,r.clipPath.absolutePositioned=this.clipPath.absolutePositioned),e.util.populateWithProperties(this,r,t),this.includeDefaultValues||(r=this._removeDefaultValues(r)),r},toDatalessObject:function(t){return this.toObject(t)},_removeDefaultValues:function(t){var i=e.util.getKlass(t.type).prototype;return i.stateProperties.forEach((function(e){"left"!==e&&"top"!==e&&(t[e]===i[e]&&delete t[e],Array.isArray(t[e])&&Array.isArray(i[e])&&0===t[e].length&&0===i[e].length&&delete t[e])})),t},toString:function(){return"#"},getObjectScaling:function(){if(!this.group)return{scaleX:this.scaleX,scaleY:this.scaleY};var t=e.util.qrDecompose(this.calcTransformMatrix());return{scaleX:Math.abs(t.scaleX),scaleY:Math.abs(t.scaleY)}},getTotalObjectScaling:function(){var t=this.getObjectScaling(),e=t.scaleX,i=t.scaleY;if(this.canvas){var r=this.canvas.getZoom(),n=this.canvas.getRetinaScaling();e*=r*n,i*=r*n}return{scaleX:e,scaleY:i}},getObjectOpacity:function(){var t=this.opacity;return this.group&&(t*=this.group.getObjectOpacity()),t},_set:function(t,i){var r="scaleX"===t||"scaleY"===t,n=this[t]!==i,s=!1;return r&&(i=this._constrainScale(i)),"scaleX"===t&&i<0?(this.flipX=!this.flipX,i*=-1):"scaleY"===t&&i<0?(this.flipY=!this.flipY,i*=-1):"shadow"!==t||!i||i instanceof e.Shadow?"dirty"===t&&this.group&&this.group.set("dirty",i):i=new e.Shadow(i),this[t]=i,n&&(s=this.group&&this.group.isOnACache(),this.cacheProperties.indexOf(t)>-1?(this.dirty=!0,s&&this.group.set("dirty",!0)):s&&this.stateProperties.indexOf(t)>-1&&this.group.set("dirty",!0)),this},setOnGroup:function(){},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:e.iMatrix.concat()},isNotVisible:function(){return 0===this.opacity||!this.width&&!this.height&&0===this.strokeWidth||!this.visible},render:function(t){this.isNotVisible()||this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(t.save(),this._setupCompositeOperation(t),this.drawSelectionBackground(t),this.transform(t),this._setOpacity(t),this._setShadow(t,this),this.shouldCache()?(this.renderCache(),this.drawCacheOnCanvas(t)):(this._removeCacheCanvas(),this.dirty=!1,this.drawObject(t),this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})),t.restore())},renderCache:function(t){t=t||{},this._cacheCanvas&&this._cacheContext||this._createCacheCanvas(),this.isCacheDirty()&&(this.statefullCache&&this.saveState({propertySet:"cacheProperties"}),this.drawObject(this._cacheContext,t.forClipping),this.dirty=!1)},_removeCacheCanvas:function(){this._cacheCanvas=null,this._cacheContext=null,this.cacheWidth=0,this.cacheHeight=0},hasStroke:function(){return this.stroke&&"transparent"!==this.stroke&&0!==this.strokeWidth},hasFill:function(){return this.fill&&"transparent"!==this.fill},needsItsOwnCache:function(){return!("stroke"!==this.paintFirst||!this.hasFill()||!this.hasStroke()||"object"!=typeof this.shadow)||!!this.clipPath},shouldCache:function(){return this.ownCaching=this.needsItsOwnCache()||this.objectCaching&&(!this.group||!this.group.isOnACache()),this.ownCaching},willDrawShadow:function(){return!!this.shadow&&(0!==this.shadow.offsetX||0!==this.shadow.offsetY)},drawClipPathOnCache:function(t,i){if(t.save(),i.inverted?t.globalCompositeOperation="destination-out":t.globalCompositeOperation="destination-in",i.absolutePositioned){var r=e.util.invertTransform(this.calcTransformMatrix());t.transform(r[0],r[1],r[2],r[3],r[4],r[5])}i.transform(t),t.scale(1/i.zoomX,1/i.zoomY),t.drawImage(i._cacheCanvas,-i.cacheTranslationX,-i.cacheTranslationY),t.restore()},drawObject:function(t,e){var i=this.fill,r=this.stroke;e?(this.fill="black",this.stroke="",this._setClippingProperties(t)):this._renderBackground(t),this._render(t),this._drawClipPath(t,this.clipPath),this.fill=i,this.stroke=r},_drawClipPath:function(t,e){e&&(e.canvas=this.canvas,e.shouldCache(),e._transformDone=!0,e.renderCache({forClipping:!0}),this.drawClipPathOnCache(t,e))},drawCacheOnCanvas:function(t){t.scale(1/this.zoomX,1/this.zoomY),t.drawImage(this._cacheCanvas,-this.cacheTranslationX,-this.cacheTranslationY)},isCacheDirty:function(t){if(this.isNotVisible())return!1;if(this._cacheCanvas&&this._cacheContext&&!t&&this._updateCacheCanvas())return!0;if(this.dirty||this.clipPath&&this.clipPath.absolutePositioned||this.statefullCache&&this.hasStateChanged("cacheProperties")){if(this._cacheCanvas&&this._cacheContext&&!t){var e=this.cacheWidth/this.zoomX,i=this.cacheHeight/this.zoomY;this._cacheContext.clearRect(-e/2,-i/2,e,i)}return!0}return!1},_renderBackground:function(t){if(this.backgroundColor){var e=this._getNonTransformedDimensions();t.fillStyle=this.backgroundColor,t.fillRect(-e.x/2,-e.y/2,e.x,e.y),this._removeShadow(t)}},_setOpacity:function(t){this.group&&!this.group._transformDone?t.globalAlpha=this.getObjectOpacity():t.globalAlpha*=this.opacity},_setStrokeStyles:function(t,e){var i=e.stroke;i&&(t.lineWidth=e.strokeWidth,t.lineCap=e.strokeLineCap,t.lineDashOffset=e.strokeDashOffset,t.lineJoin=e.strokeLineJoin,t.miterLimit=e.strokeMiterLimit,i.toLive?"percentage"===i.gradientUnits||i.gradientTransform||i.patternTransform?this._applyPatternForTransformedGradient(t,i):(t.strokeStyle=i.toLive(t,this),this._applyPatternGradientTransform(t,i)):t.strokeStyle=e.stroke)},_setFillStyles:function(t,e){var i=e.fill;i&&(i.toLive?(t.fillStyle=i.toLive(t,this),this._applyPatternGradientTransform(t,e.fill)):t.fillStyle=i)},_setClippingProperties:function(t){t.globalAlpha=1,t.strokeStyle="transparent",t.fillStyle="#000000"},_setLineDash:function(t,e){e&&0!==e.length&&(1&e.length&&e.push.apply(e,e),t.setLineDash(e))},_renderControls:function(t,i){var r,n,s,a=this.getViewportTransform(),h=this.calcTransformMatrix();n=void 0!==(i=i||{}).hasBorders?i.hasBorders:this.hasBorders,s=void 0!==i.hasControls?i.hasControls:this.hasControls,h=e.util.multiplyTransformMatrices(a,h),r=e.util.qrDecompose(h),t.save(),t.translate(r.translateX,r.translateY),t.lineWidth=1*this.borderScaleFactor,this.group||(t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.flipX&&(r.angle-=180),t.rotate(o(this.group?r.angle:this.angle)),i.forActiveSelection||this.group?n&&this.drawBordersInGroup(t,r,i):n&&this.drawBorders(t,i),s&&this.drawControls(t,i),t.restore()},_setShadow:function(t){if(this.shadow){var i,r=this.shadow,n=this.canvas,s=n&&n.viewportTransform[0]||1,o=n&&n.viewportTransform[3]||1;i=r.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),n&&n._isRetinaScaling()&&(s*=e.devicePixelRatio,o*=e.devicePixelRatio),t.shadowColor=r.color,t.shadowBlur=r.blur*e.browserShadowBlurConstant*(s+o)*(i.scaleX+i.scaleY)/4,t.shadowOffsetX=r.offsetX*s*i.scaleX,t.shadowOffsetY=r.offsetY*o*i.scaleY}},_removeShadow:function(t){this.shadow&&(t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0)},_applyPatternGradientTransform:function(t,e){if(!e||!e.toLive)return{offsetX:0,offsetY:0};var i=e.gradientTransform||e.patternTransform,r=-this.width/2+e.offsetX||0,n=-this.height/2+e.offsetY||0;return"percentage"===e.gradientUnits?t.transform(this.width,0,0,this.height,r,n):t.transform(1,0,0,1,r,n),i&&t.transform(i[0],i[1],i[2],i[3],i[4],i[5]),{offsetX:r,offsetY:n}},_renderPaintInOrder:function(t){"stroke"===this.paintFirst?(this._renderStroke(t),this._renderFill(t)):(this._renderFill(t),this._renderStroke(t))},_render:function(){},_renderFill:function(t){this.fill&&(t.save(),this._setFillStyles(t,this),"evenodd"===this.fillRule?t.fill("evenodd"):t.fill(),t.restore())},_renderStroke:function(t){if(this.stroke&&0!==this.strokeWidth){if(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(t),t.save(),this.strokeUniform&&this.group){var e=this.getObjectScaling();t.scale(1/e.scaleX,1/e.scaleY)}else this.strokeUniform&&t.scale(1/this.scaleX,1/this.scaleY);this._setLineDash(t,this.strokeDashArray),this._setStrokeStyles(t,this),t.stroke(),t.restore()}},_applyPatternForTransformedGradient:function(t,i){var r,n=this._limitCacheSize(this._getCacheCanvasDimensions()),s=e.util.createCanvasElement(),o=this.canvas.getRetinaScaling(),a=n.x/this.scaleX/o,h=n.y/this.scaleY/o;s.width=a,s.height=h,(r=s.getContext("2d")).beginPath(),r.moveTo(0,0),r.lineTo(a,0),r.lineTo(a,h),r.lineTo(0,h),r.closePath(),r.translate(a/2,h/2),r.scale(n.zoomX/this.scaleX/o,n.zoomY/this.scaleY/o),this._applyPatternGradientTransform(r,i),r.fillStyle=i.toLive(t),r.fill(),t.translate(-this.width/2-this.strokeWidth/2,-this.height/2-this.strokeWidth/2),t.scale(o*this.scaleX/n.zoomX,o*this.scaleY/n.zoomY),t.strokeStyle=r.createPattern(s,"no-repeat")},_findCenterFromElement:function(){return{x:this.left+this.width/2,y:this.top+this.height/2}},_assignTransformMatrixProps:function(){if(this.transformMatrix){var t=e.util.qrDecompose(this.transformMatrix);this.flipX=!1,this.flipY=!1,this.set("scaleX",t.scaleX),this.set("scaleY",t.scaleY),this.angle=t.angle,this.skewX=t.skewX,this.skewY=0}},_removeTransformMatrix:function(t){var i=this._findCenterFromElement();this.transformMatrix&&(this._assignTransformMatrixProps(),i=e.util.transformPoint(i,this.transformMatrix)),this.transformMatrix=null,t&&(this.scaleX*=t.scaleX,this.scaleY*=t.scaleY,this.cropX=t.cropX,this.cropY=t.cropY,i.x+=t.offsetLeft,i.y+=t.offsetTop,this.width=t.width,this.height=t.height),this.setPositionByOrigin(i,"center","center")},clone:function(t,i){var r=this.toObject(i);this.constructor.fromObject?this.constructor.fromObject(r,t):e.Object._fromObject("Object",r,t)},cloneAsImage:function(t,i){var r=this.toCanvasElement(i);return t&&t(new e.Image(r)),this},toCanvasElement:function(t){t||(t={});var i=e.util,r=i.saveObjectTransform(this),n=this.group,s=this.shadow,o=Math.abs,a=(t.multiplier||1)*(t.enableRetinaScaling?e.devicePixelRatio:1);delete this.group,t.withoutTransform&&i.resetObjectTransform(this),t.withoutShadow&&(this.shadow=null);var h,l,c,u,d=e.util.createCanvasElement(),f=this.getBoundingRect(!0,!0),g=this.shadow,m={x:0,y:0};g&&(l=g.blur,h=g.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),m.x=2*Math.round(o(g.offsetX)+l)*o(h.scaleX),m.y=2*Math.round(o(g.offsetY)+l)*o(h.scaleY)),c=f.width+m.x,u=f.height+m.y,d.width=Math.ceil(c),d.height=Math.ceil(u);var p=new e.StaticCanvas(d,{enableRetinaScaling:!1,renderOnAddRemove:!1,skipOffscreen:!1});"jpeg"===t.format&&(p.backgroundColor="#fff"),this.setPositionByOrigin(new e.Point(p.width/2,p.height/2),"center","center");var _=this.canvas;p.add(this);var v=p.toCanvasElement(a||1,t);return this.shadow=s,this.set("canvas",_),n&&(this.group=n),this.set(r).setCoords(),p._objects=[],p.dispose(),p=null,v},toDataURL:function(t){return t||(t={}),e.util.toDataURL(this.toCanvasElement(t),t.format||"png",t.quality||1)},isType:function(t){return arguments.length>1?Array.from(arguments).includes(this.type):this.type===t},complexity:function(){return 1},toJSON:function(t){return this.toObject(t)},rotate:function(t){var e=("center"!==this.originX||"center"!==this.originY)&&this.centeredRotation;return e&&this._setOriginToCenter(),this.set("angle",t),e&&this._resetOrigin(),this},centerH:function(){return this.canvas&&this.canvas.centerObjectH(this),this},viewportCenterH:function(){return this.canvas&&this.canvas.viewportCenterObjectH(this),this},centerV:function(){return this.canvas&&this.canvas.centerObjectV(this),this},viewportCenterV:function(){return this.canvas&&this.canvas.viewportCenterObjectV(this),this},center:function(){return this.canvas&&this.canvas.centerObject(this),this},viewportCenter:function(){return this.canvas&&this.canvas.viewportCenterObject(this),this},getLocalPointer:function(t,i){i=i||this.canvas.getPointer(t);var r=new e.Point(i.x,i.y),n=this._getLeftTopCoords();return this.angle&&(r=e.util.rotatePoint(r,n,o(-this.angle))),{x:r.x-n.x,y:r.y-n.y}},_setupCompositeOperation:function(t){this.globalCompositeOperation&&(t.globalCompositeOperation=this.globalCompositeOperation)},dispose:function(){e.runningAnimations&&e.runningAnimations.cancelByTarget(this)}}),e.util.createAccessors&&e.util.createAccessors(e.Object),i(e.Object.prototype,e.Observable),e.Object.NUM_FRACTION_DIGITS=2,e.Object.ENLIVEN_PROPS=["clipPath"],e.Object._fromObject=function(t,i,n,s){var o=e[t];i=r(i,!0),e.util.enlivenPatterns([i.fill,i.stroke],(function(t){void 0!==t[0]&&(i.fill=t[0]),void 0!==t[1]&&(i.stroke=t[1]),e.util.enlivenObjectEnlivables(i,i,(function(){var t=s?new o(i[s],i):new o(i);n&&n(t)}))}))},e.Object.__uid=0)}(e),w=S.util.degreesToRadians,C={left:-.5,center:0,right:.5},E={top:-.5,center:0,bottom:.5},S.util.object.extend(S.Object.prototype,{translateToGivenOrigin:function(t,e,i,r,n){var s,o,a,h=t.x,l=t.y;return"string"==typeof e?e=C[e]:e-=.5,"string"==typeof r?r=C[r]:r-=.5,"string"==typeof i?i=E[i]:i-=.5,"string"==typeof n?n=E[n]:n-=.5,o=n-i,((s=r-e)||o)&&(a=this._getTransformedDimensions(),h=t.x+s*a.x,l=t.y+o*a.y),new S.Point(h,l)},translateToCenterPoint:function(t,e,i){var r=this.translateToGivenOrigin(t,e,i,"center","center");return this.angle?S.util.rotatePoint(r,t,w(this.angle)):r},translateToOriginPoint:function(t,e,i){var r=this.translateToGivenOrigin(t,"center","center",e,i);return this.angle?S.util.rotatePoint(r,t,w(this.angle)):r},getCenterPoint:function(){var t=new S.Point(this.left,this.top);return this.translateToCenterPoint(t,this.originX,this.originY)},getPointByOrigin:function(t,e){var i=this.getCenterPoint();return this.translateToOriginPoint(i,t,e)},toLocalPoint:function(t,e,i){var r,n,s=this.getCenterPoint();return r=void 0!==e&&void 0!==i?this.translateToGivenOrigin(s,"center","center",e,i):new S.Point(this.left,this.top),n=new S.Point(t.x,t.y),this.angle&&(n=S.util.rotatePoint(n,s,-w(this.angle))),n.subtractEquals(r)},setPositionByOrigin:function(t,e,i){var r=this.translateToCenterPoint(t,e,i),n=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",n.x),this.set("top",n.y)},adjustPosition:function(t){var e,i,r=w(this.angle),n=this.getScaledWidth(),s=S.util.cos(r)*n,o=S.util.sin(r)*n;e="string"==typeof this.originX?C[this.originX]:this.originX-.5,i="string"==typeof t?C[t]:t-.5,this.left+=s*(i-e),this.top+=o*(i-e),this.setCoords(),this.originX=t},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var t=this.getCenterPoint();this.originX="center",this.originY="center",this.left=t.x,this.top=t.y},_resetOrigin:function(){var t=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX,this.originY=this._originalOriginY,this.left=t.x,this.top=t.y,this._originalOriginX=null,this._originalOriginY=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","top")}}),function(){var t=S.util,e=t.degreesToRadians,i=t.multiplyTransformMatrices,r=t.transformPoint;t.object.extend(S.Object.prototype,{oCoords:null,aCoords:null,lineCoords:null,ownMatrixCache:null,matrixCache:null,controls:{},_getCoords:function(t,e){return e?t?this.calcACoords():this.calcLineCoords():(this.aCoords&&this.lineCoords||this.setCoords(!0),t?this.aCoords:this.lineCoords)},getCoords:function(t,e){return i=this._getCoords(t,e),[new S.Point(i.tl.x,i.tl.y),new S.Point(i.tr.x,i.tr.y),new S.Point(i.br.x,i.br.y),new S.Point(i.bl.x,i.bl.y)];var i},intersectsWithRect:function(t,e,i,r){var n=this.getCoords(i,r);return"Intersection"===S.Intersection.intersectPolygonRectangle(n,t,e).status},intersectsWithObject:function(t,e,i){return"Intersection"===S.Intersection.intersectPolygonPolygon(this.getCoords(e,i),t.getCoords(e,i)).status||t.isContainedWithinObject(this,e,i)||this.isContainedWithinObject(t,e,i)},isContainedWithinObject:function(t,e,i){for(var r=this.getCoords(e,i),n=e?t.aCoords:t.lineCoords,s=0,o=t._getImageLines(n);s<4;s++)if(!t.containsPoint(r[s],o))return!1;return!0},isContainedWithinRect:function(t,e,i,r){var n=this.getBoundingRect(i,r);return n.left>=t.x&&n.left+n.width<=e.x&&n.top>=t.y&&n.top+n.height<=e.y},containsPoint:function(t,e,i,r){var n=this._getCoords(i,r),s=(e=e||this._getImageLines(n),this._findCrossPoints(t,e));return 0!==s&&s%2==1},isOnScreen:function(t){if(!this.canvas)return!1;var e=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.getCoords(!0,t).some((function(t){return t.x<=i.x&&t.x>=e.x&&t.y<=i.y&&t.y>=e.y}))||!!this.intersectsWithRect(e,i,!0,t)||this._containsCenterOfCanvas(e,i,t)},_containsCenterOfCanvas:function(t,e,i){var r={x:(t.x+e.x)/2,y:(t.y+e.y)/2};return!!this.containsPoint(r,null,!0,i)},isPartiallyOnScreen:function(t){if(!this.canvas)return!1;var e=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.intersectsWithRect(e,i,!0,t)||this.getCoords(!0,t).every((function(t){return(t.x>=i.x||t.x<=e.x)&&(t.y>=i.y||t.y<=e.y)}))&&this._containsCenterOfCanvas(e,i,t)},_getImageLines:function(t){return{topline:{o:t.tl,d:t.tr},rightline:{o:t.tr,d:t.br},bottomline:{o:t.br,d:t.bl},leftline:{o:t.bl,d:t.tl}}},_findCrossPoints:function(t,e){var i,r,n,s=0;for(var o in e)if(!((n=e[o]).o.y=t.y&&n.d.y>=t.y||(n.o.x===n.d.x&&n.o.x>=t.x?r=n.o.x:(i=(n.d.y-n.o.y)/(n.d.x-n.o.x),r=-(t.y-0*t.x-(n.o.y-i*n.o.x))/(0-i)),r>=t.x&&(s+=1),2!==s)))break;return s},getBoundingRect:function(e,i){var r=this.getCoords(e,i);return t.makeBoundingBoxFromPoints(r)},getScaledWidth:function(){return this._getTransformedDimensions().x},getScaledHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(t){return Math.abs(t)\n')}},toSVG:function(t){return this._createBaseSVGMarkup(this._toSVG(t),{reviver:t})},toClipPathSVG:function(t){return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(t),{reviver:t})},_createBaseClipPathSVGMarkup:function(t,e){var i=(e=e||{}).reviver,r=e.additionalTransform||"",n=[this.getSvgTransform(!0,r),this.getSvgCommons()].join(""),s=t.indexOf("COMMON_PARTS");return t[s]=n,i?i(t.join("")):t.join("")},_createBaseSVGMarkup:function(t,e){var i,r,n=(e=e||{}).noStyle,s=e.reviver,o=n?"":'style="'+this.getSvgStyles()+'" ',a=e.withShadow?'style="'+this.getSvgFilter()+'" ':"",h=this.clipPath,l=this.strokeUniform?'vector-effect="non-scaling-stroke" ':"",c=h&&h.absolutePositioned,u=this.stroke,d=this.fill,f=this.shadow,g=[],m=t.indexOf("COMMON_PARTS"),p=e.additionalTransform;return h&&(h.clipPathId="CLIPPATH_"+S.Object.__uid++,r='\n'+h.toClipPathSVG(s)+"\n"),c&&g.push("\n"),g.push("\n"),i=[o,l,n?"":this.addPaintOrder()," ",p?'transform="'+p+'" ':""].join(""),t[m]=i,d&&d.toLive&&g.push(d.toSVG(this)),u&&u.toLive&&g.push(u.toSVG(this)),f&&g.push(f.toSVG(this)),h&&g.push(r),g.push(t.join("")),g.push("\n"),c&&g.push("\n"),s?s(g.join("")):g.join("")},addPaintOrder:function(){return"fill"!==this.paintFirst?' paint-order="'+this.paintFirst+'" ':""}})}(),function(){var t=S.util.object.extend,e="stateProperties";function i(e,i,r){var n={};r.forEach((function(t){n[t]=e[t]})),t(e[i],n,!0)}function r(t,e,i){if(t===e)return!0;if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(var n=0,s=t.length;n=0;h--)if(n=a[h],this.isControlVisible(n)&&(r=this._getImageLines(e?this.oCoords[n].touchCorner:this.oCoords[n].corner),0!==(i=this._findCrossPoints({x:s,y:o},r))&&i%2==1))return this.__corner=n,n;return!1},forEachControl:function(t){for(var e in this.controls)t(this.controls[e],e,this)},_setCornerCoords:function(){var t=this.oCoords;for(var e in t){var i=this.controls[e];t[e].corner=i.calcCornerCoords(this.angle,this.cornerSize,t[e].x,t[e].y,!1),t[e].touchCorner=i.calcCornerCoords(this.angle,this.touchCornerSize,t[e].x,t[e].y,!0)}},drawSelectionBackground:function(e){if(!this.selectionBackgroundColor||this.canvas&&!this.canvas.interactive||this.canvas&&this.canvas._activeObject!==this)return this;e.save();var i=this.getCenterPoint(),r=this._calculateCurrentDimensions(),n=this.canvas.viewportTransform;return e.translate(i.x,i.y),e.scale(1/n[0],1/n[3]),e.rotate(t(this.angle)),e.fillStyle=this.selectionBackgroundColor,e.fillRect(-r.x/2,-r.y/2,r.x,r.y),e.restore(),this},drawBorders:function(t,e){e=e||{};var i=this._calculateCurrentDimensions(),r=this.borderScaleFactor,n=i.x+r,s=i.y+r,o=void 0!==e.hasControls?e.hasControls:this.hasControls,a=!1;return t.save(),t.strokeStyle=e.borderColor||this.borderColor,this._setLineDash(t,e.borderDashArray||this.borderDashArray),t.strokeRect(-n/2,-s/2,n,s),o&&(t.beginPath(),this.forEachControl((function(e,i,r){e.withConnection&&e.getVisibility(r,i)&&(a=!0,t.moveTo(e.x*n,e.y*s),t.lineTo(e.x*n+e.offsetX,e.y*s+e.offsetY))})),a&&t.stroke()),t.restore(),this},drawBordersInGroup:function(t,e,i){i=i||{};var r=S.util.sizeAfterTransform(this.width,this.height,e),n=this.strokeWidth,s=this.strokeUniform,o=this.borderScaleFactor,a=r.x+n*(s?this.canvas.getZoom():e.scaleX)+o,h=r.y+n*(s?this.canvas.getZoom():e.scaleY)+o;return t.save(),this._setLineDash(t,i.borderDashArray||this.borderDashArray),t.strokeStyle=i.borderColor||this.borderColor,t.strokeRect(-a/2,-h/2,a,h),t.restore(),this},drawControls:function(t,e){e=e||{},t.save();var i,r,n=this.canvas.getRetinaScaling();return t.setTransform(n,0,0,n,0,0),t.strokeStyle=t.fillStyle=e.cornerColor||this.cornerColor,this.transparentCorners||(t.strokeStyle=e.cornerStrokeColor||this.cornerStrokeColor),this._setLineDash(t,e.cornerDashArray||this.cornerDashArray),this.setCoords(),this.group&&(i=this.group.calcTransformMatrix()),this.forEachControl((function(n,s,o){r=o.oCoords[s],n.getVisibility(o,s)&&(i&&(r=S.util.transformPoint(r,i)),n.render(t,r.x,r.y,e,o))})),t.restore(),this},isControlVisible:function(t){return this.controls[t]&&this.controls[t].getVisibility(this,t)},setControlVisible:function(t,e){return this._controlsVisibility||(this._controlsVisibility={}),this._controlsVisibility[t]=e,this},setControlsVisibility:function(t){for(var e in t||(t={}),t)this.setControlVisible(e,t[e]);return this},onDeselect:function(){},onSelect:function(){}})}(),S.util.object.extend(S.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(t,e){var i=function(){},r=(e=e||{}).onComplete||i,n=e.onChange||i,s=this;return S.util.animate({target:this,startValue:t.left,endValue:this.getCenterPoint().x,duration:this.FX_DURATION,onChange:function(e){t.set("left",e),s.requestRenderAll(),n()},onComplete:function(){t.setCoords(),r()}})},fxCenterObjectV:function(t,e){var i=function(){},r=(e=e||{}).onComplete||i,n=e.onChange||i,s=this;return S.util.animate({target:this,startValue:t.top,endValue:this.getCenterPoint().y,duration:this.FX_DURATION,onChange:function(e){t.set("top",e),s.requestRenderAll(),n()},onComplete:function(){t.setCoords(),r()}})},fxRemove:function(t,e){var i=function(){},r=(e=e||{}).onComplete||i,n=e.onChange||i,s=this;return S.util.animate({target:this,startValue:t.opacity,endValue:0,duration:this.FX_DURATION,onChange:function(e){t.set("opacity",e),s.requestRenderAll(),n()},onComplete:function(){s.remove(t),r()}})}}),S.util.object.extend(S.Object.prototype,{animate:function(){if(arguments[0]&&"object"==typeof arguments[0]){var t,e,i=[],r=[];for(t in arguments[0])i.push(t);for(var n=0,s=i.length;n-1||n&&s.colorProperties.indexOf(n[1])>-1,a=n?this.get(n[0])[n[1]]:this.get(t);"from"in i||(i.from=a),o||(e=~e.indexOf("=")?a+parseFloat(e.replace("=","")):parseFloat(e));var h={target:this,startValue:i.from,endValue:e,byValue:i.by,easing:i.easing,duration:i.duration,abort:i.abort&&function(t,e,r){return i.abort.call(s,t,e,r)},onChange:function(e,o,a){n?s[n[0]][n[1]]=e:s.set(t,e),r||i.onChange&&i.onChange(e,o,a)},onComplete:function(t,e,n){r||(s.setCoords(),i.onComplete&&i.onComplete(t,e,n))}};return o?S.util.animateColor(h.startValue,h.endValue,h.duration,h):S.util.animate(h)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.object.clone,n={x1:1,x2:1,y1:1,y2:1};function s(t,e){var i=t.origin,r=t.axis1,n=t.axis2,s=t.dimension,o=e.nearest,a=e.center,h=e.farthest;return function(){switch(this.get(i)){case o:return Math.min(this.get(r),this.get(n));case a:return Math.min(this.get(r),this.get(n))+.5*this.get(s);case h:return Math.max(this.get(r),this.get(n))}}}e.Line?e.warn("fabric.Line is already defined"):(e.Line=e.util.createClass(e.Object,{type:"line",x1:0,y1:0,x2:0,y2:0,cacheProperties:e.Object.prototype.cacheProperties.concat("x1","x2","y1","y2"),initialize:function(t,e){t||(t=[0,0,0,0]),this.callSuper("initialize",e),this.set("x1",t[0]),this.set("y1",t[1]),this.set("x2",t[2]),this.set("y2",t[3]),this._setWidthHeight(e)},_setWidthHeight:function(t){t||(t={}),this.width=Math.abs(this.x2-this.x1),this.height=Math.abs(this.y2-this.y1),this.left="left"in t?t.left:this._getLeftToOriginX(),this.top="top"in t?t.top:this._getTopToOriginY()},_set:function(t,e){return this.callSuper("_set",t,e),void 0!==n[t]&&this._setWidthHeight(),this},_getLeftToOriginX:s({origin:"originX",axis1:"x1",axis2:"x2",dimension:"width"},{nearest:"left",center:"center",farthest:"right"}),_getTopToOriginY:s({origin:"originY",axis1:"y1",axis2:"y2",dimension:"height"},{nearest:"top",center:"center",farthest:"bottom"}),_render:function(t){t.beginPath();var e=this.calcLinePoints();t.moveTo(e.x1,e.y1),t.lineTo(e.x2,e.y2),t.lineWidth=this.strokeWidth;var i=t.strokeStyle;t.strokeStyle=this.stroke||t.fillStyle,this.stroke&&this._renderStroke(t),t.strokeStyle=i},_findCenterFromElement:function(){return{x:(this.x1+this.x2)/2,y:(this.y1+this.y2)/2}},toObject:function(t){return i(this.callSuper("toObject",t),this.calcLinePoints())},_getNonTransformedDimensions:function(){var t=this.callSuper("_getNonTransformedDimensions");return"butt"===this.strokeLineCap&&(0===this.width&&(t.y-=this.strokeWidth),0===this.height&&(t.x-=this.strokeWidth)),t},calcLinePoints:function(){var t=this.x1<=this.x2?-1:1,e=this.y1<=this.y2?-1:1,i=t*this.width*.5,r=e*this.height*.5;return{x1:i,x2:t*this.width*-.5,y1:r,y2:e*this.height*-.5}},_toSVG:function(){var t=this.calcLinePoints();return["\n']}}),e.Line.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),e.Line.fromElement=function(t,r,n){n=n||{};var s=e.parseAttributes(t,e.Line.ATTRIBUTE_NAMES),o=[s.x1||0,s.y1||0,s.x2||0,s.y2||0];r(new e.Line(o,i(s,n)))},e.Line.fromObject=function(t,i){var n=r(t,!0);n.points=[t.x1,t.y1,t.x2,t.y2],e.Object._fromObject("Line",n,(function(t){delete t.points,i&&i(t)}),"points")})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.degreesToRadians;e.Circle?e.warn("fabric.Circle is already defined."):(e.Circle=e.util.createClass(e.Object,{type:"circle",radius:0,startAngle:0,endAngle:360,cacheProperties:e.Object.prototype.cacheProperties.concat("radius","startAngle","endAngle"),_set:function(t,e){return this.callSuper("_set",t,e),"radius"===t&&this.setRadius(e),this},toObject:function(t){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(t))},_toSVG:function(){var t,r=(this.endAngle-this.startAngle)%360;if(0===r)t=["\n'];else{var n=i(this.startAngle),s=i(this.endAngle),o=this.radius;t=['180?"1":"0")+" 1"," "+e.util.cos(s)*o+" "+e.util.sin(s)*o,'" ',"COMMON_PARTS"," />\n"]}return t},_render:function(t){t.beginPath(),t.arc(0,0,this.radius,i(this.startAngle),i(this.endAngle),!1),this._renderPaintInOrder(t)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(t){return this.radius=t,this.set("width",2*t).set("height",2*t)}}),e.Circle.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),e.Circle.fromElement=function(t,i){var r,n=e.parseAttributes(t,e.Circle.ATTRIBUTE_NAMES);if(!("radius"in(r=n)&&r.radius>=0))throw new Error("value of `r` attribute is required and can not be negative");n.left=(n.left||0)-n.radius,n.top=(n.top||0)-n.radius,i(new e.Circle(n))},e.Circle.fromObject=function(t,i){e.Object._fromObject("Circle",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={});e.Triangle?e.warn("fabric.Triangle is already defined"):(e.Triangle=e.util.createClass(e.Object,{type:"triangle",width:100,height:100,_render:function(t){var e=this.width/2,i=this.height/2;t.beginPath(),t.moveTo(-e,i),t.lineTo(0,-i),t.lineTo(e,i),t.closePath(),this._renderPaintInOrder(t)},_toSVG:function(){var t=this.width/2,e=this.height/2;return["']}}),e.Triangle.fromObject=function(t,i){return e.Object._fromObject("Triangle",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=2*Math.PI;e.Ellipse?e.warn("fabric.Ellipse is already defined."):(e.Ellipse=e.util.createClass(e.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:e.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this.set("rx",t&&t.rx||0),this.set("ry",t&&t.ry||0)},_set:function(t,e){switch(this.callSuper("_set",t,e),t){case"rx":this.rx=e,this.set("width",2*e);break;case"ry":this.ry=e,this.set("height",2*e)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']},_render:function(t){t.beginPath(),t.save(),t.transform(1,0,0,this.ry/this.rx,0,0),t.arc(0,0,this.rx,0,i,!1),t.restore(),this._renderPaintInOrder(t)}}),e.Ellipse.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),e.Ellipse.fromElement=function(t,i){var r=e.parseAttributes(t,e.Ellipse.ATTRIBUTE_NAMES);r.left=(r.left||0)-r.rx,r.top=(r.top||0)-r.ry,i(new e.Ellipse(r))},e.Ellipse.fromObject=function(t,i){e.Object._fromObject("Ellipse",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend;e.Rect?e.warn("fabric.Rect is already defined"):(e.Rect=e.util.createClass(e.Object,{stateProperties:e.Object.prototype.stateProperties.concat("rx","ry"),type:"rect",rx:0,ry:0,cacheProperties:e.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(t){var e=this.rx?Math.min(this.rx,this.width/2):0,i=this.ry?Math.min(this.ry,this.height/2):0,r=this.width,n=this.height,s=-this.width/2,o=-this.height/2,a=0!==e||0!==i,h=.4477152502;t.beginPath(),t.moveTo(s+e,o),t.lineTo(s+r-e,o),a&&t.bezierCurveTo(s+r-h*e,o,s+r,o+h*i,s+r,o+i),t.lineTo(s+r,o+n-i),a&&t.bezierCurveTo(s+r,o+n-h*i,s+r-h*e,o+n,s+r-e,o+n),t.lineTo(s+e,o+n),a&&t.bezierCurveTo(s+h*e,o+n,s,o+n-h*i,s,o+n-i),t.lineTo(s,o+i),a&&t.bezierCurveTo(s,o+h*i,s+h*e,o,s+e,o),t.closePath(),this._renderPaintInOrder(t)},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']}}),e.Rect.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),e.Rect.fromElement=function(t,r,n){if(!t)return r(null);n=n||{};var s=e.parseAttributes(t,e.Rect.ATTRIBUTE_NAMES);s.left=s.left||0,s.top=s.top||0,s.height=s.height||0,s.width=s.width||0;var o=new e.Rect(i(n?e.util.object.clone(n):{},s));o.visible=o.visible&&o.width>0&&o.height>0,r(o)},e.Rect.fromObject=function(t,i){return e.Object._fromObject("Rect",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.array.min,n=e.util.array.max,s=e.util.toFixed,o=e.util.projectStrokeOnPoints;e.Polyline?e.warn("fabric.Polyline is already defined"):(e.Polyline=e.util.createClass(e.Object,{type:"polyline",points:null,exactBoundingBox:!1,cacheProperties:e.Object.prototype.cacheProperties.concat("points"),initialize:function(t,e){e=e||{},this.points=t||[],this.callSuper("initialize",e),this._setPositionDimensions(e)},_projectStrokeOnPoints:function(){return o(this.points,this,!0)},_setPositionDimensions:function(t){var e,i=this._calcDimensions(t),r=this.exactBoundingBox?this.strokeWidth:0;this.width=i.width-r,this.height=i.height-r,t.fromSVG||(e=this.translateToGivenOrigin({x:i.left-this.strokeWidth/2+r/2,y:i.top-this.strokeWidth/2+r/2},"left","top",this.originX,this.originY)),void 0===t.left&&(this.left=t.fromSVG?i.left:e.x),void 0===t.top&&(this.top=t.fromSVG?i.top:e.y),this.pathOffset={x:i.left+this.width/2+r/2,y:i.top+this.height/2+r/2}},_calcDimensions:function(){var t=this.exactBoundingBox?this._projectStrokeOnPoints():this.points,e=r(t,"x")||0,i=r(t,"y")||0;return{left:e,top:i,width:(n(t,"x")||0)-e,height:(n(t,"y")||0)-i}},toObject:function(t){return i(this.callSuper("toObject",t),{points:this.points.concat()})},_toSVG:function(){for(var t=[],i=this.pathOffset.x,r=this.pathOffset.y,n=e.Object.NUM_FRACTION_DIGITS,o=0,a=this.points.length;o\n']},commonRender:function(t){var e,i=this.points.length,r=this.pathOffset.x,n=this.pathOffset.y;if(!i||isNaN(this.points[i-1].y))return!1;t.beginPath(),t.moveTo(this.points[0].x-r,this.points[0].y-n);for(var s=0;s"},toObject:function(t){return n(this.callSuper("toObject",t),{path:this.path.map((function(t){return t.slice()}))})},toDatalessObject:function(t){var e=this.toObject(["sourcePath"].concat(t));return e.sourcePath&&delete e.path,e},_toSVG:function(){return["\n"]},_getOffsetTransform:function(){var t=e.Object.NUM_FRACTION_DIGITS;return" translate("+o(-this.pathOffset.x,t)+", "+o(-this.pathOffset.y,t)+")"},toClipPathSVG:function(t){var e=this._getOffsetTransform();return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},toSVG:function(t){var e=this._getOffsetTransform();return this._createBaseSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},complexity:function(){return this.path.length},_calcDimensions:function(){for(var t,n,s=[],o=[],a=0,h=0,l=0,c=0,u=0,d=this.path.length;u"},addWithUpdate:function(t){var i=!!this.group;return this._restoreObjectsState(),e.util.resetObjectTransform(this),t&&(i&&e.util.removeTransformFromObject(t,this.group.calcTransformMatrix()),this._objects.push(t),t.group=this,t._set("canvas",this.canvas)),this._calcBounds(),this._updateObjectsCoords(),this.dirty=!0,i?this.group.addWithUpdate():this.setCoords(),this},removeWithUpdate:function(t){return this._restoreObjectsState(),e.util.resetObjectTransform(this),this.remove(t),this._calcBounds(),this._updateObjectsCoords(),this.setCoords(),this.dirty=!0,this},_onObjectAdded:function(t){this.dirty=!0,t.group=this,t._set("canvas",this.canvas)},_onObjectRemoved:function(t){this.dirty=!0,delete t.group},_set:function(t,i){var r=this._objects.length;if(this.useSetOnGroup)for(;r--;)this._objects[r].setOnGroup(t,i);if("canvas"===t)for(;r--;)this._objects[r]._set(t,i);e.Object.prototype._set.call(this,t,i)},toObject:function(t){var i=this.includeDefaultValues,r=this._objects.filter((function(t){return!t.excludeFromExport})).map((function(e){var r=e.includeDefaultValues;e.includeDefaultValues=i;var n=e.toObject(t);return e.includeDefaultValues=r,n})),n=e.Object.prototype.toObject.call(this,t);return n.objects=r,n},toDatalessObject:function(t){var i,r=this.sourcePath;if(r)i=r;else{var n=this.includeDefaultValues;i=this._objects.map((function(e){var i=e.includeDefaultValues;e.includeDefaultValues=n;var r=e.toDatalessObject(t);return e.includeDefaultValues=i,r}))}var s=e.Object.prototype.toDatalessObject.call(this,t);return s.objects=i,s},render:function(t){this._transformDone=!0,this.callSuper("render",t),this._transformDone=!1},shouldCache:function(){var t=e.Object.prototype.shouldCache.call(this);if(t)for(var i=0,r=this._objects.length;i\n"],i=0,r=this._objects.length;i\n"),e},getSvgStyles:function(){var t=void 0!==this.opacity&&1!==this.opacity?"opacity: "+this.opacity+";":"",e=this.visible?"":" visibility: hidden;";return[t,this.getSvgFilter(),e].join("")},toClipPathSVG:function(t){for(var e=[],i=0,r=this._objects.length;i"},shouldCache:function(){return!1},isOnACache:function(){return!1},_renderControls:function(t,e,i){t.save(),t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,this.callSuper("_renderControls",t,e),void 0===(i=i||{}).hasControls&&(i.hasControls=!1),i.forActiveSelection=!0;for(var r=0,n=this._objects.length;r\n','\t\n',"\n"),o=' clip-path="url(#imageCrop_'+h+')" '}if(this.imageSmoothing||(a='" image-rendering="optimizeSpeed'),i.push("\t\n"),this.stroke||this.strokeDashArray){var l=this.fill;this.fill=null,t=["\t\n'],this.fill=l}return"fill"!==this.paintFirst?e.concat(t,i):e.concat(i,t)},getSrc:function(t){var e=t?this._element:this._originalElement;return e?e.toDataURL?e.toDataURL():this.srcFromAttribute?e.getAttribute("src"):e.src:this.src||""},setSrc:function(t,e,i){return S.util.loadImage(t,(function(t,r){this.setElement(t,i),this._setWidthHeight(),e&&e(this,r)}),this,i&&i.crossOrigin),this},toString:function(){return'#'},applyResizeFilters:function(){var t=this.resizeFilter,e=this.minimumScaleTrigger,i=this.getTotalObjectScaling(),r=i.scaleX,n=i.scaleY,s=this._filteredEl||this._originalElement;if(this.group&&this.set("dirty",!0),!t||r>e&&n>e)return this._element=s,this._filterScalingX=1,this._filterScalingY=1,this._lastScaleX=r,void(this._lastScaleY=n);S.filterBackend||(S.filterBackend=S.initFilterBackend());var o=S.util.createCanvasElement(),a=this._filteredEl?this.cacheKey+"_filtered":this.cacheKey,h=s.width,l=s.height;o.width=h,o.height=l,this._element=o,this._lastScaleX=t.scaleX=r,this._lastScaleY=t.scaleY=n,S.filterBackend.applyFilters([t],s,h,l,this._element,a),this._filterScalingX=o.width/this._originalElement.width,this._filterScalingY=o.height/this._originalElement.height},applyFilters:function(t){if(t=(t=t||this.filters||[]).filter((function(t){return t&&!t.isNeutralState()})),this.set("dirty",!0),this.removeTexture(this.cacheKey+"_filtered"),0===t.length)return this._element=this._originalElement,this._filteredEl=null,this._filterScalingX=1,this._filterScalingY=1,this;var e=this._originalElement,i=e.naturalWidth||e.width,r=e.naturalHeight||e.height;if(this._element===this._originalElement){var n=S.util.createCanvasElement();n.width=i,n.height=r,this._element=n,this._filteredEl=n}else this._element=this._filteredEl,this._filteredEl.getContext("2d").clearRect(0,0,i,r),this._lastScaleX=1,this._lastScaleY=1;return S.filterBackend||(S.filterBackend=S.initFilterBackend()),S.filterBackend.applyFilters(t,this._originalElement,i,r,this._element,this.cacheKey),this._originalElement.width===this._element.width&&this._originalElement.height===this._element.height||(this._filterScalingX=this._element.width/this._originalElement.width,this._filterScalingY=this._element.height/this._originalElement.height),this},_render:function(t){S.util.setImageSmoothing(t,this.imageSmoothing),!0!==this.isMoving&&this.resizeFilter&&this._needsResize()&&this.applyResizeFilters(),this._stroke(t),this._renderPaintInOrder(t)},drawCacheOnCanvas:function(t){S.util.setImageSmoothing(t,this.imageSmoothing),S.Object.prototype.drawCacheOnCanvas.call(this,t)},shouldCache:function(){return this.needsItsOwnCache()},_renderFill:function(t){var e=this._element;if(e){var i=this._filterScalingX,r=this._filterScalingY,n=this.width,s=this.height,o=Math.min,a=Math.max,h=a(this.cropX,0),l=a(this.cropY,0),c=e.naturalWidth||e.width,u=e.naturalHeight||e.height,d=h*i,f=l*r,g=o(n*i,c-d),m=o(s*r,u-f),p=-n/2,_=-s/2,v=o(n,c/i-h),y=o(s,u/r-l);e&&t.drawImage(e,d,f,g,m,p,_,v,y)}},_needsResize:function(){var t=this.getTotalObjectScaling();return t.scaleX!==this._lastScaleX||t.scaleY!==this._lastScaleY},_resetWidthHeight:function(){this.set(this.getOriginalSize())},_initElement:function(t,e){this.setElement(S.util.getById(t),e),S.util.addClass(this.getElement(),S.Image.CSS_CANVAS)},_initConfig:function(t){t||(t={}),this.setOptions(t),this._setWidthHeight(t)},_initFilters:function(t,e){t&&t.length?S.util.enlivenObjects(t,(function(t){e&&e(t)}),"fabric.Image.filters"):e&&e()},_setWidthHeight:function(t){t||(t={});var e=this.getElement();this.width=t.width||e.naturalWidth||e.width||0,this.height=t.height||e.naturalHeight||e.height||0},parsePreserveAspectRatioAttribute:function(){var t,e=S.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio||""),i=this._element.width,r=this._element.height,n=1,s=1,o=0,a=0,h=0,l=0,c=this.width,u=this.height,d={width:c,height:u};return!e||"none"===e.alignX&&"none"===e.alignY?(n=c/i,s=u/r):("meet"===e.meetOrSlice&&(t=(c-i*(n=s=S.util.findScaleToFit(this._element,d)))/2,"Min"===e.alignX&&(o=-t),"Max"===e.alignX&&(o=t),t=(u-r*s)/2,"Min"===e.alignY&&(a=-t),"Max"===e.alignY&&(a=t)),"slice"===e.meetOrSlice&&(t=i-c/(n=s=S.util.findScaleToCover(this._element,d)),"Mid"===e.alignX&&(h=t/2),"Max"===e.alignX&&(h=t),t=r-u/s,"Mid"===e.alignY&&(l=t/2),"Max"===e.alignY&&(l=t),i=c/n,r=u/s)),{width:i,height:r,scaleX:n,scaleY:s,offsetLeft:o,offsetTop:a,cropX:h,cropY:l}}}),S.Image.CSS_CANVAS="canvas-img",S.Image.prototype.getSvgSrc=S.Image.prototype.getSrc,S.Image.fromObject=function(t,e){var i=S.util.object.clone(t);S.util.loadImage(i.src,(function(t,r){r?e&&e(null,!0):S.Image.prototype._initFilters.call(i,i.filters,(function(r){i.filters=r||[],S.Image.prototype._initFilters.call(i,[i.resizeFilter],(function(r){i.resizeFilter=r[0],S.util.enlivenObjectEnlivables(i,i,(function(){var r=new S.Image(t,i);e(r,!1)}))}))}))}),null,i.crossOrigin)},S.Image.fromURL=function(t,e,i){S.util.loadImage(t,(function(t,r){e&&e(new S.Image(t,i),r)}),null,i&&i.crossOrigin)},S.Image.ATTRIBUTE_NAMES=S.SHARED_ATTRIBUTES.concat("x y width height preserveAspectRatio xlink:href crossOrigin image-rendering".split(" ")),S.Image.fromElement=function(t,i,r){var n=S.parseAttributes(t,S.Image.ATTRIBUTE_NAMES);S.Image.fromURL(n["xlink:href"],i,e(r?S.util.object.clone(r):{},n))})}(e),S.util.object.extend(S.Object.prototype,{_getAngleValueForStraighten:function(){var t=this.angle%360;return t>0?90*Math.round((t-1)/90):90*Math.round(t/90)},straighten:function(){return this.rotate(this._getAngleValueForStraighten())},fxStraighten:function(t){var e=function(){},i=(t=t||{}).onComplete||e,r=t.onChange||e,n=this;return S.util.animate({target:this,startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(t){n.rotate(t),r()},onComplete:function(){n.setCoords(),i()}})}}),S.util.object.extend(S.StaticCanvas.prototype,{straightenObject:function(t){return t.straighten(),this.requestRenderAll(),this},fxStraightenObject:function(t){return t.fxStraighten({onChange:this.requestRenderAllBound})}}),function(){function t(t,e){var i="precision "+e+" float;\nvoid main(){}",r=t.createShader(t.FRAGMENT_SHADER);return t.shaderSource(r,i),t.compileShader(r),!!t.getShaderParameter(r,t.COMPILE_STATUS)}function e(t){t&&t.tileSize&&(this.tileSize=t.tileSize),this.setupGLContext(this.tileSize,this.tileSize),this.captureGPUInfo()}S.isWebglSupported=function(e){if(S.isLikelyNode)return!1;e=e||S.WebglFilterBackend.prototype.tileSize;var i=document.createElement("canvas"),r=i.getContext("webgl")||i.getContext("experimental-webgl"),n=!1;if(r){S.maxTextureSize=r.getParameter(r.MAX_TEXTURE_SIZE),n=S.maxTextureSize>=e;for(var s=["highp","mediump","lowp"],o=0;o<3;o++)if(t(r,s[o])){S.webGlPrecision=s[o];break}}return this.isSupported=n,n},S.WebglFilterBackend=e,e.prototype={tileSize:2048,resources:{},setupGLContext:function(t,e){this.dispose(),this.createWebGLCanvas(t,e),this.aPosition=new Float32Array([0,0,0,1,1,0,1,1]),this.chooseFastestCopyGLTo2DMethod(t,e)},chooseFastestCopyGLTo2DMethod:function(t,e){var i,r=void 0!==window.performance;try{new ImageData(1,1),i=!0}catch(t){i=!1}var n="undefined"!=typeof ArrayBuffer,s="undefined"!=typeof Uint8ClampedArray;if(r&&i&&n&&s){var o=S.util.createCanvasElement(),a=new ArrayBuffer(t*e*4);if(S.forceGLPutImageData)return this.imageBuffer=a,void(this.copyGLTo2D=x);var h,l,c={imageBuffer:a,destinationWidth:t,destinationHeight:e,targetCanvas:o};o.width=t,o.height=e,h=window.performance.now(),I.call(c,this.gl,c),l=window.performance.now()-h,h=window.performance.now(),x.call(c,this.gl,c),l>window.performance.now()-h?(this.imageBuffer=a,this.copyGLTo2D=x):this.copyGLTo2D=I}},createWebGLCanvas:function(t,e){var i=S.util.createCanvasElement();i.width=t,i.height=e;var r={alpha:!0,premultipliedAlpha:!1,depth:!1,stencil:!1,antialias:!1},n=i.getContext("webgl",r);n||(n=i.getContext("experimental-webgl",r)),n&&(n.clearColor(0,0,0,0),this.canvas=i,this.gl=n)},applyFilters:function(t,e,i,r,n,s){var o,a=this.gl;s&&(o=this.getCachedTexture(s,e));var h={originalWidth:e.width||e.originalWidth,originalHeight:e.height||e.originalHeight,sourceWidth:i,sourceHeight:r,destinationWidth:i,destinationHeight:r,context:a,sourceTexture:this.createTexture(a,i,r,!o&&e),targetTexture:this.createTexture(a,i,r),originalTexture:o||this.createTexture(a,i,r,!o&&e),passes:t.length,webgl:!0,aPosition:this.aPosition,programCache:this.programCache,pass:0,filterBackend:this,targetCanvas:n},l=a.createFramebuffer();return a.bindFramebuffer(a.FRAMEBUFFER,l),t.forEach((function(t){t&&t.applyTo(h)})),function(t){var e=t.targetCanvas,i=e.width,r=e.height,n=t.destinationWidth,s=t.destinationHeight;i===n&&r===s||(e.width=n,e.height=s)}(h),this.copyGLTo2D(a,h),a.bindTexture(a.TEXTURE_2D,null),a.deleteTexture(h.sourceTexture),a.deleteTexture(h.targetTexture),a.deleteFramebuffer(l),n.getContext("2d").setTransform(1,0,0,1,0,0),h},dispose:function(){this.canvas&&(this.canvas=null,this.gl=null),this.clearWebGLCaches()},clearWebGLCaches:function(){this.programCache={},this.textureCache={}},createTexture:function(t,e,i,r){var n=t.createTexture();return t.bindTexture(t.TEXTURE_2D,n),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),r?t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,r):t.texImage2D(t.TEXTURE_2D,0,t.RGBA,e,i,0,t.RGBA,t.UNSIGNED_BYTE,null),n},getCachedTexture:function(t,e){if(this.textureCache[t])return this.textureCache[t];var i=this.createTexture(this.gl,e.width,e.height,e);return this.textureCache[t]=i,i},evictCachesForKey:function(t){this.textureCache[t]&&(this.gl.deleteTexture(this.textureCache[t]),delete this.textureCache[t])},copyGLTo2D:I,captureGPUInfo:function(){if(this.gpuInfo)return this.gpuInfo;var t=this.gl,e={renderer:"",vendor:""};if(!t)return e;var i=t.getExtension("WEBGL_debug_renderer_info");if(i){var r=t.getParameter(i.UNMASKED_RENDERER_WEBGL),n=t.getParameter(i.UNMASKED_VENDOR_WEBGL);r&&(e.renderer=r.toLowerCase()),n&&(e.vendor=n.toLowerCase())}return this.gpuInfo=e,e}}}(),function(){var t=function(){};function e(){}S.Canvas2dFilterBackend=e,e.prototype={evictCachesForKey:t,dispose:t,clearWebGLCaches:t,resources:{},applyFilters:function(t,e,i,r,n){var s=n.getContext("2d");s.drawImage(e,0,0,i,r);var o={sourceWidth:i,sourceHeight:r,imageData:s.getImageData(0,0,i,r),originalEl:e,originalImageData:s.getImageData(0,0,i,r),canvasEl:n,ctx:s,filterBackend:this};return t.forEach((function(t){t.applyTo(o)})),o.imageData.width===i&&o.imageData.height===r||(n.width=o.imageData.width,n.height=o.imageData.height),s.putImageData(o.imageData,0,0),o}}}(),S.Image=S.Image||{},S.Image.filters=S.Image.filters||{},S.Image.filters.BaseFilter=S.util.createClass({type:"BaseFilter",vertexSource:"attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvoid main() {\nvTexCoord = aPosition;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",fragmentSource:"precision highp float;\nvarying vec2 vTexCoord;\nuniform sampler2D uTexture;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\n}",initialize:function(t){t&&this.setOptions(t)},setOptions:function(t){for(var e in t)this[e]=t[e]},createProgram:function(t,e,i){e=e||this.fragmentSource,i=i||this.vertexSource,"highp"!==S.webGlPrecision&&(e=e.replace(/precision highp float/g,"precision "+S.webGlPrecision+" float"));var r=t.createShader(t.VERTEX_SHADER);if(t.shaderSource(r,i),t.compileShader(r),!t.getShaderParameter(r,t.COMPILE_STATUS))throw new Error("Vertex shader compile error for "+this.type+": "+t.getShaderInfoLog(r));var n=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(n,e),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS))throw new Error("Fragment shader compile error for "+this.type+": "+t.getShaderInfoLog(n));var s=t.createProgram();if(t.attachShader(s,r),t.attachShader(s,n),t.linkProgram(s),!t.getProgramParameter(s,t.LINK_STATUS))throw new Error('Shader link error for "${this.type}" '+t.getProgramInfoLog(s));var o=this.getAttributeLocations(t,s),a=this.getUniformLocations(t,s)||{};return a.uStepW=t.getUniformLocation(s,"uStepW"),a.uStepH=t.getUniformLocation(s,"uStepH"),{program:s,attributeLocations:o,uniformLocations:a}},getAttributeLocations:function(t,e){return{aPosition:t.getAttribLocation(e,"aPosition")}},getUniformLocations:function(){return{}},sendAttributeData:function(t,e,i){var r=e.aPosition,n=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,n),t.enableVertexAttribArray(r),t.vertexAttribPointer(r,2,t.FLOAT,!1,0,0),t.bufferData(t.ARRAY_BUFFER,i,t.STATIC_DRAW)},_setupFrameBuffer:function(t){var e,i,r=t.context;t.passes>1?(e=t.destinationWidth,i=t.destinationHeight,t.sourceWidth===e&&t.sourceHeight===i||(r.deleteTexture(t.targetTexture),t.targetTexture=t.filterBackend.createTexture(r,e,i)),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,t.targetTexture,0)):(r.bindFramebuffer(r.FRAMEBUFFER,null),r.finish())},_swapTextures:function(t){t.passes--,t.pass++;var e=t.targetTexture;t.targetTexture=t.sourceTexture,t.sourceTexture=e},isNeutralState:function(){var t=this.mainParameter,e=S.Image.filters[this.type].prototype;if(t){if(Array.isArray(e[t])){for(var i=e[t].length;i--;)if(this[t][i]!==e[t][i])return!1;return!0}return e[t]===this[t]}return!1},applyTo:function(t){t.webgl?(this._setupFrameBuffer(t),this.applyToWebGL(t),this._swapTextures(t)):this.applyTo2d(t)},retrieveShader:function(t){return t.programCache.hasOwnProperty(this.type)||(t.programCache[this.type]=this.createProgram(t.context)),t.programCache[this.type]},applyToWebGL:function(t){var e=t.context,i=this.retrieveShader(t);0===t.pass&&t.originalTexture?e.bindTexture(e.TEXTURE_2D,t.originalTexture):e.bindTexture(e.TEXTURE_2D,t.sourceTexture),e.useProgram(i.program),this.sendAttributeData(e,i.attributeLocations,t.aPosition),e.uniform1f(i.uniformLocations.uStepW,1/t.sourceWidth),e.uniform1f(i.uniformLocations.uStepH,1/t.sourceHeight),this.sendUniformData(e,i.uniformLocations),e.viewport(0,0,t.destinationWidth,t.destinationHeight),e.drawArrays(e.TRIANGLE_STRIP,0,4)},bindAdditionalTexture:function(t,e,i){t.activeTexture(i),t.bindTexture(t.TEXTURE_2D,e),t.activeTexture(t.TEXTURE0)},unbindAdditionalTexture:function(t,e){t.activeTexture(e),t.bindTexture(t.TEXTURE_2D,null),t.activeTexture(t.TEXTURE0)},getMainParameter:function(){return this[this.mainParameter]},setMainParameter:function(t){this[this.mainParameter]=t},sendUniformData:function(){},createHelpLayer:function(t){if(!t.helpLayer){var e=document.createElement("canvas");e.width=t.sourceWidth,e.height=t.sourceHeight,t.helpLayer=e}},toObject:function(){var t={type:this.type},e=this.mainParameter;return e&&(t[e]=this[e]),t},toJSON:function(){return this.toObject()}}),S.Image.filters.BaseFilter.fromObject=function(t,e){var i=new S.Image.filters[t.type](t);return e&&e(i),i},function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,r=e.util.createClass;i.ColorMatrix=r(i.BaseFilter,{type:"ColorMatrix",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nuniform mat4 uColorMatrix;\nuniform vec4 uConstants;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor *= uColorMatrix;\ncolor += uConstants;\ngl_FragColor = color;\n}",matrix:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],mainParameter:"matrix",colorsOnly:!0,initialize:function(t){this.callSuper("initialize",t),this.matrix=this.matrix.slice(0)},applyTo2d:function(t){var e,i,r,n,s,o=t.imageData.data,a=o.length,h=this.matrix,l=this.colorsOnly;for(s=0;s=w||o<0||o>=y||(h=4*(a*y+o),l=p[f*_+d],e+=m[h]*l,i+=m[h+1]*l,r+=m[h+2]*l,T||(n+=m[h+3]*l));E[s]=e,E[s+1]=i,E[s+2]=r,E[s+3]=T?m[s+3]:n}t.imageData=C},getUniformLocations:function(t,e){return{uMatrix:t.getUniformLocation(e,"uMatrix"),uOpaque:t.getUniformLocation(e,"uOpaque"),uHalfSize:t.getUniformLocation(e,"uHalfSize"),uSize:t.getUniformLocation(e,"uSize")}},sendUniformData:function(t,e){t.uniform1fv(e.uMatrix,this.matrix)},toObject:function(){return i(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),e.Image.filters.Convolute.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,r=e.util.createClass;i.Grayscale=r(i.BaseFilter,{type:"Grayscale",fragmentSource:{average:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat average = (color.r + color.b + color.g) / 3.0;\ngl_FragColor = vec4(average, average, average, color.a);\n}",lightness:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\ngl_FragColor = vec4(average, average, average, col.a);\n}",luminosity:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\ngl_FragColor = vec4(average, average, average, col.a);\n}"},mode:"average",mainParameter:"mode",applyTo2d:function(t){var e,i,r=t.imageData.data,n=r.length,s=this.mode;for(e=0;el[0]&&n>l[1]&&s>l[2]&&r 0.0) {\n"+this.fragmentSource[t]+"}\n}"},retrieveShader:function(t){var e,i=this.type+"_"+this.mode;return t.programCache.hasOwnProperty(i)||(e=this.buildSource(this.mode),t.programCache[i]=this.createProgram(t.context,e)),t.programCache[i]},applyTo2d:function(t){var i,r,n,s,o,a,h,l=t.imageData.data,c=l.length,u=1-this.alpha;i=(h=new e.Color(this.color).getSource())[0]*this.alpha,r=h[1]*this.alpha,n=h[2]*this.alpha;for(var d=0;d=t||e<=-t)return 0;if(e<1.1920929e-7&&e>-1.1920929e-7)return 1;var i=(e*=Math.PI)/t;return a(e)/e*a(i)/i}},applyTo2d:function(t){var e=t.imageData,i=this.scaleX,r=this.scaleY;this.rcpScaleX=1/i,this.rcpScaleY=1/r;var n,s=e.width,a=e.height,h=o(s*i),l=o(a*r);"sliceHack"===this.resizeType?n=this.sliceByTwo(t,s,a,h,l):"hermite"===this.resizeType?n=this.hermiteFastResize(t,s,a,h,l):"bilinear"===this.resizeType?n=this.bilinearFiltering(t,s,a,h,l):"lanczos"===this.resizeType&&(n=this.lanczosResize(t,s,a,h,l)),t.imageData=n},sliceByTwo:function(t,i,n,s,o){var a,h,l=t.imageData,c=.5,u=!1,d=!1,f=i*c,g=n*c,m=e.filterBackend.resources,p=0,_=0,v=i,y=0;for(m.sliceByTwo||(m.sliceByTwo=document.createElement("canvas")),((a=m.sliceByTwo).width<1.5*i||a.height=e)){L=r(1e3*s(S-C.x)),w[L]||(w[L]={});for(var F=E.y-y;F<=E.y+y;F++)F<0||F>=o||(M=r(1e3*s(F-C.y)),w[L][M]||(w[L][M]=f(n(i(L*p,2)+i(M*_,2))/1e3)),(b=w[L][M])>0&&(x+=b,A+=b*c[I=4*(F*e+S)],O+=b*c[I+1],R+=b*c[I+2],D+=b*c[I+3]))}d[I=4*(T*a+h)]=A/x,d[I+1]=O/x,d[I+2]=R/x,d[I+3]=D/x}return++h1&&M<-1||(y=2*M*M*M-3*M*M+1)>0&&(b+=y*f[3+(L=4*(D+x*e))],C+=y,f[L+3]<255&&(y=y*f[L+3]/250),E+=y*f[L],T+=y*f[L+1],S+=y*f[L+2],w+=y)}m[v]=E/w,m[v+1]=T/w,m[v+2]=S/w,m[v+3]=b/C}return g},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),e.Image.filters.Resize.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,r=e.util.createClass;i.Contrast=r(i.BaseFilter,{type:"Contrast",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uContrast;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\ncolor.rgb = contrastF * (color.rgb - 0.5) + 0.5;\ngl_FragColor = color;\n}",contrast:0,mainParameter:"contrast",applyTo2d:function(t){if(0!==this.contrast){var e,i=t.imageData.data,r=i.length,n=Math.floor(255*this.contrast),s=259*(n+255)/(255*(259-n));for(e=0;e1&&(e=1/this.aspectRatio):this.aspectRatio<1&&(e=this.aspectRatio),t=e*this.blur*.12,this.horizontal?i[0]=t:i[1]=t,i}}),i.Blur.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,r=e.util.createClass;i.Gamma=r(i.BaseFilter,{type:"Gamma",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform vec3 uGamma;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec3 correction = (1.0 / uGamma);\ncolor.r = pow(color.r, correction.r);\ncolor.g = pow(color.g, correction.g);\ncolor.b = pow(color.b, correction.b);\ngl_FragColor = color;\ngl_FragColor.rgb *= color.a;\n}",gamma:[1,1,1],mainParameter:"gamma",initialize:function(t){this.gamma=[1,1,1],i.BaseFilter.prototype.initialize.call(this,t)},applyTo2d:function(t){var e,i=t.imageData.data,r=this.gamma,n=i.length,s=1/r[0],o=1/r[1],a=1/r[2];for(this.rVals||(this.rVals=new Uint8Array(256),this.gVals=new Uint8Array(256),this.bVals=new Uint8Array(256)),e=0,n=256;e'},_getCacheCanvasDimensions:function(){var t=this.callSuper("_getCacheCanvasDimensions"),e=this.fontSize;return t.width+=e*t.zoomX,t.height+=e*t.zoomY,t},_render:function(t){var e=this.path;e&&!e.isNotVisible()&&e._render(t),this._setTextStyles(t),this._renderTextLinesBackground(t),this._renderTextDecoration(t,"underline"),this._renderText(t),this._renderTextDecoration(t,"overline"),this._renderTextDecoration(t,"linethrough")},_renderText:function(t){"stroke"===this.paintFirst?(this._renderTextStroke(t),this._renderTextFill(t)):(this._renderTextFill(t),this._renderTextStroke(t))},_setTextStyles:function(t,e,i){if(t.textBaseline="alphabetical",this.path)switch(this.pathAlign){case"center":t.textBaseline="middle";break;case"ascender":t.textBaseline="top";break;case"descender":t.textBaseline="bottom"}t.font=this._getFontDeclaration(e,i)},calcTextWidth:function(){for(var t=this.getLineWidth(0),e=1,i=this._textLines.length;et&&(t=r)}return t},_renderTextLine:function(t,e,i,r,n,s){this._renderChars(t,e,i,r,n,s)},_renderTextLinesBackground:function(t){if(this.textBackgroundColor||this.styleHas("textBackgroundColor")){for(var e,i,r,n,s,o,a,h=t.fillStyle,l=this._getLeftOffset(),c=this._getTopOffset(),u=0,d=0,f=this.path,g=0,m=this._textLines.length;g=0:ia?u%=a:u<0&&(u+=a),this._setGraphemeOnPath(u,s,o),u+=s.kernedWidth}return{width:h,numOfSpaces:0}},_setGraphemeOnPath:function(t,i,r){var n=t+i.kernedWidth/2,s=this.path,o=e.util.getPointOnPath(s.path,n,s.segmentsInfo);i.renderLeft=o.x-r.x,i.renderTop=o.y-r.y,i.angle=o.angle+("right"===this.pathSide?Math.PI:0)},_getGraphemeBox:function(t,e,i,r,n){var s,o=this.getCompleteStyleDeclaration(e,i),a=r?this.getCompleteStyleDeclaration(e,i-1):{},h=this._measureChar(t,o,r,a),l=h.kernedWidth,c=h.width;0!==this.charSpacing&&(c+=s=this._getWidthOfCharSpacing(),l+=s);var u={width:c,left:0,height:o.fontSize,kernedWidth:l,deltaY:o.deltaY};if(i>0&&!n){var d=this.__charBounds[e][i-1];u.left=d.left+d.width+h.kernedWidth-h.width}return u},getHeightOfLine:function(t){if(this.__lineHeights[t])return this.__lineHeights[t];for(var e=this._textLines[t],i=this.getHeightOfChar(t,0),r=1,n=e.length;r0){var x=v+s+u;"rtl"===this.direction&&(x=this.width-x-d),l&&_&&(t.fillStyle=_,t.fillRect(x,c+E*r+o,d,this.fontSize/15)),u=f.left,d=f.width,l=g,_=p,r=n,o=a}else d+=f.kernedWidth;x=v+s+u,"rtl"===this.direction&&(x=this.width-x-d),t.fillStyle=p,g&&p&&t.fillRect(x,c+E*r+o,d-C,this.fontSize/15),y+=i}else y+=i;this._removeShadow(t)}},_getFontDeclaration:function(t,i){var r=t||this,n=this.fontFamily,s=e.Text.genericFonts.indexOf(n.toLowerCase())>-1,o=void 0===n||n.indexOf("'")>-1||n.indexOf(",")>-1||n.indexOf('"')>-1||s?r.fontFamily:'"'+r.fontFamily+'"';return[e.isLikelyNode?r.fontWeight:r.fontStyle,e.isLikelyNode?r.fontStyle:r.fontWeight,i?this.CACHE_FONT_SIZE+"px":r.fontSize+"px",o].join(" ")},render:function(t){this.visible&&(this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(this._shouldClearDimensionCache()&&this.initDimensions(),this.callSuper("render",t)))},_splitTextIntoLines:function(t){for(var i=t.split(this._reNewline),r=new Array(i.length),n=["\n"],s=[],o=0;o-1&&(t.underline=!0),t.textDecoration.indexOf("line-through")>-1&&(t.linethrough=!0),t.textDecoration.indexOf("overline")>-1&&(t.overline=!0),delete t.textDecoration)}S.IText=S.util.createClass(S.Text,S.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"",cursorDelay:1e3,cursorDuration:600,caching:!0,hiddenTextareaContainer:null,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,__widthOfSpace:[],inCompositionMode:!1,initialize:function(t,e){this.callSuper("initialize",t,e),this.initBehavior()},setSelectionStart:function(t){t=Math.max(t,0),this._updateAndFire("selectionStart",t)},setSelectionEnd:function(t){t=Math.min(t,this.text.length),this._updateAndFire("selectionEnd",t)},_updateAndFire:function(t,e){this[t]!==e&&(this._fireSelectionChanged(),this[t]=e),this._updateTextarea()},_fireSelectionChanged:function(){this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},initDimensions:function(){this.isEditing&&this.initDelayedCursor(),this.clearContextTop(),this.callSuper("initDimensions")},render:function(t){this.clearContextTop(),this.callSuper("render",t),this.cursorOffsetCache={},this.renderCursorOrSelection()},_render:function(t){this.callSuper("_render",t)},clearContextTop:function(t){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var e=this.canvas.contextTop,i=this.canvas.viewportTransform;e.save(),e.transform(i[0],i[1],i[2],i[3],i[4],i[5]),this.transform(e),this._clearTextArea(e),t||e.restore()}},renderCursorOrSelection:function(){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var t=this._getCursorBoundaries(),e=this.canvas.contextTop;this.clearContextTop(!0),this.selectionStart===this.selectionEnd?this.renderCursor(t,e):this.renderSelection(t,e),e.restore()}},_clearTextArea:function(t){var e=this.width+4,i=this.height+4;t.clearRect(-e/2,-i/2,e,i)},_getCursorBoundaries:function(t){void 0===t&&(t=this.selectionStart);var e=this._getLeftOffset(),i=this._getTopOffset(),r=this._getCursorBoundariesOffsets(t);return{left:e,top:i,leftOffset:r.left,topOffset:r.top}},_getCursorBoundariesOffsets:function(t){if(this.cursorOffsetCache&&"top"in this.cursorOffsetCache)return this.cursorOffsetCache;var e,i,r,n,s=0,o=0,a=this.get2DCursorLocation(t);r=a.charIndex,i=a.lineIndex;for(var h=0;h0?o:0)},"rtl"===this.direction&&(n.left*=-1),this.cursorOffsetCache=n,this.cursorOffsetCache},renderCursor:function(t,e){var i=this.get2DCursorLocation(),r=i.lineIndex,n=i.charIndex>0?i.charIndex-1:0,s=this.getValueOfPropertyAt(r,n,"fontSize"),o=this.scaleX*this.canvas.getZoom(),a=this.cursorWidth/o,h=t.topOffset,l=this.getValueOfPropertyAt(r,n,"deltaY");h+=(1-this._fontSizeFraction)*this.getHeightOfLine(r)/this.lineHeight-s*(1-this._fontSizeFraction),this.inCompositionMode&&this.renderSelection(t,e),e.fillStyle=this.cursorColor||this.getValueOfPropertyAt(r,n,"fill"),e.globalAlpha=this.__isMousedown?1:this._currentCursorOpacity,e.fillRect(t.left+t.leftOffset-a/2,h+t.top+l,a,s)},renderSelection:function(t,e){for(var i=this.inCompositionMode?this.hiddenTextarea.selectionStart:this.selectionStart,r=this.inCompositionMode?this.hiddenTextarea.selectionEnd:this.selectionEnd,n=-1!==this.textAlign.indexOf("justify"),s=this.get2DCursorLocation(i),o=this.get2DCursorLocation(r),a=s.lineIndex,h=o.lineIndex,l=s.charIndex<0?0:s.charIndex,c=o.charIndex<0?0:o.charIndex,u=a;u<=h;u++){var d,f=this._getLineLeftOffset(u)||0,g=this.getHeightOfLine(u),m=0,p=0;if(u===a&&(m=this.__charBounds[a][l].left),u>=a&&u1)&&(g/=this.lineHeight);var v=t.left+f+m,y=p-m,w=g,C=0;this.inCompositionMode?(e.fillStyle=this.compositionColor||"black",w=1,C=g):e.fillStyle=this.selectionColor,"rtl"===this.direction&&(v=this.width-v-y),e.fillRect(v,t.top+t.topOffset+C,y,w),t.topOffset+=d}},getCurrentCharFontSize:function(){var t=this._getCurrentCharIndex();return this.getValueOfPropertyAt(t.l,t.c,"fontSize")},getCurrentCharColor:function(){var t=this._getCurrentCharIndex();return this.getValueOfPropertyAt(t.l,t.c,"fill")},_getCurrentCharIndex:function(){var t=this.get2DCursorLocation(this.selectionStart,!0),e=t.charIndex>0?t.charIndex-1:0;return{l:t.lineIndex,c:e}}}),S.IText.fromObject=function(e,i){if(t(e),e.styles)for(var r in e.styles)for(var n in e.styles[r])t(e.styles[r][n]);S.Object._fromObject("IText",e,i,"text")}}(),T=S.util.object.clone,S.util.object.extend(S.IText.prototype,{initBehavior:function(){this.initAddedHandler(),this.initRemovedHandler(),this.initCursorSelectionHandlers(),this.initDoubleClickSimulation(),this.mouseMoveHandler=this.mouseMoveHandler.bind(this)},onDeselect:function(){this.isEditing&&this.exitEditing(),this.selected=!1},initAddedHandler:function(){var t=this;this.on("added",(function(){var e=t.canvas;e&&(e._hasITextHandlers||(e._hasITextHandlers=!0,t._initCanvasHandlers(e)),e._iTextInstances=e._iTextInstances||[],e._iTextInstances.push(t))}))},initRemovedHandler:function(){var t=this;this.on("removed",(function(){var e=t.canvas;e&&(e._iTextInstances=e._iTextInstances||[],S.util.removeFromArray(e._iTextInstances,t),0===e._iTextInstances.length&&(e._hasITextHandlers=!1,t._removeCanvasHandlers(e)))}))},_initCanvasHandlers:function(t){t._mouseUpITextHandler=function(){t._iTextInstances&&t._iTextInstances.forEach((function(t){t.__isMousedown=!1}))},t.on("mouse:up",t._mouseUpITextHandler)},_removeCanvasHandlers:function(t){t.off("mouse:up",t._mouseUpITextHandler)},_tick:function(){this._currentTickState=this._animateCursor(this,1,this.cursorDuration,"_onTickComplete")},_animateCursor:function(t,e,i,r){var n;return n={isAborted:!1,abort:function(){this.isAborted=!0}},t.animate("_currentCursorOpacity",e,{duration:i,onComplete:function(){n.isAborted||t[r]()},onChange:function(){t.canvas&&t.selectionStart===t.selectionEnd&&t.renderCursorOrSelection()},abort:function(){return n.isAborted}}),n},_onTickComplete:function(){var t=this;this._cursorTimeout1&&clearTimeout(this._cursorTimeout1),this._cursorTimeout1=setTimeout((function(){t._currentTickCompleteState=t._animateCursor(t,0,this.cursorDuration/2,"_tick")}),100)},initDelayedCursor:function(t){var e=this,i=t?0:this.cursorDelay;this.abortCursorAnimation(),this._currentCursorOpacity=1,this._cursorTimeout2=setTimeout((function(){e._tick()}),i)},abortCursorAnimation:function(){var t=this._currentTickState||this._currentTickCompleteState,e=this.canvas;this._currentTickState&&this._currentTickState.abort(),this._currentTickCompleteState&&this._currentTickCompleteState.abort(),clearTimeout(this._cursorTimeout1),clearTimeout(this._cursorTimeout2),this._currentCursorOpacity=0,t&&e&&e.clearContext(e.contextTop||e.contextContainer)},selectAll:function(){return this.selectionStart=0,this.selectionEnd=this._text.length,this._fireSelectionChanged(),this._updateTextarea(),this},getSelectedText:function(){return this._text.slice(this.selectionStart,this.selectionEnd).join("")},findWordBoundaryLeft:function(t){var e=0,i=t-1;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)e++,i--;for(;/\S/.test(this._text[i])&&i>-1;)e++,i--;return t-e},findWordBoundaryRight:function(t){var e=0,i=t;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)e++,i++;for(;/\S/.test(this._text[i])&&i-1;)e++,i--;return t-e},findLineBoundaryRight:function(t){for(var e=0,i=t;!/\n/.test(this._text[i])&&i0&&rthis.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=e):(this.selectionStart=e,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===i&&this.selectionEnd===r||(this.restartCursorIfNeeded(),this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},fromStringToGraphemeSelection:function(t,e,i){var r=i.slice(0,t),n=S.util.string.graphemeSplit(r).length;if(t===e)return{selectionStart:n,selectionEnd:n};var s=i.slice(t,e);return{selectionStart:n,selectionEnd:n+S.util.string.graphemeSplit(s).length}},fromGraphemeToStringSelection:function(t,e,i){var r=i.slice(0,t).join("").length;return t===e?{selectionStart:r,selectionEnd:r}:{selectionStart:r,selectionEnd:r+i.slice(t,e).join("").length}},_updateTextarea:function(){if(this.cursorOffsetCache={},this.hiddenTextarea){if(!this.inCompositionMode){var t=this.fromGraphemeToStringSelection(this.selectionStart,this.selectionEnd,this._text);this.hiddenTextarea.selectionStart=t.selectionStart,this.hiddenTextarea.selectionEnd=t.selectionEnd}this.updateTextareaPosition()}},updateFromTextArea:function(){if(this.hiddenTextarea){this.cursorOffsetCache={},this.text=this.hiddenTextarea.value,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords());var t=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value);this.selectionEnd=this.selectionStart=t.selectionEnd,this.inCompositionMode||(this.selectionStart=t.selectionStart),this.updateTextareaPosition()}},updateTextareaPosition:function(){if(this.selectionStart===this.selectionEnd){var t=this._calcTextareaPosition();this.hiddenTextarea.style.left=t.left,this.hiddenTextarea.style.top=t.top}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var t=this.inCompositionMode?this.compositionStart:this.selectionStart,e=this._getCursorBoundaries(t),i=this.get2DCursorLocation(t),r=i.lineIndex,n=i.charIndex,s=this.getValueOfPropertyAt(r,n,"fontSize")*this.lineHeight,o=e.leftOffset,a=this.calcTransformMatrix(),h={x:e.left+o,y:e.top+e.topOffset+s},l=this.canvas.getRetinaScaling(),c=this.canvas.upperCanvasEl,u=c.width/l,d=c.height/l,f=u-s,g=d-s,m=c.clientWidth/u,p=c.clientHeight/d;return h=S.util.transformPoint(h,a),(h=S.util.transformPoint(h,this.canvas.viewportTransform)).x*=m,h.y*=p,h.x<0&&(h.x=0),h.x>f&&(h.x=f),h.y<0&&(h.y=0),h.y>g&&(h.y=g),h.x+=this.canvas._offset.left,h.y+=this.canvas._offset.top,{left:h.x+"px",top:h.y+"px",fontSize:s+"px",charHeight:s}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,selectable:this.selectable,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.hoverCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.selectable=this._savedProps.selectable,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var t=this._textBeforeEdit!==this.text,e=this.hiddenTextarea;return this.selected=!1,this.isEditing=!1,this.selectionEnd=this.selectionStart,e&&(e.blur&&e.blur(),e.parentNode&&e.parentNode.removeChild(e)),this.hiddenTextarea=null,this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this.fire("editing:exited"),t&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),t&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var t in this.styles)this._textLines[t]||delete this.styles[t]},removeStyleFromTo:function(t,e){var i,r,n=this.get2DCursorLocation(t,!0),s=this.get2DCursorLocation(e,!0),o=n.lineIndex,a=n.charIndex,h=s.lineIndex,l=s.charIndex;if(o!==h){if(this.styles[o])for(i=a;i=l&&(r[c-d]=r[u],delete r[u])}},shiftLineStyles:function(t,e){var i=T(this.styles);for(var r in this.styles){var n=parseInt(r,10);n>t&&(this.styles[n+e]=i[n],i[n-e]||delete this.styles[n])}},restartCursorIfNeeded:function(){this._currentTickState&&!this._currentTickState.isAborted&&this._currentTickCompleteState&&!this._currentTickCompleteState.isAborted||this.initDelayedCursor()},insertNewlineStyleObject:function(t,e,i,r){var n,s={},o=!1,a=this._unwrappedTextLines[t].length===e;for(var h in i||(i=1),this.shiftLineStyles(t,i),this.styles[t]&&(n=this.styles[t][0===e?e:e-1]),this.styles[t]){var l=parseInt(h,10);l>=e&&(o=!0,s[l-e]=this.styles[t][h],a&&0===e||delete this.styles[t][h])}var c=!1;for(o&&!a&&(this.styles[t+i]=s,c=!0),c&&i--;i>0;)r&&r[i-1]?this.styles[t+i]={0:T(r[i-1])}:n?this.styles[t+i]={0:T(n)}:delete this.styles[t+i],i--;this._forceClearCache=!0},insertCharStyleObject:function(t,e,i,r){this.styles||(this.styles={});var n=this.styles[t],s=n?T(n):{};for(var o in i||(i=1),s){var a=parseInt(o,10);a>=e&&(n[a+i]=s[a],s[a-i]||delete n[a])}if(this._forceClearCache=!0,r)for(;i--;)Object.keys(r[i]).length&&(this.styles[t]||(this.styles[t]={}),this.styles[t][e+i]=T(r[i]));else if(n)for(var h=n[e?e-1:1];h&&i--;)this.styles[t][e+i]=T(h)},insertNewStyleBlock:function(t,e,i){for(var r=this.get2DCursorLocation(e,!0),n=[0],s=0,o=0;o0&&(this.insertCharStyleObject(r.lineIndex,r.charIndex,n[0],i),i=i&&i.slice(n[0]+1)),s&&this.insertNewlineStyleObject(r.lineIndex,r.charIndex+n[0],s),o=1;o0?this.insertCharStyleObject(r.lineIndex+o,0,n[o],i):i&&this.styles[r.lineIndex+o]&&i[0]&&(this.styles[r.lineIndex+o][0]=i[0]),i=i&&i.slice(n[o]+1);n[o]>0&&this.insertCharStyleObject(r.lineIndex+o,0,n[o],i)},setSelectionStartEndWithShift:function(t,e,i){i<=t?(e===t?this._selectionDirection="left":"right"===this._selectionDirection&&(this._selectionDirection="left",this.selectionEnd=t),this.selectionStart=i):i>t&&it?this.selectionStart=t:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>t?this.selectionEnd=t:this.selectionEnd<0&&(this.selectionEnd=0)}}),S.util.object.extend(S.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown)},onMouseDown:function(t){if(this.canvas){this.__newClickTime=+new Date;var e=t.pointer;this.isTripleClick(e)&&(this.fire("tripleclick",t),this._stopEvent(t.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=e,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected}},isTripleClick:function(t){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===t.x&&this.__lastPointer.y===t.y},_stopEvent:function(t){t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation()},initCursorSelectionHandlers:function(){this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},doubleClickHandler:function(t){this.isEditing&&this.selectWord(this.getSelectionStartFromPointer(t.e))},tripleClickHandler:function(t){this.isEditing&&this.selectLine(this.getSelectionStartFromPointer(t.e))},initClicks:function(){this.on("mousedblclick",this.doubleClickHandler),this.on("tripleclick",this.tripleClickHandler)},_mouseDownHandler:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.__isMousedown=!0,this.selected&&(this.inCompositionMode=!1,this.setCursorByClick(t.e)),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection()))},_mouseDownHandlerBefore:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.selected=this===this.canvas._activeObject)},initMousedownHandler:function(){this.on("mousedown",this._mouseDownHandler),this.on("mousedown:before",this._mouseDownHandlerBefore)},initMouseupHandler:function(){this.on("mouseup",this.mouseUpHandler)},mouseUpHandler:function(t){if(this.__isMousedown=!1,!(!this.editable||this.group||t.transform&&t.transform.actionPerformed||t.e.button&&1!==t.e.button)){if(this.canvas){var e=this.canvas._activeObject;if(e&&e!==this)return}this.__lastSelected&&!this.__corner?(this.selected=!1,this.__lastSelected=!1,this.enterEditing(t.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()):this.selected=!0}},setCursorByClick:function(t){var e=this.getSelectionStartFromPointer(t),i=this.selectionStart,r=this.selectionEnd;t.shiftKey?this.setSelectionStartEndWithShift(i,r,e):(this.selectionStart=e,this.selectionEnd=e),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(t){for(var e,i=this.getLocalPointer(t),r=0,n=0,s=0,o=0,a=0,h=0,l=this._textLines.length;h0&&(o+=this._textLines[h-1].length+this.missingNewlineOffset(h-1));n=this._getLineLeftOffset(a)*this.scaleX,e=this._textLines[a],"rtl"===this.direction&&(i.x=this.width*this.scaleX-i.x+n);for(var c=0,u=e.length;cs||o<0?0:1);return this.flipX&&(a=n-a),a>this._text.length&&(a=this._text.length),a}}),S.util.object.extend(S.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=S.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.setAttribute("autocorrect","off"),this.hiddenTextarea.setAttribute("autocomplete","off"),this.hiddenTextarea.setAttribute("spellcheck","false"),this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea",""),this.hiddenTextarea.setAttribute("wrap","off");var t=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+t.top+"; left: "+t.left+"; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; paddingーtop: "+t.fontSize+";",this.hiddenTextareaContainer?this.hiddenTextareaContainer.appendChild(this.hiddenTextarea):S.document.body.appendChild(this.hiddenTextarea),S.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),S.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),S.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),S.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),S.util.addListener(this.hiddenTextarea,"cut",this.copy.bind(this)),S.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),S.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),S.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),S.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(S.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},keysMap:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown"},keysMapRtl:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorLeft",36:"moveCursorRight",37:"moveCursorRight",38:"moveCursorUp",39:"moveCursorLeft",40:"moveCursorDown"},ctrlKeysMapUp:{67:"copy",88:"cut"},ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(t){if(this.isEditing){var e="rtl"===this.direction?this.keysMapRtl:this.keysMap;if(t.keyCode in e)this[e[t.keyCode]](t);else{if(!(t.keyCode in this.ctrlKeysMapDown)||!t.ctrlKey&&!t.metaKey)return;this[this.ctrlKeysMapDown[t.keyCode]](t)}t.stopImmediatePropagation(),t.preventDefault(),t.keyCode>=33&&t.keyCode<=40?(this.inCompositionMode=!1,this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.requestRenderAll()}},onKeyUp:function(t){!this.isEditing||this._copyDone||this.inCompositionMode?this._copyDone=!1:t.keyCode in this.ctrlKeysMapUp&&(t.ctrlKey||t.metaKey)&&(this[this.ctrlKeysMapUp[t.keyCode]](t),t.stopImmediatePropagation(),t.preventDefault(),this.canvas&&this.canvas.requestRenderAll())},onInput:function(t){var e=this.fromPaste;if(this.fromPaste=!1,t&&t.stopPropagation(),this.isEditing){var i,r,n,s,o,a=this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,h=this._text.length,l=a.length,c=l-h,u=this.selectionStart,d=this.selectionEnd,f=u!==d;if(""===this.hiddenTextarea.value)return this.styles={},this.updateFromTextArea(),this.fire("changed"),void(this.canvas&&(this.canvas.fire("text:changed",{target:this}),this.canvas.requestRenderAll()));var g=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value),m=u>g.selectionStart;f?(i=this._text.slice(u,d),c+=d-u):l0&&(r+=(i=this.__charBounds[t][e-1]).left+i.width),r},getDownCursorOffset:function(t,e){var i=this._getSelectionForOffset(t,e),r=this.get2DCursorLocation(i),n=r.lineIndex;if(n===this._textLines.length-1||t.metaKey||34===t.keyCode)return this._text.length-i;var s=r.charIndex,o=this._getWidthBeforeCursor(n,s),a=this._getIndexOnLine(n+1,o);return this._textLines[n].slice(s).length+a+1+this.missingNewlineOffset(n)},_getSelectionForOffset:function(t,e){return t.shiftKey&&this.selectionStart!==this.selectionEnd&&e?this.selectionEnd:this.selectionStart},getUpCursorOffset:function(t,e){var i=this._getSelectionForOffset(t,e),r=this.get2DCursorLocation(i),n=r.lineIndex;if(0===n||t.metaKey||33===t.keyCode)return-i;var s=r.charIndex,o=this._getWidthBeforeCursor(n,s),a=this._getIndexOnLine(n-1,o),h=this._textLines[n].slice(0,s),l=this.missingNewlineOffset(n-1);return-this._textLines[n-1].length+a-h.length+(1-l)},_getIndexOnLine:function(t,e){for(var i,r,n=this._textLines[t],s=this._getLineLeftOffset(t),o=0,a=0,h=n.length;ae){r=!0;var l=s-i,c=s,u=Math.abs(l-e);o=Math.abs(c-e)=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorUpOrDown("Down",t)},moveCursorUp:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",t)},_moveCursorUpOrDown:function(t,e){var i=this["get"+t+"CursorOffset"](e,"right"===this._selectionDirection);e.shiftKey?this.moveCursorWithShift(i):this.moveCursorWithoutShift(i),0!==i&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(t){var e="left"===this._selectionDirection?this.selectionStart+t:this.selectionEnd+t;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,e),0!==t},moveCursorWithoutShift:function(t){return t<0?(this.selectionStart+=t,this.selectionEnd=this.selectionStart):(this.selectionEnd+=t,this.selectionStart=this.selectionEnd),0!==t},moveCursorLeft:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",t)},_move:function(t,e,i){var r;if(t.altKey)r=this["findWordBoundary"+i](this[e]);else{if(!t.metaKey&&35!==t.keyCode&&36!==t.keyCode)return this[e]+="Left"===i?-1:1,!0;r=this["findLineBoundary"+i](this[e])}if(void 0!==typeof r&&this[e]!==r)return this[e]=r,!0},_moveLeft:function(t,e){return this._move(t,e,"Left")},_moveRight:function(t,e){return this._move(t,e,"Right")},moveCursorLeftWithoutShift:function(t){var e=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(e=this._moveLeft(t,"selectionStart")),this.selectionEnd=this.selectionStart,e},moveCursorLeftWithShift:function(t){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(t,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(t,"selectionStart")):void 0},moveCursorRight:function(t){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorLeftOrRight("Right",t)},_moveCursorLeftOrRight:function(t,e){var i="moveCursor"+t+"With";this._currentCursorOpacity=1,e.shiftKey?i+="Shift":i+="outShift",this[i](e)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(t){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(t,"selectionStart"):this.selectionEnd!==this._text.length?(this._selectionDirection="right",this._moveRight(t,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(t){var e=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(e=this._moveRight(t,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,e},removeChars:function(t,e){void 0===e&&(e=t+1),this.removeStyleFromTo(t,e),this._text.splice(t,e-t),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()},insertChars:function(t,e,i,r){void 0===r&&(r=i),r>i&&this.removeStyleFromTo(i,r);var n=S.util.string.graphemeSplit(t);this.insertNewStyleBlock(n,i,e),this._text=[].concat(this._text.slice(0,i),n,this._text.slice(r)),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()}}),function(){var t=S.util.toFixed,e=/ +/g;S.util.object.extend(S.Text.prototype,{_toSVG:function(){var t=this._getSVGLeftTopOffsets(),e=this._getSVGTextAndBg(t.textTop,t.textLeft);return this._wrapSVGTextAndBg(e)},toSVG:function(t){return this._createBaseSVGMarkup(this._toSVG(),{reviver:t,noStyle:!0,withShadow:!0})},_getSVGLeftTopOffsets:function(){return{textLeft:-this.width/2,textTop:-this.height/2,lineTop:this.getHeightOfLine(0)}},_wrapSVGTextAndBg:function(t){var e=this.getSvgTextDecoration(this);return[t.textBgRects.join(""),'\t\t",t.textSpans.join(""),"\n"]},_getSVGTextAndBg:function(t,e){var i,r=[],n=[],s=t;this._setSVGBg(n);for(var o=0,a=this._textLines.length;o",S.util.string.escapeXml(i),""].join("")},_setSVGTextLineText:function(t,e,i,r){var n,s,o,a,h,l=this.getHeightOfLine(e),c=-1!==this.textAlign.indexOf("justify"),u="",d=0,f=this._textLines[e];r+=l*(1-this._fontSizeFraction)/this.lineHeight;for(var g=0,m=f.length-1;g<=m;g++)h=g===m||this.charSpacing,u+=f[g],o=this.__charBounds[e][g],0===d?(i+=o.kernedWidth-o.width,d+=o.width):d+=o.kernedWidth,c&&!h&&this._reSpaceAndTab.test(f[g])&&(h=!0),h||(n=n||this.getCompleteStyleDeclaration(e,g),s=this.getCompleteStyleDeclaration(e,g+1),h=this._hasStyleChangedForSvg(n,s)),h&&(a=this._getStyleDeclaration(e,g)||{},t.push(this._createTextCharSpan(u,a,i,r)),u="",n=s,i+=d,d=0)},_pushTextBgRect:function(e,i,r,n,s,o){var a=S.Object.NUM_FRACTION_DIGITS;e.push("\t\t\n')},_setSVGTextLineBg:function(t,e,i,r){for(var n,s,o=this._textLines[e],a=this.getHeightOfLine(e)/this.lineHeight,h=0,l=0,c=this.getValueOfPropertyAt(e,0,"textBackgroundColor"),u=0,d=o.length;uthis.width&&this._set("width",this.dynamicMinWidth),-1!==this.textAlign.indexOf("justify")&&this.enlargeSpaces(),this.height=this.calcTextHeight(),this.saveState({propertySet:"_dimensionAffectingProps"}))},_generateStyleMap:function(t){for(var e=0,i=0,r=0,n={},s=0;s0?(i=0,r++,e++):!this.splitByGrapheme&&this._reSpaceAndTab.test(t.graphemeText[r])&&s>0&&(i++,r++),n[s]={line:e,offset:i},r+=t.graphemeLines[s].length,i+=t.graphemeLines[s].length;return n},styleHas:function(t,i){if(this._styleMap&&!this.isWrapping){var r=this._styleMap[i];r&&(i=r.line)}return e.Text.prototype.styleHas.call(this,t,i)},isEmptyStyles:function(t){if(!this.styles)return!0;var e,i,r=0,n=!1,s=this._styleMap[t],o=this._styleMap[t+1];for(var a in s&&(t=s.line,r=s.offset),o&&(n=o.line===t,e=o.offset),i=void 0===t?this.styles:{line:this.styles[t]})for(var h in i[a])if(h>=r&&(!n||hr&&!p?(a.push(h),h=[],s=f,p=!0):s+=_,p||o||h.push(d),h=h.concat(c),g=o?0:this._measureWord([d],i,u),u++,p=!1,f>m&&(m=f);return v&&a.push(h),m+n>this.dynamicMinWidth&&(this.dynamicMinWidth=m-_+n),a},isEndOfWrapping:function(t){return!this._styleMap[t+1]||this._styleMap[t+1].line!==this._styleMap[t].line},missingNewlineOffset:function(t){return this.splitByGrapheme?this.isEndOfWrapping(t)?1:0:1},_splitTextIntoLines:function(t){for(var i=e.Text.prototype._splitTextIntoLines.call(this,t),r=this._wrapText(i.lines,this.width),n=new Array(r.length),s=0;s{},898:()=>{},245:()=>{}},ni={};function si(t){var e=ni[t];if(void 0!==e)return e.exports;var i=ni[t]={exports:{}};return ri[t](i,i.exports,si),i.exports}si.d=(t,e)=>{for(var i in e)si.o(e,i)&&!si.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},si.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var oi={};(()=>{let t;si.d(oi,{R:()=>t}),t="undefined"!=typeof document&&"undefined"!=typeof window?si(653).fabric:{version:"5.2.1"}})();var ai,hi,li,ci,ui=oi.R;!function(t){t[t.DIMT_RECTANGLE=1]="DIMT_RECTANGLE",t[t.DIMT_QUADRILATERAL=2]="DIMT_QUADRILATERAL",t[t.DIMT_TEXT=4]="DIMT_TEXT",t[t.DIMT_ARC=8]="DIMT_ARC",t[t.DIMT_IMAGE=16]="DIMT_IMAGE",t[t.DIMT_POLYGON=32]="DIMT_POLYGON",t[t.DIMT_LINE=64]="DIMT_LINE",t[t.DIMT_GROUP=128]="DIMT_GROUP"}(ai||(ai={})),function(t){t[t.DIS_DEFAULT=1]="DIS_DEFAULT",t[t.DIS_SELECTED=2]="DIS_SELECTED"}(hi||(hi={})),function(t){t[t.EF_ENHANCED_FOCUS=4]="EF_ENHANCED_FOCUS",t[t.EF_AUTO_ZOOM=16]="EF_AUTO_ZOOM",t[t.EF_TAP_TO_FOCUS=64]="EF_TAP_TO_FOCUS"}(li||(li={})),function(t){t.GREY="grey",t.GREY32="grey32",t.RGBA="rgba",t.RBGA="rbga",t.GRBA="grba",t.GBRA="gbra",t.BRGA="brga",t.BGRA="bgra"}(ci||(ci={}));const di=t=>"number"==typeof t&&!Number.isNaN(t),fi=t=>"string"==typeof t;var gi,mi,pi,_i,vi,yi,wi,Ci,Ei,Ti,Si;!function(t){t[t.ARC=0]="ARC",t[t.IMAGE=1]="IMAGE",t[t.LINE=2]="LINE",t[t.POLYGON=3]="POLYGON",t[t.QUAD=4]="QUAD",t[t.RECT=5]="RECT",t[t.TEXT=6]="TEXT",t[t.GROUP=7]="GROUP"}(vi||(vi={})),function(t){t[t.DEFAULT=0]="DEFAULT",t[t.SELECTED=1]="SELECTED"}(yi||(yi={}));class bi{get mediaType(){return new Map([["rect",ai.DIMT_RECTANGLE],["quad",ai.DIMT_QUADRILATERAL],["text",ai.DIMT_TEXT],["arc",ai.DIMT_ARC],["image",ai.DIMT_IMAGE],["polygon",ai.DIMT_POLYGON],["line",ai.DIMT_LINE],["group",ai.DIMT_GROUP]]).get(this._mediaType)}get styleSelector(){switch(Je(this,mi,"f")){case hi.DIS_DEFAULT:return"default";case hi.DIS_SELECTED:return"selected"}}set drawingStyleId(t){this.styleId=t}get drawingStyleId(){return this.styleId}set coordinateBase(t){if(!["view","image"].includes(t))throw new Error("Invalid 'coordinateBase'.");this._drawingLayer&&("image"===Je(this,pi,"f")&&"view"===t?this.updateCoordinateBaseFromImageToView():"view"===Je(this,pi,"f")&&"image"===t&&this.updateCoordinateBaseFromViewToImage()),Qe(this,pi,t,"f")}get coordinateBase(){return Je(this,pi,"f")}get drawingLayerId(){return this._drawingLayerId}constructor(t,e){if(gi.add(this),mi.set(this,void 0),pi.set(this,"image"),this._zIndex=null,this._drawingLayer=null,this._drawingLayerId=null,this._mapState_StyleId=new Map,this.mapEvent_Callbacks=new Map([["selected",new Map],["deselected",new Map],["mousedown",new Map],["mouseup",new Map],["dblclick",new Map],["mouseover",new Map],["mouseout",new Map]]),this.mapNoteName_Content=new Map([]),this.isDrawingItem=!0,null!=e&&!di(e))throw new TypeError("Invalid 'drawingStyleId'.");t&&this._setFabricObject(t),this.setState(hi.DIS_DEFAULT),this.styleId=e}_setFabricObject(t){this._fabricObject=t,this._fabricObject.on("selected",(()=>{this.setState(hi.DIS_SELECTED)})),this._fabricObject.on("deselected",(()=>{this._fabricObject.canvas&&this._fabricObject.canvas.getActiveObjects().includes(this._fabricObject)?this.setState(hi.DIS_SELECTED):this.setState(hi.DIS_DEFAULT),"textbox"===this._fabricObject.type&&(this._fabricObject.isEditing&&this._fabricObject.exitEditing(),this._fabricObject.selected=!1)})),t.getDrawingItem=()=>this}_getFabricObject(){return this._fabricObject}setState(t){Qe(this,mi,t,"f")}getState(){return Je(this,mi,"f")}_on(t,e){if(!e)return;const i=t.toLowerCase(),r=this.mapEvent_Callbacks.get(i);if(!r)throw new Error(`Event '${t}' does not exist.`);let n=r.get(e);n||(n=t=>{const i=t.e;if(!i)return void(e&&e.apply(this,[{targetItem:this,itemClientX:null,itemClientY:null,itemPageX:null,itemPageY:null}]));const r={targetItem:this,itemClientX:null,itemClientY:null,itemPageX:null,itemPageY:null};if(this._drawingLayer){let t,e,n,s;const o=i.target.getBoundingClientRect();t=o.left,e=o.top,n=t+window.scrollX,s=e+window.scrollY;const{width:a,height:h}=this._drawingLayer.fabricCanvas.lowerCanvasEl.getBoundingClientRect(),l=this._drawingLayer.width,c=this._drawingLayer.height,u=a/h,d=l/c,f=this._drawingLayer._getObjectFit();let g,m,p,_,v=1;if("contain"===f)u0?i-1:r,Oi),actionName:"modifyPolygon",pointIndex:i}),t}),{}),Qe(this,Ci,JSON.parse(JSON.stringify(t)),"f"),this._mediaType="polygon"}extendSet(t,e){if("vertices"===t){const t=this._fabricObject;if(t.group){const i=t.group;t.points=e.map((t=>({x:t.x-i.left-i.width/2,y:t.y-i.top-i.height/2}))),i.addWithUpdate()}else t.points=e;const i=t.points.length-1;return t.controls=t.points.reduce((function(t,e,r){return t["p"+r]=new ui.Control({positionHandler:xi,actionHandler:Ri(r>0?r-1:i,Oi),actionName:"modifyPolygon",pointIndex:r}),t}),{}),t._setPositionDimensions({}),!0}}extendGet(t){if("vertices"===t){const t=[],e=this._fabricObject;if(e.selectable&&!e.group)for(let i in e.oCoords)t.push({x:e.oCoords[i].x,y:e.oCoords[i].y});else for(let i of e.points){let r=i.x-e.pathOffset.x,n=i.y-e.pathOffset.y;const s=ui.util.transformPoint({x:r,y:n},e.calcTransformMatrix());t.push({x:s.x,y:s.y})}return t}}updateCoordinateBaseFromImageToView(){const t=this.get("vertices").map((t=>({x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)})));this.set("vertices",t)}updateCoordinateBaseFromViewToImage(){const t=this.get("vertices").map((t=>({x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)})));this.set("vertices",t)}setPosition(t){this.setPolygon(t)}getPosition(){return this.getPolygon()}updatePosition(){Je(this,Ci,"f")&&this.setPolygon(Je(this,Ci,"f"))}setPolygon(t){if(!I(t))throw new TypeError("Invalid 'polygon'.");if(this._drawingLayer){if("view"===this.coordinateBase){const e=t.points.map((t=>({x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)})));this.set("vertices",e)}else{if("image"!==this.coordinateBase)throw new Error("Invalid 'coordinateBase'.");this.set("vertices",t.points)}this._drawingLayer.renderAll()}else Qe(this,Ci,JSON.parse(JSON.stringify(t)),"f")}getPolygon(){if(this._drawingLayer){if("view"===this.coordinateBase)return{points:this.get("vertices").map((t=>({x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)})))};if("image"===this.coordinateBase)return{points:this.get("vertices")};throw new Error("Invalid 'coordinateBase'.")}return Je(this,Ci,"f")?JSON.parse(JSON.stringify(Je(this,Ci,"f"))):null}}Ci=new WeakMap;class Li extends bi{set maintainAspectRatio(t){t&&this.set("scaleY",this.get("scaleX"))}get maintainAspectRatio(){return Je(this,Ti,"f")}constructor(t,e,i,r){if(super(null,r),Ei.set(this,void 0),Ti.set(this,void 0),!A(e))throw new TypeError("Invalid 'rect'.");if(t instanceof HTMLImageElement||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement)this._setFabricObject(new ui.Image(t,{left:e.x,top:e.y}));else{if(!C(t))throw new TypeError("Invalid 'image'.");{const i=document.createElement("canvas");let r;if(i.width=t.width,i.height=t.height,t.format===a.IPF_GRAYSCALED){r=new Uint8ClampedArray(t.width*t.height*4);for(let e=0;e{let e=(t=>t.split("\n").map((t=>t.split("\t"))))(t);return(t=>{for(let e=0;;e++){let i=-1;for(let r=0;ri&&(i=n.length)}if(-1===i)break;for(let r=0;r=t[r].length-1)continue;let n=" ".repeat(i+2-t[r][e].length);t[r][e]=t[r][e].concat(n)}}})(e),(t=>{let e="";for(let i=0;i({x:e.x-t.left-t.width/2,y:e.y-t.top-t.height/2}))),t.addWithUpdate()}else i.points=e;const r=i.points.length-1;return i.controls=i.points.reduce((function(t,e,i){return t["p"+i]=new ui.Control({positionHandler:xi,actionHandler:Ri(i>0?i-1:r,Oi),actionName:"modifyPolygon",pointIndex:i}),t}),{}),i._setPositionDimensions({}),!0}}extendGet(t){if("startPoint"===t||"endPoint"===t){const e=[],i=this._fabricObject;if(i.selectable&&!i.group)for(let t in i.oCoords)e.push({x:i.oCoords[t].x,y:i.oCoords[t].y});else for(let t of i.points){let r=t.x-i.pathOffset.x,n=t.y-i.pathOffset.y;const s=ui.util.transformPoint({x:r,y:n},i.calcTransformMatrix());e.push({x:s.x,y:s.y})}return"startPoint"===t?e[0]:e[1]}}updateCoordinateBaseFromImageToView(){const t=this.get("startPoint"),e=this.get("endPoint");this.set("startPoint",{x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)}),this.set("endPoint",{x:this.convertPropFromViewToImage(e.x),y:this.convertPropFromViewToImage(e.y)})}updateCoordinateBaseFromViewToImage(){const t=this.get("startPoint"),e=this.get("endPoint");this.set("startPoint",{x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)}),this.set("endPoint",{x:this.convertPropFromImageToView(e.x),y:this.convertPropFromImageToView(e.y)})}setPosition(t){this.setLine(t)}getPosition(){return this.getLine()}updatePosition(){Je(this,Pi,"f")&&this.setLine(Je(this,Pi,"f"))}setPolygon(){}getPolygon(){return null}setLine(t){if(!S(t))throw new TypeError("Invalid 'line'.");if(this._drawingLayer){if("view"===this.coordinateBase)this.set("startPoint",{x:this.convertPropFromViewToImage(t.startPoint.x),y:this.convertPropFromViewToImage(t.startPoint.y)}),this.set("endPoint",{x:this.convertPropFromViewToImage(t.endPoint.x),y:this.convertPropFromViewToImage(t.endPoint.y)});else{if("image"!==this.coordinateBase)throw new Error("Invalid 'coordinateBase'.");this.set("startPoint",t.startPoint),this.set("endPoint",t.endPoint)}this._drawingLayer.renderAll()}else Qe(this,Pi,JSON.parse(JSON.stringify(t)),"f")}getLine(){if(this._drawingLayer){if("view"===this.coordinateBase)return{startPoint:{x:this.convertPropFromImageToView(this.get("startPoint").x),y:this.convertPropFromImageToView(this.get("startPoint").y)},endPoint:{x:this.convertPropFromImageToView(this.get("endPoint").x),y:this.convertPropFromImageToView(this.get("endPoint").y)}};if("image"===this.coordinateBase)return{startPoint:this.get("startPoint"),endPoint:this.get("endPoint")};throw new Error("Invalid 'coordinateBase'.")}return Je(this,Pi,"f")?JSON.parse(JSON.stringify(Je(this,Pi,"f"))):null}}Pi=new WeakMap;class Ni extends Di{constructor(t,e){if(super({points:null==t?void 0:t.points},e),ki.set(this,void 0),!x(t))throw new TypeError("Invalid 'quad'.");Qe(this,ki,JSON.parse(JSON.stringify(t)),"f"),this._mediaType="quad"}setPosition(t){this.setQuad(t)}getPosition(){return this.getQuad()}updatePosition(){Je(this,ki,"f")&&this.setQuad(Je(this,ki,"f"))}setPolygon(){}getPolygon(){return null}setQuad(t){if(!x(t))throw new TypeError("Invalid 'quad'.");if(this._drawingLayer){if("view"===this.coordinateBase){const e=t.points.map((t=>({x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)})));this.set("vertices",e)}else{if("image"!==this.coordinateBase)throw new Error("Invalid 'coordinateBase'.");this.set("vertices",t.points)}this._drawingLayer.renderAll()}else Qe(this,ki,JSON.parse(JSON.stringify(t)),"f")}getQuad(){if(this._drawingLayer){if("view"===this.coordinateBase)return{points:this.get("vertices").map((t=>({x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)})))};if("image"===this.coordinateBase)return{points:this.get("vertices")};throw new Error("Invalid 'coordinateBase'.")}return Je(this,ki,"f")?JSON.parse(JSON.stringify(Je(this,ki,"f"))):null}}ki=new WeakMap;class ji extends bi{constructor(t){super(new ui.Group(t.map((t=>t._getFabricObject())))),this._fabricObject.on("selected",(()=>{this.setState(hi.DIS_SELECTED);const t=this._fabricObject._objects;for(let e of t)setTimeout((()=>{e&&e.fire("selected")}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)})),this._fabricObject.on("deselected",(()=>{this.setState(hi.DIS_DEFAULT);const t=this._fabricObject._objects;for(let e of t)setTimeout((()=>{e&&e.fire("deselected")}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)})),this._mediaType="group"}extendSet(t,e){return!1}extendGet(t){}updateCoordinateBaseFromImageToView(){}updateCoordinateBaseFromViewToImage(){}setPosition(){}getPosition(){}updatePosition(){}getChildDrawingItems(){return this._fabricObject._objects.map((t=>t.getDrawingItem()))}setChildDrawingItems(t){if(!t||!t.isDrawingItem)throw TypeError("Illegal drawing item.");this._drawingLayer?this._drawingLayer._updateGroupItem(this,t,"add"):this._fabricObject.addWithUpdate(t._getFabricObject())}removeChildItem(t){t&&t.isDrawingItem&&(this._drawingLayer?this._drawingLayer._updateGroupItem(this,t,"remove"):this._fabricObject.removeWithUpdate(t._getFabricObject()))}}const Ui=t=>null!==t&&"object"==typeof t&&!Array.isArray(t),Vi=t=>!!fi(t)&&""!==t,Gi=t=>!(!Ui(t)||"id"in t&&!di(t.id)||"lineWidth"in t&&!di(t.lineWidth)||"fillStyle"in t&&!Vi(t.fillStyle)||"strokeStyle"in t&&!Vi(t.strokeStyle)||"paintMode"in t&&!["fill","stroke","strokeAndFill"].includes(t.paintMode)||"fontFamily"in t&&!Vi(t.fontFamily)||"fontSize"in t&&!di(t.fontSize));class Wi{static convert(t,e,i){const r={x:0,y:0,width:e,height:i};if(!t)return r;if(A(t))t.isMeasuredInPercentage?(r.x=t.x/100*e,r.y=t.y/100*i,r.width=t.width/100*e,r.height=t.height/100*i):(r.x=t.x,r.y=t.y,r.width=t.width,r.height=t.height);else{if(!E(t))throw TypeError("Invalid region.");t.isMeasuredInPercentage?(r.x=t.left/100*e,r.y=t.top/100*i,r.width=(t.right-t.left)/100*e,r.height=(t.bottom-t.top)/100*i):(r.x=t.left,r.y=t.top,r.width=t.right-t.left,r.height=t.bottom-t.top)}return r.x=Math.round(r.x),r.y=Math.round(r.y),r.width=Math.round(r.width),r.height=Math.round(r.height),r}}var Yi,Hi;class Xi{constructor(){Yi.set(this,new Map),Hi.set(this,!1)}get disposed(){return Je(this,Hi,"f")}on(t,e){t=t.toLowerCase();const i=Je(this,Yi,"f").get(t);if(i){if(i.includes(e))return;i.push(e)}else Je(this,Yi,"f").set(t,[e])}off(t,e){t=t.toLowerCase();const i=Je(this,Yi,"f").get(t);if(!i)return;const r=i.indexOf(e);-1!==r&&i.splice(r,1)}offAll(t){t=t.toLowerCase();const e=Je(this,Yi,"f").get(t);e&&(e.length=0)}fire(t,e=[],i={async:!1,copy:!0}){e||(e=[]),t=t.toLowerCase();const r=Je(this,Yi,"f").get(t);if(r&&r.length){i=Object.assign({async:!1,copy:!0},i);for(let n of r){if(!n)continue;let s=[];if(i.copy)for(let i of e){try{i=JSON.parse(JSON.stringify(i))}catch(t){}s.push(i)}else s=e;let o=!1;if(i.async)setTimeout((()=>{this.disposed||r.includes(n)&&n.apply(i.target,s)}),0);else try{o=n.apply(i.target,s)}catch(t){}if(!0===o)break}}}dispose(){Qe(this,Hi,!0,"f")}}function zi(t,e,i){return(i.x-t.x)*(e.y-t.y)==(e.x-t.x)*(i.y-t.y)&&Math.min(t.x,e.x)<=i.x&&i.x<=Math.max(t.x,e.x)&&Math.min(t.y,e.y)<=i.y&&i.y<=Math.max(t.y,e.y)}function Zi(t){return Math.abs(t)<1e-6?0:t<0?-1:1}function qi(t,e,i,r){let n=t[0]*(i[1]-e[1])+e[0]*(t[1]-i[1])+i[0]*(e[1]-t[1]),s=t[0]*(r[1]-e[1])+e[0]*(t[1]-r[1])+r[0]*(e[1]-t[1]);return!((n^s)>=0&&0!==n&&0!==s||(n=i[0]*(t[1]-r[1])+r[0]*(i[1]-t[1])+t[0]*(r[1]-i[1]),s=i[0]*(e[1]-r[1])+r[0]*(i[1]-e[1])+e[0]*(r[1]-i[1]),(n^s)>=0&&0!==n&&0!==s))}Yi=new WeakMap,Hi=new WeakMap;const Ki=async t=>{if("string"!=typeof t)throw new TypeError("Invalid url.");const e=await fetch(t);if(!e.ok)throw Error("Network Error: "+e.statusText);const i=await e.text();if(!i.trim().startsWith("<"))throw Error("Unable to get valid HTMLElement.");const r=document.createElement("div");if(r.insertAdjacentHTML("beforeend",i),1===r.childElementCount&&r.firstChild instanceof HTMLTemplateElement)return r.firstChild.content;const n=new DocumentFragment;for(let t of r.children)n.append(t);return n};var Ji,Qi,$i,tr,er,ir,rr,nr,sr,or,ar,hr,lr,cr,ur,dr,fr,gr,mr,pr,_r,vr,yr,wr,Cr,Er,Tr,Sr,br,Ir,xr,Ar,Or,Rr;class Dr{static createDrawingStyle(t){if(!Gi(t))throw new Error("Invalid style definition.");let e,i=Dr.USER_START_STYLE_ID;for(;Je(Dr,Ji,"f",Qi).has(i);)i++;e=i;const r=JSON.parse(JSON.stringify(t));r.id=e;for(let t in Je(Dr,Ji,"f",$i))r.hasOwnProperty(t)||(r[t]=Je(Dr,Ji,"f",$i)[t]);return Je(Dr,Ji,"f",Qi).set(e,r),r.id}static _getDrawingStyle(t,e){if("number"!=typeof t)throw new Error("Invalid style id.");const i=Je(Dr,Ji,"f",Qi).get(t);return i?e?JSON.parse(JSON.stringify(i)):i:null}static getDrawingStyle(t){return this._getDrawingStyle(t,!0)}static getAllDrawingStyles(){return JSON.parse(JSON.stringify(Array.from(Je(Dr,Ji,"f",Qi).values())))}static _updateDrawingStyle(t,e){if(!Gi(e))throw new Error("Invalid style definition.");const i=Je(Dr,Ji,"f",Qi).get(t);if(i)for(let t in e)i.hasOwnProperty(t)&&(i[t]=e[t])}static updateDrawingStyle(t,e){this._updateDrawingStyle(t,e)}}Ji=Dr,Dr.STYLE_BLUE_STROKE=1,Dr.STYLE_GREEN_STROKE=2,Dr.STYLE_ORANGE_STROKE=3,Dr.STYLE_YELLOW_STROKE=4,Dr.STYLE_BLUE_STROKE_FILL=5,Dr.STYLE_GREEN_STROKE_FILL=6,Dr.STYLE_ORANGE_STROKE_FILL=7,Dr.STYLE_YELLOW_STROKE_FILL=8,Dr.STYLE_BLUE_STROKE_TRANSPARENT=9,Dr.STYLE_GREEN_STROKE_TRANSPARENT=10,Dr.STYLE_ORANGE_STROKE_TRANSPARENT=11,Dr.USER_START_STYLE_ID=1024,Qi={value:new Map([[Dr.STYLE_BLUE_STROKE,{id:Dr.STYLE_BLUE_STROKE,lineWidth:4,fillStyle:"rgba(73, 173, 245, 0.3)",strokeStyle:"rgba(73, 173, 245, 1)",paintMode:"stroke",fontFamily:"consolas",fontSize:40}],[Dr.STYLE_GREEN_STROKE,{id:Dr.STYLE_GREEN_STROKE,lineWidth:2,fillStyle:"rgba(73, 245, 73, 0.3)",strokeStyle:"rgba(73, 245, 73, 0.9)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Dr.STYLE_ORANGE_STROKE,{id:Dr.STYLE_ORANGE_STROKE,lineWidth:2,fillStyle:"rgba(254, 180, 32, 0.3)",strokeStyle:"rgba(254, 180, 32, 0.9)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Dr.STYLE_YELLOW_STROKE,{id:Dr.STYLE_YELLOW_STROKE,lineWidth:2,fillStyle:"rgba(245, 236, 73, 0.3)",strokeStyle:"rgba(245, 236, 73, 1)",paintMode:"stroke",fontFamily:"consolas",fontSize:40}],[Dr.STYLE_BLUE_STROKE_FILL,{id:Dr.STYLE_BLUE_STROKE_FILL,lineWidth:4,fillStyle:"rgba(73, 173, 245, 0.3)",strokeStyle:"rgba(73, 173, 245, 1)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Dr.STYLE_GREEN_STROKE_FILL,{id:Dr.STYLE_GREEN_STROKE_FILL,lineWidth:2,fillStyle:"rgba(73, 245, 73, 0.3)",strokeStyle:"rgba(73, 245, 73, 0.9)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Dr.STYLE_ORANGE_STROKE_FILL,{id:Dr.STYLE_ORANGE_STROKE_FILL,lineWidth:2,fillStyle:"rgba(254, 180, 32, 0.3)",strokeStyle:"rgba(254, 180, 32, 1)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Dr.STYLE_YELLOW_STROKE_FILL,{id:Dr.STYLE_YELLOW_STROKE_FILL,lineWidth:2,fillStyle:"rgba(245, 236, 73, 0.3)",strokeStyle:"rgba(245, 236, 73, 1)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Dr.STYLE_BLUE_STROKE_TRANSPARENT,{id:Dr.STYLE_BLUE_STROKE_TRANSPARENT,lineWidth:4,fillStyle:"rgba(73, 173, 245, 0.2)",strokeStyle:"transparent",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Dr.STYLE_GREEN_STROKE_TRANSPARENT,{id:Dr.STYLE_GREEN_STROKE_TRANSPARENT,lineWidth:2,fillStyle:"rgba(73, 245, 73, 0.2)",strokeStyle:"transparent",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Dr.STYLE_ORANGE_STROKE_TRANSPARENT,{id:Dr.STYLE_ORANGE_STROKE_TRANSPARENT,lineWidth:2,fillStyle:"rgba(254, 180, 32, 0.2)",strokeStyle:"transparent",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}]])},$i={value:{lineWidth:2,fillStyle:"rgba(245, 236, 73, 0.3)",strokeStyle:"rgba(245, 236, 73, 1)",paintMode:"stroke",fontFamily:"consolas",fontSize:40}},"undefined"!=typeof document&&"undefined"!=typeof window&&(ui.StaticCanvas.prototype.dispose=function(){return this.isRendering&&(ui.util.cancelAnimFrame(this.isRendering),this.isRendering=0),this.forEachObject((function(t){t.dispose&&t.dispose()})),this._objects=[],this.backgroundImage&&this.backgroundImage.dispose&&this.backgroundImage.dispose(),this.backgroundImage=null,this.overlayImage&&this.overlayImage.dispose&&this.overlayImage.dispose(),this.overlayImage=null,this._iTextInstances=null,this.contextContainer=null,this.lowerCanvasEl.classList.remove("lower-canvas"),delete this._originalCanvasStyle,this.lowerCanvasEl.setAttribute("width",this.width),this.lowerCanvasEl.setAttribute("height",this.height),ui.util.cleanUpJsdomNode(this.lowerCanvasEl),this.lowerCanvasEl=void 0,this},ui.Object.prototype.transparentCorners=!1,ui.Object.prototype.cornerSize=20,ui.Object.prototype.touchCornerSize=100,ui.Object.prototype.cornerColor="rgb(254,142,20)",ui.Object.prototype.cornerStyle="circle",ui.Object.prototype.strokeUniform=!0,ui.Object.prototype.hasBorders=!1,ui.Canvas.prototype.containerClass="",ui.Canvas.prototype.getPointer=function(t,e){if(this._absolutePointer&&!e)return this._absolutePointer;if(this._pointer&&e)return this._pointer;var i,r=this.upperCanvasEl,n=ui.util.getPointer(t,r),s=r.getBoundingClientRect(),o=s.width||0,a=s.height||0;o&&a||("top"in s&&"bottom"in s&&(a=Math.abs(s.top-s.bottom)),"right"in s&&"left"in s&&(o=Math.abs(s.right-s.left))),this.calcOffset(),n.x=n.x-this._offset.left,n.y=n.y-this._offset.top,e||(n=this.restorePointerVpt(n));var h=this.getRetinaScaling();if(1!==h&&(n.x/=h,n.y/=h),0!==o&&0!==a){var l=window.getComputedStyle(r).objectFit,c=r.width,u=r.height,d=o,f=a;i={width:c/d,height:u/f};var g,m,p=c/u,_=d/f;return"contain"===l?p>_?(g=d,m=d/p,{x:n.x*i.width,y:(n.y-(f-m)/2)*i.width}):(g=f*p,m=f,{x:(n.x-(d-g)/2)*i.height,y:n.y*i.height}):"cover"===l?p>_?{x:(c-i.height*d)/2+n.x*i.height,y:n.y*i.height}:{x:n.x*i.width,y:(u-i.width*f)/2+n.y*i.width}:{x:n.x*i.width,y:n.y*i.height}}return i={width:1,height:1},{x:n.x*i.width,y:n.y*i.height}},ui.Canvas.prototype._onTouchStart=function(t){var e=this.findTarget(t);!this.allowTouchScrolling&&t.cancelable&&t.preventDefault&&t.preventDefault(),e&&t.cancelable&&t.preventDefault&&t.preventDefault(),null===this.mainTouchId&&(this.mainTouchId=this.getPointerId(t)),this.__onMouseDown(t),this._resetTransformEventData();var i=this.upperCanvasEl,r=this._getEventPrefix();ui.util.addListener(ui.document,"touchend",this._onTouchEnd,{passive:!1}),ui.util.addListener(ui.document,"touchmove",this._onMouseMove,{passive:!1}),ui.util.removeListener(i,r+"down",this._onMouseDown)},ui.Textbox.prototype._wrapLine=function(t,e,i,r){const n=t.match(/[\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff\uff66-\uff9f]/g),s=!(!n||!n.length);var o=0,a=this.splitByGrapheme||s,h=[],l=[],c=a?ui.util.string.graphemeSplit(t):t.split(this._wordJoiners),u="",d=0,f=a?"":" ",g=0,m=0,p=0,_=!0,v=this._getWidthOfCharSpacing();r=r||0,0===c.length&&c.push([]),i-=r;for(var y=0;yi&&!_?(h.push(l),l=[],o=g,_=!0):o+=v,_||a||l.push(f),l=l.concat(u),m=a?0:this._measureWord([f],e,d),d++,_=!1,g>p&&(p=g);return y&&h.push(l),p+r>this.dynamicMinWidth&&(this.dynamicMinWidth=p-v+r),h});class Lr{get width(){return this.fabricCanvas.width}get height(){return this.fabricCanvas.height}set _allowMultiSelect(t){this.fabricCanvas.selection=t,this.fabricCanvas.renderAll()}get _allowMultiSelect(){return this.fabricCanvas.selection}constructor(t,e,i){if(this.mapType_StateAndStyleId=new Map,this.mode="viewer",this.onSelectionChanged=null,this._arrDrwaingItem=[],this._arrFabricObject=[],this._visible=!0,t.hasOwnProperty("getFabricCanvas"))this.fabricCanvas=t.getFabricCanvas();else{let e=this.fabricCanvas=new ui.Canvas(t,Object.assign(i,{allowTouchScrolling:!0,selection:!1}));e.setDimensions({width:"100%",height:"100%"},{cssOnly:!0}),e.lowerCanvasEl.className="",e.upperCanvasEl.className="",e.on("selection:created",(function(t){const e=t.selected,i=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!i.includes(e)&&i.push(e)}for(let t of i){const i=[];for(let r of e){const e=r.getDrawingItem();e._drawingLayer===t&&i.push(e)}setTimeout((()=>{t.onSelectionChanged&&t.onSelectionChanged(i,[])}),0)}})),e.on("before:selection:cleared",(function(t){const e=this.getActiveObjects(),i=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!i.includes(e)&&i.push(e)}for(let t of i){const i=[];for(let r of e){const e=r.getDrawingItem();e._drawingLayer===t&&i.push(e)}setTimeout((()=>{const e=[];for(let r of i)t.hasDrawingItem(r)&&e.push(r);e.length>0&&t.onSelectionChanged&&t.onSelectionChanged([],e)}),0)}})),e.on("selection:updated",(function(t){const e=t.selected,i=t.deselected,r=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!r.includes(e)&&r.push(e)}for(let t of i){const e=t.getDrawingItem()._drawingLayer;e&&!r.includes(e)&&r.push(e)}for(let t of r){const r=[],n=[];for(let i of e){const e=i.getDrawingItem();e._drawingLayer===t&&r.push(e)}for(let e of i){const i=e.getDrawingItem();i._drawingLayer===t&&n.push(i)}setTimeout((()=>{t.onSelectionChanged&&t.onSelectionChanged(r,n)}),0)}})),e.wrapperEl.style.position="absolute",t.getFabricCanvas=()=>this.fabricCanvas}let r,n;switch(this.id=e,e){case Lr.DDN_LAYER_ID:r=Dr.getDrawingStyle(Dr.STYLE_BLUE_STROKE),n=Dr.getDrawingStyle(Dr.STYLE_BLUE_STROKE_FILL);break;case Lr.DBR_LAYER_ID:r=Dr.getDrawingStyle(Dr.STYLE_ORANGE_STROKE),n=Dr.getDrawingStyle(Dr.STYLE_ORANGE_STROKE_FILL);break;case Lr.DLR_LAYER_ID:r=Dr.getDrawingStyle(Dr.STYLE_GREEN_STROKE),n=Dr.getDrawingStyle(Dr.STYLE_GREEN_STROKE_FILL);break;default:r=Dr.getDrawingStyle(Dr.STYLE_YELLOW_STROKE),n=Dr.getDrawingStyle(Dr.STYLE_YELLOW_STROKE_FILL)}for(let t of bi.arrMediaTypes)this.mapType_StateAndStyleId.set(t,{default:r.id,selected:n.id})}getId(){return this.id}setVisible(t){if(t){for(let t of this._arrFabricObject)t.visible=!0,t.hasControls=!0;this._visible=!0}else{for(let t of this._arrFabricObject)t.visible=!1,t.hasControls=!1;this._visible=!1}this.fabricCanvas.renderAll()}isVisible(){return this._visible}_getItemCurrentStyle(t){if(t.styleId)return Dr.getDrawingStyle(t.styleId);return Dr.getDrawingStyle(t._mapState_StyleId.get(t.styleSelector))||null}_changeMediaTypeCurStyleInStyleSelector(t,e,i,r){const n=this.getDrawingItems((e=>e._mediaType===t));for(let t of n)t.styleSelector===e&&this._changeItemStyle(t,i,!0);r||this.fabricCanvas.renderAll()}_changeItemStyle(t,e,i){if(!t||!e)return;const r=t._getFabricObject();"number"==typeof t.styleId&&(e=Dr.getDrawingStyle(t.styleId)),r.strokeWidth=e.lineWidth,"fill"===e.paintMode?(r.fill=e.fillStyle,r.stroke=e.fillStyle):"stroke"===e.paintMode?(r.fill="transparent",r.stroke=e.strokeStyle):"strokeAndFill"===e.paintMode&&(r.fill=e.fillStyle,r.stroke=e.strokeStyle),r.fontFamily&&(r.fontFamily=e.fontFamily),r.fontSize&&(r.fontSize=e.fontSize),r.group||(r.dirty=!0),i||this.fabricCanvas.renderAll()}_updateGroupItem(t,e,i){if(!t||!e)return;const r=t.getChildDrawingItems();if("add"===i){if(r.includes(e))return;const i=e._getFabricObject();if(this.fabricCanvas.getObjects().includes(i)){if(!this._arrFabricObject.includes(i))throw new Error("Existed in other drawing layers.");e._zIndex=null}else{let i;if(e.styleId)i=Dr.getDrawingStyle(e.styleId);else{const r=this.mapType_StateAndStyleId.get(e._mediaType);i=Dr.getDrawingStyle(r[t.styleSelector]);const n=()=>{this._changeItemStyle(e,Dr.getDrawingStyle(this.mapType_StateAndStyleId.get(e._mediaType).selected),!0)},s=()=>{this._changeItemStyle(e,Dr.getDrawingStyle(this.mapType_StateAndStyleId.get(e._mediaType).default),!0)};e._on("selected",n),e._on("deselected",s),e._funcChangeStyleToSelected=n,e._funcChangeStyleToDefault=s}e._drawingLayer=this,e._drawingLayerId=this.id,this._changeItemStyle(e,i,!0)}t._fabricObject.addWithUpdate(e._getFabricObject())}else{if("remove"!==i)return;if(!r.includes(e))return;e._zIndex=null,e._drawingLayer=null,e._drawingLayerId=null,e._off("selected",e._funcChangeStyleToSelected),e._off("deselected",e._funcChangeStyleToDefault),e._funcChangeStyleToSelected=null,e._funcChangeStyleToDefault=null,t._fabricObject.removeWithUpdate(e._getFabricObject())}this.fabricCanvas.renderAll()}_addDrawingItem(t,e){if(!(t instanceof bi))throw new TypeError("Invalid 'drawingItem'.");if(t._drawingLayer){if(t._drawingLayer==this)return;throw new Error("This drawing item has existed in other layer.")}let i=t._getFabricObject();const r=this.fabricCanvas.getObjects();let n,s;if(r.includes(i)){if(this._arrFabricObject.includes(i))return;throw new Error("Existed in other drawing layers.")}if("group"===t._mediaType){n=t.getChildDrawingItems();for(let t of n)if(t._drawingLayer&&t._drawingLayer!==this)throw new Error("The childItems of DT_Group have existed in other drawing layers.")}if(e&&"object"==typeof e&&!Array.isArray(e))for(let t in e)i.set(t,e[t]);if(n){for(let t of n){const e=this.mapType_StateAndStyleId.get(t._mediaType);for(let i of bi.arrStyleSelectors)t._mapState_StyleId.set(i,e[i]);if(t.styleId)s=Dr.getDrawingStyle(t.styleId);else{s=Dr.getDrawingStyle(e.default);const i=()=>{this._changeItemStyle(t,Dr.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).selected),!0)},r=()=>{this._changeItemStyle(t,Dr.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).default),!0)};t._on("selected",i),t._on("deselected",r),t._funcChangeStyleToSelected=i,t._funcChangeStyleToDefault=r}t._drawingLayer=this,t._drawingLayerId=this.id,this._changeItemStyle(t,s,!0)}i.dirty=!0,this.fabricCanvas.renderAll()}else{const e=this.mapType_StateAndStyleId.get(t._mediaType);for(let i of bi.arrStyleSelectors)t._mapState_StyleId.set(i,e[i]);if(t.styleId)s=Dr.getDrawingStyle(t.styleId);else{s=Dr.getDrawingStyle(e.default);const i=()=>{this._changeItemStyle(t,Dr.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).selected))},r=()=>{this._changeItemStyle(t,Dr.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).default))};t._on("selected",i),t._on("deselected",r),t._funcChangeStyleToSelected=i,t._funcChangeStyleToDefault=r}this._changeItemStyle(t,s)}t._zIndex=this.id,t._drawingLayer=this,t._drawingLayerId=this.id;const o=this._arrFabricObject.length;let a=r.length;if(o)a=r.indexOf(this._arrFabricObject[o-1])+1;else for(let e=0;et.toLowerCase())):e=bi.arrMediaTypes,i?i.forEach((t=>t.toLowerCase())):i=bi.arrStyleSelectors;const r=Dr.getDrawingStyle(t);if(!r)throw new Error(`The 'drawingStyle' with id '${t}' doesn't exist.`);let n;for(let s of e)if(n=this.mapType_StateAndStyleId.get(s),n)for(let e of i){this._changeMediaTypeCurStyleInStyleSelector(s,e,r,!0),n[e]=t;for(let i of this._arrDrwaingItem)i._mediaType===s&&i._mapState_StyleId.set(e,t)}this.fabricCanvas.renderAll()}setDefaultStyle(t,e,i){const r=[];i&ai.DIMT_RECTANGLE&&r.push("rect"),i&ai.DIMT_QUADRILATERAL&&r.push("quad"),i&ai.DIMT_TEXT&&r.push("text"),i&ai.DIMT_ARC&&r.push("arc"),i&ai.DIMT_IMAGE&&r.push("image"),i&ai.DIMT_POLYGON&&r.push("polygon"),i&ai.DIMT_LINE&&r.push("line");const n=[];e&hi.DIS_DEFAULT&&n.push("default"),e&hi.DIS_SELECTED&&n.push("selected"),this._setDefaultStyle(t,r.length?r:null,n.length?n:null)}setMode(t){if("viewer"===(t=t.toLowerCase())){for(let t of this._arrDrwaingItem)t._setEditable(!1);this.fabricCanvas.discardActiveObject(),this.fabricCanvas.renderAll(),this.mode="viewer"}else{if("editor"!==t)throw new RangeError("Invalid value.");for(let t of this._arrDrwaingItem)t._setEditable(!0);this.mode="editor"}this._manager._switchPointerEvent()}getMode(){return this.mode}_setDimensions(t,e){this.fabricCanvas.setDimensions(t,e)}_setObjectFit(t){if(t=t.toLowerCase(),!["contain","cover"].includes(t))throw new Error(`Unsupported value '${t}'.`);this.fabricCanvas.lowerCanvasEl.style.objectFit=t,this.fabricCanvas.upperCanvasEl.style.objectFit=t}_getObjectFit(){return this.fabricCanvas.lowerCanvasEl.style.objectFit}renderAll(){for(let t of this._arrDrwaingItem){const e=this._getItemCurrentStyle(t);this._changeItemStyle(t,e,!0)}this.fabricCanvas.renderAll()}dispose(){this.clearDrawingItems(),1===this._manager._arrDrawingLayer.length&&(this.fabricCanvas.wrapperEl.style.pointerEvents="none",this.fabricCanvas.dispose(),this._arrDrwaingItem.length=0,this._arrFabricObject.length=0)}}Lr.DDN_LAYER_ID=1,Lr.DBR_LAYER_ID=2,Lr.DLR_LAYER_ID=3,Lr.USER_DEFINED_LAYER_BASE_ID=100,Lr.TIP_LAYER_ID=999;class Mr{constructor(){this._arrDrawingLayer=[]}createDrawingLayer(t,e){if(this.getDrawingLayer(e))throw new Error("Existed drawing layer id.");const i=new Lr(t,e,{enableRetinaScaling:!1});return i._manager=this,this._arrDrawingLayer.push(i),this._switchPointerEvent(),i}deleteDrawingLayer(t){const e=this.getDrawingLayer(t);if(!e)return;const i=this._arrDrawingLayer;e.dispose(),i.splice(i.indexOf(e),1),this._switchPointerEvent()}clearDrawingLayers(){for(let t of this._arrDrawingLayer)t.dispose();this._arrDrawingLayer.length=0}getDrawingLayer(t){for(let e of this._arrDrawingLayer)if(e.getId()===t)return e;return null}getAllDrawingLayers(){return Array.from(this._arrDrawingLayer)}getSelectedDrawingItems(){if(!this._arrDrawingLayer.length)return;const t=this._getFabricCanvas().getActiveObjects(),e=[];for(let i of t)e.push(i.getDrawingItem());return e}setDimensions(t,e){this._arrDrawingLayer.length&&this._arrDrawingLayer[0]._setDimensions(t,e)}setObjectFit(t){for(let e of this._arrDrawingLayer)e&&e._setObjectFit(t)}getObjectFit(){return this._arrDrawingLayer.length?this._arrDrawingLayer[0]._getObjectFit():null}setVisible(t){if(!this._arrDrawingLayer.length)return;this._getFabricCanvas().wrapperEl.style.display=t?"block":"none"}_getFabricCanvas(){return this._arrDrawingLayer.length?this._arrDrawingLayer[0].fabricCanvas:null}_switchPointerEvent(){if(this._arrDrawingLayer.length)for(let t of this._arrDrawingLayer)t.getMode()}}class Fr extends Fi{constructor(t,e,i,r,n){super(t,{x:e,y:i,width:r,height:0},n),tr.set(this,void 0),er.set(this,void 0),this._fabricObject.paddingTop=15,this._fabricObject.calcTextHeight=function(){for(var t=0,e=0,i=this._textLines.length;e=0&&Qe(this,er,setTimeout((()=>{this.set("visible",!1),this._drawingLayer&&this._drawingLayer.renderAll()}),Je(this,tr,"f")),"f")}getDuration(){return Je(this,tr,"f")}}tr=new WeakMap,er=new WeakMap;class Pr{constructor(){ir.add(this),rr.set(this,void 0),nr.set(this,void 0),sr.set(this,void 0),or.set(this,!0),this._drawingLayerManager=new Mr}createDrawingLayerBaseCvs(t,e,i="contain"){if("number"!=typeof t||t<=1)throw new Error("Invalid 'width'.");if("number"!=typeof e||e<=1)throw new Error("Invalid 'height'.");if(!["contain","cover"].includes(i))throw new Error("Unsupported 'objectFit'.");const r=document.createElement("canvas");return r.width==t&&r.height==e||(r.width=t,r.height=e),r.style.objectFit=i,r}_createDrawingLayer(t,e,i,r){if(!this._layerBaseCvs){let n;try{n=this.getContentDimensions()}catch(t){if("Invalid content dimensions."!==(t.message||t))throw t}e||(e=(null==n?void 0:n.width)||1280),i||(i=(null==n?void 0:n.height)||720),r||(r=(null==n?void 0:n.objectFit)||"contain"),this._layerBaseCvs=this.createDrawingLayerBaseCvs(e,i,r)}const n=this._layerBaseCvs,s=this._drawingLayerManager.createDrawingLayer(n,t);return this._innerComponent.getElement("drawing-layer")||this._innerComponent.setElement("drawing-layer",n.parentElement),s}createDrawingLayer(){let t;for(let e=Lr.USER_DEFINED_LAYER_BASE_ID;;e++)if(!this._drawingLayerManager.getDrawingLayer(e)&&e!==Lr.TIP_LAYER_ID){t=e;break}return this._createDrawingLayer(t)}deleteDrawingLayer(t){var e;this._drawingLayerManager.deleteDrawingLayer(t),this._drawingLayerManager.getAllDrawingLayers().length||(null===(e=this._innerComponent)||void 0===e||e.removeElement("drawing-layer"),this._layerBaseCvs=null)}deleteUserDefinedDrawingLayer(t){if("number"!=typeof t)throw new TypeError("Invalid id.");if(tt.getId()>=0&&t.getId()!==Lr.TIP_LAYER_ID))}updateDrawingLayers(t){((t,e,i)=>{if(!(t<=1||e<=1)){if(!["contain","cover"].includes(i))throw new Error("Unsupported 'objectFit'.");this._drawingLayerManager.setDimensions({width:t,height:e},{backstoreOnly:!0}),this._drawingLayerManager.setObjectFit(i)}})(t.width,t.height,t.objectFit)}getSelectedDrawingItems(){return this._drawingLayerManager.getSelectedDrawingItems()}setTipConfig(t){if(!(Ui(e=t)&&b(e.topLeftPoint)&&di(e.width))||e.width<=0||!di(e.duration)||"coordinateBase"in e&&!["view","image"].includes(e.coordinateBase))throw new Error("Invalid tip config.");var e;Qe(this,rr,JSON.parse(JSON.stringify(t)),"f"),Je(this,rr,"f").coordinateBase||(Je(this,rr,"f").coordinateBase="view"),Qe(this,sr,t.duration,"f"),Je(this,ir,"m",cr).call(this)}getTipConfig(){return Je(this,rr,"f")?Je(this,rr,"f"):null}setTipVisible(t){if("boolean"!=typeof t)throw new TypeError("Invalid value.");this._tip&&(this._tip.set("visible",t),this._drawingLayerOfTip&&this._drawingLayerOfTip.renderAll()),Qe(this,or,t,"f")}isTipVisible(){return Je(this,or,"f")}updateTipMessage(t){if(!Je(this,rr,"f"))throw new Error("Tip config is not set.");this._tipStyleId||(this._tipStyleId=Dr.createDrawingStyle({fillStyle:"#FFFFFF",paintMode:"fill",fontFamily:"Open Sans",fontSize:40})),this._drawingLayerOfTip||(this._drawingLayerOfTip=this._drawingLayerManager.getDrawingLayer(Lr.TIP_LAYER_ID)||this._createDrawingLayer(Lr.TIP_LAYER_ID)),this._tip?this._tip.set("text",t):this._tip=Je(this,ir,"m",ar).call(this,t,Je(this,rr,"f").topLeftPoint.x,Je(this,rr,"f").topLeftPoint.y,Je(this,rr,"f").width,Je(this,rr,"f").coordinateBase,this._tipStyleId),Je(this,ir,"m",hr).call(this,this._tip,this._drawingLayerOfTip),this._tip.set("visible",Je(this,or,"f")),this._drawingLayerOfTip&&this._drawingLayerOfTip.renderAll(),Je(this,nr,"f")&&clearTimeout(Je(this,nr,"f")),Je(this,sr,"f")>=0&&Qe(this,nr,setTimeout((()=>{Je(this,ir,"m",lr).call(this)}),Je(this,sr,"f")),"f")}}rr=new WeakMap,nr=new WeakMap,sr=new WeakMap,or=new WeakMap,ir=new WeakSet,ar=function(t,e,i,r,n,s){const o=new Fr(t,e,i,r,s);return o.coordinateBase=n,o},hr=function(t,e){e.hasDrawingItem(t)||e.addDrawingItems([t])},lr=function(){this._tip&&this._drawingLayerOfTip.removeDrawingItems([this._tip])},cr=function(){if(!this._tip)return;const t=Je(this,rr,"f");this._tip.coordinateBase=t.coordinateBase,this._tip.setTextRect({x:t.topLeftPoint.x,y:t.topLeftPoint.y,width:t.width,height:0}),this._tip.set("width",this._tip.get("width")),this._tip._drawingLayer&&this._tip._drawingLayer.renderAll()};class kr extends HTMLElement{constructor(){super(),ur.set(this,void 0);const t=new DocumentFragment,e=document.createElement("div");e.setAttribute("class","wrapper"),t.appendChild(e),Qe(this,ur,e,"f");const i=document.createElement("slot");i.setAttribute("name","single-frame-input-container"),e.append(i);const r=document.createElement("slot");r.setAttribute("name","content"),e.append(r);const n=document.createElement("slot");n.setAttribute("name","drawing-layer"),e.append(n);const s=document.createElement("style");s.textContent='\n.wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n}\n::slotted(canvas[slot="content"]) {\n object-fit: contain;\n pointer-events: none;\n}\n::slotted(div[slot="single-frame-input-container"]) {\n width: 1px;\n height: 1px;\n overflow: hidden;\n pointer-events: none;\n}\n::slotted(*) {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n ',t.appendChild(s),this.attachShadow({mode:"open"}).appendChild(t)}getWrapper(){return Je(this,ur,"f")}setElement(t,e){if(!(e instanceof HTMLElement))throw new TypeError("Invalid 'el'.");if(!["content","single-frame-input-container","drawing-layer"].includes(t))throw new TypeError("Invalid 'slot'.");this.removeElement(t),e.setAttribute("slot",t),this.appendChild(e)}getElement(t){if(!["content","single-frame-input-container","drawing-layer"].includes(t))throw new TypeError("Invalid 'slot'.");return this.querySelector(`[slot="${t}"]`)}removeElement(t){var e;if(!["content","single-frame-input-container","drawing-layer"].includes(t))throw new TypeError("Invalid 'slot'.");null===(e=this.querySelectorAll(`[slot="${t}"]`))||void 0===e||e.forEach((t=>t.remove()))}}ur=new WeakMap,customElements.get("dce-component")||customElements.define("dce-component",kr);class Br extends Pr{static get engineResourcePath(){return L(vt.engineResourcePaths).dce}static set defaultUIElementURL(t){Br._defaultUIElementURL=t}static get defaultUIElementURL(){var t;return null===(t=Br._defaultUIElementURL)||void 0===t?void 0:t.replace("@engineResourcePath/",Br.engineResourcePath)}static async createInstance(t){const e=new Br;return"string"==typeof t&&(t=t.replace("@engineResourcePath/",Br.engineResourcePath)),await e.setUIElement(t||Br.defaultUIElementURL),e}static _transformCoordinates(t,e,i,r,n,s,o){const a=s/r,h=o/n;t.x=Math.round(t.x/a+e),t.y=Math.round(t.y/h+i)}set _singleFrameMode(t){if(!["disabled","image","camera"].includes(t))throw new Error("Invalid value.");if(t!==Je(this,Cr,"f")){if(Qe(this,Cr,t,"f"),Je(this,dr,"m",Sr).call(this))Qe(this,pr,null,"f"),this._videoContainer=null,this._innerComponent.removeElement("content"),this._innerComponent&&(this._innerComponent.addEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.setAttribute("title","Take a photo")),this._bgCamera&&(this._bgCamera.style.display="block");else if(this._innerComponent&&(this._innerComponent.removeEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.removeAttribute("title")),this._bgCamera&&(this._bgCamera.style.display="none"),!Je(this,pr,"f")){const t=document.createElement("video");t.style.position="absolute",t.style.left="0",t.style.top="0",t.style.width="100%",t.style.height="100%",t.style.objectFit=this.getVideoFit(),t.setAttribute("autoplay","true"),t.setAttribute("playsinline","true"),t.setAttribute("muted","true"),["iPhone","iPad","Mac"].includes(qe.OS)&&t.setAttribute("poster","data:image/gif;base64,R0lGODlhAQABAIEAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAgEAAEEBAA7"),Qe(this,pr,t,"f");const e=document.createElement("div");e.append(t),e.style.overflow="hidden",this._videoContainer=e,this._innerComponent.setElement("content",e)}Je(this,dr,"m",Sr).call(this)||this._hideDefaultSelection?(this._selCam&&(this._selCam.style.display="none"),this._selRsl&&(this._selRsl.style.display="none"),this._selMinLtr&&(this._selMinLtr.style.display="none")):(this._selCam&&(this._selCam.style.display="block"),this._selRsl&&(this._selRsl.style.display="block"),this._selMinLtr&&(this._selMinLtr.style.display="block"),this._stopLoading())}}get _singleFrameMode(){return Je(this,Cr,"f")}get disposed(){return Je(this,Tr,"f")}constructor(){super(),dr.add(this),fr.set(this,void 0),gr.set(this,void 0),mr.set(this,void 0),this.containerClassName="dce-video-container",pr.set(this,void 0),this.videoFit="contain",this._hideDefaultSelection=!1,this._divScanArea=null,this._divScanLight=null,this._bgLoading=null,this._selCam=null,this._bgCamera=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,_r.set(this,null),this.regionMaskFillStyle="rgba(0,0,0,0.5)",this.regionMaskStrokeStyle="rgb(254,142,20)",this.regionMaskLineWidth=6,vr.set(this,!1),yr.set(this,!1),wr.set(this,{width:0,height:0}),this._updateLayersTimeout=500,this._videoResizeListener=()=>{Je(this,dr,"m",Or).call(this),this._updateLayersTimeoutId&&clearTimeout(this._updateLayersTimeoutId),this._updateLayersTimeoutId=setTimeout((()=>{this.disposed||(this.eventHandler.fire("videoEl:resized",null,{async:!1}),this.eventHandler.fire("content:updated",null,{async:!1}),this.isScanLaserVisible()&&Je(this,dr,"m",Ar).call(this))}),this._updateLayersTimeout)},this._windowResizeListener=()=>{Br._onLog&&Br._onLog("window resize event triggered."),Je(this,wr,"f").width===document.documentElement.clientWidth&&Je(this,wr,"f").height===document.documentElement.clientHeight||(Je(this,wr,"f").width=document.documentElement.clientWidth,Je(this,wr,"f").height=document.documentElement.clientHeight,this._videoResizeListener())},Cr.set(this,"disabled"),this._clickIptSingleFrameMode=()=>{if(!Je(this,dr,"m",Sr).call(this))return;let t;if(this._singleFrameInputContainer)t=this._singleFrameInputContainer.firstElementChild;else{t=document.createElement("input"),t.setAttribute("type","file"),"camera"===this._singleFrameMode?(t.setAttribute("capture",""),t.setAttribute("accept","image/*")):"image"===this._singleFrameMode&&(t.removeAttribute("capture"),t.setAttribute("accept",".jpg,.jpeg,.icon,.gif,.svg,.webp,.png,.bmp")),t.addEventListener("change",(async()=>{const e=t.files[0];t.value="";{const t=async t=>{let e=null,i=null;if("undefined"!=typeof createImageBitmap)try{if(e=await createImageBitmap(t),e)return e}catch(t){}var r;return e||(i=await(r=t,new Promise(((t,e)=>{let i=URL.createObjectURL(r),n=new Image;n.src=i,n.onload=()=>{URL.revokeObjectURL(n.src),t(n)},n.onerror=t=>{e(new Error("Can't convert blob to image : "+(t instanceof Event?t.type:t)))}})))),i},i=(t,e,i,r)=>{t.width==i&&t.height==r||(t.width=i,t.height=r);const n=t.getContext("2d");n.clearRect(0,0,t.width,t.height),n.drawImage(e,0,0)},r=await t(e),n=r instanceof HTMLImageElement?r.naturalWidth:r.width,s=r instanceof HTMLImageElement?r.naturalHeight:r.height;let o=this._cvsSingleFrameMode;const a=null==o?void 0:o.width,h=null==o?void 0:o.height;o||(o=document.createElement("canvas"),this._cvsSingleFrameMode=o),i(o,r,n,s),this._innerComponent.setElement("content",o),a===o.width&&h===o.height||this.eventHandler.fire("content:updated",null,{async:!1})}this._onSingleFrameAcquired&&setTimeout((()=>{this._onSingleFrameAcquired(this._cvsSingleFrameMode)}),0)})),t.style.position="absolute",t.style.top="-9999px",t.style.backgroundColor="transparent",t.style.color="transparent";const e=document.createElement("div");e.append(t),this._innerComponent.setElement("single-frame-input-container",e),this._singleFrameInputContainer=e}null==t||t.click()},Er.set(this,[]),this._capturedResultReceiver={onCapturedResultReceived:(t,e)=>{var i,r,n,s;if(this.disposed)return;if(this.clearAllInnerDrawingItems(),!t)return;const o=t.originalImageTag;if(!o)return;const a=t.items;if(!(null==a?void 0:a.length))return;const h=(null===(i=o.cropRegion)||void 0===i?void 0:i.left)||0,l=(null===(r=o.cropRegion)||void 0===r?void 0:r.top)||0,c=(null===(n=o.cropRegion)||void 0===n?void 0:n.right)?o.cropRegion.right-h:o.originalWidth,u=(null===(s=o.cropRegion)||void 0===s?void 0:s.bottom)?o.cropRegion.bottom-l:o.originalHeight,d=o.currentWidth,f=o.currentHeight,g=(t,e,i,r,n,s,o,a,h=[],l)=>{e.forEach((t=>Br._transformCoordinates(t,i,r,n,s,o,a)));const c=new Ni({points:[{x:e[0].x,y:e[0].y},{x:e[1].x,y:e[1].y},{x:e[2].x,y:e[2].y},{x:e[3].x,y:e[3].y}]},l);for(let t of h)c.addNote(t);t.addDrawingItems([c]),Je(this,Er,"f").push(c)};let m,p;for(let t of a)switch(t.type){case yt.CRIT_ORIGINAL_IMAGE:break;case yt.CRIT_BARCODE:m=this.getDrawingLayer(Lr.DBR_LAYER_ID),p=[{name:"format",content:t.formatString},{name:"text",content:t.text}],(null==e?void 0:e.isBarcodeVerifyOpen)?t.verified?g(m,t.location.points,h,l,c,u,d,f,p):g(m,t.location.points,h,l,c,u,d,f,p,Dr.STYLE_ORANGE_STROKE_TRANSPARENT):g(m,t.location.points,h,l,c,u,d,f,p);break;case yt.CRIT_TEXT_LINE:m=this.getDrawingLayer(Lr.DLR_LAYER_ID),p=[{name:"text",content:t.text}],e.isLabelVerifyOpen?t.verified?g(m,t.location.points,h,l,c,u,d,f,p):g(m,t.location.points,h,l,c,u,d,f,p,Dr.STYLE_GREEN_STROKE_TRANSPARENT):g(m,t.location.points,h,l,c,u,d,f,p);break;case yt.CRIT_DETECTED_QUAD:m=this.getDrawingLayer(Lr.DDN_LAYER_ID),(null==e?void 0:e.isDetectVerifyOpen)?t.crossVerificationStatus===xt.CVS_PASSED?g(m,t.location.points,h,l,c,u,d,f,[]):g(m,t.location.points,h,l,c,u,d,f,[],Dr.STYLE_BLUE_STROKE_TRANSPARENT):g(m,t.location.points,h,l,c,u,d,f,[]);break;case yt.CRIT_NORMALIZED_IMAGE:m=this.getDrawingLayer(Lr.DDN_LAYER_ID),(null==e?void 0:e.isNormalizeVerifyOpen)?t.crossVerificationStatus===xt.CVS_PASSED?g(m,t.location.points,h,l,c,u,d,f,[]):g(m,t.location.points,h,l,c,u,d,f,[],Dr.STYLE_BLUE_STROKE_TRANSPARENT):g(m,t.location.points,h,l,c,u,d,f,[]);break;case yt.CRIT_PARSED_RESULT:break;default:throw new Error("Illegal item type.")}}},Tr.set(this,!1),this.eventHandler=new Xi,this.eventHandler.on("content:updated",(()=>{Je(this,fr,"f")&&clearTimeout(Je(this,fr,"f")),Qe(this,fr,setTimeout((()=>{if(this.disposed)return;let t;this._updateVideoContainer();try{t=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}this.updateDrawingLayers(t),this.updateConvertedRegion(t)}),0),"f")})),this.eventHandler.on("videoEl:resized",(()=>{Je(this,gr,"f")&&clearTimeout(Je(this,gr,"f")),Qe(this,gr,setTimeout((()=>{this.disposed||this._updateVideoContainer()}),0),"f")}))}_setUIElement(t){this.UIElement=t,this._unbindUI(),this._bindUI()}async setUIElement(t){let e;if("string"==typeof t){let i=await Ki(t);e=document.createElement("div"),Object.assign(e.style,{width:"100%",height:"100%"}),e.attachShadow({mode:"open"}).appendChild(i.cloneNode(!0))}else e=t;this._setUIElement(e)}getUIElement(){return this.UIElement}_bindUI(){var t,e;if(!this.UIElement)throw new Error("Need to set 'UIElement'.");if(this._innerComponent)return;let i=this.UIElement;i=i.shadowRoot||i;let r=(null===(t=i.classList)||void 0===t?void 0:t.contains(this.containerClassName))?i:i.querySelector(`.${this.containerClassName}`);if(!r)throw Error(`Can not find the element with class '${this.containerClassName}'.`);if(this._innerComponent=document.createElement("dce-component"),r.appendChild(this._innerComponent),Je(this,dr,"m",Sr).call(this));else{const t=document.createElement("video");Object.assign(t.style,{position:"absolute",left:"0",top:"0",width:"100%",height:"100%",objectFit:this.getVideoFit()}),t.setAttribute("autoplay","true"),t.setAttribute("playsinline","true"),t.setAttribute("muted","true"),["iPhone","iPad","Mac"].includes(qe.OS)&&t.setAttribute("poster","data:image/gif;base64,R0lGODlhAQABAIEAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAgEAAEEBAA7"),Qe(this,pr,t,"f");const e=document.createElement("div");e.append(t),e.style.overflow="hidden",this._videoContainer=e,this._innerComponent.setElement("content",e)}if(this._selRsl=i.querySelector(".dce-sel-resolution"),this._selMinLtr=i.querySelector(".dlr-sel-minletter"),this._divScanArea=i.querySelector(".dce-scanarea"),this._divScanLight=i.querySelector(".dce-scanlight"),this._bgLoading=i.querySelector(".dce-bg-loading"),this._bgCamera=i.querySelector(".dce-bg-camera"),this._selCam=i.querySelector(".dce-sel-camera"),this._optGotRsl=i.querySelector(".dce-opt-gotResolution"),this._btnClose=i.querySelector(".dce-btn-close"),this._optGotMinLtr=i.querySelector(".dlr-opt-gotMinLtr"),this._selRsl&&(this._hideDefaultSelection||Je(this,dr,"m",Sr).call(this)||this._selRsl.options.length||(this._selRsl.innerHTML=['','','',''].join(""),this._optGotRsl=this._selRsl.options[0])),this._selMinLtr&&(this._hideDefaultSelection||Je(this,dr,"m",Sr).call(this)||this._selMinLtr.options.length||(this._selMinLtr.innerHTML=['','','','','','','','','','',''].join(""),this._optGotMinLtr=this._selMinLtr.options[0])),this.isScanLaserVisible()||Je(this,dr,"m",Or).call(this),Je(this,dr,"m",Sr).call(this)&&(this._innerComponent&&(this._innerComponent.addEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.setAttribute("title","Take a photo")),this._bgCamera&&(this._bgCamera.style.display="block")),Je(this,dr,"m",Sr).call(this)||this._hideDefaultSelection?(this._selCam&&(this._selCam.style.display="none"),this._selRsl&&(this._selRsl.style.display="none"),this._selMinLtr&&(this._selMinLtr.style.display="none")):(this._selCam&&(this._selCam.style.display="block"),this._selRsl&&(this._selRsl.style.display="block"),this._selMinLtr&&(this._selMinLtr.style.display="block"),this._stopLoading()),window.ResizeObserver){this._resizeObserver||(this._resizeObserver=new ResizeObserver((t=>{var e;Br._onLog&&Br._onLog("resize observer triggered.");for(let i of t)i.target===(null===(e=this._innerComponent)||void 0===e?void 0:e.getWrapper())&&this._videoResizeListener()})));const t=null===(e=this._innerComponent)||void 0===e?void 0:e.getWrapper();t&&this._resizeObserver.observe(t)}Je(this,wr,"f").width=document.documentElement.clientWidth,Je(this,wr,"f").height=document.documentElement.clientHeight,window.addEventListener("resize",this._windowResizeListener)}_unbindUI(){var t,e,i,r;Je(this,dr,"m",Sr).call(this)?(this._innerComponent&&(this._innerComponent.removeEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.removeAttribute("title")),this._bgCamera&&(this._bgCamera.style.display="none")):this._stopLoading(),Je(this,dr,"m",Or).call(this),null===(t=this._drawingLayerManager)||void 0===t||t.clearDrawingLayers(),null===(e=this._innerComponent)||void 0===e||e.removeElement("drawing-layer"),this._layerBaseCvs=null,this._drawingLayerOfMask=null,this._drawingLayerOfTip=null,null===(i=this._innerComponent)||void 0===i||i.remove(),this._innerComponent=null,Qe(this,pr,null,"f"),null===(r=this._videoContainer)||void 0===r||r.remove(),this._videoContainer=null,this._selCam=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,this._divScanArea=null,this._divScanLight=null,this._singleFrameInputContainer&&(this._singleFrameInputContainer.remove(),this._singleFrameInputContainer=null),window.ResizeObserver&&this._resizeObserver&&this._resizeObserver.disconnect(),window.removeEventListener("resize",this._windowResizeListener)}_startLoading(){this._bgLoading&&(this._bgLoading.style.display="",this._bgLoading.style.animationPlayState="")}_stopLoading(){this._bgLoading&&(this._bgLoading.style.display="none",this._bgLoading.style.animationPlayState="paused")}_renderCamerasInfo(t,e){if(this._selCam){let i;this._selCam.textContent="";for(let r of e){const e=document.createElement("option");e.value=r.deviceId,e.innerText=r.label,this._selCam.append(e),r.deviceId&&t&&t.deviceId==r.deviceId&&(i=e)}this._selCam.value=i?i.value:""}let i=this.UIElement;if(i=i.shadowRoot||i,i.querySelector(".dce-macro-use-mobile-native-like-ui")){let t=i.querySelector(".dce-mn-cameras");if(t){t.textContent="";for(let i of e){const e=document.createElement("div");e.classList.add("dce-mn-camera-option"),e.setAttribute("data-davice-id",i.deviceId),e.textContent=i.label,t.append(e)}}}}_renderResolutionInfo(t){this._optGotRsl&&(this._optGotRsl.setAttribute("data-width",t.width),this._optGotRsl.setAttribute("data-height",t.height),this._optGotRsl.innerText="got "+t.width+"x"+t.height,this._selRsl&&this._optGotRsl.parentNode==this._selRsl&&(this._selRsl.value="got"));{let e=this.UIElement;e=(null==e?void 0:e.shadowRoot)||e;let i=null==e?void 0:e.querySelector(".dce-mn-resolution-box");if(i){let e="";if(t&&t.width&&t.height){let i=Math.max(t.width,t.height),r=Math.min(t.width,t.height);e=r<=1080?r+"P":i<3e3?"2K":Math.round(i/1e3)+"K"}i.textContent=e}}}getVideoElement(){return Je(this,pr,"f")}isVideoLoaded(){return!(!Je(this,pr,"f")||!this.cameraEnhancer)&&this.cameraEnhancer.isOpen()}setVideoFit(t){if(t=t.toLowerCase(),!["contain","cover"].includes(t))throw new Error(`Unsupported value '${t}'.`);if(this.videoFit=t,!Je(this,pr,"f"))return;if(Je(this,pr,"f").style.objectFit=t,Je(this,dr,"m",Sr).call(this))return;let e;this._updateVideoContainer();try{e=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}Je(this,dr,"m",Rr).call(this,e,this.getConvertedRegion()),this.updateDrawingLayers(e)}getVideoFit(){return this.videoFit}getContentDimensions(){var t,e,i,r;let n,s,o;if(Je(this,dr,"m",Sr).call(this)?(n=null===(i=this._cvsSingleFrameMode)||void 0===i?void 0:i.width,s=null===(r=this._cvsSingleFrameMode)||void 0===r?void 0:r.height,o="contain"):(n=null===(t=Je(this,pr,"f"))||void 0===t?void 0:t.videoWidth,s=null===(e=Je(this,pr,"f"))||void 0===e?void 0:e.videoHeight,o=this.getVideoFit()),!n||!s)throw new Error("Invalid content dimensions.");return{width:n,height:s,objectFit:o}}updateConvertedRegion(t){const e=Wi.convert(this.scanRegion,t.width,t.height);Qe(this,_r,e,"f"),Je(this,mr,"f")&&clearTimeout(Je(this,mr,"f")),Qe(this,mr,setTimeout((()=>{let t;try{t=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}Je(this,dr,"m",br).call(this,t,e),Je(this,dr,"m",Rr).call(this,t,e)}),0),"f")}getConvertedRegion(){return Je(this,_r,"f")}setScanRegion(t){if(null!=t&&!E(t)&&!A(t))throw TypeError("Invalid 'region'.");let e;this.scanRegion=t?JSON.parse(JSON.stringify(t)):null;try{e=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}this.updateConvertedRegion(e)}getScanRegion(){return JSON.parse(JSON.stringify(this.scanRegion))}getVisibleRegionOfVideo(t){if(!this.isVideoLoaded())throw new Error("The video is not loaded.");const e=Je(this,pr,"f").videoWidth,i=Je(this,pr,"f").videoHeight,r=this.getVideoFit(),{width:n,height:s}=this._innerComponent.getBoundingClientRect();if(n<=0||s<=0)throw new Error("Unable to get video dimensions. Video may not be rendered on the page.");let o;const a={x:0,y:0,width:e,height:i,isMeasuredInPercentage:!1};if("cover"===r&&(n/s1){const t=Je(this,pr,"f").videoWidth,e=Je(this,pr,"f").videoHeight,{width:r,height:n}=this._innerComponent.getBoundingClientRect(),s=t/e;if(r/nt.remove())),Je(this,Er,"f").length=0}dispose(){this._unbindUI(),Qe(this,Tr,!0,"f")}}function Nr(t,e,i,r){if("a"===i&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?r:"a"===i?r.call(t):r?r.value:e.get(t)}function jr(t,e,i,r,n){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?n.call(t,i):n?n.value=i:e.set(t,i),i}fr=new WeakMap,gr=new WeakMap,mr=new WeakMap,pr=new WeakMap,_r=new WeakMap,vr=new WeakMap,yr=new WeakMap,wr=new WeakMap,Cr=new WeakMap,Er=new WeakMap,Tr=new WeakMap,dr=new WeakSet,Sr=function(){return"disabled"!==this._singleFrameMode},br=function(t,e){!e||0===e.x&&0===e.y&&e.width===t.width&&e.height===t.height?this.clearScanRegionMask():this.setScanRegionMask(e.x,e.y,e.width,e.height)},Ir=function(){this._drawingLayerOfMask&&this._drawingLayerOfMask.setVisible(!0)},xr=function(){this._drawingLayerOfMask&&this._drawingLayerOfMask.setVisible(!1)},Ar=function(){this._divScanLight&&"none"==this._divScanLight.style.display&&(this._divScanLight.style.display="block")},Or=function(){this._divScanLight&&(this._divScanLight.style.display="none")},Rr=function(t,e){if(!this._divScanArea)return;if(!this._innerComponent.getElement("content"))return;const{width:i,height:r,objectFit:n}=t;e||(e={x:0,y:0,width:i,height:r});const{width:s,height:o}=this._innerComponent.getBoundingClientRect();if(s<=0||o<=0)return;const a=s/o,h=i/r;let l,c,u,d,f=1;if("contain"===n)a66||"Safari"===Hr.browser&&Hr.version>13||"OPR"===Hr.browser&&Hr.version>43||"Edge"===Hr.browser&&Hr.version,"function"==typeof SuppressedError&&SuppressedError;class Zr{static multiply(t,e){const i=[];for(let r=0;r<3;r++){const n=e.slice(3*r,3*r+3);for(let e=0;e<3;e++){const r=[t[e],t[e+3],t[e+6]].reduce(((t,e,i)=>t+e*n[i]),0);i.push(r)}}return i}static identity(){return[1,0,0,0,1,0,0,0,1]}static translate(t,e,i){return Zr.multiply(t,[1,0,0,0,1,0,e,i,1])}static rotate(t,e){var i=Math.cos(e),r=Math.sin(e);return Zr.multiply(t,[i,-r,0,r,i,0,0,0,1])}static scale(t,e,i){return Zr.multiply(t,[e,0,0,0,i,0,0,0,1])}}var qr,Kr,Jr,Qr,$r,tn,en,rn,nn,sn,on,an,hn,ln,cn,un,dn,fn,gn,mn,pn,_n,vn,yn,wn,Cn,En,Tn,Sn,bn,In,xn,An,On,Rn,Dn,Ln,Mn,Fn,Pn,kn,Bn,Nn,jn,Un,Vn,Gn,Wn,Yn,Hn;!function(t){t.GREY="grey",t.GREY32="grey32",t.RGBA="rgba",t.RBGA="rbga",t.GRBA="grba",t.GBRA="gbra",t.BRGA="brga",t.BGRA="bgra"}(qr||(qr={}));class Xn{static get version(){return"1.1.3"}static get webGLSupported(){return void 0===Xn._webGLSupported&&(Xn._webGLSupported=!!document.createElement("canvas").getContext("webgl")),Xn._webGLSupported}get disposed(){return Xr(this,en,"f")}constructor(){Kr.set(this,qr.RGBA),Jr.set(this,null),Qr.set(this,null),$r.set(this,null),this.useWebGLByDefault=!0,this._reusedCvs=null,this._reusedWebGLCvs=null,tn.set(this,null),en.set(this,!1)}drawImage(t,e,i,r,n,s){if(this.disposed)throw Error("The 'ImageDataGetter' instance has been disposed.");if(!i||!r)throw new Error("Invalid 'sourceWidth' or 'sourceHeight'.");if((null==s?void 0:s.bUseWebGL)&&!Xn.webGLSupported)throw new Error("Your browser or machine may not support WebGL.");if(e instanceof HTMLVideoElement&&4!==e.readyState||e instanceof HTMLImageElement&&!e.complete)throw new Error("The source is not loaded.");let o;Xn._onLog&&(o=Date.now(),Xn._onLog("drawImage(), START: "+o));let a=0,h=0,l=i,c=r,u=0,d=0,f=i,g=r;n&&(n.sx&&(a=Math.round(n.sx)),n.sy&&(h=Math.round(n.sy)),n.sWidth&&(l=Math.round(n.sWidth)),n.sHeight&&(c=Math.round(n.sHeight)),n.dx&&(u=Math.round(n.dx)),n.dy&&(d=Math.round(n.dy)),n.dWidth&&(f=Math.round(n.dWidth)),n.dHeight&&(g=Math.round(n.dHeight)));let m,p=qr.RGBA;if((null==s?void 0:s.pixelFormat)&&(p=s.pixelFormat),(null==s?void 0:s.bufferContainer)&&(m=s.bufferContainer,m.length<4*f*g))throw new Error("Unexpected size of the 'bufferContainer'.");const _=t;if(!Xn.webGLSupported||!(this.useWebGLByDefault&&null==(null==s?void 0:s.bUseWebGL)||(null==s?void 0:s.bUseWebGL))){Xn._onLog&&Xn._onLog("drawImage() in context2d."),_.ctx2d||(_.ctx2d=_.getContext("2d",{willReadFrequently:!0}));const t=_.ctx2d;if(!t)throw new Error("Unable to get 'CanvasRenderingContext2D' from canvas.");return(_.width{const e=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,e),t.bufferData(t.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),t.STATIC_DRAW);const i=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,i),t.bufferData(t.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),t.STATIC_DRAW),{positions:e,texCoords:i}},i=t=>{const e=t.createTexture();return t.bindTexture(t.TEXTURE_2D,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),e},r=(t,e)=>{const i=t.createProgram();if(e.forEach((e=>t.attachShader(i,e))),t.linkProgram(i),!t.getProgramParameter(i,t.LINK_STATUS)){const e=new Error(`An error occured linking the program: ${t.getProgramInfoLog(i)}.`);throw e.name="WebGLError",e}return t.useProgram(i),i},n=(t,e,i)=>{const r=t.createShader(e);if(t.shaderSource(r,i),t.compileShader(r),!t.getShaderParameter(r,t.COMPILE_STATUS)){const e=new Error(`An error occured compiling the shader: ${t.getShaderInfoLog(r)}.`);throw e.name="WebGLError",e}return r},s="\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\n\nuniform mat3 u_matrix;\nuniform mat3 u_textureMatrix;\n\nvarying vec2 v_texCoord;\nvoid main(void) {\ngl_Position = vec4((u_matrix * vec3(a_position, 1)).xy, 0, 1.0);\nv_texCoord = vec4((u_textureMatrix * vec3(a_texCoord, 1)).xy, 0, 1.0).xy;\n}";let o="rgb";["rgba","rbga","grba","gbra","brga","bgra"].includes(p)&&(o=p.slice(0,3));const a=`\nprecision mediump float;\nvarying vec2 v_texCoord;\nuniform sampler2D u_image;\nuniform float uColorFactor;\n\nvoid main() {\nvec4 sample = texture2D(u_image, v_texCoord);\nfloat grey = 0.3 * sample.r + 0.59 * sample.g + 0.11 * sample.b;\ngl_FragColor = vec4(sample.${o} * (1.0 - uColorFactor) + (grey * uColorFactor), sample.a);\n}`,h=r(t,[n(t,t.VERTEX_SHADER,s),n(t,t.FRAGMENT_SHADER,a)]);zr(this,Qr,{program:h,attribLocations:{vertexPosition:t.getAttribLocation(h,"a_position"),texPosition:t.getAttribLocation(h,"a_texCoord")},uniformLocations:{uSampler:t.getUniformLocation(h,"u_image"),uColorFactor:t.getUniformLocation(h,"uColorFactor"),uMatrix:t.getUniformLocation(h,"u_matrix"),uTextureMatrix:t.getUniformLocation(h,"u_textureMatrix")}},"f"),zr(this,$r,e(t),"f"),zr(this,Jr,i(t),"f"),zr(this,Kr,p,"f")}const n=(t,e,i)=>{t.bindBuffer(t.ARRAY_BUFFER,e),t.enableVertexAttribArray(i),t.vertexAttribPointer(i,2,t.FLOAT,!1,0,0)},s=(t,e,i)=>{const r=t.RGBA,n=t.RGBA,s=t.UNSIGNED_BYTE;t.bindTexture(t.TEXTURE_2D,e),t.texImage2D(t.TEXTURE_2D,0,r,n,s,i)},v=(t,e,s,o)=>{t.clearColor(0,0,0,1),t.clearDepth(1),t.enable(t.DEPTH_TEST),t.depthFunc(t.LEQUAL),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT),n(t,s.positions,e.attribLocations.vertexPosition),n(t,s.texCoords,e.attribLocations.texPosition),t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,o),t.uniform1i(e.uniformLocations.uSampler,0),t.uniform1f(e.uniformLocations.uColorFactor,[qr.GREY,qr.GREY32].includes(p)?1:0);let m,_,v=Zr.translate(Zr.identity(),-1,-1);v=Zr.scale(v,2,2),v=Zr.scale(v,1/t.canvas.width,1/t.canvas.height),m=Zr.translate(v,u,d),m=Zr.scale(m,f,g),t.uniformMatrix3fv(e.uniformLocations.uMatrix,!1,m),_=Zr.translate(Zr.identity(),a/i,h/r),_=Zr.scale(_,l/i,c/r),t.uniformMatrix3fv(e.uniformLocations.uTextureMatrix,!1,_),t.drawArrays(t.TRIANGLES,0,6)};s(t,Xr(this,Jr,"f"),e),v(t,Xr(this,Qr,"f"),Xr(this,$r,"f"),Xr(this,Jr,"f"));const y=m||new Uint8Array(4*f*g);if(t.readPixels(u,d,f,g,t.RGBA,t.UNSIGNED_BYTE,y),255!==y[3]){Xn._onLog&&Xn._onLog("Incorrect WebGL drawing .");const t=new Error("WebGL error: incorrect drawing.");throw t.name="WebGLError",t}return Xn._onLog&&Xn._onLog("drawImage() in WebGL end. Costs: "+(Date.now()-o)),{context:t,pixelFormat:p===qr.GREY?qr.GREY32:p,bUseWebGL:!0}}catch(o){if(this.forceLoseContext(),null==(null==s?void 0:s.bUseWebGL))return Xn._onLog&&Xn._onLog("'drawImage()' in WebGL failed, try again in context2d."),this.useWebGLByDefault=!1,this.drawImage(t,e,i,r,n,Object.assign({},s,{bUseWebGL:!1}));throw o.name="WebGLError",o}}readCvsData(t,e,i){if(!(t instanceof CanvasRenderingContext2D||t instanceof WebGLRenderingContext))throw new Error("Invalid 'context'.");let r,n=0,s=0,o=t.canvas.width,a=t.canvas.height;if(e&&(e.x&&(n=e.x),e.y&&(s=e.y),e.width&&(o=e.width),e.height&&(a=e.height)),(null==i?void 0:i.length)<4*o*a)throw new Error("Unexpected size of the 'bufferContainer'.");if(t instanceof WebGLRenderingContext){const e=t;i?(e.readPixels(n,s,o,a,e.RGBA,e.UNSIGNED_BYTE,i),r=new Uint8Array(i.buffer,0,4*o*a)):(r=new Uint8Array(4*o*a),e.readPixels(n,s,o,a,e.RGBA,e.UNSIGNED_BYTE,r))}else if(t instanceof CanvasRenderingContext2D){let e;e=t.getImageData(n,s,o,a),r=new Uint8Array(e.data.buffer),null==i||i.set(r)}return r}transformPixelFormat(t,e,i,r){let n,s;if(Xn._onLog&&(n=Date.now(),Xn._onLog("transformPixelFormat(), START: "+n)),e===i)return Xn._onLog&&Xn._onLog("transformPixelFormat() end. Costs: "+(Date.now()-n)),r?new Uint8Array(t):t;const o=[qr.RGBA,qr.RBGA,qr.GRBA,qr.GBRA,qr.BRGA,qr.BGRA];if(o.includes(e))if(i===qr.GREY){s=new Uint8Array(t.length/4);for(let e=0;eh||e.sy+e.sHeight>l)throw new Error("Invalid position.");null===(r=Xn._onLog)||void 0===r||r.call(Xn,"getImageData(), START: "+(c=Date.now()));const d=Math.round(e.sx),f=Math.round(e.sy),g=Math.round(e.sWidth),m=Math.round(e.sHeight),p=Math.round(e.dWidth),_=Math.round(e.dHeight);let v,y=(null==i?void 0:i.pixelFormat)||qr.RGBA,w=null==i?void 0:i.bufferContainer;if(w&&(qr.GREY===y&&w.length{this.disposed||r.includes(n)&&n.apply(i.target,s)}),0);else try{o=n.apply(i.target,s)}catch(t){}if(!0===o)break}}}dispose(){jr(this,nn,!0,"f")}}rn=new WeakMap,nn=new WeakMap;const Zn=(t,e,i,r)=>{if(!i)return t;let n=e+Math.round((t-e)/i)*i;return r&&(n=Math.min(n,r)),n};class qn{static get version(){return"2.0.18"}static isStorageAvailable(t){let e;try{e=window[t];const i="__storage_test__";return e.setItem(i,i),e.removeItem(i),!0}catch(t){return t instanceof DOMException&&(22===t.code||1014===t.code||"QuotaExceededError"===t.name||"NS_ERROR_DOM_QUOTA_REACHED"===t.name)&&e&&0!==e.length}}static findBestRearCameraInIOS(t,e){if(!t||!t.length)return null;let i=!1;if((null==e?void 0:e.getMainCamera)&&(i=!0),i){const e=["후면 카메라","背面カメラ","後置鏡頭","后置相机","กล้องด้านหลัง","बैक कैमरा","الكاميرا الخلفية","מצלמה אחורית","камера на задней панели","задня камера","задна камера","артқы камера","πίσω κάμερα","zadní fotoaparát","zadná kamera","tylny aparat","takakamera","stražnja kamera","rückkamera","kamera på baksidan","kamera belakang","kamera bak","hátsó kamera","fotocamera (posteriore)","câmera traseira","câmara traseira","cámara trasera","càmera posterior","caméra arrière","cameră spate","camera mặt sau","camera aan achterzijde","bagsidekamera","back camera","arka kamera"],i=t.find((t=>e.includes(t.label.toLowerCase())));return null==i?void 0:i.deviceId}{const e=["후면","背面","後置","后置","านหลัง","बैक","خلفية","אחורית","задняя","задней","задна","πίσω","zadní","zadná","tylny","trasera","traseira","taka","stražnja","spate","sau","rück","posteriore","posterior","hátsó","belakang","baksidan","bakre","bak","bagside","back","aртқы","arrière","arka","achterzijde"],i=["트리플","三镜头","三鏡頭","トリプル","สาม","ट्रिपल","ثلاثية","משולשת","үштік","тройная","тройна","потроєна","τριπλή","üçlü","trójobiektywowy","trostruka","trojný","trojitá","trippelt","trippel","triplă","triple","tripla","tiga","kolmois","ba camera"],r=["듀얼 와이드","雙廣角","双广角","デュアル広角","คู่ด้านหลังมุมกว้าง","ड्युअल वाइड","مزدوجة عريضة","כפולה רחבה","қос кең бұрышты","здвоєна ширококутна","двойная широкоугольная","двойна широкоъгълна","διπλή ευρεία","çift geniş","laajakulmainen kaksois","kép rộng mặt sau","kettős, széles látószögű","grande angular dupla","ganda","dwuobiektywowy","dwikamera","dvostruka široka","duální širokoúhlý","duálna širokouhlá","dupla grande-angular","dublă","dubbel vidvinkel","dual-weitwinkel","dual wide","dual con gran angular","dual","double","doppia con grandangolo","doble","dobbelt vidvinkelkamera"],n=t.filter((t=>{const i=t.label.toLowerCase();return e.some((t=>i.includes(t)))}));if(!n.length)return null;const s=n.find((t=>{const e=t.label.toLowerCase();return i.some((t=>e.includes(t)))}));if(s)return s.deviceId;const o=n.find((t=>{const e=t.label.toLowerCase();return r.some((t=>e.includes(t)))}));return o?o.deviceId:n[0].deviceId}}static findBestRearCamera(t,e){if(!t||!t.length)return null;if(["iPhone","iPad","Mac"].includes(Hr.OS))return qn.findBestRearCameraInIOS(t,{getMainCamera:null==e?void 0:e.getMainCameraInIOS});const i=["후","背面","背置","後面","後置","后面","后置","านหลัง","หลัง","बैक","خلفية","אחורית","задняя","задня","задней","задна","πίσω","zadní","zadná","tylny","trás","trasera","traseira","taka","stražnja","spate","sau","rück","rear","posteriore","posterior","hátsó","darrere","belakang","baksidan","bakre","bak","bagside","back","aртқы","arrière","arka","achterzijde"];for(let e of t){const t=e.label.toLowerCase();if(t&&i.some((e=>t.includes(e)))&&/\b0(\b)?/.test(t))return e.deviceId}return["Android","HarmonyOS"].includes(Hr.OS)?t[t.length-1].deviceId:null}static findBestCamera(t,e,i){return t&&t.length?"environment"===e?this.findBestRearCamera(t,i):"user"===e?null:e?void 0:null:null}static async playVideo(t,e,i){if(!t)throw new Error("Invalid 'videoEl'.");if(!e)throw new Error("Invalid 'source'.");return new Promise((async(r,n)=>{let s;const o=()=>{t.removeEventListener("loadstart",c),t.removeEventListener("abort",u),t.removeEventListener("play",d),t.removeEventListener("error",f),t.removeEventListener("loadedmetadata",p)};let a=!1;const h=()=>{a=!0,s&&clearTimeout(s),o(),r(t)},l=t=>{s&&clearTimeout(s),o(),n(t)},c=()=>{t.addEventListener("abort",u,{once:!0})},u=()=>{const t=new Error("Video playing was interrupted.");t.name="AbortError",l(t)},d=()=>{h()},f=()=>{l(new Error(`Video error ${t.error.code}: ${t.error.message}.`))};let g;const m=new Promise((t=>{g=t})),p=()=>{g()};if(t.addEventListener("loadstart",c,{once:!0}),t.addEventListener("play",d,{once:!0}),t.addEventListener("error",f,{once:!0}),t.addEventListener("loadedmetadata",p,{once:!0}),"string"==typeof e||e instanceof String?t.src=e:t.srcObject=e,t.autoplay&&await new Promise((t=>{setTimeout(t,1e3)})),!a){i&&(s=setTimeout((()=>{o(),n(new Error("Failed to play video. Timeout."))}),i)),await m;try{await t.play(),h()}catch(t){console.warn("1st play error: "+((null==t?void 0:t.message)||t))}if(!a)try{await t.play(),h()}catch(t){console.warn("2rd play error: "+((null==t?void 0:t.message)||t)),l(t)}}}))}static async testCameraAccess(t){var e,i;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))return{ok:!1,errorName:"InsecureContext",errorMessage:"Insecure context."};let r;try{r=t?await navigator.mediaDevices.getUserMedia(t):await navigator.mediaDevices.getUserMedia({video:!0})}catch(t){return{ok:!1,errorName:t.name,errorMessage:t.message}}finally{null==r||r.getTracks().forEach((t=>{t.stop()}))}return{ok:!0}}get state(){if(!Nr(this,vn,"f"))return"closed";if("pending"===Nr(this,vn,"f"))return"opening";if("fulfilled"===Nr(this,vn,"f"))return"opened";throw new Error("Unknown state.")}set ifSaveLastUsedCamera(t){t?qn.isStorageAvailable("localStorage")?jr(this,gn,!0,"f"):(jr(this,gn,!1,"f"),console.warn("Local storage is unavailable")):jr(this,gn,!1,"f")}get ifSaveLastUsedCamera(){return Nr(this,gn,"f")}get isVideoPlaying(){return!(!Nr(this,an,"f")||Nr(this,an,"f").paused)&&"opened"===this.state}set tapFocusEventBoundEl(t){var e,i,r;if(!(t instanceof HTMLElement)&&null!=t)throw new TypeError("Invalid 'element'.");null===(e=Nr(this,Sn,"f"))||void 0===e||e.removeEventListener("click",Nr(this,Tn,"f")),null===(i=Nr(this,Sn,"f"))||void 0===i||i.removeEventListener("touchend",Nr(this,Tn,"f")),null===(r=Nr(this,Sn,"f"))||void 0===r||r.removeEventListener("touchmove",Nr(this,En,"f")),jr(this,Sn,t,"f"),t&&(window.TouchEvent&&["Android","HarmonyOS","iPhone","iPad"].includes(Hr.OS)?(t.addEventListener("touchend",Nr(this,Tn,"f")),t.addEventListener("touchmove",Nr(this,En,"f"))):t.addEventListener("click",Nr(this,Tn,"f")))}get tapFocusEventBoundEl(){return Nr(this,Sn,"f")}get disposed(){return Nr(this,Mn,"f")}constructor(t){var e,i;on.add(this),an.set(this,null),hn.set(this,void 0),ln.set(this,(()=>{"opened"===this.state&&Nr(this,An,"f").fire("resumed",null,{target:this,async:!1})})),cn.set(this,(()=>{Nr(this,An,"f").fire("paused",null,{target:this,async:!1})})),un.set(this,void 0),dn.set(this,void 0),this.cameraOpenTimeout=15e3,this._arrCameras=[],fn.set(this,void 0),gn.set(this,!1),this.ifSkipCameraInspection=!1,this.selectIOSRearMainCameraAsDefault=!1,mn.set(this,void 0),pn.set(this,!0),_n.set(this,void 0),vn.set(this,void 0),yn.set(this,!1),this._focusParameters={maxTimeout:400,minTimeout:300,kTimeout:void 0,oldDistance:null,fds:null,isDoingFocus:0,taskBackToContinous:null,curFocusTaskId:0,focusCancelableTime:1500,defaultFocusAreaSizeRatio:6,focusBackToContinousTime:5e3,tapFocusMinDistance:null,tapFocusMaxDistance:null,focusArea:null,tempBufferContainer:null,defaultTempBufferContainerLenRatio:1/4},wn.set(this,!1),this._focusSupported=!0,this.calculateCoordInVideo=(t,e)=>{let i,r;const n=window.getComputedStyle(Nr(this,an,"f")).objectFit,s=this.getResolution(),o=Nr(this,an,"f").getBoundingClientRect(),a=o.left,h=o.top,{width:l,height:c}=Nr(this,an,"f").getBoundingClientRect();if(l<=0||c<=0)throw new Error("Unable to get video dimensions. Video may not be rendered on the page.");const u=l/c,d=s.width/s.height;let f=1;if("contain"===n)d>u?(f=l/s.width,i=(t-a)/f,r=(e-h-(c-l/d)/2)/f):(f=c/s.height,r=(e-h)/f,i=(t-a-(l-c*d)/2)/f);else{if("cover"!==n)throw new Error("Unsupported object-fit.");d>u?(f=c/s.height,r=(e-h)/f,i=(t-a+(c*d-l)/2)/f):(f=l/s.width,i=(t-a)/f,r=(e-h+(l/d-c)/2)/f)}return{x:i,y:r}},Cn.set(this,!1),En.set(this,(()=>{jr(this,Cn,!0,"f")})),Tn.set(this,(async t=>{var e;if(Nr(this,Cn,"f"))return void jr(this,Cn,!1,"f");if(!Nr(this,wn,"f"))return;if(!this.isVideoPlaying)return;if(!Nr(this,hn,"f"))return;if(!this._focusSupported)return;if(!this._focusParameters.fds&&(this._focusParameters.fds=null===(e=this.getCameraCapabilities())||void 0===e?void 0:e.focusDistance,!this._focusParameters.fds))return void(this._focusSupported=!1);if(null==this._focusParameters.kTimeout&&(this._focusParameters.kTimeout=(this._focusParameters.maxTimeout-this._focusParameters.minTimeout)/(1/this._focusParameters.fds.min-1/this._focusParameters.fds.max)),1==this._focusParameters.isDoingFocus)return;let i,r;if(this._focusParameters.taskBackToContinous&&(clearTimeout(this._focusParameters.taskBackToContinous),this._focusParameters.taskBackToContinous=null),t instanceof MouseEvent)i=t.clientX,r=t.clientY;else{if(!(t instanceof TouchEvent))throw new Error("Unknown event type.");if(!t.changedTouches.length)return;i=t.changedTouches[0].clientX,r=t.changedTouches[0].clientY}const n=this.getResolution(),s=2*Math.round(Math.min(n.width,n.height)/this._focusParameters.defaultFocusAreaSizeRatio/2);let o;try{o=this.calculateCoordInVideo(i,r)}catch(t){}if(o.x<0||o.x>n.width||o.y<0||o.y>n.height)return;const a={x:o.x+"px",y:o.y+"px"},h=s+"px",l=h;let c;qn._onLog&&(c=Date.now());try{await Nr(this,on,"m",Wn).call(this,a,h,l,this._focusParameters.tapFocusMinDistance,this._focusParameters.tapFocusMaxDistance)}catch(t){if(qn._onLog)throw qn._onLog(t),t}qn._onLog&&qn._onLog(`Tap focus costs: ${Date.now()-c} ms`),this._focusParameters.taskBackToContinous=setTimeout((()=>{var t;qn._onLog&&qn._onLog("Back to continuous focus."),null===(t=Nr(this,hn,"f"))||void 0===t||t.applyConstraints({advanced:[{focusMode:"continuous"}]}).catch((()=>{}))}),this._focusParameters.focusBackToContinousTime),Nr(this,An,"f").fire("tapfocus",null,{target:this,async:!1})})),Sn.set(this,null),bn.set(this,1),In.set(this,{x:0,y:0}),this.updateVideoElWhenSoftwareScaled=()=>{if(!Nr(this,an,"f"))return;const t=Nr(this,bn,"f");if(t<1)throw new RangeError("Invalid scale value.");if(1===t)Nr(this,an,"f").style.transform="";else{const e=window.getComputedStyle(Nr(this,an,"f")).objectFit,i=Nr(this,an,"f").videoWidth,r=Nr(this,an,"f").videoHeight,{width:n,height:s}=Nr(this,an,"f").getBoundingClientRect();if(n<=0||s<=0)throw new Error("Unable to get video dimensions. Video may not be rendered on the page.");const o=n/s,a=i/r;let h=1;"contain"===e?h=oo?s/(i/t):n/(r/t));const l=h*(1-1/t)*(i/2-Nr(this,In,"f").x),c=h*(1-1/t)*(r/2-Nr(this,In,"f").y);Nr(this,an,"f").style.transform=`translate(${l}px, ${c}px) scale(${t})`}},xn.set(this,(function(){if(!(this.data instanceof Uint8Array||this.data instanceof Uint8ClampedArray))throw new TypeError("Invalid data.");if("number"!=typeof this.width||this.width<=0)throw new Error("Invalid width.");if("number"!=typeof this.height||this.height<=0)throw new Error("Invalid height.");const t=document.createElement("canvas");let e;if(t.width=this.width,t.height=this.height,this.pixelFormat===qr.GREY){e=new Uint8ClampedArray(this.width*this.height*4);for(let t=0;t{var t,e;if("visible"===document.visibilityState){if(qn._onLog&&qn._onLog("document visible. video paused: "+(null===(t=Nr(this,an,"f"))||void 0===t?void 0:t.paused)),"opening"==this.state||"opened"==this.state){let e=!1;if(!this.isVideoPlaying){qn._onLog&&qn._onLog("document visible. Not auto resume. 1st resume start.");try{await this.resume(),e=!0}catch(t){qn._onLog&&qn._onLog("document visible. 1st resume video failed, try open instead.")}e||await Nr(this,on,"m",Nn).call(this)}if(await new Promise((t=>setTimeout(t,300))),!this.isVideoPlaying){qn._onLog&&qn._onLog("document visible. 1st open failed. 2rd resume start."),e=!1;try{await this.resume(),e=!0}catch(t){qn._onLog&&qn._onLog("document visible. 2rd resume video failed, try open instead.")}e||await Nr(this,on,"m",Nn).call(this)}}}else"hidden"===document.visibilityState&&(qn._onLog&&qn._onLog("document hidden. video paused: "+(null===(e=Nr(this,an,"f"))||void 0===e?void 0:e.paused)),"opening"==this.state||"opened"==this.state&&this.isVideoPlaying&&this.pause())})),Mn.set(this,!1),(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia)||setTimeout((()=>{qn.onWarning&&qn.onWarning("The browser is too old or the page is loaded from an insecure origin.")}),0),this.defaultConstraints={video:{facingMode:{ideal:"environment"}}},this.resetMediaStreamConstraints(),t instanceof HTMLVideoElement&&this.setVideoEl(t),jr(this,An,new zn,"f"),this.imageDataGetter=new Xn,document.addEventListener("visibilitychange",Nr(this,Ln,"f"))}setVideoEl(t){if(!(t&&t instanceof HTMLVideoElement))throw new Error("Invalid 'videoEl'.");t.addEventListener("play",Nr(this,ln,"f")),t.addEventListener("pause",Nr(this,cn,"f")),jr(this,an,t,"f")}getVideoEl(){return Nr(this,an,"f")}releaseVideoEl(){var t,e;null===(t=Nr(this,an,"f"))||void 0===t||t.removeEventListener("play",Nr(this,ln,"f")),null===(e=Nr(this,an,"f"))||void 0===e||e.removeEventListener("pause",Nr(this,cn,"f")),jr(this,an,null,"f")}isVideoLoaded(){return!!Nr(this,an,"f")&&4==Nr(this,an,"f").readyState}async open(){if(Nr(this,_n,"f")&&!Nr(this,pn,"f")){if("pending"===Nr(this,vn,"f"))return Nr(this,_n,"f");if("fulfilled"===Nr(this,vn,"f"))return}Nr(this,An,"f").fire("before:open",null,{target:this}),await Nr(this,on,"m",Nn).call(this),Nr(this,An,"f").fire("played",null,{target:this,async:!1}),Nr(this,An,"f").fire("opened",null,{target:this,async:!1})}async close(){if("closed"===this.state)return;Nr(this,An,"f").fire("before:close",null,{target:this});const t=Nr(this,_n,"f");if(Nr(this,on,"m",Un).call(this),t&&"pending"===Nr(this,vn,"f")){try{await t}catch(t){}if(!1===Nr(this,pn,"f")){const t=new Error("'close()' was interrupted.");throw t.name="AbortError",t}}jr(this,_n,null,"f"),jr(this,vn,null,"f"),Nr(this,An,"f").fire("closed",null,{target:this,async:!1})}pause(){if(!this.isVideoLoaded())throw new Error("Video is not loaded.");if("opened"!==this.state)throw new Error("Camera or video is not open.");Nr(this,an,"f").pause()}async resume(){if(!this.isVideoLoaded())throw new Error("Video is not loaded.");if("opened"!==this.state)throw new Error("Camera or video is not open.");await Nr(this,an,"f").play()}async setCamera(t){if("string"!=typeof t)throw new TypeError("Invalid 'deviceId'.");if("object"!=typeof Nr(this,un,"f").video&&(Nr(this,un,"f").video={}),delete Nr(this,un,"f").video.facingMode,Nr(this,un,"f").video.deviceId={exact:t},!("closed"===this.state||this.videoSrc||"opening"===this.state&&Nr(this,pn,"f"))){Nr(this,An,"f").fire("before:camera:change",[],{target:this,async:!1}),await Nr(this,on,"m",jn).call(this);try{this.resetSoftwareScale()}catch(t){}return Nr(this,dn,"f")}}async switchToFrontCamera(t){if("object"!=typeof Nr(this,un,"f").video&&(Nr(this,un,"f").video={}),(null==t?void 0:t.resolution)&&(Nr(this,un,"f").video.width={ideal:t.resolution.width},Nr(this,un,"f").video.height={ideal:t.resolution.height}),delete Nr(this,un,"f").video.deviceId,Nr(this,un,"f").video.facingMode={exact:"user"},jr(this,fn,null,"f"),!("closed"===this.state||this.videoSrc||"opening"===this.state&&Nr(this,pn,"f"))){Nr(this,An,"f").fire("before:camera:change",[],{target:this,async:!1}),Nr(this,on,"m",jn).call(this);try{this.resetSoftwareScale()}catch(t){}return Nr(this,dn,"f")}}getCamera(){var t;if(Nr(this,dn,"f"))return Nr(this,dn,"f");{let e=(null===(t=Nr(this,un,"f").video)||void 0===t?void 0:t.deviceId)||"";if(e){e=e.exact||e.ideal||e;for(let t of this._arrCameras)if(t.deviceId===e)return JSON.parse(JSON.stringify(t))}return{deviceId:"",label:"",_checked:!1}}}async _getCameras(t){var e,i;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))throw new Error("Failed to access the camera because the browser is too old or the page is loaded from an insecure origin.");let r;if(t){let t=await navigator.mediaDevices.getUserMedia({video:!0});r=(await navigator.mediaDevices.enumerateDevices()).filter((t=>"videoinput"===t.kind)),t.getTracks().forEach((t=>{t.stop()}))}else r=(await navigator.mediaDevices.enumerateDevices()).filter((t=>"videoinput"===t.kind));const n=[],s=[];if(this._arrCameras)for(let t of this._arrCameras)t._checked&&s.push(t);for(let t=0;t"videoinput"===t.kind));return i&&i.length&&!i[0].deviceId?this._getCameras(!0):this._getCameras(!1)}async getAllCameras(){return this.getCameras()}async setResolution(t,e,i){if("number"!=typeof t||t<=0)throw new TypeError("Invalid 'width'.");if("number"!=typeof e||e<=0)throw new TypeError("Invalid 'height'.");if("object"!=typeof Nr(this,un,"f").video&&(Nr(this,un,"f").video={}),i?(Nr(this,un,"f").video.width={exact:t},Nr(this,un,"f").video.height={exact:e}):(Nr(this,un,"f").video.width={ideal:t},Nr(this,un,"f").video.height={ideal:e}),"closed"===this.state||this.videoSrc||"opening"===this.state&&Nr(this,pn,"f"))return null;Nr(this,An,"f").fire("before:resolution:change",[],{target:this,async:!1}),await Nr(this,on,"m",jn).call(this);try{this.resetSoftwareScale()}catch(t){}const r=this.getResolution();return{width:r.width,height:r.height}}getResolution(){if("opened"===this.state&&this.videoSrc&&Nr(this,an,"f"))return{width:Nr(this,an,"f").videoWidth,height:Nr(this,an,"f").videoHeight};if(Nr(this,hn,"f")){const t=Nr(this,hn,"f").getSettings();return{width:t.width,height:t.height}}if(this.isVideoLoaded())return{width:Nr(this,an,"f").videoWidth,height:Nr(this,an,"f").videoHeight};{const t={width:0,height:0};let e=Nr(this,un,"f").video.width||0,i=Nr(this,un,"f").video.height||0;return e&&(t.width=e.exact||e.ideal||e),i&&(t.height=i.exact||i.ideal||i),t}}async getResolutions(t){var e,i,r,n,s,o,a,h,l,c,u;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))throw new Error("Failed to access the camera because the browser is too old or the page is loaded from an insecure origin.");let d="";const f=(t,e)=>{const i=Nr(this,Rn,"f").get(t);if(!i||!i.length)return!1;for(let t of i)if(t.width===e.width&&t.height===e.height)return!0;return!1};if(this._mediaStream){d=null===(u=Nr(this,dn,"f"))||void 0===u?void 0:u.deviceId;let e=Nr(this,Rn,"f").get(d);if(e&&!t)return JSON.parse(JSON.stringify(e));e=[],Nr(this,Rn,"f").set(d,e),jr(this,yn,!0,"f");try{for(let t of this.detectedResolutions){await Nr(this,hn,"f").applyConstraints({width:{ideal:t.width},height:{ideal:t.height}}),Nr(this,on,"m",Pn).call(this);const i=Nr(this,hn,"f").getSettings(),r={width:i.width,height:i.height};f(d,r)||e.push({width:r.width,height:r.height})}}catch(t){throw Nr(this,on,"m",Un).call(this),jr(this,yn,!1,"f"),t}try{await Nr(this,on,"m",Nn).call(this)}catch(t){if("AbortError"===t.name)return e;throw t}finally{jr(this,yn,!1,"f")}return e}{const e=async(t,e,i)=>{const r={video:{deviceId:{exact:t},width:{ideal:e},height:{ideal:i}}};let n=null;try{n=await navigator.mediaDevices.getUserMedia(r)}catch(t){return null}if(!n)return null;const s=n.getVideoTracks();let o=null;try{const t=s[0].getSettings();o={width:t.width,height:t.height}}catch(t){const e=document.createElement("video");e.srcObject=n,o={width:e.videoWidth,height:e.videoHeight},e.srcObject=null}return s.forEach((t=>{t.stop()})),o};let i=(null===(s=null===(n=null===(r=Nr(this,un,"f"))||void 0===r?void 0:r.video)||void 0===n?void 0:n.deviceId)||void 0===s?void 0:s.exact)||(null===(h=null===(a=null===(o=Nr(this,un,"f"))||void 0===o?void 0:o.video)||void 0===a?void 0:a.deviceId)||void 0===h?void 0:h.ideal)||(null===(c=null===(l=Nr(this,un,"f"))||void 0===l?void 0:l.video)||void 0===c?void 0:c.deviceId);if(!i)return[];let u=Nr(this,Rn,"f").get(i);if(u&&!t)return JSON.parse(JSON.stringify(u));u=[],Nr(this,Rn,"f").set(i,u);for(let t of this.detectedResolutions){const r=await e(i,t.width,t.height);r&&!f(i,r)&&u.push({width:r.width,height:r.height})}return u}}async setMediaStreamConstraints(t,e){if(!(t=>{return null!==t&&"[object Object]"===(e=t,Object.prototype.toString.call(e));var e})(t))throw new TypeError("Invalid 'mediaStreamConstraints'.");jr(this,un,JSON.parse(JSON.stringify(t)),"f"),jr(this,fn,null,"f"),e&&Nr(this,on,"m",jn).call(this)}getMediaStreamConstraints(){return JSON.parse(JSON.stringify(Nr(this,un,"f")))}resetMediaStreamConstraints(){jr(this,un,this.defaultConstraints?JSON.parse(JSON.stringify(this.defaultConstraints)):null,"f")}getCameraCapabilities(){if(!Nr(this,hn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");return Nr(this,hn,"f").getCapabilities?Nr(this,hn,"f").getCapabilities():{}}getCameraSettings(){if(!Nr(this,hn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");return Nr(this,hn,"f").getSettings()}async turnOnTorch(){if(!Nr(this,hn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const t=this.getCameraCapabilities();if(!(null==t?void 0:t.torch))throw Error("Not supported.");await Nr(this,hn,"f").applyConstraints({advanced:[{torch:!0}]})}async turnOffTorch(){if(!Nr(this,hn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const t=this.getCameraCapabilities();if(!(null==t?void 0:t.torch))throw Error("Not supported.");await Nr(this,hn,"f").applyConstraints({advanced:[{torch:!1}]})}async setColorTemperature(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(!Nr(this,hn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const r=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.colorTemperature;if(!r)throw Error("Not supported.");return e&&(tr.max&&(t=r.max),t=Zn(t,r.min,r.step,r.max)),await Nr(this,hn,"f").applyConstraints({advanced:[{colorTemperature:t,whiteBalanceMode:"manual"}]}),t}getColorTemperature(){return this.getCameraSettings().colorTemperature||0}async setExposureCompensation(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(!Nr(this,hn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const r=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.exposureCompensation;if(!r)throw Error("Not supported.");return e&&(tr.max&&(t=r.max),t=Zn(t,r.min,r.step,r.max)),await Nr(this,hn,"f").applyConstraints({advanced:[{exposureCompensation:t}]}),t}getExposureCompensation(){return this.getCameraSettings().exposureCompensation||0}async setFrameRate(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(!Nr(this,hn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");let r=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.frameRate;if(!r)throw Error("Not supported.");e&&(tr.max&&(t=r.max));const n=this.getResolution();return await Nr(this,hn,"f").applyConstraints({width:{ideal:Math.max(n.width,n.height)},frameRate:t}),t}getFrameRate(){return this.getCameraSettings().frameRate}async setFocus(t,e){if("object"!=typeof t||Array.isArray(t)||null==t)throw new TypeError("Invalid 'settings'.");if(!Nr(this,hn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const i=this.getCameraCapabilities(),r=null==i?void 0:i.focusMode,n=null==i?void 0:i.focusDistance;if(!r)throw Error("Not supported.");if("string"!=typeof t.mode)throw TypeError("Invalid 'mode'.");const s=t.mode.toLowerCase();if(!r.includes(s))throw Error("Unsupported focus mode.");if("manual"===s){if(!n)throw Error("Manual focus unsupported.");if(t.hasOwnProperty("distance")){let i=t.distance;e&&(in.max&&(i=n.max),i=Zn(i,n.min,n.step,n.max)),this._focusParameters.focusArea=null,await Nr(this,hn,"f").applyConstraints({advanced:[{focusMode:s,focusDistance:i}]})}else{if(!t.area)throw new Error("'distance' or 'area' should be specified in 'manual' mode.");{const e=t.area.centerPoint;let i=t.area.width,r=t.area.height;if(!i||!r){const t=this.getResolution();i||(i=2*Math.round(Math.min(t.width,t.height)/this._focusParameters.defaultFocusAreaSizeRatio/2)+"px"),r||(r=2*Math.round(Math.min(t.width,t.height)/this._focusParameters.defaultFocusAreaSizeRatio/2)+"px")}this._focusParameters.focusArea={centerPoint:{x:e.x,y:e.y},width:i,height:r},await Nr(this,on,"m",Wn).call(this,e,i,r)}}}else this._focusParameters.focusArea=null,await Nr(this,hn,"f").applyConstraints({advanced:[{focusMode:s}]})}getFocus(){const t=this.getCameraSettings(),e=t.focusMode;return e?"manual"===e?this._focusParameters.focusArea?{mode:"manual",area:JSON.parse(JSON.stringify(this._focusParameters.focusArea))}:{mode:"manual",distance:t.focusDistance}:{mode:e}:null}async enableTapToFocus(){jr(this,wn,!0,"f")}disableTapToFocus(){jr(this,wn,!1,"f")}isTapToFocusEnabled(){return Nr(this,wn,"f")}async setZoom(t){if("object"!=typeof t||Array.isArray(t)||null==t)throw new TypeError("Invalid 'settings'.");if("number"!=typeof t.factor)throw new TypeError("Illegal type of 'factor'.");if(t.factor<1)throw new RangeError("Invalid 'factor'.");if("opened"!==this.state)throw new Error("Video is not playing.");t.centerPoint?Nr(this,on,"m",Yn).call(this,t.centerPoint):this.resetScaleCenter();try{if(Nr(this,on,"m",Hn).call(this,Nr(this,In,"f"))){const e=await this.setHardwareScale(t.factor,!0);let i=this.getHardwareScale();1==i&&1!=e&&(i=e),t.factor>i?this.setSoftwareScale(t.factor/i):this.setSoftwareScale(1)}else await this.setHardwareScale(1),this.setSoftwareScale(t.factor)}catch(e){const i=e.message||e;if("Not supported."!==i&&"Camera is not open."!==i)throw e;this.setSoftwareScale(t.factor)}}getZoom(){if("opened"!==this.state)throw new Error("Video is not playing.");let t=1;try{t=this.getHardwareScale()}catch(t){if("Camera is not open."!==(t.message||t))throw t}return{factor:t*Nr(this,bn,"f")}}async resetZoom(){await this.setZoom({factor:1})}async setHardwareScale(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(t<1)throw new RangeError("Invalid 'value'.");if(!Nr(this,hn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const r=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.zoom;if(!r)throw Error("Not supported.");return e&&(tr.max&&(t=r.max),t=Zn(t,r.min,r.step,r.max)),await Nr(this,hn,"f").applyConstraints({advanced:[{zoom:t}]}),t}getHardwareScale(){return this.getCameraSettings().zoom||1}setSoftwareScale(t,e){if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(t<1)throw new RangeError("Invalid 'value'.");if("opened"!==this.state)throw new Error("Video is not playing.");e&&Nr(this,on,"m",Yn).call(this,e),jr(this,bn,t,"f"),this.updateVideoElWhenSoftwareScaled()}getSoftwareScale(){return Nr(this,bn,"f")}resetScaleCenter(){if("opened"!==this.state)throw new Error("Video is not playing.");const t=this.getResolution();jr(this,In,{x:t.width/2,y:t.height/2},"f")}resetSoftwareScale(){this.setSoftwareScale(1),this.resetScaleCenter()}getFrameData(t){if(this.disposed)throw Error("The 'Camera' instance has been disposed.");if(!this.isVideoLoaded())return null;if(Nr(this,yn,"f"))return null;const e=Date.now();qn._onLog&&qn._onLog("getFrameData() START: "+e);const i=Nr(this,an,"f").videoWidth,r=Nr(this,an,"f").videoHeight;let n={sx:0,sy:0,sWidth:i,sHeight:r,dWidth:i,dHeight:r};(null==t?void 0:t.position)&&(n=JSON.parse(JSON.stringify(t.position)));let s=qr.RGBA;(null==t?void 0:t.pixelFormat)&&(s=t.pixelFormat);let o=Nr(this,bn,"f");(null==t?void 0:t.scale)&&(o=t.scale);let a=Nr(this,In,"f");if(null==t?void 0:t.scaleCenter){if("string"!=typeof t.scaleCenter.x||"string"!=typeof t.scaleCenter.y)throw new Error("Invalid scale center.");let e=0,n=0;if(t.scaleCenter.x.endsWith("px"))e=parseFloat(t.scaleCenter.x);else{if(!t.scaleCenter.x.endsWith("%"))throw new Error("Invalid scale center.");e=parseFloat(t.scaleCenter.x)/100*i}if(t.scaleCenter.y.endsWith("px"))n=parseFloat(t.scaleCenter.y);else{if(!t.scaleCenter.y.endsWith("%"))throw new Error("Invalid scale center.");n=parseFloat(t.scaleCenter.y)/100*r}if(isNaN(e)||isNaN(n))throw new Error("Invalid scale center.");a.x=Math.round(e),a.y=Math.round(n)}let h=null;if((null==t?void 0:t.bufferContainer)&&(h=t.bufferContainer),0==i||0==r)return null;1!==o&&(n.sWidth=Math.round(n.sWidth/o),n.sHeight=Math.round(n.sHeight/o),n.sx=Math.round((1-1/o)*a.x+n.sx/o),n.sy=Math.round((1-1/o)*a.y+n.sy/o));const l=this.imageDataGetter.getImageData(Nr(this,an,"f"),n,{pixelFormat:s,bufferContainer:h});if(!l)return null;const c=Date.now();return qn._onLog&&qn._onLog("getFrameData() END: "+c),{data:l.data,width:l.width,height:l.height,pixelFormat:l.pixelFormat,timeSpent:c-e,timeStamp:c,toCanvas:Nr(this,xn,"f")}}on(t,e){if(!Nr(this,On,"f").includes(t.toLowerCase()))throw new Error(`Event '${t}' does not exist.`);Nr(this,An,"f").on(t,e)}off(t,e){Nr(this,An,"f").off(t,e)}async dispose(){this.tapFocusEventBoundEl=null,await this.close(),this.releaseVideoEl(),Nr(this,An,"f").dispose(),this.imageDataGetter.dispose(),document.removeEventListener("visibilitychange",Nr(this,Ln,"f")),jr(this,Mn,!0,"f")}}var Kn,Jn,Qn,$n,ts,es,is,rs,ns,ss,os,as,hs,ls,cs,us,ds,fs,gs,ms,ps,_s,vs,ys,ws,Cs,Es,Ts,Ss,bs,Is,xs,As,Os,Rs;an=new WeakMap,hn=new WeakMap,ln=new WeakMap,cn=new WeakMap,un=new WeakMap,dn=new WeakMap,fn=new WeakMap,gn=new WeakMap,mn=new WeakMap,pn=new WeakMap,_n=new WeakMap,vn=new WeakMap,yn=new WeakMap,wn=new WeakMap,Cn=new WeakMap,En=new WeakMap,Tn=new WeakMap,Sn=new WeakMap,bn=new WeakMap,In=new WeakMap,xn=new WeakMap,An=new WeakMap,On=new WeakMap,Rn=new WeakMap,Dn=new WeakMap,Ln=new WeakMap,Mn=new WeakMap,on=new WeakSet,Fn=async function(){const t=this.getMediaStreamConstraints();if("boolean"==typeof t.video&&(t.video={}),t.video.deviceId);else if(Nr(this,fn,"f"))delete t.video.facingMode,t.video.deviceId={exact:Nr(this,fn,"f")};else if(this.ifSaveLastUsedCamera&&qn.isStorageAvailable&&window.localStorage.getItem("dce_last_camera_id")){delete t.video.facingMode,t.video.deviceId={ideal:window.localStorage.getItem("dce_last_camera_id")};const e=JSON.parse(window.localStorage.getItem("dce_last_apply_width")),i=JSON.parse(window.localStorage.getItem("dce_last_apply_height"));e&&i&&(t.video.width=e,t.video.height=i)}else if(this.ifSkipCameraInspection);else{const e=async t=>{let e=null;return"environment"===t&&["Android","HarmonyOS","iPhone","iPad"].includes(Hr.OS)?(await this._getCameras(!1),Nr(this,on,"m",Pn).call(this),e=qn.findBestCamera(this._arrCameras,"environment",{getMainCameraInIOS:this.selectIOSRearMainCameraAsDefault})):t||["Android","HarmonyOS","iPhone","iPad"].includes(Hr.OS)||(await this._getCameras(!1),Nr(this,on,"m",Pn).call(this),e=qn.findBestCamera(this._arrCameras,null,{getMainCameraInIOS:this.selectIOSRearMainCameraAsDefault})),e};let i=t.video.facingMode;i instanceof Array&&i.length&&(i=i[0]),"object"==typeof i&&(i=i.exact||i.ideal);const r=await e(i);r&&(delete t.video.facingMode,t.video.deviceId={exact:r})}return t},Pn=function(){if(Nr(this,pn,"f")){const t=new Error("The operation was interrupted.");throw t.name="AbortError",t}},kn=async function(t){var e,i;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))throw new Error("Failed to access the camera because the browser is too old or the page is loaded from an insecure origin.");let r;try{qn._onLog&&qn._onLog("======try getUserMedia========");let e=[0,500,1e3,2e3],i=null;const n=async t=>{for(let n of e){n&&(await new Promise((t=>setTimeout(t,n))),Nr(this,on,"m",Pn).call(this));try{qn._onLog&&qn._onLog("ask "+JSON.stringify(t)),r=await navigator.mediaDevices.getUserMedia(t),Nr(this,on,"m",Pn).call(this);break}catch(t){if("NotFoundError"===t.name||"NotAllowedError"===t.name||"AbortError"===t.name||"OverconstrainedError"===t.name)throw t;i=t,qn._onLog&&qn._onLog(t.message||t)}}};if(await n(t),r||"object"!=typeof t.video||(t.video.deviceId&&(delete t.video.deviceId,await n(t)),!r&&t.video.facingMode&&(delete t.video.facingMode,await n(t)),r||!t.video.width&&!t.video.height||(delete t.video.width,delete t.video.height,await n(t))),!r)throw i;return r}catch(t){throw null==r||r.getTracks().forEach((t=>{t.stop()})),"NotFoundError"===t.name&&(DOMException?t=new DOMException("No camera available, please use a device with an accessible camera.",t.name):(t=new Error("No camera available, please use a device with an accessible camera.")).name="NotFoundError"),t}},Bn=function(){this._mediaStream&&(this._mediaStream.getTracks().forEach((t=>{t.stop()})),this._mediaStream=null),jr(this,hn,null,"f")},Nn=async function(){jr(this,pn,!1,"f");const t=jr(this,mn,Symbol(),"f");if(Nr(this,_n,"f")&&"pending"===Nr(this,vn,"f")){try{await Nr(this,_n,"f")}catch(t){}Nr(this,on,"m",Pn).call(this)}if(t!==Nr(this,mn,"f"))return;const e=jr(this,_n,(async()=>{jr(this,vn,"pending","f");try{if(this.videoSrc){if(!Nr(this,an,"f"))throw new Error("'videoEl' should be set.");await qn.playVideo(Nr(this,an,"f"),this.videoSrc,this.cameraOpenTimeout),Nr(this,on,"m",Pn).call(this)}else{let t=await Nr(this,on,"m",Fn).call(this);Nr(this,on,"m",Bn).call(this);let e=await Nr(this,on,"m",kn).call(this,t);await this._getCameras(!1),Nr(this,on,"m",Pn).call(this);const i=()=>{const t=e.getVideoTracks();let i,r;if(t.length&&(i=t[0]),i){const t=i.getSettings();if(t)for(let e of this._arrCameras)if(t.deviceId===e.deviceId){e._checked=!0,e.label=i.label,r=e;break}}return r},r=Nr(this,un,"f");if("object"==typeof r.video){let n=r.video.facingMode;if(n instanceof Array&&n.length&&(n=n[0]),"object"==typeof n&&(n=n.exact||n.ideal),!(Nr(this,fn,"f")||this.ifSaveLastUsedCamera&&qn.isStorageAvailable&&window.localStorage.getItem("dce_last_camera_id")||this.ifSkipCameraInspection||r.video.deviceId)){const r=i(),s=qn.findBestCamera(this._arrCameras,n,{getMainCameraInIOS:this.selectIOSRearMainCameraAsDefault});s&&s!=(null==r?void 0:r.deviceId)&&(e.getTracks().forEach((t=>{t.stop()})),t.video.deviceId={exact:s},e=await Nr(this,on,"m",kn).call(this,t),Nr(this,on,"m",Pn).call(this))}}const n=i();(null==n?void 0:n.deviceId)&&(jr(this,fn,n&&n.deviceId,"f"),this.ifSaveLastUsedCamera&&qn.isStorageAvailable&&(window.localStorage.setItem("dce_last_camera_id",Nr(this,fn,"f")),"object"==typeof t.video&&t.video.width&&t.video.height&&(window.localStorage.setItem("dce_last_apply_width",JSON.stringify(t.video.width)),window.localStorage.setItem("dce_last_apply_height",JSON.stringify(t.video.height))))),Nr(this,an,"f")&&(await qn.playVideo(Nr(this,an,"f"),e,this.cameraOpenTimeout),Nr(this,on,"m",Pn).call(this)),this._mediaStream=e;const s=e.getVideoTracks();(null==s?void 0:s.length)&&jr(this,hn,s[0],"f"),jr(this,dn,n,"f")}}catch(t){throw Nr(this,on,"m",Un).call(this),jr(this,vn,null,"f"),t}jr(this,vn,"fulfilled","f")})(),"f");return e},jn=async function(){var t;if("closed"===this.state||this.videoSrc)return;const e=null===(t=Nr(this,dn,"f"))||void 0===t?void 0:t.deviceId,i=this.getResolution();await Nr(this,on,"m",Nn).call(this);const r=this.getResolution();e&&e!==Nr(this,dn,"f").deviceId&&Nr(this,An,"f").fire("camera:changed",[Nr(this,dn,"f").deviceId,e],{target:this,async:!1}),i.width==r.width&&i.height==r.height||Nr(this,An,"f").fire("resolution:changed",[{width:r.width,height:r.height},{width:i.width,height:i.height}],{target:this,async:!1}),Nr(this,An,"f").fire("played",null,{target:this,async:!1})},Un=function(){Nr(this,on,"m",Bn).call(this),jr(this,dn,null,"f"),Nr(this,an,"f")&&(Nr(this,an,"f").srcObject=null,this.videoSrc&&(Nr(this,an,"f").pause(),Nr(this,an,"f").currentTime=0)),jr(this,pn,!0,"f");try{this.resetSoftwareScale()}catch(t){}},Vn=async function t(e,i){const r=t=>{if(!Nr(this,hn,"f")||!this.isVideoPlaying||t.focusTaskId!=this._focusParameters.curFocusTaskId){Nr(this,hn,"f")&&this.isVideoPlaying||(this._focusParameters.isDoingFocus=0);const e=new Error(`Focus task ${t.focusTaskId} canceled.`);throw e.name="DeprecatedTaskError",e}1===this._focusParameters.isDoingFocus&&Date.now()-t.timeStart>this._focusParameters.focusCancelableTime&&(this._focusParameters.isDoingFocus=-1)};let n;i=Zn(i,this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),await Nr(this,hn,"f").applyConstraints({advanced:[{focusMode:"manual",focusDistance:i}]}),r(e),n=null==this._focusParameters.oldDistance?this._focusParameters.kTimeout*Math.max(Math.abs(1/this._focusParameters.fds.min-1/i),Math.abs(1/this._focusParameters.fds.max-1/i))+this._focusParameters.minTimeout:this._focusParameters.kTimeout*Math.abs(1/this._focusParameters.oldDistance-1/i)+this._focusParameters.minTimeout,this._focusParameters.oldDistance=i,await new Promise((t=>{setTimeout(t,n)})),r(e);let s=e.focusL-e.focusW/2,o=e.focusT-e.focusH/2,a=e.focusW,h=e.focusH;const l=this.getResolution();s=Math.round(s),o=Math.round(o),a=Math.round(a),h=Math.round(h),a>l.width&&(a=l.width),h>l.height&&(h=l.height),s<0?s=0:s+a>l.width&&(s=l.width-a),o<0?o=0:o+h>l.height&&(o=l.height-h);const c=4*l.width*l.height*this._focusParameters.defaultTempBufferContainerLenRatio,u=4*a*h;let d=this._focusParameters.tempBufferContainer;if(d){const t=d.length;c>t&&c>=u?d=new Uint8Array(c):u>t&&u>=c&&(d=new Uint8Array(u))}else d=this._focusParameters.tempBufferContainer=new Uint8Array(Math.max(c,u));if(!this.imageDataGetter.getImageData(Nr(this,an,"f"),{sx:s,sy:o,sWidth:a,sHeight:h,dWidth:a,dHeight:h},{pixelFormat:qr.RGBA,bufferContainer:d}))return Nr(this,on,"m",t).call(this,e,i);const f=d;let g=0;for(let t=0,e=u-8;ta&&au)return await Nr(this,on,"m",t).call(this,e,o,a,n,s,c,u)}else{let h=await Nr(this,on,"m",Vn).call(this,e,c);if(a>h)return await Nr(this,on,"m",t).call(this,e,o,a,n,s,c,h);if(a==h)return await Nr(this,on,"m",t).call(this,e,o,a,c,h);let u=await Nr(this,on,"m",Vn).call(this,e,l);if(u>a&&ao.width||h<0||h>o.height)throw new Error("Invalid 'centerPoint'.");let l=0;if(e.endsWith("px"))l=parseFloat(e);else{if(!e.endsWith("%"))throw new Error("Invalid 'width'.");l=parseFloat(e)/100*o.width}if(isNaN(l)||l<0)throw new Error("Invalid 'width'.");let c=0;if(i.endsWith("px"))c=parseFloat(i);else{if(!i.endsWith("%"))throw new Error("Invalid 'height'.");c=parseFloat(i)/100*o.height}if(isNaN(c)||c<0)throw new Error("Invalid 'height'.");if(1!==Nr(this,bn,"f")){const t=Nr(this,bn,"f"),e=Nr(this,In,"f");l/=t,c/=t,a=(1-1/t)*e.x+a/t,h=(1-1/t)*e.y+h/t}if(!this._focusSupported)throw new Error("Manual focus unsupported.");if(!this._focusParameters.fds&&(this._focusParameters.fds=null===(s=this.getCameraCapabilities())||void 0===s?void 0:s.focusDistance,!this._focusParameters.fds))throw this._focusSupported=!1,new Error("Manual focus unsupported.");null==this._focusParameters.kTimeout&&(this._focusParameters.kTimeout=(this._focusParameters.maxTimeout-this._focusParameters.minTimeout)/(1/this._focusParameters.fds.min-1/this._focusParameters.fds.max)),this._focusParameters.isDoingFocus=1;const u={focusL:a,focusT:h,focusW:l,focusH:c,focusTaskId:++this._focusParameters.curFocusTaskId,timeStart:Date.now()},d=async(t,e,i)=>{try{(null==e||ethis._focusParameters.fds.max)&&(i=this._focusParameters.fds.max),this._focusParameters.oldDistance=null;let r=Zn(Math.sqrt(i*(e||this._focusParameters.fds.step)),this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),n=Zn(Math.sqrt((e||this._focusParameters.fds.step)*r),this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),s=Zn(Math.sqrt(r*i),this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),o=await Nr(this,on,"m",Vn).call(this,t,s),a=await Nr(this,on,"m",Vn).call(this,t,n),h=await Nr(this,on,"m",Vn).call(this,t,r);if(a>h&&ho&&a>o){let e=await Nr(this,on,"m",Vn).call(this,t,i);const n=await Nr(this,on,"m",Gn).call(this,t,r,h,i,e,s,o);return this._focusParameters.isDoingFocus=0,n}if(a==h&&hh){const e=await Nr(this,on,"m",Gn).call(this,t,r,h,s,o);return this._focusParameters.isDoingFocus=0,e}return d(t,e,i)}catch(t){if("DeprecatedTaskError"!==t.name)throw t}};return d(u,r,n)},Yn=function(t){if("opened"!==this.state)throw new Error("Video is not playing.");if(!t||"string"!=typeof t.x||"string"!=typeof t.y)throw new Error("Invalid 'center'.");const e=this.getResolution();let i=0,r=0;if(t.x.endsWith("px"))i=parseFloat(t.x);else{if(!t.x.endsWith("%"))throw new Error("Invalid scale center.");i=parseFloat(t.x)/100*e.width}if(t.y.endsWith("px"))r=parseFloat(t.y);else{if(!t.y.endsWith("%"))throw new Error("Invalid scale center.");r=parseFloat(t.y)/100*e.height}if(isNaN(i)||isNaN(r))throw new Error("Invalid scale center.");jr(this,In,{x:i,y:r},"f")},Hn=function(t){if("opened"!==this.state)throw new Error("Video is not playing.");const e=this.getResolution();return t&&t.x==e.width/2&&t.y==e.height/2},qn.browserInfo=Hr,qn.onWarning=null===(sn=null===window||void 0===window?void 0:window.console)||void 0===sn?void 0:sn.warn;class Ds{constructor(t){Kn.add(this),Jn.set(this,void 0),Qn.set(this,0),$n.set(this,void 0),ts.set(this,0),es.set(this,!1),Qe(this,Jn,t,"f")}startCharging(){Je(this,es,"f")||(Ds._onLog&&Ds._onLog("start charging."),Je(this,Kn,"m",rs).call(this),Qe(this,es,!0,"f"))}stopCharging(){Je(this,$n,"f")&&clearTimeout(Je(this,$n,"f")),Je(this,es,"f")&&(Ds._onLog&&Ds._onLog("stop charging."),Qe(this,Qn,Date.now()-Je(this,ts,"f"),"f"),Qe(this,es,!1,"f"))}}Jn=new WeakMap,Qn=new WeakMap,$n=new WeakMap,ts=new WeakMap,es=new WeakMap,Kn=new WeakSet,is=function(){vt.cfd(1),Ds._onLog&&Ds._onLog("charge 1.")},rs=function t(){0==Je(this,Qn,"f")&&Je(this,Kn,"m",is).call(this),Qe(this,ts,Date.now(),"f"),Je(this,$n,"f")&&clearTimeout(Je(this,$n,"f")),Qe(this,$n,setTimeout((()=>{Qe(this,Qn,0,"f"),Je(this,Kn,"m",t).call(this)}),Je(this,Jn,"f")-Je(this,Qn,"f")),"f")};class Ls{static beep(){if(!this.allowBeep)return;if(!this.beepSoundSource)return;let t,e=Date.now();if(!(e-Je(this,ns,"f",as)<100)){if(Qe(this,ns,e,"f",as),Je(this,ns,"f",ss).size&&(t=Je(this,ns,"f",ss).values().next().value,this.beepSoundSource==t.src?(Je(this,ns,"f",ss).delete(t),t.play()):t=null),!t)if(Je(this,ns,"f",os).size<16){t=new Audio(this.beepSoundSource);let e=null,i=()=>{t.removeEventListener("loadedmetadata",i),t.play(),e=setTimeout((()=>{Je(this,ns,"f",os).delete(t)}),2e3*t.duration)};t.addEventListener("loadedmetadata",i),t.addEventListener("ended",(()=>{null!=e&&(clearTimeout(e),e=null),t.pause(),t.currentTime=0,Je(this,ns,"f",os).delete(t),Je(this,ns,"f",ss).add(t)}))}else Je(this,ns,"f",hs)||(Qe(this,ns,!0,"f",hs),console.warn("The requested audio tracks exceed 16 and will not be played."));t&&Je(this,ns,"f",os).add(t)}}static vibrate(){if(this.allowVibrate){if(!navigator||!navigator.vibrate)throw new Error("Not supported.");navigator.vibrate(Ls.vibrateDuration)}}}ns=Ls,ss={value:new Set},os={value:new Set},as={value:0},hs={value:!1},Ls.allowBeep=!0,Ls.beepSoundSource="data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA/+M4wAAAAAAAAAAAAEluZm8AAAAPAAAABQAAAkAAgICAgICAgICAgICAgICAgICAgKCgoKCgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4ODg4P//////////////////////////AAAAAExhdmM1OC41NAAAAAAAAAAAAAAAACQEUQAAAAAAAAJAk0uXRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MYxAANQAbGeUEQAAHZYZ3fASqD4P5TKBgocg+Bw/8+CAYBA4XB9/4EBAEP4nB9+UOf/6gfUCAIKyjgQ/Kf//wfswAAAwQA/+MYxAYOqrbdkZGQAMA7DJLCsQxNOij///////////+tv///3RWiZGBEhsf/FO/+LoCSFs1dFVS/g8f/4Mhv0nhqAieHleLy/+MYxAYOOrbMAY2gABf/////////////////usPJ66R0wI4boY9/8jQYg//g2SPx1M0N3Z0kVJLIs///Uw4aMyvHJJYmPBYG/+MYxAgPMALBucAQAoGgaBoFQVBUFQWDv6gZBUFQVBUGgaBr5YSgqCoKhIGg7+IQVBUFQVBoGga//SsFSoKnf/iVTEFNRTMu/+MYxAYAAANIAAAAADEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",Ls.allowVibrate=!0,Ls.vibrateDuration=300;const Ms=new Map([[qr.GREY,a.IPF_GRAYSCALED],[qr.RGBA,a.IPF_ABGR_8888]]),Fs="function"==typeof BigInt?{BF_NULL:BigInt(0),BF_ALL:BigInt(0x10000000000000000),BF_DEFAULT:BigInt(4265345023),BF_ONED:BigInt(3147775),BF_GS1_DATABAR:BigInt(260096),BF_CODE_39:BigInt(1),BF_CODE_128:BigInt(2),BF_CODE_93:BigInt(4),BF_CODABAR:BigInt(8),BF_ITF:BigInt(16),BF_EAN_13:BigInt(32),BF_EAN_8:BigInt(64),BF_UPC_A:BigInt(128),BF_UPC_E:BigInt(256),BF_INDUSTRIAL_25:BigInt(512),BF_CODE_39_EXTENDED:BigInt(1024),BF_GS1_DATABAR_OMNIDIRECTIONAL:BigInt(2048),BF_GS1_DATABAR_TRUNCATED:BigInt(4096),BF_GS1_DATABAR_STACKED:BigInt(8192),BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL:BigInt(16384),BF_GS1_DATABAR_EXPANDED:BigInt(32768),BF_GS1_DATABAR_EXPANDED_STACKED:BigInt(65536),BF_GS1_DATABAR_LIMITED:BigInt(131072),BF_PATCHCODE:BigInt(262144),BF_CODE_32:BigInt(16777216),BF_PDF417:BigInt(33554432),BF_QR_CODE:BigInt(67108864),BF_DATAMATRIX:BigInt(134217728),BF_AZTEC:BigInt(268435456),BF_MAXICODE:BigInt(536870912),BF_MICRO_QR:BigInt(1073741824),BF_MICRO_PDF417:BigInt(524288),BF_GS1_COMPOSITE:BigInt(2147483648),BF_MSI_CODE:BigInt(1048576),BF_CODE_11:BigInt(2097152),BF_TWO_DIGIT_ADD_ON:BigInt(4194304),BF_FIVE_DIGIT_ADD_ON:BigInt(8388608),BF_MATRIX_25:BigInt(68719476736),BF_POSTALCODE:BigInt(0x3f0000000000000),BF_NONSTANDARD_BARCODE:BigInt(4294967296),BF_USPSINTELLIGENTMAIL:BigInt(4503599627370496),BF_POSTNET:BigInt(9007199254740992),BF_PLANET:BigInt(0x40000000000000),BF_AUSTRALIANPOST:BigInt(0x80000000000000),BF_RM4SCC:BigInt(72057594037927940),BF_KIX:BigInt(0x200000000000000),BF_DOTCODE:BigInt(8589934592),BF_PHARMACODE_ONE_TRACK:BigInt(17179869184),BF_PHARMACODE_TWO_TRACK:BigInt(34359738368),BF_PHARMACODE:BigInt(51539607552)}:{BF_NULL:"0x00",BF_ALL:"0xFFFFFFFFFFFFFFFF",BF_DEFAULT:"0xFE3BFFFF",BF_ONED:"0x003007FF",BF_GS1_DATABAR:"0x0003F800",BF_CODE_39:"0x1",BF_CODE_128:"0x2",BF_CODE_93:"0x4",BF_CODABAR:"0x8",BF_ITF:"0x10",BF_EAN_13:"0x20",BF_EAN_8:"0x40",BF_UPC_A:"0x80",BF_UPC_E:"0x100",BF_INDUSTRIAL_25:"0x200",BF_CODE_39_EXTENDED:"0x400",BF_GS1_DATABAR_OMNIDIRECTIONAL:"0x800",BF_GS1_DATABAR_TRUNCATED:"0x1000",BF_GS1_DATABAR_STACKED:"0x2000",BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL:"0x4000",BF_GS1_DATABAR_EXPANDED:"0x8000",BF_GS1_DATABAR_EXPANDED_STACKED:"0x10000",BF_GS1_DATABAR_LIMITED:"0x20000",BF_PATCHCODE:"0x00040000",BF_CODE_32:"0x01000000",BF_PDF417:"0x02000000",BF_QR_CODE:"0x04000000",BF_DATAMATRIX:"0x08000000",BF_AZTEC:"0x10000000",BF_MAXICODE:"0x20000000",BF_MICRO_QR:"0x40000000",BF_MICRO_PDF417:"0x00080000",BF_GS1_COMPOSITE:"0x80000000",BF_MSI_CODE:"0x100000",BF_CODE_11:"0x200000",BF_TWO_DIGIT_ADD_ON:"0x400000",BF_FIVE_DIGIT_ADD_ON:"0x800000",BF_MATRIX_25:"0x1000000000",BF_POSTALCODE:"0x3F0000000000000",BF_NONSTANDARD_BARCODE:"0x100000000",BF_USPSINTELLIGENTMAIL:"0x10000000000000",BF_POSTNET:"0x20000000000000",BF_PLANET:"0x40000000000000",BF_AUSTRALIANPOST:"0x80000000000000",BF_RM4SCC:"0x100000000000000",BF_KIX:"0x200000000000000",BF_DOTCODE:"0x200000000",BF_PHARMACODE_ONE_TRACK:"0x400000000",BF_PHARMACODE_TWO_TRACK:"0x800000000",BF_PHARMACODE:"0xC00000000"};class Ps extends J{static set _onLog(t){Qe(Ps,cs,t,"f",us),qn._onLog=t,Ds._onLog=t}static get _onLog(){return Je(Ps,cs,"f",us)}static async detectEnvironment(){return await(async()=>({wasm:$e,worker:ti,getUserMedia:ei,camera:await ii(),browser:qe.browser,version:qe.version,OS:qe.OS}))()}static async testCameraAccess(){const t=await qn.testCameraAccess();return t.ok?{ok:!0,message:"Successfully accessed the camera."}:"InsecureContext"===t.errorName?{ok:!1,message:"Insecure context."}:"OverconstrainedError"===t.errorName||"NotFoundError"===t.errorName?{ok:!1,message:"No camera detected."}:"NotAllowedError"===t.errorName?{ok:!1,message:"No permission to access camera."}:"AbortError"===t.errorName?{ok:!1,message:"Some problem occurred which prevented the device from being used."}:"NotReadableError"===t.errorName?{ok:!1,message:"A hardware error occurred."}:"SecurityError"===t.errorName?{ok:!1,message:"User media support is disabled."}:{ok:!1,message:t.errorMessage}}static async createInstance(t){var e,i;if(t&&!(t instanceof Br))throw new TypeError("Invalid view.");if(null===(e=gt.license)||void 0===e?void 0:e.LicenseManager){if(!(null===(i=gt.license)||void 0===i?void 0:i.LicenseManager.bCallInitLicense))throw new Error("License is not set.");await vt.loadWasm(["license"]),await gt.license.dynamsoft()}const r=new Ps(t);return Ps.onWarning&&(location&&"file:"===location.protocol?setTimeout((()=>{Ps.onWarning&&Ps.onWarning({id:1,message:"The page is opened over file:// and Dynamsoft Camera Enhancer may not work properly. Please open the page via https://."})}),0):!1!==window.isSecureContext&&navigator&&navigator.mediaDevices&&navigator.mediaDevices.getUserMedia||setTimeout((()=>{Ps.onWarning&&Ps.onWarning({id:2,message:"Dynamsoft Camera Enhancer may not work properly in a non-secure context. Please open the page via https://."})}),0)),r}get video(){return this.cameraManager.getVideoEl()}set videoSrc(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraView&&(this.cameraView._hideDefaultSelection=!0),this.cameraManager.videoSrc=t}get videoSrc(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.videoSrc}set ifSaveLastUsedCamera(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraManager.ifSaveLastUsedCamera=t}get ifSaveLastUsedCamera(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.ifSaveLastUsedCamera}set ifSkipCameraInspection(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraManager.ifSkipCameraInspection=t}get ifSkipCameraInspection(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.ifSkipCameraInspection}set cameraOpenTimeout(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraManager.cameraOpenTimeout=t}get cameraOpenTimeout(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.cameraOpenTimeout}set singleFrameMode(t){if(!["disabled","image","camera"].includes(t))throw new Error("Invalid value.");if(this.isOpen())throw new Error("It is not allowed to change `singleFrameMode` when the camera is open.");Qe(this,gs,t,"f")}get singleFrameMode(){return Je(this,gs,"f")}get _isFetchingStarted(){return Je(this,ws,"f")}get disposed(){return Je(this,bs,"f")}constructor(t){if(super(),ls.add(this),ds.set(this,"closed"),fs.set(this,void 0),this.isTorchOn=void 0,gs.set(this,void 0),this._onCameraSelChange=async()=>{this.isOpen()&&this.cameraView&&!this.cameraView.disposed&&await this.selectCamera(this.cameraView._selCam.value)},this._onResolutionSelChange=async()=>{if(!this.isOpen())return;if(!this.cameraView||this.cameraView.disposed)return;let t,e;if(this.cameraView._selRsl&&-1!=this.cameraView._selRsl.selectedIndex){let i=this.cameraView._selRsl.options[this.cameraView._selRsl.selectedIndex];t=parseInt(i.getAttribute("data-width")),e=parseInt(i.getAttribute("data-height"))}await this.setResolution({width:t,height:e})},this._onCloseBtnClick=async()=>{this.isOpen()&&this.cameraView&&!this.cameraView.disposed&&this.close()},ms.set(this,((t,e,i,r)=>{const n=Date.now(),s={sx:r.x,sy:r.y,sWidth:r.width,sHeight:r.height,dWidth:r.width,dHeight:r.height},o=Math.max(s.dWidth,s.dHeight);if(this.canvasSizeLimit&&o>this.canvasSizeLimit){const t=this.canvasSizeLimit/o;s.dWidth>s.dHeight?(s.dWidth=this.canvasSizeLimit,s.dHeight=Math.round(s.dHeight*t)):(s.dWidth=Math.round(s.dWidth*t),s.dHeight=this.canvasSizeLimit)}const h=this.cameraManager.imageDataGetter.getImageData(t,s,{pixelFormat:this.getPixelFormat()===a.IPF_GRAYSCALED?qr.GREY:qr.RGBA});let l=null;if(h){const t=Date.now();let o;o=h.pixelFormat===qr.GREY?h.width:4*h.width;let a=!0;0===s.sx&&0===s.sy&&s.sWidth===e&&s.sHeight===i&&(a=!1),l={bytes:h.data,width:h.width,height:h.height,stride:o,format:Ms.get(h.pixelFormat),tag:{imageId:this._imageId==Number.MAX_VALUE?this._imageId=0:++this._imageId,type:St.ITT_FILE_IMAGE,isCropped:a,cropRegion:{left:r.x,top:r.y,right:r.x+r.width,bottom:r.y+r.height,isMeasuredInPercentage:!1},originalWidth:e,originalHeight:i,currentWidth:h.width,currentHeight:h.height,timeSpent:t-n,timeStamp:t},toCanvas:Je(this,ps,"f"),isDCEFrame:!0}}return l})),this._onSingleFrameAcquired=t=>{let e;e=this.cameraView?this.cameraView.getConvertedRegion():Wi.convert(Je(this,vs,"f"),t.width,t.height),e||(e={x:0,y:0,width:t.width,height:t.height});const i=Je(this,ms,"f").call(this,t,t.width,t.height,e);Je(this,fs,"f").fire("singleFrameAcquired",[i],{async:!1,copy:!1})},ps.set(this,(function(){if(!(this.bytes instanceof Uint8Array||this.bytes instanceof Uint8ClampedArray))throw new TypeError("Invalid bytes.");if("number"!=typeof this.width||this.width<=0)throw new Error("Invalid width.");if("number"!=typeof this.height||this.height<=0)throw new Error("Invalid height.");const t=document.createElement("canvas");let e;if(t.width=this.width,t.height=this.height,this.format===a.IPF_GRAYSCALED){e=new Uint8ClampedArray(this.width*this.height*4);for(let t=0;t{if(!this.video)return;const t=this.cameraManager.getSoftwareScale();if(t<1)throw new RangeError("Invalid scale value.");this.cameraView&&!this.cameraView.disposed?(this.video.style.transform=1===t?"":`scale(${t})`,this.cameraView._updateVideoContainer()):this.video.style.transform=1===t?"":`scale(${t})`},["iPhone","iPad","Android","HarmonyOS"].includes(qe.OS)?this.cameraManager.setResolution(1280,720):this.cameraManager.setResolution(1920,1080),navigator&&navigator.mediaDevices&&navigator.mediaDevices.getUserMedia?this.singleFrameMode="disabled":this.singleFrameMode="image",t&&(this.setCameraView(t),t.cameraEnhancer=this),this._on("before:camera:change",(()=>{Je(this,Ss,"f").stopCharging();const t=this.cameraView;t&&!t.disposed&&(t._startLoading(),t.clearAllInnerDrawingItems())})),this._on("camera:changed",(()=>{this.clearBuffer()})),this._on("before:resolution:change",(()=>{const t=this.cameraView;t&&!t.disposed&&(t._startLoading(),t.clearAllInnerDrawingItems())})),this._on("resolution:changed",(()=>{this.clearBuffer(),t.eventHandler.fire("content:updated",null,{async:!1})})),this._on("paused",(()=>{Je(this,Ss,"f").stopCharging();const t=this.cameraView;t&&t.disposed})),this._on("resumed",(()=>{const t=this.cameraView;t&&t.disposed})),this._on("tapfocus",(()=>{Je(this,Es,"f").tapToFocus&&Je(this,Ss,"f").startCharging()})),this._intermediateResultReceiver={},this._intermediateResultReceiver.onTaskResultsReceived=async(t,e)=>{var i,r,n,s;if(Je(this,ls,"m",Is).call(this)||!this.isOpen()||this.isPaused())return;const o=t.intermediateResultUnits;Ps._onLog&&(Ps._onLog("intermediateResultUnits:"),Ps._onLog(o));let a=!1,h=!1;for(let t of o){if(t.unitType===At.IRUT_DECODED_BARCODES&&t.decodedBarcodes.length){a=!0;break}t.unitType===At.IRUT_LOCALIZED_BARCODES&&t.localizedBarcodes.length&&(h=!0)}if(Ps._onLog&&(Ps._onLog("hasLocalizedBarcodes:"),Ps._onLog(h)),Je(this,Es,"f").autoZoom||Je(this,Es,"f").enhancedFocus)if(a)Je(this,Ts,"f").autoZoomInFrameArray.length=0,Je(this,Ts,"f").autoZoomOutFrameCount=0,Je(this,Ts,"f").frameArrayInIdealZoom.length=0,Je(this,Ts,"f").autoFocusFrameArray.length=0;else{const e=async t=>{await this.setZoom(t),Je(this,Es,"f").autoZoom&&Je(this,Ss,"f").startCharging()},a=async t=>{await this.setFocus(t),Je(this,Es,"f").enhancedFocus&&Je(this,Ss,"f").startCharging()};if(h){const h=o[0].originalImageTag,l=(null===(i=h.cropRegion)||void 0===i?void 0:i.left)||0,c=(null===(r=h.cropRegion)||void 0===r?void 0:r.top)||0,u=(null===(n=h.cropRegion)||void 0===n?void 0:n.right)?h.cropRegion.right-l:h.originalWidth,d=(null===(s=h.cropRegion)||void 0===s?void 0:s.bottom)?h.cropRegion.bottom-c:h.originalHeight,f=h.currentWidth,g=h.currentHeight;let m;{let t,e,i,r,n;{const t=this.video.videoWidth*(1-Je(this,Ts,"f").autoZoomDetectionArea)/2,e=this.video.videoWidth*(1+Je(this,Ts,"f").autoZoomDetectionArea)/2,i=e,r=t,s=this.video.videoHeight*(1-Je(this,Ts,"f").autoZoomDetectionArea)/2,o=s,a=this.video.videoHeight*(1+Je(this,Ts,"f").autoZoomDetectionArea)/2;n=[{x:t,y:s},{x:e,y:o},{x:i,y:a},{x:r,y:a}]}Ps._onLog&&(Ps._onLog("detectionArea:"),Ps._onLog(n));const s=[];{const t=(t,e)=>{const i=(t,e)=>{if(!t&&!e)throw new Error("Invalid arguments.");return function(t,e,i){let r=!1;const n=t.length;if(n<=2)return!1;for(let s=0;s0!=Zi(a.y-i)>0&&Zi(e-(i-o.y)*(o.x-a.x)/(o.y-a.y)-o.x)<0&&(r=!r)}return r}(e,t.x,t.y)},r=(t,e)=>!!(qi([t[0],t[1]],[t[2],t[3]],[e[0].x,e[0].y],[e[1].x,e[1].y])||qi([t[0],t[1]],[t[2],t[3]],[e[1].x,e[1].y],[e[2].x,e[2].y])||qi([t[0],t[1]],[t[2],t[3]],[e[2].x,e[2].y],[e[3].x,e[3].y])||qi([t[0],t[1]],[t[2],t[3]],[e[3].x,e[3].y],[e[0].x,e[0].y]));return!!(i({x:t[0].x,y:t[0].y},e)||i({x:t[1].x,y:t[1].y},e)||i({x:t[2].x,y:t[2].y},e)||i({x:t[3].x,y:t[3].y},e))||!!(i({x:e[0].x,y:e[0].y},t)||i({x:e[1].x,y:e[1].y},t)||i({x:e[2].x,y:e[2].y},t)||i({x:e[3].x,y:e[3].y},t))||!!(r([e[0].x,e[0].y,e[1].x,e[1].y],t)||r([e[1].x,e[1].y,e[2].x,e[2].y],t)||r([e[2].x,e[2].y,e[3].x,e[3].y],t)||r([e[3].x,e[3].y,e[0].x,e[0].y],t))};for(let e of o)if(e.unitType===At.IRUT_LOCALIZED_BARCODES)for(let i of e.localizedBarcodes){if(!i)continue;const e=i.location.points;e.forEach((t=>{Br._transformCoordinates(t,l,c,u,d,f,g)})),t(n,e)&&s.push(i)}if(Ps._debug&&this.cameraView){const t=this.__layer||(this.__layer=this.cameraView._createDrawingLayer(99));t.clearDrawingItems();const e=this.__styleId2||(this.__styleId2=Dr.createDrawingStyle({strokeStyle:"red"}));for(let i of o)if(i.unitType===At.IRUT_LOCALIZED_BARCODES)for(let r of i.localizedBarcodes){if(!r)continue;const i=r.location.points,n=new Di({points:i},e);t.addDrawingItems([n])}}}if(Ps._onLog&&(Ps._onLog("intersectedResults:"),Ps._onLog(s)),!s.length)return;let a;if(s.length){let t=s.filter((t=>t.possibleFormats==Fs.BF_QR_CODE||t.possibleFormats==Fs.BF_DATAMATRIX));if(t.length||(t=s.filter((t=>t.possibleFormats==Fs.BF_ONED)),t.length||(t=s)),t.length){const e=t=>{const e=t.location.points,i=(e[0].x+e[1].x+e[2].x+e[3].x)/4,r=(e[0].y+e[1].y+e[2].y+e[3].y)/4;return(i-f/2)*(i-f/2)+(r-g/2)*(r-g/2)};a=t[0];let i=e(a);if(1!=t.length)for(let r=1;r1.1*a.confidence||t[r].confidence>.9*a.confidence&&ni&&s>i&&o>i&&h>i&&m.result.moduleSize{})),Je(this,Ts,"f").autoZoomInFrameArray.filter((t=>!0===t)).length>=Je(this,Ts,"f").autoZoomInFrameLimit[1]){Je(this,Ts,"f").autoZoomInFrameArray.length=0;const i=[(.5-r)/(.5-n),(.5-r)/(.5-s),(.5-r)/(.5-o),(.5-r)/(.5-h)].filter((t=>t>0)),a=Math.min(...i,Je(this,Ts,"f").autoZoomInIdealModuleSize/m.result.moduleSize),l=this.getZoomSettings().factor;let c=Math.max(Math.pow(l*a,1/Je(this,Ts,"f").autoZoomInMaxTimes),Je(this,Ts,"f").autoZoomInMinStep);c=Math.min(c,a);let u=l*c;u=Math.max(Je(this,Ts,"f").minValue,u),u=Math.min(Je(this,Ts,"f").maxValue,u);try{await e({factor:u})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}}else if(Je(this,Ts,"f").autoZoomInFrameArray.length=0,Je(this,Ts,"f").frameArrayInIdealZoom.push(!0),Je(this,Ts,"f").frameArrayInIdealZoom.splice(0,Je(this,Ts,"f").frameArrayInIdealZoom.length-Je(this,Ts,"f").frameLimitInIdealZoom[0]),Je(this,Ts,"f").frameArrayInIdealZoom.filter((t=>!0===t)).length>=Je(this,Ts,"f").frameLimitInIdealZoom[1]&&(Je(this,Ts,"f").frameArrayInIdealZoom.length=0,Je(this,Es,"f").enhancedFocus)){const e=m.points;try{await a({mode:"manual",area:{centerPoint:{x:(e[0].x+e[2].x)/2+"px",y:(e[0].y+e[2].y)/2+"px"},width:e[2].x-e[0].x+"px",height:e[2].y-e[0].y+"px"}})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}}if(!Je(this,Es,"f").autoZoom&&Je(this,Es,"f").enhancedFocus&&(Je(this,Ts,"f").autoFocusFrameArray.push(!0),Je(this,Ts,"f").autoFocusFrameArray.splice(0,Je(this,Ts,"f").autoFocusFrameArray.length-Je(this,Ts,"f").autoFocusFrameLimit[0]),Je(this,Ts,"f").autoFocusFrameArray.filter((t=>!0===t)).length>=Je(this,Ts,"f").autoFocusFrameLimit[1])){Je(this,Ts,"f").autoFocusFrameArray.length=0;try{const t=m.points;await a({mode:"manual",area:{centerPoint:{x:(t[0].x+t[2].x)/2+"px",y:(t[0].y+t[2].y)/2+"px"},width:t[2].x-t[0].x+"px",height:t[2].y-t[0].y+"px"}})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}}else{if(Je(this,Es,"f").autoZoom){if(Je(this,Ts,"f").autoZoomInFrameArray.push(!1),Je(this,Ts,"f").autoZoomInFrameArray.splice(0,Je(this,Ts,"f").autoZoomInFrameArray.length-Je(this,Ts,"f").autoZoomInFrameLimit[0]),Je(this,Ts,"f").autoZoomOutFrameCount++,Je(this,Ts,"f").frameArrayInIdealZoom.push(!1),Je(this,Ts,"f").frameArrayInIdealZoom.splice(0,Je(this,Ts,"f").frameArrayInIdealZoom.length-Je(this,Ts,"f").frameLimitInIdealZoom[0]),Je(this,Ts,"f").autoZoomOutFrameCount>=Je(this,Ts,"f").autoZoomOutFrameLimit){Je(this,Ts,"f").autoZoomOutFrameCount=0;const i=this.getZoomSettings().factor;let r=i-Math.max((i-1)*Je(this,Ts,"f").autoZoomOutStepRate,Je(this,Ts,"f").autoZoomOutMinStep);r=Math.max(Je(this,Ts,"f").minValue,r),r=Math.min(Je(this,Ts,"f").maxValue,r);try{await e({factor:r})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}Je(this,Es,"f").enhancedFocus&&a({mode:"continuous"}).catch((()=>{}))}!Je(this,Es,"f").autoZoom&&Je(this,Es,"f").enhancedFocus&&(Je(this,Ts,"f").autoFocusFrameArray.length=0,a({mode:"continuous"}).catch((()=>{})))}}},Qe(this,Ss,new Ds(1e4),"f")}setCameraView(t){if(!(t instanceof Br))throw new TypeError("Invalid view.");if(t.disposed)throw new Error("The camera view has been disposed.");if(this.isOpen())throw new Error("It is not allowed to change camera view when the camera is open.");this.releaseCameraView(),t._singleFrameMode=this.singleFrameMode,t._onSingleFrameAcquired=this._onSingleFrameAcquired,this.videoSrc&&(this.cameraView._hideDefaultSelection=!0),Je(this,ls,"m",Is).call(this)||this.cameraManager.setVideoEl(t.getVideoElement()),this.cameraView=t,this.addListenerToView()}getCameraView(){return this.cameraView}releaseCameraView(){this.cameraView&&(this.removeListenerFromView(),this.cameraView.disposed||(this.cameraView._singleFrameMode="disabled",this.cameraView._onSingleFrameAcquired=null,this.cameraView._hideDefaultSelection=!1),this.cameraManager.releaseVideoEl(),this.cameraView=null)}addListenerToView(){if(!this.cameraView)return;if(this.cameraView.disposed)throw new Error("'cameraView' has been disposed.");const t=this.cameraView;Je(this,ls,"m",Is).call(this)||this.videoSrc||(t._innerComponent&&(this.cameraManager.tapFocusEventBoundEl=t._innerComponent),t._selCam&&t._selCam.addEventListener("change",this._onCameraSelChange),t._selRsl&&t._selRsl.addEventListener("change",this._onResolutionSelChange)),t._btnClose&&t._btnClose.addEventListener("click",this._onCloseBtnClick)}removeListenerFromView(){if(!this.cameraView||this.cameraView.disposed)return;const t=this.cameraView;this.cameraManager.tapFocusEventBoundEl=null,t._selCam&&t._selCam.removeEventListener("change",this._onCameraSelChange),t._selRsl&&t._selRsl.removeEventListener("change",this._onResolutionSelChange),t._btnClose&&t._btnClose.removeEventListener("click",this._onCloseBtnClick)}getCameraState(){return Je(this,ls,"m",Is).call(this)?Je(this,ds,"f"):new Map([["closed","closed"],["opening","opening"],["opened","open"]]).get(this.cameraManager.state)}isOpen(){return"open"===this.getCameraState()}getVideoEl(){return this.video}async open(){const t=this.cameraView;if(null==t?void 0:t.disposed)throw new Error("'cameraView' has been disposed.");t&&(t._singleFrameMode=this.singleFrameMode,Je(this,ls,"m",Is).call(this)?t._clickIptSingleFrameMode():(this.cameraManager.setVideoEl(t.getVideoElement()),t._startLoading()));let e={width:0,height:0,deviceId:""};if(Je(this,ls,"m",Is).call(this));else{try{await this.cameraManager.open()}catch(e){throw t&&t._stopLoading(),"NotFoundError"===e.name?new Error(`No camera devices were detected. Please ensure a camera is connected and recognized by your system. ${null==e?void 0:e.name}: ${null==e?void 0:e.message}`):"NotAllowedError"===e.name?new Error(`Camera access is blocked. Please check your browser settings or grant permission to use the camera. ${null==e?void 0:e.name}: ${null==e?void 0:e.message}`):e}let i,r=t.getUIElement();if(r=r.shadowRoot||r,i=r.querySelector(".dce-macro-use-mobile-native-like-ui")){let t=r.elTorchAuto=r.querySelector(".dce-mn-torch-auto"),e=r.elTorchOn=r.querySelector(".dce-mn-torch-on"),n=r.elTorchOff=r.querySelector(".dce-mn-torch-off");t&&(e.style.display=null==this.isTorchOn?"":"none"),e&&(e.style.display=1==this.isTorchOn?"":"none"),n&&(n.style.display=0==this.isTorchOn?"":"none");let s=r.elBeepOn=r.querySelector(".dce-mn-beep-on"),o=r.elBeepOff=r.querySelector(".dce-mn-beep-off");s&&(s.style.display=Ls.allowBeep?"":"none"),o&&(o.style.display=Ls.allowBeep?"none":"");let a=r.elVibrateOn=r.querySelector(".dce-mn-vibrate-on"),h=r.elVibrateOff=r.querySelector(".dce-mn-vibrate-off");a&&(a.style.display=Ls.allowVibrate?"":"none"),h&&(h.style.display=Ls.allowVibrate?"none":""),r.elResolutionBox=r.querySelector(".dce-mn-resolution-box");let l,c=r.elZoom=r.querySelector(".dce-mn-zoom");c&&(c.style.display="none",l=r.elZoomSpan=c.querySelector("span"));let u=r.elToast=r.querySelector(".dce-mn-toast"),d=r.elCameraClose=r.querySelector(".dce-mn-camera-close"),f=r.elTakePhoto=r.querySelector(".dce-mn-take-photo"),g=r.elCameraSwitch=r.querySelector(".dce-mn-camera-switch"),m=r.elCameraAndResolutionSettings=r.querySelector(".dce-mn-camera-and-resolution-settings");m&&(m.style.display="none");const p=r.dceMnFs={},_=()=>{this.turnOnTorch()};null==t||t.addEventListener("pointerdown",_);const v=()=>{this.turnOffTorch()};null==e||e.addEventListener("pointerdown",v);const y=()=>{this.turnAutoTorch()};null==n||n.addEventListener("pointerdown",y);const w=()=>{Ls.allowBeep=!Ls.allowBeep,s&&(s.style.display=Ls.allowBeep?"":"none"),o&&(o.style.display=Ls.allowBeep?"none":"")};for(let t of[o,s])null==t||t.addEventListener("pointerdown",w);const C=()=>{Ls.allowVibrate=!Ls.allowVibrate,a&&(a.style.display=Ls.allowVibrate?"":"none"),h&&(h.style.display=Ls.allowVibrate?"none":"")};for(let t of[h,a])null==t||t.addEventListener("pointerdown",C);const E=async t=>{let e,i=t.target;if(e=i.closest(".dce-mn-camera-option"))this.selectCamera(e.getAttribute("data-davice-id"));else if(e=i.closest(".dce-mn-resolution-option")){let t,i=parseInt(e.getAttribute("data-width")),r=parseInt(e.getAttribute("data-height")),n=await this.setResolution({width:i,height:r});{let e=Math.max(n.width,n.height),i=Math.min(n.width,n.height);t=i<=1080?i+"P":e<3e3?"2K":Math.round(e/1e3)+"K"}t!=e.textContent&&b(`Fallback to ${t}`)}else i.closest(".dce-mn-camera-and-resolution-settings")||(i.closest(".dce-mn-resolution-box")?m&&(m.style.display=m.style.display?"":"none"):m&&""===m.style.display&&(m.style.display="none"))};r.addEventListener("click",E);let T=null;p.funcInfoZoomChange=(t,e=3e3)=>{c&&l&&(l.textContent=t.toFixed(1),c.style.display="",null!=T&&(clearTimeout(T),T=null),T=setTimeout((()=>{c.style.display="none",T=null}),e))};let S=null,b=p.funcShowToast=(t,e=3e3)=>{u&&(u.textContent=t,u.style.display="",null!=S&&(clearTimeout(S),S=null),S=setTimeout((()=>{u.style.display="none",S=null}),e))};const I=()=>{this.close()};null==d||d.addEventListener("click",I);const x=()=>{};null==f||f.addEventListener("pointerdown",x);const A=()=>{var t,e;let i,r=this.getVideoSettings(),n=r.video.facingMode,s=null===(e=null===(t=this.cameraManager.getCamera())||void 0===t?void 0:t.label)||void 0===e?void 0:e.toLowerCase(),o=null==s?void 0:s.indexOf("front");-1===o&&(o=null==s?void 0:s.indexOf("前"));let a=null==s?void 0:s.indexOf("back");-1===a&&(a=null==s?void 0:s.indexOf("后")),"number"==typeof o&&-1!==o?i=!0:"number"==typeof a&&-1!==a&&(i=!1),void 0===i&&(i="user"===((null==n?void 0:n.ideal)||(null==n?void 0:n.exact)||n)),r.video.facingMode={ideal:i?"environment":"user"},delete r.video.deviceId,this.updateVideoSettings(r)};null==g||g.addEventListener("pointerdown",A);let O=-1/0,R=1;const D=t=>{let e=Date.now();e-O>1e3&&(R=this.getZoomSettings().factor),R-=t.deltaY/200,R>20&&(R=20),R<1&&(R=1),this.setZoom({factor:R}),O=e};i.addEventListener("wheel",D);const L=new Map;let M=!1;const F=async t=>{var e;for(t.touches.length>=2&&"touchmove"==t.type&&t.preventDefault();t.changedTouches.length>1&&2==t.touches.length;){let i=t.touches[0],r=t.touches[1],n=L.get(i.identifier),s=L.get(r.identifier);if(!n||!s)break;let o=Math.pow(Math.pow(n.x-s.x,2)+Math.pow(n.y-s.y,2),.5),a=Math.pow(Math.pow(i.clientX-r.clientX,2)+Math.pow(i.clientY-r.clientY,2),.5),h=Date.now();if(M||h-O<100)return;h-O>1e3&&(R=this.getZoomSettings().factor),R*=a/o,R>20&&(R=20),R<1&&(R=1);let l=!1;"safari"==(null===(e=null==qe?void 0:qe.browser)||void 0===e?void 0:e.toLocaleLowerCase())&&(a/o>1&&R<2?(R=2,l=!0):a/o<1&&R<2&&(R=1,l=!0)),M=!0,l&&b("zooming..."),await this.setZoom({factor:R}),l&&(u.textContent=""),M=!1,O=Date.now();break}L.clear();for(let e of t.touches)L.set(e.identifier,{x:e.clientX,y:e.clientY})};r.addEventListener("touchstart",F),r.addEventListener("touchmove",F),r.addEventListener("touchend",F),r.addEventListener("touchcancel",F),p.unbind=()=>{null==t||t.removeEventListener("pointerdown",_),null==e||e.removeEventListener("pointerdown",v),null==n||n.removeEventListener("pointerdown",y);for(let t of[o,s])null==t||t.removeEventListener("pointerdown",w);for(let t of[h,a])null==t||t.removeEventListener("pointerdown",C);r.removeEventListener("click",E),null==d||d.removeEventListener("click",I),null==f||f.removeEventListener("pointerdown",x),null==g||g.removeEventListener("pointerdown",A),i.removeEventListener("wheel",D),r.removeEventListener("touchstart",F),r.removeEventListener("touchmove",F),r.removeEventListener("touchend",F),r.removeEventListener("touchcancel",F),delete r.dceMnFs,i.style.display="none"},i.style.display="",t&&null==this.isTorchOn&&setTimeout((()=>{this.turnAutoTorch(1e3)}),0)}this.isTorchOn&&this.turnOnTorch().catch((()=>{}));const n=this.getResolution();e.width=n.width,e.height=n.height,e.deviceId=this.getSelectedCamera().deviceId}return Qe(this,ds,"open","f"),t&&(t._innerComponent.style.display="",Je(this,ls,"m",Is).call(this)||(t._stopLoading(),t._renderCamerasInfo(this.getSelectedCamera(),this.cameraManager._arrCameras),t._renderResolutionInfo({width:e.width,height:e.height}),t.eventHandler.fire("content:updated",null,{async:!1}),t.eventHandler.fire("videoEl:resized",null,{async:!1}))),Je(this,fs,"f").fire("opened",null,{target:this,async:!1}),e}close(){var t;const e=this.cameraView;if(null==e?void 0:e.disposed)throw new Error("'cameraView' has been disposed.");if(this.stopFetching(),this.clearBuffer(),Je(this,ls,"m",Is).call(this));else{this.cameraManager.close();let i=e.getUIElement();i=i.shadowRoot||i,i.querySelector(".dce-macro-use-mobile-native-like-ui")&&(null===(t=i.dceMnFs)||void 0===t||t.unbind())}Qe(this,ds,"closed","f"),Je(this,Ss,"f").stopCharging(),e&&(e._innerComponent.style.display="none",Je(this,ls,"m",Is).call(this)&&e._innerComponent.removeElement("content"),e._stopLoading()),Je(this,fs,"f").fire("closed",null,{target:this,async:!1})}pause(){if(Je(this,ls,"m",Is).call(this))throw new Error("'pause()' is invalid in 'singleFrameMode'.");this.cameraManager.pause()}isPaused(){var t;return!Je(this,ls,"m",Is).call(this)&&!0===(null===(t=this.video)||void 0===t?void 0:t.paused)}async resume(){if(Je(this,ls,"m",Is).call(this))throw new Error("'resume()' is invalid in 'singleFrameMode'.");await this.cameraManager.resume()}async selectCamera(t){if(!t)throw new Error("Invalid value.");let e;e="string"==typeof t?t:t.deviceId,await this.cameraManager.setCamera(e),this.isTorchOn=!1;const i=this.getResolution(),r=this.cameraView;return r&&!r.disposed&&(r._stopLoading(),r._renderCamerasInfo(this.getSelectedCamera(),this.cameraManager._arrCameras),r._renderResolutionInfo({width:i.width,height:i.height})),{width:i.width,height:i.height,deviceId:this.getSelectedCamera().deviceId}}getSelectedCamera(){return this.cameraManager.getCamera()}async getAllCameras(){return this.cameraManager.getCameras()}async setResolution(t){await this.cameraManager.setResolution(t.width,t.height),this.isTorchOn&&this.turnOnTorch().catch((()=>{}));const e=this.getResolution(),i=this.cameraView;return i&&!i.disposed&&(i._stopLoading(),i._renderResolutionInfo({width:e.width,height:e.height})),{width:e.width,height:e.height,deviceId:this.getSelectedCamera().deviceId}}getResolution(){return this.cameraManager.getResolution()}getAvailableResolutions(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getResolutions()}_on(t,e){["opened","closed","singleframeacquired","frameaddedtobuffer"].includes(t.toLowerCase())?Je(this,fs,"f").on(t,e):this.cameraManager.on(t,e)}_off(t,e){["opened","closed","singleframeacquired","frameaddedtobuffer"].includes(t.toLowerCase())?Je(this,fs,"f").off(t,e):this.cameraManager.off(t,e)}on(t,e){const i=t.toLowerCase(),r=new Map([["cameraopen","opened"],["cameraclose","closed"],["camerachange","camera:changed"],["resolutionchange","resolution:changed"],["played","played"],["singleframeacquired","singleFrameAcquired"],["frameaddedtobuffer","frameAddedToBuffer"]]).get(i);if(!r)throw new Error("Invalid event.");this._on(r,e)}off(t,e){const i=t.toLowerCase(),r=new Map([["cameraopen","opened"],["cameraclose","closed"],["camerachange","camera:changed"],["resolutionchange","resolution:changed"],["played","played"],["singleframeacquired","singleFrameAcquired"],["frameaddedtobuffer","frameAddedToBuffer"]]).get(i);if(!r)throw new Error("Invalid event.");this._off(r,e)}getVideoSettings(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getMediaStreamConstraints()}async updateVideoSettings(t){var e;await(null===(e=this.cameraManager)||void 0===e?void 0:e.setMediaStreamConstraints(t,!0))}getCapabilities(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getCameraCapabilities()}getCameraSettings(){return this.cameraManager.getCameraSettings()}async turnOnTorch(){var t,e;if(Je(this,ls,"m",Is).call(this))throw new Error("'turnOnTorch()' is invalid in 'singleFrameMode'.");try{await(null===(t=this.cameraManager)||void 0===t?void 0:t.turnOnTorch())}catch(t){let i=this.cameraView.getUIElement();throw i=i.shadowRoot||i,null===(e=null==i?void 0:i.dceMnFs)||void 0===e||e.funcShowToast("Torch Not Supported"),t}this.isTorchOn=!0;let i=this.cameraView.getUIElement();i=i.shadowRoot||i,i.elTorchAuto&&(i.elTorchAuto.style.display="none"),i.elTorchOn&&(i.elTorchOn.style.display=""),i.elTorchOff&&(i.elTorchOff.style.display="none")}async turnOffTorch(){var t;if(Je(this,ls,"m",Is).call(this))throw new Error("'turnOffTorch()' is invalid in 'singleFrameMode'.");await(null===(t=this.cameraManager)||void 0===t?void 0:t.turnOffTorch()),this.isTorchOn=!1;let e=this.cameraView.getUIElement();e=e.shadowRoot||e,e.elTorchAuto&&(e.elTorchAuto.style.display="none"),e.elTorchOn&&(e.elTorchOn.style.display="none"),e.elTorchOff&&(e.elTorchOff.style.display="")}async turnAutoTorch(t=250){if(null!=this._taskid4AutoTorch){if(!(t{var t,n,s;if(this.disposed||e||null!=this.isTorchOn||!this.isOpen())return clearInterval(this._taskid4AutoTorch),void(this._taskid4AutoTorch=null);if(this.isPaused())return;if(++r>10&&this._delay4AutoTorch<1e3)return clearInterval(this._taskid4AutoTorch),this._taskid4AutoTorch=null,void this.turnAutoTorch(1e3);let o;try{o=this.fetchImage()}catch(t){}if(!o||!o.width||!o.height)return;let h=0;if(a.IPF_GRAYSCALED===o.format){for(let t=0;t=this.maxDarkCount4AutoTroch){null===(t=Ps._onLog)||void 0===t||t.call(Ps,`darkCount ${i}`);try{await this.turnOnTorch(),this.isTorchOn=!0;let t=this.cameraView.getUIElement();t=t.shadowRoot||t,null===(n=null==t?void 0:t.dceMnFs)||void 0===n||n.funcShowToast("Torch Auto On")}catch(t){console.warn(t),e=!0;let i=this.cameraView.getUIElement();i=i.shadowRoot||i,null===(s=null==i?void 0:i.dceMnFs)||void 0===s||s.funcShowToast("Torch Not Supported")}}}else i=0};this._taskid4AutoTorch=setInterval(n,t),this.isTorchOn=void 0,n();let s=this.cameraView.getUIElement();s=s.shadowRoot||s,s.elTorchAuto&&(s.elTorchAuto.style.display=""),s.elTorchOn&&(s.elTorchOn.style.display="none"),s.elTorchOff&&(s.elTorchOff.style.display="none")}async setColorTemperature(t){if(Je(this,ls,"m",Is).call(this))throw new Error("'setColorTemperature()' is invalid in 'singleFrameMode'.");await this.cameraManager.setColorTemperature(t,!0)}getColorTemperature(){return this.cameraManager.getColorTemperature()}async setExposureCompensation(t){var e;if(Je(this,ls,"m",Is).call(this))throw new Error("'setExposureCompensation()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setExposureCompensation(t,!0))}getExposureCompensation(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getExposureCompensation()}async _setZoom(t){var e,i,r;if(Je(this,ls,"m",Is).call(this))throw new Error("'setZoom()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setZoom(t));{let e=null===(i=this.cameraView)||void 0===i?void 0:i.getUIElement();e=(null==e?void 0:e.shadowRoot)||e,null===(r=null==e?void 0:e.dceMnFs)||void 0===r||r.funcInfoZoomChange(t.factor)}}async setZoom(t){await this._setZoom(t)}getZoomSettings(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getZoom()}async resetZoom(){var t;if(Je(this,ls,"m",Is).call(this))throw new Error("'resetZoom()' is invalid in 'singleFrameMode'.");await(null===(t=this.cameraManager)||void 0===t?void 0:t.resetZoom())}async setFrameRate(t){var e;if(Je(this,ls,"m",Is).call(this))throw new Error("'setFrameRate()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setFrameRate(t,!0))}getFrameRate(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getFrameRate()}async setFocus(t){var e;if(Je(this,ls,"m",Is).call(this))throw new Error("'setFocus()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setFocus(t,!0))}getFocusSettings(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getFocus()}setAutoZoomRange(t){Je(this,Ts,"f").minValue=t.min,Je(this,Ts,"f").maxValue=t.max}getAutoZoomRange(){return{min:Je(this,Ts,"f").minValue,max:Je(this,Ts,"f").maxValue}}async enableEnhancedFeatures(t){var e,i;if(!(null===(i=null===(e=gt.license)||void 0===e?void 0:e.LicenseManager)||void 0===i?void 0:i.bPassValidation))throw new Error("License is not verified, or license is invalid.");if(0!==vt.bSupportDce4Module)throw new Error("Please set a license containing the DCE module.");t&li.EF_ENHANCED_FOCUS&&(Je(this,Es,"f").enhancedFocus=!0),t&li.EF_AUTO_ZOOM&&(Je(this,Es,"f").autoZoom=!0),t&li.EF_TAP_TO_FOCUS&&(Je(this,Es,"f").tapToFocus=!0,this.cameraManager.enableTapToFocus())}disableEnhancedFeatures(t){t&li.EF_ENHANCED_FOCUS&&(Je(this,Es,"f").enhancedFocus=!1,this.setFocus({mode:"continuous"}).catch((()=>{}))),t&li.EF_AUTO_ZOOM&&(Je(this,Es,"f").autoZoom=!1,this.resetZoom().catch((()=>{}))),t&li.EF_TAP_TO_FOCUS&&(Je(this,Es,"f").tapToFocus=!1,this.cameraManager.disableTapToFocus()),Je(this,ls,"m",As).call(this)&&Je(this,ls,"m",xs).call(this)||Je(this,Ss,"f").stopCharging()}_setScanRegion(t){if(null!=t&&!E(t)&&!A(t))throw TypeError("Invalid 'region'.");Qe(this,vs,t?JSON.parse(JSON.stringify(t)):null,"f"),this.cameraView&&!this.cameraView.disposed&&this.cameraView.setScanRegion(t)}setScanRegion(t){this._setScanRegion(t),this.cameraView&&!this.cameraView.disposed&&(null===t?this.cameraView.setScanRegionMaskVisible(!1):this.cameraView.setScanRegionMaskVisible(!0))}getScanRegion(){return JSON.parse(JSON.stringify(Je(this,vs,"f")))}setErrorListener(t){if(!t)throw new TypeError("Invalid 'listener'");Qe(this,_s,t,"f")}hasNextImageToFetch(){return!("open"!==this.getCameraState()||!this.cameraManager.isVideoLoaded()||Je(this,ls,"m",Is).call(this))}startFetching(){if(Je(this,ls,"m",Is).call(this))throw Error("'startFetching()' is unavailable in 'singleFrameMode'.");Je(this,ws,"f")||(Qe(this,ws,!0,"f"),Je(this,ls,"m",Os).call(this))}stopFetching(){Je(this,ws,"f")&&(Ps._onLog&&Ps._onLog("DCE: stop fetching loop: "+Date.now()),Je(this,Cs,"f")&&clearTimeout(Je(this,Cs,"f")),Qe(this,ws,!1,"f"))}fetchImage(){if(Je(this,ls,"m",Is).call(this))throw new Error("'fetchImage()' is unavailable in 'singleFrameMode'.");if(!this.video)throw new Error("The video element does not exist.");if(4!==this.video.readyState)throw new Error("The video is not loaded.");const t=this.getResolution();if(!(null==t?void 0:t.width)||!(null==t?void 0:t.height))throw new Error("The video is not loaded.");let e;if(e=Wi.convert(Je(this,vs,"f"),t.width,t.height),e||(e={x:0,y:0,width:t.width,height:t.height}),e.x>t.width||e.y>t.height)throw new Error("Invalid scan region.");e.x+e.width>t.width&&(e.width=t.width-e.x),e.y+e.height>t.height&&(e.height=t.height-e.y);const i={sx:e.x,sy:e.y,sWidth:e.width,sHeight:e.height,dWidth:e.width,dHeight:e.height},r=Math.max(i.dWidth,i.dHeight);if(this.canvasSizeLimit&&r>this.canvasSizeLimit){const t=this.canvasSizeLimit/r;i.dWidth>i.dHeight?(i.dWidth=this.canvasSizeLimit,i.dHeight=Math.round(i.dHeight*t)):(i.dWidth=Math.round(i.dWidth*t),i.dHeight=this.canvasSizeLimit)}const n=this.cameraManager.getFrameData({position:i,pixelFormat:this.getPixelFormat()===a.IPF_GRAYSCALED?qr.GREY:qr.RGBA});if(!n)return null;let s;s=n.pixelFormat===qr.GREY?n.width:4*n.width;let o=!0;return 0===i.sx&&0===i.sy&&i.sWidth===t.width&&i.sHeight===t.height&&(o=!1),{bytes:n.data,width:n.width,height:n.height,stride:s,format:Ms.get(n.pixelFormat),tag:{imageId:this._imageId==Number.MAX_VALUE?this._imageId=0:++this._imageId,type:St.ITT_VIDEO_FRAME,isCropped:o,cropRegion:{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height,isMeasuredInPercentage:!1},originalWidth:t.width,originalHeight:t.height,currentWidth:n.width,currentHeight:n.height,timeSpent:n.timeSpent,timeStamp:n.timeStamp},toCanvas:Je(this,ps,"f"),isDCEFrame:!0}}setImageFetchInterval(t){this.fetchInterval=t,Je(this,ws,"f")&&(Je(this,Cs,"f")&&clearTimeout(Je(this,Cs,"f")),Qe(this,Cs,setTimeout((()=>{this.disposed||Je(this,ls,"m",Os).call(this)}),t),"f"))}getImageFetchInterval(){return this.fetchInterval}setPixelFormat(t){Qe(this,ys,t,"f")}getPixelFormat(){return Je(this,ys,"f")}takePhoto(t){if(!this.isOpen())throw new Error("Not open.");if(Je(this,ls,"m",Is).call(this))throw new Error("'takePhoto()' is unavailable in 'singleFrameMode'.");const e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("accept",".jpg,.jpeg,.icon,.gif,.svg,.webp,.png,.bmp"),e.setAttribute("capture",""),e.style.position="absolute",e.style.top="-9999px",e.style.backgroundColor="transparent",e.style.color="transparent",e.addEventListener("click",(()=>{const t=this.isOpen();this.close(),window.addEventListener("focus",(()=>{t&&this.open(),e.remove()}),{once:!0})})),e.addEventListener("change",(async()=>{const i=e.files[0],r=await(async t=>{let e=null,i=null;if("undefined"!=typeof createImageBitmap)try{if(e=await createImageBitmap(t),e)return e}catch(t){}var r;return e||(i=await(r=t,new Promise(((t,e)=>{let i=URL.createObjectURL(r),n=new Image;n.src=i,n.onload=()=>{URL.revokeObjectURL(n.src),t(n)},n.onerror=t=>{e(new Error("Can't convert blob to image : "+(t instanceof Event?t.type:t)))}})))),i})(i),n=r instanceof HTMLImageElement?r.naturalWidth:r.width,s=r instanceof HTMLImageElement?r.naturalHeight:r.height;let o=Wi.convert(Je(this,vs,"f"),n,s);o||(o={x:0,y:0,width:n,height:s});const a=Je(this,ms,"f").call(this,r,n,s,o);t&&t(a)})),document.body.appendChild(e),e.click()}convertToPageCoordinates(t){const e=Je(this,ls,"m",Rs).call(this,t);return{x:e.pageX,y:e.pageY}}convertToClientCoordinates(t){const e=Je(this,ls,"m",Rs).call(this,t);return{x:e.clientX,y:e.clientY}}convertToScanRegionCoordinates(t){if(!Je(this,vs,"f"))return JSON.parse(JSON.stringify(t));let e,i,r=Je(this,vs,"f").left||Je(this,vs,"f").x||0,n=Je(this,vs,"f").top||Je(this,vs,"f").y||0;if(!Je(this,vs,"f").isMeasuredInPercentage)return{x:t.x-r,y:t.y-n};if(!this.cameraView)throw new Error("Camera view is not set.");if(this.cameraView.disposed)throw new Error("'cameraView' has been disposed.");if(!this.isOpen())throw new Error("Not open.");if(!Je(this,ls,"m",Is).call(this)&&!this.cameraManager.isVideoLoaded())throw new Error("Video is not loaded.");if(Je(this,ls,"m",Is).call(this)&&!this.cameraView._cvsSingleFrameMode)throw new Error("No image is selected.");if(Je(this,ls,"m",Is).call(this)){const t=this.cameraView._innerComponent.getElement("content");e=t.width,i=t.height}else{const t=this.getVideoEl();e=t.videoWidth,i=t.videoHeight}return{x:t.x-Math.round(r*e/100),y:t.y-Math.round(n*i/100)}}dispose(){this.close(),this.cameraManager.dispose(),this.releaseCameraView(),Qe(this,bs,!0,"f")}}var ks,Bs,Ns,js,Us,Vs,Gs,Ws;cs=Ps,ds=new WeakMap,fs=new WeakMap,gs=new WeakMap,ms=new WeakMap,ps=new WeakMap,_s=new WeakMap,vs=new WeakMap,ys=new WeakMap,ws=new WeakMap,Cs=new WeakMap,Es=new WeakMap,Ts=new WeakMap,Ss=new WeakMap,bs=new WeakMap,ls=new WeakSet,Is=function(){return"disabled"!==this.singleFrameMode},xs=function(){return!this.videoSrc&&"opened"===this.cameraManager.state},As=function(){for(let t in Je(this,Es,"f"))if(1==Je(this,Es,"f")[t])return!0;return!1},Os=function t(){if(this.disposed)return;if("open"!==this.getCameraState()||!Je(this,ws,"f"))return Je(this,Cs,"f")&&clearTimeout(Je(this,Cs,"f")),void Qe(this,Cs,setTimeout((()=>{this.disposed||Je(this,ls,"m",t).call(this)}),this.fetchInterval),"f");const e=()=>{var t;let e;Ps._onLog&&Ps._onLog("DCE: start fetching a frame into buffer: "+Date.now());try{e=this.fetchImage()}catch(e){const i=e.message||e;if("The video is not loaded."===i)return;if(null===(t=Je(this,_s,"f"))||void 0===t?void 0:t.onErrorReceived)return void setTimeout((()=>{var t;null===(t=Je(this,_s,"f"))||void 0===t||t.onErrorReceived(Ct.EC_IMAGE_READ_FAILED,i)}),0);console.warn(e)}e?(this.addImageToBuffer(e),Ps._onLog&&Ps._onLog("DCE: finish fetching a frame into buffer: "+Date.now()),Je(this,fs,"f").fire("frameAddedToBuffer",null,{async:!1})):Ps._onLog&&Ps._onLog("DCE: get a invalid frame, abandon it: "+Date.now())};if(this.getImageCount()>=this.getMaxImageCount())switch(this.getBufferOverflowProtectionMode()){case s.BOPM_BLOCK:break;case s.BOPM_UPDATE:e()}else e();Je(this,Cs,"f")&&clearTimeout(Je(this,Cs,"f")),Qe(this,Cs,setTimeout((()=>{this.disposed||Je(this,ls,"m",t).call(this)}),this.fetchInterval),"f")},Rs=function(t){if(!this.cameraView)throw new Error("Camera view is not set.");if(this.cameraView.disposed)throw new Error("'cameraView' has been disposed.");if(!this.isOpen())throw new Error("Not open.");if(!Je(this,ls,"m",Is).call(this)&&!this.cameraManager.isVideoLoaded())throw new Error("Video is not loaded.");if(Je(this,ls,"m",Is).call(this)&&!this.cameraView._cvsSingleFrameMode)throw new Error("No image is selected.");const e=this.cameraView._innerComponent.getBoundingClientRect(),i=e.left,r=e.top,n=i+window.scrollX,s=r+window.scrollY,{width:o,height:a}=this.cameraView._innerComponent.getBoundingClientRect();if(o<=0||a<=0)throw new Error("Unable to get content dimensions. Camera view may not be rendered on the page.");let h,l,c;if(Je(this,ls,"m",Is).call(this)){const t=this.cameraView._innerComponent.getElement("content");h=t.width,l=t.height,c="contain"}else{const t=this.getVideoEl();h=t.videoWidth,l=t.videoHeight,c=this.cameraView.getVideoFit()}const u=o/a,d=h/l;let f,g,m,p,_=1;if("contain"===c)u{var e;if(!this.isUseMagnifier)return;if(Je(this,js,"f")||Qe(this,js,new Ys,"f"),!Je(this,js,"f").magnifierCanvas)return;document.body.contains(Je(this,js,"f").magnifierCanvas)||(Je(this,js,"f").magnifierCanvas.style.position="fixed",Je(this,js,"f").magnifierCanvas.style.boxSizing="content-box",Je(this,js,"f").magnifierCanvas.style.border="2px solid #FFFFFF",document.body.append(Je(this,js,"f").magnifierCanvas));const i=this._innerComponent.getElement("content");if(!i)return;if(t.pointer.x<0||t.pointer.x>i.width||t.pointer.y<0||t.pointer.y>i.height)return void Je(this,Vs,"f").call(this);const r=null===(e=this._drawingLayerManager._getFabricCanvas())||void 0===e?void 0:e.lowerCanvasEl;if(!r)return;const n=Math.max(i.clientWidth/5/1.5,i.clientHeight/4/1.5),s=1.5*n,o=[{image:i,width:i.width,height:i.height},{image:r,width:r.width,height:r.height}];Je(this,js,"f").update(s,t.pointer,n,o);{let e=0,i=0;t.e instanceof MouseEvent?(e=t.e.clientX,i=t.e.clientY):t.e instanceof TouchEvent&&t.e.changedTouches.length&&(e=t.e.changedTouches[0].clientX,i=t.e.changedTouches[0].clientY),e<1.5*s&&i<1.5*s?(Je(this,js,"f").magnifierCanvas.style.left="auto",Je(this,js,"f").magnifierCanvas.style.top="0",Je(this,js,"f").magnifierCanvas.style.right="0"):(Je(this,js,"f").magnifierCanvas.style.left="0",Je(this,js,"f").magnifierCanvas.style.top="0",Je(this,js,"f").magnifierCanvas.style.right="auto")}Je(this,js,"f").show()})),Vs.set(this,(()=>{Je(this,js,"f")&&Je(this,js,"f").hide()})),Gs.set(this,!1)}_setUIElement(t){this.UIElement=t,this._unbindUI(),this._bindUI()}async setUIElement(t){let e;if("string"==typeof t){let i=await Ki(t);e=document.createElement("div"),Object.assign(e.style,{width:"100%",height:"100%"}),e.attachShadow({mode:"open"}).appendChild(i)}else e=t;this._setUIElement(e)}getUIElement(){return this.UIElement}_bindUI(){if(!this.UIElement)throw new Error("Need to set 'UIElement'.");if(this._innerComponent)return;const t=this.UIElement;let e=t.classList.contains(this.containerClassName)?t:t.querySelector(`.${this.containerClassName}`);e||(e=document.createElement("div"),e.style.width="100%",e.style.height="100%",e.className=this.containerClassName,t.append(e)),this._innerComponent=document.createElement("dce-component"),e.appendChild(this._innerComponent)}_unbindUI(){var t,e,i;null===(t=this._drawingLayerManager)||void 0===t||t.clearDrawingLayers(),null===(e=this._innerComponent)||void 0===e||e.removeElement("drawing-layer"),this._layerBaseCvs=null,null===(i=this._innerComponent)||void 0===i||i.remove(),this._innerComponent=null}setImage(t,e,i){if(!this._innerComponent)throw new Error("Need to set 'UIElement'.");let r=this._innerComponent.getElement("content");r||(r=document.createElement("canvas"),r.style.objectFit="contain",this._innerComponent.setElement("content",r)),r.width===e&&r.height===i||(r.width=e,r.height=i);const n=r.getContext("2d");n.clearRect(0,0,r.width,r.height),t instanceof Uint8Array||t instanceof Uint8ClampedArray?(t instanceof Uint8Array&&(t=new Uint8ClampedArray(t.buffer)),n.putImageData(new ImageData(t,e,i),0,0)):(t instanceof HTMLCanvasElement||t instanceof HTMLImageElement)&&n.drawImage(t,0,0)}getImage(){return this._innerComponent.getElement("content")}clearImage(){if(!this._innerComponent)return;let t=this._innerComponent.getElement("content");t&&t.getContext("2d").clearRect(0,0,t.width,t.height)}removeImage(){this._innerComponent&&this._innerComponent.removeElement("content")}setOriginalImage(t){if(C(t)){Qe(this,Ns,t,"f");const{width:e,height:i,bytes:r,format:n}=Object.assign({},t);let s;if(n===a.IPF_GRAYSCALED){s=new Uint8ClampedArray(e*i*4);for(let t=0;t{if(!zs){if(!Xs&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),qs=t=>{if(null==t&&(t="./"),Xs||zs);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t};vt.engineResourcePaths.dbr={version:"10.4.31",path:Zs,isInternal:!0},mt.dbr={js:!1,wasm:!0,deps:["license","dip"]},gt.dbr={};const Ks="1.4.21";"string"!=typeof vt.engineResourcePaths.std&&D(vt.engineResourcePaths.std.version,Ks)<0&&(vt.engineResourcePaths.std={version:Ks,path:qs(Zs+`../../dynamsoft-capture-vision-std@${Ks}/dist/`),isInternal:!0});const Js="2.4.31";(!vt.engineResourcePaths.dip||"string"!=typeof vt.engineResourcePaths.dip&&D(vt.engineResourcePaths.dip.version,Js)<0)&&(vt.engineResourcePaths.dip={version:Js,path:qs(Zs+`../../dynamsoft-image-processing@${Js}/dist/`),isInternal:!0});let Qs=class{static getVersion(){const t=ft.dbr&&ft.dbr.wasm;return`10.4.31(Worker: ${ft.dbr&&ft.dbr.worker||"Not Loaded"}, Wasm: ${t||"Not Loaded"})`}};const $s={BF_NULL:BigInt(0),BF_ALL:BigInt("0xFFFFFFFEFFFFFFFF"),BF_DEFAULT:BigInt(4265345023),BF_ONED:BigInt(3147775),BF_GS1_DATABAR:BigInt(260096),BF_CODE_39:BigInt(1),BF_CODE_128:BigInt(2),BF_CODE_93:BigInt(4),BF_CODABAR:BigInt(8),BF_ITF:BigInt(16),BF_EAN_13:BigInt(32),BF_EAN_8:BigInt(64),BF_UPC_A:BigInt(128),BF_UPC_E:BigInt(256),BF_INDUSTRIAL_25:BigInt(512),BF_CODE_39_EXTENDED:BigInt(1024),BF_GS1_DATABAR_OMNIDIRECTIONAL:BigInt(2048),BF_GS1_DATABAR_TRUNCATED:BigInt(4096),BF_GS1_DATABAR_STACKED:BigInt(8192),BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL:BigInt(16384),BF_GS1_DATABAR_EXPANDED:BigInt(32768),BF_GS1_DATABAR_EXPANDED_STACKED:BigInt(65536),BF_GS1_DATABAR_LIMITED:BigInt(131072),BF_PATCHCODE:BigInt(262144),BF_CODE_32:BigInt(16777216),BF_PDF417:BigInt(33554432),BF_QR_CODE:BigInt(67108864),BF_DATAMATRIX:BigInt(134217728),BF_AZTEC:BigInt(268435456),BF_MAXICODE:BigInt(536870912),BF_MICRO_QR:BigInt(1073741824),BF_MICRO_PDF417:BigInt(524288),BF_GS1_COMPOSITE:BigInt(2147483648),BF_MSI_CODE:BigInt(1048576),BF_CODE_11:BigInt(2097152),BF_TWO_DIGIT_ADD_ON:BigInt(4194304),BF_FIVE_DIGIT_ADD_ON:BigInt(8388608),BF_MATRIX_25:BigInt(68719476736),BF_POSTALCODE:BigInt(0x3f0000000000000),BF_NONSTANDARD_BARCODE:BigInt(4294967296),BF_USPSINTELLIGENTMAIL:BigInt(4503599627370496),BF_POSTNET:BigInt(9007199254740992),BF_PLANET:BigInt(0x40000000000000),BF_AUSTRALIANPOST:BigInt(0x80000000000000),BF_RM4SCC:BigInt(72057594037927940),BF_KIX:BigInt(0x200000000000000),BF_DOTCODE:BigInt(8589934592),BF_PHARMACODE_ONE_TRACK:BigInt(17179869184),BF_PHARMACODE_TWO_TRACK:BigInt(34359738368),BF_PHARMACODE:BigInt(51539607552)};var to,eo,io,ro;!function(t){t[t.EBRT_STANDARD_RESULT=0]="EBRT_STANDARD_RESULT",t[t.EBRT_CANDIDATE_RESULT=1]="EBRT_CANDIDATE_RESULT",t[t.EBRT_PARTIAL_RESULT=2]="EBRT_PARTIAL_RESULT"}(to||(to={})),function(t){t[t.QRECL_ERROR_CORRECTION_H=0]="QRECL_ERROR_CORRECTION_H",t[t.QRECL_ERROR_CORRECTION_L=1]="QRECL_ERROR_CORRECTION_L",t[t.QRECL_ERROR_CORRECTION_M=2]="QRECL_ERROR_CORRECTION_M",t[t.QRECL_ERROR_CORRECTION_Q=3]="QRECL_ERROR_CORRECTION_Q"}(eo||(eo={})),function(t){t[t.LM_AUTO=1]="LM_AUTO",t[t.LM_CONNECTED_BLOCKS=2]="LM_CONNECTED_BLOCKS",t[t.LM_STATISTICS=4]="LM_STATISTICS",t[t.LM_LINES=8]="LM_LINES",t[t.LM_SCAN_DIRECTLY=16]="LM_SCAN_DIRECTLY",t[t.LM_STATISTICS_MARKS=32]="LM_STATISTICS_MARKS",t[t.LM_STATISTICS_POSTAL_CODE=64]="LM_STATISTICS_POSTAL_CODE",t[t.LM_CENTRE=128]="LM_CENTRE",t[t.LM_ONED_FAST_SCAN=256]="LM_ONED_FAST_SCAN",t[t.LM_REV=-2147483648]="LM_REV",t[t.LM_SKIP=0]="LM_SKIP"}(io||(io={})),function(t){t[t.DM_DIRECT_BINARIZATION=1]="DM_DIRECT_BINARIZATION",t[t.DM_THRESHOLD_BINARIZATION=2]="DM_THRESHOLD_BINARIZATION",t[t.DM_GRAY_EQUALIZATION=4]="DM_GRAY_EQUALIZATION",t[t.DM_SMOOTHING=8]="DM_SMOOTHING",t[t.DM_MORPHING=16]="DM_MORPHING",t[t.DM_DEEP_ANALYSIS=32]="DM_DEEP_ANALYSIS",t[t.DM_SHARPENING=64]="DM_SHARPENING",t[t.DM_BASED_ON_LOC_BIN=128]="DM_BASED_ON_LOC_BIN",t[t.DM_SHARPENING_SMOOTHING=256]="DM_SHARPENING_SMOOTHING",t[t.DM_REV=-2147483648]="DM_REV",t[t.DM_SKIP=0]="DM_SKIP"}(ro||(ro={}));const no=async t=>{let e;await new Promise(((i,r)=>{e=new Image,e.onload=()=>i(e),e.onerror=r,e.src=URL.createObjectURL(t)}));const i=document.createElement("canvas"),r=i.getContext("2d");return i.width=e.width,i.height=e.height,r.drawImage(e,0,0),{bytes:Uint8Array.from(r.getImageData(0,0,i.width,i.height).data),width:i.width,height:i.height,stride:4*i.width,format:10}};class so{async saveToFile(t,e,i){if(!t||!e)return null;if("string"!=typeof e)throw new TypeError("FileName must be of type string.");const r=B(t);return M(r,e,i)}async drawOnImage(t,e,i,r=4294901760,n=1,s){let o;if(t instanceof Blob)o=await no(t);else if("string"==typeof t){let e=await O(t,"blob");o=await no(e)}return await new Promise(((t,a)=>{let h=at();ht[h]=async e=>{if(e.success)return s&&this.saveToFile(e.image,"test.png",s),t(e.image);{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,a(t)}},st.postMessage({type:"utility_drawOnImage",id:h,body:{dsImage:o,drawingItem:e instanceof Array?e:[e],color:r,thickness:n,type:i}})}))}}const oo="undefined"==typeof self,ao="function"==typeof importScripts,ho=(()=>{if(!ao){if(!oo&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),lo=t=>{if(null==t&&(t="./"),oo||ao);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t};vt.engineResourcePaths.utility={version:"1.4.32",path:ho,isInternal:!0},mt.utility={js:!0,wasm:!0};const co="1.4.21";"string"!=typeof vt.engineResourcePaths.std&&D(vt.engineResourcePaths.std.version,co)<0&&(vt.engineResourcePaths.std={version:co,path:lo(ho+`../../dynamsoft-capture-vision-std@${co}/dist/`),isInternal:!0});const uo="2.4.31";(!vt.engineResourcePaths.dip||"string"!=typeof vt.engineResourcePaths.dip&&D(vt.engineResourcePaths.dip.version,uo)<0)&&(vt.engineResourcePaths.dip={version:uo,path:lo(ho+`../../dynamsoft-image-processing@${uo}/dist/`),isInternal:!0});class fo{static getVersion(){return`1.4.32(Worker: ${ft.utility&&ft.utility.worker||"Not Loaded"}, Wasm: ${ft.utility&&ft.utility.wasm||"Not Loaded"})`}}function go(t,e,i,r){if("a"===i&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?r:"a"===i?r.call(t):r?r.value:e.get(t)}var mo,po,_o,vo,yo;function wo(t,e){let i=!0;for(let o=0;o1)return Math.sqrt((h-o)**2+(l-a)**2);{const t=n+u*(o-n),e=s+u*(a-s);return Math.sqrt((h-t)**2+(l-e)**2)}}function To(t){const e=[];for(let i=0;i=0&&h<=1&&l>=0&&l<=1?{x:t.x+l*n,y:t.y+l*s}:null}function Io(t){let e=0;for(let i=0;i0}function Ao(t,e){for(let i=0;i<4;i++)if(!xo(t.points[i],t.points[(i+1)%4],e))return!1;return!0}"function"==typeof SuppressedError&&SuppressedError;function Oo(t,e,i,r){const n=t.points,s=e.points;let o=8*i;o=Math.max(o,5);const a=To(n)[3],h=To(n)[1],l=To(s)[3],c=To(s)[1];let u,d=0;if(u=Math.max(Math.abs(Eo(a,e.points[0])),Math.abs(Eo(a,e.points[3]))),u>d&&(d=u),u=Math.max(Math.abs(Eo(h,e.points[1])),Math.abs(Eo(h,e.points[2]))),u>d&&(d=u),u=Math.max(Math.abs(Eo(l,t.points[0])),Math.abs(Eo(l,t.points[3]))),u>d&&(d=u),u=Math.max(Math.abs(Eo(c,t.points[1])),Math.abs(Eo(c,t.points[2]))),u>d&&(d=u),d>o)return!1;const f=So(To(n)[0]),g=So(To(n)[2]),m=So(To(s)[0]),p=So(To(s)[2]),_=Co(f,p),v=Co(m,g),y=_>v,w=Math.min(_,v),C=Co(f,g),E=Co(m,p);let T=12*i;return T=Math.max(T,5),T=Math.min(T,C),T=Math.min(T,E),!!(w{e.x+=t,e.y+=i})),e.x/=t.length,e.y/=t.length,e}isProbablySameLocationWithOffset(t,e){const i=this.item.location,r=t.location;if(i.area<=0)return!1;if(Math.abs(i.area-r.area)>.4*i.area)return!1;let n=new Array(4).fill(0),s=new Array(4).fill(0),o=0,a=0;for(let t=0;t<4;++t)n[t]=Math.round(100*(r.points[t].x-i.points[t].x))/100,o+=n[t],s[t]=Math.round(100*(r.points[t].y-i.points[t].y))/100,a+=s[t];o/=4,a/=4;for(let t=0;t<4;++t){if(Math.abs(n[t]-o)>this.strictLimit||Math.abs(o)>.8)return!1;if(Math.abs(s[t]-a)>this.strictLimit||Math.abs(a)>.8)return!1}return e.x=o,e.y=a,!0}isLocationOverlap(t,e){if(this.locationArea>e){for(let e=0;e<4;e++)if(Ao(this.location,t.points[e]))return!0;const e=this.getCenterPoint(t.points);if(Ao(this.location,e))return!0}else{for(let e=0;e<4;e++)if(Ao(t,this.location.points[e]))return!0;if(Ao(t,this.getCenterPoint(this.location.points)))return!0}return!1}isMatchedLocationWithOffset(t,e={x:0,y:0}){if(this.isOneD){const i=Object.assign({},t.location);for(let t=0;t<4;t++)i.points[t].x-=e.x,i.points[t].y-=e.y;if(!this.isLocationOverlap(i,t.locationArea))return!1;const r=[this.location.points[0],this.location.points[3]],n=[this.location.points[1],this.location.points[2]];for(let t=0;t<4;t++){const e=i.points[t],s=0===t||3===t?r:n;if(Math.abs(Eo(s,e))>this.locationThreshold)return!1}}else for(let i=0;i<4;i++){const r=t.location.points[i],n=this.location.points[i];if(!(Math.abs(n.x+e.x-r.x)=this.locationThreshold)return!1}return!0}isOverlappedLocationWithOffset(t,e,i=!0){const r=Object.assign({},t.location);for(let t=0;t<4;t++)r.points[t].x-=e.x,r.points[t].y-=e.y;if(!this.isLocationOverlap(r,t.location.area))return!1;if(i){const t=.75;return function(t,e){const i=[];for(let r=0;r<4;r++)for(let n=0;n<4;n++){const s=bo(t[r],t[(r+1)%4],e[n],e[(n+1)%4]);s&&i.push(s)}return t.forEach((t=>{wo(e,t)&&i.push(t)})),e.forEach((e=>{wo(t,e)&&i.push(e)})),Io(function(t){if(t.length<=1)return t;t.sort(((t,e)=>t.x-e.x||t.y-e.y));const e=t.shift();return t.sort(((t,i)=>Math.atan2(t.y-e.y,t.x-e.x)-Math.atan2(i.y-e.y,i.x-e.x))),[e,...t]}(i))}([...this.location.points],r.points)>this.locationArea*t}return!0}}const Do={BF_ONED:BigInt(3147775),BF_GS1_DATABAR:BigInt(260096)},Lo={barcode:2,text_line:4,detected_quad:8,normalized_image:16},Mo=t=>Object.values(Lo).includes(t)||Lo.hasOwnProperty(t),Fo=(t,e)=>"string"==typeof t?e[Lo[t]]:e[t],Po=(t,e,i)=>{"string"==typeof t?e[Lo[t]]=i:e[t]=i},ko=(t,e,i)=>{const r=[8,16].includes(i);if(!r&&t.isResultCrossVerificationEnabled(i))for(let t=0;t{Po(e,this.verificationEnabled,t)})),go(this,po,"f").forEach(((t,e)=>{Po(e,this.duplicateFilterEnabled,t)})),go(this,_o,"f").forEach(((t,e)=>{Po(e,this.duplicateForgetTime,t)})),go(this,vo,"f").forEach(((t,e)=>{Po(e,this.latestOverlappingEnabled,t)})),go(this,yo,"f").forEach(((t,e)=>{Po(e,this.maxOverlappingFrames,t)}))}enableResultCrossVerification(t,e){Mo(t)&&go(this,mo,"f").set(t,e)}isResultCrossVerificationEnabled(t){return!!Mo(t)&&Fo(t,this.verificationEnabled)}enableResultDeduplication(t,e){Mo(t)&&(e&&this.enableLatestOverlapping(t,!1),go(this,po,"f").set(t,e))}isResultDeduplicationEnabled(t){return!!Mo(t)&&Fo(t,this.duplicateFilterEnabled)}setDuplicateForgetTime(t,e){Mo(t)&&(e>18e4&&(e=18e4),e<0&&(e=0),go(this,_o,"f").set(t,e))}getDuplicateForgetTime(t){return Mo(t)?Fo(t,this.duplicateForgetTime):-1}setMaxOverlappingFrames(t,e){Mo(t)&&go(this,yo,"f").set(t,e)}getMaxOverlappingFrames(t){return Mo(t)?Fo(t,this.maxOverlappingFrames):-1}enableLatestOverlapping(t,e){Mo(t)&&(e&&this.enableResultDeduplication(t,!1),go(this,vo,"f").set(t,e))}isLatestOverlappingEnabled(t){return!!Mo(t)&&Fo(t,this.latestOverlappingEnabled)}getFilteredResultItemTypes(){let t=0;const e=[yt.CRIT_BARCODE,yt.CRIT_TEXT_LINE,yt.CRIT_DETECTED_QUAD,yt.CRIT_NORMALIZED_IMAGE];for(let i=0;i{if(1!==t.type){const e=(BigInt(t.format)&BigInt(Do.BF_ONED))!=BigInt(0)||(BigInt(t.format)&BigInt(Do.BF_GS1_DATABAR))!=BigInt(0);return new Ro(h,e?1:2,e,t)}})).filter(Boolean);if(this.overlapSet.length>0){const t=new Array(l).fill(new Array(this.overlapSet.length).fill(1));let e=0;for(;e-1!==t)).length;n>p&&(p=n,m=r,g.x=i.x,g.y=i.y)}}if(0===p){for(let e=0;e-1!=t)).length}let i=this.overlapSet.length<=3?p>=1:p>=2;if(!i&&s&&u>0){let t=0;for(let e=0;e=1:t>=3}i||(this.overlapSet=[])}if(0===this.overlapSet.length)this.stabilityCount=0,t.items.forEach(((t,e)=>{if(1!==t.type){const i=Object.assign({},t),r=(BigInt(t.format)&BigInt(Do.BF_ONED))!=BigInt(0)||(BigInt(t.format)&BigInt(Do.BF_GS1_DATABAR))!=BigInt(0),s=t.confidence5||Math.abs(g.y)>5)&&(e=!1):e=!1;for(let i=0;i0){for(let t=0;t!(t.overlapCount+this.stabilityCount<=0&&t.crossVerificationFrame<=0)))}f.sort(((t,e)=>e-t)).forEach(((e,i)=>{t.items.splice(e,1)})),d.forEach((e=>{t.items.push(Object.assign(Object.assign({},e),{overlapped:!0}))}))}}onDecodedBarcodesReceived(t){this.latestOverlappingFilter(t),ko(this,t.items,yt.CRIT_BARCODE)}onRecognizedTextLinesReceived(t){ko(this,t.items,yt.CRIT_TEXT_LINE)}onDetectedQuadsReceived(t){ko(this,t.items,yt.CRIT_DETECTED_QUAD)}onNormalizedImagesReceived(t){ko(this,t.items,yt.CRIT_NORMALIZED_IMAGE)}}mo=new WeakMap,po=new WeakMap,_o=new WeakMap,vo=new WeakMap,yo=new WeakMap,de._defaultTemplate="ReadSingleBarcode";export{Qs as BarcodeReaderModule,Ps as CameraEnhancer,Ke as CameraEnhancerModule,Br as CameraView,de as CaptureVisionRouter,Zt as CaptureVisionRouterModule,pe as CapturedResultReceiver,vt as CoreModule,bi as DrawingItem,Dr as DrawingStyleManager,$s as EnumBarcodeFormat,s as EnumBufferOverflowProtectionMode,yt as EnumCapturedResultItemType,o as EnumColourChannelUsageType,wt as EnumCornerType,xt as EnumCrossVerificationStatus,ro as EnumDeblurMode,ai as EnumDrawingItemMediaType,hi as EnumDrawingItemState,li as EnumEnhancedFeatures,Ct as EnumErrorCode,to as EnumExtendedBarcodeResultType,Et as EnumGrayscaleEnhancementMode,Tt as EnumGrayscaleTransformationMode,a as EnumImagePixelFormat,Kt as EnumImageSourceState,St as EnumImageTagType,At as EnumIntermediateResultUnitType,io as EnumLocalizationMode,bt as EnumPDFReadingMode,ve as EnumPresetTemplate,eo as EnumQRCodeErrorCorrectionLevel,It as EnumRasterDataSource,Ot as EnumRegionObjectElementType,Rt as EnumSectionType,Ls as Feedback,ji as GroupDrawingItem,Li as ImageDrawingItem,Hs as ImageEditorView,so as ImageManager,J as ImageSourceAdapter,_e as IntermediateResultReceiver,je as LicenseManager,Ve as LicenseModule,Bi as LineDrawingItem,Bo as MultiFrameResultCrossFilter,Ni as QuadDrawingItem,Ii as RectDrawingItem,Fi as TextDrawingItem,fo as UtilityModule,B as _getNorImageData,M as _saveToFile,k as _toBlob,F as _toCanvas,P as _toImage,ut as bDebug,R as checkIsLink,D as compareVersion,nt as doOrWaitAsyncDependency,at as getNextTaskID,L as handleEngineResourcePaths,ft as innerVersions,_ as isArc,v as isContour,C as isDSImageData,E as isDSRect,T as isImageTag,S as isLineSegment,p as isObject,w as isOriginalDsImageData,b as isPoint,I as isPolygon,x as isQuad,A as isRect,_t as loadWasm,it as mapAsyncDependency,gt as mapPackageRegister,ht as mapTaskCallBack,lt as onLog,O as requestResource,dt as setBDebug,ct as setOnLog,rt as waitAsyncDependency,st as worker,mt as workerAutoResources}; +const t=t=>t&&"object"==typeof t&&"function"==typeof t.then,e=(async()=>{})().constructor;let i=class extends e{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(i){let n;this._task=i,t(i)?n=i:"function"==typeof i&&(n=new e(i)),n&&(async()=>{try{const t=await n;i===this._task&&this.resolve(t)}catch(t){i===this._task&&this.reject(t)}})()}get isEmpty(){return null==this._task}constructor(e){let i,n;super(((t,e)=>{i=t,n=e})),this._s="pending",this.resolve=e=>{this.isPending&&(t(e)?this.task=e:(this._s="fulfilled",i(e)))},this.reject=t=>{this.isPending&&(this._s="rejected",n(t))},this.task=e}};function n(t,e,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(t):n?n.value:e.get(t)}function r(t,e,i,n,r){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?r.call(t,i):r?r.value=i:e.set(t,i),i}var s,o,a;"function"==typeof SuppressedError&&SuppressedError,function(t){t[t.BOPM_BLOCK=0]="BOPM_BLOCK",t[t.BOPM_UPDATE=1]="BOPM_UPDATE"}(s||(s={})),function(t){t[t.CCUT_AUTO=0]="CCUT_AUTO",t[t.CCUT_FULL_CHANNEL=1]="CCUT_FULL_CHANNEL",t[t.CCUT_Y_CHANNEL_ONLY=2]="CCUT_Y_CHANNEL_ONLY",t[t.CCUT_RGB_R_CHANNEL_ONLY=3]="CCUT_RGB_R_CHANNEL_ONLY",t[t.CCUT_RGB_G_CHANNEL_ONLY=4]="CCUT_RGB_G_CHANNEL_ONLY",t[t.CCUT_RGB_B_CHANNEL_ONLY=5]="CCUT_RGB_B_CHANNEL_ONLY"}(o||(o={})),function(t){t[t.IPF_BINARY=0]="IPF_BINARY",t[t.IPF_BINARYINVERTED=1]="IPF_BINARYINVERTED",t[t.IPF_GRAYSCALED=2]="IPF_GRAYSCALED",t[t.IPF_NV21=3]="IPF_NV21",t[t.IPF_RGB_565=4]="IPF_RGB_565",t[t.IPF_RGB_555=5]="IPF_RGB_555",t[t.IPF_RGB_888=6]="IPF_RGB_888",t[t.IPF_ARGB_8888=7]="IPF_ARGB_8888",t[t.IPF_RGB_161616=8]="IPF_RGB_161616",t[t.IPF_ARGB_16161616=9]="IPF_ARGB_16161616",t[t.IPF_ABGR_8888=10]="IPF_ABGR_8888",t[t.IPF_ABGR_16161616=11]="IPF_ABGR_16161616",t[t.IPF_BGR_888=12]="IPF_BGR_888",t[t.IPF_BINARY_8=13]="IPF_BINARY_8",t[t.IPF_NV12=14]="IPF_NV12",t[t.IPF_BINARY_8_INVERTED=15]="IPF_BINARY_8_INVERTED"}(a||(a={}));const h="undefined"==typeof self,l="function"==typeof importScripts,c=(()=>{if(!l){if(!h&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),u=t=>{if(null==t&&(t="./"),h||l);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t},d=t=>Object.prototype.toString.call(t),f=t=>Array.isArray?Array.isArray(t):"[object Array]"===d(t),g=t=>"[object Boolean]"===d(t),m=t=>"number"==typeof t&&!Number.isNaN(t),p=t=>null!==t&&"object"==typeof t&&!Array.isArray(t),_=t=>!(!p(t)||!m(t.x)||!m(t.y)||!m(t.radius)||t.radius<0||!m(t.startAngle)||!m(t.endAngle)),v=t=>!!p(t)&&!!f(t.points)&&0!=t.points.length&&!t.points.some((t=>!b(t))),y=t=>!(!p(t)||!m(t.width)||t.width<=0||!m(t.height)||t.height<=0||!m(t.stride)||t.stride<=0||!("format"in t)||"tag"in t&&!S(t.tag)),w=t=>!(!y(t)||!m(t.bytes.length)&&!m(t.bytes.ptr)),C=t=>!!y(t)&&t.bytes instanceof Uint8Array,E=t=>!(!p(t)||!m(t.left)||t.left<0||!m(t.top)||t.top<0||!m(t.right)||t.right<0||!m(t.bottom)||t.bottom<0||t.left>=t.right||t.top>=t.bottom||!g(t.isMeasuredInPercentage)),S=t=>null===t||!!p(t)&&!!m(t.imageId)&&"type"in t,T=t=>!(!p(t)||!b(t.startPoint)||!b(t.endPoint)||t.startPoint.x==t.endPoint.x&&t.startPoint.y==t.endPoint.y),b=t=>!!p(t)&&!!m(t.x)&&!!m(t.y),I=t=>!!p(t)&&!!f(t.points)&&0!=t.points.length&&!t.points.some((t=>!b(t))),x=t=>!!p(t)&&!!f(t.points)&&0!=t.points.length&&4==t.points.length&&!t.points.some((t=>!b(t))),O=t=>!(!p(t)||!m(t.x)||!m(t.y)||!m(t.width)||t.width<0||!m(t.height)||t.height<0||"isMeasuredInPercentage"in t&&!g(t.isMeasuredInPercentage)),A=async(t,e)=>await new Promise(((i,n)=>{let r=new XMLHttpRequest;r.open("GET",t,!0),r.responseType=e,r.send(),r.onloadend=async()=>{r.status<200||r.status>=300?n(new Error(t+" "+r.status)):i(r.response)},r.onerror=()=>{n(new Error("Network Error: "+r.statusText))}})),R=t=>/^(https:\/\/www\.|http:\/\/www\.|https:\/\/|http:\/\/)|^[a-zA-Z0-9]{2,}(\.[a-zA-Z0-9]{2,})(\.[a-zA-Z0-9]{2,})?/.test(t),D=(t,e)=>{let i=t.split("."),n=e.split(".");for(let t=0;t{const e={},i={std:"dynamsoft-capture-vision-std",dip:"dynamsoft-image-processing",core:"dynamsoft-core",dnn:"dynamsoft-capture-vision-dnn",license:"dynamsoft-license",utility:"dynamsoft-utility",cvr:"dynamsoft-capture-vision-router",dbr:"dynamsoft-barcode-reader",dlr:"dynamsoft-label-recognizer",ddn:"dynamsoft-document-normalizer",dcp:"dynamsoft-code-parser",dcpd:"dynamsoft-code-parser",dlrData:"dynamsoft-label-recognizer-data",dce:"dynamsoft-camera-enhancer",ddv:"dynamsoft-document-viewer"};for(let n in t){if("rootDirectory"===n)continue;let r=n,s=t[r],o=s&&"object"==typeof s&&s.path?s.path:s,a=t.rootDirectory;if(a&&!a.endsWith("/")&&(a+="/"),"object"==typeof s&&s.isInternal)a&&(o=t[r].version?`${a}${i[r]}@${t[r].version}/dist/${"ddv"===r?"engine":""}`:`${a}${i[r]}/dist/${"ddv"===r?"engine":""}`);else{const i=/^@engineRootDirectory(\/?)/;if("string"==typeof o&&(o=o.replace(i,a||"")),"object"==typeof o&&"dwt"===r){const n=t[r].resourcesPath,s=t[r].serviceInstallerLocation;e[r]={resourcesPath:n.replace(i,a||""),serviceInstallerLocation:s.replace(i,a||"")};continue}}e[r]=u(o)}return e},M=async(t,e,i)=>await new Promise((async(n,r)=>{try{const r=e.split(".");let s=r[r.length-1];const o=await k(`image/${s}`,t);r.length<=1&&(s="png");const a=new File([o],e,{type:`image/${s}`});if(i){const t=URL.createObjectURL(a),i=document.createElement("a");i.href=t,i.download=e,i.click()}return n(a)}catch(t){return r()}})),F=t=>{C(t)&&(t=B(t));const e=document.createElement("canvas");return e.width=t.width,e.height=t.height,e.getContext("2d",{willReadFrequently:!0}).putImageData(t,0,0),e},P=(t,e)=>{C(e)&&(e=B(e));const i=F(e);let n=new Image,r=i.toDataURL(t);return n.src=r,n},k=async(t,e)=>{C(e)&&(e=B(e));const i=F(e);return new Promise(((e,n)=>{i.toBlob((t=>e(t)),t)}))},B=t=>{let e,i=t.bytes;if(!(i&&i instanceof Uint8Array))throw Error("Parameter type error");if(Number(t.format)===a.IPF_BGR_888){const t=i.length/3;e=new Uint8ClampedArray(4*t);for(let n=0;n=r)break;e[o]=e[o+1]=e[o+2]=(128&n)/128*255,e[o+3]=255,n<<=1}}}else if(Number(t.format)===a.IPF_ABGR_8888){const t=i.length/4;e=new Uint8ClampedArray(i.length);for(let n=0;n=r)break;e[o]=e[o+1]=e[o+2]=128&n?0:255,e[o+3]=255,n<<=1}}}return new ImageData(e,t.width,t.height)};var N,j,U,V,G,W,Y,H;let X,z,q,Z,K,J=class t{get _isFetchingStarted(){return n(this,G,"f")}constructor(){N.add(this),j.set(this,[]),U.set(this,1),V.set(this,s.BOPM_BLOCK),G.set(this,!1),W.set(this,void 0),Y.set(this,o.CCUT_AUTO)}setErrorListener(t){}addImageToBuffer(t){var e;if(!C(t))throw new TypeError("Invalid 'image'.");if((null===(e=t.tag)||void 0===e?void 0:e.hasOwnProperty("imageId"))&&"number"==typeof t.tag.imageId&&this.hasImage(t.tag.imageId))throw new Error("Existed imageId.");if(n(this,j,"f").length>=n(this,U,"f"))switch(n(this,V,"f")){case s.BOPM_BLOCK:break;case s.BOPM_UPDATE:if(n(this,j,"f").push(t),p(n(this,W,"f"))&&m(n(this,W,"f").imageId)&&1==n(this,W,"f").keepInBuffer)for(;n(this,j,"f").length>n(this,U,"f");){const t=n(this,j,"f").findIndex((t=>{var e;return(null===(e=t.tag)||void 0===e?void 0:e.imageId)!==n(this,W,"f").imageId}));n(this,j,"f").splice(t,1)}else n(this,j,"f").splice(0,n(this,j,"f").length-n(this,U,"f"))}else n(this,j,"f").push(t)}getImage(){if(0===n(this,j,"f").length)return null;let e;if(n(this,W,"f")&&m(n(this,W,"f").imageId)){const t=n(this,N,"m",H).call(this,n(this,W,"f").imageId);if(t<0)throw new Error(`Image with id ${n(this,W,"f").imageId} doesn't exist.`);e=n(this,j,"f").slice(t,t+1)[0]}else e=n(this,j,"f").pop();if([a.IPF_RGB_565,a.IPF_RGB_555,a.IPF_RGB_888,a.IPF_ARGB_8888,a.IPF_RGB_161616,a.IPF_ARGB_16161616,a.IPF_ABGR_8888,a.IPF_ABGR_16161616,a.IPF_BGR_888].includes(e.format)){if(n(this,Y,"f")===o.CCUT_RGB_R_CHANNEL_ONLY){t._onLog&&t._onLog("only get R channel data.");const i=new Uint8Array(e.width*e.height);for(let t=0;t0!==t.length&&t.every((t=>m(t))))(t))throw new TypeError("Invalid 'imageId'.");if(void 0!==e&&!g(e))throw new TypeError("Invalid 'keepInBuffer'.");r(this,W,{imageId:t,keepInBuffer:e},"f")}_resetNextReturnedImage(){r(this,W,null,"f")}hasImage(t){return n(this,N,"m",H).call(this,t)>=0}startFetching(){r(this,G,!0,"f")}stopFetching(){r(this,G,!1,"f")}setMaxImageCount(t){if("number"!=typeof t)throw new TypeError("Invalid 'count'.");if(t<1||Math.round(t)!==t)throw new Error("Invalid 'count'.");for(r(this,U,t,"f");n(this,j,"f")&&n(this,j,"f").length>t;)n(this,j,"f").shift()}getMaxImageCount(){return n(this,U,"f")}getImageCount(){return n(this,j,"f").length}clearBuffer(){n(this,j,"f").length=0}isBufferEmpty(){return 0===n(this,j,"f").length}setBufferOverflowProtectionMode(t){r(this,V,t,"f")}getBufferOverflowProtectionMode(){return n(this,V,"f")}setColourChannelUsageType(t){r(this,Y,t,"f")}getColourChannelUsageType(){return n(this,Y,"f")}};j=new WeakMap,U=new WeakMap,V=new WeakMap,G=new WeakMap,W=new WeakMap,Y=new WeakMap,N=new WeakSet,H=function(t){if("number"!=typeof t)throw new TypeError("Invalid 'imageId'.");return n(this,j,"f").findIndex((e=>{var i;return(null===(i=e.tag)||void 0===i?void 0:i.imageId)===t}))},"undefined"!=typeof navigator&&(X=navigator,z=X.userAgent,q=X.platform,Z=X.mediaDevices),function(){if(!h){const t={Edge:{search:"Edg",verSearch:"Edg"},OPR:null,Chrome:null,Safari:{str:X.vendor,search:"Apple",verSearch:["Version","iPhone OS","CPU OS"]},Firefox:null,Explorer:{search:"MSIE",verSearch:"MSIE"}},e={HarmonyOS:null,Android:null,iPhone:null,iPad:null,Windows:{str:q,search:"Win"},Mac:{str:q},Linux:{str:q}};let i="unknownBrowser",n=0,r="unknownOS";for(let e in t){const r=t[e]||{};let s=r.str||z,o=r.search||e,a=r.verStr||z,h=r.verSearch||e;if(h instanceof Array||(h=[h]),-1!=s.indexOf(o)){i=e;for(let t of h){let e=a.indexOf(t);if(-1!=e){n=parseFloat(a.substring(e+t.length+1));break}}break}}for(let t in e){const i=e[t]||{};let n=i.str||z,s=i.search||t;if(-1!=n.indexOf(s)){r=t;break}}"Linux"==r&&-1!=z.indexOf("Windows NT")&&(r="HarmonyOS"),K={browser:i,version:n,OS:r}}h&&(K={browser:"ssr",version:0,OS:"ssr"})}();const Q="undefined"!=typeof WebAssembly&&z&&!(/Safari/.test(z)&&!/Chrome/.test(z)&&/\(.+\s11_2_([2-6]).*\)/.test(z)),$=!("undefined"==typeof Worker),tt=!(!Z||!Z.getUserMedia),et=async()=>{let t=!1;if(tt)try{(await Z.getUserMedia({video:!0})).getTracks().forEach((t=>{t.stop()})),t=!0}catch(t){}return t};"Chrome"===K.browser&&K.version>66||"Safari"===K.browser&&K.version>13||"OPR"===K.browser&&K.version>43||"Edge"===K.browser&&K.version;const it={},nt=async t=>{let e="string"==typeof t?[t]:t,n=[];for(let t of e)n.push(it[t]=it[t]||new i);await Promise.all(n)},rt=async(t,e)=>{let n,r="string"==typeof t?[t]:t,s=[];for(let t of r){let r;s.push(r=it[t]=it[t]||new i(n=n||e())),r.isEmpty&&(r.task=n=n||e())}await Promise.all(s)};let st,ot=0;const at=()=>ot++,ht={};let lt;const ct=t=>{lt=t,st&&st.postMessage({type:"setBLog",body:{value:!!t}})};let ut=!1;const dt=t=>{ut=t,st&&st.postMessage({type:"setBDebug",body:{value:!!t}})},ft={},gt={},mt={dip:{wasm:!0}},pt={std:{version:"1.4.21",path:u(c+"../../dynamsoft-capture-vision-std@1.4.21/dist/"),isInternal:!0},core:{version:"3.4.31",path:c,isInternal:!0}},_t=async t=>{let e;t instanceof Array||(t=t?[t]:[]);let n=it.core;e=!n||n.isEmpty;let r=new Map;const s=t=>{if("std"==(t=t.toLowerCase())||"core"==t)return;if(!mt[t])throw Error("The '"+t+"' module cannot be found.");let e=mt[t].deps;if(null==e?void 0:e.length)for(let t of e)s(t);let i=it[t];r.has(t)||r.set(t,!i||i.isEmpty)};for(let e of t)s(e);let o=[];e&&o.push("core"),o.push(...r.keys());const a=[...r.entries()].filter((t=>!t[1])).map((t=>t[0]));await rt(o,(async()=>{const t=[...r.entries()].filter((t=>t[1])).map((t=>t[0]));await nt(a);const n=L(pt),s={};for(let e of t)s[e]=mt[e];const o={engineResourcePaths:n,autoResources:s,names:t};let h=new i;if(e){o.needLoadCore=!0;let t=n.core+vt._workerName;t.startsWith(location.origin)||(t=await fetch(t).then((t=>t.blob())).then((t=>URL.createObjectURL(t)))),st=new Worker(t),st.onerror=t=>{let e=new Error(t.message);h.reject(e)},st.addEventListener("message",(t=>{let e=t.data?t.data:t,i=e.type,n=e.id,r=e.body;switch(i){case"log":lt&<(e.message);break;case"task":try{ht[n](r),delete ht[n]}catch(t){throw delete ht[n],t}break;case"event":try{ht[n](r)}catch(t){throw t}break;default:console.log(t)}})),o.bLog=!!lt,o.bd=ut,o.dm=location.origin.startsWith("http")?location.origin:"https://localhost"}else await nt("core");let l=ot++;ht[l]=t=>{if(t.success)Object.assign(ft,t.versions),"{}"!==JSON.stringify(t.versions)&&(vt._versions=t.versions),h.resolve(void 0);else{const e=Error(t.message);t.stack&&(e.stack=t.stack),h.reject(e)}},st.postMessage({type:"loadWasm",body:o,id:l}),await h}))};class vt{static get engineResourcePaths(){return pt}static set engineResourcePaths(t){Object.assign(pt,t)}static get bSupportDce4Module(){return this._bSupportDce4Module}static get bSupportIRTModule(){return this._bSupportIRTModule}static get versions(){return this._versions}static get _onLog(){return lt}static set _onLog(t){ct(t)}static get _bDebug(){return ut}static set _bDebug(t){dt(t)}static isModuleLoaded(t){return t=(t=t||"core").toLowerCase(),!!it[t]&&it[t].isFulfilled}static async loadWasm(t){return await _t(t)}static async detectEnvironment(){return await(async()=>({wasm:Q,worker:$,getUserMedia:tt,camera:await et(),browser:K.browser,version:K.version,OS:K.OS}))()}static async getModuleVersion(){return await new Promise(((t,e)=>{let i=at();ht[i]=async i=>{if(i.success)return t(i.versions);{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},st.postMessage({type:"getModuleVersion",id:i})}))}static getVersion(){return`3.4.31(Worker: ${ft.core&&ft.core.worker||"Not Loaded"}, Wasm: ${ft.core&&ft.core.wasm||"Not Loaded"})`}static enableLogging(){J._onLog=console.log,vt._onLog=console.log}static disableLogging(){J._onLog=null,vt._onLog=null}static async cfd(t){return await new Promise(((e,i)=>{let n=at();ht[n]=async t=>{if(t.success)return e();{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},st.postMessage({type:"cfd",id:n,body:{count:t}})}))}}var yt,wt,Ct,Et,St,Tt,bt,It,xt;vt._bSupportDce4Module=-1,vt._bSupportIRTModule=-1,vt._versions=null,vt._workerName="core.worker.js",vt.browserInfo=K,function(t){t[t.CRIT_ORIGINAL_IMAGE=1]="CRIT_ORIGINAL_IMAGE",t[t.CRIT_BARCODE=2]="CRIT_BARCODE",t[t.CRIT_TEXT_LINE=4]="CRIT_TEXT_LINE",t[t.CRIT_DETECTED_QUAD=8]="CRIT_DETECTED_QUAD",t[t.CRIT_NORMALIZED_IMAGE=16]="CRIT_NORMALIZED_IMAGE",t[t.CRIT_PARSED_RESULT=32]="CRIT_PARSED_RESULT"}(yt||(yt={})),function(t){t[t.CT_NORMAL_INTERSECTED=0]="CT_NORMAL_INTERSECTED",t[t.CT_T_INTERSECTED=1]="CT_T_INTERSECTED",t[t.CT_CROSS_INTERSECTED=2]="CT_CROSS_INTERSECTED",t[t.CT_NOT_INTERSECTED=3]="CT_NOT_INTERSECTED"}(wt||(wt={})),function(t){t[t.EC_OK=0]="EC_OK",t[t.EC_UNKNOWN=-1e4]="EC_UNKNOWN",t[t.EC_NO_MEMORY=-10001]="EC_NO_MEMORY",t[t.EC_NULL_POINTER=-10002]="EC_NULL_POINTER",t[t.EC_LICENSE_INVALID=-10003]="EC_LICENSE_INVALID",t[t.EC_LICENSE_EXPIRED=-10004]="EC_LICENSE_EXPIRED",t[t.EC_FILE_NOT_FOUND=-10005]="EC_FILE_NOT_FOUND",t[t.EC_FILE_TYPE_NOT_SUPPORTED=-10006]="EC_FILE_TYPE_NOT_SUPPORTED",t[t.EC_BPP_NOT_SUPPORTED=-10007]="EC_BPP_NOT_SUPPORTED",t[t.EC_INDEX_INVALID=-10008]="EC_INDEX_INVALID",t[t.EC_CUSTOM_REGION_INVALID=-10010]="EC_CUSTOM_REGION_INVALID",t[t.EC_IMAGE_READ_FAILED=-10012]="EC_IMAGE_READ_FAILED",t[t.EC_TIFF_READ_FAILED=-10013]="EC_TIFF_READ_FAILED",t[t.EC_DIB_BUFFER_INVALID=-10018]="EC_DIB_BUFFER_INVALID",t[t.EC_PDF_READ_FAILED=-10021]="EC_PDF_READ_FAILED",t[t.EC_PDF_DLL_MISSING=-10022]="EC_PDF_DLL_MISSING",t[t.EC_PAGE_NUMBER_INVALID=-10023]="EC_PAGE_NUMBER_INVALID",t[t.EC_CUSTOM_SIZE_INVALID=-10024]="EC_CUSTOM_SIZE_INVALID",t[t.EC_TIMEOUT=-10026]="EC_TIMEOUT",t[t.EC_JSON_PARSE_FAILED=-10030]="EC_JSON_PARSE_FAILED",t[t.EC_JSON_TYPE_INVALID=-10031]="EC_JSON_TYPE_INVALID",t[t.EC_JSON_KEY_INVALID=-10032]="EC_JSON_KEY_INVALID",t[t.EC_JSON_VALUE_INVALID=-10033]="EC_JSON_VALUE_INVALID",t[t.EC_JSON_NAME_KEY_MISSING=-10034]="EC_JSON_NAME_KEY_MISSING",t[t.EC_JSON_NAME_VALUE_DUPLICATED=-10035]="EC_JSON_NAME_VALUE_DUPLICATED",t[t.EC_TEMPLATE_NAME_INVALID=-10036]="EC_TEMPLATE_NAME_INVALID",t[t.EC_JSON_NAME_REFERENCE_INVALID=-10037]="EC_JSON_NAME_REFERENCE_INVALID",t[t.EC_PARAMETER_VALUE_INVALID=-10038]="EC_PARAMETER_VALUE_INVALID",t[t.EC_DOMAIN_NOT_MATCH=-10039]="EC_DOMAIN_NOT_MATCH",t[t.EC_RESERVED_INFO_NOT_MATCH=-10040]="EC_RESERVED_INFO_NOT_MATCH",t[t.EC_LICENSE_KEY_NOT_MATCH=-10043]="EC_LICENSE_KEY_NOT_MATCH",t[t.EC_REQUEST_FAILED=-10044]="EC_REQUEST_FAILED",t[t.EC_LICENSE_INIT_FAILED=-10045]="EC_LICENSE_INIT_FAILED",t[t.EC_SET_MODE_ARGUMENT_ERROR=-10051]="EC_SET_MODE_ARGUMENT_ERROR",t[t.EC_LICENSE_CONTENT_INVALID=-10052]="EC_LICENSE_CONTENT_INVALID",t[t.EC_LICENSE_KEY_INVALID=-10053]="EC_LICENSE_KEY_INVALID",t[t.EC_LICENSE_DEVICE_RUNS_OUT=-10054]="EC_LICENSE_DEVICE_RUNS_OUT",t[t.EC_GET_MODE_ARGUMENT_ERROR=-10055]="EC_GET_MODE_ARGUMENT_ERROR",t[t.EC_IRT_LICENSE_INVALID=-10056]="EC_IRT_LICENSE_INVALID",t[t.EC_FILE_SAVE_FAILED=-10058]="EC_FILE_SAVE_FAILED",t[t.EC_STAGE_TYPE_INVALID=-10059]="EC_STAGE_TYPE_INVALID",t[t.EC_IMAGE_ORIENTATION_INVALID=-10060]="EC_IMAGE_ORIENTATION_INVALID",t[t.EC_CONVERT_COMPLEX_TEMPLATE_ERROR=-10061]="EC_CONVERT_COMPLEX_TEMPLATE_ERROR",t[t.EC_CALL_REJECTED_WHEN_CAPTURING=-10062]="EC_CALL_REJECTED_WHEN_CAPTURING",t[t.EC_NO_IMAGE_SOURCE=-10063]="EC_NO_IMAGE_SOURCE",t[t.EC_READ_DIRECTORY_FAILED=-10064]="EC_READ_DIRECTORY_FAILED",t[t.EC_MODULE_NOT_FOUND=-10065]="EC_MODULE_NOT_FOUND",t[t.EC_MULTI_PAGES_NOT_SUPPORTED=-10066]="EC_MULTI_PAGES_NOT_SUPPORTED",t[t.EC_FILE_ALREADY_EXISTS=-10067]="EC_FILE_ALREADY_EXISTS",t[t.EC_CREATE_FILE_FAILED=-10068]="EC_CREATE_FILE_FAILED",t[t.EC_IMGAE_DATA_INVALID=-10069]="EC_IMGAE_DATA_INVALID",t[t.EC_IMAGE_SIZE_NOT_MATCH=-10070]="EC_IMAGE_SIZE_NOT_MATCH",t[t.EC_IMAGE_PIXEL_FORMAT_NOT_MATCH=-10071]="EC_IMAGE_PIXEL_FORMAT_NOT_MATCH",t[t.EC_SECTION_LEVEL_RESULT_IRREPLACEABLE=-10072]="EC_SECTION_LEVEL_RESULT_IRREPLACEABLE",t[t.EC_AXIS_DEFINITION_INCORRECT=-10073]="EC_AXIS_DEFINITION_INCORRECT",t[t.EC_RESULT_TYPE_MISMATCH_IRREPLACEABLE=-10074]="EC_RESULT_TYPE_MISMATCH_IRREPLACEABLE",t[t.EC_PDF_LIBRARY_LOAD_FAILED=-10075]="EC_PDF_LIBRARY_LOAD_FAILED",t[t.EC_NO_LICENSE=-2e4]="EC_NO_LICENSE",t[t.EC_HANDSHAKE_CODE_INVALID=-20001]="EC_HANDSHAKE_CODE_INVALID",t[t.EC_LICENSE_BUFFER_FAILED=-20002]="EC_LICENSE_BUFFER_FAILED",t[t.EC_LICENSE_SYNC_FAILED=-20003]="EC_LICENSE_SYNC_FAILED",t[t.EC_DEVICE_NOT_MATCH=-20004]="EC_DEVICE_NOT_MATCH",t[t.EC_BIND_DEVICE_FAILED=-20005]="EC_BIND_DEVICE_FAILED",t[t.EC_INSTANCE_COUNT_OVER_LIMIT=-20008]="EC_INSTANCE_COUNT_OVER_LIMIT",t[t.EC_LICENSE_INIT_SEQUENCE_FAILED=-20009]="EC_LICENSE_INIT_SEQUENCE_FAILED",t[t.EC_TRIAL_LICENSE=-20010]="EC_TRIAL_LICENSE",t[t.EC_FAILED_TO_REACH_DLS=-20200]="EC_FAILED_TO_REACH_DLS",t[t.EC_LICENSE_CACHE_USED=-20012]="EC_LICENSE_CACHE_USED",t[t.EC_BARCODE_FORMAT_INVALID=-30009]="EC_BARCODE_FORMAT_INVALID",t[t.EC_QR_LICENSE_INVALID=-30016]="EC_QR_LICENSE_INVALID",t[t.EC_1D_LICENSE_INVALID=-30017]="EC_1D_LICENSE_INVALID",t[t.EC_PDF417_LICENSE_INVALID=-30019]="EC_PDF417_LICENSE_INVALID",t[t.EC_DATAMATRIX_LICENSE_INVALID=-30020]="EC_DATAMATRIX_LICENSE_INVALID",t[t.EC_CUSTOM_MODULESIZE_INVALID=-30025]="EC_CUSTOM_MODULESIZE_INVALID",t[t.EC_AZTEC_LICENSE_INVALID=-30041]="EC_AZTEC_LICENSE_INVALID",t[t.EC_PATCHCODE_LICENSE_INVALID=-30046]="EC_PATCHCODE_LICENSE_INVALID",t[t.EC_POSTALCODE_LICENSE_INVALID=-30047]="EC_POSTALCODE_LICENSE_INVALID",t[t.EC_DPM_LICENSE_INVALID=-30048]="EC_DPM_LICENSE_INVALID",t[t.EC_FRAME_DECODING_THREAD_EXISTS=-30049]="EC_FRAME_DECODING_THREAD_EXISTS",t[t.EC_STOP_DECODING_THREAD_FAILED=-30050]="EC_STOP_DECODING_THREAD_FAILED",t[t.EC_MAXICODE_LICENSE_INVALID=-30057]="EC_MAXICODE_LICENSE_INVALID",t[t.EC_GS1_DATABAR_LICENSE_INVALID=-30058]="EC_GS1_DATABAR_LICENSE_INVALID",t[t.EC_GS1_COMPOSITE_LICENSE_INVALID=-30059]="EC_GS1_COMPOSITE_LICENSE_INVALID",t[t.EC_DOTCODE_LICENSE_INVALID=-30061]="EC_DOTCODE_LICENSE_INVALID",t[t.EC_PHARMACODE_LICENSE_INVALID=-30062]="EC_PHARMACODE_LICENSE_INVALID",t[t.EC_CHARACTER_MODEL_FILE_NOT_FOUND=-40100]="EC_CHARACTER_MODEL_FILE_NOT_FOUND",t[t.EC_TEXT_LINE_GROUP_LAYOUT_CONFLICT=-40101]="EC_TEXT_LINE_GROUP_LAYOUT_CONFLICT",t[t.EC_TEXT_LINE_GROUP_REGEX_CONFLICT=-40102]="EC_TEXT_LINE_GROUP_REGEX_CONFLICT",t[t.EC_QUADRILATERAL_INVALID=-50057]="EC_QUADRILATERAL_INVALID",t[t.EC_PANORAMA_LICENSE_INVALID=-70060]="EC_PANORAMA_LICENSE_INVALID",t[t.EC_RESOURCE_PATH_NOT_EXIST=-90001]="EC_RESOURCE_PATH_NOT_EXIST",t[t.EC_RESOURCE_LOAD_FAILED=-90002]="EC_RESOURCE_LOAD_FAILED",t[t.EC_CODE_SPECIFICATION_NOT_FOUND=-90003]="EC_CODE_SPECIFICATION_NOT_FOUND",t[t.EC_FULL_CODE_EMPTY=-90004]="EC_FULL_CODE_EMPTY",t[t.EC_FULL_CODE_PREPROCESS_FAILED=-90005]="EC_FULL_CODE_PREPROCESS_FAILED",t[t.EC_ZA_DL_LICENSE_INVALID=-90006]="EC_ZA_DL_LICENSE_INVALID",t[t.EC_AAMVA_DL_ID_LICENSE_INVALID=-90007]="EC_AAMVA_DL_ID_LICENSE_INVALID",t[t.EC_AADHAAR_LICENSE_INVALID=-90008]="EC_AADHAAR_LICENSE_INVALID",t[t.EC_MRTD_LICENSE_INVALID=-90009]="EC_MRTD_LICENSE_INVALID",t[t.EC_VIN_LICENSE_INVALID=-90010]="EC_VIN_LICENSE_INVALID",t[t.EC_CUSTOMIZED_CODE_TYPE_LICENSE_INVALID=-90011]="EC_CUSTOMIZED_CODE_TYPE_LICENSE_INVALID",t[t.EC_LICENSE_WARNING=-10076]="EC_LICENSE_WARNING",t[t.EC_BARCODE_READER_LICENSE_NOT_FOUND=-30063]="EC_BARCODE_READER_LICENSE_NOT_FOUND",t[t.EC_LABEL_RECOGNIZER_LICENSE_NOT_FOUND=-40103]="EC_LABEL_RECOGNIZER_LICENSE_NOT_FOUND",t[t.EC_DOCUMENT_NORMALIZER_LICENSE_NOT_FOUND=-50058]="EC_DOCUMENT_NORMALIZER_LICENSE_NOT_FOUND",t[t.EC_CODE_PARSER_LICENSE_NOT_FOUND=-90012]="EC_CODE_PARSER_LICENSE_NOT_FOUND"}(Ct||(Ct={})),function(t){t[t.GEM_SKIP=0]="GEM_SKIP",t[t.GEM_AUTO=1]="GEM_AUTO",t[t.GEM_GENERAL=2]="GEM_GENERAL",t[t.GEM_GRAY_EQUALIZE=4]="GEM_GRAY_EQUALIZE",t[t.GEM_GRAY_SMOOTH=8]="GEM_GRAY_SMOOTH",t[t.GEM_SHARPEN_SMOOTH=16]="GEM_SHARPEN_SMOOTH",t[t.GEM_REV=-2147483648]="GEM_REV"}(Et||(Et={})),function(t){t[t.GTM_SKIP=0]="GTM_SKIP",t[t.GTM_INVERTED=1]="GTM_INVERTED",t[t.GTM_ORIGINAL=2]="GTM_ORIGINAL",t[t.GTM_AUTO=4]="GTM_AUTO",t[t.GTM_REV=-2147483648]="GTM_REV"}(St||(St={})),function(t){t[t.ITT_FILE_IMAGE=0]="ITT_FILE_IMAGE",t[t.ITT_VIDEO_FRAME=1]="ITT_VIDEO_FRAME"}(Tt||(Tt={})),function(t){t[t.PDFRM_VECTOR=1]="PDFRM_VECTOR",t[t.PDFRM_RASTER=2]="PDFRM_RASTER",t[t.PDFRM_REV=-2147483648]="PDFRM_REV"}(bt||(bt={})),function(t){t[t.RDS_RASTERIZED_PAGES=0]="RDS_RASTERIZED_PAGES",t[t.RDS_EXTRACTED_IMAGES=1]="RDS_EXTRACTED_IMAGES"}(It||(It={})),function(t){t[t.CVS_NOT_VERIFIED=0]="CVS_NOT_VERIFIED",t[t.CVS_PASSED=1]="CVS_PASSED",t[t.CVS_FAILED=2]="CVS_FAILED"}(xt||(xt={}));const Ot={IRUT_NULL:BigInt(0),IRUT_COLOUR_IMAGE:BigInt(1),IRUT_SCALED_DOWN_COLOUR_IMAGE:BigInt(2),IRUT_GRAYSCALE_IMAGE:BigInt(4),IRUT_TRANSOFORMED_GRAYSCALE_IMAGE:BigInt(8),IRUT_ENHANCED_GRAYSCALE_IMAGE:BigInt(16),IRUT_PREDETECTED_REGIONS:BigInt(32),IRUT_BINARY_IMAGE:BigInt(64),IRUT_TEXTURE_DETECTION_RESULT:BigInt(128),IRUT_TEXTURE_REMOVED_GRAYSCALE_IMAGE:BigInt(256),IRUT_TEXTURE_REMOVED_BINARY_IMAGE:BigInt(512),IRUT_CONTOURS:BigInt(1024),IRUT_LINE_SEGMENTS:BigInt(2048),IRUT_TEXT_ZONES:BigInt(4096),IRUT_TEXT_REMOVED_BINARY_IMAGE:BigInt(8192),IRUT_CANDIDATE_BARCODE_ZONES:BigInt(16384),IRUT_LOCALIZED_BARCODES:BigInt(32768),IRUT_SCALED_UP_BARCODE_IMAGE:BigInt(65536),IRUT_DEFORMATION_RESISTED_BARCODE_IMAGE:BigInt(1<<17),IRUT_COMPLEMENTED_BARCODE_IMAGE:BigInt(1<<18),IRUT_DECODED_BARCODES:BigInt(1<<19),IRUT_LONG_LINES:BigInt(1<<20),IRUT_CORNERS:BigInt(1<<21),IRUT_CANDIDATE_QUAD_EDGES:BigInt(1<<22),IRUT_DETECTED_QUADS:BigInt(1<<23),IRUT_LOCALIZED_TEXT_LINES:BigInt(1<<24),IRUT_RECOGNIZED_TEXT_LINES:BigInt(1<<25),IRUT_NORMALIZED_IMAGES:BigInt(1<<26),IRUT_SHORT_LINES:BigInt(1<<27),IRUT_RAW_TEXT_LINES:BigInt(1<<28),IRUT_LOGIC_LINES:BigInt(1<<29),IRUT_ALL:BigInt("0xFFFFFFFFFFFFFFFF")};var At,Rt;!function(t){t[t.ROET_PREDETECTED_REGION=0]="ROET_PREDETECTED_REGION",t[t.ROET_LOCALIZED_BARCODE=1]="ROET_LOCALIZED_BARCODE",t[t.ROET_DECODED_BARCODE=2]="ROET_DECODED_BARCODE",t[t.ROET_LOCALIZED_TEXT_LINE=3]="ROET_LOCALIZED_TEXT_LINE",t[t.ROET_RECOGNIZED_TEXT_LINE=4]="ROET_RECOGNIZED_TEXT_LINE",t[t.ROET_DETECTED_QUAD=5]="ROET_DETECTED_QUAD",t[t.ROET_NORMALIZED_IMAGE=6]="ROET_NORMALIZED_IMAGE",t[t.ROET_SOURCE_IMAGE=7]="ROET_SOURCE_IMAGE",t[t.ROET_TARGET_ROI=8]="ROET_TARGET_ROI"}(At||(At={})),function(t){t[t.ST_NULL=0]="ST_NULL",t[t.ST_REGION_PREDETECTION=1]="ST_REGION_PREDETECTION",t[t.ST_BARCODE_LOCALIZATION=2]="ST_BARCODE_LOCALIZATION",t[t.ST_BARCODE_DECODING=3]="ST_BARCODE_DECODING",t[t.ST_TEXT_LINE_LOCALIZATION=4]="ST_TEXT_LINE_LOCALIZATION",t[t.ST_TEXT_LINE_RECOGNITION=5]="ST_TEXT_LINE_RECOGNITION",t[t.ST_DOCUMENT_DETECTION=6]="ST_DOCUMENT_DETECTION",t[t.ST_DOCUMENT_NORMALIZATION=7]="ST_DOCUMENT_NORMALIZATION"}(Rt||(Rt={}));let Dt="./";if(document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}Dt=t.substring(0,t.lastIndexOf("/")+1)}function Lt(t,e,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(t):n?n.value:e.get(t)}function Mt(t,e,i,n,r){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?r.call(t,i):r?r.value=i:e.set(t,i),i}vt.engineResourcePaths={rootDirectory:(t=>{null==t&&(t="./");let e=document.createElement("a");return e.href=t,(t=e.href).endsWith("/")||(t+="/"),t})(Dt+"../../")},"function"==typeof SuppressedError&&SuppressedError;const Ft="undefined"==typeof self,Pt="function"==typeof importScripts,kt=(()=>{if(!Pt){if(!Ft&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),Bt=t=>{if(null==t&&(t="./"),Ft||Pt);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t};var Nt,jt,Ut;!function(t){t[t.SM_SINGLE=0]="SM_SINGLE",t[t.SM_MULTI_UNIQUE=1]="SM_MULTI_UNIQUE"}(Nt||(Nt={})),function(t){t[t.OM_NONE=0]="OM_NONE",t[t.OM_SPEED=1]="OM_SPEED",t[t.OM_COVERAGE=2]="OM_COVERAGE",t[t.OM_BALANCE=3]="OM_BALANCE",t[t.OM_DPM=4]="OM_DPM",t[t.OM_DENSE=5]="OM_DENSE"}(jt||(jt={})),function(t){t[t.RS_SUCCESS=0]="RS_SUCCESS",t[t.RS_CANCELLED=1]="RS_CANCELLED",t[t.RS_FAILED=2]="RS_FAILED"}(Ut||(Ut={}));var Vt={license:"",scanMode:Nt.SM_SINGLE,templateFilePath:void 0,utilizedTemplateNames:{single:"ReadSingleBarcode",multi_unique:"ReadBarcodes_SpeedFirst",image:"ReadBarcodes_ReadRateFirst"},engineResourcePaths:{rootDirectory:kt},barcodeFormats:void 0,duplicateForgetTime:3e3,container:void 0,onUniqueBarcodeScanned:void 0,showResultView:!1,showUploadImageButton:!1,removePoweredByMessage:!1,uiPath:kt,scannerViewConfig:{container:void 0,showCloseButton:!1},resultViewConfig:{container:void 0,toolbarButtonsConfig:{clear:{label:"Clear",className:"btn-clear",isHidden:!1},done:{label:"Done",className:"btn-done",isHidden:!1}}}};const Gt=t=>t&&"object"==typeof t&&"function"==typeof t.then,Wt=(async()=>{})().constructor;let Yt=class extends Wt{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(t){let e;this._task=t,Gt(t)?e=t:"function"==typeof t&&(e=new Wt(t)),e&&(async()=>{try{const i=await e;t===this._task&&this.resolve(i)}catch(e){t===this._task&&this.reject(e)}})()}get isEmpty(){return null==this._task}constructor(t){let e,i;super(((t,n)=>{e=t,i=n})),this._s="pending",this.resolve=t=>{this.isPending&&(Gt(t)?this.task=t:(this._s="fulfilled",e(t)))},this.reject=t=>{this.isPending&&(this._s="rejected",i(t))},this.task=t}};function Ht(t,e,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(t):n?n.value:e.get(t)}function Xt(t,e,i,n,r){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?r.call(t,i):r?r.value=i:e.set(t,i),i}"function"==typeof SuppressedError&&SuppressedError;const zt=t=>t&&"object"==typeof t&&"function"==typeof t.then,qt=(async()=>{})().constructor;class Zt extends qt{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(t){let e;this._task=t,zt(t)?e=t:"function"==typeof t&&(e=new qt(t)),e&&(async()=>{try{const i=await e;t===this._task&&this.resolve(i)}catch(e){t===this._task&&this.reject(e)}})()}get isEmpty(){return null==this._task}constructor(t){let e,i;super(((t,n)=>{e=t,i=n})),this._s="pending",this.resolve=t=>{this.isPending&&(zt(t)?this.task=t:(this._s="fulfilled",e(t)))},this.reject=t=>{this.isPending&&(this._s="rejected",i(t))},this.task=t}}class Kt{constructor(t){this._cvr=t}async getMaxBufferedItems(){return await new Promise(((t,e)=>{let i=at();ht[i]=async i=>{if(i.success)return t(i.count);{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},st.postMessage({type:"cvr_getMaxBufferedItems",id:i,instanceID:this._cvr._instanceID})}))}async setMaxBufferedItems(t){return await new Promise(((e,i)=>{let n=at();ht[n]=async t=>{if(t.success)return e();{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},st.postMessage({type:"cvr_setMaxBufferedItems",id:n,instanceID:this._cvr._instanceID,body:{count:t}})}))}async getBufferedCharacterItemSet(){return await new Promise(((t,e)=>{let i=at();ht[i]=async i=>{if(i.success)return t(i.itemSet);{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},st.postMessage({type:"cvr_getBufferedCharacterItemSet",id:i,instanceID:this._cvr._instanceID})}))}}var Jt={onTaskResultsReceived:!1,onTaskResultsReceivedForDce:!1,onPredetectedRegionsReceived:!1,onLocalizedBarcodesReceived:!1,onDecodedBarcodesReceived:!1,onLocalizedTextLinesReceived:!1,onRecognizedTextLinesReceived:!1,onDetectedQuadsReceived:!1,onNormalizedImagesReceived:!1,onColourImageUnitReceived:!1,onScaledDownColourImageUnitReceived:!1,onGrayscaleImageUnitReceived:!1,onTransformedGrayscaleImageUnitReceived:!1,onEnhancedGrayscaleImageUnitReceived:!1,onBinaryImageUnitReceived:!1,onTextureDetectionResultUnitReceived:!1,onTextureRemovedGrayscaleImageUnitReceived:!1,onTextureRemovedBinaryImageUnitReceived:!1,onContoursUnitReceived:!1,onLineSegmentsUnitReceived:!1,onTextZonesUnitReceived:!1,onTextRemovedBinaryImageUnitReceived:!1,onRawTextLinesReceived:!1,onLongLinesUnitReceived:!1,onCornersUnitReceived:!1,onCandidateQuadEdgesUnitReceived:!1,onCandidateBarcodeZonesUnitReceived:!1,onScaledUpBarcodeImageUnitReceived:!1,onDeformationResistedBarcodeImageUnitReceived:!1,onComplementedBarcodeImageUnitReceived:!1,onShortLinesUnitReceived:!1,onLogicLinesReceived:!1};const Qt=t=>{for(let e in t._irrRegistryState)t._irrRegistryState[e]=!1;for(let e of t._intermediateResultReceiverSet)if(e.isDce||e.isFilter)t._irrRegistryState.onTaskResultsReceivedForDce=!0;else for(let i in e)t._irrRegistryState[i]||(t._irrRegistryState[i]=!!e[i])};class $t{constructor(t){this._irrRegistryState=Jt,this._intermediateResultReceiverSet=new Set,this._cvr=t}async addResultReceiver(t){if("object"!=typeof t)throw new Error("Invalid receiver.");this._intermediateResultReceiverSet.add(t),Qt(this);let e=-1,i={};if(!t.isDce&&!t.isFilter){if(!t._observedResultUnitTypes||!t._observedTaskMap)throw new Error("Invalid Intermediate Result Receiver.");e=t._observedResultUnitTypes,t._observedTaskMap.forEach(((t,e)=>{i[e]=t})),t._observedTaskMap.clear()}return await new Promise(((t,n)=>{let r=at();ht[r]=async e=>{if(e.success)return t();{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,n(t)}},st.postMessage({type:"cvr_setIrrRegistry",id:r,instanceID:this._cvr._instanceID,body:{receiverObj:this._irrRegistryState,observedResultUnitTypes:e.toString(),observedTaskMap:i}})}))}async removeResultReceiver(t){return this._intermediateResultReceiverSet.delete(t),Qt(this),await new Promise(((t,e)=>{let i=at();ht[i]=async i=>{if(i.success)return t();{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},st.postMessage({type:"cvr_setIrrRegistry",id:i,instanceID:this._cvr._instanceID,body:{receiverObj:this._irrRegistryState}})}))}getOriginalImage(){return this._cvr._dsImage}}const te="undefined"==typeof self,ee="function"==typeof importScripts,ie=(()=>{if(!ee){if(!te&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),ne=t=>{if(null==t&&(t="./"),te||ee);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t};var re;vt.engineResourcePaths.cvr={version:"2.4.33",path:ie,isInternal:!0},mt.cvr={js:!0,wasm:!0,deps:["license","dip"]},gt.cvr={};const se="1.4.21";"string"!=typeof vt.engineResourcePaths.std&&D(vt.engineResourcePaths.std.version,se)<0&&(vt.engineResourcePaths.std={version:se,path:ne(ie+`../../dynamsoft-capture-vision-std@${se}/dist/`),isInternal:!0});const oe="2.4.31";(!vt.engineResourcePaths.dip||"string"!=typeof vt.engineResourcePaths.dip&&D(vt.engineResourcePaths.dip.version,oe)<0)&&(vt.engineResourcePaths.dip={version:oe,path:ne(ie+`../../dynamsoft-image-processing@${oe}/dist/`),isInternal:!0});class ae{static getVersion(){return this._version}}ae._version=`2.4.33(Worker: ${null===(re=ft.cvr)||void 0===re?void 0:re.worker}, Wasm: loading...`;const he={barcodeResultItems:{type:yt.CRIT_BARCODE,reveiver:"onDecodedBarcodesReceived",isNeedFilter:!0},textLineResultItems:{type:yt.CRIT_TEXT_LINE,reveiver:"onRecognizedTextLinesReceived",isNeedFilter:!0},detectedQuadResultItems:{type:yt.CRIT_DETECTED_QUAD,reveiver:"onDetectedQuadsReceived",isNeedFilter:!1},normalizedImageResultItems:{type:yt.CRIT_NORMALIZED_IMAGE,reveiver:"onNormalizedImagesReceived",isNeedFilter:!1},parsedResultItems:{type:yt.CRIT_PARSED_RESULT,reveiver:"onParsedResultsReceived",isNeedFilter:!1}};var le,ce,ue,de,fe,ge,me,pe,_e,ve,ye,we,Ce;function Ee(t,e){if(t&&t.location){const i=t.location.points;for(let t of i)t.x=t.x/e,t.y=t.y/e;Ee(t.referencedItem,e)}}function Se(t){if(t.disposed)throw new Error('"CaptureVisionRouter" instance has been disposed')}!function(t){t[t.ISS_BUFFER_EMPTY=0]="ISS_BUFFER_EMPTY",t[t.ISS_EXHAUSTED=1]="ISS_EXHAUSTED"}(le||(le={}));const Te={onTaskResultsReceived:()=>{},isFilter:!0};class be{constructor(){this.maxImageSideLength=["iPhone","Android","HarmonyOS"].includes(vt.browserInfo.OS)?2048:4096,this._instanceID=void 0,this._dsImage=null,this._isPauseScan=!0,this._isOutputOriginalImage=!1,this._isOpenDetectVerify=!1,this._isOpenNormalizeVerify=!1,this._isOpenBarcodeVerify=!1,this._isOpenLabelVerify=!1,this._minImageCaptureInterval=0,this._averageProcessintTimeArray=[],this._averageFetchImageTimeArray=[],this._currentSettings=null,this._averageTime=999,ce.set(this,null),ue.set(this,null),de.set(this,null),fe.set(this,null),ge.set(this,null),me.set(this,new Set),pe.set(this,new Set),_e.set(this,new Set),ve.set(this,0),ye.set(this,!1),we.set(this,!1),Ce.set(this,!1),this._singleFrameModeCallbackBind=this._singleFrameModeCallback.bind(this)}get disposed(){return Ht(this,Ce,"f")}static async createInstance(){if(!gt.license)throw Error("Module `license` is not existed.");await gt.license.dynamsoft(),await _t(["cvr"]);const t=new be,e=new Zt;let i=at();return ht[i]=async i=>{var n;if(i.success)t._instanceID=i.instanceID,t._currentSettings=JSON.parse(JSON.parse(i.outputSettings).data),ae._version=`2.4.33(Worker: ${null===(n=ft.cvr)||void 0===n?void 0:n.worker}, Wasm: ${i.version})`,Xt(t,we,!0,"f"),Xt(t,fe,t.getIntermediateResultManager(),"f"),Xt(t,we,!1,"f"),e.resolve(t);else{const t=Error(i.message);i.stack&&(t.stack=i.stack),e.reject(t)}},st.postMessage({type:"cvr_createInstance",id:i}),e}async _singleFrameModeCallback(t){for(let e of Ht(this,me,"f"))this._isOutputOriginalImage&&e.onOriginalImageResultReceived&&e.onOriginalImageResultReceived({imageData:t});const e={bytes:new Uint8Array(t.bytes),width:t.width,height:t.height,stride:t.stride,format:t.format,tag:t.tag};this._templateName||(this._templateName=this._currentSettings.CaptureVisionTemplates[0].Name);const i=await this.capture(e,this._templateName);i.originalImageTag=t.tag;const n={originalImageHashId:i.originalImageHashId,originalImageTag:i.originalImageTag,errorCode:i.errorCode,errorString:i.errorString};for(let t of Ht(this,me,"f"))if(t.isDce)t.onCapturedResultReceived(i,{isDetectVerifyOpen:!1,isNormalizeVerifyOpen:!1,isBarcodeVerifyOpen:!1,isLabelVerifyOpen:!1});else{for(let e in he){const r=e,s=he[r];t[s.reveiver]&&i[r]&&t[s.reveiver](Object.assign(Object.assign({},n),{[r]:i[r]}))}t.onCapturedResultReceived&&t.onCapturedResultReceived(i)}}setInput(t){if(Se(this),t){if(Xt(this,ce,t,"f"),t.isCameraEnhancer){Ht(this,fe,"f")&&(Ht(this,ce,"f")._intermediateResultReceiver.isDce=!0,Ht(this,fe,"f").addResultReceiver(Ht(this,ce,"f")._intermediateResultReceiver));const t=Ht(this,ce,"f").getCameraView();if(t){const e=t._capturedResultReceiver;e.isDce=!0,Ht(this,me,"f").add(e)}}}else Xt(this,ce,null,"f")}getInput(){return Ht(this,ce,"f")}addImageSourceStateListener(t){if(Se(this),"object"!=typeof t)return console.warn("Invalid ISA state listener.");t&&Object.keys(t)&&Ht(this,pe,"f").add(t)}removeImageSourceStateListener(t){return Se(this),Ht(this,pe,"f").delete(t)}addResultReceiver(t){if(Se(this),"object"!=typeof t)throw new Error("Invalid receiver.");t&&Object.keys(t).length&&(Ht(this,me,"f").add(t),this._setCrrRegistry())}removeResultReceiver(t){Se(this),Ht(this,me,"f").delete(t),this._setCrrRegistry()}async _setCrrRegistry(){const t={onCapturedResultReceived:!1,onDecodedBarcodesReceived:!1,onRecognizedTextLinesReceived:!1,onDetectedQuadsReceived:!1,onNormalizedImagesReceived:!1,onParsedResultsReceived:!1};for(let e of Ht(this,me,"f"))e.isDce||(t.onCapturedResultReceived=!!e.onCapturedResultReceived,t.onDecodedBarcodesReceived=!!e.onDecodedBarcodesReceived,t.onRecognizedTextLinesReceived=!!e.onRecognizedTextLinesReceived,t.onDetectedQuadsReceived=!!e.onDetectedQuadsReceived,t.onNormalizedImagesReceived=!!e.onNormalizedImagesReceived,t.onParsedResultsReceived=!!e.onParsedResultsReceived);const e=new Zt;let i=at();return ht[i]=async t=>{if(t.success)e.resolve();else{let i=new Error(t.message);i.stack=t.stack+"\n"+i.stack,e.reject()}},st.postMessage({type:"cvr_setCrrRegistry",id:i,instanceID:this._instanceID,body:{receiver:JSON.stringify(t)}}),e}async addResultFilter(t){if(Se(this),!t||"object"!=typeof t||!Object.keys(t).length)return console.warn("Invalid filter.");Ht(this,_e,"f").add(t),t._dynamsoft(),await this._handleFilterUpdate()}async removeResultFilter(t){Se(this),Ht(this,_e,"f").delete(t),await this._handleFilterUpdate()}async _handleFilterUpdate(){if(Ht(this,fe,"f").removeResultReceiver(Te),0===Ht(this,_e,"f").size){this._isOpenBarcodeVerify=!1,this._isOpenLabelVerify=!1,this._isOpenDetectVerify=!1,this._isOpenNormalizeVerify=!1;const t={[yt.CRIT_BARCODE]:!1,[yt.CRIT_TEXT_LINE]:!1,[yt.CRIT_DETECTED_QUAD]:!1,[yt.CRIT_NORMALIZED_IMAGE]:!1},e={[yt.CRIT_BARCODE]:!1,[yt.CRIT_TEXT_LINE]:!1,[yt.CRIT_DETECTED_QUAD]:!1,[yt.CRIT_NORMALIZED_IMAGE]:!1};return await Ie(this,t),void await xe(this,e)}for(let t of Ht(this,_e,"f")){if(this._isOpenBarcodeVerify=t.isResultCrossVerificationEnabled(yt.CRIT_BARCODE),this._isOpenLabelVerify=t.isResultCrossVerificationEnabled(yt.CRIT_TEXT_LINE),this._isOpenDetectVerify=t.isResultCrossVerificationEnabled(yt.CRIT_DETECTED_QUAD),this._isOpenNormalizeVerify=t.isResultCrossVerificationEnabled(yt.CRIT_NORMALIZED_IMAGE),t.isLatestOverlappingEnabled(yt.CRIT_BARCODE)){[...Ht(this,fe,"f")._intermediateResultReceiverSet.values()].find((t=>t.isFilter))||Ht(this,fe,"f").addResultReceiver(Te)}await Ie(this,t.verificationEnabled),await xe(this,t.duplicateFilterEnabled),await Oe(this,t.duplicateForgetTime)}}async startCapturing(t){var e,i;if(Se(this),!this._isPauseScan)return;if(!Ht(this,ce,"f"))throw new Error("'ImageSourceAdapter' is not set. call 'setInput' before 'startCapturing'");t||(t=be._defaultTemplate);const n=await this.containsTask(t);await _t(n);for(let t of Ht(this,_e,"f"))await this.addResultFilter(t);if(n.includes("dlr")&&!(null===(e=gt.dlr)||void 0===e?void 0:e.bLoadConfusableCharsData)){const t=L(vt.engineResourcePaths);await(null===(i=gt.dlr)||void 0===i?void 0:i.loadRecognitionData("ConfusableChars",t.dlr))}if(Ht(this,ce,"f").isCameraEnhancer&&(n.includes("ddn")?Ht(this,ce,"f").setPixelFormat(a.IPF_ABGR_8888):Ht(this,ce,"f").setPixelFormat(a.IPF_GRAYSCALED)),void 0!==Ht(this,ce,"f").singleFrameMode&&"disabled"!==Ht(this,ce,"f").singleFrameMode)return this._templateName=t,void Ht(this,ce,"f").on("singleFrameAcquired",this._singleFrameModeCallbackBind);return Ht(this,ce,"f").getColourChannelUsageType()===o.CCUT_AUTO&&Ht(this,ce,"f").setColourChannelUsageType(n.includes("ddn")?o.CCUT_FULL_CHANNEL:o.CCUT_Y_CHANNEL_ONLY),Ht(this,de,"f")&&Ht(this,de,"f").isPending?Ht(this,de,"f"):(Xt(this,de,new Zt(((e,i)=>{if(this.disposed)return;let n=at();ht[n]=async n=>{if(Ht(this,de,"f")&&!Ht(this,de,"f").isFulfilled){if(!n.success){let t=new Error(n.message);return t.stack=n.stack+"\n"+t.stack,i(t)}this._isPauseScan=!1,this._isOutputOriginalImage=n.isOutputOriginalImage,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((async()=>{-1!==this._minImageCaptureInterval&&Ht(this,ce,"f").startFetching(),this._loopReadVideo(t),e()}),0)}},st.postMessage({type:"cvr_startCapturing",id:n,instanceID:this._instanceID,body:{templateName:t}})})),"f"),await Ht(this,de,"f"))}stopCapturing(){Se(this),Ht(this,ce,"f")&&(Ht(this,ce,"f").isCameraEnhancer&&void 0!==Ht(this,ce,"f").singleFrameMode&&"disabled"!==Ht(this,ce,"f").singleFrameMode?Ht(this,ce,"f").off("singleFrameAcquired",this._singleFrameModeCallbackBind):(!async function(t){let e=at();const i=new Zt;ht[e]=async t=>{if(t.success)return i.resolve();{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i.reject(e)}},st.postMessage({type:"cvr_clearVerifyList",id:e,instanceID:t._instanceID})}(this),Ht(this,ce,"f").stopFetching(),this._averageProcessintTimeArray=[],this._averageTime=999,this._isPauseScan=!0,Xt(this,de,null,"f"),Ht(this,ce,"f").setColourChannelUsageType(o.CCUT_AUTO)))}async containsTask(t){return Se(this),await new Promise(((e,i)=>{let n=at();ht[n]=async t=>{if(t.success)return e(JSON.parse(t.tasks));{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},st.postMessage({type:"cvr_containsTask",id:n,instanceID:this._instanceID,body:{templateName:t}})}))}async _loopReadVideo(t){if(this.disposed||this._isPauseScan)return;if(Xt(this,ye,!0,"f"),Ht(this,ce,"f").isBufferEmpty())if(Ht(this,ce,"f").hasNextImageToFetch())for(let t of Ht(this,pe,"f"))t.onImageSourceStateReceived&&t.onImageSourceStateReceived(le.ISS_BUFFER_EMPTY);else if(!Ht(this,ce,"f").hasNextImageToFetch())for(let t of Ht(this,pe,"f"))t.onImageSourceStateReceived&&t.onImageSourceStateReceived(le.ISS_EXHAUSTED);if(-1===this._minImageCaptureInterval||Ht(this,ce,"f").isBufferEmpty())try{Ht(this,ce,"f").isBufferEmpty()&&be._onLog&&be._onLog("buffer is empty so fetch image"),be._onLog&&be._onLog(`DCE: start fetching a frame: ${Date.now()}`),this._dsImage=Ht(this,ce,"f").fetchImage(),be._onLog&&be._onLog(`DCE: finish fetching a frame: ${Date.now()}`),Ht(this,ce,"f").setImageFetchInterval(this._averageTime)}catch(e){return void this._reRunCurrnetFunc(t)}else if(Ht(this,ce,"f").setImageFetchInterval(this._averageTime-(this._dsImage&&this._dsImage.tag?this._dsImage.tag.timeSpent:0)),this._dsImage=Ht(this,ce,"f").getImage(),this._dsImage.tag&&Date.now()-this._dsImage.tag.timeStamp>200)return void this._reRunCurrnetFunc(t);if(!this._dsImage)return void this._reRunCurrnetFunc(t);for(let t of Ht(this,me,"f"))this._isOutputOriginalImage&&t.onOriginalImageResultReceived&&t.onOriginalImageResultReceived({imageData:this._dsImage});const e=Date.now();this._captureDsimage(this._dsImage,t).then((async i=>{if(be._onLog&&be._onLog("no js handle time: "+(Date.now()-e)),this._isPauseScan)return void this._reRunCurrnetFunc(t);i.originalImageTag=this._dsImage.tag?this._dsImage.tag:null;const n={originalImageHashId:i.originalImageHashId,originalImageTag:i.originalImageTag,errorCode:i.errorCode,errorString:i.errorString};for(let t of Ht(this,me,"f"))if(t.isDce){const e=Date.now();if(t.onCapturedResultReceived(i,{isDetectVerifyOpen:this._isOpenDetectVerify,isNormalizeVerifyOpen:this._isOpenNormalizeVerify,isBarcodeVerifyOpen:this._isOpenBarcodeVerify,isLabelVerifyOpen:this._isOpenLabelVerify}),be._onLog){const t=Date.now()-e;t>10&&be._onLog(`draw result time: ${t}`)}}else{for(let e in he){const r=e,s=he[r];t[s.reveiver],t[s.reveiver]&&i[r]&&t[s.reveiver](Object.assign(Object.assign({},n),{[r]:i[r].filter((t=>!s.isNeedFilter||!t.isFilter))})),i[r]&&(i[r]=i[r].filter((t=>!s.isNeedFilter||!t.isFilter)))}t.onCapturedResultReceived&&(i.items=i.items.filter((t=>[yt.CRIT_DETECTED_QUAD,yt.CRIT_NORMALIZED_IMAGE].includes(t.type)||!t.isFilter)),t.onCapturedResultReceived(i))}const r=Date.now();if(this._minImageCaptureInterval>-1&&(5===this._averageProcessintTimeArray.length&&this._averageProcessintTimeArray.shift(),5===this._averageFetchImageTimeArray.length&&this._averageFetchImageTimeArray.shift(),this._averageProcessintTimeArray.push(Date.now()-e),this._averageFetchImageTimeArray.push(this._dsImage&&this._dsImage.tag?this._dsImage.tag.timeSpent:0),this._averageTime=Math.min(...this._averageProcessintTimeArray)-Math.max(...this._averageFetchImageTimeArray),this._averageTime=this._averageTime>0?this._averageTime:0,be._onLog&&(be._onLog(`minImageCaptureInterval: ${this._minImageCaptureInterval}`),be._onLog(`averageProcessintTimeArray: ${this._averageProcessintTimeArray}`),be._onLog(`averageFetchImageTimeArray: ${this._averageFetchImageTimeArray}`),be._onLog(`averageTime: ${this._averageTime}`))),be._onLog){const t=Date.now()-r;t>10&&be._onLog(`fetch image calculate time: ${t}`)}be._onLog&&be._onLog(`time finish decode: ${Date.now()}`),be._onLog&&be._onLog("main time: "+(Date.now()-e)),be._onLog&&be._onLog("===================================================="),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._minImageCaptureInterval>0&&this._minImageCaptureInterval>=this._averageTime?this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo(t)}),this._minImageCaptureInterval-this._averageTime):this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo(t)}),Math.max(this._minImageCaptureInterval,0))})).catch((e=>{Ht(this,ce,"f").stopFetching(),e.errorCode&&0===e.errorCode&&(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{Ht(this,ce,"f").startFetching(),this._loopReadVideo(t)}),Math.max(this._minImageCaptureInterval,1e3))),"platform error"!==e.message&&setTimeout((()=>{throw e}),0)}))}_reRunCurrnetFunc(t){this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo(t)}),0)}async capture(t,e){var i,n;Se(this),e||(e=be._defaultTemplate);const r=await this.containsTask(e);if(await _t(r),r.includes("dlr")&&!(null===(i=gt.dlr)||void 0===i?void 0:i.bLoadConfusableCharsData)){const t=L(vt.engineResourcePaths);await(null===(n=gt.dlr)||void 0===n?void 0:n.loadRecognitionData("ConfusableChars",t.dlr))}let s;if(Xt(this,ye,!1,"f"),C(t))s=await this._captureDsimage(t,e);else if("string"==typeof t)s="data:image/"==t.substring(0,11)?await this._captureBase64(t,e):await this._captureUrl(t,e);else if(t instanceof Blob)s=await this._captureBlob(t,e);else if(t instanceof HTMLImageElement)s=await this._captureImage(t,e);else if(t instanceof HTMLCanvasElement)s=await this._captureCanvas(t,e);else{if(!(t instanceof HTMLVideoElement))throw new TypeError("'capture(imageOrFile, templateName)': Type of 'imageOrFile' should be 'DSImageData', 'Url', 'Base64', 'Blob', 'HTMLImageElement', 'HTMLCanvasElement', 'HTMLVideoElement'.");s=await this._captureVideo(t,e)}return s}async _captureDsimage(t,e){return await this._captureInWorker(t,e)}async _captureUrl(t,e){let i=await A(t,"blob");return await this._captureBlob(i,e)}async _captureBase64(t,e){t=t.substring(t.indexOf(",")+1);let i=atob(t),n=i.length,r=new Uint8Array(n);for(;n--;)r[n]=i.charCodeAt(n);return await this._captureBlob(new Blob([r]),e)}async _captureBlob(t,e){let i=null,n=null;if("undefined"!=typeof createImageBitmap)try{i=await createImageBitmap(t)}catch(t){}i||(n=await async function(t){return await new Promise(((e,i)=>{let n=URL.createObjectURL(t),r=new Image;r.src=n,r.onload=()=>{URL.revokeObjectURL(r.dbrObjUrl),e(r)},r.onerror=t=>{i(new Error("Can't convert blob to image : "+(t instanceof Event?t.type:t)))}}))}(t));let r=await this._captureImage(i||n,e);return i&&i.close(),r}async _captureImage(t,e){let i,n,r=t instanceof HTMLImageElement?t.naturalWidth:t.width,s=t instanceof HTMLImageElement?t.naturalHeight:t.height,o=Math.max(r,s);o>this.maxImageSideLength?(Xt(this,ve,this.maxImageSideLength/o,"f"),i=Math.round(r*Ht(this,ve,"f")),n=Math.round(s*Ht(this,ve,"f"))):(i=r,n=s),Ht(this,ue,"f")||Xt(this,ue,document.createElement("canvas"),"f");const a=Ht(this,ue,"f");a.width===i&&a.height===n||(a.width=i,a.height=n),a.ctx2d||(a.ctx2d=a.getContext("2d",{willReadFrequently:!0}));return a.ctx2d.drawImage(t,0,0,r,s,0,0,i,n),t.dbrObjUrl&&URL.revokeObjectURL(t.dbrObjUrl),await this._captureCanvas(a,e)}async _captureCanvas(t,e){if(t.crossOrigin&&"anonymous"!=t.crossOrigin)throw"cors";if([t.width,t.height].includes(0))throw Error("The width or height of the 'canvas' is 0.");const i=t.ctx2d||t.getContext("2d",{willReadFrequently:!0}),n={bytes:Uint8Array.from(i.getImageData(0,0,t.width,t.height).data),width:t.width,height:t.height,stride:4*t.width,format:10};return await this._captureInWorker(n,e)}async _captureVideo(t,e){if(t.crossOrigin&&"anonymous"!=t.crossOrigin)throw"cors";let i,n,r=t.videoWidth,s=t.videoHeight,o=Math.max(r,s);o>this.maxImageSideLength?(Xt(this,ve,this.maxImageSideLength/o,"f"),i=Math.round(r*Ht(this,ve,"f")),n=Math.round(s*Ht(this,ve,"f"))):(i=r,n=s),Ht(this,ue,"f")||Xt(this,ue,document.createElement("canvas"),"f");const a=Ht(this,ue,"f");a.width===i&&a.height===n||(a.width=i,a.height=n),a.ctx2d||(a.ctx2d=a.getContext("2d",{willReadFrequently:!0}));return a.ctx2d.drawImage(t,0,0,r,s,0,0,i,n),await this._captureCanvas(a,e)}async _captureInWorker(t,e){const{bytes:i,width:n,height:r,stride:s,format:o}=t;let a=at();const h=new Zt;return ht[a]=async e=>{var i,n;if(!e.success){let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,h.reject(t)}{const r=Date.now();be._onLog&&(be._onLog(`get result time from worker: ${r}`),be._onLog("worker to main time consume: "+(r-e.workerReturnMsgTime)));try{const r=e.captureResult;if(0!==r.errorCode){let t=new Error(r.errorString);return t.errorCode=r.errorCode,h.reject(t)}t.bytes=e.bytes;for(let e of r.items)0!==Ht(this,ve,"f")&&Ee(e,Ht(this,ve,"f")),e.type===yt.CRIT_ORIGINAL_IMAGE?e.imageData=t:e.type===yt.CRIT_NORMALIZED_IMAGE?null===(i=gt.ddn)||void 0===i||i.handleNormalizedImageResultItem(e):e.type===yt.CRIT_PARSED_RESULT&&(null===(n=gt.dcp)||void 0===n||n.handleParsedResultItem(e));if(Ht(this,ye,"f"))for(let t of Ht(this,_e,"f"))t.onDecodedBarcodesReceived(r),t.onRecognizedTextLinesReceived(r),t.onDetectedQuadsReceived(r),t.onNormalizedImagesReceived(r);for(let t in he){const e=t,i=r.items.filter((t=>t.type===he[e].type));i.length&&(r[t]=i)}if(!this._isPauseScan||!Ht(this,ye,"f")){const e=r.intermediateResult;if(e){let i=0;for(let n of Ht(this,fe,"f")._intermediateResultReceiverSet){i++;for(let r of e){if("onTaskResultsReceived"===r.info.callbackName){for(let e of r.intermediateResultUnits)e.originalImageTag=t.tag?t.tag:null;n[r.info.callbackName]&&n[r.info.callbackName]({intermediateResultUnits:r.intermediateResultUnits},r.info)}else n[r.info.callbackName]&&n[r.info.callbackName](r.result,r.info);i===Ht(this,fe,"f")._intermediateResultReceiverSet.size&&delete r.info.callbackName}}}}return r&&r.hasOwnProperty("intermediateResult")&&delete r.intermediateResult,Xt(this,ve,0,"f"),h.resolve(r)}catch(t){return h.reject(t)}}},be._onLog&&be._onLog(`send buffer to worker: ${Date.now()}`),st.postMessage({type:"cvr_capture",id:a,instanceID:this._instanceID,body:{bytes:i,width:n,height:r,stride:s,format:o,templateName:e||"",isScanner:Ht(this,ye,"f")}},[i.buffer]),h}async initSettings(t){return Se(this),t&&["string","object"].includes(typeof t)?("string"==typeof t?t.trimStart().startsWith("{")||(t=await A(t,"text")):"object"==typeof t&&(t=JSON.stringify(t)),await new Promise(((e,i)=>{let n=at();ht[n]=async n=>{if(n.success){const r=JSON.parse(n.response);if(0!==r.errorCode){let t=new Error(r.errorString?r.errorString:"Init Settings Failed.");return t.errorCode=r.errorCode,i(t)}const s=JSON.parse(t);this._currentSettings=s;let o=[],a=s.CaptureVisionTemplates;for(let t=0;t{let n=at();ht[n]=async t=>{if(t.success){const n=JSON.parse(t.response);if(0!==n.errorCode){let t=new Error(n.errorString);return t.errorCode=n.errorCode,i(t)}return e(JSON.parse(n.data))}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},st.postMessage({type:"cvr_outputSettings",id:n,instanceID:this._instanceID,body:{templateName:t||"*"}})}))}async outputSettingsToFile(t,e,i){const n=await this.outputSettings(t),r=new Blob([JSON.stringify(n,null,2,(function(t,e){return e instanceof Array?JSON.stringify(e):e}),2)],{type:"application/json"});if(i){const t=document.createElement("a");t.href=URL.createObjectURL(r),e.endsWith(".json")&&(e=e.replace(".json","")),t.download=`${e}.json`,t.onclick=()=>{setTimeout((()=>{URL.revokeObjectURL(t.href)}),500)},t.click()}return r}async getTemplateNames(){return Se(this),await new Promise(((t,e)=>{let i=at();ht[i]=async i=>{if(i.success){const n=JSON.parse(i.response);if(0!==n.errorCode){let t=new Error(n.errorString);return t.errorCode=n.errorCode,e(t)}return t(JSON.parse(n.data))}{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},st.postMessage({type:"cvr_getTemplateNames",id:i,instanceID:this._instanceID})}))}async getSimplifiedSettings(t){Se(this),t||(t=this._currentSettings.CaptureVisionTemplates[0].Name);const e=await this.containsTask(t);return await _t(e),await new Promise(((e,i)=>{let n=at();ht[n]=async t=>{if(t.success){const n=JSON.parse(t.response);if(0!==n.errorCode){let t=new Error(n.errorString);return t.errorCode=n.errorCode,i(t)}const r=JSON.parse(n.data,((t,e)=>"barcodeFormatIds"===t?BigInt(e):e));return r.minImageCaptureInterval=this._minImageCaptureInterval,e(r)}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},st.postMessage({type:"cvr_getSimplifiedSettings",id:n,instanceID:this._instanceID,body:{templateName:t}})}))}async updateSettings(t,e){Se(this);const i=await this.containsTask(t);return await _t(i),await new Promise(((i,n)=>{let r=at();ht[r]=async t=>{if(t.success){const r=JSON.parse(t.response);if(e.minImageCaptureInterval&&e.minImageCaptureInterval>=-1&&(this._minImageCaptureInterval=e.minImageCaptureInterval),this._isOutputOriginalImage=t.isOutputOriginalImage,0!==r.errorCode){let t=new Error(r.errorString?r.errorString:"Update Settings Failed.");return t.errorCode=r.errorCode,n(t)}return this._currentSettings=await this.outputSettings("*"),i(r)}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,n(e)}},st.postMessage({type:"cvr_updateSettings",id:r,instanceID:this._instanceID,body:{settings:e,templateName:t}})}))}async resetSettings(){return Se(this),await new Promise(((t,e)=>{let i=at();ht[i]=async i=>{if(i.success){const n=JSON.parse(i.response);if(0!==n.errorCode){let t=new Error(n.errorString?n.errorString:"Reset Settings Failed.");return t.errorCode=n.errorCode,e(t)}return this._currentSettings=await this.outputSettings("*"),t(n)}{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},st.postMessage({type:"cvr_resetSettings",id:i,instanceID:this._instanceID})}))}getBufferedItemsManager(){return Ht(this,ge,"f")||Xt(this,ge,new Kt(this),"f"),Ht(this,ge,"f")}getIntermediateResultManager(){if(Se(this),!Ht(this,we,"f")&&0!==vt.bSupportIRTModule)throw new Error("The current license does not support the use of intermediate results.");return Ht(this,fe,"f")||Xt(this,fe,new $t(this),"f"),Ht(this,fe,"f")}async parseRequiredResources(t){return Se(this),await new Promise(((e,i)=>{let n=at();ht[n]=async t=>{if(t.success)return e(JSON.parse(t.resources));{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,i(e)}},st.postMessage({type:"cvr_parseRequiredResources",id:n,instanceID:this._instanceID,body:{templateName:t}})}))}async dispose(){Se(this),Ht(this,de,"f")&&this.stopCapturing(),Xt(this,ce,null,"f"),Ht(this,me,"f").clear(),Ht(this,pe,"f").clear(),Ht(this,_e,"f").clear(),Ht(this,fe,"f")._intermediateResultReceiverSet.clear(),Xt(this,Ce,!0,"f");let t=at();ht[t]=t=>{if(!t.success){let e=new Error(t.message);throw e.stack=t.stack+"\n"+e.stack,e}},st.postMessage({type:"cvr_dispose",id:t,instanceID:this._instanceID})}_getInternalData(){return{isa:Ht(this,ce,"f"),promiseStartScan:Ht(this,de,"f"),intermediateResultManager:Ht(this,fe,"f"),bufferdItemsManager:Ht(this,ge,"f"),resultReceiverSet:Ht(this,me,"f"),isaStateListenerSet:Ht(this,pe,"f"),resultFilterSet:Ht(this,_e,"f"),compressRate:Ht(this,ve,"f"),canvas:Ht(this,ue,"f"),isScanner:Ht(this,ye,"f"),innerUseTag:Ht(this,we,"f"),isDestroyed:Ht(this,Ce,"f")}}async _getWasmFilterState(){return await new Promise(((t,e)=>{let i=at();ht[i]=async i=>{if(i.success){const e=JSON.parse(i.response);return t(e)}{let t=new Error(i.message);return t.stack=i.stack+"\n"+t.stack,e(t)}},st.postMessage({type:"cvr_getWasmFilterState",id:i,instanceID:this._instanceID})}))}}async function Ie(t,e){return Se(t),await new Promise(((i,n)=>{let r=at();ht[r]=async t=>{if(t.success)return i(t.result);{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,n(e)}},st.postMessage({type:"cvr_enableResultCrossVerification",id:r,instanceID:t._instanceID,body:{verificationEnabled:e}})}))}async function xe(t,e){return Se(t),await new Promise(((i,n)=>{let r=at();ht[r]=async t=>{if(t.success)return i(t.result);{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,n(e)}},st.postMessage({type:"cvr_enableResultDeduplication",id:r,instanceID:t._instanceID,body:{duplicateFilterEnabled:e}})}))}async function Oe(t,e){return Se(t),await new Promise(((i,n)=>{let r=at();ht[r]=async t=>{if(t.success)return i(t.result);{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,n(e)}},st.postMessage({type:"cvr_setDuplicateForgetTime",id:r,instanceID:t._instanceID,body:{duplicateForgetTime:e}})}))}ce=new WeakMap,ue=new WeakMap,de=new WeakMap,fe=new WeakMap,ge=new WeakMap,me=new WeakMap,pe=new WeakMap,_e=new WeakMap,ve=new WeakMap,ye=new WeakMap,we=new WeakMap,Ce=new WeakMap,be._defaultTemplate="Default";class Ae{constructor(){this.onCapturedResultReceived=null,this.onOriginalImageResultReceived=null}}class Re{constructor(){this._observedResultUnitTypes=Ot.IRUT_ALL,this._observedTaskMap=new Map,this._parameters={setObservedResultUnitTypes:t=>{this._observedResultUnitTypes=t},getObservedResultUnitTypes:()=>this._observedResultUnitTypes,isResultUnitTypeObserved:t=>!!(t&this._observedResultUnitTypes),addObservedTask:t=>{this._observedTaskMap.set(t,!0)},removeObservedTask:t=>{this._observedTaskMap.set(t,!1)},isTaskObserved:t=>0===this._observedTaskMap.size||!!this._observedTaskMap.get(t)},this.onTaskResultsReceived=null,this.onPredetectedRegionsReceived=null,this.onColourImageUnitReceived=null,this.onScaledDownColourImageUnitReceived=null,this.onGrayscaleImageUnitReceived=null,this.onTransformedGrayscaleImageUnitReceived=null,this.onEnhancedGrayscaleImageUnitReceived=null,this.onBinaryImageUnitReceived=null,this.onTextureDetectionResultUnitReceived=null,this.onTextureRemovedGrayscaleImageUnitReceived=null,this.onTextureRemovedBinaryImageUnitReceived=null,this.onContoursUnitReceived=null,this.onLineSegmentsUnitReceived=null,this.onTextZonesUnitReceived=null,this.onTextRemovedBinaryImageUnitReceived=null,this.onShortLinesUnitReceived=null}getObservationParameters(){return this._parameters}}var De;!function(t){t.PT_DEFAULT="Default",t.PT_READ_BARCODES="ReadBarcodes_Default",t.PT_RECOGNIZE_TEXT_LINES="RecognizeTextLines_Default",t.PT_DETECT_DOCUMENT_BOUNDARIES="DetectDocumentBoundaries_Default",t.PT_DETECT_AND_NORMALIZE_DOCUMENT="DetectAndNormalizeDocument_Default",t.PT_NORMALIZE_DOCUMENT="NormalizeDocument_Default",t.PT_READ_BARCODES_SPEED_FIRST="ReadBarcodes_SpeedFirst",t.PT_READ_BARCODES_READ_RATE_FIRST="ReadBarcodes_ReadRateFirst",t.PT_READ_BARCODES_BALANCE="ReadBarcodes_Balance",t.PT_READ_SINGLE_BARCODE="ReadBarcodes_Balanced",t.PT_READ_DENSE_BARCODES="ReadDenseBarcodes",t.PT_READ_DISTANT_BARCODES="ReadDistantBarcodes",t.PT_RECOGNIZE_NUMBERS="RecognizeNumbers",t.PT_RECOGNIZE_LETTERS="RecognizeLetters",t.PT_RECOGNIZE_NUMBERS_AND_LETTERS="RecognizeNumbersAndLetters",t.PT_RECOGNIZE_NUMBERS_AND_UPPERCASE_LETTERS="RecognizeNumbersAndUppercaseLetters",t.PT_RECOGNIZE_UPPERCASE_LETTERS="RecognizeUppercaseLetters"}(De||(De={}));const Le="undefined"==typeof self,Me="function"==typeof importScripts,Fe=(()=>{if(!Me){if(!Le&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})();vt.engineResourcePaths.dce={version:"4.1.1",path:Fe,isInternal:!0},mt.dce={wasm:!1,js:!1},gt.dce={};let Pe,ke,Be,Ne,je,Ue=class{static getVersion(){return"4.1.1"}};function Ve(t,e,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(t):n?n.value:e.get(t)}function Ge(t,e,i,n,r){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?r.call(t,i):r?r.value=i:e.set(t,i),i}"function"==typeof SuppressedError&&SuppressedError,"undefined"!=typeof navigator&&(Pe=navigator,ke=Pe.userAgent,Be=Pe.platform,Ne=Pe.mediaDevices),function(){if(!Le){const t={Edge:{search:"Edg",verSearch:"Edg"},OPR:null,Chrome:null,Safari:{str:Pe.vendor,search:"Apple",verSearch:["Version","iPhone OS","CPU OS"]},Firefox:null,Explorer:{search:"MSIE",verSearch:"MSIE"}},e={HarmonyOS:null,Android:null,iPhone:null,iPad:null,Windows:{str:Be,search:"Win"},Mac:{str:Be},Linux:{str:Be}};let i="unknownBrowser",n=0,r="unknownOS";for(let e in t){const r=t[e]||{};let s=r.str||ke,o=r.search||e,a=r.verStr||ke,h=r.verSearch||e;if(h instanceof Array||(h=[h]),-1!=s.indexOf(o)){i=e;for(let t of h){let e=a.indexOf(t);if(-1!=e){n=parseFloat(a.substring(e+t.length+1));break}}break}}for(let t in e){const i=e[t]||{};let n=i.str||ke,s=i.search||t;if(-1!=n.indexOf(s)){r=t;break}}"Linux"==r&&-1!=ke.indexOf("Windows NT")&&(r="HarmonyOS"),je={browser:i,version:n,OS:r}}Le&&(je={browser:"ssr",version:0,OS:"ssr"})}();const We="undefined"!=typeof WebAssembly&&ke&&!(/Safari/.test(ke)&&!/Chrome/.test(ke)&&/\(.+\s11_2_([2-6]).*\)/.test(ke)),Ye=!("undefined"==typeof Worker),He=!(!Ne||!Ne.getUserMedia),Xe=async()=>{let t=!1;if(He)try{(await Ne.getUserMedia({video:!0})).getTracks().forEach((t=>{t.stop()})),t=!0}catch(t){}return t};"Chrome"===je.browser&&je.version>66||"Safari"===je.browser&&je.version>13||"OPR"===je.browser&&je.version>43||"Edge"===je.browser&&je.version;var ze={653:(t,e,i)=>{var n,r,s,o,a,h,l,c,u,d,f,g,m,p,_,v,y,w,C,E,S,T=T||{version:"5.2.1"};if(e.fabric=T,"undefined"!=typeof document&&"undefined"!=typeof window)document instanceof("undefined"!=typeof HTMLDocument?HTMLDocument:Document)?T.document=document:T.document=document.implementation.createHTMLDocument(""),T.window=window;else{var b=new(i(192).JSDOM)(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"),{features:{FetchExternalResources:["img"]},resources:"usable"}).window;T.document=b.document,T.jsdomImplForWrapper=i(898).implForWrapper,T.nodeCanvas=i(245).Canvas,T.window=b,DOMParser=T.window.DOMParser}function I(t,e){var i=t.canvas,n=e.targetCanvas,r=n.getContext("2d");r.translate(0,n.height),r.scale(1,-1);var s=i.height-n.height;r.drawImage(i,0,s,n.width,n.height,0,0,n.width,n.height)}function x(t,e){var i=e.targetCanvas.getContext("2d"),n=e.destinationWidth,r=e.destinationHeight,s=n*r*4,o=new Uint8Array(this.imageBuffer,0,s),a=new Uint8ClampedArray(this.imageBuffer,0,s);t.readPixels(0,0,n,r,t.RGBA,t.UNSIGNED_BYTE,o);var h=new ImageData(a,n,r);i.putImageData(h,0,0)}T.isTouchSupported="ontouchstart"in T.window||"ontouchstart"in T.document||T.window&&T.window.navigator&&T.window.navigator.maxTouchPoints>0,T.isLikelyNode="undefined"!=typeof Buffer&&"undefined"==typeof window,T.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-dashoffset","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id","paint-order","vector-effect","instantiated_by_use","clip-path"],T.DPI=96,T.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)",T.commaWsp="(?:\\s+,?\\s*|,\\s*)",T.rePathCommand=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/gi,T.reNonWord=/[ \n\.,;!\?\-]/,T.fontPaths={},T.iMatrix=[1,0,0,1,0,0],T.svgNS="http://www.w3.org/2000/svg",T.perfLimitSizeTotal=2097152,T.maxCacheSideLimit=4096,T.minCacheSideLimit=256,T.charWidthsCache={},T.textureSize=2048,T.disableStyleCopyPaste=!1,T.enableGLFiltering=!0,T.devicePixelRatio=T.window.devicePixelRatio||T.window.webkitDevicePixelRatio||T.window.mozDevicePixelRatio||1,T.browserShadowBlurConstant=1,T.arcToSegmentsCache={},T.boundsOfCurveCache={},T.cachesBoundsOfCurve=!0,T.forceGLPutImageData=!1,T.initFilterBackend=function(){return T.enableGLFiltering&&T.isWebglSupported&&T.isWebglSupported(T.textureSize)?(console.log("max texture size: "+T.maxTextureSize),new T.WebglFilterBackend({tileSize:T.textureSize})):T.Canvas2dFilterBackend?new T.Canvas2dFilterBackend:void 0},"undefined"!=typeof document&&"undefined"!=typeof window&&(window.fabric=T),function(){function t(t,e){if(this.__eventListeners[t]){var i=this.__eventListeners[t];e?i[i.indexOf(e)]=!1:T.util.array.fill(i,!1)}}function e(t,e){var i=function(){e.apply(this,arguments),this.off(t,i)}.bind(this);this.on(t,i)}T.Observable={fire:function(t,e){if(!this.__eventListeners)return this;var i=this.__eventListeners[t];if(!i)return this;for(var n=0,r=i.length;n-1||!!e&&this._objects.some((function(e){return"function"==typeof e.contains&&e.contains(t,!0)}))},complexity:function(){return this._objects.reduce((function(t,e){return t+(e.complexity?e.complexity():0)}),0)}},T.CommonMethods={_setOptions:function(t){for(var e in t)this.set(e,t[e])},_initGradient:function(t,e){!t||!t.colorStops||t instanceof T.Gradient||this.set(e,new T.Gradient(t))},_initPattern:function(t,e,i){!t||!t.source||t instanceof T.Pattern?i&&i():this.set(e,new T.Pattern(t,i))},_setObject:function(t){for(var e in t)this._set(e,t[e])},set:function(t,e){return"object"==typeof t?this._setObject(t):this._set(t,e),this},_set:function(t,e){this[t]=e},toggle:function(t){var e=this.get(t);return"boolean"==typeof e&&this.set(t,!e),this},get:function(t){return this[t]}},n=e,r=Math.sqrt,s=Math.atan2,o=Math.pow,a=Math.PI/180,h=Math.PI/2,T.util={cos:function(t){if(0===t)return 1;switch(t<0&&(t=-t),t/h){case 1:case 3:return 0;case 2:return-1}return Math.cos(t)},sin:function(t){if(0===t)return 0;var e=1;switch(t<0&&(e=-1),t/h){case 1:return e;case 2:return 0;case 3:return-e}return Math.sin(t)},removeFromArray:function(t,e){var i=t.indexOf(e);return-1!==i&&t.splice(i,1),t},getRandomInt:function(t,e){return Math.floor(Math.random()*(e-t+1))+t},degreesToRadians:function(t){return t*a},radiansToDegrees:function(t){return t/a},rotatePoint:function(t,e,i){var n=new T.Point(t.x-e.x,t.y-e.y),r=T.util.rotateVector(n,i);return new T.Point(r.x,r.y).addEquals(e)},rotateVector:function(t,e){var i=T.util.sin(e),n=T.util.cos(e);return{x:t.x*n-t.y*i,y:t.x*i+t.y*n}},createVector:function(t,e){return new T.Point(e.x-t.x,e.y-t.y)},calcAngleBetweenVectors:function(t,e){return Math.acos((t.x*e.x+t.y*e.y)/(Math.hypot(t.x,t.y)*Math.hypot(e.x,e.y)))},getHatVector:function(t){return new T.Point(t.x,t.y).multiply(1/Math.hypot(t.x,t.y))},getBisector:function(t,e,i){var n=T.util.createVector(t,e),r=T.util.createVector(t,i),s=T.util.calcAngleBetweenVectors(n,r),o=s*(0===T.util.calcAngleBetweenVectors(T.util.rotateVector(n,s),r)?1:-1)/2;return{vector:T.util.getHatVector(T.util.rotateVector(n,o)),angle:s}},projectStrokeOnPoints:function(t,e,i){var n=[],r=e.strokeWidth/2,s=e.strokeUniform?new T.Point(1/e.scaleX,1/e.scaleY):new T.Point(1,1),o=function(t){var e=r/Math.hypot(t.x,t.y);return new T.Point(t.x*e*s.x,t.y*e*s.y)};return t.length<=1||t.forEach((function(a,h){var l,c,u=new T.Point(a.x,a.y);0===h?(c=t[h+1],l=i?o(T.util.createVector(c,u)).addEquals(u):t[t.length-1]):h===t.length-1?(l=t[h-1],c=i?o(T.util.createVector(l,u)).addEquals(u):t[0]):(l=t[h-1],c=t[h+1]);var d,f,g=T.util.getBisector(u,l,c),m=g.vector,p=g.angle;if("miter"===e.strokeLineJoin&&(d=-r/Math.sin(p/2),f=new T.Point(m.x*d*s.x,m.y*d*s.y),Math.hypot(f.x,f.y)/r<=e.strokeMiterLimit))return n.push(u.add(f)),void n.push(u.subtract(f));d=-r*Math.SQRT2,f=new T.Point(m.x*d*s.x,m.y*d*s.y),n.push(u.add(f)),n.push(u.subtract(f))})),n},transformPoint:function(t,e,i){return i?new T.Point(e[0]*t.x+e[2]*t.y,e[1]*t.x+e[3]*t.y):new T.Point(e[0]*t.x+e[2]*t.y+e[4],e[1]*t.x+e[3]*t.y+e[5])},makeBoundingBoxFromPoints:function(t,e){if(e)for(var i=0;i0&&(e>n?e-=n:e=0,i>n?i-=n:i=0);var r,s=!0,o=t.getImageData(e,i,2*n||1,2*n||1),a=o.data.length;for(r=3;r=r?s-r:2*Math.PI-(r-s)}function s(t,e,i){for(var s=i[1],o=i[2],a=i[3],h=i[4],l=i[5],c=function(t,e,i,s,o,a,h){var l=Math.PI,c=h*l/180,u=T.util.sin(c),d=T.util.cos(c),f=0,g=0,m=-d*t*.5-u*e*.5,p=-d*e*.5+u*t*.5,_=(i=Math.abs(i))*i,v=(s=Math.abs(s))*s,y=p*p,w=m*m,C=_*v-_*y-v*w,E=0;if(C<0){var S=Math.sqrt(1-C/(_*v));i*=S,s*=S}else E=(o===a?-1:1)*Math.sqrt(C/(_*y+v*w));var b=E*i*p/s,I=-E*s*m/i,x=d*b-u*I+.5*t,O=u*b+d*I+.5*e,A=r(1,0,(m-b)/i,(p-I)/s),R=r((m-b)/i,(p-I)/s,(-m-b)/i,(-p-I)/s);0===a&&R>0?R-=2*l:1===a&&R<0&&(R+=2*l);for(var D=Math.ceil(Math.abs(R/l*2)),L=[],M=R/D,F=8/3*Math.sin(M/4)*Math.sin(M/4)/Math.sin(M/2),P=A+M,k=0;kE)for(var b=1,I=m.length;b2;for(e=e||0,l&&(a=t[2].xt[i-2].x?1:r.x===t[i-2].x?0:-1,h=r.y>t[i-2].y?1:r.y===t[i-2].y?0:-1),n.push(["L",r.x+a*e,r.y+h*e]),n},T.util.getPathSegmentsInfo=d,T.util.getBoundsOfCurve=function(e,i,n,r,s,o,a,h){var l;if(T.cachesBoundsOfCurve&&(l=t.call(arguments),T.boundsOfCurveCache[l]))return T.boundsOfCurveCache[l];var c,u,d,f,g,m,p,_,v=Math.sqrt,y=Math.min,w=Math.max,C=Math.abs,E=[],S=[[],[]];u=6*e-12*n+6*s,c=-3*e+9*n-9*s+3*a,d=3*n-3*e;for(var b=0;b<2;++b)if(b>0&&(u=6*i-12*r+6*o,c=-3*i+9*r-9*o+3*h,d=3*r-3*i),C(c)<1e-12){if(C(u)<1e-12)continue;0<(f=-d/u)&&f<1&&E.push(f)}else(p=u*u-4*d*c)<0||(0<(g=(-u+(_=v(p)))/(2*c))&&g<1&&E.push(g),0<(m=(-u-_)/(2*c))&&m<1&&E.push(m));for(var I,x,O,A=E.length,R=A;A--;)I=(O=1-(f=E[A]))*O*O*e+3*O*O*f*n+3*O*f*f*s+f*f*f*a,S[0][A]=I,x=O*O*O*i+3*O*O*f*r+3*O*f*f*o+f*f*f*h,S[1][A]=x;S[0][R]=e,S[1][R]=i,S[0][R+1]=a,S[1][R+1]=h;var D=[{x:y.apply(null,S[0]),y:y.apply(null,S[1])},{x:w.apply(null,S[0]),y:w.apply(null,S[1])}];return T.cachesBoundsOfCurve&&(T.boundsOfCurveCache[l]=D),D},T.util.getPointOnPath=function(t,e,i){i||(i=d(t));for(var n=0;e-i[n].length>0&&n1e-4;)i=h(s),r=s,(n=o(l.x,l.y,i.x,i.y))+a>e?(s-=c,c/=2):(l=i,s+=c,a+=n);return i.angle=u(r),i}(s,e)}},T.util.transformPath=function(t,e,i){return i&&(e=T.util.multiplyTransformMatrices(e,[1,0,0,1,-i.x,-i.y])),t.map((function(t){for(var i=t.slice(0),n={},r=1;r=e}))}}}(),function(){function t(e,i,n){if(n)if(!T.isLikelyNode&&i instanceof Element)e=i;else if(i instanceof Array){e=[];for(var r=0,s=i.length;r57343)return t.charAt(e);if(55296<=i&&i<=56319){if(t.length<=e+1)throw"High surrogate without following low surrogate";var n=t.charCodeAt(e+1);if(56320>n||n>57343)throw"High surrogate without following low surrogate";return t.charAt(e)+t.charAt(e+1)}if(0===e)throw"Low surrogate without preceding high surrogate";var r=t.charCodeAt(e-1);if(55296>r||r>56319)throw"Low surrogate without preceding high surrogate";return!1}T.util.string={camelize:function(t){return t.replace(/-+(.)?/g,(function(t,e){return e?e.toUpperCase():""}))},capitalize:function(t,e){return t.charAt(0).toUpperCase()+(e?t.slice(1):t.slice(1).toLowerCase())},escapeXml:function(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")},graphemeSplit:function(e){var i,n=0,r=[];for(n=0;n-1?t.prototype[r]=function(t){return function(){var i=this.constructor.superclass;this.constructor.superclass=n;var r=e[t].apply(this,arguments);if(this.constructor.superclass=i,"initialize"!==t)return r}}(r):t.prototype[r]=e[r],i&&(e.toString!==Object.prototype.toString&&(t.prototype.toString=e.toString),e.valueOf!==Object.prototype.valueOf&&(t.prototype.valueOf=e.valueOf))};function r(){}function s(e){for(var i=null,n=this;n.constructor.superclass;){var r=n.constructor.superclass.prototype[e];if(n[e]!==r){i=r;break}n=n.constructor.superclass.prototype}return i?arguments.length>1?i.apply(this,t.call(arguments,1)):i.call(this):console.log("tried to callSuper "+e+", method not found in prototype chain",this)}T.util.createClass=function(){var i=null,o=t.call(arguments,0);function a(){this.initialize.apply(this,arguments)}"function"==typeof o[0]&&(i=o.shift()),a.superclass=i,a.subclasses=[],i&&(r.prototype=i.prototype,a.prototype=new r,i.subclasses.push(a));for(var h=0,l=o.length;h-1||"touch"===t.pointerType},d="string"==typeof(u=T.document.createElement("div")).style.opacity,f="string"==typeof u.style.filter,g=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,m=function(t){return t},d?m=function(t,e){return t.style.opacity=e,t}:f&&(m=function(t,e){var i=t.style;return t.currentStyle&&!t.currentStyle.hasLayout&&(i.zoom=1),g.test(i.filter)?(e=e>=.9999?"":"alpha(opacity="+100*e+")",i.filter=i.filter.replace(g,e)):i.filter+=" alpha(opacity="+100*e+")",t}),T.util.setStyle=function(t,e){var i=t.style;if(!i)return t;if("string"==typeof e)return t.style.cssText+=";"+e,e.indexOf("opacity")>-1?m(t,e.match(/opacity:\s*(\d?\.?\d*)/)[1]):t;for(var n in e)"opacity"===n?m(t,e[n]):i["float"===n||"cssFloat"===n?void 0===i.styleFloat?"cssFloat":"styleFloat":n]=e[n];return t},function(){var t,e,i,n,r=Array.prototype.slice,s=function(t){return r.call(t,0)};try{t=s(T.document.childNodes)instanceof Array}catch(t){}function o(t,e){var i=T.document.createElement(t);for(var n in e)"class"===n?i.className=e[n]:"for"===n?i.htmlFor=e[n]:i.setAttribute(n,e[n]);return i}function a(t){for(var e=0,i=0,n=T.document.documentElement,r=T.document.body||{scrollLeft:0,scrollTop:0};t&&(t.parentNode||t.host)&&((t=t.parentNode||t.host)===T.document?(e=r.scrollLeft||n.scrollLeft||0,i=r.scrollTop||n.scrollTop||0):(e+=t.scrollLeft||0,i+=t.scrollTop||0),1!==t.nodeType||"fixed"!==t.style.position););return{left:e,top:i}}t||(s=function(t){for(var e=new Array(t.length),i=t.length;i--;)e[i]=t[i];return e}),e=T.document.defaultView&&T.document.defaultView.getComputedStyle?function(t,e){var i=T.document.defaultView.getComputedStyle(t,null);return i?i[e]:void 0}:function(t,e){var i=t.style[e];return!i&&t.currentStyle&&(i=t.currentStyle[e]),i},i=T.document.documentElement.style,n="userSelect"in i?"userSelect":"MozUserSelect"in i?"MozUserSelect":"WebkitUserSelect"in i?"WebkitUserSelect":"KhtmlUserSelect"in i?"KhtmlUserSelect":"",T.util.makeElementUnselectable=function(t){return void 0!==t.onselectstart&&(t.onselectstart=T.util.falseFunction),n?t.style[n]="none":"string"==typeof t.unselectable&&(t.unselectable="on"),t},T.util.makeElementSelectable=function(t){return void 0!==t.onselectstart&&(t.onselectstart=null),n?t.style[n]="":"string"==typeof t.unselectable&&(t.unselectable=""),t},T.util.setImageSmoothing=function(t,e){t.imageSmoothingEnabled=t.imageSmoothingEnabled||t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled||t.oImageSmoothingEnabled,t.imageSmoothingEnabled=e},T.util.getById=function(t){return"string"==typeof t?T.document.getElementById(t):t},T.util.toArray=s,T.util.addClass=function(t,e){t&&-1===(" "+t.className+" ").indexOf(" "+e+" ")&&(t.className+=(t.className?" ":"")+e)},T.util.makeElement=o,T.util.wrapElement=function(t,e,i){return"string"==typeof e&&(e=o(e,i)),t.parentNode&&t.parentNode.replaceChild(e,t),e.appendChild(t),e},T.util.getScrollLeftTop=a,T.util.getElementOffset=function(t){var i,n,r=t&&t.ownerDocument,s={left:0,top:0},o={left:0,top:0},h={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!r)return o;for(var l in h)o[h[l]]+=parseInt(e(t,l),10)||0;return i=r.documentElement,void 0!==t.getBoundingClientRect&&(s=t.getBoundingClientRect()),n=a(t),{left:s.left+n.left-(i.clientLeft||0)+o.left,top:s.top+n.top-(i.clientTop||0)+o.top}},T.util.getNodeCanvas=function(t){var e=T.jsdomImplForWrapper(t);return e._canvas||e._image},T.util.cleanUpJsdomNode=function(t){if(T.isLikelyNode){var e=T.jsdomImplForWrapper(t);e&&(e._image=null,e._canvas=null,e._currentSrc=null,e._attributes=null,e._classList=null)}}}(),function(){function t(){}T.util.request=function(e,i){i||(i={});var n=i.method?i.method.toUpperCase():"GET",r=i.onComplete||function(){},s=new T.window.XMLHttpRequest,o=i.body||i.parameters;return s.onreadystatechange=function(){4===s.readyState&&(r(s),s.onreadystatechange=t)},"GET"===n&&(o=null,"string"==typeof i.parameters&&(e=function(t,e){return t+(/\?/.test(t)?"&":"?")+e}(e,i.parameters))),s.open(n,e,!0),"POST"!==n&&"PUT"!==n||s.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),s.send(o),s}}(),T.log=console.log,T.warn=console.warn,function(){var t=T.util.object.extend,e=T.util.object.clone,i=[];function n(){return!1}function r(t,e,i,n){return-i*Math.cos(t/n*(Math.PI/2))+i+e}T.util.object.extend(i,{cancelAll:function(){var t=this.splice(0);return t.forEach((function(t){t.cancel()})),t},cancelByCanvas:function(t){if(!t)return[];var e=this.filter((function(e){return"object"==typeof e.target&&e.target.canvas===t}));return e.forEach((function(t){t.cancel()})),e},cancelByTarget:function(t){var e=this.findAnimationsByTarget(t);return e.forEach((function(t){t.cancel()})),e},findAnimationIndex:function(t){return this.indexOf(this.findAnimation(t))},findAnimation:function(t){return this.find((function(e){return e.cancel===t}))},findAnimationsByTarget:function(t){return t?this.filter((function(e){return e.target===t})):[]}});var s=T.window.requestAnimationFrame||T.window.webkitRequestAnimationFrame||T.window.mozRequestAnimationFrame||T.window.oRequestAnimationFrame||T.window.msRequestAnimationFrame||function(t){return T.window.setTimeout(t,1e3/60)},o=T.window.cancelAnimationFrame||T.window.clearTimeout;function a(){return s.apply(T.window,arguments)}T.util.animate=function(i){i||(i={});var s,o=!1,h=function(){var t=T.runningAnimations.indexOf(s);return t>-1&&T.runningAnimations.splice(t,1)[0]};return s=t(e(i),{cancel:function(){return o=!0,h()},currentValue:"startValue"in i?i.startValue:0,completionRate:0,durationRate:0}),T.runningAnimations.push(s),a((function(t){var e,l=t||+new Date,c=i.duration||500,u=l+c,d=i.onChange||n,f=i.abort||n,g=i.onComplete||n,m=i.easing||r,p="startValue"in i&&i.startValue.length>0,_="startValue"in i?i.startValue:0,v="endValue"in i?i.endValue:100,y=i.byValue||(p?_.map((function(t,e){return v[e]-_[e]})):v-_);i.onStart&&i.onStart(),function t(i){var n=(e=i||+new Date)>u?c:e-l,r=n/c,w=p?_.map((function(t,e){return m(n,_[e],y[e],c)})):m(n,_,y,c),C=p?Math.abs((w[0]-_[0])/y[0]):Math.abs((w-_)/y);if(s.currentValue=p?w.slice():w,s.completionRate=C,s.durationRate=r,!o){if(!f(w,C,r))return e>u?(s.currentValue=p?v.slice():v,s.completionRate=1,s.durationRate=1,d(p?v.slice():v,1,1),g(v,1,1),void h()):(d(w,C,r),void a(t));h()}}(l)})),s.cancel},T.util.requestAnimFrame=a,T.util.cancelAnimFrame=function(){return o.apply(T.window,arguments)},T.runningAnimations=i}(),function(){function t(t,e,i){var n="rgba("+parseInt(t[0]+i*(e[0]-t[0]),10)+","+parseInt(t[1]+i*(e[1]-t[1]),10)+","+parseInt(t[2]+i*(e[2]-t[2]),10);return(n+=","+(t&&e?parseFloat(t[3]+i*(e[3]-t[3])):1))+")"}T.util.animateColor=function(e,i,n,r){var s=new T.Color(e).getSource(),o=new T.Color(i).getSource(),a=r.onComplete,h=r.onChange;return r=r||{},T.util.animate(T.util.object.extend(r,{duration:n||500,startValue:s,endValue:o,byValue:o,easing:function(e,i,n,s){return t(i,n,r.colorEasing?r.colorEasing(e,s):1-Math.cos(e/s*(Math.PI/2)))},onComplete:function(e,i,n){if(a)return a(t(o,o,0),i,n)},onChange:function(e,i,n){if(h){if(Array.isArray(e))return h(t(e,e,0),i,n);h(e,i,n)}}}))}}(),function(){function t(t,e,i,n){return t-1&&c>-1&&c-1)&&(i="stroke")}else{if("href"===t||"xlink:href"===t||"font"===t)return i;if("imageSmoothing"===t)return"optimizeQuality"===i;a=h?i.map(s):s(i,r)}}else i="";return!h&&isNaN(a)?i:a}function f(t){return new RegExp("^("+t.join("|")+")\\b","i")}function g(t,e){var i,n,r,s,o=[];for(r=0,s=e.length;r1;)h.shift(),l=e.util.multiplyTransformMatrices(l,h[0]);return l}}();var v=new RegExp("^\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*$");function y(t){if(!e.svgViewBoxElementsRegEx.test(t.nodeName))return{};var i,n,r,o,a,h,l=t.getAttribute("viewBox"),c=1,u=1,d=t.getAttribute("width"),f=t.getAttribute("height"),g=t.getAttribute("x")||0,m=t.getAttribute("y")||0,p=t.getAttribute("preserveAspectRatio")||"",_=!l||!(l=l.match(v)),y=!d||!f||"100%"===d||"100%"===f,w=_&&y,C={},E="",S=0,T=0;if(C.width=0,C.height=0,C.toBeParsed=w,_&&(g||m)&&t.parentNode&&"#document"!==t.parentNode.nodeName&&(E=" translate("+s(g)+" "+s(m)+") ",a=(t.getAttribute("transform")||"")+E,t.setAttribute("transform",a),t.removeAttribute("x"),t.removeAttribute("y")),w)return C;if(_)return C.width=s(d),C.height=s(f),C;if(i=-parseFloat(l[1]),n=-parseFloat(l[2]),r=parseFloat(l[3]),o=parseFloat(l[4]),C.minX=i,C.minY=n,C.viewBoxWidth=r,C.viewBoxHeight=o,y?(C.width=r,C.height=o):(C.width=s(d),C.height=s(f),c=C.width/r,u=C.height/o),"none"!==(p=e.util.parsePreserveAspectRatioAttribute(p)).alignX&&("meet"===p.meetOrSlice&&(u=c=c>u?u:c),"slice"===p.meetOrSlice&&(u=c=c>u?c:u),S=C.width-r*c,T=C.height-o*c,"Mid"===p.alignX&&(S/=2),"Mid"===p.alignY&&(T/=2),"Min"===p.alignX&&(S=0),"Min"===p.alignY&&(T=0)),1===c&&1===u&&0===i&&0===n&&0===g&&0===m)return C;if((g||m)&&"#document"!==t.parentNode.nodeName&&(E=" translate("+s(g)+" "+s(m)+") "),a=E+" matrix("+c+" 0 0 "+u+" "+(i*c+S)+" "+(n*u+T)+") ","svg"===t.nodeName){for(h=t.ownerDocument.createElementNS(e.svgNS,"g");t.firstChild;)h.appendChild(t.firstChild);t.appendChild(h)}else(h=t).removeAttribute("x"),h.removeAttribute("y"),a=h.getAttribute("transform")+a;return h.setAttribute("transform",a),C}function w(t,e){var i="xlink:href",n=_(t,e.getAttribute(i).slice(1));if(n&&n.getAttribute(i)&&w(t,n),["gradientTransform","x1","x2","y1","y2","gradientUnits","cx","cy","r","fx","fy"].forEach((function(t){n&&!e.hasAttribute(t)&&n.hasAttribute(t)&&e.setAttribute(t,n.getAttribute(t))})),!e.children.length)for(var r=n.cloneNode(!0);r.firstChild;)e.appendChild(r.firstChild);e.removeAttribute(i)}e.parseSVGDocument=function(t,i,r,s){if(t){!function(t){for(var i=g(t,["use","svg:use"]),n=0;i.length&&nt.x&&this.y>t.y},gte:function(t){return this.x>=t.x&&this.y>=t.y},lerp:function(t,e){return void 0===e&&(e=.5),e=Math.max(Math.min(1,e),0),new i(this.x+(t.x-this.x)*e,this.y+(t.y-this.y)*e)},distanceFrom:function(t){var e=this.x-t.x,i=this.y-t.y;return Math.sqrt(e*e+i*i)},midPointFrom:function(t){return this.lerp(t)},min:function(t){return new i(Math.min(this.x,t.x),Math.min(this.y,t.y))},max:function(t){return new i(Math.max(this.x,t.x),Math.max(this.y,t.y))},toString:function(){return this.x+","+this.y},setXY:function(t,e){return this.x=t,this.y=e,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setFromPoint:function(t){return this.x=t.x,this.y=t.y,this},swap:function(t){var e=this.x,i=this.y;this.x=t.x,this.y=t.y,t.x=e,t.y=i},clone:function(){return new i(this.x,this.y)}})}(e),function(t){var e=t.fabric||(t.fabric={});function i(t){this.status=t,this.points=[]}e.Intersection?e.warn("fabric.Intersection is already defined"):(e.Intersection=i,e.Intersection.prototype={constructor:i,appendPoint:function(t){return this.points.push(t),this},appendPoints:function(t){return this.points=this.points.concat(t),this}},e.Intersection.intersectLineLine=function(t,n,r,s){var o,a=(s.x-r.x)*(t.y-r.y)-(s.y-r.y)*(t.x-r.x),h=(n.x-t.x)*(t.y-r.y)-(n.y-t.y)*(t.x-r.x),l=(s.y-r.y)*(n.x-t.x)-(s.x-r.x)*(n.y-t.y);if(0!==l){var c=a/l,u=h/l;0<=c&&c<=1&&0<=u&&u<=1?(o=new i("Intersection")).appendPoint(new e.Point(t.x+c*(n.x-t.x),t.y+c*(n.y-t.y))):o=new i}else o=new i(0===a||0===h?"Coincident":"Parallel");return o},e.Intersection.intersectLinePolygon=function(t,e,n){var r,s,o,a,h=new i,l=n.length;for(a=0;a0&&(h.status="Intersection"),h},e.Intersection.intersectPolygonPolygon=function(t,e){var n,r=new i,s=t.length;for(n=0;n0&&(r.status="Intersection"),r},e.Intersection.intersectPolygonRectangle=function(t,n,r){var s=n.min(r),o=n.max(r),a=new e.Point(o.x,s.y),h=new e.Point(s.x,o.y),l=i.intersectLinePolygon(s,a,t),c=i.intersectLinePolygon(a,o,t),u=i.intersectLinePolygon(o,h,t),d=i.intersectLinePolygon(h,s,t),f=new i;return f.appendPoints(l.points),f.appendPoints(c.points),f.appendPoints(u.points),f.appendPoints(d.points),f.points.length>0&&(f.status="Intersection"),f})}(e),function(t){var e=t.fabric||(t.fabric={});function i(t){t?this._tryParsingColor(t):this.setSource([0,0,0,1])}function n(t,e,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+6*(e-t)*i:i<.5?e:i<2/3?t+(e-t)*(2/3-i)*6:t}e.Color?e.warn("fabric.Color is already defined."):(e.Color=i,e.Color.prototype={_tryParsingColor:function(t){var e;t in i.colorNameMap&&(t=i.colorNameMap[t]),"transparent"===t&&(e=[255,255,255,0]),e||(e=i.sourceFromHex(t)),e||(e=i.sourceFromRgb(t)),e||(e=i.sourceFromHsl(t)),e||(e=[0,0,0,1]),e&&this.setSource(e)},_rgbToHsl:function(t,i,n){t/=255,i/=255,n/=255;var r,s,o,a=e.util.array.max([t,i,n]),h=e.util.array.min([t,i,n]);if(o=(a+h)/2,a===h)r=s=0;else{var l=a-h;switch(s=o>.5?l/(2-a-h):l/(a+h),a){case t:r=(i-n)/l+(i0)-(t<0)||+t};function f(t,e){var i=t.angle+u(Math.atan2(e.y,e.x))+360;return Math.round(i%360/45)}function g(t,i){var n=i.transform.target,r=n.canvas,s=e.util.object.clone(i);s.target=n,r&&r.fire("object:"+t,s),n.fire(t,i)}function m(t,e){var i=e.canvas,n=t[i.uniScaleKey];return i.uniformScaling&&!n||!i.uniformScaling&&n}function p(t){return t.originX===l&&t.originY===l}function _(t,e,i){var n=t.lockScalingX,r=t.lockScalingY;return!((!n||!r)&&(e||!n&&!r||!i)&&(!n||"x"!==e)&&(!r||"y"!==e))}function v(t,e,i,n){return{e:t,transform:e,pointer:{x:i,y:n}}}function y(t){return function(e,i,n,r){var s=i.target,o=s.getCenterPoint(),a=s.translateToOriginPoint(o,i.originX,i.originY),h=t(e,i,n,r);return s.setPositionByOrigin(a,i.originX,i.originY),h}}function w(t,e){return function(i,n,r,s){var o=e(i,n,r,s);return o&&g(t,v(i,n,r,s)),o}}function C(t,i,n,r,s){var o=t.target,a=o.controls[t.corner],h=o.canvas.getZoom(),l=o.padding/h,c=o.toLocalPoint(new e.Point(r,s),i,n);return c.x>=l&&(c.x-=l),c.x<=-l&&(c.x+=l),c.y>=l&&(c.y-=l),c.y<=l&&(c.y+=l),c.x-=a.offsetX,c.y-=a.offsetY,c}function E(t){return t.flipX!==t.flipY}function S(t,e,i,n,r){if(0!==t[e]){var s=r/t._getTransformedDimensions()[n]*t[i];t.set(i,s)}}function T(t,e,i,n){var r,l=e.target,c=l._getTransformedDimensions(0,l.skewY),d=C(e,e.originX,e.originY,i,n),f=Math.abs(2*d.x)-c.x,g=l.skewX;f<2?r=0:(r=u(Math.atan2(f/l.scaleX,c.y/l.scaleY)),e.originX===s&&e.originY===h&&(r=-r),e.originX===a&&e.originY===o&&(r=-r),E(l)&&(r=-r));var m=g!==r;if(m){var p=l._getTransformedDimensions().y;l.set("skewX",r),S(l,"skewY","scaleY","y",p)}return m}function b(t,e,i,n){var r,l=e.target,c=l._getTransformedDimensions(l.skewX,0),d=C(e,e.originX,e.originY,i,n),f=Math.abs(2*d.y)-c.y,g=l.skewY;f<2?r=0:(r=u(Math.atan2(f/l.scaleY,c.x/l.scaleX)),e.originX===s&&e.originY===h&&(r=-r),e.originX===a&&e.originY===o&&(r=-r),E(l)&&(r=-r));var m=g!==r;if(m){var p=l._getTransformedDimensions().x;l.set("skewY",r),S(l,"skewX","scaleX","x",p)}return m}function I(t,e,i,n,r){r=r||{};var s,o,a,h,l,u,f=e.target,g=f.lockScalingX,v=f.lockScalingY,y=r.by,w=m(t,f),E=_(f,y,w),S=e.gestureScale;if(E)return!1;if(S)o=e.scaleX*S,a=e.scaleY*S;else{if(s=C(e,e.originX,e.originY,i,n),l="y"!==y?d(s.x):1,u="x"!==y?d(s.y):1,e.signX||(e.signX=l),e.signY||(e.signY=u),f.lockScalingFlip&&(e.signX!==l||e.signY!==u))return!1;if(h=f._getTransformedDimensions(),w&&!y){var T=Math.abs(s.x)+Math.abs(s.y),b=e.original,I=T/(Math.abs(h.x*b.scaleX/f.scaleX)+Math.abs(h.y*b.scaleY/f.scaleY));o=b.scaleX*I,a=b.scaleY*I}else o=Math.abs(s.x*f.scaleX/h.x),a=Math.abs(s.y*f.scaleY/h.y);p(e)&&(o*=2,a*=2),e.signX!==l&&"y"!==y&&(e.originX=c[e.originX],o*=-1,e.signX=l),e.signY!==u&&"x"!==y&&(e.originY=c[e.originY],a*=-1,e.signY=u)}var x=f.scaleX,O=f.scaleY;return y?("x"===y&&f.set("scaleX",o),"y"===y&&f.set("scaleY",a)):(!g&&f.set("scaleX",o),!v&&f.set("scaleY",a)),x!==f.scaleX||O!==f.scaleY}r.scaleCursorStyleHandler=function(t,e,n){var r=m(t,n),s="";if(0!==e.x&&0===e.y?s="x":0===e.x&&0!==e.y&&(s="y"),_(n,s,r))return"not-allowed";var o=f(n,e);return i[o]+"-resize"},r.skewCursorStyleHandler=function(t,e,i){var r="not-allowed";if(0!==e.x&&i.lockSkewingY)return r;if(0!==e.y&&i.lockSkewingX)return r;var s=f(i,e)%4;return n[s]+"-resize"},r.scaleSkewCursorStyleHandler=function(t,e,i){return t[i.canvas.altActionKey]?r.skewCursorStyleHandler(t,e,i):r.scaleCursorStyleHandler(t,e,i)},r.rotationWithSnapping=w("rotating",y((function(t,e,i,n){var r=e,s=r.target,o=s.translateToOriginPoint(s.getCenterPoint(),r.originX,r.originY);if(s.lockRotation)return!1;var a,h=Math.atan2(r.ey-o.y,r.ex-o.x),l=Math.atan2(n-o.y,i-o.x),c=u(l-h+r.theta);if(s.snapAngle>0){var d=s.snapAngle,f=s.snapThreshold||d,g=Math.ceil(c/d)*d,m=Math.floor(c/d)*d;Math.abs(c-m)0?s:a:(c>0&&(r=u===o?s:a),c<0&&(r=u===o?a:s),E(h)&&(r=r===s?a:s)),e.originX=r,w("skewing",y(T))(t,e,i,n))},r.skewHandlerY=function(t,e,i,n){var r,a=e.target,c=a.skewY,u=e.originX;return!a.lockSkewingY&&(0===c?r=C(e,l,l,i,n).y>0?o:h:(c>0&&(r=u===s?o:h),c<0&&(r=u===s?h:o),E(a)&&(r=r===o?h:o)),e.originY=r,w("skewing",y(b))(t,e,i,n))},r.dragHandler=function(t,e,i,n){var r=e.target,s=i-e.offsetX,o=n-e.offsetY,a=!r.get("lockMovementX")&&r.left!==s,h=!r.get("lockMovementY")&&r.top!==o;return a&&r.set("left",s),h&&r.set("top",o),(a||h)&&g("moving",v(t,e,i,n)),a||h},r.scaleOrSkewActionName=function(t,e,i){var n=t[i.canvas.altActionKey];return 0===e.x?n?"skewX":"scaleY":0===e.y?n?"skewY":"scaleX":void 0},r.rotationStyleHandler=function(t,e,i){return i.lockRotation?"not-allowed":e.cursorStyle},r.fireEvent=g,r.wrapWithFixedAnchor=y,r.wrapWithFireEvent=w,r.getLocalPoint=C,e.controlsUtils=r}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.degreesToRadians,n=e.controlsUtils;n.renderCircleControl=function(t,e,i,n,r){n=n||{};var s,o=this.sizeX||n.cornerSize||r.cornerSize,a=this.sizeY||n.cornerSize||r.cornerSize,h=void 0!==n.transparentCorners?n.transparentCorners:r.transparentCorners,l=h?"stroke":"fill",c=!h&&(n.cornerStrokeColor||r.cornerStrokeColor),u=e,d=i;t.save(),t.fillStyle=n.cornerColor||r.cornerColor,t.strokeStyle=n.cornerStrokeColor||r.cornerStrokeColor,o>a?(s=o,t.scale(1,a/o),d=i*o/a):a>o?(s=a,t.scale(o/a,1),u=e*a/o):s=o,t.lineWidth=1,t.beginPath(),t.arc(u,d,s/2,0,2*Math.PI,!1),t[l](),c&&t.stroke(),t.restore()},n.renderSquareControl=function(t,e,n,r,s){r=r||{};var o=this.sizeX||r.cornerSize||s.cornerSize,a=this.sizeY||r.cornerSize||s.cornerSize,h=void 0!==r.transparentCorners?r.transparentCorners:s.transparentCorners,l=h?"stroke":"fill",c=!h&&(r.cornerStrokeColor||s.cornerStrokeColor),u=o/2,d=a/2;t.save(),t.fillStyle=r.cornerColor||s.cornerColor,t.strokeStyle=r.cornerStrokeColor||s.cornerStrokeColor,t.lineWidth=1,t.translate(e,n),t.rotate(i(s.angle)),t[l+"Rect"](-u,-d,o,a),c&&t.strokeRect(-u,-d,o,a),t.restore()}}(e),function(t){var e=t.fabric||(t.fabric={});e.Control=function(t){for(var e in t)this[e]=t[e]},e.Control.prototype={visible:!0,actionName:"scale",angle:0,x:0,y:0,offsetX:0,offsetY:0,sizeX:null,sizeY:null,touchSizeX:null,touchSizeY:null,cursorStyle:"crosshair",withConnection:!1,actionHandler:function(){},mouseDownHandler:function(){},mouseUpHandler:function(){},getActionHandler:function(){return this.actionHandler},getMouseDownHandler:function(){return this.mouseDownHandler},getMouseUpHandler:function(){return this.mouseUpHandler},cursorStyleHandler:function(t,e){return e.cursorStyle},getActionName:function(t,e){return e.actionName},getVisibility:function(t,e){var i=t._controlsVisibility;return i&&void 0!==i[e]?i[e]:this.visible},setVisibility:function(t){this.visible=t},positionHandler:function(t,i){return e.util.transformPoint({x:this.x*t.x+this.offsetX,y:this.y*t.y+this.offsetY},i)},calcCornerCoords:function(t,i,n,r,s){var o,a,h,l,c=s?this.touchSizeX:this.sizeX,u=s?this.touchSizeY:this.sizeY;if(c&&u&&c!==u){var d=Math.atan2(u,c),f=Math.sqrt(c*c+u*u)/2,g=d-e.util.degreesToRadians(t),m=Math.PI/2-d-e.util.degreesToRadians(t);o=f*e.util.cos(g),a=f*e.util.sin(g),h=f*e.util.cos(m),l=f*e.util.sin(m)}else f=.7071067812*(c&&u?c:i),g=e.util.degreesToRadians(45-t),o=h=f*e.util.cos(g),a=l=f*e.util.sin(g);return{tl:{x:n-l,y:r-h},tr:{x:n+o,y:r-a},bl:{x:n-o,y:r+a},br:{x:n+l,y:r+h}}},render:function(t,i,n,r,s){"circle"===((r=r||{}).cornerStyle||s.cornerStyle)?e.controlsUtils.renderCircleControl.call(this,t,i,n,r,s):e.controlsUtils.renderSquareControl.call(this,t,i,n,r,s)}}}(e),function(){function t(t,e){var i,n,r,s,o=t.getAttribute("style"),a=t.getAttribute("offset")||0;if(a=(a=parseFloat(a)/(/%$/.test(a)?100:1))<0?0:a>1?1:a,o){var h=o.split(/\s*;\s*/);for(""===h[h.length-1]&&h.pop(),s=h.length;s--;){var l=h[s].split(/\s*:\s*/),c=l[0].trim(),u=l[1].trim();"stop-color"===c?i=u:"stop-opacity"===c&&(r=u)}}return i||(i=t.getAttribute("stop-color")||"rgb(0,0,0)"),r||(r=t.getAttribute("stop-opacity")),n=(i=new T.Color(i)).getAlpha(),r=isNaN(parseFloat(r))?1:parseFloat(r),r*=n*e,{offset:a,color:i.toRgb(),opacity:r}}var e=T.util.object.clone;T.Gradient=T.util.createClass({offsetX:0,offsetY:0,gradientTransform:null,gradientUnits:"pixels",type:"linear",initialize:function(t){t||(t={}),t.coords||(t.coords={});var e,i=this;Object.keys(t).forEach((function(e){i[e]=t[e]})),this.id?this.id+="_"+T.Object.__uid++:this.id=T.Object.__uid++,e={x1:t.coords.x1||0,y1:t.coords.y1||0,x2:t.coords.x2||0,y2:t.coords.y2||0},"radial"===this.type&&(e.r1=t.coords.r1||0,e.r2=t.coords.r2||0),this.coords=e,this.colorStops=t.colorStops.slice()},addColorStop:function(t){for(var e in t){var i=new T.Color(t[e]);this.colorStops.push({offset:parseFloat(e),color:i.toRgb(),opacity:i.getAlpha()})}return this},toObject:function(t){var e={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return T.util.populateWithProperties(this,e,t),e},toSVG:function(t,i){var n,r,s,o,a=e(this.coords,!0),h=(i=i||{},e(this.colorStops,!0)),l=a.r1>a.r2,c=this.gradientTransform?this.gradientTransform.concat():T.iMatrix.concat(),u=-this.offsetX,d=-this.offsetY,f=!!i.additionalTransform,g="pixels"===this.gradientUnits?"userSpaceOnUse":"objectBoundingBox";if(h.sort((function(t,e){return t.offset-e.offset})),"objectBoundingBox"===g?(u/=t.width,d/=t.height):(u+=t.width/2,d+=t.height/2),"path"===t.type&&"percentage"!==this.gradientUnits&&(u-=t.pathOffset.x,d-=t.pathOffset.y),c[4]-=u,c[5]-=d,o='id="SVGID_'+this.id+'" gradientUnits="'+g+'"',o+=' gradientTransform="'+(f?i.additionalTransform+" ":"")+T.util.matrixToSVG(c)+'" ',"linear"===this.type?s=["\n']:"radial"===this.type&&(s=["\n']),"radial"===this.type){if(l)for((h=h.concat()).reverse(),n=0,r=h.length;n0){var p=m/Math.max(a.r1,a.r2);for(n=0,r=h.length;n\n')}return s.push("linear"===this.type?"\n":"\n"),s.join("")},toLive:function(t){var e,i,n,r=T.util.object.clone(this.coords);if(this.type){for("linear"===this.type?e=t.createLinearGradient(r.x1,r.y1,r.x2,r.y2):"radial"===this.type&&(e=t.createRadialGradient(r.x1,r.y1,r.r1,r.x2,r.y2,r.r2)),i=0,n=this.colorStops.length;i1?1:s,isNaN(s)&&(s=1);var o,a,h,l,c=e.getElementsByTagName("stop"),u="userSpaceOnUse"===e.getAttribute("gradientUnits")?"pixels":"percentage",d=e.getAttribute("gradientTransform")||"",f=[],g=0,m=0;for("linearGradient"===e.nodeName||"LINEARGRADIENT"===e.nodeName?(o="linear",a=function(t){return{x1:t.getAttribute("x1")||0,y1:t.getAttribute("y1")||0,x2:t.getAttribute("x2")||"100%",y2:t.getAttribute("y2")||0}}(e)):(o="radial",a=function(t){return{x1:t.getAttribute("fx")||t.getAttribute("cx")||"50%",y1:t.getAttribute("fy")||t.getAttribute("cy")||"50%",r1:0,x2:t.getAttribute("cx")||"50%",y2:t.getAttribute("cy")||"50%",r2:t.getAttribute("r")||"50%"}}(e)),h=c.length;h--;)f.push(t(c[h],s));return l=T.parseTransformAttribute(d),function(t,e,i,n){var r,s;Object.keys(e).forEach((function(t){"Infinity"===(r=e[t])?s=1:"-Infinity"===r?s=0:(s=parseFloat(e[t],10),"string"==typeof r&&/^(\d+\.\d+)%|(\d+)%$/.test(r)&&(s*=.01,"pixels"===n&&("x1"!==t&&"x2"!==t&&"r2"!==t||(s*=i.viewBoxWidth||i.width),"y1"!==t&&"y2"!==t||(s*=i.viewBoxHeight||i.height)))),e[t]=s}))}(0,a,r,u),"pixels"===u&&(g=-i.left,m=-i.top),new T.Gradient({id:e.getAttribute("id"),type:o,coords:a,colorStops:f,gradientUnits:u,gradientTransform:l,offsetX:g,offsetY:m})}})}(),_=T.util.toFixed,T.Pattern=T.util.createClass({repeat:"repeat",offsetX:0,offsetY:0,crossOrigin:"",patternTransform:null,initialize:function(t,e){if(t||(t={}),this.id=T.Object.__uid++,this.setOptions(t),!t.source||t.source&&"string"!=typeof t.source)e&&e(this);else{var i=this;this.source=T.util.createImage(),T.util.loadImage(t.source,(function(t,n){i.source=t,e&&e(i,n)}),null,this.crossOrigin)}},toObject:function(t){var e,i,n=T.Object.NUM_FRACTION_DIGITS;return"string"==typeof this.source.src?e=this.source.src:"object"==typeof this.source&&this.source.toDataURL&&(e=this.source.toDataURL()),i={type:"pattern",source:e,repeat:this.repeat,crossOrigin:this.crossOrigin,offsetX:_(this.offsetX,n),offsetY:_(this.offsetY,n),patternTransform:this.patternTransform?this.patternTransform.concat():null},T.util.populateWithProperties(this,i,t),i},toSVG:function(t){var e="function"==typeof this.source?this.source():this.source,i=e.width/t.width,n=e.height/t.height,r=this.offsetX/t.width,s=this.offsetY/t.height,o="";return"repeat-x"!==this.repeat&&"no-repeat"!==this.repeat||(n=1,s&&(n+=Math.abs(s))),"repeat-y"!==this.repeat&&"no-repeat"!==this.repeat||(i=1,r&&(i+=Math.abs(r))),e.src?o=e.src:e.toDataURL&&(o=e.toDataURL()),'\n\n\n'},setOptions:function(t){for(var e in t)this[e]=t[e]},toLive:function(t){var e=this.source;if(!e)return"";if(void 0!==e.src){if(!e.complete)return"";if(0===e.naturalWidth||0===e.naturalHeight)return""}return t.createPattern(e,this.repeat)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.toFixed;e.Shadow?e.warn("fabric.Shadow is already defined."):(e.Shadow=e.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1,initialize:function(t){for(var i in"string"==typeof t&&(t=this._parseShadow(t)),t)this[i]=t[i];this.id=e.Object.__uid++},_parseShadow:function(t){var i=t.trim(),n=e.Shadow.reOffsetsAndBlur.exec(i)||[];return{color:(i.replace(e.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)").trim(),offsetX:parseFloat(n[1],10)||0,offsetY:parseFloat(n[2],10)||0,blur:parseFloat(n[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(t){var n=40,r=40,s=e.Object.NUM_FRACTION_DIGITS,o=e.util.rotateVector({x:this.offsetX,y:this.offsetY},e.util.degreesToRadians(-t.angle)),a=new e.Color(this.color);return t.width&&t.height&&(n=100*i((Math.abs(o.x)+this.blur)/t.width,s)+20,r=100*i((Math.abs(o.y)+this.blur)/t.height,s)+20),t.flipX&&(o.x*=-1),t.flipY&&(o.y*=-1),'\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\n\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling};var t={},i=e.Shadow.prototype;return["color","blur","offsetX","offsetY","affectStroke","nonScaling"].forEach((function(e){this[e]!==i[e]&&(t[e]=this[e])}),this),t}}),e.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(\d+(?:\.\d*)?(?:px)?)?(?:\s?|$)(?:$|\s)/)}(e),function(){if(T.StaticCanvas)T.warn("fabric.StaticCanvas is already defined.");else{var t=T.util.object.extend,e=T.util.getElementOffset,i=T.util.removeFromArray,n=T.util.toFixed,r=T.util.transformPoint,s=T.util.invertTransform,o=T.util.getNodeCanvas,a=T.util.createCanvasElement,h=new Error("Could not initialize `canvas` element");T.StaticCanvas=T.util.createClass(T.CommonMethods,{initialize:function(t,e){e||(e={}),this.renderAndResetBound=this.renderAndReset.bind(this),this.requestRenderAllBound=this.requestRenderAll.bind(this),this._initStatic(t,e)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!1,renderOnAddRemove:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:T.iMatrix.concat(),backgroundVpt:!0,overlayVpt:!0,enableRetinaScaling:!0,vptCoords:{},skipOffscreen:!0,clipPath:void 0,_initStatic:function(t,e){var i=this.requestRenderAllBound;this._objects=[],this._createLowerCanvas(t),this._initOptions(e),this.interactive||this._initRetinaScaling(),e.overlayImage&&this.setOverlayImage(e.overlayImage,i),e.backgroundImage&&this.setBackgroundImage(e.backgroundImage,i),e.backgroundColor&&this.setBackgroundColor(e.backgroundColor,i),e.overlayColor&&this.setOverlayColor(e.overlayColor,i),this.calcOffset()},_isRetinaScaling:function(){return T.devicePixelRatio>1&&this.enableRetinaScaling},getRetinaScaling:function(){return this._isRetinaScaling()?Math.max(1,T.devicePixelRatio):1},_initRetinaScaling:function(){if(this._isRetinaScaling()){var t=T.devicePixelRatio;this.__initRetinaScaling(t,this.lowerCanvasEl,this.contextContainer),this.upperCanvasEl&&this.__initRetinaScaling(t,this.upperCanvasEl,this.contextTop)}},__initRetinaScaling:function(t,e,i){e.setAttribute("width",this.width*t),e.setAttribute("height",this.height*t),i.scale(t,t)},calcOffset:function(){return this._offset=e(this.lowerCanvasEl),this},setOverlayImage:function(t,e,i){return this.__setBgOverlayImage("overlayImage",t,e,i)},setBackgroundImage:function(t,e,i){return this.__setBgOverlayImage("backgroundImage",t,e,i)},setOverlayColor:function(t,e){return this.__setBgOverlayColor("overlayColor",t,e)},setBackgroundColor:function(t,e){return this.__setBgOverlayColor("backgroundColor",t,e)},__setBgOverlayImage:function(t,e,i,n){return"string"==typeof e?T.util.loadImage(e,(function(e,r){if(e){var s=new T.Image(e,n);this[t]=s,s.canvas=this}i&&i(e,r)}),this,n&&n.crossOrigin):(n&&e.setOptions(n),this[t]=e,e&&(e.canvas=this),i&&i(e,!1)),this},__setBgOverlayColor:function(t,e,i){return this[t]=e,this._initGradient(e,t),this._initPattern(e,t,i),this},_createCanvasElement:function(){var t=a();if(!t)throw h;if(t.style||(t.style={}),void 0===t.getContext)throw h;return t},_initOptions:function(t){var e=this.lowerCanvasEl;this._setOptions(t),this.width=this.width||parseInt(e.width,10)||0,this.height=this.height||parseInt(e.height,10)||0,this.lowerCanvasEl.style&&(e.width=this.width,e.height=this.height,e.style.width=this.width+"px",e.style.height=this.height+"px",this.viewportTransform=this.viewportTransform.slice())},_createLowerCanvas:function(t){t&&t.getContext?this.lowerCanvasEl=t:this.lowerCanvasEl=T.util.getById(t)||this._createCanvasElement(),T.util.addClass(this.lowerCanvasEl,"lower-canvas"),this._originalCanvasStyle=this.lowerCanvasEl.style,this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(t,e){return this.setDimensions({width:t},e)},setHeight:function(t,e){return this.setDimensions({height:t},e)},setDimensions:function(t,e){var i;for(var n in e=e||{},t)i=t[n],e.cssOnly||(this._setBackstoreDimension(n,t[n]),i+="px",this.hasLostContext=!0),e.backstoreOnly||this._setCssDimension(n,i);return this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(this.contextTop),this._initRetinaScaling(),this.calcOffset(),e.cssOnly||this.requestRenderAll(),this},_setBackstoreDimension:function(t,e){return this.lowerCanvasEl[t]=e,this.upperCanvasEl&&(this.upperCanvasEl[t]=e),this.cacheCanvasEl&&(this.cacheCanvasEl[t]=e),this[t]=e,this},_setCssDimension:function(t,e){return this.lowerCanvasEl.style[t]=e,this.upperCanvasEl&&(this.upperCanvasEl.style[t]=e),this.wrapperEl&&(this.wrapperEl.style[t]=e),this},getZoom:function(){return this.viewportTransform[0]},setViewportTransform:function(t){var e,i,n,r=this._activeObject,s=this.backgroundImage,o=this.overlayImage;for(this.viewportTransform=t,i=0,n=this._objects.length;i\n'),this._setSVGBgOverlayColor(i,"background"),this._setSVGBgOverlayImage(i,"backgroundImage",e),this._setSVGObjects(i,e),this.clipPath&&i.push("\n"),this._setSVGBgOverlayColor(i,"overlay"),this._setSVGBgOverlayImage(i,"overlayImage",e),i.push(""),i.join("")},_setSVGPreamble:function(t,e){e.suppressPreamble||t.push('\n','\n')},_setSVGHeader:function(t,e){var i,r=e.width||this.width,s=e.height||this.height,o='viewBox="0 0 '+this.width+" "+this.height+'" ',a=T.Object.NUM_FRACTION_DIGITS;e.viewBox?o='viewBox="'+e.viewBox.x+" "+e.viewBox.y+" "+e.viewBox.width+" "+e.viewBox.height+'" ':this.svgViewportTransformation&&(i=this.viewportTransform,o='viewBox="'+n(-i[4]/i[0],a)+" "+n(-i[5]/i[3],a)+" "+n(this.width/i[0],a)+" "+n(this.height/i[3],a)+'" '),t.push("\n',"Created with Fabric.js ",T.version,"\n","\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(e),"\n")},createSVGClipPathMarkup:function(t){var e=this.clipPath;return e?(e.clipPathId="CLIPPATH_"+T.Object.__uid++,'\n'+this.clipPath.toClipPathSVG(t.reviver)+"\n"):""},createSVGRefElementsMarkup:function(){var t=this;return["background","overlay"].map((function(e){var i=t[e+"Color"];if(i&&i.toLive){var n=t[e+"Vpt"],r=t.viewportTransform,s={width:t.width/(n?r[0]:1),height:t.height/(n?r[3]:1)};return i.toSVG(s,{additionalTransform:n?T.util.matrixToSVG(r):""})}})).join("")},createSVGFontFacesMarkup:function(){var t,e,i,n,r,s,o,a,h="",l={},c=T.fontPaths,u=[];for(this._objects.forEach((function t(e){u.push(e),e._objects&&e._objects.forEach(t)})),o=0,a=u.length;o',"\n",h,"","\n"].join("")),h},_setSVGObjects:function(t,e){var i,n,r,s=this._objects;for(n=0,r=s.length;n\n")}else t.push('\n")},sendToBack:function(t){if(!t)return this;var e,n,r,s=this._activeObject;if(t===s&&"activeSelection"===t.type)for(e=(r=s._objects).length;e--;)n=r[e],i(this._objects,n),this._objects.unshift(n);else i(this._objects,t),this._objects.unshift(t);return this.renderOnAddRemove&&this.requestRenderAll(),this},bringToFront:function(t){if(!t)return this;var e,n,r,s=this._activeObject;if(t===s&&"activeSelection"===t.type)for(r=s._objects,e=0;e0+l&&(o=s-1,i(this._objects,r),this._objects.splice(o,0,r)),l++;else 0!==(s=this._objects.indexOf(t))&&(o=this._findNewLowerIndex(t,s,e),i(this._objects,t),this._objects.splice(o,0,t));return this.renderOnAddRemove&&this.requestRenderAll(),this},_findNewLowerIndex:function(t,e,i){var n,r;if(i){for(n=e,r=e-1;r>=0;--r)if(t.intersectsWithObject(this._objects[r])||t.isContainedWithinObject(this._objects[r])||this._objects[r].isContainedWithinObject(t)){n=r;break}}else n=e-1;return n},bringForward:function(t,e){if(!t)return this;var n,r,s,o,a,h=this._activeObject,l=0;if(t===h&&"activeSelection"===t.type)for(n=(a=h._objects).length;n--;)r=a[n],(s=this._objects.indexOf(r))"}}),t(T.StaticCanvas.prototype,T.Observable),t(T.StaticCanvas.prototype,T.Collection),t(T.StaticCanvas.prototype,T.DataURLExporter),t(T.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(t){var e=a();if(!e||!e.getContext)return null;var i=e.getContext("2d");return i&&"setLineDash"===t?void 0!==i.setLineDash:null}}),T.StaticCanvas.prototype.toJSON=T.StaticCanvas.prototype.toObject,T.isLikelyNode&&(T.StaticCanvas.prototype.createPNGStream=function(){var t=o(this.lowerCanvasEl);return t&&t.createPNGStream()},T.StaticCanvas.prototype.createJPEGStream=function(t){var e=o(this.lowerCanvasEl);return e&&e.createJPEGStream(t)})}}(),T.BaseBrush=T.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",strokeMiterLimit:10,strokeDashArray:null,limitedToCanvasSize:!1,_setBrushStyles:function(t){t.strokeStyle=this.color,t.lineWidth=this.width,t.lineCap=this.strokeLineCap,t.miterLimit=this.strokeMiterLimit,t.lineJoin=this.strokeLineJoin,t.setLineDash(this.strokeDashArray||[])},_saveAndTransform:function(t){var e=this.canvas.viewportTransform;t.save(),t.transform(e[0],e[1],e[2],e[3],e[4],e[5])},_setShadow:function(){if(this.shadow){var t=this.canvas,e=this.shadow,i=t.contextTop,n=t.getZoom();t&&t._isRetinaScaling()&&(n*=T.devicePixelRatio),i.shadowColor=e.color,i.shadowBlur=e.blur*n,i.shadowOffsetX=e.offsetX*n,i.shadowOffsetY=e.offsetY*n}},needsFullRender:function(){return new T.Color(this.color).getAlpha()<1||!!this.shadow},_resetShadow:function(){var t=this.canvas.contextTop;t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0},_isOutSideCanvas:function(t){return t.x<0||t.x>this.canvas.getWidth()||t.y<0||t.y>this.canvas.getHeight()}}),T.PencilBrush=T.util.createClass(T.BaseBrush,{decimate:.4,drawStraightLine:!1,straightLineKey:"shiftKey",initialize:function(t){this.canvas=t,this._points=[]},needsFullRender:function(){return this.callSuper("needsFullRender")||this._hasStraightLine},_drawSegment:function(t,e,i){var n=e.midPointFrom(i);return t.quadraticCurveTo(e.x,e.y,n.x,n.y),n},onMouseDown:function(t,e){this.canvas._isMainEvent(e.e)&&(this.drawStraightLine=e.e[this.straightLineKey],this._prepareForDrawing(t),this._captureDrawingPath(t),this._render())},onMouseMove:function(t,e){if(this.canvas._isMainEvent(e.e)&&(this.drawStraightLine=e.e[this.straightLineKey],(!0!==this.limitedToCanvasSize||!this._isOutSideCanvas(t))&&this._captureDrawingPath(t)&&this._points.length>1))if(this.needsFullRender())this.canvas.clearContext(this.canvas.contextTop),this._render();else{var i=this._points,n=i.length,r=this.canvas.contextTop;this._saveAndTransform(r),this.oldEnd&&(r.beginPath(),r.moveTo(this.oldEnd.x,this.oldEnd.y)),this.oldEnd=this._drawSegment(r,i[n-2],i[n-1],!0),r.stroke(),r.restore()}},onMouseUp:function(t){return!this.canvas._isMainEvent(t.e)||(this.drawStraightLine=!1,this.oldEnd=void 0,this._finalizeAndAddPath(),!1)},_prepareForDrawing:function(t){var e=new T.Point(t.x,t.y);this._reset(),this._addPoint(e),this.canvas.contextTop.moveTo(e.x,e.y)},_addPoint:function(t){return!(this._points.length>1&&t.eq(this._points[this._points.length-1])||(this.drawStraightLine&&this._points.length>1&&(this._hasStraightLine=!0,this._points.pop()),this._points.push(t),0))},_reset:function(){this._points=[],this._setBrushStyles(this.canvas.contextTop),this._setShadow(),this._hasStraightLine=!1},_captureDrawingPath:function(t){var e=new T.Point(t.x,t.y);return this._addPoint(e)},_render:function(t){var e,i,n=this._points[0],r=this._points[1];if(t=t||this.canvas.contextTop,this._saveAndTransform(t),t.beginPath(),2===this._points.length&&n.x===r.x&&n.y===r.y){var s=this.width/1e3;n=new T.Point(n.x,n.y),r=new T.Point(r.x,r.y),n.x-=s,r.x+=s}for(t.moveTo(n.x,n.y),e=1,i=this._points.length;e=r&&(o=t[i],a.push(o));return a.push(t[s]),a},_finalizeAndAddPath:function(){this.canvas.contextTop.closePath(),this.decimate&&(this._points=this.decimatePoints(this._points,this.decimate));var t=this.convertPointsToSVGPath(this._points);if(this._isEmptySVGPath(t))this.canvas.requestRenderAll();else{var e=this.createPath(t);this.canvas.clearContext(this.canvas.contextTop),this.canvas.fire("before:path:created",{path:e}),this.canvas.add(e),this.canvas.requestRenderAll(),e.setCoords(),this._resetShadow(),this.canvas.fire("path:created",{path:e})}}}),T.CircleBrush=T.util.createClass(T.BaseBrush,{width:10,initialize:function(t){this.canvas=t,this.points=[]},drawDot:function(t){var e=this.addPoint(t),i=this.canvas.contextTop;this._saveAndTransform(i),this.dot(i,e),i.restore()},dot:function(t,e){t.fillStyle=e.fill,t.beginPath(),t.arc(e.x,e.y,e.radius,0,2*Math.PI,!1),t.closePath(),t.fill()},onMouseDown:function(t){this.points.length=0,this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.drawDot(t)},_render:function(){var t,e,i=this.canvas.contextTop,n=this.points;for(this._saveAndTransform(i),t=0,e=n.length;t0&&!this.preserveObjectStacking){e=[],i=[];for(var r=0,s=this._objects.length;r1&&(this._activeObject._objects=i),e.push.apply(e,i)}else e=this._objects;return e},renderAll:function(){!this.contextTopDirty||this._groupSelector||this.isDrawingMode||(this.clearContext(this.contextTop),this.contextTopDirty=!1),this.hasLostContext&&(this.renderTopLayer(this.contextTop),this.hasLostContext=!1);var t=this.contextContainer;return this.renderCanvas(t,this._chooseObjectsToRender()),this},renderTopLayer:function(t){t.save(),this.isDrawingMode&&this._isCurrentlyDrawing&&(this.freeDrawingBrush&&this.freeDrawingBrush._render(),this.contextTopDirty=!0),this.selection&&this._groupSelector&&(this._drawSelection(t),this.contextTopDirty=!0),t.restore()},renderTop:function(){var t=this.contextTop;return this.clearContext(t),this.renderTopLayer(t),this.fire("after:render"),this},_normalizePointer:function(t,e){var i=t.calcTransformMatrix(),n=T.util.invertTransform(i),r=this.restorePointerVpt(e);return T.util.transformPoint(r,n)},isTargetTransparent:function(t,e,i){if(t.shouldCache()&&t._cacheCanvas&&t!==this._activeObject){var n=this._normalizePointer(t,{x:e,y:i}),r=Math.max(t.cacheTranslationX+n.x*t.zoomX,0),s=Math.max(t.cacheTranslationY+n.y*t.zoomY,0);return T.util.isTransparent(t._cacheContext,Math.round(r),Math.round(s),this.targetFindTolerance)}var o=this.contextCache,a=t.selectionBackgroundColor,h=this.viewportTransform;return t.selectionBackgroundColor="",this.clearContext(o),o.save(),o.transform(h[0],h[1],h[2],h[3],h[4],h[5]),t.render(o),o.restore(),t.selectionBackgroundColor=a,T.util.isTransparent(o,e,i,this.targetFindTolerance)},_isSelectionKeyPressed:function(t){return Array.isArray(this.selectionKey)?!!this.selectionKey.find((function(e){return!0===t[e]})):t[this.selectionKey]},_shouldClearSelection:function(t,e){var i=this.getActiveObjects(),n=this._activeObject;return!e||e&&n&&i.length>1&&-1===i.indexOf(e)&&n!==e&&!this._isSelectionKeyPressed(t)||e&&!e.evented||e&&!e.selectable&&n&&n!==e},_shouldCenterTransform:function(t,e,i){var n;if(t)return"scale"===e||"scaleX"===e||"scaleY"===e||"resizing"===e?n=this.centeredScaling||t.centeredScaling:"rotate"===e&&(n=this.centeredRotation||t.centeredRotation),n?!i:i},_getOriginFromCorner:function(t,e){var i={x:t.originX,y:t.originY};return"ml"===e||"tl"===e||"bl"===e?i.x="right":"mr"!==e&&"tr"!==e&&"br"!==e||(i.x="left"),"tl"===e||"mt"===e||"tr"===e?i.y="bottom":"bl"!==e&&"mb"!==e&&"br"!==e||(i.y="top"),i},_getActionFromCorner:function(t,e,i,n){if(!e||!t)return"drag";var r=n.controls[e];return r.getActionName(i,r,n)},_setupCurrentTransform:function(t,i,n){if(i){var r=this.getPointer(t),s=i.__corner,o=i.controls[s],a=n&&s?o.getActionHandler(t,i,o):T.controlsUtils.dragHandler,h=this._getActionFromCorner(n,s,t,i),l=this._getOriginFromCorner(i,s),c=t[this.centeredKey],u={target:i,action:h,actionHandler:a,corner:s,scaleX:i.scaleX,scaleY:i.scaleY,skewX:i.skewX,skewY:i.skewY,offsetX:r.x-i.left,offsetY:r.y-i.top,originX:l.x,originY:l.y,ex:r.x,ey:r.y,lastX:r.x,lastY:r.y,theta:e(i.angle),width:i.width*i.scaleX,shiftKey:t.shiftKey,altKey:c,original:T.util.saveObjectTransform(i)};this._shouldCenterTransform(i,h,c)&&(u.originX="center",u.originY="center"),u.original.originX=l.x,u.original.originY=l.y,this._currentTransform=u,this._beforeTransform(t)}},setCursor:function(t){this.upperCanvasEl.style.cursor=t},_drawSelection:function(t){var e=this._groupSelector,i=new T.Point(e.ex,e.ey),n=T.util.transformPoint(i,this.viewportTransform),r=new T.Point(e.ex+e.left,e.ey+e.top),s=T.util.transformPoint(r,this.viewportTransform),o=Math.min(n.x,s.x),a=Math.min(n.y,s.y),h=Math.max(n.x,s.x),l=Math.max(n.y,s.y),c=this.selectionLineWidth/2;this.selectionColor&&(t.fillStyle=this.selectionColor,t.fillRect(o,a,h-o,l-a)),this.selectionLineWidth&&this.selectionBorderColor&&(t.lineWidth=this.selectionLineWidth,t.strokeStyle=this.selectionBorderColor,o+=c,a+=c,h-=c,l-=c,T.Object.prototype._setLineDash.call(this,t,this.selectionDashArray),t.strokeRect(o,a,h-o,l-a))},findTarget:function(t,e){if(!this.skipTargetFind){var n,r,s=this.getPointer(t,!0),o=this._activeObject,a=this.getActiveObjects(),h=i(t),l=a.length>1&&!e||1===a.length;if(this.targets=[],l&&o._findTargetCorner(s,h))return o;if(a.length>1&&!e&&o===this._searchPossibleTargets([o],s))return o;if(1===a.length&&o===this._searchPossibleTargets([o],s)){if(!this.preserveObjectStacking)return o;n=o,r=this.targets,this.targets=[]}var c=this._searchPossibleTargets(this._objects,s);return t[this.altSelectionKey]&&c&&n&&c!==n&&(c=n,this.targets=r),c}},_checkTarget:function(t,e,i){if(e&&e.visible&&e.evented&&e.containsPoint(t)){if(!this.perPixelTargetFind&&!e.perPixelTargetFind||e.isEditing)return!0;if(!this.isTargetTransparent(e,i.x,i.y))return!0}},_searchPossibleTargets:function(t,e){for(var i,n,r=t.length;r--;){var s=t[r],o=s.group?this._normalizePointer(s.group,e):e;if(this._checkTarget(o,s,e)){(i=t[r]).subTargetCheck&&i instanceof T.Group&&(n=this._searchPossibleTargets(i._objects,e))&&this.targets.push(n);break}}return i},restorePointerVpt:function(t){return T.util.transformPoint(t,T.util.invertTransform(this.viewportTransform))},getPointer:function(e,i){if(this._absolutePointer&&!i)return this._absolutePointer;if(this._pointer&&i)return this._pointer;var n,r=t(e),s=this.upperCanvasEl,o=s.getBoundingClientRect(),a=o.width||0,h=o.height||0;a&&h||("top"in o&&"bottom"in o&&(h=Math.abs(o.top-o.bottom)),"right"in o&&"left"in o&&(a=Math.abs(o.right-o.left))),this.calcOffset(),r.x=r.x-this._offset.left,r.y=r.y-this._offset.top,i||(r=this.restorePointerVpt(r));var l=this.getRetinaScaling();return 1!==l&&(r.x/=l,r.y/=l),n=0===a||0===h?{width:1,height:1}:{width:s.width/a,height:s.height/h},{x:r.x*n.width,y:r.y*n.height}},_createUpperCanvas:function(){var t=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,""),e=this.lowerCanvasEl,i=this.upperCanvasEl;i?i.className="":(i=this._createCanvasElement(),this.upperCanvasEl=i),T.util.addClass(i,"upper-canvas "+t),this.wrapperEl.appendChild(i),this._copyCanvasStyle(e,i),this._applyCanvasStyle(i),this.contextTop=i.getContext("2d")},getTopContext:function(){return this.contextTop},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement(),this.cacheCanvasEl.setAttribute("width",this.width),this.cacheCanvasEl.setAttribute("height",this.height),this.contextCache=this.cacheCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=T.util.wrapElement(this.lowerCanvasEl,"div",{class:this.containerClass}),T.util.setStyle(this.wrapperEl,{width:this.width+"px",height:this.height+"px",position:"relative"}),T.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(t){var e=this.width||t.width,i=this.height||t.height;T.util.setStyle(t,{position:"absolute",width:e+"px",height:i+"px",left:0,top:0,"touch-action":this.allowTouchScrolling?"manipulation":"none","-ms-touch-action":this.allowTouchScrolling?"manipulation":"none"}),t.width=e,t.height=i,T.util.makeElementUnselectable(t)},_copyCanvasStyle:function(t,e){e.style.cssText=t.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},getActiveObject:function(){return this._activeObject},getActiveObjects:function(){var t=this._activeObject;return t?"activeSelection"===t.type&&t._objects?t._objects.slice(0):[t]:[]},_onObjectRemoved:function(t){t===this._activeObject&&(this.fire("before:selection:cleared",{target:t}),this._discardActiveObject(),this.fire("selection:cleared",{target:t}),t.fire("deselected")),t===this._hoveredTarget&&(this._hoveredTarget=null,this._hoveredTargets=[]),this.callSuper("_onObjectRemoved",t)},_fireSelectionEvents:function(t,e){var i=!1,n=this.getActiveObjects(),r=[],s=[];t.forEach((function(t){-1===n.indexOf(t)&&(i=!0,t.fire("deselected",{e,target:t}),s.push(t))})),n.forEach((function(n){-1===t.indexOf(n)&&(i=!0,n.fire("selected",{e,target:n}),r.push(n))})),t.length>0&&n.length>0?i&&this.fire("selection:updated",{e,selected:r,deselected:s}):n.length>0?this.fire("selection:created",{e,selected:r}):t.length>0&&this.fire("selection:cleared",{e,deselected:s})},setActiveObject:function(t,e){var i=this.getActiveObjects();return this._setActiveObject(t,e),this._fireSelectionEvents(i,e),this},_setActiveObject:function(t,e){return this._activeObject!==t&&!!this._discardActiveObject(e,t)&&!t.onSelect({e})&&(this._activeObject=t,!0)},_discardActiveObject:function(t,e){var i=this._activeObject;if(i){if(i.onDeselect({e:t,object:e}))return!1;this._activeObject=null}return!0},discardActiveObject:function(t){var e=this.getActiveObjects(),i=this.getActiveObject();return e.length&&this.fire("before:selection:cleared",{target:i,e:t}),this._discardActiveObject(t),this._fireSelectionEvents(e,t),this},dispose:function(){var t=this.wrapperEl;return this.removeListeners(),t.removeChild(this.upperCanvasEl),t.removeChild(this.lowerCanvasEl),this.contextCache=null,this.contextTop=null,["upperCanvasEl","cacheCanvasEl"].forEach(function(t){T.util.cleanUpJsdomNode(this[t]),this[t]=void 0}.bind(this)),t.parentNode&&t.parentNode.replaceChild(this.lowerCanvasEl,this.wrapperEl),delete this.wrapperEl,T.StaticCanvas.prototype.dispose.call(this),this},clear:function(){return this.discardActiveObject(),this.clearContext(this.contextTop),this.callSuper("clear")},drawControls:function(t){var e=this._activeObject;e&&e._renderControls(t)},_toObject:function(t,e,i){var n=this._realizeGroupTransformOnObject(t),r=this.callSuper("_toObject",t,e,i);return this._unwindGroupTransformOnObject(t,n),r},_realizeGroupTransformOnObject:function(t){if(t.group&&"activeSelection"===t.group.type&&this._activeObject===t.group){var e={};return["angle","flipX","flipY","left","scaleX","scaleY","skewX","skewY","top"].forEach((function(i){e[i]=t[i]})),T.util.addTransformToObject(t,this._activeObject.calcOwnMatrix()),e}return null},_unwindGroupTransformOnObject:function(t,e){e&&t.set(e)},_setSVGObject:function(t,e,i){var n=this._realizeGroupTransformOnObject(e);this.callSuper("_setSVGObject",t,e,i),this._unwindGroupTransformOnObject(e,n)},setViewportTransform:function(t){this.renderOnAddRemove&&this._activeObject&&this._activeObject.isEditing&&this._activeObject.clearContextTop(),T.StaticCanvas.prototype.setViewportTransform.call(this,t)}}),T.StaticCanvas)"prototype"!==n&&(T.Canvas[n]=T.StaticCanvas[n])}(),function(){var t=T.util.addListener,e=T.util.removeListener,i={passive:!1};function n(t,e){return t.button&&t.button===e-1}T.util.object.extend(T.Canvas.prototype,{mainTouchId:null,_initEventListeners:function(){this.removeListeners(),this._bindEvents(),this.addOrRemove(t,"add")},_getEventPrefix:function(){return this.enablePointerEvents?"pointer":"mouse"},addOrRemove:function(t,e){var n=this.upperCanvasEl,r=this._getEventPrefix();t(T.window,"resize",this._onResize),t(n,r+"down",this._onMouseDown),t(n,r+"move",this._onMouseMove,i),t(n,r+"out",this._onMouseOut),t(n,r+"enter",this._onMouseEnter),t(n,"wheel",this._onMouseWheel),t(n,"contextmenu",this._onContextMenu),t(n,"dblclick",this._onDoubleClick),t(n,"dragover",this._onDragOver),t(n,"dragenter",this._onDragEnter),t(n,"dragleave",this._onDragLeave),t(n,"drop",this._onDrop),this.enablePointerEvents||t(n,"touchstart",this._onTouchStart,i),"undefined"!=typeof eventjs&&e in eventjs&&(eventjs[e](n,"gesture",this._onGesture),eventjs[e](n,"drag",this._onDrag),eventjs[e](n,"orientation",this._onOrientationChange),eventjs[e](n,"shake",this._onShake),eventjs[e](n,"longpress",this._onLongPress))},removeListeners:function(){this.addOrRemove(e,"remove");var t=this._getEventPrefix();e(T.document,t+"up",this._onMouseUp),e(T.document,"touchend",this._onTouchEnd,i),e(T.document,t+"move",this._onMouseMove,i),e(T.document,"touchmove",this._onMouseMove,i)},_bindEvents:function(){this.eventsBound||(this._onMouseDown=this._onMouseDown.bind(this),this._onTouchStart=this._onTouchStart.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this._onTouchEnd=this._onTouchEnd.bind(this),this._onResize=this._onResize.bind(this),this._onGesture=this._onGesture.bind(this),this._onDrag=this._onDrag.bind(this),this._onShake=this._onShake.bind(this),this._onLongPress=this._onLongPress.bind(this),this._onOrientationChange=this._onOrientationChange.bind(this),this._onMouseWheel=this._onMouseWheel.bind(this),this._onMouseOut=this._onMouseOut.bind(this),this._onMouseEnter=this._onMouseEnter.bind(this),this._onContextMenu=this._onContextMenu.bind(this),this._onDoubleClick=this._onDoubleClick.bind(this),this._onDragOver=this._onDragOver.bind(this),this._onDragEnter=this._simpleEventHandler.bind(this,"dragenter"),this._onDragLeave=this._simpleEventHandler.bind(this,"dragleave"),this._onDrop=this._onDrop.bind(this),this.eventsBound=!0)},_onGesture:function(t,e){this.__onTransformGesture&&this.__onTransformGesture(t,e)},_onDrag:function(t,e){this.__onDrag&&this.__onDrag(t,e)},_onMouseWheel:function(t){this.__onMouseWheel(t)},_onMouseOut:function(t){var e=this._hoveredTarget;this.fire("mouse:out",{target:e,e:t}),this._hoveredTarget=null,e&&e.fire("mouseout",{e:t});var i=this;this._hoveredTargets.forEach((function(n){i.fire("mouse:out",{target:e,e:t}),n&&e.fire("mouseout",{e:t})})),this._hoveredTargets=[],this._iTextInstances&&this._iTextInstances.forEach((function(t){t.isEditing&&t.hiddenTextarea.focus()}))},_onMouseEnter:function(t){this._currentTransform||this.findTarget(t)||(this.fire("mouse:over",{target:null,e:t}),this._hoveredTarget=null,this._hoveredTargets=[])},_onOrientationChange:function(t,e){this.__onOrientationChange&&this.__onOrientationChange(t,e)},_onShake:function(t,e){this.__onShake&&this.__onShake(t,e)},_onLongPress:function(t,e){this.__onLongPress&&this.__onLongPress(t,e)},_onDragOver:function(t){t.preventDefault();var e=this._simpleEventHandler("dragover",t);this._fireEnterLeaveEvents(e,t)},_onDrop:function(t){return this._simpleEventHandler("drop:before",t),this._simpleEventHandler("drop",t)},_onContextMenu:function(t){return this.stopContextMenu&&(t.stopPropagation(),t.preventDefault()),!1},_onDoubleClick:function(t){this._cacheTransformEventData(t),this._handleEvent(t,"dblclick"),this._resetTransformEventData(t)},getPointerId:function(t){var e=t.changedTouches;return e?e[0]&&e[0].identifier:this.enablePointerEvents?t.pointerId:-1},_isMainEvent:function(t){return!0===t.isPrimary||!1!==t.isPrimary&&("touchend"===t.type&&0===t.touches.length||!t.changedTouches||t.changedTouches[0].identifier===this.mainTouchId)},_onTouchStart:function(n){n.preventDefault(),null===this.mainTouchId&&(this.mainTouchId=this.getPointerId(n)),this.__onMouseDown(n),this._resetTransformEventData();var r=this.upperCanvasEl,s=this._getEventPrefix();t(T.document,"touchend",this._onTouchEnd,i),t(T.document,"touchmove",this._onMouseMove,i),e(r,s+"down",this._onMouseDown)},_onMouseDown:function(n){this.__onMouseDown(n),this._resetTransformEventData();var r=this.upperCanvasEl,s=this._getEventPrefix();e(r,s+"move",this._onMouseMove,i),t(T.document,s+"up",this._onMouseUp),t(T.document,s+"move",this._onMouseMove,i)},_onTouchEnd:function(n){if(!(n.touches.length>0)){this.__onMouseUp(n),this._resetTransformEventData(),this.mainTouchId=null;var r=this._getEventPrefix();e(T.document,"touchend",this._onTouchEnd,i),e(T.document,"touchmove",this._onMouseMove,i);var s=this;this._willAddMouseDown&&clearTimeout(this._willAddMouseDown),this._willAddMouseDown=setTimeout((function(){t(s.upperCanvasEl,r+"down",s._onMouseDown),s._willAddMouseDown=0}),400)}},_onMouseUp:function(n){this.__onMouseUp(n),this._resetTransformEventData();var r=this.upperCanvasEl,s=this._getEventPrefix();this._isMainEvent(n)&&(e(T.document,s+"up",this._onMouseUp),e(T.document,s+"move",this._onMouseMove,i),t(r,s+"move",this._onMouseMove,i))},_onMouseMove:function(t){!this.allowTouchScrolling&&t.preventDefault&&t.preventDefault(),this.__onMouseMove(t)},_onResize:function(){this.calcOffset()},_shouldRender:function(t){var e=this._activeObject;return!!(!!e!=!!t||e&&t&&e!==t)||(e&&e.isEditing,!1)},__onMouseUp:function(t){var e,i=this._currentTransform,r=this._groupSelector,s=!1,o=!r||0===r.left&&0===r.top;if(this._cacheTransformEventData(t),e=this._target,this._handleEvent(t,"up:before"),n(t,3))this.fireRightClick&&this._handleEvent(t,"up",3,o);else{if(n(t,2))return this.fireMiddleClick&&this._handleEvent(t,"up",2,o),void this._resetTransformEventData();if(this.isDrawingMode&&this._isCurrentlyDrawing)this._onMouseUpInDrawingMode(t);else if(this._isMainEvent(t)){if(i&&(this._finalizeCurrentTransform(t),s=i.actionPerformed),!o){var a=e===this._activeObject;this._maybeGroupObjects(t),s||(s=this._shouldRender(e)||!a&&e===this._activeObject)}var h,l;if(e){if(h=e._findTargetCorner(this.getPointer(t,!0),T.util.isTouchEvent(t)),e.selectable&&e!==this._activeObject&&"up"===e.activeOn)this.setActiveObject(e,t),s=!0;else{var c=e.controls[h],u=c&&c.getMouseUpHandler(t,e,c);u&&u(t,i,(l=this.getPointer(t)).x,l.y)}e.isMoving=!1}if(i&&(i.target!==e||i.corner!==h)){var d=i.target&&i.target.controls[i.corner],f=d&&d.getMouseUpHandler(t,e,c);l=l||this.getPointer(t),f&&f(t,i,l.x,l.y)}this._setCursorFromEvent(t,e),this._handleEvent(t,"up",1,o),this._groupSelector=null,this._currentTransform=null,e&&(e.__corner=0),s?this.requestRenderAll():o||this.renderTop()}}},_simpleEventHandler:function(t,e){var i=this.findTarget(e),n=this.targets,r={e,target:i,subTargets:n};if(this.fire(t,r),i&&i.fire(t,r),!n)return i;for(var s=0;s1&&(e=new T.ActiveSelection(i.reverse(),{canvas:this}),this.setActiveObject(e,t))},_collectObjects:function(t){for(var e,i=[],n=this._groupSelector.ex,r=this._groupSelector.ey,s=n+this._groupSelector.left,o=r+this._groupSelector.top,a=new T.Point(v(n,s),v(r,o)),h=new T.Point(y(n,s),y(r,o)),l=!this.selectionFullyContained,c=n===s&&r===o,u=this._objects.length;u--&&!((e=this._objects[u])&&e.selectable&&e.visible&&(l&&e.intersectsWithRect(a,h,!0)||e.isContainedWithinRect(a,h,!0)||l&&e.containsPoint(a,null,!0)||l&&e.containsPoint(h,null,!0))&&(i.push(e),c)););return i.length>1&&(i=i.filter((function(e){return!e.onSelect({e:t})}))),i},_maybeGroupObjects:function(t){this.selection&&this._groupSelector&&this._groupSelectedObjects(t),this.setCursor(this.defaultCursor),this._groupSelector=null}}),T.util.object.extend(T.StaticCanvas.prototype,{toDataURL:function(t){t||(t={});var e=t.format||"png",i=t.quality||1,n=(t.multiplier||1)*(t.enableRetinaScaling?this.getRetinaScaling():1),r=this.toCanvasElement(n,t);return T.util.toDataURL(r,e,i)},toCanvasElement:function(t,e){t=t||1;var i=((e=e||{}).width||this.width)*t,n=(e.height||this.height)*t,r=this.getZoom(),s=this.width,o=this.height,a=r*t,h=this.viewportTransform,l=(h[4]-(e.left||0))*t,c=(h[5]-(e.top||0))*t,u=this.interactive,d=[a,0,0,a,l,c],f=this.enableRetinaScaling,g=T.util.createCanvasElement(),m=this.contextTop;return g.width=i,g.height=n,this.contextTop=null,this.enableRetinaScaling=!1,this.interactive=!1,this.viewportTransform=d,this.width=i,this.height=n,this.calcViewportBoundaries(),this.renderCanvas(g.getContext("2d"),this._objects),this.viewportTransform=h,this.width=s,this.height=o,this.calcViewportBoundaries(),this.interactive=u,this.enableRetinaScaling=f,this.contextTop=m,g}}),T.util.object.extend(T.StaticCanvas.prototype,{loadFromJSON:function(t,e,i){if(t){var n="string"==typeof t?JSON.parse(t):T.util.object.clone(t),r=this,s=n.clipPath,o=this.renderOnAddRemove;return this.renderOnAddRemove=!1,delete n.clipPath,this._enlivenObjects(n.objects,(function(t){r.clear(),r._setBgOverlay(n,(function(){s?r._enlivenObjects([s],(function(i){r.clipPath=i[0],r.__setupCanvas.call(r,n,t,o,e)})):r.__setupCanvas.call(r,n,t,o,e)}))}),i),this}},__setupCanvas:function(t,e,i,n){var r=this;e.forEach((function(t,e){r.insertAt(t,e)})),this.renderOnAddRemove=i,delete t.objects,delete t.backgroundImage,delete t.overlayImage,delete t.background,delete t.overlay,this._setOptions(t),this.renderAll(),n&&n()},_setBgOverlay:function(t,e){var i={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(t.backgroundImage||t.overlayImage||t.background||t.overlay){var n=function(){i.backgroundImage&&i.overlayImage&&i.backgroundColor&&i.overlayColor&&e&&e()};this.__setBgOverlay("backgroundImage",t.backgroundImage,i,n),this.__setBgOverlay("overlayImage",t.overlayImage,i,n),this.__setBgOverlay("backgroundColor",t.background,i,n),this.__setBgOverlay("overlayColor",t.overlay,i,n)}else e&&e()},__setBgOverlay:function(t,e,i,n){var r=this;if(!e)return i[t]=!0,void(n&&n());"backgroundImage"===t||"overlayImage"===t?T.util.enlivenObjects([e],(function(e){r[t]=e[0],i[t]=!0,n&&n()})):this["set"+T.util.string.capitalize(t,!0)](e,(function(){i[t]=!0,n&&n()}))},_enlivenObjects:function(t,e,i){t&&0!==t.length?T.util.enlivenObjects(t,(function(t){e&&e(t)}),null,i):e&&e([])},_toDataURL:function(t,e){this.clone((function(i){e(i.toDataURL(t))}))},_toDataURLWithMultiplier:function(t,e,i){this.clone((function(n){i(n.toDataURLWithMultiplier(t,e))}))},clone:function(t,e){var i=JSON.stringify(this.toJSON(e));this.cloneWithoutData((function(e){e.loadFromJSON(i,(function(){t&&t(e)}))}))},cloneWithoutData:function(t){var e=T.util.createCanvasElement();e.width=this.width,e.height=this.height;var i=new T.Canvas(e);this.backgroundImage?(i.setBackgroundImage(this.backgroundImage.src,(function(){i.renderAll(),t&&t(i)})),i.backgroundImageOpacity=this.backgroundImageOpacity,i.backgroundImageStretch=this.backgroundImageStretch):t&&t(i)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,n=e.util.object.clone,r=e.util.toFixed,s=e.util.string.capitalize,o=e.util.degreesToRadians,a=!e.isLikelyNode;e.Object||(e.Object=e.util.createClass(e.CommonMethods,{type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,skewX:0,skewY:0,cornerSize:13,touchCornerSize:24,transparentCorners:!0,hoverCursor:null,moveCursor:null,padding:0,borderColor:"rgb(178,204,255)",borderDashArray:null,cornerColor:"rgb(178,204,255)",cornerStrokeColor:null,cornerStyle:"rect",cornerDashArray:null,centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"nonzero",globalCompositeOperation:"source-over",backgroundColor:"",selectionBackgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeDashOffset:0,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:4,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,minScaleLimit:0,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,perPixelTargetFind:!1,includeDefaultValues:!0,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,excludeFromExport:!1,objectCaching:a,statefullCache:!1,noScaleCache:!0,strokeUniform:!1,dirty:!0,__corner:0,paintFirst:"fill",activeOn:"down",stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit angle opacity fill globalCompositeOperation shadow visible backgroundColor skewX skewY fillRule paintFirst clipPath strokeUniform".split(" "),cacheProperties:"fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath".split(" "),colorProperties:"fill stroke backgroundColor".split(" "),clipPath:void 0,inverted:!1,absolutePositioned:!1,initialize:function(t){t&&this.setOptions(t)},_createCacheCanvas:function(){this._cacheProperties={},this._cacheCanvas=e.util.createCanvasElement(),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas(),this.dirty=!0},_limitCacheSize:function(t){var i=e.perfLimitSizeTotal,n=t.width,r=t.height,s=e.maxCacheSideLimit,o=e.minCacheSideLimit;if(n<=s&&r<=s&&n*r<=i)return nc&&(t.zoomX/=n/c,t.width=c,t.capped=!0),r>u&&(t.zoomY/=r/u,t.height=u,t.capped=!0),t},_getCacheCanvasDimensions:function(){var t=this.getTotalObjectScaling(),e=this._getTransformedDimensions(0,0),i=e.x*t.scaleX/this.scaleX,n=e.y*t.scaleY/this.scaleY;return{width:i+2,height:n+2,zoomX:t.scaleX,zoomY:t.scaleY,x:i,y:n}},_updateCacheCanvas:function(){var t=this.canvas;if(this.noScaleCache&&t&&t._currentTransform){var i=t._currentTransform.target,n=t._currentTransform.action;if(this===i&&n.slice&&"scale"===n.slice(0,5))return!1}var r,s,o=this._cacheCanvas,a=this._limitCacheSize(this._getCacheCanvasDimensions()),h=e.minCacheSideLimit,l=a.width,c=a.height,u=a.zoomX,d=a.zoomY,f=l!==this.cacheWidth||c!==this.cacheHeight,g=this.zoomX!==u||this.zoomY!==d,m=f||g,p=0,_=0,v=!1;if(f){var y=this._cacheCanvas.width,w=this._cacheCanvas.height,C=l>y||c>w;v=C||(l<.9*y||c<.9*w)&&y>h&&w>h,C&&!a.capped&&(l>h||c>h)&&(p=.1*l,_=.1*c)}return this instanceof e.Text&&this.path&&(m=!0,v=!0,p+=this.getHeightOfLine(0)*this.zoomX,_+=this.getHeightOfLine(0)*this.zoomY),!!m&&(v?(o.width=Math.ceil(l+p),o.height=Math.ceil(c+_)):(this._cacheContext.setTransform(1,0,0,1,0,0),this._cacheContext.clearRect(0,0,o.width,o.height)),r=a.x/2,s=a.y/2,this.cacheTranslationX=Math.round(o.width/2-r)+r,this.cacheTranslationY=Math.round(o.height/2-s)+s,this.cacheWidth=l,this.cacheHeight=c,this._cacheContext.translate(this.cacheTranslationX,this.cacheTranslationY),this._cacheContext.scale(u,d),this.zoomX=u,this.zoomY=d,!0)},setOptions:function(t){this._setOptions(t),this._initGradient(t.fill,"fill"),this._initGradient(t.stroke,"stroke"),this._initPattern(t.fill,"fill"),this._initPattern(t.stroke,"stroke")},transform:function(t){var e=this.group&&!this.group._transformDone||this.group&&this.canvas&&t===this.canvas.contextTop,i=this.calcTransformMatrix(!e);t.transform(i[0],i[1],i[2],i[3],i[4],i[5])},toObject:function(t){var i=e.Object.NUM_FRACTION_DIGITS,n={type:this.type,version:e.version,originX:this.originX,originY:this.originY,left:r(this.left,i),top:r(this.top,i),width:r(this.width,i),height:r(this.height,i),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:r(this.strokeWidth,i),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeDashOffset:this.strokeDashOffset,strokeLineJoin:this.strokeLineJoin,strokeUniform:this.strokeUniform,strokeMiterLimit:r(this.strokeMiterLimit,i),scaleX:r(this.scaleX,i),scaleY:r(this.scaleY,i),angle:r(this.angle,i),flipX:this.flipX,flipY:this.flipY,opacity:r(this.opacity,i),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,backgroundColor:this.backgroundColor,fillRule:this.fillRule,paintFirst:this.paintFirst,globalCompositeOperation:this.globalCompositeOperation,skewX:r(this.skewX,i),skewY:r(this.skewY,i)};return this.clipPath&&!this.clipPath.excludeFromExport&&(n.clipPath=this.clipPath.toObject(t),n.clipPath.inverted=this.clipPath.inverted,n.clipPath.absolutePositioned=this.clipPath.absolutePositioned),e.util.populateWithProperties(this,n,t),this.includeDefaultValues||(n=this._removeDefaultValues(n)),n},toDatalessObject:function(t){return this.toObject(t)},_removeDefaultValues:function(t){var i=e.util.getKlass(t.type).prototype;return i.stateProperties.forEach((function(e){"left"!==e&&"top"!==e&&(t[e]===i[e]&&delete t[e],Array.isArray(t[e])&&Array.isArray(i[e])&&0===t[e].length&&0===i[e].length&&delete t[e])})),t},toString:function(){return"#"},getObjectScaling:function(){if(!this.group)return{scaleX:this.scaleX,scaleY:this.scaleY};var t=e.util.qrDecompose(this.calcTransformMatrix());return{scaleX:Math.abs(t.scaleX),scaleY:Math.abs(t.scaleY)}},getTotalObjectScaling:function(){var t=this.getObjectScaling(),e=t.scaleX,i=t.scaleY;if(this.canvas){var n=this.canvas.getZoom(),r=this.canvas.getRetinaScaling();e*=n*r,i*=n*r}return{scaleX:e,scaleY:i}},getObjectOpacity:function(){var t=this.opacity;return this.group&&(t*=this.group.getObjectOpacity()),t},_set:function(t,i){var n="scaleX"===t||"scaleY"===t,r=this[t]!==i,s=!1;return n&&(i=this._constrainScale(i)),"scaleX"===t&&i<0?(this.flipX=!this.flipX,i*=-1):"scaleY"===t&&i<0?(this.flipY=!this.flipY,i*=-1):"shadow"!==t||!i||i instanceof e.Shadow?"dirty"===t&&this.group&&this.group.set("dirty",i):i=new e.Shadow(i),this[t]=i,r&&(s=this.group&&this.group.isOnACache(),this.cacheProperties.indexOf(t)>-1?(this.dirty=!0,s&&this.group.set("dirty",!0)):s&&this.stateProperties.indexOf(t)>-1&&this.group.set("dirty",!0)),this},setOnGroup:function(){},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:e.iMatrix.concat()},isNotVisible:function(){return 0===this.opacity||!this.width&&!this.height&&0===this.strokeWidth||!this.visible},render:function(t){this.isNotVisible()||this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(t.save(),this._setupCompositeOperation(t),this.drawSelectionBackground(t),this.transform(t),this._setOpacity(t),this._setShadow(t,this),this.shouldCache()?(this.renderCache(),this.drawCacheOnCanvas(t)):(this._removeCacheCanvas(),this.dirty=!1,this.drawObject(t),this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})),t.restore())},renderCache:function(t){t=t||{},this._cacheCanvas&&this._cacheContext||this._createCacheCanvas(),this.isCacheDirty()&&(this.statefullCache&&this.saveState({propertySet:"cacheProperties"}),this.drawObject(this._cacheContext,t.forClipping),this.dirty=!1)},_removeCacheCanvas:function(){this._cacheCanvas=null,this._cacheContext=null,this.cacheWidth=0,this.cacheHeight=0},hasStroke:function(){return this.stroke&&"transparent"!==this.stroke&&0!==this.strokeWidth},hasFill:function(){return this.fill&&"transparent"!==this.fill},needsItsOwnCache:function(){return!("stroke"!==this.paintFirst||!this.hasFill()||!this.hasStroke()||"object"!=typeof this.shadow)||!!this.clipPath},shouldCache:function(){return this.ownCaching=this.needsItsOwnCache()||this.objectCaching&&(!this.group||!this.group.isOnACache()),this.ownCaching},willDrawShadow:function(){return!!this.shadow&&(0!==this.shadow.offsetX||0!==this.shadow.offsetY)},drawClipPathOnCache:function(t,i){if(t.save(),i.inverted?t.globalCompositeOperation="destination-out":t.globalCompositeOperation="destination-in",i.absolutePositioned){var n=e.util.invertTransform(this.calcTransformMatrix());t.transform(n[0],n[1],n[2],n[3],n[4],n[5])}i.transform(t),t.scale(1/i.zoomX,1/i.zoomY),t.drawImage(i._cacheCanvas,-i.cacheTranslationX,-i.cacheTranslationY),t.restore()},drawObject:function(t,e){var i=this.fill,n=this.stroke;e?(this.fill="black",this.stroke="",this._setClippingProperties(t)):this._renderBackground(t),this._render(t),this._drawClipPath(t,this.clipPath),this.fill=i,this.stroke=n},_drawClipPath:function(t,e){e&&(e.canvas=this.canvas,e.shouldCache(),e._transformDone=!0,e.renderCache({forClipping:!0}),this.drawClipPathOnCache(t,e))},drawCacheOnCanvas:function(t){t.scale(1/this.zoomX,1/this.zoomY),t.drawImage(this._cacheCanvas,-this.cacheTranslationX,-this.cacheTranslationY)},isCacheDirty:function(t){if(this.isNotVisible())return!1;if(this._cacheCanvas&&this._cacheContext&&!t&&this._updateCacheCanvas())return!0;if(this.dirty||this.clipPath&&this.clipPath.absolutePositioned||this.statefullCache&&this.hasStateChanged("cacheProperties")){if(this._cacheCanvas&&this._cacheContext&&!t){var e=this.cacheWidth/this.zoomX,i=this.cacheHeight/this.zoomY;this._cacheContext.clearRect(-e/2,-i/2,e,i)}return!0}return!1},_renderBackground:function(t){if(this.backgroundColor){var e=this._getNonTransformedDimensions();t.fillStyle=this.backgroundColor,t.fillRect(-e.x/2,-e.y/2,e.x,e.y),this._removeShadow(t)}},_setOpacity:function(t){this.group&&!this.group._transformDone?t.globalAlpha=this.getObjectOpacity():t.globalAlpha*=this.opacity},_setStrokeStyles:function(t,e){var i=e.stroke;i&&(t.lineWidth=e.strokeWidth,t.lineCap=e.strokeLineCap,t.lineDashOffset=e.strokeDashOffset,t.lineJoin=e.strokeLineJoin,t.miterLimit=e.strokeMiterLimit,i.toLive?"percentage"===i.gradientUnits||i.gradientTransform||i.patternTransform?this._applyPatternForTransformedGradient(t,i):(t.strokeStyle=i.toLive(t,this),this._applyPatternGradientTransform(t,i)):t.strokeStyle=e.stroke)},_setFillStyles:function(t,e){var i=e.fill;i&&(i.toLive?(t.fillStyle=i.toLive(t,this),this._applyPatternGradientTransform(t,e.fill)):t.fillStyle=i)},_setClippingProperties:function(t){t.globalAlpha=1,t.strokeStyle="transparent",t.fillStyle="#000000"},_setLineDash:function(t,e){e&&0!==e.length&&(1&e.length&&e.push.apply(e,e),t.setLineDash(e))},_renderControls:function(t,i){var n,r,s,a=this.getViewportTransform(),h=this.calcTransformMatrix();r=void 0!==(i=i||{}).hasBorders?i.hasBorders:this.hasBorders,s=void 0!==i.hasControls?i.hasControls:this.hasControls,h=e.util.multiplyTransformMatrices(a,h),n=e.util.qrDecompose(h),t.save(),t.translate(n.translateX,n.translateY),t.lineWidth=1*this.borderScaleFactor,this.group||(t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.flipX&&(n.angle-=180),t.rotate(o(this.group?n.angle:this.angle)),i.forActiveSelection||this.group?r&&this.drawBordersInGroup(t,n,i):r&&this.drawBorders(t,i),s&&this.drawControls(t,i),t.restore()},_setShadow:function(t){if(this.shadow){var i,n=this.shadow,r=this.canvas,s=r&&r.viewportTransform[0]||1,o=r&&r.viewportTransform[3]||1;i=n.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),r&&r._isRetinaScaling()&&(s*=e.devicePixelRatio,o*=e.devicePixelRatio),t.shadowColor=n.color,t.shadowBlur=n.blur*e.browserShadowBlurConstant*(s+o)*(i.scaleX+i.scaleY)/4,t.shadowOffsetX=n.offsetX*s*i.scaleX,t.shadowOffsetY=n.offsetY*o*i.scaleY}},_removeShadow:function(t){this.shadow&&(t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0)},_applyPatternGradientTransform:function(t,e){if(!e||!e.toLive)return{offsetX:0,offsetY:0};var i=e.gradientTransform||e.patternTransform,n=-this.width/2+e.offsetX||0,r=-this.height/2+e.offsetY||0;return"percentage"===e.gradientUnits?t.transform(this.width,0,0,this.height,n,r):t.transform(1,0,0,1,n,r),i&&t.transform(i[0],i[1],i[2],i[3],i[4],i[5]),{offsetX:n,offsetY:r}},_renderPaintInOrder:function(t){"stroke"===this.paintFirst?(this._renderStroke(t),this._renderFill(t)):(this._renderFill(t),this._renderStroke(t))},_render:function(){},_renderFill:function(t){this.fill&&(t.save(),this._setFillStyles(t,this),"evenodd"===this.fillRule?t.fill("evenodd"):t.fill(),t.restore())},_renderStroke:function(t){if(this.stroke&&0!==this.strokeWidth){if(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(t),t.save(),this.strokeUniform&&this.group){var e=this.getObjectScaling();t.scale(1/e.scaleX,1/e.scaleY)}else this.strokeUniform&&t.scale(1/this.scaleX,1/this.scaleY);this._setLineDash(t,this.strokeDashArray),this._setStrokeStyles(t,this),t.stroke(),t.restore()}},_applyPatternForTransformedGradient:function(t,i){var n,r=this._limitCacheSize(this._getCacheCanvasDimensions()),s=e.util.createCanvasElement(),o=this.canvas.getRetinaScaling(),a=r.x/this.scaleX/o,h=r.y/this.scaleY/o;s.width=a,s.height=h,(n=s.getContext("2d")).beginPath(),n.moveTo(0,0),n.lineTo(a,0),n.lineTo(a,h),n.lineTo(0,h),n.closePath(),n.translate(a/2,h/2),n.scale(r.zoomX/this.scaleX/o,r.zoomY/this.scaleY/o),this._applyPatternGradientTransform(n,i),n.fillStyle=i.toLive(t),n.fill(),t.translate(-this.width/2-this.strokeWidth/2,-this.height/2-this.strokeWidth/2),t.scale(o*this.scaleX/r.zoomX,o*this.scaleY/r.zoomY),t.strokeStyle=n.createPattern(s,"no-repeat")},_findCenterFromElement:function(){return{x:this.left+this.width/2,y:this.top+this.height/2}},_assignTransformMatrixProps:function(){if(this.transformMatrix){var t=e.util.qrDecompose(this.transformMatrix);this.flipX=!1,this.flipY=!1,this.set("scaleX",t.scaleX),this.set("scaleY",t.scaleY),this.angle=t.angle,this.skewX=t.skewX,this.skewY=0}},_removeTransformMatrix:function(t){var i=this._findCenterFromElement();this.transformMatrix&&(this._assignTransformMatrixProps(),i=e.util.transformPoint(i,this.transformMatrix)),this.transformMatrix=null,t&&(this.scaleX*=t.scaleX,this.scaleY*=t.scaleY,this.cropX=t.cropX,this.cropY=t.cropY,i.x+=t.offsetLeft,i.y+=t.offsetTop,this.width=t.width,this.height=t.height),this.setPositionByOrigin(i,"center","center")},clone:function(t,i){var n=this.toObject(i);this.constructor.fromObject?this.constructor.fromObject(n,t):e.Object._fromObject("Object",n,t)},cloneAsImage:function(t,i){var n=this.toCanvasElement(i);return t&&t(new e.Image(n)),this},toCanvasElement:function(t){t||(t={});var i=e.util,n=i.saveObjectTransform(this),r=this.group,s=this.shadow,o=Math.abs,a=(t.multiplier||1)*(t.enableRetinaScaling?e.devicePixelRatio:1);delete this.group,t.withoutTransform&&i.resetObjectTransform(this),t.withoutShadow&&(this.shadow=null);var h,l,c,u,d=e.util.createCanvasElement(),f=this.getBoundingRect(!0,!0),g=this.shadow,m={x:0,y:0};g&&(l=g.blur,h=g.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),m.x=2*Math.round(o(g.offsetX)+l)*o(h.scaleX),m.y=2*Math.round(o(g.offsetY)+l)*o(h.scaleY)),c=f.width+m.x,u=f.height+m.y,d.width=Math.ceil(c),d.height=Math.ceil(u);var p=new e.StaticCanvas(d,{enableRetinaScaling:!1,renderOnAddRemove:!1,skipOffscreen:!1});"jpeg"===t.format&&(p.backgroundColor="#fff"),this.setPositionByOrigin(new e.Point(p.width/2,p.height/2),"center","center");var _=this.canvas;p.add(this);var v=p.toCanvasElement(a||1,t);return this.shadow=s,this.set("canvas",_),r&&(this.group=r),this.set(n).setCoords(),p._objects=[],p.dispose(),p=null,v},toDataURL:function(t){return t||(t={}),e.util.toDataURL(this.toCanvasElement(t),t.format||"png",t.quality||1)},isType:function(t){return arguments.length>1?Array.from(arguments).includes(this.type):this.type===t},complexity:function(){return 1},toJSON:function(t){return this.toObject(t)},rotate:function(t){var e=("center"!==this.originX||"center"!==this.originY)&&this.centeredRotation;return e&&this._setOriginToCenter(),this.set("angle",t),e&&this._resetOrigin(),this},centerH:function(){return this.canvas&&this.canvas.centerObjectH(this),this},viewportCenterH:function(){return this.canvas&&this.canvas.viewportCenterObjectH(this),this},centerV:function(){return this.canvas&&this.canvas.centerObjectV(this),this},viewportCenterV:function(){return this.canvas&&this.canvas.viewportCenterObjectV(this),this},center:function(){return this.canvas&&this.canvas.centerObject(this),this},viewportCenter:function(){return this.canvas&&this.canvas.viewportCenterObject(this),this},getLocalPointer:function(t,i){i=i||this.canvas.getPointer(t);var n=new e.Point(i.x,i.y),r=this._getLeftTopCoords();return this.angle&&(n=e.util.rotatePoint(n,r,o(-this.angle))),{x:n.x-r.x,y:n.y-r.y}},_setupCompositeOperation:function(t){this.globalCompositeOperation&&(t.globalCompositeOperation=this.globalCompositeOperation)},dispose:function(){e.runningAnimations&&e.runningAnimations.cancelByTarget(this)}}),e.util.createAccessors&&e.util.createAccessors(e.Object),i(e.Object.prototype,e.Observable),e.Object.NUM_FRACTION_DIGITS=2,e.Object.ENLIVEN_PROPS=["clipPath"],e.Object._fromObject=function(t,i,r,s){var o=e[t];i=n(i,!0),e.util.enlivenPatterns([i.fill,i.stroke],(function(t){void 0!==t[0]&&(i.fill=t[0]),void 0!==t[1]&&(i.stroke=t[1]),e.util.enlivenObjectEnlivables(i,i,(function(){var t=s?new o(i[s],i):new o(i);r&&r(t)}))}))},e.Object.__uid=0)}(e),w=T.util.degreesToRadians,C={left:-.5,center:0,right:.5},E={top:-.5,center:0,bottom:.5},T.util.object.extend(T.Object.prototype,{translateToGivenOrigin:function(t,e,i,n,r){var s,o,a,h=t.x,l=t.y;return"string"==typeof e?e=C[e]:e-=.5,"string"==typeof n?n=C[n]:n-=.5,"string"==typeof i?i=E[i]:i-=.5,"string"==typeof r?r=E[r]:r-=.5,o=r-i,((s=n-e)||o)&&(a=this._getTransformedDimensions(),h=t.x+s*a.x,l=t.y+o*a.y),new T.Point(h,l)},translateToCenterPoint:function(t,e,i){var n=this.translateToGivenOrigin(t,e,i,"center","center");return this.angle?T.util.rotatePoint(n,t,w(this.angle)):n},translateToOriginPoint:function(t,e,i){var n=this.translateToGivenOrigin(t,"center","center",e,i);return this.angle?T.util.rotatePoint(n,t,w(this.angle)):n},getCenterPoint:function(){var t=new T.Point(this.left,this.top);return this.translateToCenterPoint(t,this.originX,this.originY)},getPointByOrigin:function(t,e){var i=this.getCenterPoint();return this.translateToOriginPoint(i,t,e)},toLocalPoint:function(t,e,i){var n,r,s=this.getCenterPoint();return n=void 0!==e&&void 0!==i?this.translateToGivenOrigin(s,"center","center",e,i):new T.Point(this.left,this.top),r=new T.Point(t.x,t.y),this.angle&&(r=T.util.rotatePoint(r,s,-w(this.angle))),r.subtractEquals(n)},setPositionByOrigin:function(t,e,i){var n=this.translateToCenterPoint(t,e,i),r=this.translateToOriginPoint(n,this.originX,this.originY);this.set("left",r.x),this.set("top",r.y)},adjustPosition:function(t){var e,i,n=w(this.angle),r=this.getScaledWidth(),s=T.util.cos(n)*r,o=T.util.sin(n)*r;e="string"==typeof this.originX?C[this.originX]:this.originX-.5,i="string"==typeof t?C[t]:t-.5,this.left+=s*(i-e),this.top+=o*(i-e),this.setCoords(),this.originX=t},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var t=this.getCenterPoint();this.originX="center",this.originY="center",this.left=t.x,this.top=t.y},_resetOrigin:function(){var t=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX,this.originY=this._originalOriginY,this.left=t.x,this.top=t.y,this._originalOriginX=null,this._originalOriginY=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","top")}}),function(){var t=T.util,e=t.degreesToRadians,i=t.multiplyTransformMatrices,n=t.transformPoint;t.object.extend(T.Object.prototype,{oCoords:null,aCoords:null,lineCoords:null,ownMatrixCache:null,matrixCache:null,controls:{},_getCoords:function(t,e){return e?t?this.calcACoords():this.calcLineCoords():(this.aCoords&&this.lineCoords||this.setCoords(!0),t?this.aCoords:this.lineCoords)},getCoords:function(t,e){return i=this._getCoords(t,e),[new T.Point(i.tl.x,i.tl.y),new T.Point(i.tr.x,i.tr.y),new T.Point(i.br.x,i.br.y),new T.Point(i.bl.x,i.bl.y)];var i},intersectsWithRect:function(t,e,i,n){var r=this.getCoords(i,n);return"Intersection"===T.Intersection.intersectPolygonRectangle(r,t,e).status},intersectsWithObject:function(t,e,i){return"Intersection"===T.Intersection.intersectPolygonPolygon(this.getCoords(e,i),t.getCoords(e,i)).status||t.isContainedWithinObject(this,e,i)||this.isContainedWithinObject(t,e,i)},isContainedWithinObject:function(t,e,i){for(var n=this.getCoords(e,i),r=e?t.aCoords:t.lineCoords,s=0,o=t._getImageLines(r);s<4;s++)if(!t.containsPoint(n[s],o))return!1;return!0},isContainedWithinRect:function(t,e,i,n){var r=this.getBoundingRect(i,n);return r.left>=t.x&&r.left+r.width<=e.x&&r.top>=t.y&&r.top+r.height<=e.y},containsPoint:function(t,e,i,n){var r=this._getCoords(i,n),s=(e=e||this._getImageLines(r),this._findCrossPoints(t,e));return 0!==s&&s%2==1},isOnScreen:function(t){if(!this.canvas)return!1;var e=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.getCoords(!0,t).some((function(t){return t.x<=i.x&&t.x>=e.x&&t.y<=i.y&&t.y>=e.y}))||!!this.intersectsWithRect(e,i,!0,t)||this._containsCenterOfCanvas(e,i,t)},_containsCenterOfCanvas:function(t,e,i){var n={x:(t.x+e.x)/2,y:(t.y+e.y)/2};return!!this.containsPoint(n,null,!0,i)},isPartiallyOnScreen:function(t){if(!this.canvas)return!1;var e=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.intersectsWithRect(e,i,!0,t)||this.getCoords(!0,t).every((function(t){return(t.x>=i.x||t.x<=e.x)&&(t.y>=i.y||t.y<=e.y)}))&&this._containsCenterOfCanvas(e,i,t)},_getImageLines:function(t){return{topline:{o:t.tl,d:t.tr},rightline:{o:t.tr,d:t.br},bottomline:{o:t.br,d:t.bl},leftline:{o:t.bl,d:t.tl}}},_findCrossPoints:function(t,e){var i,n,r,s=0;for(var o in e)if(!((r=e[o]).o.y=t.y&&r.d.y>=t.y||(r.o.x===r.d.x&&r.o.x>=t.x?n=r.o.x:(i=(r.d.y-r.o.y)/(r.d.x-r.o.x),n=-(t.y-0*t.x-(r.o.y-i*r.o.x))/(0-i)),n>=t.x&&(s+=1),2!==s)))break;return s},getBoundingRect:function(e,i){var n=this.getCoords(e,i);return t.makeBoundingBoxFromPoints(n)},getScaledWidth:function(){return this._getTransformedDimensions().x},getScaledHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(t){return Math.abs(t)\n')}},toSVG:function(t){return this._createBaseSVGMarkup(this._toSVG(t),{reviver:t})},toClipPathSVG:function(t){return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(t),{reviver:t})},_createBaseClipPathSVGMarkup:function(t,e){var i=(e=e||{}).reviver,n=e.additionalTransform||"",r=[this.getSvgTransform(!0,n),this.getSvgCommons()].join(""),s=t.indexOf("COMMON_PARTS");return t[s]=r,i?i(t.join("")):t.join("")},_createBaseSVGMarkup:function(t,e){var i,n,r=(e=e||{}).noStyle,s=e.reviver,o=r?"":'style="'+this.getSvgStyles()+'" ',a=e.withShadow?'style="'+this.getSvgFilter()+'" ':"",h=this.clipPath,l=this.strokeUniform?'vector-effect="non-scaling-stroke" ':"",c=h&&h.absolutePositioned,u=this.stroke,d=this.fill,f=this.shadow,g=[],m=t.indexOf("COMMON_PARTS"),p=e.additionalTransform;return h&&(h.clipPathId="CLIPPATH_"+T.Object.__uid++,n='\n'+h.toClipPathSVG(s)+"\n"),c&&g.push("\n"),g.push("\n"),i=[o,l,r?"":this.addPaintOrder()," ",p?'transform="'+p+'" ':""].join(""),t[m]=i,d&&d.toLive&&g.push(d.toSVG(this)),u&&u.toLive&&g.push(u.toSVG(this)),f&&g.push(f.toSVG(this)),h&&g.push(n),g.push(t.join("")),g.push("\n"),c&&g.push("\n"),s?s(g.join("")):g.join("")},addPaintOrder:function(){return"fill"!==this.paintFirst?' paint-order="'+this.paintFirst+'" ':""}})}(),function(){var t=T.util.object.extend,e="stateProperties";function i(e,i,n){var r={};n.forEach((function(t){r[t]=e[t]})),t(e[i],r,!0)}function n(t,e,i){if(t===e)return!0;if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(var r=0,s=t.length;r=0;h--)if(r=a[h],this.isControlVisible(r)&&(n=this._getImageLines(e?this.oCoords[r].touchCorner:this.oCoords[r].corner),0!==(i=this._findCrossPoints({x:s,y:o},n))&&i%2==1))return this.__corner=r,r;return!1},forEachControl:function(t){for(var e in this.controls)t(this.controls[e],e,this)},_setCornerCoords:function(){var t=this.oCoords;for(var e in t){var i=this.controls[e];t[e].corner=i.calcCornerCoords(this.angle,this.cornerSize,t[e].x,t[e].y,!1),t[e].touchCorner=i.calcCornerCoords(this.angle,this.touchCornerSize,t[e].x,t[e].y,!0)}},drawSelectionBackground:function(e){if(!this.selectionBackgroundColor||this.canvas&&!this.canvas.interactive||this.canvas&&this.canvas._activeObject!==this)return this;e.save();var i=this.getCenterPoint(),n=this._calculateCurrentDimensions(),r=this.canvas.viewportTransform;return e.translate(i.x,i.y),e.scale(1/r[0],1/r[3]),e.rotate(t(this.angle)),e.fillStyle=this.selectionBackgroundColor,e.fillRect(-n.x/2,-n.y/2,n.x,n.y),e.restore(),this},drawBorders:function(t,e){e=e||{};var i=this._calculateCurrentDimensions(),n=this.borderScaleFactor,r=i.x+n,s=i.y+n,o=void 0!==e.hasControls?e.hasControls:this.hasControls,a=!1;return t.save(),t.strokeStyle=e.borderColor||this.borderColor,this._setLineDash(t,e.borderDashArray||this.borderDashArray),t.strokeRect(-r/2,-s/2,r,s),o&&(t.beginPath(),this.forEachControl((function(e,i,n){e.withConnection&&e.getVisibility(n,i)&&(a=!0,t.moveTo(e.x*r,e.y*s),t.lineTo(e.x*r+e.offsetX,e.y*s+e.offsetY))})),a&&t.stroke()),t.restore(),this},drawBordersInGroup:function(t,e,i){i=i||{};var n=T.util.sizeAfterTransform(this.width,this.height,e),r=this.strokeWidth,s=this.strokeUniform,o=this.borderScaleFactor,a=n.x+r*(s?this.canvas.getZoom():e.scaleX)+o,h=n.y+r*(s?this.canvas.getZoom():e.scaleY)+o;return t.save(),this._setLineDash(t,i.borderDashArray||this.borderDashArray),t.strokeStyle=i.borderColor||this.borderColor,t.strokeRect(-a/2,-h/2,a,h),t.restore(),this},drawControls:function(t,e){e=e||{},t.save();var i,n,r=this.canvas.getRetinaScaling();return t.setTransform(r,0,0,r,0,0),t.strokeStyle=t.fillStyle=e.cornerColor||this.cornerColor,this.transparentCorners||(t.strokeStyle=e.cornerStrokeColor||this.cornerStrokeColor),this._setLineDash(t,e.cornerDashArray||this.cornerDashArray),this.setCoords(),this.group&&(i=this.group.calcTransformMatrix()),this.forEachControl((function(r,s,o){n=o.oCoords[s],r.getVisibility(o,s)&&(i&&(n=T.util.transformPoint(n,i)),r.render(t,n.x,n.y,e,o))})),t.restore(),this},isControlVisible:function(t){return this.controls[t]&&this.controls[t].getVisibility(this,t)},setControlVisible:function(t,e){return this._controlsVisibility||(this._controlsVisibility={}),this._controlsVisibility[t]=e,this},setControlsVisibility:function(t){for(var e in t||(t={}),t)this.setControlVisible(e,t[e]);return this},onDeselect:function(){},onSelect:function(){}})}(),T.util.object.extend(T.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(t,e){var i=function(){},n=(e=e||{}).onComplete||i,r=e.onChange||i,s=this;return T.util.animate({target:this,startValue:t.left,endValue:this.getCenterPoint().x,duration:this.FX_DURATION,onChange:function(e){t.set("left",e),s.requestRenderAll(),r()},onComplete:function(){t.setCoords(),n()}})},fxCenterObjectV:function(t,e){var i=function(){},n=(e=e||{}).onComplete||i,r=e.onChange||i,s=this;return T.util.animate({target:this,startValue:t.top,endValue:this.getCenterPoint().y,duration:this.FX_DURATION,onChange:function(e){t.set("top",e),s.requestRenderAll(),r()},onComplete:function(){t.setCoords(),n()}})},fxRemove:function(t,e){var i=function(){},n=(e=e||{}).onComplete||i,r=e.onChange||i,s=this;return T.util.animate({target:this,startValue:t.opacity,endValue:0,duration:this.FX_DURATION,onChange:function(e){t.set("opacity",e),s.requestRenderAll(),r()},onComplete:function(){s.remove(t),n()}})}}),T.util.object.extend(T.Object.prototype,{animate:function(){if(arguments[0]&&"object"==typeof arguments[0]){var t,e,i=[],n=[];for(t in arguments[0])i.push(t);for(var r=0,s=i.length;r-1||r&&s.colorProperties.indexOf(r[1])>-1,a=r?this.get(r[0])[r[1]]:this.get(t);"from"in i||(i.from=a),o||(e=~e.indexOf("=")?a+parseFloat(e.replace("=","")):parseFloat(e));var h={target:this,startValue:i.from,endValue:e,byValue:i.by,easing:i.easing,duration:i.duration,abort:i.abort&&function(t,e,n){return i.abort.call(s,t,e,n)},onChange:function(e,o,a){r?s[r[0]][r[1]]=e:s.set(t,e),n||i.onChange&&i.onChange(e,o,a)},onComplete:function(t,e,r){n||(s.setCoords(),i.onComplete&&i.onComplete(t,e,r))}};return o?T.util.animateColor(h.startValue,h.endValue,h.duration,h):T.util.animate(h)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,n=e.util.object.clone,r={x1:1,x2:1,y1:1,y2:1};function s(t,e){var i=t.origin,n=t.axis1,r=t.axis2,s=t.dimension,o=e.nearest,a=e.center,h=e.farthest;return function(){switch(this.get(i)){case o:return Math.min(this.get(n),this.get(r));case a:return Math.min(this.get(n),this.get(r))+.5*this.get(s);case h:return Math.max(this.get(n),this.get(r))}}}e.Line?e.warn("fabric.Line is already defined"):(e.Line=e.util.createClass(e.Object,{type:"line",x1:0,y1:0,x2:0,y2:0,cacheProperties:e.Object.prototype.cacheProperties.concat("x1","x2","y1","y2"),initialize:function(t,e){t||(t=[0,0,0,0]),this.callSuper("initialize",e),this.set("x1",t[0]),this.set("y1",t[1]),this.set("x2",t[2]),this.set("y2",t[3]),this._setWidthHeight(e)},_setWidthHeight:function(t){t||(t={}),this.width=Math.abs(this.x2-this.x1),this.height=Math.abs(this.y2-this.y1),this.left="left"in t?t.left:this._getLeftToOriginX(),this.top="top"in t?t.top:this._getTopToOriginY()},_set:function(t,e){return this.callSuper("_set",t,e),void 0!==r[t]&&this._setWidthHeight(),this},_getLeftToOriginX:s({origin:"originX",axis1:"x1",axis2:"x2",dimension:"width"},{nearest:"left",center:"center",farthest:"right"}),_getTopToOriginY:s({origin:"originY",axis1:"y1",axis2:"y2",dimension:"height"},{nearest:"top",center:"center",farthest:"bottom"}),_render:function(t){t.beginPath();var e=this.calcLinePoints();t.moveTo(e.x1,e.y1),t.lineTo(e.x2,e.y2),t.lineWidth=this.strokeWidth;var i=t.strokeStyle;t.strokeStyle=this.stroke||t.fillStyle,this.stroke&&this._renderStroke(t),t.strokeStyle=i},_findCenterFromElement:function(){return{x:(this.x1+this.x2)/2,y:(this.y1+this.y2)/2}},toObject:function(t){return i(this.callSuper("toObject",t),this.calcLinePoints())},_getNonTransformedDimensions:function(){var t=this.callSuper("_getNonTransformedDimensions");return"butt"===this.strokeLineCap&&(0===this.width&&(t.y-=this.strokeWidth),0===this.height&&(t.x-=this.strokeWidth)),t},calcLinePoints:function(){var t=this.x1<=this.x2?-1:1,e=this.y1<=this.y2?-1:1,i=t*this.width*.5,n=e*this.height*.5;return{x1:i,x2:t*this.width*-.5,y1:n,y2:e*this.height*-.5}},_toSVG:function(){var t=this.calcLinePoints();return["\n']}}),e.Line.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),e.Line.fromElement=function(t,n,r){r=r||{};var s=e.parseAttributes(t,e.Line.ATTRIBUTE_NAMES),o=[s.x1||0,s.y1||0,s.x2||0,s.y2||0];n(new e.Line(o,i(s,r)))},e.Line.fromObject=function(t,i){var r=n(t,!0);r.points=[t.x1,t.y1,t.x2,t.y2],e.Object._fromObject("Line",r,(function(t){delete t.points,i&&i(t)}),"points")})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.degreesToRadians;e.Circle?e.warn("fabric.Circle is already defined."):(e.Circle=e.util.createClass(e.Object,{type:"circle",radius:0,startAngle:0,endAngle:360,cacheProperties:e.Object.prototype.cacheProperties.concat("radius","startAngle","endAngle"),_set:function(t,e){return this.callSuper("_set",t,e),"radius"===t&&this.setRadius(e),this},toObject:function(t){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(t))},_toSVG:function(){var t,n=(this.endAngle-this.startAngle)%360;if(0===n)t=["\n'];else{var r=i(this.startAngle),s=i(this.endAngle),o=this.radius;t=['180?"1":"0")+" 1"," "+e.util.cos(s)*o+" "+e.util.sin(s)*o,'" ',"COMMON_PARTS"," />\n"]}return t},_render:function(t){t.beginPath(),t.arc(0,0,this.radius,i(this.startAngle),i(this.endAngle),!1),this._renderPaintInOrder(t)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(t){return this.radius=t,this.set("width",2*t).set("height",2*t)}}),e.Circle.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),e.Circle.fromElement=function(t,i){var n,r=e.parseAttributes(t,e.Circle.ATTRIBUTE_NAMES);if(!("radius"in(n=r)&&n.radius>=0))throw new Error("value of `r` attribute is required and can not be negative");r.left=(r.left||0)-r.radius,r.top=(r.top||0)-r.radius,i(new e.Circle(r))},e.Circle.fromObject=function(t,i){e.Object._fromObject("Circle",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={});e.Triangle?e.warn("fabric.Triangle is already defined"):(e.Triangle=e.util.createClass(e.Object,{type:"triangle",width:100,height:100,_render:function(t){var e=this.width/2,i=this.height/2;t.beginPath(),t.moveTo(-e,i),t.lineTo(0,-i),t.lineTo(e,i),t.closePath(),this._renderPaintInOrder(t)},_toSVG:function(){var t=this.width/2,e=this.height/2;return["']}}),e.Triangle.fromObject=function(t,i){return e.Object._fromObject("Triangle",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=2*Math.PI;e.Ellipse?e.warn("fabric.Ellipse is already defined."):(e.Ellipse=e.util.createClass(e.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:e.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this.set("rx",t&&t.rx||0),this.set("ry",t&&t.ry||0)},_set:function(t,e){switch(this.callSuper("_set",t,e),t){case"rx":this.rx=e,this.set("width",2*e);break;case"ry":this.ry=e,this.set("height",2*e)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']},_render:function(t){t.beginPath(),t.save(),t.transform(1,0,0,this.ry/this.rx,0,0),t.arc(0,0,this.rx,0,i,!1),t.restore(),this._renderPaintInOrder(t)}}),e.Ellipse.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),e.Ellipse.fromElement=function(t,i){var n=e.parseAttributes(t,e.Ellipse.ATTRIBUTE_NAMES);n.left=(n.left||0)-n.rx,n.top=(n.top||0)-n.ry,i(new e.Ellipse(n))},e.Ellipse.fromObject=function(t,i){e.Object._fromObject("Ellipse",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend;e.Rect?e.warn("fabric.Rect is already defined"):(e.Rect=e.util.createClass(e.Object,{stateProperties:e.Object.prototype.stateProperties.concat("rx","ry"),type:"rect",rx:0,ry:0,cacheProperties:e.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(t){var e=this.rx?Math.min(this.rx,this.width/2):0,i=this.ry?Math.min(this.ry,this.height/2):0,n=this.width,r=this.height,s=-this.width/2,o=-this.height/2,a=0!==e||0!==i,h=.4477152502;t.beginPath(),t.moveTo(s+e,o),t.lineTo(s+n-e,o),a&&t.bezierCurveTo(s+n-h*e,o,s+n,o+h*i,s+n,o+i),t.lineTo(s+n,o+r-i),a&&t.bezierCurveTo(s+n,o+r-h*i,s+n-h*e,o+r,s+n-e,o+r),t.lineTo(s+e,o+r),a&&t.bezierCurveTo(s+h*e,o+r,s,o+r-h*i,s,o+r-i),t.lineTo(s,o+i),a&&t.bezierCurveTo(s,o+h*i,s+h*e,o,s+e,o),t.closePath(),this._renderPaintInOrder(t)},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']}}),e.Rect.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),e.Rect.fromElement=function(t,n,r){if(!t)return n(null);r=r||{};var s=e.parseAttributes(t,e.Rect.ATTRIBUTE_NAMES);s.left=s.left||0,s.top=s.top||0,s.height=s.height||0,s.width=s.width||0;var o=new e.Rect(i(r?e.util.object.clone(r):{},s));o.visible=o.visible&&o.width>0&&o.height>0,n(o)},e.Rect.fromObject=function(t,i){return e.Object._fromObject("Rect",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,n=e.util.array.min,r=e.util.array.max,s=e.util.toFixed,o=e.util.projectStrokeOnPoints;e.Polyline?e.warn("fabric.Polyline is already defined"):(e.Polyline=e.util.createClass(e.Object,{type:"polyline",points:null,exactBoundingBox:!1,cacheProperties:e.Object.prototype.cacheProperties.concat("points"),initialize:function(t,e){e=e||{},this.points=t||[],this.callSuper("initialize",e),this._setPositionDimensions(e)},_projectStrokeOnPoints:function(){return o(this.points,this,!0)},_setPositionDimensions:function(t){var e,i=this._calcDimensions(t),n=this.exactBoundingBox?this.strokeWidth:0;this.width=i.width-n,this.height=i.height-n,t.fromSVG||(e=this.translateToGivenOrigin({x:i.left-this.strokeWidth/2+n/2,y:i.top-this.strokeWidth/2+n/2},"left","top",this.originX,this.originY)),void 0===t.left&&(this.left=t.fromSVG?i.left:e.x),void 0===t.top&&(this.top=t.fromSVG?i.top:e.y),this.pathOffset={x:i.left+this.width/2+n/2,y:i.top+this.height/2+n/2}},_calcDimensions:function(){var t=this.exactBoundingBox?this._projectStrokeOnPoints():this.points,e=n(t,"x")||0,i=n(t,"y")||0;return{left:e,top:i,width:(r(t,"x")||0)-e,height:(r(t,"y")||0)-i}},toObject:function(t){return i(this.callSuper("toObject",t),{points:this.points.concat()})},_toSVG:function(){for(var t=[],i=this.pathOffset.x,n=this.pathOffset.y,r=e.Object.NUM_FRACTION_DIGITS,o=0,a=this.points.length;o\n']},commonRender:function(t){var e,i=this.points.length,n=this.pathOffset.x,r=this.pathOffset.y;if(!i||isNaN(this.points[i-1].y))return!1;t.beginPath(),t.moveTo(this.points[0].x-n,this.points[0].y-r);for(var s=0;s"},toObject:function(t){return r(this.callSuper("toObject",t),{path:this.path.map((function(t){return t.slice()}))})},toDatalessObject:function(t){var e=this.toObject(["sourcePath"].concat(t));return e.sourcePath&&delete e.path,e},_toSVG:function(){return["\n"]},_getOffsetTransform:function(){var t=e.Object.NUM_FRACTION_DIGITS;return" translate("+o(-this.pathOffset.x,t)+", "+o(-this.pathOffset.y,t)+")"},toClipPathSVG:function(t){var e=this._getOffsetTransform();return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},toSVG:function(t){var e=this._getOffsetTransform();return this._createBaseSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},complexity:function(){return this.path.length},_calcDimensions:function(){for(var t,r,s=[],o=[],a=0,h=0,l=0,c=0,u=0,d=this.path.length;u"},addWithUpdate:function(t){var i=!!this.group;return this._restoreObjectsState(),e.util.resetObjectTransform(this),t&&(i&&e.util.removeTransformFromObject(t,this.group.calcTransformMatrix()),this._objects.push(t),t.group=this,t._set("canvas",this.canvas)),this._calcBounds(),this._updateObjectsCoords(),this.dirty=!0,i?this.group.addWithUpdate():this.setCoords(),this},removeWithUpdate:function(t){return this._restoreObjectsState(),e.util.resetObjectTransform(this),this.remove(t),this._calcBounds(),this._updateObjectsCoords(),this.setCoords(),this.dirty=!0,this},_onObjectAdded:function(t){this.dirty=!0,t.group=this,t._set("canvas",this.canvas)},_onObjectRemoved:function(t){this.dirty=!0,delete t.group},_set:function(t,i){var n=this._objects.length;if(this.useSetOnGroup)for(;n--;)this._objects[n].setOnGroup(t,i);if("canvas"===t)for(;n--;)this._objects[n]._set(t,i);e.Object.prototype._set.call(this,t,i)},toObject:function(t){var i=this.includeDefaultValues,n=this._objects.filter((function(t){return!t.excludeFromExport})).map((function(e){var n=e.includeDefaultValues;e.includeDefaultValues=i;var r=e.toObject(t);return e.includeDefaultValues=n,r})),r=e.Object.prototype.toObject.call(this,t);return r.objects=n,r},toDatalessObject:function(t){var i,n=this.sourcePath;if(n)i=n;else{var r=this.includeDefaultValues;i=this._objects.map((function(e){var i=e.includeDefaultValues;e.includeDefaultValues=r;var n=e.toDatalessObject(t);return e.includeDefaultValues=i,n}))}var s=e.Object.prototype.toDatalessObject.call(this,t);return s.objects=i,s},render:function(t){this._transformDone=!0,this.callSuper("render",t),this._transformDone=!1},shouldCache:function(){var t=e.Object.prototype.shouldCache.call(this);if(t)for(var i=0,n=this._objects.length;i\n"],i=0,n=this._objects.length;i\n"),e},getSvgStyles:function(){var t=void 0!==this.opacity&&1!==this.opacity?"opacity: "+this.opacity+";":"",e=this.visible?"":" visibility: hidden;";return[t,this.getSvgFilter(),e].join("")},toClipPathSVG:function(t){for(var e=[],i=0,n=this._objects.length;i"},shouldCache:function(){return!1},isOnACache:function(){return!1},_renderControls:function(t,e,i){t.save(),t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,this.callSuper("_renderControls",t,e),void 0===(i=i||{}).hasControls&&(i.hasControls=!1),i.forActiveSelection=!0;for(var n=0,r=this._objects.length;n\n','\t\n',"\n"),o=' clip-path="url(#imageCrop_'+h+')" '}if(this.imageSmoothing||(a='" image-rendering="optimizeSpeed'),i.push("\t\n"),this.stroke||this.strokeDashArray){var l=this.fill;this.fill=null,t=["\t\n'],this.fill=l}return"fill"!==this.paintFirst?e.concat(t,i):e.concat(i,t)},getSrc:function(t){var e=t?this._element:this._originalElement;return e?e.toDataURL?e.toDataURL():this.srcFromAttribute?e.getAttribute("src"):e.src:this.src||""},setSrc:function(t,e,i){return T.util.loadImage(t,(function(t,n){this.setElement(t,i),this._setWidthHeight(),e&&e(this,n)}),this,i&&i.crossOrigin),this},toString:function(){return'#'},applyResizeFilters:function(){var t=this.resizeFilter,e=this.minimumScaleTrigger,i=this.getTotalObjectScaling(),n=i.scaleX,r=i.scaleY,s=this._filteredEl||this._originalElement;if(this.group&&this.set("dirty",!0),!t||n>e&&r>e)return this._element=s,this._filterScalingX=1,this._filterScalingY=1,this._lastScaleX=n,void(this._lastScaleY=r);T.filterBackend||(T.filterBackend=T.initFilterBackend());var o=T.util.createCanvasElement(),a=this._filteredEl?this.cacheKey+"_filtered":this.cacheKey,h=s.width,l=s.height;o.width=h,o.height=l,this._element=o,this._lastScaleX=t.scaleX=n,this._lastScaleY=t.scaleY=r,T.filterBackend.applyFilters([t],s,h,l,this._element,a),this._filterScalingX=o.width/this._originalElement.width,this._filterScalingY=o.height/this._originalElement.height},applyFilters:function(t){if(t=(t=t||this.filters||[]).filter((function(t){return t&&!t.isNeutralState()})),this.set("dirty",!0),this.removeTexture(this.cacheKey+"_filtered"),0===t.length)return this._element=this._originalElement,this._filteredEl=null,this._filterScalingX=1,this._filterScalingY=1,this;var e=this._originalElement,i=e.naturalWidth||e.width,n=e.naturalHeight||e.height;if(this._element===this._originalElement){var r=T.util.createCanvasElement();r.width=i,r.height=n,this._element=r,this._filteredEl=r}else this._element=this._filteredEl,this._filteredEl.getContext("2d").clearRect(0,0,i,n),this._lastScaleX=1,this._lastScaleY=1;return T.filterBackend||(T.filterBackend=T.initFilterBackend()),T.filterBackend.applyFilters(t,this._originalElement,i,n,this._element,this.cacheKey),this._originalElement.width===this._element.width&&this._originalElement.height===this._element.height||(this._filterScalingX=this._element.width/this._originalElement.width,this._filterScalingY=this._element.height/this._originalElement.height),this},_render:function(t){T.util.setImageSmoothing(t,this.imageSmoothing),!0!==this.isMoving&&this.resizeFilter&&this._needsResize()&&this.applyResizeFilters(),this._stroke(t),this._renderPaintInOrder(t)},drawCacheOnCanvas:function(t){T.util.setImageSmoothing(t,this.imageSmoothing),T.Object.prototype.drawCacheOnCanvas.call(this,t)},shouldCache:function(){return this.needsItsOwnCache()},_renderFill:function(t){var e=this._element;if(e){var i=this._filterScalingX,n=this._filterScalingY,r=this.width,s=this.height,o=Math.min,a=Math.max,h=a(this.cropX,0),l=a(this.cropY,0),c=e.naturalWidth||e.width,u=e.naturalHeight||e.height,d=h*i,f=l*n,g=o(r*i,c-d),m=o(s*n,u-f),p=-r/2,_=-s/2,v=o(r,c/i-h),y=o(s,u/n-l);e&&t.drawImage(e,d,f,g,m,p,_,v,y)}},_needsResize:function(){var t=this.getTotalObjectScaling();return t.scaleX!==this._lastScaleX||t.scaleY!==this._lastScaleY},_resetWidthHeight:function(){this.set(this.getOriginalSize())},_initElement:function(t,e){this.setElement(T.util.getById(t),e),T.util.addClass(this.getElement(),T.Image.CSS_CANVAS)},_initConfig:function(t){t||(t={}),this.setOptions(t),this._setWidthHeight(t)},_initFilters:function(t,e){t&&t.length?T.util.enlivenObjects(t,(function(t){e&&e(t)}),"fabric.Image.filters"):e&&e()},_setWidthHeight:function(t){t||(t={});var e=this.getElement();this.width=t.width||e.naturalWidth||e.width||0,this.height=t.height||e.naturalHeight||e.height||0},parsePreserveAspectRatioAttribute:function(){var t,e=T.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio||""),i=this._element.width,n=this._element.height,r=1,s=1,o=0,a=0,h=0,l=0,c=this.width,u=this.height,d={width:c,height:u};return!e||"none"===e.alignX&&"none"===e.alignY?(r=c/i,s=u/n):("meet"===e.meetOrSlice&&(t=(c-i*(r=s=T.util.findScaleToFit(this._element,d)))/2,"Min"===e.alignX&&(o=-t),"Max"===e.alignX&&(o=t),t=(u-n*s)/2,"Min"===e.alignY&&(a=-t),"Max"===e.alignY&&(a=t)),"slice"===e.meetOrSlice&&(t=i-c/(r=s=T.util.findScaleToCover(this._element,d)),"Mid"===e.alignX&&(h=t/2),"Max"===e.alignX&&(h=t),t=n-u/s,"Mid"===e.alignY&&(l=t/2),"Max"===e.alignY&&(l=t),i=c/r,n=u/s)),{width:i,height:n,scaleX:r,scaleY:s,offsetLeft:o,offsetTop:a,cropX:h,cropY:l}}}),T.Image.CSS_CANVAS="canvas-img",T.Image.prototype.getSvgSrc=T.Image.prototype.getSrc,T.Image.fromObject=function(t,e){var i=T.util.object.clone(t);T.util.loadImage(i.src,(function(t,n){n?e&&e(null,!0):T.Image.prototype._initFilters.call(i,i.filters,(function(n){i.filters=n||[],T.Image.prototype._initFilters.call(i,[i.resizeFilter],(function(n){i.resizeFilter=n[0],T.util.enlivenObjectEnlivables(i,i,(function(){var n=new T.Image(t,i);e(n,!1)}))}))}))}),null,i.crossOrigin)},T.Image.fromURL=function(t,e,i){T.util.loadImage(t,(function(t,n){e&&e(new T.Image(t,i),n)}),null,i&&i.crossOrigin)},T.Image.ATTRIBUTE_NAMES=T.SHARED_ATTRIBUTES.concat("x y width height preserveAspectRatio xlink:href crossOrigin image-rendering".split(" ")),T.Image.fromElement=function(t,i,n){var r=T.parseAttributes(t,T.Image.ATTRIBUTE_NAMES);T.Image.fromURL(r["xlink:href"],i,e(n?T.util.object.clone(n):{},r))})}(e),T.util.object.extend(T.Object.prototype,{_getAngleValueForStraighten:function(){var t=this.angle%360;return t>0?90*Math.round((t-1)/90):90*Math.round(t/90)},straighten:function(){return this.rotate(this._getAngleValueForStraighten())},fxStraighten:function(t){var e=function(){},i=(t=t||{}).onComplete||e,n=t.onChange||e,r=this;return T.util.animate({target:this,startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(t){r.rotate(t),n()},onComplete:function(){r.setCoords(),i()}})}}),T.util.object.extend(T.StaticCanvas.prototype,{straightenObject:function(t){return t.straighten(),this.requestRenderAll(),this},fxStraightenObject:function(t){return t.fxStraighten({onChange:this.requestRenderAllBound})}}),function(){function t(t,e){var i="precision "+e+" float;\nvoid main(){}",n=t.createShader(t.FRAGMENT_SHADER);return t.shaderSource(n,i),t.compileShader(n),!!t.getShaderParameter(n,t.COMPILE_STATUS)}function e(t){t&&t.tileSize&&(this.tileSize=t.tileSize),this.setupGLContext(this.tileSize,this.tileSize),this.captureGPUInfo()}T.isWebglSupported=function(e){if(T.isLikelyNode)return!1;e=e||T.WebglFilterBackend.prototype.tileSize;var i=document.createElement("canvas"),n=i.getContext("webgl")||i.getContext("experimental-webgl"),r=!1;if(n){T.maxTextureSize=n.getParameter(n.MAX_TEXTURE_SIZE),r=T.maxTextureSize>=e;for(var s=["highp","mediump","lowp"],o=0;o<3;o++)if(t(n,s[o])){T.webGlPrecision=s[o];break}}return this.isSupported=r,r},T.WebglFilterBackend=e,e.prototype={tileSize:2048,resources:{},setupGLContext:function(t,e){this.dispose(),this.createWebGLCanvas(t,e),this.aPosition=new Float32Array([0,0,0,1,1,0,1,1]),this.chooseFastestCopyGLTo2DMethod(t,e)},chooseFastestCopyGLTo2DMethod:function(t,e){var i,n=void 0!==window.performance;try{new ImageData(1,1),i=!0}catch(t){i=!1}var r="undefined"!=typeof ArrayBuffer,s="undefined"!=typeof Uint8ClampedArray;if(n&&i&&r&&s){var o=T.util.createCanvasElement(),a=new ArrayBuffer(t*e*4);if(T.forceGLPutImageData)return this.imageBuffer=a,void(this.copyGLTo2D=x);var h,l,c={imageBuffer:a,destinationWidth:t,destinationHeight:e,targetCanvas:o};o.width=t,o.height=e,h=window.performance.now(),I.call(c,this.gl,c),l=window.performance.now()-h,h=window.performance.now(),x.call(c,this.gl,c),l>window.performance.now()-h?(this.imageBuffer=a,this.copyGLTo2D=x):this.copyGLTo2D=I}},createWebGLCanvas:function(t,e){var i=T.util.createCanvasElement();i.width=t,i.height=e;var n={alpha:!0,premultipliedAlpha:!1,depth:!1,stencil:!1,antialias:!1},r=i.getContext("webgl",n);r||(r=i.getContext("experimental-webgl",n)),r&&(r.clearColor(0,0,0,0),this.canvas=i,this.gl=r)},applyFilters:function(t,e,i,n,r,s){var o,a=this.gl;s&&(o=this.getCachedTexture(s,e));var h={originalWidth:e.width||e.originalWidth,originalHeight:e.height||e.originalHeight,sourceWidth:i,sourceHeight:n,destinationWidth:i,destinationHeight:n,context:a,sourceTexture:this.createTexture(a,i,n,!o&&e),targetTexture:this.createTexture(a,i,n),originalTexture:o||this.createTexture(a,i,n,!o&&e),passes:t.length,webgl:!0,aPosition:this.aPosition,programCache:this.programCache,pass:0,filterBackend:this,targetCanvas:r},l=a.createFramebuffer();return a.bindFramebuffer(a.FRAMEBUFFER,l),t.forEach((function(t){t&&t.applyTo(h)})),function(t){var e=t.targetCanvas,i=e.width,n=e.height,r=t.destinationWidth,s=t.destinationHeight;i===r&&n===s||(e.width=r,e.height=s)}(h),this.copyGLTo2D(a,h),a.bindTexture(a.TEXTURE_2D,null),a.deleteTexture(h.sourceTexture),a.deleteTexture(h.targetTexture),a.deleteFramebuffer(l),r.getContext("2d").setTransform(1,0,0,1,0,0),h},dispose:function(){this.canvas&&(this.canvas=null,this.gl=null),this.clearWebGLCaches()},clearWebGLCaches:function(){this.programCache={},this.textureCache={}},createTexture:function(t,e,i,n){var r=t.createTexture();return t.bindTexture(t.TEXTURE_2D,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),n?t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,n):t.texImage2D(t.TEXTURE_2D,0,t.RGBA,e,i,0,t.RGBA,t.UNSIGNED_BYTE,null),r},getCachedTexture:function(t,e){if(this.textureCache[t])return this.textureCache[t];var i=this.createTexture(this.gl,e.width,e.height,e);return this.textureCache[t]=i,i},evictCachesForKey:function(t){this.textureCache[t]&&(this.gl.deleteTexture(this.textureCache[t]),delete this.textureCache[t])},copyGLTo2D:I,captureGPUInfo:function(){if(this.gpuInfo)return this.gpuInfo;var t=this.gl,e={renderer:"",vendor:""};if(!t)return e;var i=t.getExtension("WEBGL_debug_renderer_info");if(i){var n=t.getParameter(i.UNMASKED_RENDERER_WEBGL),r=t.getParameter(i.UNMASKED_VENDOR_WEBGL);n&&(e.renderer=n.toLowerCase()),r&&(e.vendor=r.toLowerCase())}return this.gpuInfo=e,e}}}(),function(){var t=function(){};function e(){}T.Canvas2dFilterBackend=e,e.prototype={evictCachesForKey:t,dispose:t,clearWebGLCaches:t,resources:{},applyFilters:function(t,e,i,n,r){var s=r.getContext("2d");s.drawImage(e,0,0,i,n);var o={sourceWidth:i,sourceHeight:n,imageData:s.getImageData(0,0,i,n),originalEl:e,originalImageData:s.getImageData(0,0,i,n),canvasEl:r,ctx:s,filterBackend:this};return t.forEach((function(t){t.applyTo(o)})),o.imageData.width===i&&o.imageData.height===n||(r.width=o.imageData.width,r.height=o.imageData.height),s.putImageData(o.imageData,0,0),o}}}(),T.Image=T.Image||{},T.Image.filters=T.Image.filters||{},T.Image.filters.BaseFilter=T.util.createClass({type:"BaseFilter",vertexSource:"attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvoid main() {\nvTexCoord = aPosition;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",fragmentSource:"precision highp float;\nvarying vec2 vTexCoord;\nuniform sampler2D uTexture;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\n}",initialize:function(t){t&&this.setOptions(t)},setOptions:function(t){for(var e in t)this[e]=t[e]},createProgram:function(t,e,i){e=e||this.fragmentSource,i=i||this.vertexSource,"highp"!==T.webGlPrecision&&(e=e.replace(/precision highp float/g,"precision "+T.webGlPrecision+" float"));var n=t.createShader(t.VERTEX_SHADER);if(t.shaderSource(n,i),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS))throw new Error("Vertex shader compile error for "+this.type+": "+t.getShaderInfoLog(n));var r=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(r,e),t.compileShader(r),!t.getShaderParameter(r,t.COMPILE_STATUS))throw new Error("Fragment shader compile error for "+this.type+": "+t.getShaderInfoLog(r));var s=t.createProgram();if(t.attachShader(s,n),t.attachShader(s,r),t.linkProgram(s),!t.getProgramParameter(s,t.LINK_STATUS))throw new Error('Shader link error for "${this.type}" '+t.getProgramInfoLog(s));var o=this.getAttributeLocations(t,s),a=this.getUniformLocations(t,s)||{};return a.uStepW=t.getUniformLocation(s,"uStepW"),a.uStepH=t.getUniformLocation(s,"uStepH"),{program:s,attributeLocations:o,uniformLocations:a}},getAttributeLocations:function(t,e){return{aPosition:t.getAttribLocation(e,"aPosition")}},getUniformLocations:function(){return{}},sendAttributeData:function(t,e,i){var n=e.aPosition,r=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,r),t.enableVertexAttribArray(n),t.vertexAttribPointer(n,2,t.FLOAT,!1,0,0),t.bufferData(t.ARRAY_BUFFER,i,t.STATIC_DRAW)},_setupFrameBuffer:function(t){var e,i,n=t.context;t.passes>1?(e=t.destinationWidth,i=t.destinationHeight,t.sourceWidth===e&&t.sourceHeight===i||(n.deleteTexture(t.targetTexture),t.targetTexture=t.filterBackend.createTexture(n,e,i)),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,t.targetTexture,0)):(n.bindFramebuffer(n.FRAMEBUFFER,null),n.finish())},_swapTextures:function(t){t.passes--,t.pass++;var e=t.targetTexture;t.targetTexture=t.sourceTexture,t.sourceTexture=e},isNeutralState:function(){var t=this.mainParameter,e=T.Image.filters[this.type].prototype;if(t){if(Array.isArray(e[t])){for(var i=e[t].length;i--;)if(this[t][i]!==e[t][i])return!1;return!0}return e[t]===this[t]}return!1},applyTo:function(t){t.webgl?(this._setupFrameBuffer(t),this.applyToWebGL(t),this._swapTextures(t)):this.applyTo2d(t)},retrieveShader:function(t){return t.programCache.hasOwnProperty(this.type)||(t.programCache[this.type]=this.createProgram(t.context)),t.programCache[this.type]},applyToWebGL:function(t){var e=t.context,i=this.retrieveShader(t);0===t.pass&&t.originalTexture?e.bindTexture(e.TEXTURE_2D,t.originalTexture):e.bindTexture(e.TEXTURE_2D,t.sourceTexture),e.useProgram(i.program),this.sendAttributeData(e,i.attributeLocations,t.aPosition),e.uniform1f(i.uniformLocations.uStepW,1/t.sourceWidth),e.uniform1f(i.uniformLocations.uStepH,1/t.sourceHeight),this.sendUniformData(e,i.uniformLocations),e.viewport(0,0,t.destinationWidth,t.destinationHeight),e.drawArrays(e.TRIANGLE_STRIP,0,4)},bindAdditionalTexture:function(t,e,i){t.activeTexture(i),t.bindTexture(t.TEXTURE_2D,e),t.activeTexture(t.TEXTURE0)},unbindAdditionalTexture:function(t,e){t.activeTexture(e),t.bindTexture(t.TEXTURE_2D,null),t.activeTexture(t.TEXTURE0)},getMainParameter:function(){return this[this.mainParameter]},setMainParameter:function(t){this[this.mainParameter]=t},sendUniformData:function(){},createHelpLayer:function(t){if(!t.helpLayer){var e=document.createElement("canvas");e.width=t.sourceWidth,e.height=t.sourceHeight,t.helpLayer=e}},toObject:function(){var t={type:this.type},e=this.mainParameter;return e&&(t[e]=this[e]),t},toJSON:function(){return this.toObject()}}),T.Image.filters.BaseFilter.fromObject=function(t,e){var i=new T.Image.filters[t.type](t);return e&&e(i),i},function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,n=e.util.createClass;i.ColorMatrix=n(i.BaseFilter,{type:"ColorMatrix",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nuniform mat4 uColorMatrix;\nuniform vec4 uConstants;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor *= uColorMatrix;\ncolor += uConstants;\ngl_FragColor = color;\n}",matrix:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],mainParameter:"matrix",colorsOnly:!0,initialize:function(t){this.callSuper("initialize",t),this.matrix=this.matrix.slice(0)},applyTo2d:function(t){var e,i,n,r,s,o=t.imageData.data,a=o.length,h=this.matrix,l=this.colorsOnly;for(s=0;s=w||o<0||o>=y||(h=4*(a*y+o),l=p[f*_+d],e+=m[h]*l,i+=m[h+1]*l,n+=m[h+2]*l,S||(r+=m[h+3]*l));E[s]=e,E[s+1]=i,E[s+2]=n,E[s+3]=S?m[s+3]:r}t.imageData=C},getUniformLocations:function(t,e){return{uMatrix:t.getUniformLocation(e,"uMatrix"),uOpaque:t.getUniformLocation(e,"uOpaque"),uHalfSize:t.getUniformLocation(e,"uHalfSize"),uSize:t.getUniformLocation(e,"uSize")}},sendUniformData:function(t,e){t.uniform1fv(e.uMatrix,this.matrix)},toObject:function(){return i(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),e.Image.filters.Convolute.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,n=e.util.createClass;i.Grayscale=n(i.BaseFilter,{type:"Grayscale",fragmentSource:{average:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat average = (color.r + color.b + color.g) / 3.0;\ngl_FragColor = vec4(average, average, average, color.a);\n}",lightness:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\ngl_FragColor = vec4(average, average, average, col.a);\n}",luminosity:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\ngl_FragColor = vec4(average, average, average, col.a);\n}"},mode:"average",mainParameter:"mode",applyTo2d:function(t){var e,i,n=t.imageData.data,r=n.length,s=this.mode;for(e=0;el[0]&&r>l[1]&&s>l[2]&&n 0.0) {\n"+this.fragmentSource[t]+"}\n}"},retrieveShader:function(t){var e,i=this.type+"_"+this.mode;return t.programCache.hasOwnProperty(i)||(e=this.buildSource(this.mode),t.programCache[i]=this.createProgram(t.context,e)),t.programCache[i]},applyTo2d:function(t){var i,n,r,s,o,a,h,l=t.imageData.data,c=l.length,u=1-this.alpha;i=(h=new e.Color(this.color).getSource())[0]*this.alpha,n=h[1]*this.alpha,r=h[2]*this.alpha;for(var d=0;d=t||e<=-t)return 0;if(e<1.1920929e-7&&e>-1.1920929e-7)return 1;var i=(e*=Math.PI)/t;return a(e)/e*a(i)/i}},applyTo2d:function(t){var e=t.imageData,i=this.scaleX,n=this.scaleY;this.rcpScaleX=1/i,this.rcpScaleY=1/n;var r,s=e.width,a=e.height,h=o(s*i),l=o(a*n);"sliceHack"===this.resizeType?r=this.sliceByTwo(t,s,a,h,l):"hermite"===this.resizeType?r=this.hermiteFastResize(t,s,a,h,l):"bilinear"===this.resizeType?r=this.bilinearFiltering(t,s,a,h,l):"lanczos"===this.resizeType&&(r=this.lanczosResize(t,s,a,h,l)),t.imageData=r},sliceByTwo:function(t,i,r,s,o){var a,h,l=t.imageData,c=.5,u=!1,d=!1,f=i*c,g=r*c,m=e.filterBackend.resources,p=0,_=0,v=i,y=0;for(m.sliceByTwo||(m.sliceByTwo=document.createElement("canvas")),((a=m.sliceByTwo).width<1.5*i||a.height=e)){L=n(1e3*s(T-C.x)),w[L]||(w[L]={});for(var F=E.y-y;F<=E.y+y;F++)F<0||F>=o||(M=n(1e3*s(F-C.y)),w[L][M]||(w[L][M]=f(r(i(L*p,2)+i(M*_,2))/1e3)),(b=w[L][M])>0&&(x+=b,O+=b*c[I=4*(F*e+T)],A+=b*c[I+1],R+=b*c[I+2],D+=b*c[I+3]))}d[I=4*(S*a+h)]=O/x,d[I+1]=A/x,d[I+2]=R/x,d[I+3]=D/x}return++h1&&M<-1||(y=2*M*M*M-3*M*M+1)>0&&(b+=y*f[3+(L=4*(D+x*e))],C+=y,f[L+3]<255&&(y=y*f[L+3]/250),E+=y*f[L],S+=y*f[L+1],T+=y*f[L+2],w+=y)}m[v]=E/w,m[v+1]=S/w,m[v+2]=T/w,m[v+3]=b/C}return g},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),e.Image.filters.Resize.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,n=e.util.createClass;i.Contrast=n(i.BaseFilter,{type:"Contrast",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uContrast;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\ncolor.rgb = contrastF * (color.rgb - 0.5) + 0.5;\ngl_FragColor = color;\n}",contrast:0,mainParameter:"contrast",applyTo2d:function(t){if(0!==this.contrast){var e,i=t.imageData.data,n=i.length,r=Math.floor(255*this.contrast),s=259*(r+255)/(255*(259-r));for(e=0;e1&&(e=1/this.aspectRatio):this.aspectRatio<1&&(e=this.aspectRatio),t=e*this.blur*.12,this.horizontal?i[0]=t:i[1]=t,i}}),i.Blur.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,n=e.util.createClass;i.Gamma=n(i.BaseFilter,{type:"Gamma",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform vec3 uGamma;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec3 correction = (1.0 / uGamma);\ncolor.r = pow(color.r, correction.r);\ncolor.g = pow(color.g, correction.g);\ncolor.b = pow(color.b, correction.b);\ngl_FragColor = color;\ngl_FragColor.rgb *= color.a;\n}",gamma:[1,1,1],mainParameter:"gamma",initialize:function(t){this.gamma=[1,1,1],i.BaseFilter.prototype.initialize.call(this,t)},applyTo2d:function(t){var e,i=t.imageData.data,n=this.gamma,r=i.length,s=1/n[0],o=1/n[1],a=1/n[2];for(this.rVals||(this.rVals=new Uint8Array(256),this.gVals=new Uint8Array(256),this.bVals=new Uint8Array(256)),e=0,r=256;e'},_getCacheCanvasDimensions:function(){var t=this.callSuper("_getCacheCanvasDimensions"),e=this.fontSize;return t.width+=e*t.zoomX,t.height+=e*t.zoomY,t},_render:function(t){var e=this.path;e&&!e.isNotVisible()&&e._render(t),this._setTextStyles(t),this._renderTextLinesBackground(t),this._renderTextDecoration(t,"underline"),this._renderText(t),this._renderTextDecoration(t,"overline"),this._renderTextDecoration(t,"linethrough")},_renderText:function(t){"stroke"===this.paintFirst?(this._renderTextStroke(t),this._renderTextFill(t)):(this._renderTextFill(t),this._renderTextStroke(t))},_setTextStyles:function(t,e,i){if(t.textBaseline="alphabetical",this.path)switch(this.pathAlign){case"center":t.textBaseline="middle";break;case"ascender":t.textBaseline="top";break;case"descender":t.textBaseline="bottom"}t.font=this._getFontDeclaration(e,i)},calcTextWidth:function(){for(var t=this.getLineWidth(0),e=1,i=this._textLines.length;et&&(t=n)}return t},_renderTextLine:function(t,e,i,n,r,s){this._renderChars(t,e,i,n,r,s)},_renderTextLinesBackground:function(t){if(this.textBackgroundColor||this.styleHas("textBackgroundColor")){for(var e,i,n,r,s,o,a,h=t.fillStyle,l=this._getLeftOffset(),c=this._getTopOffset(),u=0,d=0,f=this.path,g=0,m=this._textLines.length;g=0:ia?u%=a:u<0&&(u+=a),this._setGraphemeOnPath(u,s,o),u+=s.kernedWidth}return{width:h,numOfSpaces:0}},_setGraphemeOnPath:function(t,i,n){var r=t+i.kernedWidth/2,s=this.path,o=e.util.getPointOnPath(s.path,r,s.segmentsInfo);i.renderLeft=o.x-n.x,i.renderTop=o.y-n.y,i.angle=o.angle+("right"===this.pathSide?Math.PI:0)},_getGraphemeBox:function(t,e,i,n,r){var s,o=this.getCompleteStyleDeclaration(e,i),a=n?this.getCompleteStyleDeclaration(e,i-1):{},h=this._measureChar(t,o,n,a),l=h.kernedWidth,c=h.width;0!==this.charSpacing&&(c+=s=this._getWidthOfCharSpacing(),l+=s);var u={width:c,left:0,height:o.fontSize,kernedWidth:l,deltaY:o.deltaY};if(i>0&&!r){var d=this.__charBounds[e][i-1];u.left=d.left+d.width+h.kernedWidth-h.width}return u},getHeightOfLine:function(t){if(this.__lineHeights[t])return this.__lineHeights[t];for(var e=this._textLines[t],i=this.getHeightOfChar(t,0),n=1,r=e.length;n0){var x=v+s+u;"rtl"===this.direction&&(x=this.width-x-d),l&&_&&(t.fillStyle=_,t.fillRect(x,c+E*n+o,d,this.fontSize/15)),u=f.left,d=f.width,l=g,_=p,n=r,o=a}else d+=f.kernedWidth;x=v+s+u,"rtl"===this.direction&&(x=this.width-x-d),t.fillStyle=p,g&&p&&t.fillRect(x,c+E*n+o,d-C,this.fontSize/15),y+=i}else y+=i;this._removeShadow(t)}},_getFontDeclaration:function(t,i){var n=t||this,r=this.fontFamily,s=e.Text.genericFonts.indexOf(r.toLowerCase())>-1,o=void 0===r||r.indexOf("'")>-1||r.indexOf(",")>-1||r.indexOf('"')>-1||s?n.fontFamily:'"'+n.fontFamily+'"';return[e.isLikelyNode?n.fontWeight:n.fontStyle,e.isLikelyNode?n.fontStyle:n.fontWeight,i?this.CACHE_FONT_SIZE+"px":n.fontSize+"px",o].join(" ")},render:function(t){this.visible&&(this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(this._shouldClearDimensionCache()&&this.initDimensions(),this.callSuper("render",t)))},_splitTextIntoLines:function(t){for(var i=t.split(this._reNewline),n=new Array(i.length),r=["\n"],s=[],o=0;o-1&&(t.underline=!0),t.textDecoration.indexOf("line-through")>-1&&(t.linethrough=!0),t.textDecoration.indexOf("overline")>-1&&(t.overline=!0),delete t.textDecoration)}T.IText=T.util.createClass(T.Text,T.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"",cursorDelay:1e3,cursorDuration:600,caching:!0,hiddenTextareaContainer:null,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,__widthOfSpace:[],inCompositionMode:!1,initialize:function(t,e){this.callSuper("initialize",t,e),this.initBehavior()},setSelectionStart:function(t){t=Math.max(t,0),this._updateAndFire("selectionStart",t)},setSelectionEnd:function(t){t=Math.min(t,this.text.length),this._updateAndFire("selectionEnd",t)},_updateAndFire:function(t,e){this[t]!==e&&(this._fireSelectionChanged(),this[t]=e),this._updateTextarea()},_fireSelectionChanged:function(){this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},initDimensions:function(){this.isEditing&&this.initDelayedCursor(),this.clearContextTop(),this.callSuper("initDimensions")},render:function(t){this.clearContextTop(),this.callSuper("render",t),this.cursorOffsetCache={},this.renderCursorOrSelection()},_render:function(t){this.callSuper("_render",t)},clearContextTop:function(t){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var e=this.canvas.contextTop,i=this.canvas.viewportTransform;e.save(),e.transform(i[0],i[1],i[2],i[3],i[4],i[5]),this.transform(e),this._clearTextArea(e),t||e.restore()}},renderCursorOrSelection:function(){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var t=this._getCursorBoundaries(),e=this.canvas.contextTop;this.clearContextTop(!0),this.selectionStart===this.selectionEnd?this.renderCursor(t,e):this.renderSelection(t,e),e.restore()}},_clearTextArea:function(t){var e=this.width+4,i=this.height+4;t.clearRect(-e/2,-i/2,e,i)},_getCursorBoundaries:function(t){void 0===t&&(t=this.selectionStart);var e=this._getLeftOffset(),i=this._getTopOffset(),n=this._getCursorBoundariesOffsets(t);return{left:e,top:i,leftOffset:n.left,topOffset:n.top}},_getCursorBoundariesOffsets:function(t){if(this.cursorOffsetCache&&"top"in this.cursorOffsetCache)return this.cursorOffsetCache;var e,i,n,r,s=0,o=0,a=this.get2DCursorLocation(t);n=a.charIndex,i=a.lineIndex;for(var h=0;h0?o:0)},"rtl"===this.direction&&(r.left*=-1),this.cursorOffsetCache=r,this.cursorOffsetCache},renderCursor:function(t,e){var i=this.get2DCursorLocation(),n=i.lineIndex,r=i.charIndex>0?i.charIndex-1:0,s=this.getValueOfPropertyAt(n,r,"fontSize"),o=this.scaleX*this.canvas.getZoom(),a=this.cursorWidth/o,h=t.topOffset,l=this.getValueOfPropertyAt(n,r,"deltaY");h+=(1-this._fontSizeFraction)*this.getHeightOfLine(n)/this.lineHeight-s*(1-this._fontSizeFraction),this.inCompositionMode&&this.renderSelection(t,e),e.fillStyle=this.cursorColor||this.getValueOfPropertyAt(n,r,"fill"),e.globalAlpha=this.__isMousedown?1:this._currentCursorOpacity,e.fillRect(t.left+t.leftOffset-a/2,h+t.top+l,a,s)},renderSelection:function(t,e){for(var i=this.inCompositionMode?this.hiddenTextarea.selectionStart:this.selectionStart,n=this.inCompositionMode?this.hiddenTextarea.selectionEnd:this.selectionEnd,r=-1!==this.textAlign.indexOf("justify"),s=this.get2DCursorLocation(i),o=this.get2DCursorLocation(n),a=s.lineIndex,h=o.lineIndex,l=s.charIndex<0?0:s.charIndex,c=o.charIndex<0?0:o.charIndex,u=a;u<=h;u++){var d,f=this._getLineLeftOffset(u)||0,g=this.getHeightOfLine(u),m=0,p=0;if(u===a&&(m=this.__charBounds[a][l].left),u>=a&&u1)&&(g/=this.lineHeight);var v=t.left+f+m,y=p-m,w=g,C=0;this.inCompositionMode?(e.fillStyle=this.compositionColor||"black",w=1,C=g):e.fillStyle=this.selectionColor,"rtl"===this.direction&&(v=this.width-v-y),e.fillRect(v,t.top+t.topOffset+C,y,w),t.topOffset+=d}},getCurrentCharFontSize:function(){var t=this._getCurrentCharIndex();return this.getValueOfPropertyAt(t.l,t.c,"fontSize")},getCurrentCharColor:function(){var t=this._getCurrentCharIndex();return this.getValueOfPropertyAt(t.l,t.c,"fill")},_getCurrentCharIndex:function(){var t=this.get2DCursorLocation(this.selectionStart,!0),e=t.charIndex>0?t.charIndex-1:0;return{l:t.lineIndex,c:e}}}),T.IText.fromObject=function(e,i){if(t(e),e.styles)for(var n in e.styles)for(var r in e.styles[n])t(e.styles[n][r]);T.Object._fromObject("IText",e,i,"text")}}(),S=T.util.object.clone,T.util.object.extend(T.IText.prototype,{initBehavior:function(){this.initAddedHandler(),this.initRemovedHandler(),this.initCursorSelectionHandlers(),this.initDoubleClickSimulation(),this.mouseMoveHandler=this.mouseMoveHandler.bind(this)},onDeselect:function(){this.isEditing&&this.exitEditing(),this.selected=!1},initAddedHandler:function(){var t=this;this.on("added",(function(){var e=t.canvas;e&&(e._hasITextHandlers||(e._hasITextHandlers=!0,t._initCanvasHandlers(e)),e._iTextInstances=e._iTextInstances||[],e._iTextInstances.push(t))}))},initRemovedHandler:function(){var t=this;this.on("removed",(function(){var e=t.canvas;e&&(e._iTextInstances=e._iTextInstances||[],T.util.removeFromArray(e._iTextInstances,t),0===e._iTextInstances.length&&(e._hasITextHandlers=!1,t._removeCanvasHandlers(e)))}))},_initCanvasHandlers:function(t){t._mouseUpITextHandler=function(){t._iTextInstances&&t._iTextInstances.forEach((function(t){t.__isMousedown=!1}))},t.on("mouse:up",t._mouseUpITextHandler)},_removeCanvasHandlers:function(t){t.off("mouse:up",t._mouseUpITextHandler)},_tick:function(){this._currentTickState=this._animateCursor(this,1,this.cursorDuration,"_onTickComplete")},_animateCursor:function(t,e,i,n){var r;return r={isAborted:!1,abort:function(){this.isAborted=!0}},t.animate("_currentCursorOpacity",e,{duration:i,onComplete:function(){r.isAborted||t[n]()},onChange:function(){t.canvas&&t.selectionStart===t.selectionEnd&&t.renderCursorOrSelection()},abort:function(){return r.isAborted}}),r},_onTickComplete:function(){var t=this;this._cursorTimeout1&&clearTimeout(this._cursorTimeout1),this._cursorTimeout1=setTimeout((function(){t._currentTickCompleteState=t._animateCursor(t,0,this.cursorDuration/2,"_tick")}),100)},initDelayedCursor:function(t){var e=this,i=t?0:this.cursorDelay;this.abortCursorAnimation(),this._currentCursorOpacity=1,this._cursorTimeout2=setTimeout((function(){e._tick()}),i)},abortCursorAnimation:function(){var t=this._currentTickState||this._currentTickCompleteState,e=this.canvas;this._currentTickState&&this._currentTickState.abort(),this._currentTickCompleteState&&this._currentTickCompleteState.abort(),clearTimeout(this._cursorTimeout1),clearTimeout(this._cursorTimeout2),this._currentCursorOpacity=0,t&&e&&e.clearContext(e.contextTop||e.contextContainer)},selectAll:function(){return this.selectionStart=0,this.selectionEnd=this._text.length,this._fireSelectionChanged(),this._updateTextarea(),this},getSelectedText:function(){return this._text.slice(this.selectionStart,this.selectionEnd).join("")},findWordBoundaryLeft:function(t){var e=0,i=t-1;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)e++,i--;for(;/\S/.test(this._text[i])&&i>-1;)e++,i--;return t-e},findWordBoundaryRight:function(t){var e=0,i=t;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)e++,i++;for(;/\S/.test(this._text[i])&&i-1;)e++,i--;return t-e},findLineBoundaryRight:function(t){for(var e=0,i=t;!/\n/.test(this._text[i])&&i0&&nthis.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=e):(this.selectionStart=e,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===i&&this.selectionEnd===n||(this.restartCursorIfNeeded(),this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},fromStringToGraphemeSelection:function(t,e,i){var n=i.slice(0,t),r=T.util.string.graphemeSplit(n).length;if(t===e)return{selectionStart:r,selectionEnd:r};var s=i.slice(t,e);return{selectionStart:r,selectionEnd:r+T.util.string.graphemeSplit(s).length}},fromGraphemeToStringSelection:function(t,e,i){var n=i.slice(0,t).join("").length;return t===e?{selectionStart:n,selectionEnd:n}:{selectionStart:n,selectionEnd:n+i.slice(t,e).join("").length}},_updateTextarea:function(){if(this.cursorOffsetCache={},this.hiddenTextarea){if(!this.inCompositionMode){var t=this.fromGraphemeToStringSelection(this.selectionStart,this.selectionEnd,this._text);this.hiddenTextarea.selectionStart=t.selectionStart,this.hiddenTextarea.selectionEnd=t.selectionEnd}this.updateTextareaPosition()}},updateFromTextArea:function(){if(this.hiddenTextarea){this.cursorOffsetCache={},this.text=this.hiddenTextarea.value,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords());var t=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value);this.selectionEnd=this.selectionStart=t.selectionEnd,this.inCompositionMode||(this.selectionStart=t.selectionStart),this.updateTextareaPosition()}},updateTextareaPosition:function(){if(this.selectionStart===this.selectionEnd){var t=this._calcTextareaPosition();this.hiddenTextarea.style.left=t.left,this.hiddenTextarea.style.top=t.top}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var t=this.inCompositionMode?this.compositionStart:this.selectionStart,e=this._getCursorBoundaries(t),i=this.get2DCursorLocation(t),n=i.lineIndex,r=i.charIndex,s=this.getValueOfPropertyAt(n,r,"fontSize")*this.lineHeight,o=e.leftOffset,a=this.calcTransformMatrix(),h={x:e.left+o,y:e.top+e.topOffset+s},l=this.canvas.getRetinaScaling(),c=this.canvas.upperCanvasEl,u=c.width/l,d=c.height/l,f=u-s,g=d-s,m=c.clientWidth/u,p=c.clientHeight/d;return h=T.util.transformPoint(h,a),(h=T.util.transformPoint(h,this.canvas.viewportTransform)).x*=m,h.y*=p,h.x<0&&(h.x=0),h.x>f&&(h.x=f),h.y<0&&(h.y=0),h.y>g&&(h.y=g),h.x+=this.canvas._offset.left,h.y+=this.canvas._offset.top,{left:h.x+"px",top:h.y+"px",fontSize:s+"px",charHeight:s}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,selectable:this.selectable,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.hoverCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.selectable=this._savedProps.selectable,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var t=this._textBeforeEdit!==this.text,e=this.hiddenTextarea;return this.selected=!1,this.isEditing=!1,this.selectionEnd=this.selectionStart,e&&(e.blur&&e.blur(),e.parentNode&&e.parentNode.removeChild(e)),this.hiddenTextarea=null,this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this.fire("editing:exited"),t&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),t&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var t in this.styles)this._textLines[t]||delete this.styles[t]},removeStyleFromTo:function(t,e){var i,n,r=this.get2DCursorLocation(t,!0),s=this.get2DCursorLocation(e,!0),o=r.lineIndex,a=r.charIndex,h=s.lineIndex,l=s.charIndex;if(o!==h){if(this.styles[o])for(i=a;i=l&&(n[c-d]=n[u],delete n[u])}},shiftLineStyles:function(t,e){var i=S(this.styles);for(var n in this.styles){var r=parseInt(n,10);r>t&&(this.styles[r+e]=i[r],i[r-e]||delete this.styles[r])}},restartCursorIfNeeded:function(){this._currentTickState&&!this._currentTickState.isAborted&&this._currentTickCompleteState&&!this._currentTickCompleteState.isAborted||this.initDelayedCursor()},insertNewlineStyleObject:function(t,e,i,n){var r,s={},o=!1,a=this._unwrappedTextLines[t].length===e;for(var h in i||(i=1),this.shiftLineStyles(t,i),this.styles[t]&&(r=this.styles[t][0===e?e:e-1]),this.styles[t]){var l=parseInt(h,10);l>=e&&(o=!0,s[l-e]=this.styles[t][h],a&&0===e||delete this.styles[t][h])}var c=!1;for(o&&!a&&(this.styles[t+i]=s,c=!0),c&&i--;i>0;)n&&n[i-1]?this.styles[t+i]={0:S(n[i-1])}:r?this.styles[t+i]={0:S(r)}:delete this.styles[t+i],i--;this._forceClearCache=!0},insertCharStyleObject:function(t,e,i,n){this.styles||(this.styles={});var r=this.styles[t],s=r?S(r):{};for(var o in i||(i=1),s){var a=parseInt(o,10);a>=e&&(r[a+i]=s[a],s[a-i]||delete r[a])}if(this._forceClearCache=!0,n)for(;i--;)Object.keys(n[i]).length&&(this.styles[t]||(this.styles[t]={}),this.styles[t][e+i]=S(n[i]));else if(r)for(var h=r[e?e-1:1];h&&i--;)this.styles[t][e+i]=S(h)},insertNewStyleBlock:function(t,e,i){for(var n=this.get2DCursorLocation(e,!0),r=[0],s=0,o=0;o0&&(this.insertCharStyleObject(n.lineIndex,n.charIndex,r[0],i),i=i&&i.slice(r[0]+1)),s&&this.insertNewlineStyleObject(n.lineIndex,n.charIndex+r[0],s),o=1;o0?this.insertCharStyleObject(n.lineIndex+o,0,r[o],i):i&&this.styles[n.lineIndex+o]&&i[0]&&(this.styles[n.lineIndex+o][0]=i[0]),i=i&&i.slice(r[o]+1);r[o]>0&&this.insertCharStyleObject(n.lineIndex+o,0,r[o],i)},setSelectionStartEndWithShift:function(t,e,i){i<=t?(e===t?this._selectionDirection="left":"right"===this._selectionDirection&&(this._selectionDirection="left",this.selectionEnd=t),this.selectionStart=i):i>t&&it?this.selectionStart=t:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>t?this.selectionEnd=t:this.selectionEnd<0&&(this.selectionEnd=0)}}),T.util.object.extend(T.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown)},onMouseDown:function(t){if(this.canvas){this.__newClickTime=+new Date;var e=t.pointer;this.isTripleClick(e)&&(this.fire("tripleclick",t),this._stopEvent(t.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=e,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected}},isTripleClick:function(t){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===t.x&&this.__lastPointer.y===t.y},_stopEvent:function(t){t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation()},initCursorSelectionHandlers:function(){this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},doubleClickHandler:function(t){this.isEditing&&this.selectWord(this.getSelectionStartFromPointer(t.e))},tripleClickHandler:function(t){this.isEditing&&this.selectLine(this.getSelectionStartFromPointer(t.e))},initClicks:function(){this.on("mousedblclick",this.doubleClickHandler),this.on("tripleclick",this.tripleClickHandler)},_mouseDownHandler:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.__isMousedown=!0,this.selected&&(this.inCompositionMode=!1,this.setCursorByClick(t.e)),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection()))},_mouseDownHandlerBefore:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.selected=this===this.canvas._activeObject)},initMousedownHandler:function(){this.on("mousedown",this._mouseDownHandler),this.on("mousedown:before",this._mouseDownHandlerBefore)},initMouseupHandler:function(){this.on("mouseup",this.mouseUpHandler)},mouseUpHandler:function(t){if(this.__isMousedown=!1,!(!this.editable||this.group||t.transform&&t.transform.actionPerformed||t.e.button&&1!==t.e.button)){if(this.canvas){var e=this.canvas._activeObject;if(e&&e!==this)return}this.__lastSelected&&!this.__corner?(this.selected=!1,this.__lastSelected=!1,this.enterEditing(t.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()):this.selected=!0}},setCursorByClick:function(t){var e=this.getSelectionStartFromPointer(t),i=this.selectionStart,n=this.selectionEnd;t.shiftKey?this.setSelectionStartEndWithShift(i,n,e):(this.selectionStart=e,this.selectionEnd=e),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(t){for(var e,i=this.getLocalPointer(t),n=0,r=0,s=0,o=0,a=0,h=0,l=this._textLines.length;h0&&(o+=this._textLines[h-1].length+this.missingNewlineOffset(h-1));r=this._getLineLeftOffset(a)*this.scaleX,e=this._textLines[a],"rtl"===this.direction&&(i.x=this.width*this.scaleX-i.x+r);for(var c=0,u=e.length;cs||o<0?0:1);return this.flipX&&(a=r-a),a>this._text.length&&(a=this._text.length),a}}),T.util.object.extend(T.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=T.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.setAttribute("autocorrect","off"),this.hiddenTextarea.setAttribute("autocomplete","off"),this.hiddenTextarea.setAttribute("spellcheck","false"),this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea",""),this.hiddenTextarea.setAttribute("wrap","off");var t=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+t.top+"; left: "+t.left+"; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; paddingーtop: "+t.fontSize+";",this.hiddenTextareaContainer?this.hiddenTextareaContainer.appendChild(this.hiddenTextarea):T.document.body.appendChild(this.hiddenTextarea),T.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),T.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),T.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),T.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),T.util.addListener(this.hiddenTextarea,"cut",this.copy.bind(this)),T.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),T.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(T.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},keysMap:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown"},keysMapRtl:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorLeft",36:"moveCursorRight",37:"moveCursorRight",38:"moveCursorUp",39:"moveCursorLeft",40:"moveCursorDown"},ctrlKeysMapUp:{67:"copy",88:"cut"},ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(t){if(this.isEditing){var e="rtl"===this.direction?this.keysMapRtl:this.keysMap;if(t.keyCode in e)this[e[t.keyCode]](t);else{if(!(t.keyCode in this.ctrlKeysMapDown)||!t.ctrlKey&&!t.metaKey)return;this[this.ctrlKeysMapDown[t.keyCode]](t)}t.stopImmediatePropagation(),t.preventDefault(),t.keyCode>=33&&t.keyCode<=40?(this.inCompositionMode=!1,this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.requestRenderAll()}},onKeyUp:function(t){!this.isEditing||this._copyDone||this.inCompositionMode?this._copyDone=!1:t.keyCode in this.ctrlKeysMapUp&&(t.ctrlKey||t.metaKey)&&(this[this.ctrlKeysMapUp[t.keyCode]](t),t.stopImmediatePropagation(),t.preventDefault(),this.canvas&&this.canvas.requestRenderAll())},onInput:function(t){var e=this.fromPaste;if(this.fromPaste=!1,t&&t.stopPropagation(),this.isEditing){var i,n,r,s,o,a=this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,h=this._text.length,l=a.length,c=l-h,u=this.selectionStart,d=this.selectionEnd,f=u!==d;if(""===this.hiddenTextarea.value)return this.styles={},this.updateFromTextArea(),this.fire("changed"),void(this.canvas&&(this.canvas.fire("text:changed",{target:this}),this.canvas.requestRenderAll()));var g=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value),m=u>g.selectionStart;f?(i=this._text.slice(u,d),c+=d-u):l0&&(n+=(i=this.__charBounds[t][e-1]).left+i.width),n},getDownCursorOffset:function(t,e){var i=this._getSelectionForOffset(t,e),n=this.get2DCursorLocation(i),r=n.lineIndex;if(r===this._textLines.length-1||t.metaKey||34===t.keyCode)return this._text.length-i;var s=n.charIndex,o=this._getWidthBeforeCursor(r,s),a=this._getIndexOnLine(r+1,o);return this._textLines[r].slice(s).length+a+1+this.missingNewlineOffset(r)},_getSelectionForOffset:function(t,e){return t.shiftKey&&this.selectionStart!==this.selectionEnd&&e?this.selectionEnd:this.selectionStart},getUpCursorOffset:function(t,e){var i=this._getSelectionForOffset(t,e),n=this.get2DCursorLocation(i),r=n.lineIndex;if(0===r||t.metaKey||33===t.keyCode)return-i;var s=n.charIndex,o=this._getWidthBeforeCursor(r,s),a=this._getIndexOnLine(r-1,o),h=this._textLines[r].slice(0,s),l=this.missingNewlineOffset(r-1);return-this._textLines[r-1].length+a-h.length+(1-l)},_getIndexOnLine:function(t,e){for(var i,n,r=this._textLines[t],s=this._getLineLeftOffset(t),o=0,a=0,h=r.length;ae){n=!0;var l=s-i,c=s,u=Math.abs(l-e);o=Math.abs(c-e)=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorUpOrDown("Down",t)},moveCursorUp:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",t)},_moveCursorUpOrDown:function(t,e){var i=this["get"+t+"CursorOffset"](e,"right"===this._selectionDirection);e.shiftKey?this.moveCursorWithShift(i):this.moveCursorWithoutShift(i),0!==i&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(t){var e="left"===this._selectionDirection?this.selectionStart+t:this.selectionEnd+t;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,e),0!==t},moveCursorWithoutShift:function(t){return t<0?(this.selectionStart+=t,this.selectionEnd=this.selectionStart):(this.selectionEnd+=t,this.selectionStart=this.selectionEnd),0!==t},moveCursorLeft:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",t)},_move:function(t,e,i){var n;if(t.altKey)n=this["findWordBoundary"+i](this[e]);else{if(!t.metaKey&&35!==t.keyCode&&36!==t.keyCode)return this[e]+="Left"===i?-1:1,!0;n=this["findLineBoundary"+i](this[e])}if(void 0!==typeof n&&this[e]!==n)return this[e]=n,!0},_moveLeft:function(t,e){return this._move(t,e,"Left")},_moveRight:function(t,e){return this._move(t,e,"Right")},moveCursorLeftWithoutShift:function(t){var e=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(e=this._moveLeft(t,"selectionStart")),this.selectionEnd=this.selectionStart,e},moveCursorLeftWithShift:function(t){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(t,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(t,"selectionStart")):void 0},moveCursorRight:function(t){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorLeftOrRight("Right",t)},_moveCursorLeftOrRight:function(t,e){var i="moveCursor"+t+"With";this._currentCursorOpacity=1,e.shiftKey?i+="Shift":i+="outShift",this[i](e)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(t){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(t,"selectionStart"):this.selectionEnd!==this._text.length?(this._selectionDirection="right",this._moveRight(t,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(t){var e=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(e=this._moveRight(t,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,e},removeChars:function(t,e){void 0===e&&(e=t+1),this.removeStyleFromTo(t,e),this._text.splice(t,e-t),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()},insertChars:function(t,e,i,n){void 0===n&&(n=i),n>i&&this.removeStyleFromTo(i,n);var r=T.util.string.graphemeSplit(t);this.insertNewStyleBlock(r,i,e),this._text=[].concat(this._text.slice(0,i),r,this._text.slice(n)),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()}}),function(){var t=T.util.toFixed,e=/ +/g;T.util.object.extend(T.Text.prototype,{_toSVG:function(){var t=this._getSVGLeftTopOffsets(),e=this._getSVGTextAndBg(t.textTop,t.textLeft);return this._wrapSVGTextAndBg(e)},toSVG:function(t){return this._createBaseSVGMarkup(this._toSVG(),{reviver:t,noStyle:!0,withShadow:!0})},_getSVGLeftTopOffsets:function(){return{textLeft:-this.width/2,textTop:-this.height/2,lineTop:this.getHeightOfLine(0)}},_wrapSVGTextAndBg:function(t){var e=this.getSvgTextDecoration(this);return[t.textBgRects.join(""),'\t\t",t.textSpans.join(""),"\n"]},_getSVGTextAndBg:function(t,e){var i,n=[],r=[],s=t;this._setSVGBg(r);for(var o=0,a=this._textLines.length;o",T.util.string.escapeXml(i),""].join("")},_setSVGTextLineText:function(t,e,i,n){var r,s,o,a,h,l=this.getHeightOfLine(e),c=-1!==this.textAlign.indexOf("justify"),u="",d=0,f=this._textLines[e];n+=l*(1-this._fontSizeFraction)/this.lineHeight;for(var g=0,m=f.length-1;g<=m;g++)h=g===m||this.charSpacing,u+=f[g],o=this.__charBounds[e][g],0===d?(i+=o.kernedWidth-o.width,d+=o.width):d+=o.kernedWidth,c&&!h&&this._reSpaceAndTab.test(f[g])&&(h=!0),h||(r=r||this.getCompleteStyleDeclaration(e,g),s=this.getCompleteStyleDeclaration(e,g+1),h=this._hasStyleChangedForSvg(r,s)),h&&(a=this._getStyleDeclaration(e,g)||{},t.push(this._createTextCharSpan(u,a,i,n)),u="",r=s,i+=d,d=0)},_pushTextBgRect:function(e,i,n,r,s,o){var a=T.Object.NUM_FRACTION_DIGITS;e.push("\t\t\n')},_setSVGTextLineBg:function(t,e,i,n){for(var r,s,o=this._textLines[e],a=this.getHeightOfLine(e)/this.lineHeight,h=0,l=0,c=this.getValueOfPropertyAt(e,0,"textBackgroundColor"),u=0,d=o.length;uthis.width&&this._set("width",this.dynamicMinWidth),-1!==this.textAlign.indexOf("justify")&&this.enlargeSpaces(),this.height=this.calcTextHeight(),this.saveState({propertySet:"_dimensionAffectingProps"}))},_generateStyleMap:function(t){for(var e=0,i=0,n=0,r={},s=0;s0?(i=0,n++,e++):!this.splitByGrapheme&&this._reSpaceAndTab.test(t.graphemeText[n])&&s>0&&(i++,n++),r[s]={line:e,offset:i},n+=t.graphemeLines[s].length,i+=t.graphemeLines[s].length;return r},styleHas:function(t,i){if(this._styleMap&&!this.isWrapping){var n=this._styleMap[i];n&&(i=n.line)}return e.Text.prototype.styleHas.call(this,t,i)},isEmptyStyles:function(t){if(!this.styles)return!0;var e,i,n=0,r=!1,s=this._styleMap[t],o=this._styleMap[t+1];for(var a in s&&(t=s.line,n=s.offset),o&&(r=o.line===t,e=o.offset),i=void 0===t?this.styles:{line:this.styles[t]})for(var h in i[a])if(h>=n&&(!r||hn&&!p?(a.push(h),h=[],s=f,p=!0):s+=_,p||o||h.push(d),h=h.concat(c),g=o?0:this._measureWord([d],i,u),u++,p=!1,f>m&&(m=f);return v&&a.push(h),m+r>this.dynamicMinWidth&&(this.dynamicMinWidth=m-_+r),a},isEndOfWrapping:function(t){return!this._styleMap[t+1]||this._styleMap[t+1].line!==this._styleMap[t].line},missingNewlineOffset:function(t){return this.splitByGrapheme?this.isEndOfWrapping(t)?1:0:1},_splitTextIntoLines:function(t){for(var i=e.Text.prototype._splitTextIntoLines.call(this,t),n=this._wrapText(i.lines,this.width),r=new Array(n.length),s=0;s{},898:()=>{},245:()=>{}},qe={};function Ze(t){var e=qe[t];if(void 0!==e)return e.exports;var i=qe[t]={exports:{}};return ze[t](i,i.exports,Ze),i.exports}Ze.d=(t,e)=>{for(var i in e)Ze.o(e,i)&&!Ze.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},Ze.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Ke={};(()=>{let t;Ze.d(Ke,{R:()=>t}),t="undefined"!=typeof document&&"undefined"!=typeof window?Ze(653).fabric:{version:"5.2.1"}})();var Je,Qe,$e,ti,ei=Ke.R;!function(t){t[t.DIMT_RECTANGLE=1]="DIMT_RECTANGLE",t[t.DIMT_QUADRILATERAL=2]="DIMT_QUADRILATERAL",t[t.DIMT_TEXT=4]="DIMT_TEXT",t[t.DIMT_ARC=8]="DIMT_ARC",t[t.DIMT_IMAGE=16]="DIMT_IMAGE",t[t.DIMT_POLYGON=32]="DIMT_POLYGON",t[t.DIMT_LINE=64]="DIMT_LINE",t[t.DIMT_GROUP=128]="DIMT_GROUP"}(Je||(Je={})),function(t){t[t.DIS_DEFAULT=1]="DIS_DEFAULT",t[t.DIS_SELECTED=2]="DIS_SELECTED"}(Qe||(Qe={})),function(t){t[t.EF_ENHANCED_FOCUS=4]="EF_ENHANCED_FOCUS",t[t.EF_AUTO_ZOOM=16]="EF_AUTO_ZOOM",t[t.EF_TAP_TO_FOCUS=64]="EF_TAP_TO_FOCUS"}($e||($e={})),function(t){t.GREY="grey",t.GREY32="grey32",t.RGBA="rgba",t.RBGA="rbga",t.GRBA="grba",t.GBRA="gbra",t.BRGA="brga",t.BGRA="bgra"}(ti||(ti={}));const ii=t=>"number"==typeof t&&!Number.isNaN(t),ni=t=>"string"==typeof t;var ri,si,oi,ai,hi,li,ci,ui,di,fi,gi;!function(t){t[t.ARC=0]="ARC",t[t.IMAGE=1]="IMAGE",t[t.LINE=2]="LINE",t[t.POLYGON=3]="POLYGON",t[t.QUAD=4]="QUAD",t[t.RECT=5]="RECT",t[t.TEXT=6]="TEXT",t[t.GROUP=7]="GROUP"}(hi||(hi={})),function(t){t[t.DEFAULT=0]="DEFAULT",t[t.SELECTED=1]="SELECTED"}(li||(li={}));class mi{get mediaType(){return new Map([["rect",Je.DIMT_RECTANGLE],["quad",Je.DIMT_QUADRILATERAL],["text",Je.DIMT_TEXT],["arc",Je.DIMT_ARC],["image",Je.DIMT_IMAGE],["polygon",Je.DIMT_POLYGON],["line",Je.DIMT_LINE],["group",Je.DIMT_GROUP]]).get(this._mediaType)}get styleSelector(){switch(Ve(this,si,"f")){case Qe.DIS_DEFAULT:return"default";case Qe.DIS_SELECTED:return"selected"}}set drawingStyleId(t){this.styleId=t}get drawingStyleId(){return this.styleId}set coordinateBase(t){if(!["view","image"].includes(t))throw new Error("Invalid 'coordinateBase'.");this._drawingLayer&&("image"===Ve(this,oi,"f")&&"view"===t?this.updateCoordinateBaseFromImageToView():"view"===Ve(this,oi,"f")&&"image"===t&&this.updateCoordinateBaseFromViewToImage()),Ge(this,oi,t,"f")}get coordinateBase(){return Ve(this,oi,"f")}get drawingLayerId(){return this._drawingLayerId}constructor(t,e){if(ri.add(this),si.set(this,void 0),oi.set(this,"image"),this._zIndex=null,this._drawingLayer=null,this._drawingLayerId=null,this._mapState_StyleId=new Map,this.mapEvent_Callbacks=new Map([["selected",new Map],["deselected",new Map],["mousedown",new Map],["mouseup",new Map],["dblclick",new Map],["mouseover",new Map],["mouseout",new Map]]),this.mapNoteName_Content=new Map([]),this.isDrawingItem=!0,null!=e&&!ii(e))throw new TypeError("Invalid 'drawingStyleId'.");t&&this._setFabricObject(t),this.setState(Qe.DIS_DEFAULT),this.styleId=e}_setFabricObject(t){this._fabricObject=t,this._fabricObject.on("selected",(()=>{this.setState(Qe.DIS_SELECTED)})),this._fabricObject.on("deselected",(()=>{this._fabricObject.canvas&&this._fabricObject.canvas.getActiveObjects().includes(this._fabricObject)?this.setState(Qe.DIS_SELECTED):this.setState(Qe.DIS_DEFAULT),"textbox"===this._fabricObject.type&&(this._fabricObject.isEditing&&this._fabricObject.exitEditing(),this._fabricObject.selected=!1)})),t.getDrawingItem=()=>this}_getFabricObject(){return this._fabricObject}setState(t){Ge(this,si,t,"f")}getState(){return Ve(this,si,"f")}_on(t,e){if(!e)return;const i=t.toLowerCase(),n=this.mapEvent_Callbacks.get(i);if(!n)throw new Error(`Event '${t}' does not exist.`);let r=n.get(e);r||(r=t=>{const i=t.e;if(!i)return void(e&&e.apply(this,[{targetItem:this,itemClientX:null,itemClientY:null,itemPageX:null,itemPageY:null}]));const n={targetItem:this,itemClientX:null,itemClientY:null,itemPageX:null,itemPageY:null};if(this._drawingLayer){let t,e,r,s;const o=i.target.getBoundingClientRect();t=o.left,e=o.top,r=t+window.scrollX,s=e+window.scrollY;const{width:a,height:h}=this._drawingLayer.fabricCanvas.lowerCanvasEl.getBoundingClientRect(),l=this._drawingLayer.width,c=this._drawingLayer.height,u=a/h,d=l/c,f=this._drawingLayer._getObjectFit();let g,m,p,_,v=1;if("contain"===f)u0?i-1:n,yi),actionName:"modifyPolygon",pointIndex:i}),t}),{}),Ge(this,ui,JSON.parse(JSON.stringify(t)),"f"),this._mediaType="polygon"}extendSet(t,e){if("vertices"===t){const t=this._fabricObject;if(t.group){const i=t.group;t.points=e.map((t=>({x:t.x-i.left-i.width/2,y:t.y-i.top-i.height/2}))),i.addWithUpdate()}else t.points=e;const i=t.points.length-1;return t.controls=t.points.reduce((function(t,e,n){return t["p"+n]=new ei.Control({positionHandler:_i,actionHandler:wi(n>0?n-1:i,yi),actionName:"modifyPolygon",pointIndex:n}),t}),{}),t._setPositionDimensions({}),!0}}extendGet(t){if("vertices"===t){const t=[],e=this._fabricObject;if(e.selectable&&!e.group)for(let i in e.oCoords)t.push({x:e.oCoords[i].x,y:e.oCoords[i].y});else for(let i of e.points){let n=i.x-e.pathOffset.x,r=i.y-e.pathOffset.y;const s=ei.util.transformPoint({x:n,y:r},e.calcTransformMatrix());t.push({x:s.x,y:s.y})}return t}}updateCoordinateBaseFromImageToView(){const t=this.get("vertices").map((t=>({x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)})));this.set("vertices",t)}updateCoordinateBaseFromViewToImage(){const t=this.get("vertices").map((t=>({x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)})));this.set("vertices",t)}setPosition(t){this.setPolygon(t)}getPosition(){return this.getPolygon()}updatePosition(){Ve(this,ui,"f")&&this.setPolygon(Ve(this,ui,"f"))}setPolygon(t){if(!I(t))throw new TypeError("Invalid 'polygon'.");if(this._drawingLayer){if("view"===this.coordinateBase){const e=t.points.map((t=>({x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)})));this.set("vertices",e)}else{if("image"!==this.coordinateBase)throw new Error("Invalid 'coordinateBase'.");this.set("vertices",t.points)}this._drawingLayer.renderAll()}else Ge(this,ui,JSON.parse(JSON.stringify(t)),"f")}getPolygon(){if(this._drawingLayer){if("view"===this.coordinateBase)return{points:this.get("vertices").map((t=>({x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)})))};if("image"===this.coordinateBase)return{points:this.get("vertices")};throw new Error("Invalid 'coordinateBase'.")}return Ve(this,ui,"f")?JSON.parse(JSON.stringify(Ve(this,ui,"f"))):null}}ui=new WeakMap;class Ei extends mi{set maintainAspectRatio(t){t&&this.set("scaleY",this.get("scaleX"))}get maintainAspectRatio(){return Ve(this,fi,"f")}constructor(t,e,i,n){if(super(null,n),di.set(this,void 0),fi.set(this,void 0),!O(e))throw new TypeError("Invalid 'rect'.");if(t instanceof HTMLImageElement||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement)this._setFabricObject(new ei.Image(t,{left:e.x,top:e.y}));else{if(!C(t))throw new TypeError("Invalid 'image'.");{const i=document.createElement("canvas");let n;if(i.width=t.width,i.height=t.height,t.format===a.IPF_GRAYSCALED){n=new Uint8ClampedArray(t.width*t.height*4);for(let e=0;e{let e=(t=>t.split("\n").map((t=>t.split("\t"))))(t);return(t=>{for(let e=0;;e++){let i=-1;for(let n=0;ni&&(i=r.length)}if(-1===i)break;for(let n=0;n=t[n].length-1)continue;let r=" ".repeat(i+2-t[n][e].length);t[n][e]=t[n][e].concat(r)}}})(e),(t=>{let e="";for(let i=0;i({x:e.x-t.left-t.width/2,y:e.y-t.top-t.height/2}))),t.addWithUpdate()}else i.points=e;const n=i.points.length-1;return i.controls=i.points.reduce((function(t,e,i){return t["p"+i]=new ei.Control({positionHandler:_i,actionHandler:wi(i>0?i-1:n,yi),actionName:"modifyPolygon",pointIndex:i}),t}),{}),i._setPositionDimensions({}),!0}}extendGet(t){if("startPoint"===t||"endPoint"===t){const e=[],i=this._fabricObject;if(i.selectable&&!i.group)for(let t in i.oCoords)e.push({x:i.oCoords[t].x,y:i.oCoords[t].y});else for(let t of i.points){let n=t.x-i.pathOffset.x,r=t.y-i.pathOffset.y;const s=ei.util.transformPoint({x:n,y:r},i.calcTransformMatrix());e.push({x:s.x,y:s.y})}return"startPoint"===t?e[0]:e[1]}}updateCoordinateBaseFromImageToView(){const t=this.get("startPoint"),e=this.get("endPoint");this.set("startPoint",{x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)}),this.set("endPoint",{x:this.convertPropFromViewToImage(e.x),y:this.convertPropFromViewToImage(e.y)})}updateCoordinateBaseFromViewToImage(){const t=this.get("startPoint"),e=this.get("endPoint");this.set("startPoint",{x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)}),this.set("endPoint",{x:this.convertPropFromImageToView(e.x),y:this.convertPropFromImageToView(e.y)})}setPosition(t){this.setLine(t)}getPosition(){return this.getLine()}updatePosition(){Ve(this,bi,"f")&&this.setLine(Ve(this,bi,"f"))}setPolygon(){}getPolygon(){return null}setLine(t){if(!T(t))throw new TypeError("Invalid 'line'.");if(this._drawingLayer){if("view"===this.coordinateBase)this.set("startPoint",{x:this.convertPropFromViewToImage(t.startPoint.x),y:this.convertPropFromViewToImage(t.startPoint.y)}),this.set("endPoint",{x:this.convertPropFromViewToImage(t.endPoint.x),y:this.convertPropFromViewToImage(t.endPoint.y)});else{if("image"!==this.coordinateBase)throw new Error("Invalid 'coordinateBase'.");this.set("startPoint",t.startPoint),this.set("endPoint",t.endPoint)}this._drawingLayer.renderAll()}else Ge(this,bi,JSON.parse(JSON.stringify(t)),"f")}getLine(){if(this._drawingLayer){if("view"===this.coordinateBase)return{startPoint:{x:this.convertPropFromImageToView(this.get("startPoint").x),y:this.convertPropFromImageToView(this.get("startPoint").y)},endPoint:{x:this.convertPropFromImageToView(this.get("endPoint").x),y:this.convertPropFromImageToView(this.get("endPoint").y)}};if("image"===this.coordinateBase)return{startPoint:this.get("startPoint"),endPoint:this.get("endPoint")};throw new Error("Invalid 'coordinateBase'.")}return Ve(this,bi,"f")?JSON.parse(JSON.stringify(Ve(this,bi,"f"))):null}}bi=new WeakMap;class Oi extends Ci{constructor(t,e){if(super({points:null==t?void 0:t.points},e),Ii.set(this,void 0),!x(t))throw new TypeError("Invalid 'quad'.");Ge(this,Ii,JSON.parse(JSON.stringify(t)),"f"),this._mediaType="quad"}setPosition(t){this.setQuad(t)}getPosition(){return this.getQuad()}updatePosition(){Ve(this,Ii,"f")&&this.setQuad(Ve(this,Ii,"f"))}setPolygon(){}getPolygon(){return null}setQuad(t){if(!x(t))throw new TypeError("Invalid 'quad'.");if(this._drawingLayer){if("view"===this.coordinateBase){const e=t.points.map((t=>({x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)})));this.set("vertices",e)}else{if("image"!==this.coordinateBase)throw new Error("Invalid 'coordinateBase'.");this.set("vertices",t.points)}this._drawingLayer.renderAll()}else Ge(this,Ii,JSON.parse(JSON.stringify(t)),"f")}getQuad(){if(this._drawingLayer){if("view"===this.coordinateBase)return{points:this.get("vertices").map((t=>({x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)})))};if("image"===this.coordinateBase)return{points:this.get("vertices")};throw new Error("Invalid 'coordinateBase'.")}return Ve(this,Ii,"f")?JSON.parse(JSON.stringify(Ve(this,Ii,"f"))):null}}Ii=new WeakMap;class Ai extends mi{constructor(t){super(new ei.Group(t.map((t=>t._getFabricObject())))),this._fabricObject.on("selected",(()=>{this.setState(Qe.DIS_SELECTED);const t=this._fabricObject._objects;for(let e of t)setTimeout((()=>{e&&e.fire("selected")}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)})),this._fabricObject.on("deselected",(()=>{this.setState(Qe.DIS_DEFAULT);const t=this._fabricObject._objects;for(let e of t)setTimeout((()=>{e&&e.fire("deselected")}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)})),this._mediaType="group"}extendSet(t,e){return!1}extendGet(t){}updateCoordinateBaseFromImageToView(){}updateCoordinateBaseFromViewToImage(){}setPosition(){}getPosition(){}updatePosition(){}getChildDrawingItems(){return this._fabricObject._objects.map((t=>t.getDrawingItem()))}setChildDrawingItems(t){if(!t||!t.isDrawingItem)throw TypeError("Illegal drawing item.");this._drawingLayer?this._drawingLayer._updateGroupItem(this,t,"add"):this._fabricObject.addWithUpdate(t._getFabricObject())}removeChildItem(t){t&&t.isDrawingItem&&(this._drawingLayer?this._drawingLayer._updateGroupItem(this,t,"remove"):this._fabricObject.removeWithUpdate(t._getFabricObject()))}}const Ri=t=>null!==t&&"object"==typeof t&&!Array.isArray(t),Di=t=>!!ni(t)&&""!==t,Li=t=>!(!Ri(t)||"id"in t&&!ii(t.id)||"lineWidth"in t&&!ii(t.lineWidth)||"fillStyle"in t&&!Di(t.fillStyle)||"strokeStyle"in t&&!Di(t.strokeStyle)||"paintMode"in t&&!["fill","stroke","strokeAndFill"].includes(t.paintMode)||"fontFamily"in t&&!Di(t.fontFamily)||"fontSize"in t&&!ii(t.fontSize));class Mi{static convert(t,e,i){const n={x:0,y:0,width:e,height:i};if(!t)return n;if(O(t))t.isMeasuredInPercentage?(n.x=t.x/100*e,n.y=t.y/100*i,n.width=t.width/100*e,n.height=t.height/100*i):(n.x=t.x,n.y=t.y,n.width=t.width,n.height=t.height);else{if(!E(t))throw TypeError("Invalid region.");t.isMeasuredInPercentage?(n.x=t.left/100*e,n.y=t.top/100*i,n.width=(t.right-t.left)/100*e,n.height=(t.bottom-t.top)/100*i):(n.x=t.left,n.y=t.top,n.width=t.right-t.left,n.height=t.bottom-t.top)}return n.x=Math.round(n.x),n.y=Math.round(n.y),n.width=Math.round(n.width),n.height=Math.round(n.height),n}}var Fi,Pi;class ki{constructor(){Fi.set(this,new Map),Pi.set(this,!1)}get disposed(){return Ve(this,Pi,"f")}on(t,e){t=t.toLowerCase();const i=Ve(this,Fi,"f").get(t);if(i){if(i.includes(e))return;i.push(e)}else Ve(this,Fi,"f").set(t,[e])}off(t,e){t=t.toLowerCase();const i=Ve(this,Fi,"f").get(t);if(!i)return;const n=i.indexOf(e);-1!==n&&i.splice(n,1)}offAll(t){t=t.toLowerCase();const e=Ve(this,Fi,"f").get(t);e&&(e.length=0)}fire(t,e=[],i={async:!1,copy:!0}){e||(e=[]),t=t.toLowerCase();const n=Ve(this,Fi,"f").get(t);if(n&&n.length){i=Object.assign({async:!1,copy:!0},i);for(let r of n){if(!r)continue;let s=[];if(i.copy)for(let i of e){try{i=JSON.parse(JSON.stringify(i))}catch(t){}s.push(i)}else s=e;let o=!1;if(i.async)setTimeout((()=>{this.disposed||n.includes(r)&&r.apply(i.target,s)}),0);else try{o=r.apply(i.target,s)}catch(t){}if(!0===o)break}}}dispose(){Ge(this,Pi,!0,"f")}}function Bi(t,e,i){return(i.x-t.x)*(e.y-t.y)==(e.x-t.x)*(i.y-t.y)&&Math.min(t.x,e.x)<=i.x&&i.x<=Math.max(t.x,e.x)&&Math.min(t.y,e.y)<=i.y&&i.y<=Math.max(t.y,e.y)}function Ni(t){return Math.abs(t)<1e-6?0:t<0?-1:1}function ji(t,e,i,n){let r=t[0]*(i[1]-e[1])+e[0]*(t[1]-i[1])+i[0]*(e[1]-t[1]),s=t[0]*(n[1]-e[1])+e[0]*(t[1]-n[1])+n[0]*(e[1]-t[1]);return!((r^s)>=0&&0!==r&&0!==s||(r=i[0]*(t[1]-n[1])+n[0]*(i[1]-t[1])+t[0]*(n[1]-i[1]),s=i[0]*(e[1]-n[1])+n[0]*(i[1]-e[1])+e[0]*(n[1]-i[1]),(r^s)>=0&&0!==r&&0!==s))}Fi=new WeakMap,Pi=new WeakMap;const Ui=async t=>{if("string"!=typeof t)throw new TypeError("Invalid url.");const e=await fetch(t);if(!e.ok)throw Error("Network Error: "+e.statusText);const i=await e.text();if(!i.trim().startsWith("<"))throw Error("Unable to get valid HTMLElement.");const n=document.createElement("div");if(n.insertAdjacentHTML("beforeend",i),1===n.childElementCount&&n.firstChild instanceof HTMLTemplateElement)return n.firstChild.content;const r=new DocumentFragment;for(let t of n.children)r.append(t);return r};var Vi,Gi,Wi,Yi,Hi,Xi,zi,qi,Zi,Ki,Ji,Qi,$i,tn,en,nn,rn,sn,on,an,hn,ln,cn,un,dn,fn,gn,mn,pn,_n,vn,yn,wn,Cn;class En{static createDrawingStyle(t){if(!Li(t))throw new Error("Invalid style definition.");let e,i=En.USER_START_STYLE_ID;for(;Ve(En,Vi,"f",Gi).has(i);)i++;e=i;const n=JSON.parse(JSON.stringify(t));n.id=e;for(let t in Ve(En,Vi,"f",Wi))n.hasOwnProperty(t)||(n[t]=Ve(En,Vi,"f",Wi)[t]);return Ve(En,Vi,"f",Gi).set(e,n),n.id}static _getDrawingStyle(t,e){if("number"!=typeof t)throw new Error("Invalid style id.");const i=Ve(En,Vi,"f",Gi).get(t);return i?e?JSON.parse(JSON.stringify(i)):i:null}static getDrawingStyle(t){return this._getDrawingStyle(t,!0)}static getAllDrawingStyles(){return JSON.parse(JSON.stringify(Array.from(Ve(En,Vi,"f",Gi).values())))}static _updateDrawingStyle(t,e){if(!Li(e))throw new Error("Invalid style definition.");const i=Ve(En,Vi,"f",Gi).get(t);if(i)for(let t in e)i.hasOwnProperty(t)&&(i[t]=e[t])}static updateDrawingStyle(t,e){this._updateDrawingStyle(t,e)}}Vi=En,En.STYLE_BLUE_STROKE=1,En.STYLE_GREEN_STROKE=2,En.STYLE_ORANGE_STROKE=3,En.STYLE_YELLOW_STROKE=4,En.STYLE_BLUE_STROKE_FILL=5,En.STYLE_GREEN_STROKE_FILL=6,En.STYLE_ORANGE_STROKE_FILL=7,En.STYLE_YELLOW_STROKE_FILL=8,En.STYLE_BLUE_STROKE_TRANSPARENT=9,En.STYLE_GREEN_STROKE_TRANSPARENT=10,En.STYLE_ORANGE_STROKE_TRANSPARENT=11,En.USER_START_STYLE_ID=1024,Gi={value:new Map([[En.STYLE_BLUE_STROKE,{id:En.STYLE_BLUE_STROKE,lineWidth:4,fillStyle:"rgba(73, 173, 245, 0.3)",strokeStyle:"rgba(73, 173, 245, 1)",paintMode:"stroke",fontFamily:"consolas",fontSize:40}],[En.STYLE_GREEN_STROKE,{id:En.STYLE_GREEN_STROKE,lineWidth:2,fillStyle:"rgba(73, 245, 73, 0.3)",strokeStyle:"rgba(73, 245, 73, 0.9)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[En.STYLE_ORANGE_STROKE,{id:En.STYLE_ORANGE_STROKE,lineWidth:2,fillStyle:"rgba(254, 180, 32, 0.3)",strokeStyle:"rgba(254, 180, 32, 0.9)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[En.STYLE_YELLOW_STROKE,{id:En.STYLE_YELLOW_STROKE,lineWidth:2,fillStyle:"rgba(245, 236, 73, 0.3)",strokeStyle:"rgba(245, 236, 73, 1)",paintMode:"stroke",fontFamily:"consolas",fontSize:40}],[En.STYLE_BLUE_STROKE_FILL,{id:En.STYLE_BLUE_STROKE_FILL,lineWidth:4,fillStyle:"rgba(73, 173, 245, 0.3)",strokeStyle:"rgba(73, 173, 245, 1)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[En.STYLE_GREEN_STROKE_FILL,{id:En.STYLE_GREEN_STROKE_FILL,lineWidth:2,fillStyle:"rgba(73, 245, 73, 0.3)",strokeStyle:"rgba(73, 245, 73, 0.9)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[En.STYLE_ORANGE_STROKE_FILL,{id:En.STYLE_ORANGE_STROKE_FILL,lineWidth:2,fillStyle:"rgba(254, 180, 32, 0.3)",strokeStyle:"rgba(254, 180, 32, 1)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[En.STYLE_YELLOW_STROKE_FILL,{id:En.STYLE_YELLOW_STROKE_FILL,lineWidth:2,fillStyle:"rgba(245, 236, 73, 0.3)",strokeStyle:"rgba(245, 236, 73, 1)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[En.STYLE_BLUE_STROKE_TRANSPARENT,{id:En.STYLE_BLUE_STROKE_TRANSPARENT,lineWidth:4,fillStyle:"rgba(73, 173, 245, 0.2)",strokeStyle:"transparent",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[En.STYLE_GREEN_STROKE_TRANSPARENT,{id:En.STYLE_GREEN_STROKE_TRANSPARENT,lineWidth:2,fillStyle:"rgba(73, 245, 73, 0.2)",strokeStyle:"transparent",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[En.STYLE_ORANGE_STROKE_TRANSPARENT,{id:En.STYLE_ORANGE_STROKE_TRANSPARENT,lineWidth:2,fillStyle:"rgba(254, 180, 32, 0.2)",strokeStyle:"transparent",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}]])},Wi={value:{lineWidth:2,fillStyle:"rgba(245, 236, 73, 0.3)",strokeStyle:"rgba(245, 236, 73, 1)",paintMode:"stroke",fontFamily:"consolas",fontSize:40}},"undefined"!=typeof document&&"undefined"!=typeof window&&(ei.StaticCanvas.prototype.dispose=function(){return this.isRendering&&(ei.util.cancelAnimFrame(this.isRendering),this.isRendering=0),this.forEachObject((function(t){t.dispose&&t.dispose()})),this._objects=[],this.backgroundImage&&this.backgroundImage.dispose&&this.backgroundImage.dispose(),this.backgroundImage=null,this.overlayImage&&this.overlayImage.dispose&&this.overlayImage.dispose(),this.overlayImage=null,this._iTextInstances=null,this.contextContainer=null,this.lowerCanvasEl.classList.remove("lower-canvas"),delete this._originalCanvasStyle,this.lowerCanvasEl.setAttribute("width",this.width),this.lowerCanvasEl.setAttribute("height",this.height),ei.util.cleanUpJsdomNode(this.lowerCanvasEl),this.lowerCanvasEl=void 0,this},ei.Object.prototype.transparentCorners=!1,ei.Object.prototype.cornerSize=20,ei.Object.prototype.touchCornerSize=100,ei.Object.prototype.cornerColor="rgb(254,142,20)",ei.Object.prototype.cornerStyle="circle",ei.Object.prototype.strokeUniform=!0,ei.Object.prototype.hasBorders=!1,ei.Canvas.prototype.containerClass="",ei.Canvas.prototype.getPointer=function(t,e){if(this._absolutePointer&&!e)return this._absolutePointer;if(this._pointer&&e)return this._pointer;var i,n=this.upperCanvasEl,r=ei.util.getPointer(t,n),s=n.getBoundingClientRect(),o=s.width||0,a=s.height||0;o&&a||("top"in s&&"bottom"in s&&(a=Math.abs(s.top-s.bottom)),"right"in s&&"left"in s&&(o=Math.abs(s.right-s.left))),this.calcOffset(),r.x=r.x-this._offset.left,r.y=r.y-this._offset.top,e||(r=this.restorePointerVpt(r));var h=this.getRetinaScaling();if(1!==h&&(r.x/=h,r.y/=h),0!==o&&0!==a){var l=window.getComputedStyle(n).objectFit,c=n.width,u=n.height,d=o,f=a;i={width:c/d,height:u/f};var g,m,p=c/u,_=d/f;return"contain"===l?p>_?(g=d,m=d/p,{x:r.x*i.width,y:(r.y-(f-m)/2)*i.width}):(g=f*p,m=f,{x:(r.x-(d-g)/2)*i.height,y:r.y*i.height}):"cover"===l?p>_?{x:(c-i.height*d)/2+r.x*i.height,y:r.y*i.height}:{x:r.x*i.width,y:(u-i.width*f)/2+r.y*i.width}:{x:r.x*i.width,y:r.y*i.height}}return i={width:1,height:1},{x:r.x*i.width,y:r.y*i.height}},ei.Canvas.prototype._onTouchStart=function(t){var e=this.findTarget(t);!this.allowTouchScrolling&&t.cancelable&&t.preventDefault&&t.preventDefault(),e&&t.cancelable&&t.preventDefault&&t.preventDefault(),null===this.mainTouchId&&(this.mainTouchId=this.getPointerId(t)),this.__onMouseDown(t),this._resetTransformEventData();var i=this.upperCanvasEl,n=this._getEventPrefix();ei.util.addListener(ei.document,"touchend",this._onTouchEnd,{passive:!1}),ei.util.addListener(ei.document,"touchmove",this._onMouseMove,{passive:!1}),ei.util.removeListener(i,n+"down",this._onMouseDown)},ei.Textbox.prototype._wrapLine=function(t,e,i,n){const r=t.match(/[\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff\uff66-\uff9f]/g),s=!(!r||!r.length);var o=0,a=this.splitByGrapheme||s,h=[],l=[],c=a?ei.util.string.graphemeSplit(t):t.split(this._wordJoiners),u="",d=0,f=a?"":" ",g=0,m=0,p=0,_=!0,v=this._getWidthOfCharSpacing();n=n||0,0===c.length&&c.push([]),i-=n;for(var y=0;yi&&!_?(h.push(l),l=[],o=g,_=!0):o+=v,_||a||l.push(f),l=l.concat(u),m=a?0:this._measureWord([f],e,d),d++,_=!1,g>p&&(p=g);return y&&h.push(l),p+n>this.dynamicMinWidth&&(this.dynamicMinWidth=p-v+n),h});class Sn{get width(){return this.fabricCanvas.width}get height(){return this.fabricCanvas.height}set _allowMultiSelect(t){this.fabricCanvas.selection=t,this.fabricCanvas.renderAll()}get _allowMultiSelect(){return this.fabricCanvas.selection}constructor(t,e,i){if(this.mapType_StateAndStyleId=new Map,this.mode="viewer",this.onSelectionChanged=null,this._arrDrwaingItem=[],this._arrFabricObject=[],this._visible=!0,t.hasOwnProperty("getFabricCanvas"))this.fabricCanvas=t.getFabricCanvas();else{let e=this.fabricCanvas=new ei.Canvas(t,Object.assign(i,{allowTouchScrolling:!0,selection:!1}));e.setDimensions({width:"100%",height:"100%"},{cssOnly:!0}),e.lowerCanvasEl.className="",e.upperCanvasEl.className="",e.on("selection:created",(function(t){const e=t.selected,i=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!i.includes(e)&&i.push(e)}for(let t of i){const i=[];for(let n of e){const e=n.getDrawingItem();e._drawingLayer===t&&i.push(e)}setTimeout((()=>{t.onSelectionChanged&&t.onSelectionChanged(i,[])}),0)}})),e.on("before:selection:cleared",(function(t){const e=this.getActiveObjects(),i=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!i.includes(e)&&i.push(e)}for(let t of i){const i=[];for(let n of e){const e=n.getDrawingItem();e._drawingLayer===t&&i.push(e)}setTimeout((()=>{const e=[];for(let n of i)t.hasDrawingItem(n)&&e.push(n);e.length>0&&t.onSelectionChanged&&t.onSelectionChanged([],e)}),0)}})),e.on("selection:updated",(function(t){const e=t.selected,i=t.deselected,n=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!n.includes(e)&&n.push(e)}for(let t of i){const e=t.getDrawingItem()._drawingLayer;e&&!n.includes(e)&&n.push(e)}for(let t of n){const n=[],r=[];for(let i of e){const e=i.getDrawingItem();e._drawingLayer===t&&n.push(e)}for(let e of i){const i=e.getDrawingItem();i._drawingLayer===t&&r.push(i)}setTimeout((()=>{t.onSelectionChanged&&t.onSelectionChanged(n,r)}),0)}})),e.wrapperEl.style.position="absolute",t.getFabricCanvas=()=>this.fabricCanvas}let n,r;switch(this.id=e,e){case Sn.DDN_LAYER_ID:n=En.getDrawingStyle(En.STYLE_BLUE_STROKE),r=En.getDrawingStyle(En.STYLE_BLUE_STROKE_FILL);break;case Sn.DBR_LAYER_ID:n=En.getDrawingStyle(En.STYLE_ORANGE_STROKE),r=En.getDrawingStyle(En.STYLE_ORANGE_STROKE_FILL);break;case Sn.DLR_LAYER_ID:n=En.getDrawingStyle(En.STYLE_GREEN_STROKE),r=En.getDrawingStyle(En.STYLE_GREEN_STROKE_FILL);break;default:n=En.getDrawingStyle(En.STYLE_YELLOW_STROKE),r=En.getDrawingStyle(En.STYLE_YELLOW_STROKE_FILL)}for(let t of mi.arrMediaTypes)this.mapType_StateAndStyleId.set(t,{default:n.id,selected:r.id})}getId(){return this.id}setVisible(t){if(t){for(let t of this._arrFabricObject)t.visible=!0,t.hasControls=!0;this._visible=!0}else{for(let t of this._arrFabricObject)t.visible=!1,t.hasControls=!1;this._visible=!1}this.fabricCanvas.renderAll()}isVisible(){return this._visible}_getItemCurrentStyle(t){if(t.styleId)return En.getDrawingStyle(t.styleId);return En.getDrawingStyle(t._mapState_StyleId.get(t.styleSelector))||null}_changeMediaTypeCurStyleInStyleSelector(t,e,i,n){const r=this.getDrawingItems((e=>e._mediaType===t));for(let t of r)t.styleSelector===e&&this._changeItemStyle(t,i,!0);n||this.fabricCanvas.renderAll()}_changeItemStyle(t,e,i){if(!t||!e)return;const n=t._getFabricObject();"number"==typeof t.styleId&&(e=En.getDrawingStyle(t.styleId)),n.strokeWidth=e.lineWidth,"fill"===e.paintMode?(n.fill=e.fillStyle,n.stroke=e.fillStyle):"stroke"===e.paintMode?(n.fill="transparent",n.stroke=e.strokeStyle):"strokeAndFill"===e.paintMode&&(n.fill=e.fillStyle,n.stroke=e.strokeStyle),n.fontFamily&&(n.fontFamily=e.fontFamily),n.fontSize&&(n.fontSize=e.fontSize),n.group||(n.dirty=!0),i||this.fabricCanvas.renderAll()}_updateGroupItem(t,e,i){if(!t||!e)return;const n=t.getChildDrawingItems();if("add"===i){if(n.includes(e))return;const i=e._getFabricObject();if(this.fabricCanvas.getObjects().includes(i)){if(!this._arrFabricObject.includes(i))throw new Error("Existed in other drawing layers.");e._zIndex=null}else{let i;if(e.styleId)i=En.getDrawingStyle(e.styleId);else{const n=this.mapType_StateAndStyleId.get(e._mediaType);i=En.getDrawingStyle(n[t.styleSelector]);const r=()=>{this._changeItemStyle(e,En.getDrawingStyle(this.mapType_StateAndStyleId.get(e._mediaType).selected),!0)},s=()=>{this._changeItemStyle(e,En.getDrawingStyle(this.mapType_StateAndStyleId.get(e._mediaType).default),!0)};e._on("selected",r),e._on("deselected",s),e._funcChangeStyleToSelected=r,e._funcChangeStyleToDefault=s}e._drawingLayer=this,e._drawingLayerId=this.id,this._changeItemStyle(e,i,!0)}t._fabricObject.addWithUpdate(e._getFabricObject())}else{if("remove"!==i)return;if(!n.includes(e))return;e._zIndex=null,e._drawingLayer=null,e._drawingLayerId=null,e._off("selected",e._funcChangeStyleToSelected),e._off("deselected",e._funcChangeStyleToDefault),e._funcChangeStyleToSelected=null,e._funcChangeStyleToDefault=null,t._fabricObject.removeWithUpdate(e._getFabricObject())}this.fabricCanvas.renderAll()}_addDrawingItem(t,e){if(!(t instanceof mi))throw new TypeError("Invalid 'drawingItem'.");if(t._drawingLayer){if(t._drawingLayer==this)return;throw new Error("This drawing item has existed in other layer.")}let i=t._getFabricObject();const n=this.fabricCanvas.getObjects();let r,s;if(n.includes(i)){if(this._arrFabricObject.includes(i))return;throw new Error("Existed in other drawing layers.")}if("group"===t._mediaType){r=t.getChildDrawingItems();for(let t of r)if(t._drawingLayer&&t._drawingLayer!==this)throw new Error("The childItems of DT_Group have existed in other drawing layers.")}if(e&&"object"==typeof e&&!Array.isArray(e))for(let t in e)i.set(t,e[t]);if(r){for(let t of r){const e=this.mapType_StateAndStyleId.get(t._mediaType);for(let i of mi.arrStyleSelectors)t._mapState_StyleId.set(i,e[i]);if(t.styleId)s=En.getDrawingStyle(t.styleId);else{s=En.getDrawingStyle(e.default);const i=()=>{this._changeItemStyle(t,En.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).selected),!0)},n=()=>{this._changeItemStyle(t,En.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).default),!0)};t._on("selected",i),t._on("deselected",n),t._funcChangeStyleToSelected=i,t._funcChangeStyleToDefault=n}t._drawingLayer=this,t._drawingLayerId=this.id,this._changeItemStyle(t,s,!0)}i.dirty=!0,this.fabricCanvas.renderAll()}else{const e=this.mapType_StateAndStyleId.get(t._mediaType);for(let i of mi.arrStyleSelectors)t._mapState_StyleId.set(i,e[i]);if(t.styleId)s=En.getDrawingStyle(t.styleId);else{s=En.getDrawingStyle(e.default);const i=()=>{this._changeItemStyle(t,En.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).selected))},n=()=>{this._changeItemStyle(t,En.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).default))};t._on("selected",i),t._on("deselected",n),t._funcChangeStyleToSelected=i,t._funcChangeStyleToDefault=n}this._changeItemStyle(t,s)}t._zIndex=this.id,t._drawingLayer=this,t._drawingLayerId=this.id;const o=this._arrFabricObject.length;let a=n.length;if(o)a=n.indexOf(this._arrFabricObject[o-1])+1;else for(let e=0;et.toLowerCase())):e=mi.arrMediaTypes,i?i.forEach((t=>t.toLowerCase())):i=mi.arrStyleSelectors;const n=En.getDrawingStyle(t);if(!n)throw new Error(`The 'drawingStyle' with id '${t}' doesn't exist.`);let r;for(let s of e)if(r=this.mapType_StateAndStyleId.get(s),r)for(let e of i){this._changeMediaTypeCurStyleInStyleSelector(s,e,n,!0),r[e]=t;for(let i of this._arrDrwaingItem)i._mediaType===s&&i._mapState_StyleId.set(e,t)}this.fabricCanvas.renderAll()}setDefaultStyle(t,e,i){const n=[];i&Je.DIMT_RECTANGLE&&n.push("rect"),i&Je.DIMT_QUADRILATERAL&&n.push("quad"),i&Je.DIMT_TEXT&&n.push("text"),i&Je.DIMT_ARC&&n.push("arc"),i&Je.DIMT_IMAGE&&n.push("image"),i&Je.DIMT_POLYGON&&n.push("polygon"),i&Je.DIMT_LINE&&n.push("line");const r=[];e&Qe.DIS_DEFAULT&&r.push("default"),e&Qe.DIS_SELECTED&&r.push("selected"),this._setDefaultStyle(t,n.length?n:null,r.length?r:null)}setMode(t){if("viewer"===(t=t.toLowerCase())){for(let t of this._arrDrwaingItem)t._setEditable(!1);this.fabricCanvas.discardActiveObject(),this.fabricCanvas.renderAll(),this.mode="viewer"}else{if("editor"!==t)throw new RangeError("Invalid value.");for(let t of this._arrDrwaingItem)t._setEditable(!0);this.mode="editor"}this._manager._switchPointerEvent()}getMode(){return this.mode}_setDimensions(t,e){this.fabricCanvas.setDimensions(t,e)}_setObjectFit(t){if(t=t.toLowerCase(),!["contain","cover"].includes(t))throw new Error(`Unsupported value '${t}'.`);this.fabricCanvas.lowerCanvasEl.style.objectFit=t,this.fabricCanvas.upperCanvasEl.style.objectFit=t}_getObjectFit(){return this.fabricCanvas.lowerCanvasEl.style.objectFit}renderAll(){for(let t of this._arrDrwaingItem){const e=this._getItemCurrentStyle(t);this._changeItemStyle(t,e,!0)}this.fabricCanvas.renderAll()}dispose(){this.clearDrawingItems(),1===this._manager._arrDrawingLayer.length&&(this.fabricCanvas.wrapperEl.style.pointerEvents="none",this.fabricCanvas.dispose(),this._arrDrwaingItem.length=0,this._arrFabricObject.length=0)}}Sn.DDN_LAYER_ID=1,Sn.DBR_LAYER_ID=2,Sn.DLR_LAYER_ID=3,Sn.USER_DEFINED_LAYER_BASE_ID=100,Sn.TIP_LAYER_ID=999;class Tn{constructor(){this._arrDrawingLayer=[]}createDrawingLayer(t,e){if(this.getDrawingLayer(e))throw new Error("Existed drawing layer id.");const i=new Sn(t,e,{enableRetinaScaling:!1});return i._manager=this,this._arrDrawingLayer.push(i),this._switchPointerEvent(),i}deleteDrawingLayer(t){const e=this.getDrawingLayer(t);if(!e)return;const i=this._arrDrawingLayer;e.dispose(),i.splice(i.indexOf(e),1),this._switchPointerEvent()}clearDrawingLayers(){for(let t of this._arrDrawingLayer)t.dispose();this._arrDrawingLayer.length=0}getDrawingLayer(t){for(let e of this._arrDrawingLayer)if(e.getId()===t)return e;return null}getAllDrawingLayers(){return Array.from(this._arrDrawingLayer)}getSelectedDrawingItems(){if(!this._arrDrawingLayer.length)return;const t=this._getFabricCanvas().getActiveObjects(),e=[];for(let i of t)e.push(i.getDrawingItem());return e}setDimensions(t,e){this._arrDrawingLayer.length&&this._arrDrawingLayer[0]._setDimensions(t,e)}setObjectFit(t){for(let e of this._arrDrawingLayer)e&&e._setObjectFit(t)}getObjectFit(){return this._arrDrawingLayer.length?this._arrDrawingLayer[0]._getObjectFit():null}setVisible(t){if(!this._arrDrawingLayer.length)return;this._getFabricCanvas().wrapperEl.style.display=t?"block":"none"}_getFabricCanvas(){return this._arrDrawingLayer.length?this._arrDrawingLayer[0].fabricCanvas:null}_switchPointerEvent(){if(this._arrDrawingLayer.length)for(let t of this._arrDrawingLayer)t.getMode()}}class bn extends Ti{constructor(t,e,i,n,r){super(t,{x:e,y:i,width:n,height:0},r),Yi.set(this,void 0),Hi.set(this,void 0),this._fabricObject.paddingTop=15,this._fabricObject.calcTextHeight=function(){for(var t=0,e=0,i=this._textLines.length;e=0&&Ge(this,Hi,setTimeout((()=>{this.set("visible",!1),this._drawingLayer&&this._drawingLayer.renderAll()}),Ve(this,Yi,"f")),"f")}getDuration(){return Ve(this,Yi,"f")}}Yi=new WeakMap,Hi=new WeakMap;class In{constructor(){Xi.add(this),zi.set(this,void 0),qi.set(this,void 0),Zi.set(this,void 0),Ki.set(this,!0),this._drawingLayerManager=new Tn}createDrawingLayerBaseCvs(t,e,i="contain"){if("number"!=typeof t||t<=1)throw new Error("Invalid 'width'.");if("number"!=typeof e||e<=1)throw new Error("Invalid 'height'.");if(!["contain","cover"].includes(i))throw new Error("Unsupported 'objectFit'.");const n=document.createElement("canvas");return n.width==t&&n.height==e||(n.width=t,n.height=e),n.style.objectFit=i,n}_createDrawingLayer(t,e,i,n){if(!this._layerBaseCvs){let r;try{r=this.getContentDimensions()}catch(t){if("Invalid content dimensions."!==(t.message||t))throw t}e||(e=(null==r?void 0:r.width)||1280),i||(i=(null==r?void 0:r.height)||720),n||(n=(null==r?void 0:r.objectFit)||"contain"),this._layerBaseCvs=this.createDrawingLayerBaseCvs(e,i,n)}const r=this._layerBaseCvs,s=this._drawingLayerManager.createDrawingLayer(r,t);return this._innerComponent.getElement("drawing-layer")||this._innerComponent.setElement("drawing-layer",r.parentElement),s}createDrawingLayer(){let t;for(let e=Sn.USER_DEFINED_LAYER_BASE_ID;;e++)if(!this._drawingLayerManager.getDrawingLayer(e)&&e!==Sn.TIP_LAYER_ID){t=e;break}return this._createDrawingLayer(t)}deleteDrawingLayer(t){var e;this._drawingLayerManager.deleteDrawingLayer(t),this._drawingLayerManager.getAllDrawingLayers().length||(null===(e=this._innerComponent)||void 0===e||e.removeElement("drawing-layer"),this._layerBaseCvs=null)}deleteUserDefinedDrawingLayer(t){if("number"!=typeof t)throw new TypeError("Invalid id.");if(tt.getId()>=0&&t.getId()!==Sn.TIP_LAYER_ID))}updateDrawingLayers(t){((t,e,i)=>{if(!(t<=1||e<=1)){if(!["contain","cover"].includes(i))throw new Error("Unsupported 'objectFit'.");this._drawingLayerManager.setDimensions({width:t,height:e},{backstoreOnly:!0}),this._drawingLayerManager.setObjectFit(i)}})(t.width,t.height,t.objectFit)}getSelectedDrawingItems(){return this._drawingLayerManager.getSelectedDrawingItems()}setTipConfig(t){if(!(Ri(e=t)&&b(e.topLeftPoint)&&ii(e.width))||e.width<=0||!ii(e.duration)||"coordinateBase"in e&&!["view","image"].includes(e.coordinateBase))throw new Error("Invalid tip config.");var e;Ge(this,zi,JSON.parse(JSON.stringify(t)),"f"),Ve(this,zi,"f").coordinateBase||(Ve(this,zi,"f").coordinateBase="view"),Ge(this,Zi,t.duration,"f"),Ve(this,Xi,"m",tn).call(this)}getTipConfig(){return Ve(this,zi,"f")?Ve(this,zi,"f"):null}setTipVisible(t){if("boolean"!=typeof t)throw new TypeError("Invalid value.");this._tip&&(this._tip.set("visible",t),this._drawingLayerOfTip&&this._drawingLayerOfTip.renderAll()),Ge(this,Ki,t,"f")}isTipVisible(){return Ve(this,Ki,"f")}updateTipMessage(t){if(!Ve(this,zi,"f"))throw new Error("Tip config is not set.");this._tipStyleId||(this._tipStyleId=En.createDrawingStyle({fillStyle:"#FFFFFF",paintMode:"fill",fontFamily:"Open Sans",fontSize:40})),this._drawingLayerOfTip||(this._drawingLayerOfTip=this._drawingLayerManager.getDrawingLayer(Sn.TIP_LAYER_ID)||this._createDrawingLayer(Sn.TIP_LAYER_ID)),this._tip?this._tip.set("text",t):this._tip=Ve(this,Xi,"m",Ji).call(this,t,Ve(this,zi,"f").topLeftPoint.x,Ve(this,zi,"f").topLeftPoint.y,Ve(this,zi,"f").width,Ve(this,zi,"f").coordinateBase,this._tipStyleId),Ve(this,Xi,"m",Qi).call(this,this._tip,this._drawingLayerOfTip),this._tip.set("visible",Ve(this,Ki,"f")),this._drawingLayerOfTip&&this._drawingLayerOfTip.renderAll(),Ve(this,qi,"f")&&clearTimeout(Ve(this,qi,"f")),Ve(this,Zi,"f")>=0&&Ge(this,qi,setTimeout((()=>{Ve(this,Xi,"m",$i).call(this)}),Ve(this,Zi,"f")),"f")}}zi=new WeakMap,qi=new WeakMap,Zi=new WeakMap,Ki=new WeakMap,Xi=new WeakSet,Ji=function(t,e,i,n,r,s){const o=new bn(t,e,i,n,s);return o.coordinateBase=r,o},Qi=function(t,e){e.hasDrawingItem(t)||e.addDrawingItems([t])},$i=function(){this._tip&&this._drawingLayerOfTip.removeDrawingItems([this._tip])},tn=function(){if(!this._tip)return;const t=Ve(this,zi,"f");this._tip.coordinateBase=t.coordinateBase,this._tip.setTextRect({x:t.topLeftPoint.x,y:t.topLeftPoint.y,width:t.width,height:0}),this._tip.set("width",this._tip.get("width")),this._tip._drawingLayer&&this._tip._drawingLayer.renderAll()};class xn extends HTMLElement{constructor(){super(),en.set(this,void 0);const t=new DocumentFragment,e=document.createElement("div");e.setAttribute("class","wrapper"),t.appendChild(e),Ge(this,en,e,"f");const i=document.createElement("slot");i.setAttribute("name","single-frame-input-container"),e.append(i);const n=document.createElement("slot");n.setAttribute("name","content"),e.append(n);const r=document.createElement("slot");r.setAttribute("name","drawing-layer"),e.append(r);const s=document.createElement("style");s.textContent='\n.wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n}\n::slotted(canvas[slot="content"]) {\n object-fit: contain;\n pointer-events: none;\n}\n::slotted(div[slot="single-frame-input-container"]) {\n width: 1px;\n height: 1px;\n overflow: hidden;\n pointer-events: none;\n}\n::slotted(*) {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n ',t.appendChild(s),this.attachShadow({mode:"open"}).appendChild(t)}getWrapper(){return Ve(this,en,"f")}setElement(t,e){if(!(e instanceof HTMLElement))throw new TypeError("Invalid 'el'.");if(!["content","single-frame-input-container","drawing-layer"].includes(t))throw new TypeError("Invalid 'slot'.");this.removeElement(t),e.setAttribute("slot",t),this.appendChild(e)}getElement(t){if(!["content","single-frame-input-container","drawing-layer"].includes(t))throw new TypeError("Invalid 'slot'.");return this.querySelector(`[slot="${t}"]`)}removeElement(t){var e;if(!["content","single-frame-input-container","drawing-layer"].includes(t))throw new TypeError("Invalid 'slot'.");null===(e=this.querySelectorAll(`[slot="${t}"]`))||void 0===e||e.forEach((t=>t.remove()))}}en=new WeakMap,customElements.get("dce-component")||customElements.define("dce-component",xn);class On extends In{static get engineResourcePath(){return L(vt.engineResourcePaths).dce}static set defaultUIElementURL(t){On._defaultUIElementURL=t}static get defaultUIElementURL(){var t;return null===(t=On._defaultUIElementURL)||void 0===t?void 0:t.replace("@engineResourcePath/",On.engineResourcePath)}static async createInstance(t){const e=new On;return"string"==typeof t&&(t=t.replace("@engineResourcePath/",On.engineResourcePath)),await e.setUIElement(t||On.defaultUIElementURL),e}static _transformCoordinates(t,e,i,n,r,s,o){const a=s/n,h=o/r;t.x=Math.round(t.x/a+e),t.y=Math.round(t.y/h+i)}set _singleFrameMode(t){if(!["disabled","image","camera"].includes(t))throw new Error("Invalid value.");if(t!==Ve(this,dn,"f")){if(Ge(this,dn,t,"f"),Ve(this,nn,"m",mn).call(this))Ge(this,an,null,"f"),this._videoContainer=null,this._innerComponent.removeElement("content"),this._innerComponent&&(this._innerComponent.addEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.setAttribute("title","Take a photo")),this._bgCamera&&(this._bgCamera.style.display="block");else if(this._innerComponent&&(this._innerComponent.removeEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.removeAttribute("title")),this._bgCamera&&(this._bgCamera.style.display="none"),!Ve(this,an,"f")){const t=document.createElement("video");t.style.position="absolute",t.style.left="0",t.style.top="0",t.style.width="100%",t.style.height="100%",t.style.objectFit=this.getVideoFit(),t.setAttribute("autoplay","true"),t.setAttribute("playsinline","true"),t.setAttribute("muted","true"),["iPhone","iPad","Mac"].includes(je.OS)&&t.setAttribute("poster","data:image/gif;base64,R0lGODlhAQABAIEAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAgEAAEEBAA7"),Ge(this,an,t,"f");const e=document.createElement("div");e.append(t),e.style.overflow="hidden",this._videoContainer=e,this._innerComponent.setElement("content",e)}Ve(this,nn,"m",mn).call(this)||this._hideDefaultSelection?(this._selCam&&(this._selCam.style.display="none"),this._selRsl&&(this._selRsl.style.display="none"),this._selMinLtr&&(this._selMinLtr.style.display="none")):(this._selCam&&(this._selCam.style.display="block"),this._selRsl&&(this._selRsl.style.display="block"),this._selMinLtr&&(this._selMinLtr.style.display="block"),this._stopLoading())}}get _singleFrameMode(){return Ve(this,dn,"f")}get disposed(){return Ve(this,gn,"f")}constructor(){super(),nn.add(this),rn.set(this,void 0),sn.set(this,void 0),on.set(this,void 0),this.containerClassName="dce-video-container",an.set(this,void 0),this.videoFit="contain",this._hideDefaultSelection=!1,this._divScanArea=null,this._divScanLight=null,this._bgLoading=null,this._selCam=null,this._bgCamera=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,hn.set(this,null),this.regionMaskFillStyle="rgba(0,0,0,0.5)",this.regionMaskStrokeStyle="rgb(254,142,20)",this.regionMaskLineWidth=6,ln.set(this,!1),cn.set(this,!1),un.set(this,{width:0,height:0}),this._updateLayersTimeout=500,this._videoResizeListener=()=>{Ve(this,nn,"m",wn).call(this),this._updateLayersTimeoutId&&clearTimeout(this._updateLayersTimeoutId),this._updateLayersTimeoutId=setTimeout((()=>{this.disposed||(this.eventHandler.fire("videoEl:resized",null,{async:!1}),this.eventHandler.fire("content:updated",null,{async:!1}),this.isScanLaserVisible()&&Ve(this,nn,"m",yn).call(this))}),this._updateLayersTimeout)},this._windowResizeListener=()=>{On._onLog&&On._onLog("window resize event triggered."),Ve(this,un,"f").width===document.documentElement.clientWidth&&Ve(this,un,"f").height===document.documentElement.clientHeight||(Ve(this,un,"f").width=document.documentElement.clientWidth,Ve(this,un,"f").height=document.documentElement.clientHeight,this._videoResizeListener())},dn.set(this,"disabled"),this._clickIptSingleFrameMode=()=>{if(!Ve(this,nn,"m",mn).call(this))return;let t;if(this._singleFrameInputContainer)t=this._singleFrameInputContainer.firstElementChild;else{t=document.createElement("input"),t.setAttribute("type","file"),"camera"===this._singleFrameMode?(t.setAttribute("capture",""),t.setAttribute("accept","image/*")):"image"===this._singleFrameMode&&(t.removeAttribute("capture"),t.setAttribute("accept",".jpg,.jpeg,.icon,.gif,.svg,.webp,.png,.bmp")),t.addEventListener("change",(async()=>{const e=t.files[0];t.value="";{const t=async t=>{let e=null,i=null;if("undefined"!=typeof createImageBitmap)try{if(e=await createImageBitmap(t),e)return e}catch(t){}var n;return e||(i=await(n=t,new Promise(((t,e)=>{let i=URL.createObjectURL(n),r=new Image;r.src=i,r.onload=()=>{URL.revokeObjectURL(r.src),t(r)},r.onerror=t=>{e(new Error("Can't convert blob to image : "+(t instanceof Event?t.type:t)))}})))),i},i=(t,e,i,n)=>{t.width==i&&t.height==n||(t.width=i,t.height=n);const r=t.getContext("2d");r.clearRect(0,0,t.width,t.height),r.drawImage(e,0,0)},n=await t(e),r=n instanceof HTMLImageElement?n.naturalWidth:n.width,s=n instanceof HTMLImageElement?n.naturalHeight:n.height;let o=this._cvsSingleFrameMode;const a=null==o?void 0:o.width,h=null==o?void 0:o.height;o||(o=document.createElement("canvas"),this._cvsSingleFrameMode=o),i(o,n,r,s),this._innerComponent.setElement("content",o),a===o.width&&h===o.height||this.eventHandler.fire("content:updated",null,{async:!1})}this._onSingleFrameAcquired&&setTimeout((()=>{this._onSingleFrameAcquired(this._cvsSingleFrameMode)}),0)})),t.style.position="absolute",t.style.top="-9999px",t.style.backgroundColor="transparent",t.style.color="transparent";const e=document.createElement("div");e.append(t),this._innerComponent.setElement("single-frame-input-container",e),this._singleFrameInputContainer=e}null==t||t.click()},fn.set(this,[]),this._capturedResultReceiver={onCapturedResultReceived:(t,e)=>{var i,n,r,s;if(this.disposed)return;if(this.clearAllInnerDrawingItems(),!t)return;const o=t.originalImageTag;if(!o)return;const a=t.items;if(!(null==a?void 0:a.length))return;const h=(null===(i=o.cropRegion)||void 0===i?void 0:i.left)||0,l=(null===(n=o.cropRegion)||void 0===n?void 0:n.top)||0,c=(null===(r=o.cropRegion)||void 0===r?void 0:r.right)?o.cropRegion.right-h:o.originalWidth,u=(null===(s=o.cropRegion)||void 0===s?void 0:s.bottom)?o.cropRegion.bottom-l:o.originalHeight,d=o.currentWidth,f=o.currentHeight,g=(t,e,i,n,r,s,o,a,h=[],l)=>{e.forEach((t=>On._transformCoordinates(t,i,n,r,s,o,a)));const c=new Oi({points:[{x:e[0].x,y:e[0].y},{x:e[1].x,y:e[1].y},{x:e[2].x,y:e[2].y},{x:e[3].x,y:e[3].y}]},l);for(let t of h)c.addNote(t);t.addDrawingItems([c]),Ve(this,fn,"f").push(c)};let m,p;for(let t of a)switch(t.type){case yt.CRIT_ORIGINAL_IMAGE:break;case yt.CRIT_BARCODE:m=this.getDrawingLayer(Sn.DBR_LAYER_ID),p=[{name:"format",content:t.formatString},{name:"text",content:t.text}],(null==e?void 0:e.isBarcodeVerifyOpen)?t.verified?g(m,t.location.points,h,l,c,u,d,f,p):g(m,t.location.points,h,l,c,u,d,f,p,En.STYLE_ORANGE_STROKE_TRANSPARENT):g(m,t.location.points,h,l,c,u,d,f,p);break;case yt.CRIT_TEXT_LINE:m=this.getDrawingLayer(Sn.DLR_LAYER_ID),p=[{name:"text",content:t.text}],e.isLabelVerifyOpen?t.verified?g(m,t.location.points,h,l,c,u,d,f,p):g(m,t.location.points,h,l,c,u,d,f,p,En.STYLE_GREEN_STROKE_TRANSPARENT):g(m,t.location.points,h,l,c,u,d,f,p);break;case yt.CRIT_DETECTED_QUAD:m=this.getDrawingLayer(Sn.DDN_LAYER_ID),(null==e?void 0:e.isDetectVerifyOpen)?t.crossVerificationStatus===xt.CVS_PASSED?g(m,t.location.points,h,l,c,u,d,f,[]):g(m,t.location.points,h,l,c,u,d,f,[],En.STYLE_BLUE_STROKE_TRANSPARENT):g(m,t.location.points,h,l,c,u,d,f,[]);break;case yt.CRIT_NORMALIZED_IMAGE:m=this.getDrawingLayer(Sn.DDN_LAYER_ID),(null==e?void 0:e.isNormalizeVerifyOpen)?t.crossVerificationStatus===xt.CVS_PASSED?g(m,t.location.points,h,l,c,u,d,f,[]):g(m,t.location.points,h,l,c,u,d,f,[],En.STYLE_BLUE_STROKE_TRANSPARENT):g(m,t.location.points,h,l,c,u,d,f,[]);break;case yt.CRIT_PARSED_RESULT:break;default:throw new Error("Illegal item type.")}}},gn.set(this,!1),this.eventHandler=new ki,this.eventHandler.on("content:updated",(()=>{Ve(this,rn,"f")&&clearTimeout(Ve(this,rn,"f")),Ge(this,rn,setTimeout((()=>{if(this.disposed)return;let t;this._updateVideoContainer();try{t=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}this.updateDrawingLayers(t),this.updateConvertedRegion(t)}),0),"f")})),this.eventHandler.on("videoEl:resized",(()=>{Ve(this,sn,"f")&&clearTimeout(Ve(this,sn,"f")),Ge(this,sn,setTimeout((()=>{this.disposed||this._updateVideoContainer()}),0),"f")}))}_setUIElement(t){this.UIElement=t,this._unbindUI(),this._bindUI()}async setUIElement(t){let e;if("string"==typeof t){let i=await Ui(t);e=document.createElement("div"),Object.assign(e.style,{width:"100%",height:"100%"}),e.attachShadow({mode:"open"}).appendChild(i.cloneNode(!0))}else e=t;this._setUIElement(e)}getUIElement(){return this.UIElement}_bindUI(){var t,e;if(!this.UIElement)throw new Error("Need to set 'UIElement'.");if(this._innerComponent)return;let i=this.UIElement;i=i.shadowRoot||i;let n=(null===(t=i.classList)||void 0===t?void 0:t.contains(this.containerClassName))?i:i.querySelector(`.${this.containerClassName}`);if(!n)throw Error(`Can not find the element with class '${this.containerClassName}'.`);if(this._innerComponent=document.createElement("dce-component"),n.appendChild(this._innerComponent),Ve(this,nn,"m",mn).call(this));else{const t=document.createElement("video");Object.assign(t.style,{position:"absolute",left:"0",top:"0",width:"100%",height:"100%",objectFit:this.getVideoFit()}),t.setAttribute("autoplay","true"),t.setAttribute("playsinline","true"),t.setAttribute("muted","true"),["iPhone","iPad","Mac"].includes(je.OS)&&t.setAttribute("poster","data:image/gif;base64,R0lGODlhAQABAIEAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAgEAAEEBAA7"),Ge(this,an,t,"f");const e=document.createElement("div");e.append(t),e.style.overflow="hidden",this._videoContainer=e,this._innerComponent.setElement("content",e)}if(this._selRsl=i.querySelector(".dce-sel-resolution"),this._selMinLtr=i.querySelector(".dlr-sel-minletter"),this._divScanArea=i.querySelector(".dce-scanarea"),this._divScanLight=i.querySelector(".dce-scanlight"),this._bgLoading=i.querySelector(".dce-bg-loading"),this._bgCamera=i.querySelector(".dce-bg-camera"),this._selCam=i.querySelector(".dce-sel-camera"),this._optGotRsl=i.querySelector(".dce-opt-gotResolution"),this._btnClose=i.querySelector(".dce-btn-close"),this._optGotMinLtr=i.querySelector(".dlr-opt-gotMinLtr"),this._selRsl&&(this._hideDefaultSelection||Ve(this,nn,"m",mn).call(this)||this._selRsl.options.length||(this._selRsl.innerHTML=['','','',''].join(""),this._optGotRsl=this._selRsl.options[0])),this._selMinLtr&&(this._hideDefaultSelection||Ve(this,nn,"m",mn).call(this)||this._selMinLtr.options.length||(this._selMinLtr.innerHTML=['','','','','','','','','','',''].join(""),this._optGotMinLtr=this._selMinLtr.options[0])),this.isScanLaserVisible()||Ve(this,nn,"m",wn).call(this),Ve(this,nn,"m",mn).call(this)&&(this._innerComponent&&(this._innerComponent.addEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.setAttribute("title","Take a photo")),this._bgCamera&&(this._bgCamera.style.display="block")),Ve(this,nn,"m",mn).call(this)||this._hideDefaultSelection?(this._selCam&&(this._selCam.style.display="none"),this._selRsl&&(this._selRsl.style.display="none"),this._selMinLtr&&(this._selMinLtr.style.display="none")):(this._selCam&&(this._selCam.style.display="block"),this._selRsl&&(this._selRsl.style.display="block"),this._selMinLtr&&(this._selMinLtr.style.display="block"),this._stopLoading()),window.ResizeObserver){this._resizeObserver||(this._resizeObserver=new ResizeObserver((t=>{var e;On._onLog&&On._onLog("resize observer triggered.");for(let i of t)i.target===(null===(e=this._innerComponent)||void 0===e?void 0:e.getWrapper())&&this._videoResizeListener()})));const t=null===(e=this._innerComponent)||void 0===e?void 0:e.getWrapper();t&&this._resizeObserver.observe(t)}Ve(this,un,"f").width=document.documentElement.clientWidth,Ve(this,un,"f").height=document.documentElement.clientHeight,window.addEventListener("resize",this._windowResizeListener)}_unbindUI(){var t,e,i,n;Ve(this,nn,"m",mn).call(this)?(this._innerComponent&&(this._innerComponent.removeEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.removeAttribute("title")),this._bgCamera&&(this._bgCamera.style.display="none")):this._stopLoading(),Ve(this,nn,"m",wn).call(this),null===(t=this._drawingLayerManager)||void 0===t||t.clearDrawingLayers(),null===(e=this._innerComponent)||void 0===e||e.removeElement("drawing-layer"),this._layerBaseCvs=null,this._drawingLayerOfMask=null,this._drawingLayerOfTip=null,null===(i=this._innerComponent)||void 0===i||i.remove(),this._innerComponent=null,Ge(this,an,null,"f"),null===(n=this._videoContainer)||void 0===n||n.remove(),this._videoContainer=null,this._selCam=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,this._divScanArea=null,this._divScanLight=null,this._singleFrameInputContainer&&(this._singleFrameInputContainer.remove(),this._singleFrameInputContainer=null),window.ResizeObserver&&this._resizeObserver&&this._resizeObserver.disconnect(),window.removeEventListener("resize",this._windowResizeListener)}_startLoading(){this._bgLoading&&(this._bgLoading.style.display="",this._bgLoading.style.animationPlayState="")}_stopLoading(){this._bgLoading&&(this._bgLoading.style.display="none",this._bgLoading.style.animationPlayState="paused")}_renderCamerasInfo(t,e){if(this._selCam){let i;this._selCam.textContent="";for(let n of e){const e=document.createElement("option");e.value=n.deviceId,e.innerText=n.label,this._selCam.append(e),n.deviceId&&t&&t.deviceId==n.deviceId&&(i=e)}this._selCam.value=i?i.value:""}let i=this.UIElement;if(i=i.shadowRoot||i,i.querySelector(".dce-macro-use-mobile-native-like-ui")){let t=i.querySelector(".dce-mn-cameras");if(t){t.textContent="";for(let i of e){const e=document.createElement("div");e.classList.add("dce-mn-camera-option"),e.setAttribute("data-davice-id",i.deviceId),e.textContent=i.label,t.append(e)}}}}_renderResolutionInfo(t){this._optGotRsl&&(this._optGotRsl.setAttribute("data-width",t.width),this._optGotRsl.setAttribute("data-height",t.height),this._optGotRsl.innerText="got "+t.width+"x"+t.height,this._selRsl&&this._optGotRsl.parentNode==this._selRsl&&(this._selRsl.value="got"));{let e=this.UIElement;e=(null==e?void 0:e.shadowRoot)||e;let i=null==e?void 0:e.querySelector(".dce-mn-resolution-box");if(i){let e="";if(t&&t.width&&t.height){let i=Math.max(t.width,t.height),n=Math.min(t.width,t.height);e=n<=1080?n+"P":i<3e3?"2K":Math.round(i/1e3)+"K"}i.textContent=e}}}getVideoElement(){return Ve(this,an,"f")}isVideoLoaded(){return!(!Ve(this,an,"f")||!this.cameraEnhancer)&&this.cameraEnhancer.isOpen()}setVideoFit(t){if(t=t.toLowerCase(),!["contain","cover"].includes(t))throw new Error(`Unsupported value '${t}'.`);if(this.videoFit=t,!Ve(this,an,"f"))return;if(Ve(this,an,"f").style.objectFit=t,Ve(this,nn,"m",mn).call(this))return;let e;this._updateVideoContainer();try{e=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}Ve(this,nn,"m",Cn).call(this,e,this.getConvertedRegion()),this.updateDrawingLayers(e)}getVideoFit(){return this.videoFit}getContentDimensions(){var t,e,i,n;let r,s,o;if(Ve(this,nn,"m",mn).call(this)?(r=null===(i=this._cvsSingleFrameMode)||void 0===i?void 0:i.width,s=null===(n=this._cvsSingleFrameMode)||void 0===n?void 0:n.height,o="contain"):(r=null===(t=Ve(this,an,"f"))||void 0===t?void 0:t.videoWidth,s=null===(e=Ve(this,an,"f"))||void 0===e?void 0:e.videoHeight,o=this.getVideoFit()),!r||!s)throw new Error("Invalid content dimensions.");return{width:r,height:s,objectFit:o}}updateConvertedRegion(t){const e=Mi.convert(this.scanRegion,t.width,t.height);Ge(this,hn,e,"f"),Ve(this,on,"f")&&clearTimeout(Ve(this,on,"f")),Ge(this,on,setTimeout((()=>{let t;try{t=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}Ve(this,nn,"m",pn).call(this,t,e),Ve(this,nn,"m",Cn).call(this,t,e)}),0),"f")}getConvertedRegion(){return Ve(this,hn,"f")}setScanRegion(t){if(null!=t&&!E(t)&&!O(t))throw TypeError("Invalid 'region'.");let e;this.scanRegion=t?JSON.parse(JSON.stringify(t)):null;try{e=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}this.updateConvertedRegion(e)}getScanRegion(){return JSON.parse(JSON.stringify(this.scanRegion))}getVisibleRegionOfVideo(t){if(!this.isVideoLoaded())throw new Error("The video is not loaded.");const e=Ve(this,an,"f").videoWidth,i=Ve(this,an,"f").videoHeight,n=this.getVideoFit(),{width:r,height:s}=this._innerComponent.getBoundingClientRect();if(r<=0||s<=0)throw new Error("Unable to get video dimensions. Video may not be rendered on the page.");let o;const a={x:0,y:0,width:e,height:i,isMeasuredInPercentage:!1};if("cover"===n&&(r/s1){const t=Ve(this,an,"f").videoWidth,e=Ve(this,an,"f").videoHeight,{width:n,height:r}=this._innerComponent.getBoundingClientRect(),s=t/e;if(n/rt.remove())),Ve(this,fn,"f").length=0}dispose(){this._unbindUI(),Ge(this,gn,!0,"f")}}function An(t,e,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(t):n?n.value:e.get(t)}function Rn(t,e,i,n,r){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?r.call(t,i):r?r.value=i:e.set(t,i),i}rn=new WeakMap,sn=new WeakMap,on=new WeakMap,an=new WeakMap,hn=new WeakMap,ln=new WeakMap,cn=new WeakMap,un=new WeakMap,dn=new WeakMap,fn=new WeakMap,gn=new WeakMap,nn=new WeakSet,mn=function(){return"disabled"!==this._singleFrameMode},pn=function(t,e){!e||0===e.x&&0===e.y&&e.width===t.width&&e.height===t.height?this.clearScanRegionMask():this.setScanRegionMask(e.x,e.y,e.width,e.height)},_n=function(){this._drawingLayerOfMask&&this._drawingLayerOfMask.setVisible(!0)},vn=function(){this._drawingLayerOfMask&&this._drawingLayerOfMask.setVisible(!1)},yn=function(){this._divScanLight&&"none"==this._divScanLight.style.display&&(this._divScanLight.style.display="block")},wn=function(){this._divScanLight&&(this._divScanLight.style.display="none")},Cn=function(t,e){if(!this._divScanArea)return;if(!this._innerComponent.getElement("content"))return;const{width:i,height:n,objectFit:r}=t;e||(e={x:0,y:0,width:i,height:n});const{width:s,height:o}=this._innerComponent.getBoundingClientRect();if(s<=0||o<=0)return;const a=s/o,h=i/n;let l,c,u,d,f=1;if("contain"===r)a66||"Safari"===kn.browser&&kn.version>13||"OPR"===kn.browser&&kn.version>43||"Edge"===kn.browser&&kn.version,"function"==typeof SuppressedError&&SuppressedError;class jn{static multiply(t,e){const i=[];for(let n=0;n<3;n++){const r=e.slice(3*n,3*n+3);for(let e=0;e<3;e++){const n=[t[e],t[e+3],t[e+6]].reduce(((t,e,i)=>t+e*r[i]),0);i.push(n)}}return i}static identity(){return[1,0,0,0,1,0,0,0,1]}static translate(t,e,i){return jn.multiply(t,[1,0,0,0,1,0,e,i,1])}static rotate(t,e){var i=Math.cos(e),n=Math.sin(e);return jn.multiply(t,[i,-n,0,n,i,0,0,0,1])}static scale(t,e,i){return jn.multiply(t,[e,0,0,0,i,0,0,0,1])}}var Un,Vn,Gn,Wn,Yn,Hn,Xn,zn,qn,Zn,Kn,Jn,Qn,$n,tr,er,ir,nr,rr,sr,or,ar,hr,lr,cr,ur,dr,fr,gr,mr,pr,_r,vr,yr,wr,Cr,Er,Sr,Tr,br,Ir,xr,Or,Ar,Rr,Dr,Lr,Mr,Fr,Pr;!function(t){t.GREY="grey",t.GREY32="grey32",t.RGBA="rgba",t.RBGA="rbga",t.GRBA="grba",t.GBRA="gbra",t.BRGA="brga",t.BGRA="bgra"}(Un||(Un={}));class kr{static get version(){return"1.1.3"}static get webGLSupported(){return void 0===kr._webGLSupported&&(kr._webGLSupported=!!document.createElement("canvas").getContext("webgl")),kr._webGLSupported}get disposed(){return Bn(this,Xn,"f")}constructor(){Vn.set(this,Un.RGBA),Gn.set(this,null),Wn.set(this,null),Yn.set(this,null),this.useWebGLByDefault=!0,this._reusedCvs=null,this._reusedWebGLCvs=null,Hn.set(this,null),Xn.set(this,!1)}drawImage(t,e,i,n,r,s){if(this.disposed)throw Error("The 'ImageDataGetter' instance has been disposed.");if(!i||!n)throw new Error("Invalid 'sourceWidth' or 'sourceHeight'.");if((null==s?void 0:s.bUseWebGL)&&!kr.webGLSupported)throw new Error("Your browser or machine may not support WebGL.");if(e instanceof HTMLVideoElement&&4!==e.readyState||e instanceof HTMLImageElement&&!e.complete)throw new Error("The source is not loaded.");let o;kr._onLog&&(o=Date.now(),kr._onLog("drawImage(), START: "+o));let a=0,h=0,l=i,c=n,u=0,d=0,f=i,g=n;r&&(r.sx&&(a=Math.round(r.sx)),r.sy&&(h=Math.round(r.sy)),r.sWidth&&(l=Math.round(r.sWidth)),r.sHeight&&(c=Math.round(r.sHeight)),r.dx&&(u=Math.round(r.dx)),r.dy&&(d=Math.round(r.dy)),r.dWidth&&(f=Math.round(r.dWidth)),r.dHeight&&(g=Math.round(r.dHeight)));let m,p=Un.RGBA;if((null==s?void 0:s.pixelFormat)&&(p=s.pixelFormat),(null==s?void 0:s.bufferContainer)&&(m=s.bufferContainer,m.length<4*f*g))throw new Error("Unexpected size of the 'bufferContainer'.");const _=t;if(!kr.webGLSupported||!(this.useWebGLByDefault&&null==(null==s?void 0:s.bUseWebGL)||(null==s?void 0:s.bUseWebGL))){kr._onLog&&kr._onLog("drawImage() in context2d."),_.ctx2d||(_.ctx2d=_.getContext("2d",{willReadFrequently:!0}));const t=_.ctx2d;if(!t)throw new Error("Unable to get 'CanvasRenderingContext2D' from canvas.");return(_.width{const e=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,e),t.bufferData(t.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),t.STATIC_DRAW);const i=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,i),t.bufferData(t.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),t.STATIC_DRAW),{positions:e,texCoords:i}},i=t=>{const e=t.createTexture();return t.bindTexture(t.TEXTURE_2D,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),e},n=(t,e)=>{const i=t.createProgram();if(e.forEach((e=>t.attachShader(i,e))),t.linkProgram(i),!t.getProgramParameter(i,t.LINK_STATUS)){const e=new Error(`An error occured linking the program: ${t.getProgramInfoLog(i)}.`);throw e.name="WebGLError",e}return t.useProgram(i),i},r=(t,e,i)=>{const n=t.createShader(e);if(t.shaderSource(n,i),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS)){const e=new Error(`An error occured compiling the shader: ${t.getShaderInfoLog(n)}.`);throw e.name="WebGLError",e}return n},s="\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\n\nuniform mat3 u_matrix;\nuniform mat3 u_textureMatrix;\n\nvarying vec2 v_texCoord;\nvoid main(void) {\ngl_Position = vec4((u_matrix * vec3(a_position, 1)).xy, 0, 1.0);\nv_texCoord = vec4((u_textureMatrix * vec3(a_texCoord, 1)).xy, 0, 1.0).xy;\n}";let o="rgb";["rgba","rbga","grba","gbra","brga","bgra"].includes(p)&&(o=p.slice(0,3));const a=`\nprecision mediump float;\nvarying vec2 v_texCoord;\nuniform sampler2D u_image;\nuniform float uColorFactor;\n\nvoid main() {\nvec4 sample = texture2D(u_image, v_texCoord);\nfloat grey = 0.3 * sample.r + 0.59 * sample.g + 0.11 * sample.b;\ngl_FragColor = vec4(sample.${o} * (1.0 - uColorFactor) + (grey * uColorFactor), sample.a);\n}`,h=n(t,[r(t,t.VERTEX_SHADER,s),r(t,t.FRAGMENT_SHADER,a)]);Nn(this,Wn,{program:h,attribLocations:{vertexPosition:t.getAttribLocation(h,"a_position"),texPosition:t.getAttribLocation(h,"a_texCoord")},uniformLocations:{uSampler:t.getUniformLocation(h,"u_image"),uColorFactor:t.getUniformLocation(h,"uColorFactor"),uMatrix:t.getUniformLocation(h,"u_matrix"),uTextureMatrix:t.getUniformLocation(h,"u_textureMatrix")}},"f"),Nn(this,Yn,e(t),"f"),Nn(this,Gn,i(t),"f"),Nn(this,Vn,p,"f")}const r=(t,e,i)=>{t.bindBuffer(t.ARRAY_BUFFER,e),t.enableVertexAttribArray(i),t.vertexAttribPointer(i,2,t.FLOAT,!1,0,0)},s=(t,e,i)=>{const n=t.RGBA,r=t.RGBA,s=t.UNSIGNED_BYTE;t.bindTexture(t.TEXTURE_2D,e),t.texImage2D(t.TEXTURE_2D,0,n,r,s,i)},v=(t,e,s,o)=>{t.clearColor(0,0,0,1),t.clearDepth(1),t.enable(t.DEPTH_TEST),t.depthFunc(t.LEQUAL),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT),r(t,s.positions,e.attribLocations.vertexPosition),r(t,s.texCoords,e.attribLocations.texPosition),t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,o),t.uniform1i(e.uniformLocations.uSampler,0),t.uniform1f(e.uniformLocations.uColorFactor,[Un.GREY,Un.GREY32].includes(p)?1:0);let m,_,v=jn.translate(jn.identity(),-1,-1);v=jn.scale(v,2,2),v=jn.scale(v,1/t.canvas.width,1/t.canvas.height),m=jn.translate(v,u,d),m=jn.scale(m,f,g),t.uniformMatrix3fv(e.uniformLocations.uMatrix,!1,m),_=jn.translate(jn.identity(),a/i,h/n),_=jn.scale(_,l/i,c/n),t.uniformMatrix3fv(e.uniformLocations.uTextureMatrix,!1,_),t.drawArrays(t.TRIANGLES,0,6)};s(t,Bn(this,Gn,"f"),e),v(t,Bn(this,Wn,"f"),Bn(this,Yn,"f"),Bn(this,Gn,"f"));const y=m||new Uint8Array(4*f*g);if(t.readPixels(u,d,f,g,t.RGBA,t.UNSIGNED_BYTE,y),255!==y[3]){kr._onLog&&kr._onLog("Incorrect WebGL drawing .");const t=new Error("WebGL error: incorrect drawing.");throw t.name="WebGLError",t}return kr._onLog&&kr._onLog("drawImage() in WebGL end. Costs: "+(Date.now()-o)),{context:t,pixelFormat:p===Un.GREY?Un.GREY32:p,bUseWebGL:!0}}catch(o){if(this.forceLoseContext(),null==(null==s?void 0:s.bUseWebGL))return kr._onLog&&kr._onLog("'drawImage()' in WebGL failed, try again in context2d."),this.useWebGLByDefault=!1,this.drawImage(t,e,i,n,r,Object.assign({},s,{bUseWebGL:!1}));throw o.name="WebGLError",o}}readCvsData(t,e,i){if(!(t instanceof CanvasRenderingContext2D||t instanceof WebGLRenderingContext))throw new Error("Invalid 'context'.");let n,r=0,s=0,o=t.canvas.width,a=t.canvas.height;if(e&&(e.x&&(r=e.x),e.y&&(s=e.y),e.width&&(o=e.width),e.height&&(a=e.height)),(null==i?void 0:i.length)<4*o*a)throw new Error("Unexpected size of the 'bufferContainer'.");if(t instanceof WebGLRenderingContext){const e=t;i?(e.readPixels(r,s,o,a,e.RGBA,e.UNSIGNED_BYTE,i),n=new Uint8Array(i.buffer,0,4*o*a)):(n=new Uint8Array(4*o*a),e.readPixels(r,s,o,a,e.RGBA,e.UNSIGNED_BYTE,n))}else if(t instanceof CanvasRenderingContext2D){let e;e=t.getImageData(r,s,o,a),n=new Uint8Array(e.data.buffer),null==i||i.set(n)}return n}transformPixelFormat(t,e,i,n){let r,s;if(kr._onLog&&(r=Date.now(),kr._onLog("transformPixelFormat(), START: "+r)),e===i)return kr._onLog&&kr._onLog("transformPixelFormat() end. Costs: "+(Date.now()-r)),n?new Uint8Array(t):t;const o=[Un.RGBA,Un.RBGA,Un.GRBA,Un.GBRA,Un.BRGA,Un.BGRA];if(o.includes(e))if(i===Un.GREY){s=new Uint8Array(t.length/4);for(let e=0;eh||e.sy+e.sHeight>l)throw new Error("Invalid position.");null===(n=kr._onLog)||void 0===n||n.call(kr,"getImageData(), START: "+(c=Date.now()));const d=Math.round(e.sx),f=Math.round(e.sy),g=Math.round(e.sWidth),m=Math.round(e.sHeight),p=Math.round(e.dWidth),_=Math.round(e.dHeight);let v,y=(null==i?void 0:i.pixelFormat)||Un.RGBA,w=null==i?void 0:i.bufferContainer;if(w&&(Un.GREY===y&&w.length{this.disposed||n.includes(r)&&r.apply(i.target,s)}),0);else try{o=r.apply(i.target,s)}catch(t){}if(!0===o)break}}}dispose(){Rn(this,qn,!0,"f")}}zn=new WeakMap,qn=new WeakMap;const Nr=(t,e,i,n)=>{if(!i)return t;let r=e+Math.round((t-e)/i)*i;return n&&(r=Math.min(r,n)),r};class jr{static get version(){return"2.0.18"}static isStorageAvailable(t){let e;try{e=window[t];const i="__storage_test__";return e.setItem(i,i),e.removeItem(i),!0}catch(t){return t instanceof DOMException&&(22===t.code||1014===t.code||"QuotaExceededError"===t.name||"NS_ERROR_DOM_QUOTA_REACHED"===t.name)&&e&&0!==e.length}}static findBestRearCameraInIOS(t,e){if(!t||!t.length)return null;let i=!1;if((null==e?void 0:e.getMainCamera)&&(i=!0),i){const e=["후면 카메라","背面カメラ","後置鏡頭","后置相机","กล้องด้านหลัง","बैक कैमरा","الكاميرا الخلفية","מצלמה אחורית","камера на задней панели","задня камера","задна камера","артқы камера","πίσω κάμερα","zadní fotoaparát","zadná kamera","tylny aparat","takakamera","stražnja kamera","rückkamera","kamera på baksidan","kamera belakang","kamera bak","hátsó kamera","fotocamera (posteriore)","câmera traseira","câmara traseira","cámara trasera","càmera posterior","caméra arrière","cameră spate","camera mặt sau","camera aan achterzijde","bagsidekamera","back camera","arka kamera"],i=t.find((t=>e.includes(t.label.toLowerCase())));return null==i?void 0:i.deviceId}{const e=["후면","背面","後置","后置","านหลัง","बैक","خلفية","אחורית","задняя","задней","задна","πίσω","zadní","zadná","tylny","trasera","traseira","taka","stražnja","spate","sau","rück","posteriore","posterior","hátsó","belakang","baksidan","bakre","bak","bagside","back","aртқы","arrière","arka","achterzijde"],i=["트리플","三镜头","三鏡頭","トリプル","สาม","ट्रिपल","ثلاثية","משולשת","үштік","тройная","тройна","потроєна","τριπλή","üçlü","trójobiektywowy","trostruka","trojný","trojitá","trippelt","trippel","triplă","triple","tripla","tiga","kolmois","ba camera"],n=["듀얼 와이드","雙廣角","双广角","デュアル広角","คู่ด้านหลังมุมกว้าง","ड्युअल वाइड","مزدوجة عريضة","כפולה רחבה","қос кең бұрышты","здвоєна ширококутна","двойная широкоугольная","двойна широкоъгълна","διπλή ευρεία","çift geniş","laajakulmainen kaksois","kép rộng mặt sau","kettős, széles látószögű","grande angular dupla","ganda","dwuobiektywowy","dwikamera","dvostruka široka","duální širokoúhlý","duálna širokouhlá","dupla grande-angular","dublă","dubbel vidvinkel","dual-weitwinkel","dual wide","dual con gran angular","dual","double","doppia con grandangolo","doble","dobbelt vidvinkelkamera"],r=t.filter((t=>{const i=t.label.toLowerCase();return e.some((t=>i.includes(t)))}));if(!r.length)return null;const s=r.find((t=>{const e=t.label.toLowerCase();return i.some((t=>e.includes(t)))}));if(s)return s.deviceId;const o=r.find((t=>{const e=t.label.toLowerCase();return n.some((t=>e.includes(t)))}));return o?o.deviceId:r[0].deviceId}}static findBestRearCamera(t,e){if(!t||!t.length)return null;if(["iPhone","iPad","Mac"].includes(kn.OS))return jr.findBestRearCameraInIOS(t,{getMainCamera:null==e?void 0:e.getMainCameraInIOS});const i=["후","背面","背置","後面","後置","后面","后置","านหลัง","หลัง","बैक","خلفية","אחורית","задняя","задня","задней","задна","πίσω","zadní","zadná","tylny","trás","trasera","traseira","taka","stražnja","spate","sau","rück","rear","posteriore","posterior","hátsó","darrere","belakang","baksidan","bakre","bak","bagside","back","aртқы","arrière","arka","achterzijde"];for(let e of t){const t=e.label.toLowerCase();if(t&&i.some((e=>t.includes(e)))&&/\b0(\b)?/.test(t))return e.deviceId}return["Android","HarmonyOS"].includes(kn.OS)?t[t.length-1].deviceId:null}static findBestCamera(t,e,i){return t&&t.length?"environment"===e?this.findBestRearCamera(t,i):"user"===e?null:e?void 0:null:null}static async playVideo(t,e,i){if(!t)throw new Error("Invalid 'videoEl'.");if(!e)throw new Error("Invalid 'source'.");return new Promise((async(n,r)=>{let s;const o=()=>{t.removeEventListener("loadstart",c),t.removeEventListener("abort",u),t.removeEventListener("play",d),t.removeEventListener("error",f),t.removeEventListener("loadedmetadata",p)};let a=!1;const h=()=>{a=!0,s&&clearTimeout(s),o(),n(t)},l=t=>{s&&clearTimeout(s),o(),r(t)},c=()=>{t.addEventListener("abort",u,{once:!0})},u=()=>{const t=new Error("Video playing was interrupted.");t.name="AbortError",l(t)},d=()=>{h()},f=()=>{l(new Error(`Video error ${t.error.code}: ${t.error.message}.`))};let g;const m=new Promise((t=>{g=t})),p=()=>{g()};if(t.addEventListener("loadstart",c,{once:!0}),t.addEventListener("play",d,{once:!0}),t.addEventListener("error",f,{once:!0}),t.addEventListener("loadedmetadata",p,{once:!0}),"string"==typeof e||e instanceof String?t.src=e:t.srcObject=e,t.autoplay&&await new Promise((t=>{setTimeout(t,1e3)})),!a){i&&(s=setTimeout((()=>{o(),r(new Error("Failed to play video. Timeout."))}),i)),await m;try{await t.play(),h()}catch(t){console.warn("1st play error: "+((null==t?void 0:t.message)||t))}if(!a)try{await t.play(),h()}catch(t){console.warn("2rd play error: "+((null==t?void 0:t.message)||t)),l(t)}}}))}static async testCameraAccess(t){var e,i;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))return{ok:!1,errorName:"InsecureContext",errorMessage:"Insecure context."};let n;try{n=t?await navigator.mediaDevices.getUserMedia(t):await navigator.mediaDevices.getUserMedia({video:!0})}catch(t){return{ok:!1,errorName:t.name,errorMessage:t.message}}finally{null==n||n.getTracks().forEach((t=>{t.stop()}))}return{ok:!0}}get state(){if(!An(this,hr,"f"))return"closed";if("pending"===An(this,hr,"f"))return"opening";if("fulfilled"===An(this,hr,"f"))return"opened";throw new Error("Unknown state.")}set ifSaveLastUsedCamera(t){t?jr.isStorageAvailable("localStorage")?Rn(this,rr,!0,"f"):(Rn(this,rr,!1,"f"),console.warn("Local storage is unavailable")):Rn(this,rr,!1,"f")}get ifSaveLastUsedCamera(){return An(this,rr,"f")}get isVideoPlaying(){return!(!An(this,Jn,"f")||An(this,Jn,"f").paused)&&"opened"===this.state}set tapFocusEventBoundEl(t){var e,i,n;if(!(t instanceof HTMLElement)&&null!=t)throw new TypeError("Invalid 'element'.");null===(e=An(this,gr,"f"))||void 0===e||e.removeEventListener("click",An(this,fr,"f")),null===(i=An(this,gr,"f"))||void 0===i||i.removeEventListener("touchend",An(this,fr,"f")),null===(n=An(this,gr,"f"))||void 0===n||n.removeEventListener("touchmove",An(this,dr,"f")),Rn(this,gr,t,"f"),t&&(window.TouchEvent&&["Android","HarmonyOS","iPhone","iPad"].includes(kn.OS)?(t.addEventListener("touchend",An(this,fr,"f")),t.addEventListener("touchmove",An(this,dr,"f"))):t.addEventListener("click",An(this,fr,"f")))}get tapFocusEventBoundEl(){return An(this,gr,"f")}get disposed(){return An(this,Sr,"f")}constructor(t){var e,i;Kn.add(this),Jn.set(this,null),Qn.set(this,void 0),$n.set(this,(()=>{"opened"===this.state&&An(this,vr,"f").fire("resumed",null,{target:this,async:!1})})),tr.set(this,(()=>{An(this,vr,"f").fire("paused",null,{target:this,async:!1})})),er.set(this,void 0),ir.set(this,void 0),this.cameraOpenTimeout=15e3,this._arrCameras=[],nr.set(this,void 0),rr.set(this,!1),this.ifSkipCameraInspection=!1,this.selectIOSRearMainCameraAsDefault=!1,sr.set(this,void 0),or.set(this,!0),ar.set(this,void 0),hr.set(this,void 0),lr.set(this,!1),this._focusParameters={maxTimeout:400,minTimeout:300,kTimeout:void 0,oldDistance:null,fds:null,isDoingFocus:0,taskBackToContinous:null,curFocusTaskId:0,focusCancelableTime:1500,defaultFocusAreaSizeRatio:6,focusBackToContinousTime:5e3,tapFocusMinDistance:null,tapFocusMaxDistance:null,focusArea:null,tempBufferContainer:null,defaultTempBufferContainerLenRatio:1/4},cr.set(this,!1),this._focusSupported=!0,this.calculateCoordInVideo=(t,e)=>{let i,n;const r=window.getComputedStyle(An(this,Jn,"f")).objectFit,s=this.getResolution(),o=An(this,Jn,"f").getBoundingClientRect(),a=o.left,h=o.top,{width:l,height:c}=An(this,Jn,"f").getBoundingClientRect();if(l<=0||c<=0)throw new Error("Unable to get video dimensions. Video may not be rendered on the page.");const u=l/c,d=s.width/s.height;let f=1;if("contain"===r)d>u?(f=l/s.width,i=(t-a)/f,n=(e-h-(c-l/d)/2)/f):(f=c/s.height,n=(e-h)/f,i=(t-a-(l-c*d)/2)/f);else{if("cover"!==r)throw new Error("Unsupported object-fit.");d>u?(f=c/s.height,n=(e-h)/f,i=(t-a+(c*d-l)/2)/f):(f=l/s.width,i=(t-a)/f,n=(e-h+(l/d-c)/2)/f)}return{x:i,y:n}},ur.set(this,!1),dr.set(this,(()=>{Rn(this,ur,!0,"f")})),fr.set(this,(async t=>{var e;if(An(this,ur,"f"))return void Rn(this,ur,!1,"f");if(!An(this,cr,"f"))return;if(!this.isVideoPlaying)return;if(!An(this,Qn,"f"))return;if(!this._focusSupported)return;if(!this._focusParameters.fds&&(this._focusParameters.fds=null===(e=this.getCameraCapabilities())||void 0===e?void 0:e.focusDistance,!this._focusParameters.fds))return void(this._focusSupported=!1);if(null==this._focusParameters.kTimeout&&(this._focusParameters.kTimeout=(this._focusParameters.maxTimeout-this._focusParameters.minTimeout)/(1/this._focusParameters.fds.min-1/this._focusParameters.fds.max)),1==this._focusParameters.isDoingFocus)return;let i,n;if(this._focusParameters.taskBackToContinous&&(clearTimeout(this._focusParameters.taskBackToContinous),this._focusParameters.taskBackToContinous=null),t instanceof MouseEvent)i=t.clientX,n=t.clientY;else{if(!(t instanceof TouchEvent))throw new Error("Unknown event type.");if(!t.changedTouches.length)return;i=t.changedTouches[0].clientX,n=t.changedTouches[0].clientY}const r=this.getResolution(),s=2*Math.round(Math.min(r.width,r.height)/this._focusParameters.defaultFocusAreaSizeRatio/2);let o;try{o=this.calculateCoordInVideo(i,n)}catch(t){}if(o.x<0||o.x>r.width||o.y<0||o.y>r.height)return;const a={x:o.x+"px",y:o.y+"px"},h=s+"px",l=h;let c;jr._onLog&&(c=Date.now());try{await An(this,Kn,"m",Mr).call(this,a,h,l,this._focusParameters.tapFocusMinDistance,this._focusParameters.tapFocusMaxDistance)}catch(t){if(jr._onLog)throw jr._onLog(t),t}jr._onLog&&jr._onLog(`Tap focus costs: ${Date.now()-c} ms`),this._focusParameters.taskBackToContinous=setTimeout((()=>{var t;jr._onLog&&jr._onLog("Back to continuous focus."),null===(t=An(this,Qn,"f"))||void 0===t||t.applyConstraints({advanced:[{focusMode:"continuous"}]}).catch((()=>{}))}),this._focusParameters.focusBackToContinousTime),An(this,vr,"f").fire("tapfocus",null,{target:this,async:!1})})),gr.set(this,null),mr.set(this,1),pr.set(this,{x:0,y:0}),this.updateVideoElWhenSoftwareScaled=()=>{if(!An(this,Jn,"f"))return;const t=An(this,mr,"f");if(t<1)throw new RangeError("Invalid scale value.");if(1===t)An(this,Jn,"f").style.transform="";else{const e=window.getComputedStyle(An(this,Jn,"f")).objectFit,i=An(this,Jn,"f").videoWidth,n=An(this,Jn,"f").videoHeight,{width:r,height:s}=An(this,Jn,"f").getBoundingClientRect();if(r<=0||s<=0)throw new Error("Unable to get video dimensions. Video may not be rendered on the page.");const o=r/s,a=i/n;let h=1;"contain"===e?h=oo?s/(i/t):r/(n/t));const l=h*(1-1/t)*(i/2-An(this,pr,"f").x),c=h*(1-1/t)*(n/2-An(this,pr,"f").y);An(this,Jn,"f").style.transform=`translate(${l}px, ${c}px) scale(${t})`}},_r.set(this,(function(){if(!(this.data instanceof Uint8Array||this.data instanceof Uint8ClampedArray))throw new TypeError("Invalid data.");if("number"!=typeof this.width||this.width<=0)throw new Error("Invalid width.");if("number"!=typeof this.height||this.height<=0)throw new Error("Invalid height.");const t=document.createElement("canvas");let e;if(t.width=this.width,t.height=this.height,this.pixelFormat===Un.GREY){e=new Uint8ClampedArray(this.width*this.height*4);for(let t=0;t{var t,e;if("visible"===document.visibilityState){if(jr._onLog&&jr._onLog("document visible. video paused: "+(null===(t=An(this,Jn,"f"))||void 0===t?void 0:t.paused)),"opening"==this.state||"opened"==this.state){let e=!1;if(!this.isVideoPlaying){jr._onLog&&jr._onLog("document visible. Not auto resume. 1st resume start.");try{await this.resume(),e=!0}catch(t){jr._onLog&&jr._onLog("document visible. 1st resume video failed, try open instead.")}e||await An(this,Kn,"m",Or).call(this)}if(await new Promise((t=>setTimeout(t,300))),!this.isVideoPlaying){jr._onLog&&jr._onLog("document visible. 1st open failed. 2rd resume start."),e=!1;try{await this.resume(),e=!0}catch(t){jr._onLog&&jr._onLog("document visible. 2rd resume video failed, try open instead.")}e||await An(this,Kn,"m",Or).call(this)}}}else"hidden"===document.visibilityState&&(jr._onLog&&jr._onLog("document hidden. video paused: "+(null===(e=An(this,Jn,"f"))||void 0===e?void 0:e.paused)),"opening"==this.state||"opened"==this.state&&this.isVideoPlaying&&this.pause())})),Sr.set(this,!1),(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia)||setTimeout((()=>{jr.onWarning&&jr.onWarning("The browser is too old or the page is loaded from an insecure origin.")}),0),this.defaultConstraints={video:{facingMode:{ideal:"environment"}}},this.resetMediaStreamConstraints(),t instanceof HTMLVideoElement&&this.setVideoEl(t),Rn(this,vr,new Br,"f"),this.imageDataGetter=new kr,document.addEventListener("visibilitychange",An(this,Er,"f"))}setVideoEl(t){if(!(t&&t instanceof HTMLVideoElement))throw new Error("Invalid 'videoEl'.");t.addEventListener("play",An(this,$n,"f")),t.addEventListener("pause",An(this,tr,"f")),Rn(this,Jn,t,"f")}getVideoEl(){return An(this,Jn,"f")}releaseVideoEl(){var t,e;null===(t=An(this,Jn,"f"))||void 0===t||t.removeEventListener("play",An(this,$n,"f")),null===(e=An(this,Jn,"f"))||void 0===e||e.removeEventListener("pause",An(this,tr,"f")),Rn(this,Jn,null,"f")}isVideoLoaded(){return!!An(this,Jn,"f")&&4==An(this,Jn,"f").readyState}async open(){if(An(this,ar,"f")&&!An(this,or,"f")){if("pending"===An(this,hr,"f"))return An(this,ar,"f");if("fulfilled"===An(this,hr,"f"))return}An(this,vr,"f").fire("before:open",null,{target:this}),await An(this,Kn,"m",Or).call(this),An(this,vr,"f").fire("played",null,{target:this,async:!1}),An(this,vr,"f").fire("opened",null,{target:this,async:!1})}async close(){if("closed"===this.state)return;An(this,vr,"f").fire("before:close",null,{target:this});const t=An(this,ar,"f");if(An(this,Kn,"m",Rr).call(this),t&&"pending"===An(this,hr,"f")){try{await t}catch(t){}if(!1===An(this,or,"f")){const t=new Error("'close()' was interrupted.");throw t.name="AbortError",t}}Rn(this,ar,null,"f"),Rn(this,hr,null,"f"),An(this,vr,"f").fire("closed",null,{target:this,async:!1})}pause(){if(!this.isVideoLoaded())throw new Error("Video is not loaded.");if("opened"!==this.state)throw new Error("Camera or video is not open.");An(this,Jn,"f").pause()}async resume(){if(!this.isVideoLoaded())throw new Error("Video is not loaded.");if("opened"!==this.state)throw new Error("Camera or video is not open.");await An(this,Jn,"f").play()}async setCamera(t){if("string"!=typeof t)throw new TypeError("Invalid 'deviceId'.");if("object"!=typeof An(this,er,"f").video&&(An(this,er,"f").video={}),delete An(this,er,"f").video.facingMode,An(this,er,"f").video.deviceId={exact:t},!("closed"===this.state||this.videoSrc||"opening"===this.state&&An(this,or,"f"))){An(this,vr,"f").fire("before:camera:change",[],{target:this,async:!1}),await An(this,Kn,"m",Ar).call(this);try{this.resetSoftwareScale()}catch(t){}return An(this,ir,"f")}}async switchToFrontCamera(t){if("object"!=typeof An(this,er,"f").video&&(An(this,er,"f").video={}),(null==t?void 0:t.resolution)&&(An(this,er,"f").video.width={ideal:t.resolution.width},An(this,er,"f").video.height={ideal:t.resolution.height}),delete An(this,er,"f").video.deviceId,An(this,er,"f").video.facingMode={exact:"user"},Rn(this,nr,null,"f"),!("closed"===this.state||this.videoSrc||"opening"===this.state&&An(this,or,"f"))){An(this,vr,"f").fire("before:camera:change",[],{target:this,async:!1}),An(this,Kn,"m",Ar).call(this);try{this.resetSoftwareScale()}catch(t){}return An(this,ir,"f")}}getCamera(){var t;if(An(this,ir,"f"))return An(this,ir,"f");{let e=(null===(t=An(this,er,"f").video)||void 0===t?void 0:t.deviceId)||"";if(e){e=e.exact||e.ideal||e;for(let t of this._arrCameras)if(t.deviceId===e)return JSON.parse(JSON.stringify(t))}return{deviceId:"",label:"",_checked:!1}}}async _getCameras(t){var e,i;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))throw new Error("Failed to access the camera because the browser is too old or the page is loaded from an insecure origin.");let n;if(t){let t=await navigator.mediaDevices.getUserMedia({video:!0});n=(await navigator.mediaDevices.enumerateDevices()).filter((t=>"videoinput"===t.kind)),t.getTracks().forEach((t=>{t.stop()}))}else n=(await navigator.mediaDevices.enumerateDevices()).filter((t=>"videoinput"===t.kind));const r=[],s=[];if(this._arrCameras)for(let t of this._arrCameras)t._checked&&s.push(t);for(let t=0;t"videoinput"===t.kind));return i&&i.length&&!i[0].deviceId?this._getCameras(!0):this._getCameras(!1)}async getAllCameras(){return this.getCameras()}async setResolution(t,e,i){if("number"!=typeof t||t<=0)throw new TypeError("Invalid 'width'.");if("number"!=typeof e||e<=0)throw new TypeError("Invalid 'height'.");if("object"!=typeof An(this,er,"f").video&&(An(this,er,"f").video={}),i?(An(this,er,"f").video.width={exact:t},An(this,er,"f").video.height={exact:e}):(An(this,er,"f").video.width={ideal:t},An(this,er,"f").video.height={ideal:e}),"closed"===this.state||this.videoSrc||"opening"===this.state&&An(this,or,"f"))return null;An(this,vr,"f").fire("before:resolution:change",[],{target:this,async:!1}),await An(this,Kn,"m",Ar).call(this);try{this.resetSoftwareScale()}catch(t){}const n=this.getResolution();return{width:n.width,height:n.height}}getResolution(){if("opened"===this.state&&this.videoSrc&&An(this,Jn,"f"))return{width:An(this,Jn,"f").videoWidth,height:An(this,Jn,"f").videoHeight};if(An(this,Qn,"f")){const t=An(this,Qn,"f").getSettings();return{width:t.width,height:t.height}}if(this.isVideoLoaded())return{width:An(this,Jn,"f").videoWidth,height:An(this,Jn,"f").videoHeight};{const t={width:0,height:0};let e=An(this,er,"f").video.width||0,i=An(this,er,"f").video.height||0;return e&&(t.width=e.exact||e.ideal||e),i&&(t.height=i.exact||i.ideal||i),t}}async getResolutions(t){var e,i,n,r,s,o,a,h,l,c,u;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))throw new Error("Failed to access the camera because the browser is too old or the page is loaded from an insecure origin.");let d="";const f=(t,e)=>{const i=An(this,wr,"f").get(t);if(!i||!i.length)return!1;for(let t of i)if(t.width===e.width&&t.height===e.height)return!0;return!1};if(this._mediaStream){d=null===(u=An(this,ir,"f"))||void 0===u?void 0:u.deviceId;let e=An(this,wr,"f").get(d);if(e&&!t)return JSON.parse(JSON.stringify(e));e=[],An(this,wr,"f").set(d,e),Rn(this,lr,!0,"f");try{for(let t of this.detectedResolutions){await An(this,Qn,"f").applyConstraints({width:{ideal:t.width},height:{ideal:t.height}}),An(this,Kn,"m",br).call(this);const i=An(this,Qn,"f").getSettings(),n={width:i.width,height:i.height};f(d,n)||e.push({width:n.width,height:n.height})}}catch(t){throw An(this,Kn,"m",Rr).call(this),Rn(this,lr,!1,"f"),t}try{await An(this,Kn,"m",Or).call(this)}catch(t){if("AbortError"===t.name)return e;throw t}finally{Rn(this,lr,!1,"f")}return e}{const e=async(t,e,i)=>{const n={video:{deviceId:{exact:t},width:{ideal:e},height:{ideal:i}}};let r=null;try{r=await navigator.mediaDevices.getUserMedia(n)}catch(t){return null}if(!r)return null;const s=r.getVideoTracks();let o=null;try{const t=s[0].getSettings();o={width:t.width,height:t.height}}catch(t){const e=document.createElement("video");e.srcObject=r,o={width:e.videoWidth,height:e.videoHeight},e.srcObject=null}return s.forEach((t=>{t.stop()})),o};let i=(null===(s=null===(r=null===(n=An(this,er,"f"))||void 0===n?void 0:n.video)||void 0===r?void 0:r.deviceId)||void 0===s?void 0:s.exact)||(null===(h=null===(a=null===(o=An(this,er,"f"))||void 0===o?void 0:o.video)||void 0===a?void 0:a.deviceId)||void 0===h?void 0:h.ideal)||(null===(c=null===(l=An(this,er,"f"))||void 0===l?void 0:l.video)||void 0===c?void 0:c.deviceId);if(!i)return[];let u=An(this,wr,"f").get(i);if(u&&!t)return JSON.parse(JSON.stringify(u));u=[],An(this,wr,"f").set(i,u);for(let t of this.detectedResolutions){const n=await e(i,t.width,t.height);n&&!f(i,n)&&u.push({width:n.width,height:n.height})}return u}}async setMediaStreamConstraints(t,e){if(!(t=>{return null!==t&&"[object Object]"===(e=t,Object.prototype.toString.call(e));var e})(t))throw new TypeError("Invalid 'mediaStreamConstraints'.");Rn(this,er,JSON.parse(JSON.stringify(t)),"f"),Rn(this,nr,null,"f"),e&&An(this,Kn,"m",Ar).call(this)}getMediaStreamConstraints(){return JSON.parse(JSON.stringify(An(this,er,"f")))}resetMediaStreamConstraints(){Rn(this,er,this.defaultConstraints?JSON.parse(JSON.stringify(this.defaultConstraints)):null,"f")}getCameraCapabilities(){if(!An(this,Qn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");return An(this,Qn,"f").getCapabilities?An(this,Qn,"f").getCapabilities():{}}getCameraSettings(){if(!An(this,Qn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");return An(this,Qn,"f").getSettings()}async turnOnTorch(){if(!An(this,Qn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const t=this.getCameraCapabilities();if(!(null==t?void 0:t.torch))throw Error("Not supported.");await An(this,Qn,"f").applyConstraints({advanced:[{torch:!0}]})}async turnOffTorch(){if(!An(this,Qn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const t=this.getCameraCapabilities();if(!(null==t?void 0:t.torch))throw Error("Not supported.");await An(this,Qn,"f").applyConstraints({advanced:[{torch:!1}]})}async setColorTemperature(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(!An(this,Qn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const n=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.colorTemperature;if(!n)throw Error("Not supported.");return e&&(tn.max&&(t=n.max),t=Nr(t,n.min,n.step,n.max)),await An(this,Qn,"f").applyConstraints({advanced:[{colorTemperature:t,whiteBalanceMode:"manual"}]}),t}getColorTemperature(){return this.getCameraSettings().colorTemperature||0}async setExposureCompensation(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(!An(this,Qn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const n=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.exposureCompensation;if(!n)throw Error("Not supported.");return e&&(tn.max&&(t=n.max),t=Nr(t,n.min,n.step,n.max)),await An(this,Qn,"f").applyConstraints({advanced:[{exposureCompensation:t}]}),t}getExposureCompensation(){return this.getCameraSettings().exposureCompensation||0}async setFrameRate(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(!An(this,Qn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");let n=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.frameRate;if(!n)throw Error("Not supported.");e&&(tn.max&&(t=n.max));const r=this.getResolution();return await An(this,Qn,"f").applyConstraints({width:{ideal:Math.max(r.width,r.height)},frameRate:t}),t}getFrameRate(){return this.getCameraSettings().frameRate}async setFocus(t,e){if("object"!=typeof t||Array.isArray(t)||null==t)throw new TypeError("Invalid 'settings'.");if(!An(this,Qn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const i=this.getCameraCapabilities(),n=null==i?void 0:i.focusMode,r=null==i?void 0:i.focusDistance;if(!n)throw Error("Not supported.");if("string"!=typeof t.mode)throw TypeError("Invalid 'mode'.");const s=t.mode.toLowerCase();if(!n.includes(s))throw Error("Unsupported focus mode.");if("manual"===s){if(!r)throw Error("Manual focus unsupported.");if(t.hasOwnProperty("distance")){let i=t.distance;e&&(ir.max&&(i=r.max),i=Nr(i,r.min,r.step,r.max)),this._focusParameters.focusArea=null,await An(this,Qn,"f").applyConstraints({advanced:[{focusMode:s,focusDistance:i}]})}else{if(!t.area)throw new Error("'distance' or 'area' should be specified in 'manual' mode.");{const e=t.area.centerPoint;let i=t.area.width,n=t.area.height;if(!i||!n){const t=this.getResolution();i||(i=2*Math.round(Math.min(t.width,t.height)/this._focusParameters.defaultFocusAreaSizeRatio/2)+"px"),n||(n=2*Math.round(Math.min(t.width,t.height)/this._focusParameters.defaultFocusAreaSizeRatio/2)+"px")}this._focusParameters.focusArea={centerPoint:{x:e.x,y:e.y},width:i,height:n},await An(this,Kn,"m",Mr).call(this,e,i,n)}}}else this._focusParameters.focusArea=null,await An(this,Qn,"f").applyConstraints({advanced:[{focusMode:s}]})}getFocus(){const t=this.getCameraSettings(),e=t.focusMode;return e?"manual"===e?this._focusParameters.focusArea?{mode:"manual",area:JSON.parse(JSON.stringify(this._focusParameters.focusArea))}:{mode:"manual",distance:t.focusDistance}:{mode:e}:null}async enableTapToFocus(){Rn(this,cr,!0,"f")}disableTapToFocus(){Rn(this,cr,!1,"f")}isTapToFocusEnabled(){return An(this,cr,"f")}async setZoom(t){if("object"!=typeof t||Array.isArray(t)||null==t)throw new TypeError("Invalid 'settings'.");if("number"!=typeof t.factor)throw new TypeError("Illegal type of 'factor'.");if(t.factor<1)throw new RangeError("Invalid 'factor'.");if("opened"!==this.state)throw new Error("Video is not playing.");t.centerPoint?An(this,Kn,"m",Fr).call(this,t.centerPoint):this.resetScaleCenter();try{if(An(this,Kn,"m",Pr).call(this,An(this,pr,"f"))){const e=await this.setHardwareScale(t.factor,!0);let i=this.getHardwareScale();1==i&&1!=e&&(i=e),t.factor>i?this.setSoftwareScale(t.factor/i):this.setSoftwareScale(1)}else await this.setHardwareScale(1),this.setSoftwareScale(t.factor)}catch(e){const i=e.message||e;if("Not supported."!==i&&"Camera is not open."!==i)throw e;this.setSoftwareScale(t.factor)}}getZoom(){if("opened"!==this.state)throw new Error("Video is not playing.");let t=1;try{t=this.getHardwareScale()}catch(t){if("Camera is not open."!==(t.message||t))throw t}return{factor:t*An(this,mr,"f")}}async resetZoom(){await this.setZoom({factor:1})}async setHardwareScale(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(t<1)throw new RangeError("Invalid 'value'.");if(!An(this,Qn,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const n=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.zoom;if(!n)throw Error("Not supported.");return e&&(tn.max&&(t=n.max),t=Nr(t,n.min,n.step,n.max)),await An(this,Qn,"f").applyConstraints({advanced:[{zoom:t}]}),t}getHardwareScale(){return this.getCameraSettings().zoom||1}setSoftwareScale(t,e){if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(t<1)throw new RangeError("Invalid 'value'.");if("opened"!==this.state)throw new Error("Video is not playing.");e&&An(this,Kn,"m",Fr).call(this,e),Rn(this,mr,t,"f"),this.updateVideoElWhenSoftwareScaled()}getSoftwareScale(){return An(this,mr,"f")}resetScaleCenter(){if("opened"!==this.state)throw new Error("Video is not playing.");const t=this.getResolution();Rn(this,pr,{x:t.width/2,y:t.height/2},"f")}resetSoftwareScale(){this.setSoftwareScale(1),this.resetScaleCenter()}getFrameData(t){if(this.disposed)throw Error("The 'Camera' instance has been disposed.");if(!this.isVideoLoaded())return null;if(An(this,lr,"f"))return null;const e=Date.now();jr._onLog&&jr._onLog("getFrameData() START: "+e);const i=An(this,Jn,"f").videoWidth,n=An(this,Jn,"f").videoHeight;let r={sx:0,sy:0,sWidth:i,sHeight:n,dWidth:i,dHeight:n};(null==t?void 0:t.position)&&(r=JSON.parse(JSON.stringify(t.position)));let s=Un.RGBA;(null==t?void 0:t.pixelFormat)&&(s=t.pixelFormat);let o=An(this,mr,"f");(null==t?void 0:t.scale)&&(o=t.scale);let a=An(this,pr,"f");if(null==t?void 0:t.scaleCenter){if("string"!=typeof t.scaleCenter.x||"string"!=typeof t.scaleCenter.y)throw new Error("Invalid scale center.");let e=0,r=0;if(t.scaleCenter.x.endsWith("px"))e=parseFloat(t.scaleCenter.x);else{if(!t.scaleCenter.x.endsWith("%"))throw new Error("Invalid scale center.");e=parseFloat(t.scaleCenter.x)/100*i}if(t.scaleCenter.y.endsWith("px"))r=parseFloat(t.scaleCenter.y);else{if(!t.scaleCenter.y.endsWith("%"))throw new Error("Invalid scale center.");r=parseFloat(t.scaleCenter.y)/100*n}if(isNaN(e)||isNaN(r))throw new Error("Invalid scale center.");a.x=Math.round(e),a.y=Math.round(r)}let h=null;if((null==t?void 0:t.bufferContainer)&&(h=t.bufferContainer),0==i||0==n)return null;1!==o&&(r.sWidth=Math.round(r.sWidth/o),r.sHeight=Math.round(r.sHeight/o),r.sx=Math.round((1-1/o)*a.x+r.sx/o),r.sy=Math.round((1-1/o)*a.y+r.sy/o));const l=this.imageDataGetter.getImageData(An(this,Jn,"f"),r,{pixelFormat:s,bufferContainer:h});if(!l)return null;const c=Date.now();return jr._onLog&&jr._onLog("getFrameData() END: "+c),{data:l.data,width:l.width,height:l.height,pixelFormat:l.pixelFormat,timeSpent:c-e,timeStamp:c,toCanvas:An(this,_r,"f")}}on(t,e){if(!An(this,yr,"f").includes(t.toLowerCase()))throw new Error(`Event '${t}' does not exist.`);An(this,vr,"f").on(t,e)}off(t,e){An(this,vr,"f").off(t,e)}async dispose(){this.tapFocusEventBoundEl=null,await this.close(),this.releaseVideoEl(),An(this,vr,"f").dispose(),this.imageDataGetter.dispose(),document.removeEventListener("visibilitychange",An(this,Er,"f")),Rn(this,Sr,!0,"f")}}var Ur,Vr,Gr,Wr,Yr,Hr,Xr,zr,qr,Zr,Kr,Jr,Qr,$r,ts,es,is,ns,rs,ss,os,as,hs,ls,cs,us,ds,fs,gs,ms,ps,_s,vs,ys,ws;Jn=new WeakMap,Qn=new WeakMap,$n=new WeakMap,tr=new WeakMap,er=new WeakMap,ir=new WeakMap,nr=new WeakMap,rr=new WeakMap,sr=new WeakMap,or=new WeakMap,ar=new WeakMap,hr=new WeakMap,lr=new WeakMap,cr=new WeakMap,ur=new WeakMap,dr=new WeakMap,fr=new WeakMap,gr=new WeakMap,mr=new WeakMap,pr=new WeakMap,_r=new WeakMap,vr=new WeakMap,yr=new WeakMap,wr=new WeakMap,Cr=new WeakMap,Er=new WeakMap,Sr=new WeakMap,Kn=new WeakSet,Tr=async function(){const t=this.getMediaStreamConstraints();if("boolean"==typeof t.video&&(t.video={}),t.video.deviceId);else if(An(this,nr,"f"))delete t.video.facingMode,t.video.deviceId={exact:An(this,nr,"f")};else if(this.ifSaveLastUsedCamera&&jr.isStorageAvailable&&window.localStorage.getItem("dce_last_camera_id")){delete t.video.facingMode,t.video.deviceId={ideal:window.localStorage.getItem("dce_last_camera_id")};const e=JSON.parse(window.localStorage.getItem("dce_last_apply_width")),i=JSON.parse(window.localStorage.getItem("dce_last_apply_height"));e&&i&&(t.video.width=e,t.video.height=i)}else if(this.ifSkipCameraInspection);else{const e=async t=>{let e=null;return"environment"===t&&["Android","HarmonyOS","iPhone","iPad"].includes(kn.OS)?(await this._getCameras(!1),An(this,Kn,"m",br).call(this),e=jr.findBestCamera(this._arrCameras,"environment",{getMainCameraInIOS:this.selectIOSRearMainCameraAsDefault})):t||["Android","HarmonyOS","iPhone","iPad"].includes(kn.OS)||(await this._getCameras(!1),An(this,Kn,"m",br).call(this),e=jr.findBestCamera(this._arrCameras,null,{getMainCameraInIOS:this.selectIOSRearMainCameraAsDefault})),e};let i=t.video.facingMode;i instanceof Array&&i.length&&(i=i[0]),"object"==typeof i&&(i=i.exact||i.ideal);const n=await e(i);n&&(delete t.video.facingMode,t.video.deviceId={exact:n})}return t},br=function(){if(An(this,or,"f")){const t=new Error("The operation was interrupted.");throw t.name="AbortError",t}},Ir=async function(t){var e,i;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))throw new Error("Failed to access the camera because the browser is too old or the page is loaded from an insecure origin.");let n;try{jr._onLog&&jr._onLog("======try getUserMedia========");let e=[0,500,1e3,2e3],i=null;const r=async t=>{for(let r of e){r&&(await new Promise((t=>setTimeout(t,r))),An(this,Kn,"m",br).call(this));try{jr._onLog&&jr._onLog("ask "+JSON.stringify(t)),n=await navigator.mediaDevices.getUserMedia(t),An(this,Kn,"m",br).call(this);break}catch(t){if("NotFoundError"===t.name||"NotAllowedError"===t.name||"AbortError"===t.name||"OverconstrainedError"===t.name)throw t;i=t,jr._onLog&&jr._onLog(t.message||t)}}};if(await r(t),n||"object"!=typeof t.video||(t.video.deviceId&&(delete t.video.deviceId,await r(t)),!n&&t.video.facingMode&&(delete t.video.facingMode,await r(t)),n||!t.video.width&&!t.video.height||(delete t.video.width,delete t.video.height,await r(t))),!n)throw i;return n}catch(t){throw null==n||n.getTracks().forEach((t=>{t.stop()})),"NotFoundError"===t.name&&(DOMException?t=new DOMException("No camera available, please use a device with an accessible camera.",t.name):(t=new Error("No camera available, please use a device with an accessible camera.")).name="NotFoundError"),t}},xr=function(){this._mediaStream&&(this._mediaStream.getTracks().forEach((t=>{t.stop()})),this._mediaStream=null),Rn(this,Qn,null,"f")},Or=async function(){Rn(this,or,!1,"f");const t=Rn(this,sr,Symbol(),"f");if(An(this,ar,"f")&&"pending"===An(this,hr,"f")){try{await An(this,ar,"f")}catch(t){}An(this,Kn,"m",br).call(this)}if(t!==An(this,sr,"f"))return;const e=Rn(this,ar,(async()=>{Rn(this,hr,"pending","f");try{if(this.videoSrc){if(!An(this,Jn,"f"))throw new Error("'videoEl' should be set.");await jr.playVideo(An(this,Jn,"f"),this.videoSrc,this.cameraOpenTimeout),An(this,Kn,"m",br).call(this)}else{let t=await An(this,Kn,"m",Tr).call(this);An(this,Kn,"m",xr).call(this);let e=await An(this,Kn,"m",Ir).call(this,t);await this._getCameras(!1),An(this,Kn,"m",br).call(this);const i=()=>{const t=e.getVideoTracks();let i,n;if(t.length&&(i=t[0]),i){const t=i.getSettings();if(t)for(let e of this._arrCameras)if(t.deviceId===e.deviceId){e._checked=!0,e.label=i.label,n=e;break}}return n},n=An(this,er,"f");if("object"==typeof n.video){let r=n.video.facingMode;if(r instanceof Array&&r.length&&(r=r[0]),"object"==typeof r&&(r=r.exact||r.ideal),!(An(this,nr,"f")||this.ifSaveLastUsedCamera&&jr.isStorageAvailable&&window.localStorage.getItem("dce_last_camera_id")||this.ifSkipCameraInspection||n.video.deviceId)){const n=i(),s=jr.findBestCamera(this._arrCameras,r,{getMainCameraInIOS:this.selectIOSRearMainCameraAsDefault});s&&s!=(null==n?void 0:n.deviceId)&&(e.getTracks().forEach((t=>{t.stop()})),t.video.deviceId={exact:s},e=await An(this,Kn,"m",Ir).call(this,t),An(this,Kn,"m",br).call(this))}}const r=i();(null==r?void 0:r.deviceId)&&(Rn(this,nr,r&&r.deviceId,"f"),this.ifSaveLastUsedCamera&&jr.isStorageAvailable&&(window.localStorage.setItem("dce_last_camera_id",An(this,nr,"f")),"object"==typeof t.video&&t.video.width&&t.video.height&&(window.localStorage.setItem("dce_last_apply_width",JSON.stringify(t.video.width)),window.localStorage.setItem("dce_last_apply_height",JSON.stringify(t.video.height))))),An(this,Jn,"f")&&(await jr.playVideo(An(this,Jn,"f"),e,this.cameraOpenTimeout),An(this,Kn,"m",br).call(this)),this._mediaStream=e;const s=e.getVideoTracks();(null==s?void 0:s.length)&&Rn(this,Qn,s[0],"f"),Rn(this,ir,r,"f")}}catch(t){throw An(this,Kn,"m",Rr).call(this),Rn(this,hr,null,"f"),t}Rn(this,hr,"fulfilled","f")})(),"f");return e},Ar=async function(){var t;if("closed"===this.state||this.videoSrc)return;const e=null===(t=An(this,ir,"f"))||void 0===t?void 0:t.deviceId,i=this.getResolution();await An(this,Kn,"m",Or).call(this);const n=this.getResolution();e&&e!==An(this,ir,"f").deviceId&&An(this,vr,"f").fire("camera:changed",[An(this,ir,"f").deviceId,e],{target:this,async:!1}),i.width==n.width&&i.height==n.height||An(this,vr,"f").fire("resolution:changed",[{width:n.width,height:n.height},{width:i.width,height:i.height}],{target:this,async:!1}),An(this,vr,"f").fire("played",null,{target:this,async:!1})},Rr=function(){An(this,Kn,"m",xr).call(this),Rn(this,ir,null,"f"),An(this,Jn,"f")&&(An(this,Jn,"f").srcObject=null,this.videoSrc&&(An(this,Jn,"f").pause(),An(this,Jn,"f").currentTime=0)),Rn(this,or,!0,"f");try{this.resetSoftwareScale()}catch(t){}},Dr=async function t(e,i){const n=t=>{if(!An(this,Qn,"f")||!this.isVideoPlaying||t.focusTaskId!=this._focusParameters.curFocusTaskId){An(this,Qn,"f")&&this.isVideoPlaying||(this._focusParameters.isDoingFocus=0);const e=new Error(`Focus task ${t.focusTaskId} canceled.`);throw e.name="DeprecatedTaskError",e}1===this._focusParameters.isDoingFocus&&Date.now()-t.timeStart>this._focusParameters.focusCancelableTime&&(this._focusParameters.isDoingFocus=-1)};let r;i=Nr(i,this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),await An(this,Qn,"f").applyConstraints({advanced:[{focusMode:"manual",focusDistance:i}]}),n(e),r=null==this._focusParameters.oldDistance?this._focusParameters.kTimeout*Math.max(Math.abs(1/this._focusParameters.fds.min-1/i),Math.abs(1/this._focusParameters.fds.max-1/i))+this._focusParameters.minTimeout:this._focusParameters.kTimeout*Math.abs(1/this._focusParameters.oldDistance-1/i)+this._focusParameters.minTimeout,this._focusParameters.oldDistance=i,await new Promise((t=>{setTimeout(t,r)})),n(e);let s=e.focusL-e.focusW/2,o=e.focusT-e.focusH/2,a=e.focusW,h=e.focusH;const l=this.getResolution();s=Math.round(s),o=Math.round(o),a=Math.round(a),h=Math.round(h),a>l.width&&(a=l.width),h>l.height&&(h=l.height),s<0?s=0:s+a>l.width&&(s=l.width-a),o<0?o=0:o+h>l.height&&(o=l.height-h);const c=4*l.width*l.height*this._focusParameters.defaultTempBufferContainerLenRatio,u=4*a*h;let d=this._focusParameters.tempBufferContainer;if(d){const t=d.length;c>t&&c>=u?d=new Uint8Array(c):u>t&&u>=c&&(d=new Uint8Array(u))}else d=this._focusParameters.tempBufferContainer=new Uint8Array(Math.max(c,u));if(!this.imageDataGetter.getImageData(An(this,Jn,"f"),{sx:s,sy:o,sWidth:a,sHeight:h,dWidth:a,dHeight:h},{pixelFormat:Un.RGBA,bufferContainer:d}))return An(this,Kn,"m",t).call(this,e,i);const f=d;let g=0;for(let t=0,e=u-8;ta&&au)return await An(this,Kn,"m",t).call(this,e,o,a,r,s,c,u)}else{let h=await An(this,Kn,"m",Dr).call(this,e,c);if(a>h)return await An(this,Kn,"m",t).call(this,e,o,a,r,s,c,h);if(a==h)return await An(this,Kn,"m",t).call(this,e,o,a,c,h);let u=await An(this,Kn,"m",Dr).call(this,e,l);if(u>a&&ao.width||h<0||h>o.height)throw new Error("Invalid 'centerPoint'.");let l=0;if(e.endsWith("px"))l=parseFloat(e);else{if(!e.endsWith("%"))throw new Error("Invalid 'width'.");l=parseFloat(e)/100*o.width}if(isNaN(l)||l<0)throw new Error("Invalid 'width'.");let c=0;if(i.endsWith("px"))c=parseFloat(i);else{if(!i.endsWith("%"))throw new Error("Invalid 'height'.");c=parseFloat(i)/100*o.height}if(isNaN(c)||c<0)throw new Error("Invalid 'height'.");if(1!==An(this,mr,"f")){const t=An(this,mr,"f"),e=An(this,pr,"f");l/=t,c/=t,a=(1-1/t)*e.x+a/t,h=(1-1/t)*e.y+h/t}if(!this._focusSupported)throw new Error("Manual focus unsupported.");if(!this._focusParameters.fds&&(this._focusParameters.fds=null===(s=this.getCameraCapabilities())||void 0===s?void 0:s.focusDistance,!this._focusParameters.fds))throw this._focusSupported=!1,new Error("Manual focus unsupported.");null==this._focusParameters.kTimeout&&(this._focusParameters.kTimeout=(this._focusParameters.maxTimeout-this._focusParameters.minTimeout)/(1/this._focusParameters.fds.min-1/this._focusParameters.fds.max)),this._focusParameters.isDoingFocus=1;const u={focusL:a,focusT:h,focusW:l,focusH:c,focusTaskId:++this._focusParameters.curFocusTaskId,timeStart:Date.now()},d=async(t,e,i)=>{try{(null==e||ethis._focusParameters.fds.max)&&(i=this._focusParameters.fds.max),this._focusParameters.oldDistance=null;let n=Nr(Math.sqrt(i*(e||this._focusParameters.fds.step)),this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),r=Nr(Math.sqrt((e||this._focusParameters.fds.step)*n),this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),s=Nr(Math.sqrt(n*i),this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),o=await An(this,Kn,"m",Dr).call(this,t,s),a=await An(this,Kn,"m",Dr).call(this,t,r),h=await An(this,Kn,"m",Dr).call(this,t,n);if(a>h&&ho&&a>o){let e=await An(this,Kn,"m",Dr).call(this,t,i);const r=await An(this,Kn,"m",Lr).call(this,t,n,h,i,e,s,o);return this._focusParameters.isDoingFocus=0,r}if(a==h&&hh){const e=await An(this,Kn,"m",Lr).call(this,t,n,h,s,o);return this._focusParameters.isDoingFocus=0,e}return d(t,e,i)}catch(t){if("DeprecatedTaskError"!==t.name)throw t}};return d(u,n,r)},Fr=function(t){if("opened"!==this.state)throw new Error("Video is not playing.");if(!t||"string"!=typeof t.x||"string"!=typeof t.y)throw new Error("Invalid 'center'.");const e=this.getResolution();let i=0,n=0;if(t.x.endsWith("px"))i=parseFloat(t.x);else{if(!t.x.endsWith("%"))throw new Error("Invalid scale center.");i=parseFloat(t.x)/100*e.width}if(t.y.endsWith("px"))n=parseFloat(t.y);else{if(!t.y.endsWith("%"))throw new Error("Invalid scale center.");n=parseFloat(t.y)/100*e.height}if(isNaN(i)||isNaN(n))throw new Error("Invalid scale center.");Rn(this,pr,{x:i,y:n},"f")},Pr=function(t){if("opened"!==this.state)throw new Error("Video is not playing.");const e=this.getResolution();return t&&t.x==e.width/2&&t.y==e.height/2},jr.browserInfo=kn,jr.onWarning=null===(Zn=null===window||void 0===window?void 0:window.console)||void 0===Zn?void 0:Zn.warn;class Cs{constructor(t){Ur.add(this),Vr.set(this,void 0),Gr.set(this,0),Wr.set(this,void 0),Yr.set(this,0),Hr.set(this,!1),Ge(this,Vr,t,"f")}startCharging(){Ve(this,Hr,"f")||(Cs._onLog&&Cs._onLog("start charging."),Ve(this,Ur,"m",zr).call(this),Ge(this,Hr,!0,"f"))}stopCharging(){Ve(this,Wr,"f")&&clearTimeout(Ve(this,Wr,"f")),Ve(this,Hr,"f")&&(Cs._onLog&&Cs._onLog("stop charging."),Ge(this,Gr,Date.now()-Ve(this,Yr,"f"),"f"),Ge(this,Hr,!1,"f"))}}Vr=new WeakMap,Gr=new WeakMap,Wr=new WeakMap,Yr=new WeakMap,Hr=new WeakMap,Ur=new WeakSet,Xr=function(){vt.cfd(1),Cs._onLog&&Cs._onLog("charge 1.")},zr=function t(){0==Ve(this,Gr,"f")&&Ve(this,Ur,"m",Xr).call(this),Ge(this,Yr,Date.now(),"f"),Ve(this,Wr,"f")&&clearTimeout(Ve(this,Wr,"f")),Ge(this,Wr,setTimeout((()=>{Ge(this,Gr,0,"f"),Ve(this,Ur,"m",t).call(this)}),Ve(this,Vr,"f")-Ve(this,Gr,"f")),"f")};class Es{static beep(){if(!this.allowBeep)return;if(!this.beepSoundSource)return;let t,e=Date.now();if(!(e-Ve(this,qr,"f",Jr)<100)){if(Ge(this,qr,e,"f",Jr),Ve(this,qr,"f",Zr).size&&(t=Ve(this,qr,"f",Zr).values().next().value,this.beepSoundSource==t.src?(Ve(this,qr,"f",Zr).delete(t),t.play()):t=null),!t)if(Ve(this,qr,"f",Kr).size<16){t=new Audio(this.beepSoundSource);let e=null,i=()=>{t.removeEventListener("loadedmetadata",i),t.play(),e=setTimeout((()=>{Ve(this,qr,"f",Kr).delete(t)}),2e3*t.duration)};t.addEventListener("loadedmetadata",i),t.addEventListener("ended",(()=>{null!=e&&(clearTimeout(e),e=null),t.pause(),t.currentTime=0,Ve(this,qr,"f",Kr).delete(t),Ve(this,qr,"f",Zr).add(t)}))}else Ve(this,qr,"f",Qr)||(Ge(this,qr,!0,"f",Qr),console.warn("The requested audio tracks exceed 16 and will not be played."));t&&Ve(this,qr,"f",Kr).add(t)}}static vibrate(){if(this.allowVibrate){if(!navigator||!navigator.vibrate)throw new Error("Not supported.");navigator.vibrate(Es.vibrateDuration)}}}qr=Es,Zr={value:new Set},Kr={value:new Set},Jr={value:0},Qr={value:!1},Es.allowBeep=!0,Es.beepSoundSource="data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA/+M4wAAAAAAAAAAAAEluZm8AAAAPAAAABQAAAkAAgICAgICAgICAgICAgICAgICAgKCgoKCgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4ODg4P//////////////////////////AAAAAExhdmM1OC41NAAAAAAAAAAAAAAAACQEUQAAAAAAAAJAk0uXRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MYxAANQAbGeUEQAAHZYZ3fASqD4P5TKBgocg+Bw/8+CAYBA4XB9/4EBAEP4nB9+UOf/6gfUCAIKyjgQ/Kf//wfswAAAwQA/+MYxAYOqrbdkZGQAMA7DJLCsQxNOij///////////+tv///3RWiZGBEhsf/FO/+LoCSFs1dFVS/g8f/4Mhv0nhqAieHleLy/+MYxAYOOrbMAY2gABf/////////////////usPJ66R0wI4boY9/8jQYg//g2SPx1M0N3Z0kVJLIs///Uw4aMyvHJJYmPBYG/+MYxAgPMALBucAQAoGgaBoFQVBUFQWDv6gZBUFQVBUGgaBr5YSgqCoKhIGg7+IQVBUFQVBoGga//SsFSoKnf/iVTEFNRTMu/+MYxAYAAANIAAAAADEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",Es.allowVibrate=!0,Es.vibrateDuration=300;const Ss=new Map([[Un.GREY,a.IPF_GRAYSCALED],[Un.RGBA,a.IPF_ABGR_8888]]),Ts="function"==typeof BigInt?{BF_NULL:BigInt(0),BF_ALL:BigInt(0x10000000000000000),BF_DEFAULT:BigInt(4265345023),BF_ONED:BigInt(3147775),BF_GS1_DATABAR:BigInt(260096),BF_CODE_39:BigInt(1),BF_CODE_128:BigInt(2),BF_CODE_93:BigInt(4),BF_CODABAR:BigInt(8),BF_ITF:BigInt(16),BF_EAN_13:BigInt(32),BF_EAN_8:BigInt(64),BF_UPC_A:BigInt(128),BF_UPC_E:BigInt(256),BF_INDUSTRIAL_25:BigInt(512),BF_CODE_39_EXTENDED:BigInt(1024),BF_GS1_DATABAR_OMNIDIRECTIONAL:BigInt(2048),BF_GS1_DATABAR_TRUNCATED:BigInt(4096),BF_GS1_DATABAR_STACKED:BigInt(8192),BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL:BigInt(16384),BF_GS1_DATABAR_EXPANDED:BigInt(32768),BF_GS1_DATABAR_EXPANDED_STACKED:BigInt(65536),BF_GS1_DATABAR_LIMITED:BigInt(131072),BF_PATCHCODE:BigInt(262144),BF_CODE_32:BigInt(16777216),BF_PDF417:BigInt(33554432),BF_QR_CODE:BigInt(67108864),BF_DATAMATRIX:BigInt(134217728),BF_AZTEC:BigInt(268435456),BF_MAXICODE:BigInt(536870912),BF_MICRO_QR:BigInt(1073741824),BF_MICRO_PDF417:BigInt(524288),BF_GS1_COMPOSITE:BigInt(2147483648),BF_MSI_CODE:BigInt(1048576),BF_CODE_11:BigInt(2097152),BF_TWO_DIGIT_ADD_ON:BigInt(4194304),BF_FIVE_DIGIT_ADD_ON:BigInt(8388608),BF_MATRIX_25:BigInt(68719476736),BF_POSTALCODE:BigInt(0x3f0000000000000),BF_NONSTANDARD_BARCODE:BigInt(4294967296),BF_USPSINTELLIGENTMAIL:BigInt(4503599627370496),BF_POSTNET:BigInt(9007199254740992),BF_PLANET:BigInt(0x40000000000000),BF_AUSTRALIANPOST:BigInt(0x80000000000000),BF_RM4SCC:BigInt(72057594037927940),BF_KIX:BigInt(0x200000000000000),BF_DOTCODE:BigInt(8589934592),BF_PHARMACODE_ONE_TRACK:BigInt(17179869184),BF_PHARMACODE_TWO_TRACK:BigInt(34359738368),BF_PHARMACODE:BigInt(51539607552)}:{BF_NULL:"0x00",BF_ALL:"0xFFFFFFFFFFFFFFFF",BF_DEFAULT:"0xFE3BFFFF",BF_ONED:"0x003007FF",BF_GS1_DATABAR:"0x0003F800",BF_CODE_39:"0x1",BF_CODE_128:"0x2",BF_CODE_93:"0x4",BF_CODABAR:"0x8",BF_ITF:"0x10",BF_EAN_13:"0x20",BF_EAN_8:"0x40",BF_UPC_A:"0x80",BF_UPC_E:"0x100",BF_INDUSTRIAL_25:"0x200",BF_CODE_39_EXTENDED:"0x400",BF_GS1_DATABAR_OMNIDIRECTIONAL:"0x800",BF_GS1_DATABAR_TRUNCATED:"0x1000",BF_GS1_DATABAR_STACKED:"0x2000",BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL:"0x4000",BF_GS1_DATABAR_EXPANDED:"0x8000",BF_GS1_DATABAR_EXPANDED_STACKED:"0x10000",BF_GS1_DATABAR_LIMITED:"0x20000",BF_PATCHCODE:"0x00040000",BF_CODE_32:"0x01000000",BF_PDF417:"0x02000000",BF_QR_CODE:"0x04000000",BF_DATAMATRIX:"0x08000000",BF_AZTEC:"0x10000000",BF_MAXICODE:"0x20000000",BF_MICRO_QR:"0x40000000",BF_MICRO_PDF417:"0x00080000",BF_GS1_COMPOSITE:"0x80000000",BF_MSI_CODE:"0x100000",BF_CODE_11:"0x200000",BF_TWO_DIGIT_ADD_ON:"0x400000",BF_FIVE_DIGIT_ADD_ON:"0x800000",BF_MATRIX_25:"0x1000000000",BF_POSTALCODE:"0x3F0000000000000",BF_NONSTANDARD_BARCODE:"0x100000000",BF_USPSINTELLIGENTMAIL:"0x10000000000000",BF_POSTNET:"0x20000000000000",BF_PLANET:"0x40000000000000",BF_AUSTRALIANPOST:"0x80000000000000",BF_RM4SCC:"0x100000000000000",BF_KIX:"0x200000000000000",BF_DOTCODE:"0x200000000",BF_PHARMACODE_ONE_TRACK:"0x400000000",BF_PHARMACODE_TWO_TRACK:"0x800000000",BF_PHARMACODE:"0xC00000000"};class bs extends J{static set _onLog(t){Ge(bs,ts,t,"f",es),jr._onLog=t,Cs._onLog=t}static get _onLog(){return Ve(bs,ts,"f",es)}static async detectEnvironment(){return await(async()=>({wasm:We,worker:Ye,getUserMedia:He,camera:await Xe(),browser:je.browser,version:je.version,OS:je.OS}))()}static async testCameraAccess(){const t=await jr.testCameraAccess();return t.ok?{ok:!0,message:"Successfully accessed the camera."}:"InsecureContext"===t.errorName?{ok:!1,message:"Insecure context."}:"OverconstrainedError"===t.errorName||"NotFoundError"===t.errorName?{ok:!1,message:"No camera detected."}:"NotAllowedError"===t.errorName?{ok:!1,message:"No permission to access camera."}:"AbortError"===t.errorName?{ok:!1,message:"Some problem occurred which prevented the device from being used."}:"NotReadableError"===t.errorName?{ok:!1,message:"A hardware error occurred."}:"SecurityError"===t.errorName?{ok:!1,message:"User media support is disabled."}:{ok:!1,message:t.errorMessage}}static async createInstance(t){var e,i;if(t&&!(t instanceof On))throw new TypeError("Invalid view.");if(null===(e=gt.license)||void 0===e?void 0:e.LicenseManager){if(!(null===(i=gt.license)||void 0===i?void 0:i.LicenseManager.bCallInitLicense))throw new Error("License is not set.");await vt.loadWasm(["license"]),await gt.license.dynamsoft()}const n=new bs(t);return bs.onWarning&&(location&&"file:"===location.protocol?setTimeout((()=>{bs.onWarning&&bs.onWarning({id:1,message:"The page is opened over file:// and Dynamsoft Camera Enhancer may not work properly. Please open the page via https://."})}),0):!1!==window.isSecureContext&&navigator&&navigator.mediaDevices&&navigator.mediaDevices.getUserMedia||setTimeout((()=>{bs.onWarning&&bs.onWarning({id:2,message:"Dynamsoft Camera Enhancer may not work properly in a non-secure context. Please open the page via https://."})}),0)),n}get video(){return this.cameraManager.getVideoEl()}set videoSrc(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraView&&(this.cameraView._hideDefaultSelection=!0),this.cameraManager.videoSrc=t}get videoSrc(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.videoSrc}set ifSaveLastUsedCamera(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraManager.ifSaveLastUsedCamera=t}get ifSaveLastUsedCamera(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.ifSaveLastUsedCamera}set ifSkipCameraInspection(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraManager.ifSkipCameraInspection=t}get ifSkipCameraInspection(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.ifSkipCameraInspection}set cameraOpenTimeout(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraManager.cameraOpenTimeout=t}get cameraOpenTimeout(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.cameraOpenTimeout}set singleFrameMode(t){if(!["disabled","image","camera"].includes(t))throw new Error("Invalid value.");if(this.isOpen())throw new Error("It is not allowed to change `singleFrameMode` when the camera is open.");Ge(this,rs,t,"f")}get singleFrameMode(){return Ve(this,rs,"f")}get _isFetchingStarted(){return Ve(this,cs,"f")}get disposed(){return Ve(this,ms,"f")}constructor(t){if(super(),$r.add(this),is.set(this,"closed"),ns.set(this,void 0),this.isTorchOn=void 0,rs.set(this,void 0),this._onCameraSelChange=async()=>{this.isOpen()&&this.cameraView&&!this.cameraView.disposed&&await this.selectCamera(this.cameraView._selCam.value)},this._onResolutionSelChange=async()=>{if(!this.isOpen())return;if(!this.cameraView||this.cameraView.disposed)return;let t,e;if(this.cameraView._selRsl&&-1!=this.cameraView._selRsl.selectedIndex){let i=this.cameraView._selRsl.options[this.cameraView._selRsl.selectedIndex];t=parseInt(i.getAttribute("data-width")),e=parseInt(i.getAttribute("data-height"))}await this.setResolution({width:t,height:e})},this._onCloseBtnClick=async()=>{this.isOpen()&&this.cameraView&&!this.cameraView.disposed&&this.close()},ss.set(this,((t,e,i,n)=>{const r=Date.now(),s={sx:n.x,sy:n.y,sWidth:n.width,sHeight:n.height,dWidth:n.width,dHeight:n.height},o=Math.max(s.dWidth,s.dHeight);if(this.canvasSizeLimit&&o>this.canvasSizeLimit){const t=this.canvasSizeLimit/o;s.dWidth>s.dHeight?(s.dWidth=this.canvasSizeLimit,s.dHeight=Math.round(s.dHeight*t)):(s.dWidth=Math.round(s.dWidth*t),s.dHeight=this.canvasSizeLimit)}const h=this.cameraManager.imageDataGetter.getImageData(t,s,{pixelFormat:this.getPixelFormat()===a.IPF_GRAYSCALED?Un.GREY:Un.RGBA});let l=null;if(h){const t=Date.now();let o;o=h.pixelFormat===Un.GREY?h.width:4*h.width;let a=!0;0===s.sx&&0===s.sy&&s.sWidth===e&&s.sHeight===i&&(a=!1),l={bytes:h.data,width:h.width,height:h.height,stride:o,format:Ss.get(h.pixelFormat),tag:{imageId:this._imageId==Number.MAX_VALUE?this._imageId=0:++this._imageId,type:Tt.ITT_FILE_IMAGE,isCropped:a,cropRegion:{left:n.x,top:n.y,right:n.x+n.width,bottom:n.y+n.height,isMeasuredInPercentage:!1},originalWidth:e,originalHeight:i,currentWidth:h.width,currentHeight:h.height,timeSpent:t-r,timeStamp:t},toCanvas:Ve(this,os,"f"),isDCEFrame:!0}}return l})),this._onSingleFrameAcquired=t=>{let e;e=this.cameraView?this.cameraView.getConvertedRegion():Mi.convert(Ve(this,hs,"f"),t.width,t.height),e||(e={x:0,y:0,width:t.width,height:t.height});const i=Ve(this,ss,"f").call(this,t,t.width,t.height,e);Ve(this,ns,"f").fire("singleFrameAcquired",[i],{async:!1,copy:!1})},os.set(this,(function(){if(!(this.bytes instanceof Uint8Array||this.bytes instanceof Uint8ClampedArray))throw new TypeError("Invalid bytes.");if("number"!=typeof this.width||this.width<=0)throw new Error("Invalid width.");if("number"!=typeof this.height||this.height<=0)throw new Error("Invalid height.");const t=document.createElement("canvas");let e;if(t.width=this.width,t.height=this.height,this.format===a.IPF_GRAYSCALED){e=new Uint8ClampedArray(this.width*this.height*4);for(let t=0;t{if(!this.video)return;const t=this.cameraManager.getSoftwareScale();if(t<1)throw new RangeError("Invalid scale value.");this.cameraView&&!this.cameraView.disposed?(this.video.style.transform=1===t?"":`scale(${t})`,this.cameraView._updateVideoContainer()):this.video.style.transform=1===t?"":`scale(${t})`},["iPhone","iPad","Android","HarmonyOS"].includes(je.OS)?this.cameraManager.setResolution(1280,720):this.cameraManager.setResolution(1920,1080),navigator&&navigator.mediaDevices&&navigator.mediaDevices.getUserMedia?this.singleFrameMode="disabled":this.singleFrameMode="image",t&&(this.setCameraView(t),t.cameraEnhancer=this),this._on("before:camera:change",(()=>{Ve(this,gs,"f").stopCharging();const t=this.cameraView;t&&!t.disposed&&(t._startLoading(),t.clearAllInnerDrawingItems())})),this._on("camera:changed",(()=>{this.clearBuffer()})),this._on("before:resolution:change",(()=>{const t=this.cameraView;t&&!t.disposed&&(t._startLoading(),t.clearAllInnerDrawingItems())})),this._on("resolution:changed",(()=>{this.clearBuffer(),t.eventHandler.fire("content:updated",null,{async:!1})})),this._on("paused",(()=>{Ve(this,gs,"f").stopCharging();const t=this.cameraView;t&&t.disposed})),this._on("resumed",(()=>{const t=this.cameraView;t&&t.disposed})),this._on("tapfocus",(()=>{Ve(this,ds,"f").tapToFocus&&Ve(this,gs,"f").startCharging()})),this._intermediateResultReceiver={},this._intermediateResultReceiver.onTaskResultsReceived=async(t,e)=>{var i,n,r,s;if(Ve(this,$r,"m",ps).call(this)||!this.isOpen()||this.isPaused())return;const o=t.intermediateResultUnits;bs._onLog&&(bs._onLog("intermediateResultUnits:"),bs._onLog(o));let a=!1,h=!1;for(let t of o){if(t.unitType===Ot.IRUT_DECODED_BARCODES&&t.decodedBarcodes.length){a=!0;break}t.unitType===Ot.IRUT_LOCALIZED_BARCODES&&t.localizedBarcodes.length&&(h=!0)}if(bs._onLog&&(bs._onLog("hasLocalizedBarcodes:"),bs._onLog(h)),Ve(this,ds,"f").autoZoom||Ve(this,ds,"f").enhancedFocus)if(a)Ve(this,fs,"f").autoZoomInFrameArray.length=0,Ve(this,fs,"f").autoZoomOutFrameCount=0,Ve(this,fs,"f").frameArrayInIdealZoom.length=0,Ve(this,fs,"f").autoFocusFrameArray.length=0;else{const e=async t=>{await this.setZoom(t),Ve(this,ds,"f").autoZoom&&Ve(this,gs,"f").startCharging()},a=async t=>{await this.setFocus(t),Ve(this,ds,"f").enhancedFocus&&Ve(this,gs,"f").startCharging()};if(h){const h=o[0].originalImageTag,l=(null===(i=h.cropRegion)||void 0===i?void 0:i.left)||0,c=(null===(n=h.cropRegion)||void 0===n?void 0:n.top)||0,u=(null===(r=h.cropRegion)||void 0===r?void 0:r.right)?h.cropRegion.right-l:h.originalWidth,d=(null===(s=h.cropRegion)||void 0===s?void 0:s.bottom)?h.cropRegion.bottom-c:h.originalHeight,f=h.currentWidth,g=h.currentHeight;let m;{let t,e,i,n,r;{const t=this.video.videoWidth*(1-Ve(this,fs,"f").autoZoomDetectionArea)/2,e=this.video.videoWidth*(1+Ve(this,fs,"f").autoZoomDetectionArea)/2,i=e,n=t,s=this.video.videoHeight*(1-Ve(this,fs,"f").autoZoomDetectionArea)/2,o=s,a=this.video.videoHeight*(1+Ve(this,fs,"f").autoZoomDetectionArea)/2;r=[{x:t,y:s},{x:e,y:o},{x:i,y:a},{x:n,y:a}]}bs._onLog&&(bs._onLog("detectionArea:"),bs._onLog(r));const s=[];{const t=(t,e)=>{const i=(t,e)=>{if(!t&&!e)throw new Error("Invalid arguments.");return function(t,e,i){let n=!1;const r=t.length;if(r<=2)return!1;for(let s=0;s0!=Ni(a.y-i)>0&&Ni(e-(i-o.y)*(o.x-a.x)/(o.y-a.y)-o.x)<0&&(n=!n)}return n}(e,t.x,t.y)},n=(t,e)=>!!(ji([t[0],t[1]],[t[2],t[3]],[e[0].x,e[0].y],[e[1].x,e[1].y])||ji([t[0],t[1]],[t[2],t[3]],[e[1].x,e[1].y],[e[2].x,e[2].y])||ji([t[0],t[1]],[t[2],t[3]],[e[2].x,e[2].y],[e[3].x,e[3].y])||ji([t[0],t[1]],[t[2],t[3]],[e[3].x,e[3].y],[e[0].x,e[0].y]));return!!(i({x:t[0].x,y:t[0].y},e)||i({x:t[1].x,y:t[1].y},e)||i({x:t[2].x,y:t[2].y},e)||i({x:t[3].x,y:t[3].y},e))||!!(i({x:e[0].x,y:e[0].y},t)||i({x:e[1].x,y:e[1].y},t)||i({x:e[2].x,y:e[2].y},t)||i({x:e[3].x,y:e[3].y},t))||!!(n([e[0].x,e[0].y,e[1].x,e[1].y],t)||n([e[1].x,e[1].y,e[2].x,e[2].y],t)||n([e[2].x,e[2].y,e[3].x,e[3].y],t)||n([e[3].x,e[3].y,e[0].x,e[0].y],t))};for(let e of o)if(e.unitType===Ot.IRUT_LOCALIZED_BARCODES)for(let i of e.localizedBarcodes){if(!i)continue;const e=i.location.points;e.forEach((t=>{On._transformCoordinates(t,l,c,u,d,f,g)})),t(r,e)&&s.push(i)}if(bs._debug&&this.cameraView){const t=this.__layer||(this.__layer=this.cameraView._createDrawingLayer(99));t.clearDrawingItems();const e=this.__styleId2||(this.__styleId2=En.createDrawingStyle({strokeStyle:"red"}));for(let i of o)if(i.unitType===Ot.IRUT_LOCALIZED_BARCODES)for(let n of i.localizedBarcodes){if(!n)continue;const i=n.location.points,r=new Ci({points:i},e);t.addDrawingItems([r])}}}if(bs._onLog&&(bs._onLog("intersectedResults:"),bs._onLog(s)),!s.length)return;let a;if(s.length){let t=s.filter((t=>t.possibleFormats==Ts.BF_QR_CODE||t.possibleFormats==Ts.BF_DATAMATRIX));if(t.length||(t=s.filter((t=>t.possibleFormats==Ts.BF_ONED)),t.length||(t=s)),t.length){const e=t=>{const e=t.location.points,i=(e[0].x+e[1].x+e[2].x+e[3].x)/4,n=(e[0].y+e[1].y+e[2].y+e[3].y)/4;return(i-f/2)*(i-f/2)+(n-g/2)*(n-g/2)};a=t[0];let i=e(a);if(1!=t.length)for(let n=1;n1.1*a.confidence||t[n].confidence>.9*a.confidence&&ri&&s>i&&o>i&&h>i&&m.result.moduleSize{})),Ve(this,fs,"f").autoZoomInFrameArray.filter((t=>!0===t)).length>=Ve(this,fs,"f").autoZoomInFrameLimit[1]){Ve(this,fs,"f").autoZoomInFrameArray.length=0;const i=[(.5-n)/(.5-r),(.5-n)/(.5-s),(.5-n)/(.5-o),(.5-n)/(.5-h)].filter((t=>t>0)),a=Math.min(...i,Ve(this,fs,"f").autoZoomInIdealModuleSize/m.result.moduleSize),l=this.getZoomSettings().factor;let c=Math.max(Math.pow(l*a,1/Ve(this,fs,"f").autoZoomInMaxTimes),Ve(this,fs,"f").autoZoomInMinStep);c=Math.min(c,a);let u=l*c;u=Math.max(Ve(this,fs,"f").minValue,u),u=Math.min(Ve(this,fs,"f").maxValue,u);try{await e({factor:u})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}}else if(Ve(this,fs,"f").autoZoomInFrameArray.length=0,Ve(this,fs,"f").frameArrayInIdealZoom.push(!0),Ve(this,fs,"f").frameArrayInIdealZoom.splice(0,Ve(this,fs,"f").frameArrayInIdealZoom.length-Ve(this,fs,"f").frameLimitInIdealZoom[0]),Ve(this,fs,"f").frameArrayInIdealZoom.filter((t=>!0===t)).length>=Ve(this,fs,"f").frameLimitInIdealZoom[1]&&(Ve(this,fs,"f").frameArrayInIdealZoom.length=0,Ve(this,ds,"f").enhancedFocus)){const e=m.points;try{await a({mode:"manual",area:{centerPoint:{x:(e[0].x+e[2].x)/2+"px",y:(e[0].y+e[2].y)/2+"px"},width:e[2].x-e[0].x+"px",height:e[2].y-e[0].y+"px"}})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}}if(!Ve(this,ds,"f").autoZoom&&Ve(this,ds,"f").enhancedFocus&&(Ve(this,fs,"f").autoFocusFrameArray.push(!0),Ve(this,fs,"f").autoFocusFrameArray.splice(0,Ve(this,fs,"f").autoFocusFrameArray.length-Ve(this,fs,"f").autoFocusFrameLimit[0]),Ve(this,fs,"f").autoFocusFrameArray.filter((t=>!0===t)).length>=Ve(this,fs,"f").autoFocusFrameLimit[1])){Ve(this,fs,"f").autoFocusFrameArray.length=0;try{const t=m.points;await a({mode:"manual",area:{centerPoint:{x:(t[0].x+t[2].x)/2+"px",y:(t[0].y+t[2].y)/2+"px"},width:t[2].x-t[0].x+"px",height:t[2].y-t[0].y+"px"}})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}}else{if(Ve(this,ds,"f").autoZoom){if(Ve(this,fs,"f").autoZoomInFrameArray.push(!1),Ve(this,fs,"f").autoZoomInFrameArray.splice(0,Ve(this,fs,"f").autoZoomInFrameArray.length-Ve(this,fs,"f").autoZoomInFrameLimit[0]),Ve(this,fs,"f").autoZoomOutFrameCount++,Ve(this,fs,"f").frameArrayInIdealZoom.push(!1),Ve(this,fs,"f").frameArrayInIdealZoom.splice(0,Ve(this,fs,"f").frameArrayInIdealZoom.length-Ve(this,fs,"f").frameLimitInIdealZoom[0]),Ve(this,fs,"f").autoZoomOutFrameCount>=Ve(this,fs,"f").autoZoomOutFrameLimit){Ve(this,fs,"f").autoZoomOutFrameCount=0;const i=this.getZoomSettings().factor;let n=i-Math.max((i-1)*Ve(this,fs,"f").autoZoomOutStepRate,Ve(this,fs,"f").autoZoomOutMinStep);n=Math.max(Ve(this,fs,"f").minValue,n),n=Math.min(Ve(this,fs,"f").maxValue,n);try{await e({factor:n})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}Ve(this,ds,"f").enhancedFocus&&a({mode:"continuous"}).catch((()=>{}))}!Ve(this,ds,"f").autoZoom&&Ve(this,ds,"f").enhancedFocus&&(Ve(this,fs,"f").autoFocusFrameArray.length=0,a({mode:"continuous"}).catch((()=>{})))}}},Ge(this,gs,new Cs(1e4),"f")}setCameraView(t){if(!(t instanceof On))throw new TypeError("Invalid view.");if(t.disposed)throw new Error("The camera view has been disposed.");if(this.isOpen())throw new Error("It is not allowed to change camera view when the camera is open.");this.releaseCameraView(),t._singleFrameMode=this.singleFrameMode,t._onSingleFrameAcquired=this._onSingleFrameAcquired,this.videoSrc&&(this.cameraView._hideDefaultSelection=!0),Ve(this,$r,"m",ps).call(this)||this.cameraManager.setVideoEl(t.getVideoElement()),this.cameraView=t,this.addListenerToView()}getCameraView(){return this.cameraView}releaseCameraView(){this.cameraView&&(this.removeListenerFromView(),this.cameraView.disposed||(this.cameraView._singleFrameMode="disabled",this.cameraView._onSingleFrameAcquired=null,this.cameraView._hideDefaultSelection=!1),this.cameraManager.releaseVideoEl(),this.cameraView=null)}addListenerToView(){if(!this.cameraView)return;if(this.cameraView.disposed)throw new Error("'cameraView' has been disposed.");const t=this.cameraView;Ve(this,$r,"m",ps).call(this)||this.videoSrc||(t._innerComponent&&(this.cameraManager.tapFocusEventBoundEl=t._innerComponent),t._selCam&&t._selCam.addEventListener("change",this._onCameraSelChange),t._selRsl&&t._selRsl.addEventListener("change",this._onResolutionSelChange)),t._btnClose&&t._btnClose.addEventListener("click",this._onCloseBtnClick)}removeListenerFromView(){if(!this.cameraView||this.cameraView.disposed)return;const t=this.cameraView;this.cameraManager.tapFocusEventBoundEl=null,t._selCam&&t._selCam.removeEventListener("change",this._onCameraSelChange),t._selRsl&&t._selRsl.removeEventListener("change",this._onResolutionSelChange),t._btnClose&&t._btnClose.removeEventListener("click",this._onCloseBtnClick)}getCameraState(){return Ve(this,$r,"m",ps).call(this)?Ve(this,is,"f"):new Map([["closed","closed"],["opening","opening"],["opened","open"]]).get(this.cameraManager.state)}isOpen(){return"open"===this.getCameraState()}getVideoEl(){return this.video}async open(){const t=this.cameraView;if(null==t?void 0:t.disposed)throw new Error("'cameraView' has been disposed.");t&&(t._singleFrameMode=this.singleFrameMode,Ve(this,$r,"m",ps).call(this)?t._clickIptSingleFrameMode():(this.cameraManager.setVideoEl(t.getVideoElement()),t._startLoading()));let e={width:0,height:0,deviceId:""};if(Ve(this,$r,"m",ps).call(this));else{try{await this.cameraManager.open()}catch(e){throw t&&t._stopLoading(),"NotFoundError"===e.name?new Error(`No camera devices were detected. Please ensure a camera is connected and recognized by your system. ${null==e?void 0:e.name}: ${null==e?void 0:e.message}`):"NotAllowedError"===e.name?new Error(`Camera access is blocked. Please check your browser settings or grant permission to use the camera. ${null==e?void 0:e.name}: ${null==e?void 0:e.message}`):e}let i,n=t.getUIElement();if(n=n.shadowRoot||n,i=n.querySelector(".dce-macro-use-mobile-native-like-ui")){let t=n.elTorchAuto=n.querySelector(".dce-mn-torch-auto"),e=n.elTorchOn=n.querySelector(".dce-mn-torch-on"),r=n.elTorchOff=n.querySelector(".dce-mn-torch-off");t&&(e.style.display=null==this.isTorchOn?"":"none"),e&&(e.style.display=1==this.isTorchOn?"":"none"),r&&(r.style.display=0==this.isTorchOn?"":"none");let s=n.elBeepOn=n.querySelector(".dce-mn-beep-on"),o=n.elBeepOff=n.querySelector(".dce-mn-beep-off");s&&(s.style.display=Es.allowBeep?"":"none"),o&&(o.style.display=Es.allowBeep?"none":"");let a=n.elVibrateOn=n.querySelector(".dce-mn-vibrate-on"),h=n.elVibrateOff=n.querySelector(".dce-mn-vibrate-off");a&&(a.style.display=Es.allowVibrate?"":"none"),h&&(h.style.display=Es.allowVibrate?"none":""),n.elResolutionBox=n.querySelector(".dce-mn-resolution-box");let l,c=n.elZoom=n.querySelector(".dce-mn-zoom");c&&(c.style.display="none",l=n.elZoomSpan=c.querySelector("span"));let u=n.elToast=n.querySelector(".dce-mn-toast"),d=n.elCameraClose=n.querySelector(".dce-mn-camera-close"),f=n.elTakePhoto=n.querySelector(".dce-mn-take-photo"),g=n.elCameraSwitch=n.querySelector(".dce-mn-camera-switch"),m=n.elCameraAndResolutionSettings=n.querySelector(".dce-mn-camera-and-resolution-settings");m&&(m.style.display="none");const p=n.dceMnFs={},_=()=>{this.turnOnTorch()};null==t||t.addEventListener("pointerdown",_);const v=()=>{this.turnOffTorch()};null==e||e.addEventListener("pointerdown",v);const y=()=>{this.turnAutoTorch()};null==r||r.addEventListener("pointerdown",y);const w=()=>{Es.allowBeep=!Es.allowBeep,s&&(s.style.display=Es.allowBeep?"":"none"),o&&(o.style.display=Es.allowBeep?"none":"")};for(let t of[o,s])null==t||t.addEventListener("pointerdown",w);const C=()=>{Es.allowVibrate=!Es.allowVibrate,a&&(a.style.display=Es.allowVibrate?"":"none"),h&&(h.style.display=Es.allowVibrate?"none":"")};for(let t of[h,a])null==t||t.addEventListener("pointerdown",C);const E=async t=>{let e,i=t.target;if(e=i.closest(".dce-mn-camera-option"))this.selectCamera(e.getAttribute("data-davice-id"));else if(e=i.closest(".dce-mn-resolution-option")){let t,i=parseInt(e.getAttribute("data-width")),n=parseInt(e.getAttribute("data-height")),r=await this.setResolution({width:i,height:n});{let e=Math.max(r.width,r.height),i=Math.min(r.width,r.height);t=i<=1080?i+"P":e<3e3?"2K":Math.round(e/1e3)+"K"}t!=e.textContent&&b(`Fallback to ${t}`)}else i.closest(".dce-mn-camera-and-resolution-settings")||(i.closest(".dce-mn-resolution-box")?m&&(m.style.display=m.style.display?"":"none"):m&&""===m.style.display&&(m.style.display="none"))};n.addEventListener("click",E);let S=null;p.funcInfoZoomChange=(t,e=3e3)=>{c&&l&&(l.textContent=t.toFixed(1),c.style.display="",null!=S&&(clearTimeout(S),S=null),S=setTimeout((()=>{c.style.display="none",S=null}),e))};let T=null,b=p.funcShowToast=(t,e=3e3)=>{u&&(u.textContent=t,u.style.display="",null!=T&&(clearTimeout(T),T=null),T=setTimeout((()=>{u.style.display="none",T=null}),e))};const I=()=>{this.close()};null==d||d.addEventListener("click",I);const x=()=>{};null==f||f.addEventListener("pointerdown",x);const O=()=>{var t,e;let i,n=this.getVideoSettings(),r=n.video.facingMode,s=null===(e=null===(t=this.cameraManager.getCamera())||void 0===t?void 0:t.label)||void 0===e?void 0:e.toLowerCase(),o=null==s?void 0:s.indexOf("front");-1===o&&(o=null==s?void 0:s.indexOf("前"));let a=null==s?void 0:s.indexOf("back");-1===a&&(a=null==s?void 0:s.indexOf("后")),"number"==typeof o&&-1!==o?i=!0:"number"==typeof a&&-1!==a&&(i=!1),void 0===i&&(i="user"===((null==r?void 0:r.ideal)||(null==r?void 0:r.exact)||r)),n.video.facingMode={ideal:i?"environment":"user"},delete n.video.deviceId,this.updateVideoSettings(n)};null==g||g.addEventListener("pointerdown",O);let A=-1/0,R=1;const D=t=>{let e=Date.now();e-A>1e3&&(R=this.getZoomSettings().factor),R-=t.deltaY/200,R>20&&(R=20),R<1&&(R=1),this.setZoom({factor:R}),A=e};i.addEventListener("wheel",D);const L=new Map;let M=!1;const F=async t=>{var e;for(t.touches.length>=2&&"touchmove"==t.type&&t.preventDefault();t.changedTouches.length>1&&2==t.touches.length;){let i=t.touches[0],n=t.touches[1],r=L.get(i.identifier),s=L.get(n.identifier);if(!r||!s)break;let o=Math.pow(Math.pow(r.x-s.x,2)+Math.pow(r.y-s.y,2),.5),a=Math.pow(Math.pow(i.clientX-n.clientX,2)+Math.pow(i.clientY-n.clientY,2),.5),h=Date.now();if(M||h-A<100)return;h-A>1e3&&(R=this.getZoomSettings().factor),R*=a/o,R>20&&(R=20),R<1&&(R=1);let l=!1;"safari"==(null===(e=null==je?void 0:je.browser)||void 0===e?void 0:e.toLocaleLowerCase())&&(a/o>1&&R<2?(R=2,l=!0):a/o<1&&R<2&&(R=1,l=!0)),M=!0,l&&b("zooming..."),await this.setZoom({factor:R}),l&&(u.textContent=""),M=!1,A=Date.now();break}L.clear();for(let e of t.touches)L.set(e.identifier,{x:e.clientX,y:e.clientY})};n.addEventListener("touchstart",F),n.addEventListener("touchmove",F),n.addEventListener("touchend",F),n.addEventListener("touchcancel",F),p.unbind=()=>{null==t||t.removeEventListener("pointerdown",_),null==e||e.removeEventListener("pointerdown",v),null==r||r.removeEventListener("pointerdown",y);for(let t of[o,s])null==t||t.removeEventListener("pointerdown",w);for(let t of[h,a])null==t||t.removeEventListener("pointerdown",C);n.removeEventListener("click",E),null==d||d.removeEventListener("click",I),null==f||f.removeEventListener("pointerdown",x),null==g||g.removeEventListener("pointerdown",O),i.removeEventListener("wheel",D),n.removeEventListener("touchstart",F),n.removeEventListener("touchmove",F),n.removeEventListener("touchend",F),n.removeEventListener("touchcancel",F),delete n.dceMnFs,i.style.display="none"},i.style.display="",t&&null==this.isTorchOn&&setTimeout((()=>{this.turnAutoTorch(1e3)}),0)}this.isTorchOn&&this.turnOnTorch().catch((()=>{}));const r=this.getResolution();e.width=r.width,e.height=r.height,e.deviceId=this.getSelectedCamera().deviceId}return Ge(this,is,"open","f"),t&&(t._innerComponent.style.display="",Ve(this,$r,"m",ps).call(this)||(t._stopLoading(),t._renderCamerasInfo(this.getSelectedCamera(),this.cameraManager._arrCameras),t._renderResolutionInfo({width:e.width,height:e.height}),t.eventHandler.fire("content:updated",null,{async:!1}),t.eventHandler.fire("videoEl:resized",null,{async:!1}))),Ve(this,ns,"f").fire("opened",null,{target:this,async:!1}),e}close(){var t;const e=this.cameraView;if(null==e?void 0:e.disposed)throw new Error("'cameraView' has been disposed.");if(this.stopFetching(),this.clearBuffer(),Ve(this,$r,"m",ps).call(this));else{this.cameraManager.close();let i=e.getUIElement();i=i.shadowRoot||i,i.querySelector(".dce-macro-use-mobile-native-like-ui")&&(null===(t=i.dceMnFs)||void 0===t||t.unbind())}Ge(this,is,"closed","f"),Ve(this,gs,"f").stopCharging(),e&&(e._innerComponent.style.display="none",Ve(this,$r,"m",ps).call(this)&&e._innerComponent.removeElement("content"),e._stopLoading()),Ve(this,ns,"f").fire("closed",null,{target:this,async:!1})}pause(){if(Ve(this,$r,"m",ps).call(this))throw new Error("'pause()' is invalid in 'singleFrameMode'.");this.cameraManager.pause()}isPaused(){var t;return!Ve(this,$r,"m",ps).call(this)&&!0===(null===(t=this.video)||void 0===t?void 0:t.paused)}async resume(){if(Ve(this,$r,"m",ps).call(this))throw new Error("'resume()' is invalid in 'singleFrameMode'.");await this.cameraManager.resume()}async selectCamera(t){if(!t)throw new Error("Invalid value.");let e;e="string"==typeof t?t:t.deviceId,await this.cameraManager.setCamera(e),this.isTorchOn=!1;const i=this.getResolution(),n=this.cameraView;return n&&!n.disposed&&(n._stopLoading(),n._renderCamerasInfo(this.getSelectedCamera(),this.cameraManager._arrCameras),n._renderResolutionInfo({width:i.width,height:i.height})),{width:i.width,height:i.height,deviceId:this.getSelectedCamera().deviceId}}getSelectedCamera(){return this.cameraManager.getCamera()}async getAllCameras(){return this.cameraManager.getCameras()}async setResolution(t){await this.cameraManager.setResolution(t.width,t.height),this.isTorchOn&&this.turnOnTorch().catch((()=>{}));const e=this.getResolution(),i=this.cameraView;return i&&!i.disposed&&(i._stopLoading(),i._renderResolutionInfo({width:e.width,height:e.height})),{width:e.width,height:e.height,deviceId:this.getSelectedCamera().deviceId}}getResolution(){return this.cameraManager.getResolution()}getAvailableResolutions(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getResolutions()}_on(t,e){["opened","closed","singleframeacquired","frameaddedtobuffer"].includes(t.toLowerCase())?Ve(this,ns,"f").on(t,e):this.cameraManager.on(t,e)}_off(t,e){["opened","closed","singleframeacquired","frameaddedtobuffer"].includes(t.toLowerCase())?Ve(this,ns,"f").off(t,e):this.cameraManager.off(t,e)}on(t,e){const i=t.toLowerCase(),n=new Map([["cameraopen","opened"],["cameraclose","closed"],["camerachange","camera:changed"],["resolutionchange","resolution:changed"],["played","played"],["singleframeacquired","singleFrameAcquired"],["frameaddedtobuffer","frameAddedToBuffer"]]).get(i);if(!n)throw new Error("Invalid event.");this._on(n,e)}off(t,e){const i=t.toLowerCase(),n=new Map([["cameraopen","opened"],["cameraclose","closed"],["camerachange","camera:changed"],["resolutionchange","resolution:changed"],["played","played"],["singleframeacquired","singleFrameAcquired"],["frameaddedtobuffer","frameAddedToBuffer"]]).get(i);if(!n)throw new Error("Invalid event.");this._off(n,e)}getVideoSettings(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getMediaStreamConstraints()}async updateVideoSettings(t){var e;await(null===(e=this.cameraManager)||void 0===e?void 0:e.setMediaStreamConstraints(t,!0))}getCapabilities(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getCameraCapabilities()}getCameraSettings(){return this.cameraManager.getCameraSettings()}async turnOnTorch(){var t,e;if(Ve(this,$r,"m",ps).call(this))throw new Error("'turnOnTorch()' is invalid in 'singleFrameMode'.");try{await(null===(t=this.cameraManager)||void 0===t?void 0:t.turnOnTorch())}catch(t){let i=this.cameraView.getUIElement();throw i=i.shadowRoot||i,null===(e=null==i?void 0:i.dceMnFs)||void 0===e||e.funcShowToast("Torch Not Supported"),t}this.isTorchOn=!0;let i=this.cameraView.getUIElement();i=i.shadowRoot||i,i.elTorchAuto&&(i.elTorchAuto.style.display="none"),i.elTorchOn&&(i.elTorchOn.style.display=""),i.elTorchOff&&(i.elTorchOff.style.display="none")}async turnOffTorch(){var t;if(Ve(this,$r,"m",ps).call(this))throw new Error("'turnOffTorch()' is invalid in 'singleFrameMode'.");await(null===(t=this.cameraManager)||void 0===t?void 0:t.turnOffTorch()),this.isTorchOn=!1;let e=this.cameraView.getUIElement();e=e.shadowRoot||e,e.elTorchAuto&&(e.elTorchAuto.style.display="none"),e.elTorchOn&&(e.elTorchOn.style.display="none"),e.elTorchOff&&(e.elTorchOff.style.display="")}async turnAutoTorch(t=250){if(null!=this._taskid4AutoTorch){if(!(t{var t,r,s;if(this.disposed||e||null!=this.isTorchOn||!this.isOpen())return clearInterval(this._taskid4AutoTorch),void(this._taskid4AutoTorch=null);if(this.isPaused())return;if(++n>10&&this._delay4AutoTorch<1e3)return clearInterval(this._taskid4AutoTorch),this._taskid4AutoTorch=null,void this.turnAutoTorch(1e3);let o;try{o=this.fetchImage()}catch(t){}if(!o||!o.width||!o.height)return;let h=0;if(a.IPF_GRAYSCALED===o.format){for(let t=0;t=this.maxDarkCount4AutoTroch){null===(t=bs._onLog)||void 0===t||t.call(bs,`darkCount ${i}`);try{await this.turnOnTorch(),this.isTorchOn=!0;let t=this.cameraView.getUIElement();t=t.shadowRoot||t,null===(r=null==t?void 0:t.dceMnFs)||void 0===r||r.funcShowToast("Torch Auto On")}catch(t){console.warn(t),e=!0;let i=this.cameraView.getUIElement();i=i.shadowRoot||i,null===(s=null==i?void 0:i.dceMnFs)||void 0===s||s.funcShowToast("Torch Not Supported")}}}else i=0};this._taskid4AutoTorch=setInterval(r,t),this.isTorchOn=void 0,r();let s=this.cameraView.getUIElement();s=s.shadowRoot||s,s.elTorchAuto&&(s.elTorchAuto.style.display=""),s.elTorchOn&&(s.elTorchOn.style.display="none"),s.elTorchOff&&(s.elTorchOff.style.display="none")}async setColorTemperature(t){if(Ve(this,$r,"m",ps).call(this))throw new Error("'setColorTemperature()' is invalid in 'singleFrameMode'.");await this.cameraManager.setColorTemperature(t,!0)}getColorTemperature(){return this.cameraManager.getColorTemperature()}async setExposureCompensation(t){var e;if(Ve(this,$r,"m",ps).call(this))throw new Error("'setExposureCompensation()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setExposureCompensation(t,!0))}getExposureCompensation(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getExposureCompensation()}async _setZoom(t){var e,i,n;if(Ve(this,$r,"m",ps).call(this))throw new Error("'setZoom()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setZoom(t));{let e=null===(i=this.cameraView)||void 0===i?void 0:i.getUIElement();e=(null==e?void 0:e.shadowRoot)||e,null===(n=null==e?void 0:e.dceMnFs)||void 0===n||n.funcInfoZoomChange(t.factor)}}async setZoom(t){await this._setZoom(t)}getZoomSettings(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getZoom()}async resetZoom(){var t;if(Ve(this,$r,"m",ps).call(this))throw new Error("'resetZoom()' is invalid in 'singleFrameMode'.");await(null===(t=this.cameraManager)||void 0===t?void 0:t.resetZoom())}async setFrameRate(t){var e;if(Ve(this,$r,"m",ps).call(this))throw new Error("'setFrameRate()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setFrameRate(t,!0))}getFrameRate(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getFrameRate()}async setFocus(t){var e;if(Ve(this,$r,"m",ps).call(this))throw new Error("'setFocus()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setFocus(t,!0))}getFocusSettings(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getFocus()}setAutoZoomRange(t){Ve(this,fs,"f").minValue=t.min,Ve(this,fs,"f").maxValue=t.max}getAutoZoomRange(){return{min:Ve(this,fs,"f").minValue,max:Ve(this,fs,"f").maxValue}}async enableEnhancedFeatures(t){var e,i;if(!(null===(i=null===(e=gt.license)||void 0===e?void 0:e.LicenseManager)||void 0===i?void 0:i.bPassValidation))throw new Error("License is not verified, or license is invalid.");if(0!==vt.bSupportDce4Module)throw new Error("Please set a license containing the DCE module.");t&$e.EF_ENHANCED_FOCUS&&(Ve(this,ds,"f").enhancedFocus=!0),t&$e.EF_AUTO_ZOOM&&(Ve(this,ds,"f").autoZoom=!0),t&$e.EF_TAP_TO_FOCUS&&(Ve(this,ds,"f").tapToFocus=!0,this.cameraManager.enableTapToFocus())}disableEnhancedFeatures(t){t&$e.EF_ENHANCED_FOCUS&&(Ve(this,ds,"f").enhancedFocus=!1,this.setFocus({mode:"continuous"}).catch((()=>{}))),t&$e.EF_AUTO_ZOOM&&(Ve(this,ds,"f").autoZoom=!1,this.resetZoom().catch((()=>{}))),t&$e.EF_TAP_TO_FOCUS&&(Ve(this,ds,"f").tapToFocus=!1,this.cameraManager.disableTapToFocus()),Ve(this,$r,"m",vs).call(this)&&Ve(this,$r,"m",_s).call(this)||Ve(this,gs,"f").stopCharging()}_setScanRegion(t){if(null!=t&&!E(t)&&!O(t))throw TypeError("Invalid 'region'.");Ge(this,hs,t?JSON.parse(JSON.stringify(t)):null,"f"),this.cameraView&&!this.cameraView.disposed&&this.cameraView.setScanRegion(t)}setScanRegion(t){this._setScanRegion(t),this.cameraView&&!this.cameraView.disposed&&(null===t?this.cameraView.setScanRegionMaskVisible(!1):this.cameraView.setScanRegionMaskVisible(!0))}getScanRegion(){return JSON.parse(JSON.stringify(Ve(this,hs,"f")))}setErrorListener(t){if(!t)throw new TypeError("Invalid 'listener'");Ge(this,as,t,"f")}hasNextImageToFetch(){return!("open"!==this.getCameraState()||!this.cameraManager.isVideoLoaded()||Ve(this,$r,"m",ps).call(this))}startFetching(){if(Ve(this,$r,"m",ps).call(this))throw Error("'startFetching()' is unavailable in 'singleFrameMode'.");Ve(this,cs,"f")||(Ge(this,cs,!0,"f"),Ve(this,$r,"m",ys).call(this))}stopFetching(){Ve(this,cs,"f")&&(bs._onLog&&bs._onLog("DCE: stop fetching loop: "+Date.now()),Ve(this,us,"f")&&clearTimeout(Ve(this,us,"f")),Ge(this,cs,!1,"f"))}fetchImage(){if(Ve(this,$r,"m",ps).call(this))throw new Error("'fetchImage()' is unavailable in 'singleFrameMode'.");if(!this.video)throw new Error("The video element does not exist.");if(4!==this.video.readyState)throw new Error("The video is not loaded.");const t=this.getResolution();if(!(null==t?void 0:t.width)||!(null==t?void 0:t.height))throw new Error("The video is not loaded.");let e;if(e=Mi.convert(Ve(this,hs,"f"),t.width,t.height),e||(e={x:0,y:0,width:t.width,height:t.height}),e.x>t.width||e.y>t.height)throw new Error("Invalid scan region.");e.x+e.width>t.width&&(e.width=t.width-e.x),e.y+e.height>t.height&&(e.height=t.height-e.y);const i={sx:e.x,sy:e.y,sWidth:e.width,sHeight:e.height,dWidth:e.width,dHeight:e.height},n=Math.max(i.dWidth,i.dHeight);if(this.canvasSizeLimit&&n>this.canvasSizeLimit){const t=this.canvasSizeLimit/n;i.dWidth>i.dHeight?(i.dWidth=this.canvasSizeLimit,i.dHeight=Math.round(i.dHeight*t)):(i.dWidth=Math.round(i.dWidth*t),i.dHeight=this.canvasSizeLimit)}const r=this.cameraManager.getFrameData({position:i,pixelFormat:this.getPixelFormat()===a.IPF_GRAYSCALED?Un.GREY:Un.RGBA});if(!r)return null;let s;s=r.pixelFormat===Un.GREY?r.width:4*r.width;let o=!0;return 0===i.sx&&0===i.sy&&i.sWidth===t.width&&i.sHeight===t.height&&(o=!1),{bytes:r.data,width:r.width,height:r.height,stride:s,format:Ss.get(r.pixelFormat),tag:{imageId:this._imageId==Number.MAX_VALUE?this._imageId=0:++this._imageId,type:Tt.ITT_VIDEO_FRAME,isCropped:o,cropRegion:{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height,isMeasuredInPercentage:!1},originalWidth:t.width,originalHeight:t.height,currentWidth:r.width,currentHeight:r.height,timeSpent:r.timeSpent,timeStamp:r.timeStamp},toCanvas:Ve(this,os,"f"),isDCEFrame:!0}}setImageFetchInterval(t){this.fetchInterval=t,Ve(this,cs,"f")&&(Ve(this,us,"f")&&clearTimeout(Ve(this,us,"f")),Ge(this,us,setTimeout((()=>{this.disposed||Ve(this,$r,"m",ys).call(this)}),t),"f"))}getImageFetchInterval(){return this.fetchInterval}setPixelFormat(t){Ge(this,ls,t,"f")}getPixelFormat(){return Ve(this,ls,"f")}takePhoto(t){if(!this.isOpen())throw new Error("Not open.");if(Ve(this,$r,"m",ps).call(this))throw new Error("'takePhoto()' is unavailable in 'singleFrameMode'.");const e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("accept",".jpg,.jpeg,.icon,.gif,.svg,.webp,.png,.bmp"),e.setAttribute("capture",""),e.style.position="absolute",e.style.top="-9999px",e.style.backgroundColor="transparent",e.style.color="transparent",e.addEventListener("click",(()=>{const t=this.isOpen();this.close(),window.addEventListener("focus",(()=>{t&&this.open(),e.remove()}),{once:!0})})),e.addEventListener("change",(async()=>{const i=e.files[0],n=await(async t=>{let e=null,i=null;if("undefined"!=typeof createImageBitmap)try{if(e=await createImageBitmap(t),e)return e}catch(t){}var n;return e||(i=await(n=t,new Promise(((t,e)=>{let i=URL.createObjectURL(n),r=new Image;r.src=i,r.onload=()=>{URL.revokeObjectURL(r.src),t(r)},r.onerror=t=>{e(new Error("Can't convert blob to image : "+(t instanceof Event?t.type:t)))}})))),i})(i),r=n instanceof HTMLImageElement?n.naturalWidth:n.width,s=n instanceof HTMLImageElement?n.naturalHeight:n.height;let o=Mi.convert(Ve(this,hs,"f"),r,s);o||(o={x:0,y:0,width:r,height:s});const a=Ve(this,ss,"f").call(this,n,r,s,o);t&&t(a)})),document.body.appendChild(e),e.click()}convertToPageCoordinates(t){const e=Ve(this,$r,"m",ws).call(this,t);return{x:e.pageX,y:e.pageY}}convertToClientCoordinates(t){const e=Ve(this,$r,"m",ws).call(this,t);return{x:e.clientX,y:e.clientY}}convertToScanRegionCoordinates(t){if(!Ve(this,hs,"f"))return JSON.parse(JSON.stringify(t));let e,i,n=Ve(this,hs,"f").left||Ve(this,hs,"f").x||0,r=Ve(this,hs,"f").top||Ve(this,hs,"f").y||0;if(!Ve(this,hs,"f").isMeasuredInPercentage)return{x:t.x-n,y:t.y-r};if(!this.cameraView)throw new Error("Camera view is not set.");if(this.cameraView.disposed)throw new Error("'cameraView' has been disposed.");if(!this.isOpen())throw new Error("Not open.");if(!Ve(this,$r,"m",ps).call(this)&&!this.cameraManager.isVideoLoaded())throw new Error("Video is not loaded.");if(Ve(this,$r,"m",ps).call(this)&&!this.cameraView._cvsSingleFrameMode)throw new Error("No image is selected.");if(Ve(this,$r,"m",ps).call(this)){const t=this.cameraView._innerComponent.getElement("content");e=t.width,i=t.height}else{const t=this.getVideoEl();e=t.videoWidth,i=t.videoHeight}return{x:t.x-Math.round(n*e/100),y:t.y-Math.round(r*i/100)}}dispose(){this.close(),this.cameraManager.dispose(),this.releaseCameraView(),Ge(this,ms,!0,"f")}}var Is,xs,Os,As,Rs,Ds,Ls,Ms;ts=bs,is=new WeakMap,ns=new WeakMap,rs=new WeakMap,ss=new WeakMap,os=new WeakMap,as=new WeakMap,hs=new WeakMap,ls=new WeakMap,cs=new WeakMap,us=new WeakMap,ds=new WeakMap,fs=new WeakMap,gs=new WeakMap,ms=new WeakMap,$r=new WeakSet,ps=function(){return"disabled"!==this.singleFrameMode},_s=function(){return!this.videoSrc&&"opened"===this.cameraManager.state},vs=function(){for(let t in Ve(this,ds,"f"))if(1==Ve(this,ds,"f")[t])return!0;return!1},ys=function t(){if(this.disposed)return;if("open"!==this.getCameraState()||!Ve(this,cs,"f"))return Ve(this,us,"f")&&clearTimeout(Ve(this,us,"f")),void Ge(this,us,setTimeout((()=>{this.disposed||Ve(this,$r,"m",t).call(this)}),this.fetchInterval),"f");const e=()=>{var t;let e;bs._onLog&&bs._onLog("DCE: start fetching a frame into buffer: "+Date.now());try{e=this.fetchImage()}catch(e){const i=e.message||e;if("The video is not loaded."===i)return;if(null===(t=Ve(this,as,"f"))||void 0===t?void 0:t.onErrorReceived)return void setTimeout((()=>{var t;null===(t=Ve(this,as,"f"))||void 0===t||t.onErrorReceived(Ct.EC_IMAGE_READ_FAILED,i)}),0);console.warn(e)}e?(this.addImageToBuffer(e),bs._onLog&&bs._onLog("DCE: finish fetching a frame into buffer: "+Date.now()),Ve(this,ns,"f").fire("frameAddedToBuffer",null,{async:!1})):bs._onLog&&bs._onLog("DCE: get a invalid frame, abandon it: "+Date.now())};if(this.getImageCount()>=this.getMaxImageCount())switch(this.getBufferOverflowProtectionMode()){case s.BOPM_BLOCK:break;case s.BOPM_UPDATE:e()}else e();Ve(this,us,"f")&&clearTimeout(Ve(this,us,"f")),Ge(this,us,setTimeout((()=>{this.disposed||Ve(this,$r,"m",t).call(this)}),this.fetchInterval),"f")},ws=function(t){if(!this.cameraView)throw new Error("Camera view is not set.");if(this.cameraView.disposed)throw new Error("'cameraView' has been disposed.");if(!this.isOpen())throw new Error("Not open.");if(!Ve(this,$r,"m",ps).call(this)&&!this.cameraManager.isVideoLoaded())throw new Error("Video is not loaded.");if(Ve(this,$r,"m",ps).call(this)&&!this.cameraView._cvsSingleFrameMode)throw new Error("No image is selected.");const e=this.cameraView._innerComponent.getBoundingClientRect(),i=e.left,n=e.top,r=i+window.scrollX,s=n+window.scrollY,{width:o,height:a}=this.cameraView._innerComponent.getBoundingClientRect();if(o<=0||a<=0)throw new Error("Unable to get content dimensions. Camera view may not be rendered on the page.");let h,l,c;if(Ve(this,$r,"m",ps).call(this)){const t=this.cameraView._innerComponent.getElement("content");h=t.width,l=t.height,c="contain"}else{const t=this.getVideoEl();h=t.videoWidth,l=t.videoHeight,c=this.cameraView.getVideoFit()}const u=o/a,d=h/l;let f,g,m,p,_=1;if("contain"===c)u{var e;if(!this.isUseMagnifier)return;if(Ve(this,As,"f")||Ge(this,As,new Fs,"f"),!Ve(this,As,"f").magnifierCanvas)return;document.body.contains(Ve(this,As,"f").magnifierCanvas)||(Ve(this,As,"f").magnifierCanvas.style.position="fixed",Ve(this,As,"f").magnifierCanvas.style.boxSizing="content-box",Ve(this,As,"f").magnifierCanvas.style.border="2px solid #FFFFFF",document.body.append(Ve(this,As,"f").magnifierCanvas));const i=this._innerComponent.getElement("content");if(!i)return;if(t.pointer.x<0||t.pointer.x>i.width||t.pointer.y<0||t.pointer.y>i.height)return void Ve(this,Ds,"f").call(this);const n=null===(e=this._drawingLayerManager._getFabricCanvas())||void 0===e?void 0:e.lowerCanvasEl;if(!n)return;const r=Math.max(i.clientWidth/5/1.5,i.clientHeight/4/1.5),s=1.5*r,o=[{image:i,width:i.width,height:i.height},{image:n,width:n.width,height:n.height}];Ve(this,As,"f").update(s,t.pointer,r,o);{let e=0,i=0;t.e instanceof MouseEvent?(e=t.e.clientX,i=t.e.clientY):t.e instanceof TouchEvent&&t.e.changedTouches.length&&(e=t.e.changedTouches[0].clientX,i=t.e.changedTouches[0].clientY),e<1.5*s&&i<1.5*s?(Ve(this,As,"f").magnifierCanvas.style.left="auto",Ve(this,As,"f").magnifierCanvas.style.top="0",Ve(this,As,"f").magnifierCanvas.style.right="0"):(Ve(this,As,"f").magnifierCanvas.style.left="0",Ve(this,As,"f").magnifierCanvas.style.top="0",Ve(this,As,"f").magnifierCanvas.style.right="auto")}Ve(this,As,"f").show()})),Ds.set(this,(()=>{Ve(this,As,"f")&&Ve(this,As,"f").hide()})),Ls.set(this,!1)}_setUIElement(t){this.UIElement=t,this._unbindUI(),this._bindUI()}async setUIElement(t){let e;if("string"==typeof t){let i=await Ui(t);e=document.createElement("div"),Object.assign(e.style,{width:"100%",height:"100%"}),e.attachShadow({mode:"open"}).appendChild(i)}else e=t;this._setUIElement(e)}getUIElement(){return this.UIElement}_bindUI(){if(!this.UIElement)throw new Error("Need to set 'UIElement'.");if(this._innerComponent)return;const t=this.UIElement;let e=t.classList.contains(this.containerClassName)?t:t.querySelector(`.${this.containerClassName}`);e||(e=document.createElement("div"),e.style.width="100%",e.style.height="100%",e.className=this.containerClassName,t.append(e)),this._innerComponent=document.createElement("dce-component"),e.appendChild(this._innerComponent)}_unbindUI(){var t,e,i;null===(t=this._drawingLayerManager)||void 0===t||t.clearDrawingLayers(),null===(e=this._innerComponent)||void 0===e||e.removeElement("drawing-layer"),this._layerBaseCvs=null,null===(i=this._innerComponent)||void 0===i||i.remove(),this._innerComponent=null}setImage(t,e,i){if(!this._innerComponent)throw new Error("Need to set 'UIElement'.");let n=this._innerComponent.getElement("content");n||(n=document.createElement("canvas"),n.style.objectFit="contain",this._innerComponent.setElement("content",n)),n.width===e&&n.height===i||(n.width=e,n.height=i);const r=n.getContext("2d");r.clearRect(0,0,n.width,n.height),t instanceof Uint8Array||t instanceof Uint8ClampedArray?(t instanceof Uint8Array&&(t=new Uint8ClampedArray(t.buffer)),r.putImageData(new ImageData(t,e,i),0,0)):(t instanceof HTMLCanvasElement||t instanceof HTMLImageElement)&&r.drawImage(t,0,0)}getImage(){return this._innerComponent.getElement("content")}clearImage(){if(!this._innerComponent)return;let t=this._innerComponent.getElement("content");t&&t.getContext("2d").clearRect(0,0,t.width,t.height)}removeImage(){this._innerComponent&&this._innerComponent.removeElement("content")}setOriginalImage(t){if(C(t)){Ge(this,Os,t,"f");const{width:e,height:i,bytes:n,format:r}=Object.assign({},t);let s;if(r===a.IPF_GRAYSCALED){s=new Uint8ClampedArray(e*i*4);for(let t=0;t{if(!Ns){if(!ks&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),Us=t=>t&&"object"==typeof t&&"function"==typeof t.then,Vs=(async()=>{})().constructor;let Gs=class extends Vs{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(t){let e;this._task=t,Us(t)?e=t:"function"==typeof t&&(e=new Vs(t)),e&&(async()=>{try{const i=await e;t===this._task&&this.resolve(i)}catch(e){t===this._task&&this.reject(e)}})()}get isEmpty(){return null==this._task}constructor(t){let e,i;super(((t,n)=>{e=t,i=n})),this._s="pending",this.resolve=t=>{this.isPending&&(Us(t)?this.task=t:(this._s="fulfilled",e(t)))},this.reject=t=>{this.isPending&&(this._s="rejected",i(t))},this.task=t}};const Ws=" is not allowed to change after `createInstance` or `loadWasm` is called.",Ys=!ks&&document.currentScript&&(document.currentScript.getAttribute("data-license")||document.currentScript.getAttribute("data-productKeys")||document.currentScript.getAttribute("data-licenseKey")||document.currentScript.getAttribute("data-handshakeCode")||document.currentScript.getAttribute("data-organizationID"))||"",Hs=(t,e)=>{const i=t;if(i._license!==e){if(!i._pLoad.isEmpty)throw new Error("`license`"+Ws);i._license=e}};!ks&&document.currentScript&&document.currentScript.getAttribute("data-sessionPassword");const Xs=t=>{if(null==t)t=[];else{t=t instanceof Array?[...t]:[t];for(let e=0;e{e=Xs(e);const i=t;if(i._licenseServer!==e){if(!i._pLoad.isEmpty)throw new Error("`licenseServer`"+Ws);i._licenseServer=e}},qs=(t,e)=>{e=e||"";const i=t;if(i._deviceFriendlyName!==e){if(!i._pLoad.isEmpty)throw new Error("`deviceFriendlyName`"+Ws);i._deviceFriendlyName=e}};let Zs,Ks,Js,Qs,$s;"undefined"!=typeof navigator&&(Zs=navigator,Ks=Zs.userAgent,Js=Zs.platform,Qs=Zs.mediaDevices),function(){if(!ks){const t={Edge:{search:"Edg",verSearch:"Edg"},OPR:null,Chrome:null,Safari:{str:Zs.vendor,search:"Apple",verSearch:["Version","iPhone OS","CPU OS"]},Firefox:null,Explorer:{search:"MSIE",verSearch:"MSIE"}},e={HarmonyOS:null,Android:null,iPhone:null,iPad:null,Windows:{str:Js,search:"Win"},Mac:{str:Js},Linux:{str:Js}};let i="unknownBrowser",n=0,r="unknownOS";for(let e in t){const r=t[e]||{};let s=r.str||Ks,o=r.search||e,a=r.verStr||Ks,h=r.verSearch||e;if(h instanceof Array||(h=[h]),-1!=s.indexOf(o)){i=e;for(let t of h){let e=a.indexOf(t);if(-1!=e){n=parseFloat(a.substring(e+t.length+1));break}}break}}for(let t in e){const i=e[t]||{};let n=i.str||Ks,s=i.search||t;if(-1!=n.indexOf(s)){r=t;break}}"Linux"==r&&-1!=Ks.indexOf("Windows NT")&&(r="HarmonyOS"),$s={browser:i,version:n,OS:r}}ks&&($s={browser:"ssr",version:0,OS:"ssr"})}(),Qs&&Qs.getUserMedia,"Chrome"===$s.browser&&$s.version>66||"Safari"===$s.browser&&$s.version>13||"OPR"===$s.browser&&$s.version>43||"Edge"===$s.browser&&$s.version;const to=()=>(_t("license"),rt("dynamsoft_inited",(async()=>{let{lt:t,l:e,ls:i,sp:n,rmk:r,cv:s}=((t,e=!1)=>{const i=io;if(i._pLoad.isEmpty){let n,r,s,o=i._license||"",a=JSON.parse(JSON.stringify(i._licenseServer)),h=i._sessionPassword,l=0;if(o.startsWith("t")||o.startsWith("f"))l=0;else if(0===o.length||o.startsWith("P")||o.startsWith("L")||o.startsWith("Y")||o.startsWith("A"))l=1;else{l=2;const e=o.indexOf(":");-1!=e&&(o=o.substring(e+1));const i=o.indexOf("?");if(-1!=i&&(r=o.substring(i+1),o=o.substring(0,i)),o.startsWith("DLC2"))l=0;else{if(o.startsWith("DLS2")){let e;try{let t=o.substring(4);t=atob(t),e=JSON.parse(t)}catch(t){throw new Error("Format Error: The license string you specified is invalid, please check to make sure it is correct.")}if(o=e.handshakeCode?e.handshakeCode:e.organizationID?e.organizationID:"","number"==typeof o&&(o=JSON.stringify(o)),0===a.length){let t=[];e.mainServerURL&&(t[0]=e.mainServerURL),e.standbyServerURL&&(t[1]=e.standbyServerURL),a=Xs(t)}!h&&e.sessionPassword&&(h=e.sessionPassword),n=e.remark}o&&"200001"!==o&&!o.startsWith("200001-")||(l=1)}}if(l&&(e||(Bs.crypto||(s="Please upgrade your browser to support online key."),Bs.crypto.subtle||(s="Require https to use online key in this browser."))),s)throw new Error(s);return 1===l&&(o="",console.warn("Applying for a public trial license ...")),{lt:l,l:o,ls:a,sp:h,rmk:n,cv:r}}throw new Error("Can't preprocess license again"+Ws)})(),o=new Gs;io._pLoad.task=o,(async()=>{try{await io._pLoad}catch(t){}})();let a=at();ht[a]=e=>{if(e.message&&io._onAuthMessage){let t=io._onAuthMessage(e.message);null!=t&&(e.message=t)}let i,n=!1;if(1===t&&(n=!0),e.success?(lt&<("init license success"),e.message&&console.warn(e.message),vt._bSupportIRTModule=e.bSupportIRTModule,vt._bSupportDce4Module=e.bSupportDce4Module,io.bPassValidation=!0,[0,-10076].includes(e.initLicenseInfo.errorCode)?[-10076].includes(e.initLicenseInfo.errorCode)&&console.warn(e.initLicenseInfo.errorString):o.reject(new Error(e.initLicenseInfo.errorString))):(i=Error(e.message),e.stack&&(i.stack=e.stack),e.ltsErrorCode&&(i.ltsErrorCode=e.ltsErrorCode),n||111==e.ltsErrorCode&&-1!=e.message.toLowerCase().indexOf("trial license")&&(n=!0)),n){const t=L(vt.engineResourcePaths);(async(t,e,i)=>{if(!t._bNeverShowDialog)try{let n=await fetch(t.engineResourcePath+"dls.license.dialog.html");if(!n.ok)throw Error("Get license dialog fail. Network Error: "+n.statusText);let r=await n.text();if(!r.trim().startsWith("<"))throw Error("Get license dialog fail. Can't get valid HTMLElement.");let s=document.createElement("div");s.innerHTML=r;let o=[];for(let t=0;t{if(t==e.target){a.remove();for(let t of o)t.remove()}}));else if(!l&&t.classList.contains("dls-license-icon-close"))l=t,t.addEventListener("click",(()=>{a.remove();for(let t of o)t.remove()}));else if(!c&&t.classList.contains("dls-license-icon-error"))c=t,"error"!=e&&t.remove();else if(!u&&t.classList.contains("dls-license-icon-warn"))u=t,"warn"!=e&&t.remove();else if(!d&&t.classList.contains("dls-license-msg-content")){d=t;let e=i;for(;e;){let i=e.indexOf("["),n=e.indexOf("]",i),r=e.indexOf("(",n),s=e.indexOf(")",r);if(-1==i||-1==n||-1==r||-1==s){t.appendChild(new Text(e));break}i>0&&t.appendChild(new Text(e.substring(0,i)));let o=document.createElement("a"),a=e.substring(i+1,n);o.innerText=a;let h=e.substring(r+1,s);o.setAttribute("href",h),o.setAttribute("target","_blank"),t.appendChild(o),e=e.substring(s+1)}}document.body.appendChild(a)}catch(e){t._onLog&&t._onLog(e.message||e)}})({_bNeverShowDialog:io._bNeverShowDialog,engineResourcePath:t.license,_onLog:lt},e.success?"warn":"error",e.message)}e.success?o.resolve(void 0):o.reject(i)},await nt("core"),st.postMessage({type:"license_dynamsoft",body:{v:"3.4.31",brtk:!!t,bptk:1===t,l:e,os:$s,fn:io.deviceFriendlyName,ls:i,sp:n,rmk:r,cv:s},id:a}),io.bCallInitLicense=!0,await o})));let eo;gt.license={},gt.license.dynamsoft=to,gt.license.getAR=async()=>{{let t=it.dynamsoft_inited;t&&t.isRejected&&await t}return st?new Promise(((t,e)=>{let i=at();ht[i]=async i=>{if(i.success){delete i.success;{let t=io.license;t&&(t.startsWith("t")||t.startsWith("f"))&&(i.pk=t)}if(Object.keys(i).length){if(i.lem){let t=Error(i.lem);t.ltsErrorCode=i.lec,delete i.lem,delete i.lec,i.ae=t}t(i)}else t(null)}else{let t=Error(i.message);i.stack&&(t.stack=i.stack),e(t)}},st.postMessage({type:"license_getAR",id:i})})):null};let io=class t{static setLicenseServer(e){zs(t,e)}static get license(){return this._license}static set license(e){Hs(t,e)}static get licenseServer(){return this._licenseServer}static set licenseServer(e){zs(t,e)}static get deviceFriendlyName(){return this._deviceFriendlyName}static set deviceFriendlyName(e){qs(t,e)}static initLicense(e,i){if(Hs(t,e),t.bCallInitLicense=!0,"boolean"==typeof i&&i||"object"==typeof i&&i.executeNow)return to()}static setDeviceFriendlyName(e){qs(t,e)}static getDeviceFriendlyName(){return t._deviceFriendlyName}static getDeviceUUID(){return(async()=>(await rt("dynamsoft_uuid",(async()=>{await _t();let t=new Gs,e=at();ht[e]=e=>{if(e.success)t.resolve(e.uuid);else{const i=Error(e.message);e.stack&&(i.stack=e.stack),t.reject(i)}},st.postMessage({type:"license_getDeviceUUID",id:e}),eo=await t})),eo))()}};io._pLoad=new Gs,io.bPassValidation=!1,io.bCallInitLicense=!1,io._license=Ys,io._licenseServer=[],io._deviceFriendlyName="",vt.engineResourcePaths.license={version:"3.4.31",path:js,isInternal:!0},mt.license={wasm:!0,js:!0},gt.license.LicenseManager=io;const no="1.4.21";"string"!=typeof vt.engineResourcePaths.std&&D(vt.engineResourcePaths.std.version,no)<0&&(vt.engineResourcePaths.std={version:no,path:(t=>{if(null==t&&(t="./"),ks||Ns);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t})(js+`../../dynamsoft-capture-vision-std@${no}/dist/`),isInternal:!0});let ro=class{static getVersion(){return`3.4.31(Worker: ${ft.license&&ft.license.worker||"Not Loaded"}, Wasm: ${ft.license&&ft.license.wasm||"Not Loaded"})`}};const so=()=>window.matchMedia("(orientation: landscape)").matches;function oo(t,e){for(const n in e)"Object"===(i=e[n],Object.prototype.toString.call(i).slice(8,-1))&&n in t?oo(t[n],e[n]):t[n]=e[n];var i;return t}const ao=async t=>{let e;await new Promise(((i,n)=>{e=new Image,e.onload=()=>i(e),e.onerror=n,e.src=URL.createObjectURL(t)}));const i=document.createElement("canvas"),n=i.getContext("2d");return i.width=e.width,i.height=e.height,n.drawImage(e,0,0),{bytes:Uint8Array.from(n.getImageData(0,0,i.width,i.height).data),width:i.width,height:i.height,stride:4*i.width,format:10}};class ho{async saveToFile(t,e,i){if(!t||!e)return null;if("string"!=typeof e)throw new TypeError("FileName must be of type string.");const n=B(t);return M(n,e,i)}async drawOnImage(t,e,i,n=4294901760,r=1,s){let o;if(t instanceof Blob)o=await ao(t);else if("string"==typeof t){let e=await A(t,"blob");o=await ao(e)}return await new Promise(((t,a)=>{let h=at();ht[h]=async e=>{if(e.success)return s&&this.saveToFile(e.image,"test.png",s),t(e.image);{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,a(t)}},st.postMessage({type:"utility_drawOnImage",id:h,body:{dsImage:o,drawingItem:e instanceof Array?e:[e],color:n,thickness:r,type:i}})}))}}const lo="undefined"==typeof self,co="function"==typeof importScripts,uo=(()=>{if(!co){if(!lo&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),fo=t=>{if(null==t&&(t="./"),lo||co);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t};vt.engineResourcePaths.utility={version:"1.4.32",path:uo,isInternal:!0},mt.utility={js:!0,wasm:!0};const go="1.4.21";"string"!=typeof vt.engineResourcePaths.std&&D(vt.engineResourcePaths.std.version,go)<0&&(vt.engineResourcePaths.std={version:go,path:fo(uo+`../../dynamsoft-capture-vision-std@${go}/dist/`),isInternal:!0});const mo="2.4.31";(!vt.engineResourcePaths.dip||"string"!=typeof vt.engineResourcePaths.dip&&D(vt.engineResourcePaths.dip.version,mo)<0)&&(vt.engineResourcePaths.dip={version:mo,path:fo(uo+`../../dynamsoft-image-processing@${mo}/dist/`),isInternal:!0});class po{static getVersion(){return`1.4.32(Worker: ${ft.utility&&ft.utility.worker||"Not Loaded"}, Wasm: ${ft.utility&&ft.utility.wasm||"Not Loaded"})`}}function _o(t,e,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(t):n?n.value:e.get(t)}var vo,yo,wo,Co,Eo;function So(t,e){let i=!0;for(let o=0;o1)return Math.sqrt((h-o)**2+(l-a)**2);{const t=r+u*(o-r),e=s+u*(a-s);return Math.sqrt((h-t)**2+(l-e)**2)}}function Io(t){const e=[];for(let i=0;i=0&&h<=1&&l>=0&&l<=1?{x:t.x+l*r,y:t.y+l*s}:null}function Ao(t){let e=0;for(let i=0;i0}function Do(t,e){for(let i=0;i<4;i++)if(!Ro(t.points[i],t.points[(i+1)%4],e))return!1;return!0}"function"==typeof SuppressedError&&SuppressedError;function Lo(t,e,i,n){const r=t.points,s=e.points;let o=8*i;o=Math.max(o,5);const a=Io(r)[3],h=Io(r)[1],l=Io(s)[3],c=Io(s)[1];let u,d=0;if(u=Math.max(Math.abs(bo(a,e.points[0])),Math.abs(bo(a,e.points[3]))),u>d&&(d=u),u=Math.max(Math.abs(bo(h,e.points[1])),Math.abs(bo(h,e.points[2]))),u>d&&(d=u),u=Math.max(Math.abs(bo(l,t.points[0])),Math.abs(bo(l,t.points[3]))),u>d&&(d=u),u=Math.max(Math.abs(bo(c,t.points[1])),Math.abs(bo(c,t.points[2]))),u>d&&(d=u),d>o)return!1;const f=xo(Io(r)[0]),g=xo(Io(r)[2]),m=xo(Io(s)[0]),p=xo(Io(s)[2]),_=To(f,p),v=To(m,g),y=_>v,w=Math.min(_,v),C=To(f,g),E=To(m,p);let S=12*i;return S=Math.max(S,5),S=Math.min(S,C),S=Math.min(S,E),!!(w{e.x+=t,e.y+=i})),e.x/=t.length,e.y/=t.length,e}isProbablySameLocationWithOffset(t,e){const i=this.item.location,n=t.location;if(i.area<=0)return!1;if(Math.abs(i.area-n.area)>.4*i.area)return!1;let r=new Array(4).fill(0),s=new Array(4).fill(0),o=0,a=0;for(let t=0;t<4;++t)r[t]=Math.round(100*(n.points[t].x-i.points[t].x))/100,o+=r[t],s[t]=Math.round(100*(n.points[t].y-i.points[t].y))/100,a+=s[t];o/=4,a/=4;for(let t=0;t<4;++t){if(Math.abs(r[t]-o)>this.strictLimit||Math.abs(o)>.8)return!1;if(Math.abs(s[t]-a)>this.strictLimit||Math.abs(a)>.8)return!1}return e.x=o,e.y=a,!0}isLocationOverlap(t,e){if(this.locationArea>e){for(let e=0;e<4;e++)if(Do(this.location,t.points[e]))return!0;const e=this.getCenterPoint(t.points);if(Do(this.location,e))return!0}else{for(let e=0;e<4;e++)if(Do(t,this.location.points[e]))return!0;if(Do(t,this.getCenterPoint(this.location.points)))return!0}return!1}isMatchedLocationWithOffset(t,e={x:0,y:0}){if(this.isOneD){const i=Object.assign({},t.location);for(let t=0;t<4;t++)i.points[t].x-=e.x,i.points[t].y-=e.y;if(!this.isLocationOverlap(i,t.locationArea))return!1;const n=[this.location.points[0],this.location.points[3]],r=[this.location.points[1],this.location.points[2]];for(let t=0;t<4;t++){const e=i.points[t],s=0===t||3===t?n:r;if(Math.abs(bo(s,e))>this.locationThreshold)return!1}}else for(let i=0;i<4;i++){const n=t.location.points[i],r=this.location.points[i];if(!(Math.abs(r.x+e.x-n.x)=this.locationThreshold)return!1}return!0}isOverlappedLocationWithOffset(t,e,i=!0){const n=Object.assign({},t.location);for(let t=0;t<4;t++)n.points[t].x-=e.x,n.points[t].y-=e.y;if(!this.isLocationOverlap(n,t.location.area))return!1;if(i){const t=.75;return function(t,e){const i=[];for(let n=0;n<4;n++)for(let r=0;r<4;r++){const s=Oo(t[n],t[(n+1)%4],e[r],e[(r+1)%4]);s&&i.push(s)}return t.forEach((t=>{So(e,t)&&i.push(t)})),e.forEach((e=>{So(t,e)&&i.push(e)})),Ao(function(t){if(t.length<=1)return t;t.sort(((t,e)=>t.x-e.x||t.y-e.y));const e=t.shift();return t.sort(((t,i)=>Math.atan2(t.y-e.y,t.x-e.x)-Math.atan2(i.y-e.y,i.x-e.x))),[e,...t]}(i))}([...this.location.points],n.points)>this.locationArea*t}return!0}}const Fo={BF_ONED:BigInt(3147775),BF_GS1_DATABAR:BigInt(260096)},Po={barcode:2,text_line:4,detected_quad:8,normalized_image:16},ko=t=>Object.values(Po).includes(t)||Po.hasOwnProperty(t),Bo=(t,e)=>"string"==typeof t?e[Po[t]]:e[t],No=(t,e,i)=>{"string"==typeof t?e[Po[t]]=i:e[t]=i},jo=(t,e,i)=>{const n=[8,16].includes(i);if(!n&&t.isResultCrossVerificationEnabled(i))for(let t=0;t{No(e,this.verificationEnabled,t)})),_o(this,yo,"f").forEach(((t,e)=>{No(e,this.duplicateFilterEnabled,t)})),_o(this,wo,"f").forEach(((t,e)=>{No(e,this.duplicateForgetTime,t)})),_o(this,Co,"f").forEach(((t,e)=>{No(e,this.latestOverlappingEnabled,t)})),_o(this,Eo,"f").forEach(((t,e)=>{No(e,this.maxOverlappingFrames,t)}))}enableResultCrossVerification(t,e){ko(t)&&_o(this,vo,"f").set(t,e)}isResultCrossVerificationEnabled(t){return!!ko(t)&&Bo(t,this.verificationEnabled)}enableResultDeduplication(t,e){ko(t)&&(e&&this.enableLatestOverlapping(t,!1),_o(this,yo,"f").set(t,e))}isResultDeduplicationEnabled(t){return!!ko(t)&&Bo(t,this.duplicateFilterEnabled)}setDuplicateForgetTime(t,e){ko(t)&&(e>18e4&&(e=18e4),e<0&&(e=0),_o(this,wo,"f").set(t,e))}getDuplicateForgetTime(t){return ko(t)?Bo(t,this.duplicateForgetTime):-1}setMaxOverlappingFrames(t,e){ko(t)&&_o(this,Eo,"f").set(t,e)}getMaxOverlappingFrames(t){return ko(t)?Bo(t,this.maxOverlappingFrames):-1}enableLatestOverlapping(t,e){ko(t)&&(e&&this.enableResultDeduplication(t,!1),_o(this,Co,"f").set(t,e))}isLatestOverlappingEnabled(t){return!!ko(t)&&Bo(t,this.latestOverlappingEnabled)}getFilteredResultItemTypes(){let t=0;const e=[yt.CRIT_BARCODE,yt.CRIT_TEXT_LINE,yt.CRIT_DETECTED_QUAD,yt.CRIT_NORMALIZED_IMAGE];for(let i=0;i{if(1!==t.type){const e=(BigInt(t.format)&BigInt(Fo.BF_ONED))!=BigInt(0)||(BigInt(t.format)&BigInt(Fo.BF_GS1_DATABAR))!=BigInt(0);return new Mo(h,e?1:2,e,t)}})).filter(Boolean);if(this.overlapSet.length>0){const t=new Array(l).fill(new Array(this.overlapSet.length).fill(1));let e=0;for(;e-1!==t)).length;r>p&&(p=r,m=n,g.x=i.x,g.y=i.y)}}if(0===p){for(let e=0;e-1!=t)).length}let i=this.overlapSet.length<=3?p>=1:p>=2;if(!i&&s&&u>0){let t=0;for(let e=0;e=1:t>=3}i||(this.overlapSet=[])}if(0===this.overlapSet.length)this.stabilityCount=0,t.items.forEach(((t,e)=>{if(1!==t.type){const i=Object.assign({},t),n=(BigInt(t.format)&BigInt(Fo.BF_ONED))!=BigInt(0)||(BigInt(t.format)&BigInt(Fo.BF_GS1_DATABAR))!=BigInt(0),s=t.confidence5||Math.abs(g.y)>5)&&(e=!1):e=!1;for(let i=0;i0){for(let t=0;t!(t.overlapCount+this.stabilityCount<=0&&t.crossVerificationFrame<=0)))}f.sort(((t,e)=>e-t)).forEach(((e,i)=>{t.items.splice(e,1)})),d.forEach((e=>{t.items.push(Object.assign(Object.assign({},e),{overlapped:!0}))}))}}onDecodedBarcodesReceived(t){this.latestOverlappingFilter(t),jo(this,t.items,yt.CRIT_BARCODE)}onRecognizedTextLinesReceived(t){jo(this,t.items,yt.CRIT_TEXT_LINE)}onDetectedQuadsReceived(t){jo(this,t.items,yt.CRIT_DETECTED_QUAD)}onNormalizedImagesReceived(t){jo(this,t.items,yt.CRIT_NORMALIZED_IMAGE)}}var Vo,Go,Wo,Yo,Ho,Xo,zo,qo,Zo,Ko,Jo,Qo,$o,ta,ea,ia,na,ra,sa,oa,aa;vo=new WeakMap,yo=new WeakMap,wo=new WeakMap,Co=new WeakMap,Eo=new WeakMap;class ha{constructor(t){if(Vo.add(this),Yo.set(this,void 0),Ho.set(this,{status:{code:Ut.RS_SUCCESS,message:"Success."},barcodeResults:[]}),Xo.set(this,!1),zo.set(this,void 0),qo.set(this,void 0),this.config=Vt,t&&"object"!=typeof t||Array.isArray(t))throw"Invalid config.";oo(this.config,t)}async launch(){if(Lt(this,Xo,"f"))throw new Error("The BarcodeScanner instance has been destroyed.");if(Lt(ha,Go,"f",Wo)&&!Lt(ha,Go,"f",Wo).isFulfilled)throw new Error("Cannot call `launch()` while a previous task is still running.");return Mt(ha,Go,new Yt,"f",Wo),await Lt(this,Vo,"m",Zo).call(this),Lt(ha,Go,"f",Wo)}async decode(t,e="ReadBarcodes_Default"){return Mt(this,qo,e,"f"),await Lt(this,Vo,"m",Ko).call(this,!0),this._cvRouter.capture(t,e)}dispose(){Mt(this,Xo,!0,"f"),Lt(ha,Go,"f",Wo)&&Lt(ha,Go,"f",Wo).isPending&&Lt(ha,Go,"f",Wo).resolve(Lt(this,Ho,"f")),this._cameraEnhancer?.dispose(),this._cameraView?.dispose(),this._cvRouter?.dispose(),this._cameraEnhancer=null,this._cameraView=null,this._cvRouter=null,window.removeEventListener("resize",Lt(this,Yo,"f")),document.querySelector(".scanner-view-container")?.remove(),document.querySelector(".result-view-container")?.remove(),document.querySelector(".barcode-scanner-container")?.remove(),document.querySelector(".loading-page")?.remove()}}Go=ha,Yo=new WeakMap,Ho=new WeakMap,Xo=new WeakMap,zo=new WeakMap,qo=new WeakMap,Vo=new WeakSet,Zo=async function(){try{await Lt(this,Vo,"m",Ko).call(this);try{await this._cameraEnhancer.open()}catch(t){Lt(this,Vo,"m",aa).call(this);document.querySelector(".no-camera-view").style.display="flex"}await this._cvRouter.startCapturing(Lt(this,qo,"f"))}catch(t){Lt(this,Ho,"f").status={code:Ut.RS_FAILED,message:t.message||t},Lt(ha,Go,"f",Wo).reject(new Error(Lt(this,Ho,"f").status.message)),this.dispose()}finally{const t=document.querySelector(".loading-page");t&&(t.style.display="none")}},Ko=async function(t=!1){vt.engineResourcePaths=this.config.engineResourcePaths,t||(this._cameraView=await On.createInstance(),this.config.scanMode===Nt.SM_SINGLE&&(this._cameraView._capturedResultReceiver.onCapturedResultReceived=()=>{}),await Lt(this,Vo,"m",Qo).call(this)),await io.initLicense(this.config.license||"",{executeNow:!0}),this._cvRouter=this._cvRouter||await be.createInstance(),await Lt(this,Vo,"m",Jo).call(this,t),t||(this._cameraEnhancer=await bs.createInstance(this._cameraView),this._cvRouter.setInput(this._cameraEnhancer),Lt(this,Vo,"m",$o).call(this),await Lt(this,Vo,"m",ta).call(this))},Jo=async function(t=!1){t||(this.config.scanMode===Nt.SM_SINGLE?Mt(this,qo,this.config.utilizedTemplateNames.single,"f"):this.config.scanMode===Nt.SM_MULTI_UNIQUE&&Mt(this,qo,this.config.utilizedTemplateNames.multi_unique,"f")),this.config.templateFilePath&&await this._cvRouter.initSettings(this.config.templateFilePath);const e=await this._cvRouter.getSimplifiedSettings(Lt(this,qo,"f"));t||this.config.scanMode!==Nt.SM_SINGLE||(e.capturedResultItemTypes=yt.CRIT_ORIGINAL_IMAGE|yt.CRIT_BARCODE);let i=this.config.barcodeFormats;if(i){Array.isArray(i)||(i=[i]),e.barcodeSettings.barcodeFormatIds=BigInt(0);for(let t=0;t{if("string"!=typeof t)throw new TypeError("Invalid url.");const e=await fetch(t);if(!e.ok)throw Error("Network Error: "+e.statusText);const i=await e.text();if(!i.trim().startsWith("<"))throw Error("Unable to get valid HTMLElement.");const n=document.createElement("div");if(n.insertAdjacentHTML("beforeend",i),1===n.childElementCount&&n.firstChild instanceof HTMLTemplateElement)return n.firstChild.content;const r=new DocumentFragment;for(let t of n.children)r.append(t);return r})(e);i.querySelectorAll("style").forEach((t=>{document.head.appendChild(t.cloneNode(!0))})),Mt(this,zo,i.querySelector(".result-item"),"f");const n=i.querySelector(".btn-clear");if(n&&(n.addEventListener("click",(()=>{Lt(this,Ho,"f").barcodeResults=[],Lt(this,Vo,"m",sa).call(this)})),this.config?.resultViewConfig?.toolbarButtonsConfig?.clear)){const t=this.config.resultViewConfig.toolbarButtonsConfig.clear;n.style.display=t.isHidden?"none":"flex",n.className=t.className?t.className:"btn-clear",n.innerText=t.label?t.label:"Clear",t.isHidden&&(i.querySelector(".toolbar-btns").style.justifyContent="center")}const r=i.querySelector(".btn-done");if(r&&(r.addEventListener("click",(()=>{const t=document.querySelector(".loading-page");t&&"none"===getComputedStyle(t).display&&this.dispose()})),this.config?.resultViewConfig?.toolbarButtonsConfig?.done)){const t=this.config.resultViewConfig.toolbarButtonsConfig.done;r.style.display=t.isHidden?"none":"flex",r.className=t.className?t.className:"btn-done",r.innerText=t.label?t.label:"Done",t.isHidden&&(i.querySelector(".toolbar-btns").style.justifyContent="center")}const s=this.config?.scannerViewConfig?.showCloseButton;if(s){const t=i.querySelector(".btn-close");t&&(t.style.display="",t.addEventListener("click",(()=>{Lt(this,Ho,"f").barcodeResults=[],Lt(this,Ho,"f").status={code:Ut.RS_CANCELLED,message:"Cancelled."},this.dispose()})))}this.config.showUploadImageButton&&Lt(this,Vo,"m",aa).call(this,i.querySelector(".btn-upload-image"));const o=this._cameraView.getUIElement();o.shadowRoot.querySelector(".dce-sel-camera").remove(),o.shadowRoot.querySelector(".dce-sel-resolution").remove(),this._cameraView.setVideoFit("cover");const a=i.querySelector(".barcode-scanner-container");a.style.display=so()?"flex":"";const h=this.config.showResultView&&this.config.scanMode!==Nt.SM_SINGLE;let l;if(this.config.container?(a.style.position="relative",l=this.config.container):l=document.body,"string"==typeof l&&(l=document.querySelector(l),null===l))throw new Error("Failed to get the container");let c=this.config.scannerViewConfig.container;if("string"==typeof c&&(c=document.querySelector(c),null===c))throw new Error("Failed to get the container of the scanner view.");let u=this.config.resultViewConfig.container;if("string"==typeof u&&(u=document.querySelector(u),null===u))throw new Error("Failed to get the container of the result view.");const d=i.querySelector(".scanner-view-container"),f=i.querySelector(".result-view-container"),g=i.querySelector(".loading-page");d.append(g),c&&(d.append(o),c.append(d)),u&&u.append(f),c||u?c&&!u?(this.config.container||(f.style.position="absolute"),u=f,l.append(f)):!c&&u&&(this.config.container||(d.style.position="absolute"),c=d,d.append(o),l.append(d)):(c=d,u=f,h&&(Object.assign(d.style,{width:so()?"50%":"100%",height:so()?"100%":"50%"}),Object.assign(f.style,{width:so()?"50%":"100%",height:so()?"100%":"50%"})),d.append(o),l.append(a)),document.querySelector(".result-view-container").style.display=h?"":"none",this.config.removePoweredByMessage&&(o.shadowRoot.querySelector(".dce-msg-poweredby").style.display="none",document.querySelector(".no-result-svg").style.display="none"),Mt(this,Yo,(()=>{Object.assign(a.style,{display:so()?"flex":""}),!h||this.config.scannerViewConfig.container||this.config.resultViewConfig.container||(Object.assign(c.style,{width:so()?"50%":"100%",height:so()?"100%":"50%"}),Object.assign(u.style,{width:so()?"50%":"100%",height:so()?"100%":"50%"}))}),"f"),window.addEventListener("resize",Lt(this,Yo,"f")),this._cameraView._createDrawingLayer(2)},$o=function(){const t=new Ae;let e=0;t.onCapturedResultReceived=async t=>{t.barcodeResultItems&&(this.config.scanMode===Nt.SM_SINGLE?2==++e&&Lt(this,Vo,"m",ea).call(this,t):Lt(this,Vo,"m",ia).call(this,t))},this._cvRouter.addResultReceiver(t)},ta=async function(){const t=new Uo;t.enableResultCrossVerification(2,!0),t.enableResultDeduplication(2,!0),t.setDuplicateForgetTime(2,this.config.duplicateForgetTime),t.onDecodedBarcodesReceived=()=>{},await this._cvRouter.addResultFilter(t)},ea=function(t){const e=this._cameraView.getUIElement().shadowRoot;let i=new Promise((i=>{if(t.barcodeResultItems.length>1){Lt(this,Vo,"m",ra).call(this);for(let n of t.barcodeResultItems){let t=0,r=0;for(let e=0;e<4;++e){let i=n.location.points[e];t+=i.x,r+=i.y}let s=this._cameraEnhancer.convertToClientCoordinates({x:t/4,y:r/4}),o=document.createElement("div");o.className="single-barcode-result-option",Object.assign(o.style,{position:"fixed",width:"32px",height:"32px",border:"#fff solid 4px","box-sizing":"border-box","border-radius":"16px",background:"#080",cursor:"pointer",transform:"translate(-50%, -50%)"}),o.style.left=s.x+"px",o.style.top=s.y+"px",o.addEventListener("click",(()=>{i(n)})),e.append(o)}}else i(t.barcodeResultItems[0])}));i.then((e=>{const i=t.items.filter((t=>t.type===yt.CRIT_ORIGINAL_IMAGE))[0].imageData,n={status:{code:Ut.RS_SUCCESS,message:"Success."},originalImageResult:i,barcodeImage:(()=>{const t=F(i),n=e.location.points,r=Math.min(...n.map((t=>t.x))),s=Math.min(...n.map((t=>t.y))),o=Math.max(...n.map((t=>t.x))),h=Math.max(...n.map((t=>t.y))),l=o-r,c=h-s,u=document.createElement("canvas");u.width=l,u.height=c;const d=u.getContext("2d");d.beginPath(),d.moveTo(n[0].x-r,n[0].y-s);for(let t=1;tt.id===`${i.formatString}_${i.text}`));-1===t?(i.count=1,Lt(this,Ho,"f").barcodeResults.unshift(i),Lt(this,Vo,"m",sa).call(this,i)):(Lt(this,Ho,"f").barcodeResults[t].count++,Lt(this,Vo,"m",oa).call(this,t)),this.config.onUniqueBarcodeScanned&&this.config.onUniqueBarcodeScanned(i)}},na=function(t){const e=Lt(this,zo,"f").cloneNode(!0);e.querySelector(".format-string").innerText=t.formatString;e.querySelector(".text-string").innerText=t.text.replace(/\n|\r/g,""),e.id=`${t.formatString}_${t.text}`;return e.querySelector(".delete-icon").addEventListener("click",(()=>{const e=[...document.querySelectorAll(".main-list .result-item")],i=e.findIndex((e=>e.id===`${t.formatString}_${t.text}`));Lt(this,Ho,"f").barcodeResults.splice(i,1),e[i].remove()})),e},ra=function(){const t=this._cameraView.getUIElement().shadowRoot;if(t.querySelector(".single-mode-mask"))return;const e=document.createElement("div");e.className="single-mode-mask",Object.assign(e.style,{width:"100%",height:"100%",position:"absolute",top:"0",left:"0",right:"0",bottom:"0","background-color":"#4C4C4C",opacity:"0.5"}),t.append(e),this._cameraEnhancer.pause(),this._cvRouter.stopCapturing()},sa=function(t){const e=document.querySelector(".no-result-svg");if(!(this.config.showResultView&&this.config.scanMode!==Nt.SM_SINGLE))return;const i=document.querySelector(".main-list");if(!t)return i.textContent="",void(e.style.display="");e.style.display="none";const n=Lt(this,Vo,"m",na).call(this,t);i.insertBefore(n,document.querySelector(".result-item"))},oa=function(t){const e=document.querySelectorAll(".main-list .result-item"),i=e[t].querySelector(".result-count");let n=parseInt(i.textContent.replace("x",""));e[t].querySelector(".result-count").textContent="x"+ ++n},aa=function(t){t||(t=document.querySelector(".btn-upload-image")),t&&(t.style.display="",t.addEventListener("change",(async t=>{const e=t.target.files,i={status:{code:Ut.RS_SUCCESS,message:"Success."},barcodeResults:[]};for(let t of e)try{const e=await this.decode(t,this.config.utilizedTemplateNames.image);e.barcodeResultItems&&i.barcodeResults.push(...e.barcodeResultItems)}catch(t){i.status={code:Ut.RS_FAILED,message:t.message||t},Lt(ha,Go,"f",Wo).reject(i.status.message),this.dispose()}Lt(ha,Go,"f",Wo).resolve(i),this.dispose()})))},Wo={value:null};const la="undefined"==typeof self,ca="function"==typeof importScripts,ua=(()=>{if(!ca){if(!la&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),da=t=>{if(null==t&&(t="./"),la||ca);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t};vt.engineResourcePaths.dbr={version:"10.4.31",path:ua,isInternal:!0},mt.dbr={js:!1,wasm:!0,deps:["license","dip"]},gt.dbr={};const fa="1.4.21";"string"!=typeof vt.engineResourcePaths.std&&D(vt.engineResourcePaths.std.version,fa)<0&&(vt.engineResourcePaths.std={version:fa,path:da(ua+`../../dynamsoft-capture-vision-std@${fa}/dist/`),isInternal:!0});const ga="2.4.31";(!vt.engineResourcePaths.dip||"string"!=typeof vt.engineResourcePaths.dip&&D(vt.engineResourcePaths.dip.version,ga)<0)&&(vt.engineResourcePaths.dip={version:ga,path:da(ua+`../../dynamsoft-image-processing@${ga}/dist/`),isInternal:!0});class ma{static getVersion(){const t=ft.dbr&&ft.dbr.wasm;return`10.4.31(Worker: ${ft.dbr&&ft.dbr.worker||"Not Loaded"}, Wasm: ${t||"Not Loaded"})`}}const pa={BF_NULL:BigInt(0),BF_ALL:BigInt("0xFFFFFFFEFFFFFFFF"),BF_DEFAULT:BigInt(4265345023),BF_ONED:BigInt(3147775),BF_GS1_DATABAR:BigInt(260096),BF_CODE_39:BigInt(1),BF_CODE_128:BigInt(2),BF_CODE_93:BigInt(4),BF_CODABAR:BigInt(8),BF_ITF:BigInt(16),BF_EAN_13:BigInt(32),BF_EAN_8:BigInt(64),BF_UPC_A:BigInt(128),BF_UPC_E:BigInt(256),BF_INDUSTRIAL_25:BigInt(512),BF_CODE_39_EXTENDED:BigInt(1024),BF_GS1_DATABAR_OMNIDIRECTIONAL:BigInt(2048),BF_GS1_DATABAR_TRUNCATED:BigInt(4096),BF_GS1_DATABAR_STACKED:BigInt(8192),BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL:BigInt(16384),BF_GS1_DATABAR_EXPANDED:BigInt(32768),BF_GS1_DATABAR_EXPANDED_STACKED:BigInt(65536),BF_GS1_DATABAR_LIMITED:BigInt(131072),BF_PATCHCODE:BigInt(262144),BF_CODE_32:BigInt(16777216),BF_PDF417:BigInt(33554432),BF_QR_CODE:BigInt(67108864),BF_DATAMATRIX:BigInt(134217728),BF_AZTEC:BigInt(268435456),BF_MAXICODE:BigInt(536870912),BF_MICRO_QR:BigInt(1073741824),BF_MICRO_PDF417:BigInt(524288),BF_GS1_COMPOSITE:BigInt(2147483648),BF_MSI_CODE:BigInt(1048576),BF_CODE_11:BigInt(2097152),BF_TWO_DIGIT_ADD_ON:BigInt(4194304),BF_FIVE_DIGIT_ADD_ON:BigInt(8388608),BF_MATRIX_25:BigInt(68719476736),BF_POSTALCODE:BigInt(0x3f0000000000000),BF_NONSTANDARD_BARCODE:BigInt(4294967296),BF_USPSINTELLIGENTMAIL:BigInt(4503599627370496),BF_POSTNET:BigInt(9007199254740992),BF_PLANET:BigInt(0x40000000000000),BF_AUSTRALIANPOST:BigInt(0x80000000000000),BF_RM4SCC:BigInt(72057594037927940),BF_KIX:BigInt(0x200000000000000),BF_DOTCODE:BigInt(8589934592),BF_PHARMACODE_ONE_TRACK:BigInt(17179869184),BF_PHARMACODE_TWO_TRACK:BigInt(34359738368),BF_PHARMACODE:BigInt(51539607552)};var _a,va,ya,wa;!function(t){t[t.EBRT_STANDARD_RESULT=0]="EBRT_STANDARD_RESULT",t[t.EBRT_CANDIDATE_RESULT=1]="EBRT_CANDIDATE_RESULT",t[t.EBRT_PARTIAL_RESULT=2]="EBRT_PARTIAL_RESULT"}(_a||(_a={})),function(t){t[t.QRECL_ERROR_CORRECTION_H=0]="QRECL_ERROR_CORRECTION_H",t[t.QRECL_ERROR_CORRECTION_L=1]="QRECL_ERROR_CORRECTION_L",t[t.QRECL_ERROR_CORRECTION_M=2]="QRECL_ERROR_CORRECTION_M",t[t.QRECL_ERROR_CORRECTION_Q=3]="QRECL_ERROR_CORRECTION_Q"}(va||(va={})),function(t){t[t.LM_AUTO=1]="LM_AUTO",t[t.LM_CONNECTED_BLOCKS=2]="LM_CONNECTED_BLOCKS",t[t.LM_STATISTICS=4]="LM_STATISTICS",t[t.LM_LINES=8]="LM_LINES",t[t.LM_SCAN_DIRECTLY=16]="LM_SCAN_DIRECTLY",t[t.LM_STATISTICS_MARKS=32]="LM_STATISTICS_MARKS",t[t.LM_STATISTICS_POSTAL_CODE=64]="LM_STATISTICS_POSTAL_CODE",t[t.LM_CENTRE=128]="LM_CENTRE",t[t.LM_ONED_FAST_SCAN=256]="LM_ONED_FAST_SCAN",t[t.LM_REV=-2147483648]="LM_REV",t[t.LM_SKIP=0]="LM_SKIP"}(ya||(ya={})),function(t){t[t.DM_DIRECT_BINARIZATION=1]="DM_DIRECT_BINARIZATION",t[t.DM_THRESHOLD_BINARIZATION=2]="DM_THRESHOLD_BINARIZATION",t[t.DM_GRAY_EQUALIZATION=4]="DM_GRAY_EQUALIZATION",t[t.DM_SMOOTHING=8]="DM_SMOOTHING",t[t.DM_MORPHING=16]="DM_MORPHING",t[t.DM_DEEP_ANALYSIS=32]="DM_DEEP_ANALYSIS",t[t.DM_SHARPENING=64]="DM_SHARPENING",t[t.DM_BASED_ON_LOC_BIN=128]="DM_BASED_ON_LOC_BIN",t[t.DM_SHARPENING_SMOOTHING=256]="DM_SHARPENING_SMOOTHING",t[t.DM_REV=-2147483648]="DM_REV",t[t.DM_SKIP=0]="DM_SKIP"}(wa||(wa={})),be._defaultTemplate="ReadSingleBarcode";export{ma as BarcodeReaderModule,ha as BarcodeScanner,bs as CameraEnhancer,Ue as CameraEnhancerModule,On as CameraView,be as CaptureVisionRouter,ae as CaptureVisionRouterModule,Ae as CapturedResultReceiver,vt as CoreModule,mi as DrawingItem,En as DrawingStyleManager,pa as EnumBarcodeFormat,s as EnumBufferOverflowProtectionMode,yt as EnumCapturedResultItemType,o as EnumColourChannelUsageType,wt as EnumCornerType,xt as EnumCrossVerificationStatus,wa as EnumDeblurMode,Je as EnumDrawingItemMediaType,Qe as EnumDrawingItemState,$e as EnumEnhancedFeatures,Ct as EnumErrorCode,_a as EnumExtendedBarcodeResultType,Et as EnumGrayscaleEnhancementMode,St as EnumGrayscaleTransformationMode,a as EnumImagePixelFormat,le as EnumImageSourceState,Tt as EnumImageTagType,Ot as EnumIntermediateResultUnitType,ya as EnumLocalizationMode,jt as EnumOptimizationMode,bt as EnumPDFReadingMode,De as EnumPresetTemplate,va as EnumQRCodeErrorCorrectionLevel,It as EnumRasterDataSource,At as EnumRegionObjectElementType,Ut as EnumResultStatus,Nt as EnumScanMode,Rt as EnumSectionType,Es as Feedback,Ai as GroupDrawingItem,Ei as ImageDrawingItem,Ps as ImageEditorView,ho as ImageManager,J as ImageSourceAdapter,Re as IntermediateResultReceiver,io as LicenseManager,ro as LicenseModule,xi as LineDrawingItem,Uo as MultiFrameResultCrossFilter,Oi as QuadDrawingItem,pi as RectDrawingItem,Ti as TextDrawingItem,po as UtilityModule,B as _getNorImageData,M as _saveToFile,k as _toBlob,F as _toCanvas,P as _toImage,ut as bDebug,R as checkIsLink,D as compareVersion,rt as doOrWaitAsyncDependency,at as getNextTaskID,L as handleEngineResourcePaths,ft as innerVersions,_ as isArc,v as isContour,C as isDSImageData,E as isDSRect,S as isImageTag,T as isLineSegment,p as isObject,w as isOriginalDsImageData,b as isPoint,I as isPolygon,x as isQuad,O as isRect,_t as loadWasm,it as mapAsyncDependency,gt as mapPackageRegister,ht as mapTaskCallBack,lt as onLog,A as requestResource,dt as setBDebug,ct as setOnLog,nt as waitAsyncDependency,st as worker,mt as workerAutoResources}; diff --git a/dist/dbr.no-content-bundle.esm.js b/dist/dbr.no-content-bundle.esm.js index ccd0ac5..26f55b6 100644 --- a/dist/dbr.no-content-bundle.esm.js +++ b/dist/dbr.no-content-bundle.esm.js @@ -4,8 +4,8 @@ * @website http://www.dynamsoft.com * @copyright Copyright 2025, Dynamsoft Corporation * @author Dynamsoft -* @version 10.4.3100 +* @version 10.5.3000 * @fileoverview Dynamsoft JavaScript Library for Barcode Reader * More info on dbr JS: https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/ */ -import{CaptureVisionRouter as o}from"dynamsoft-capture-vision-router";export*from"dynamsoft-capture-vision-router";export*from"dynamsoft-core";export*from"dynamsoft-license";export*from"dynamsoft-camera-enhancer";export*from"dynamsoft-barcode-reader";export*from"dynamsoft-utility";o._defaultTemplate="ReadSingleBarcode"; +import{CoreModule as e,EnumCapturedResultItemType as t,_toCanvas as i,EnumImagePixelFormat as s}from"dynamsoft-core";export*from"dynamsoft-core";import{CaptureVisionRouter as n,CapturedResultReceiver as o}from"dynamsoft-capture-vision-router";export*from"dynamsoft-capture-vision-router";import{CameraView as r,CameraEnhancer as a}from"dynamsoft-camera-enhancer";export*from"dynamsoft-camera-enhancer";import{LicenseManager as c}from"dynamsoft-license";export*from"dynamsoft-license";import{MultiFrameResultCrossFilter as l}from"dynamsoft-utility";export*from"dynamsoft-utility";export*from"dynamsoft-barcode-reader";function d(e,t,i,s){if("a"===i&&!s)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!s:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?s:"a"===i?s.call(e):s?s.value:t.get(e)}function u(e,t,i,s,n){if("m"===s)throw new TypeError("Private method is not writable");if("a"===s&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===s?n.call(e,i):n?n.value=i:t.set(e,i),i}"function"==typeof SuppressedError&&SuppressedError;const h="undefined"==typeof self,f="function"==typeof importScripts,m=(()=>{if(!f){if(!h&&document.currentScript){let e=document.currentScript.src,t=e.indexOf("?");if(-1!=t)e=e.substring(0,t);else{let t=e.indexOf("#");-1!=t&&(e=e.substring(0,t))}return e.substring(0,e.lastIndexOf("/")+1)}return"./"}})(),g=e=>{if(null==e&&(e="./"),h||f);else{let t=document.createElement("a");t.href=e,e=t.href}return e.endsWith("/")||(e+="/"),e};var p,y,w;!function(e){e[e.SM_SINGLE=0]="SM_SINGLE",e[e.SM_MULTI_UNIQUE=1]="SM_MULTI_UNIQUE"}(p||(p={})),function(e){e[e.OM_NONE=0]="OM_NONE",e[e.OM_SPEED=1]="OM_SPEED",e[e.OM_COVERAGE=2]="OM_COVERAGE",e[e.OM_BALANCE=3]="OM_BALANCE",e[e.OM_DPM=4]="OM_DPM",e[e.OM_DENSE=5]="OM_DENSE"}(y||(y={})),function(e){e[e.RS_SUCCESS=0]="RS_SUCCESS",e[e.RS_CANCELLED=1]="RS_CANCELLED",e[e.RS_FAILED=2]="RS_FAILED"}(w||(w={}));var S={license:"",scanMode:p.SM_SINGLE,templateFilePath:void 0,utilizedTemplateNames:{single:"ReadSingleBarcode",multi_unique:"ReadBarcodes_SpeedFirst",image:"ReadBarcodes_ReadRateFirst"},engineResourcePaths:{rootDirectory:m},barcodeFormats:void 0,duplicateForgetTime:3e3,container:void 0,onUniqueBarcodeScanned:void 0,showResultView:!1,showUploadImageButton:!1,removePoweredByMessage:!1,uiPath:m,scannerViewConfig:{container:void 0,showCloseButton:!1},resultViewConfig:{container:void 0,toolbarButtonsConfig:{clear:{label:"Clear",className:"btn-clear",isHidden:!1},done:{label:"Done",className:"btn-done",isHidden:!1}}}};const _=e=>e&&"object"==typeof e&&"function"==typeof e.then,b=(async()=>{})().constructor;class E extends b{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(e){let t;this._task=e,_(e)?t=e:"function"==typeof e&&(t=new b(e)),t&&(async()=>{try{const i=await t;e===this._task&&this.resolve(i)}catch(t){e===this._task&&this.reject(t)}})()}get isEmpty(){return null==this._task}constructor(e){let t,i;super(((e,s)=>{t=e,i=s})),this._s="pending",this.resolve=e=>{this.isPending&&(_(e)?this.task=e:(this._s="fulfilled",t(e)))},this.reject=e=>{this.isPending&&(this._s="rejected",i(e))},this.task=e}}const v=()=>window.matchMedia("(orientation: landscape)").matches;function R(e,t){for(const s in t)"Object"===(i=t[s],Object.prototype.toString.call(i).slice(8,-1))&&s in e?R(e[s],t[s]):e[s]=t[s];var i;return e}var C,I,x,M,N,q,L,T,O,A,V,B,k,D,F,P,U,j,G,H,W;class z{constructor(e){if(C.add(this),M.set(this,void 0),N.set(this,{status:{code:w.RS_SUCCESS,message:"Success."},barcodeResults:[]}),q.set(this,!1),L.set(this,void 0),T.set(this,void 0),this.config=S,e&&"object"!=typeof e||Array.isArray(e))throw"Invalid config.";R(this.config,e)}async launch(){if(d(this,q,"f"))throw new Error("The BarcodeScanner instance has been destroyed.");if(d(z,I,"f",x)&&!d(z,I,"f",x).isFulfilled)throw new Error("Cannot call `launch()` while a previous task is still running.");return u(z,I,new E,"f",x),await d(this,C,"m",O).call(this),d(z,I,"f",x)}async decode(e,t="ReadBarcodes_Default"){return u(this,T,t,"f"),await d(this,C,"m",A).call(this,!0),this._cvRouter.capture(e,t)}dispose(){u(this,q,!0,"f"),d(z,I,"f",x)&&d(z,I,"f",x).isPending&&d(z,I,"f",x).resolve(d(this,N,"f")),this._cameraEnhancer?.dispose(),this._cameraView?.dispose(),this._cvRouter?.dispose(),this._cameraEnhancer=null,this._cameraView=null,this._cvRouter=null,window.removeEventListener("resize",d(this,M,"f")),document.querySelector(".scanner-view-container")?.remove(),document.querySelector(".result-view-container")?.remove(),document.querySelector(".barcode-scanner-container")?.remove(),document.querySelector(".loading-page")?.remove()}}I=z,M=new WeakMap,N=new WeakMap,q=new WeakMap,L=new WeakMap,T=new WeakMap,C=new WeakSet,O=async function(){try{await d(this,C,"m",A).call(this);try{await this._cameraEnhancer.open()}catch(e){d(this,C,"m",W).call(this);document.querySelector(".no-camera-view").style.display="flex"}await this._cvRouter.startCapturing(d(this,T,"f"))}catch(e){d(this,N,"f").status={code:w.RS_FAILED,message:e.message||e},d(z,I,"f",x).reject(new Error(d(this,N,"f").status.message)),this.dispose()}finally{const e=document.querySelector(".loading-page");e&&(e.style.display="none")}},A=async function(t=!1){e.engineResourcePaths=this.config.engineResourcePaths,t||(this._cameraView=await r.createInstance(),this.config.scanMode===p.SM_SINGLE&&(this._cameraView._capturedResultReceiver.onCapturedResultReceived=()=>{}),await d(this,C,"m",B).call(this)),await c.initLicense(this.config.license||"",{executeNow:!0}),this._cvRouter=this._cvRouter||await n.createInstance(),await d(this,C,"m",V).call(this,t),t||(this._cameraEnhancer=await a.createInstance(this._cameraView),this._cvRouter.setInput(this._cameraEnhancer),d(this,C,"m",k).call(this),await d(this,C,"m",D).call(this))},V=async function(e=!1){e||(this.config.scanMode===p.SM_SINGLE?u(this,T,this.config.utilizedTemplateNames.single,"f"):this.config.scanMode===p.SM_MULTI_UNIQUE&&u(this,T,this.config.utilizedTemplateNames.multi_unique,"f")),this.config.templateFilePath&&await this._cvRouter.initSettings(this.config.templateFilePath);const i=await this._cvRouter.getSimplifiedSettings(d(this,T,"f"));e||this.config.scanMode!==p.SM_SINGLE||(i.capturedResultItemTypes=t.CRIT_ORIGINAL_IMAGE|t.CRIT_BARCODE);let s=this.config.barcodeFormats;if(s){Array.isArray(s)||(s=[s]),i.barcodeSettings.barcodeFormatIds=BigInt(0);for(let e=0;e{if("string"!=typeof e)throw new TypeError("Invalid url.");const t=await fetch(e);if(!t.ok)throw Error("Network Error: "+t.statusText);const i=await t.text();if(!i.trim().startsWith("<"))throw Error("Unable to get valid HTMLElement.");const s=document.createElement("div");if(s.insertAdjacentHTML("beforeend",i),1===s.childElementCount&&s.firstChild instanceof HTMLTemplateElement)return s.firstChild.content;const n=new DocumentFragment;for(let e of s.children)n.append(e);return n})(t);i.querySelectorAll("style").forEach((e=>{document.head.appendChild(e.cloneNode(!0))})),u(this,L,i.querySelector(".result-item"),"f");const s=i.querySelector(".btn-clear");if(s&&(s.addEventListener("click",(()=>{d(this,N,"f").barcodeResults=[],d(this,C,"m",G).call(this)})),this.config?.resultViewConfig?.toolbarButtonsConfig?.clear)){const e=this.config.resultViewConfig.toolbarButtonsConfig.clear;s.style.display=e.isHidden?"none":"flex",s.className=e.className?e.className:"btn-clear",s.innerText=e.label?e.label:"Clear",e.isHidden&&(i.querySelector(".toolbar-btns").style.justifyContent="center")}const n=i.querySelector(".btn-done");if(n&&(n.addEventListener("click",(()=>{const e=document.querySelector(".loading-page");e&&"none"===getComputedStyle(e).display&&this.dispose()})),this.config?.resultViewConfig?.toolbarButtonsConfig?.done)){const e=this.config.resultViewConfig.toolbarButtonsConfig.done;n.style.display=e.isHidden?"none":"flex",n.className=e.className?e.className:"btn-done",n.innerText=e.label?e.label:"Done",e.isHidden&&(i.querySelector(".toolbar-btns").style.justifyContent="center")}const o=this.config?.scannerViewConfig?.showCloseButton;if(o){const e=i.querySelector(".btn-close");e&&(e.style.display="",e.addEventListener("click",(()=>{d(this,N,"f").barcodeResults=[],d(this,N,"f").status={code:w.RS_CANCELLED,message:"Cancelled."},this.dispose()})))}this.config.showUploadImageButton&&d(this,C,"m",W).call(this,i.querySelector(".btn-upload-image"));const r=this._cameraView.getUIElement();r.shadowRoot.querySelector(".dce-sel-camera").remove(),r.shadowRoot.querySelector(".dce-sel-resolution").remove(),this._cameraView.setVideoFit("cover");const a=i.querySelector(".barcode-scanner-container");a.style.display=v()?"flex":"";const c=this.config.showResultView&&this.config.scanMode!==p.SM_SINGLE;let l;if(this.config.container?(a.style.position="relative",l=this.config.container):l=document.body,"string"==typeof l&&(l=document.querySelector(l),null===l))throw new Error("Failed to get the container");let h=this.config.scannerViewConfig.container;if("string"==typeof h&&(h=document.querySelector(h),null===h))throw new Error("Failed to get the container of the scanner view.");let f=this.config.resultViewConfig.container;if("string"==typeof f&&(f=document.querySelector(f),null===f))throw new Error("Failed to get the container of the result view.");const m=i.querySelector(".scanner-view-container"),y=i.querySelector(".result-view-container"),S=i.querySelector(".loading-page");m.append(S),h&&(m.append(r),h.append(m)),f&&f.append(y),h||f?h&&!f?(this.config.container||(y.style.position="absolute"),f=y,l.append(y)):!h&&f&&(this.config.container||(m.style.position="absolute"),h=m,m.append(r),l.append(m)):(h=m,f=y,c&&(Object.assign(m.style,{width:v()?"50%":"100%",height:v()?"100%":"50%"}),Object.assign(y.style,{width:v()?"50%":"100%",height:v()?"100%":"50%"})),m.append(r),l.append(a)),document.querySelector(".result-view-container").style.display=c?"":"none",this.config.removePoweredByMessage&&(r.shadowRoot.querySelector(".dce-msg-poweredby").style.display="none",document.querySelector(".no-result-svg").style.display="none"),u(this,M,(()=>{Object.assign(a.style,{display:v()?"flex":""}),!c||this.config.scannerViewConfig.container||this.config.resultViewConfig.container||(Object.assign(h.style,{width:v()?"50%":"100%",height:v()?"100%":"50%"}),Object.assign(f.style,{width:v()?"50%":"100%",height:v()?"100%":"50%"}))}),"f"),window.addEventListener("resize",d(this,M,"f")),this._cameraView._createDrawingLayer(2)},k=function(){const e=new o;let t=0;e.onCapturedResultReceived=async e=>{e.barcodeResultItems&&(this.config.scanMode===p.SM_SINGLE?2==++t&&d(this,C,"m",F).call(this,e):d(this,C,"m",P).call(this,e))},this._cvRouter.addResultReceiver(e)},D=async function(){const e=new l;e.enableResultCrossVerification(2,!0),e.enableResultDeduplication(2,!0),e.setDuplicateForgetTime(2,this.config.duplicateForgetTime),e.onDecodedBarcodesReceived=()=>{},await this._cvRouter.addResultFilter(e)},F=function(e){const n=this._cameraView.getUIElement().shadowRoot;new Promise((t=>{if(e.barcodeResultItems.length>1){d(this,C,"m",j).call(this);for(let i of e.barcodeResultItems){let e=0,s=0;for(let t=0;t<4;++t){let n=i.location.points[t];e+=n.x,s+=n.y}let o=this._cameraEnhancer.convertToClientCoordinates({x:e/4,y:s/4}),r=document.createElement("div");r.className="single-barcode-result-option",Object.assign(r.style,{position:"fixed",width:"32px",height:"32px",border:"#fff solid 4px","box-sizing":"border-box","border-radius":"16px",background:"#080",cursor:"pointer",transform:"translate(-50%, -50%)"}),r.style.left=o.x+"px",r.style.top=o.y+"px",r.addEventListener("click",(()=>{t(i)})),n.append(r)}}else t(e.barcodeResultItems[0])})).then((n=>{const o=e.items.filter((e=>e.type===t.CRIT_ORIGINAL_IMAGE))[0].imageData,r={status:{code:w.RS_SUCCESS,message:"Success."},originalImageResult:o,barcodeImage:(()=>{const e=i(o),t=n.location.points,r=Math.min(...t.map((e=>e.x))),a=Math.min(...t.map((e=>e.y))),c=Math.max(...t.map((e=>e.x)))-r,l=Math.max(...t.map((e=>e.y)))-a,d=document.createElement("canvas");d.width=c,d.height=l;const u=d.getContext("2d");u.beginPath(),u.moveTo(t[0].x-r,t[0].y-a);for(let e=1;ee.id===`${i.formatString}_${i.text}`));-1===e?(i.count=1,d(this,N,"f").barcodeResults.unshift(i),d(this,C,"m",G).call(this,i)):(d(this,N,"f").barcodeResults[e].count++,d(this,C,"m",H).call(this,e)),this.config.onUniqueBarcodeScanned&&this.config.onUniqueBarcodeScanned(i)}},U=function(e){const t=d(this,L,"f").cloneNode(!0);t.querySelector(".format-string").innerText=e.formatString;t.querySelector(".text-string").innerText=e.text.replace(/\n|\r/g,""),t.id=`${e.formatString}_${e.text}`;return t.querySelector(".delete-icon").addEventListener("click",(()=>{const t=[...document.querySelectorAll(".main-list .result-item")],i=t.findIndex((t=>t.id===`${e.formatString}_${e.text}`));d(this,N,"f").barcodeResults.splice(i,1),t[i].remove()})),t},j=function(){const e=this._cameraView.getUIElement().shadowRoot;if(e.querySelector(".single-mode-mask"))return;const t=document.createElement("div");t.className="single-mode-mask",Object.assign(t.style,{width:"100%",height:"100%",position:"absolute",top:"0",left:"0",right:"0",bottom:"0","background-color":"#4C4C4C",opacity:"0.5"}),e.append(t),this._cameraEnhancer.pause(),this._cvRouter.stopCapturing()},G=function(e){const t=document.querySelector(".no-result-svg");if(!(this.config.showResultView&&this.config.scanMode!==p.SM_SINGLE))return;const i=document.querySelector(".main-list");if(!e)return i.textContent="",void(t.style.display="");t.style.display="none";const s=d(this,C,"m",U).call(this,e);i.insertBefore(s,document.querySelector(".result-item"))},H=function(e){const t=document.querySelectorAll(".main-list .result-item"),i=t[e].querySelector(".result-count");let s=parseInt(i.textContent.replace("x",""));t[e].querySelector(".result-count").textContent="x"+ ++s},W=function(e){e||(e=document.querySelector(".btn-upload-image")),e&&(e.style.display="",e.addEventListener("change",(async e=>{const t=e.target.files,i={status:{code:w.RS_SUCCESS,message:"Success."},barcodeResults:[]};for(let e of t)try{const t=await this.decode(e,this.config.utilizedTemplateNames.image);t.barcodeResultItems&&i.barcodeResults.push(...t.barcodeResultItems)}catch(e){i.status={code:w.RS_FAILED,message:e.message||e},d(z,I,"f",x).reject(i.status.message),this.dispose()}d(z,I,"f",x).resolve(i),this.dispose()})))},x={value:null},n._defaultTemplate="ReadSingleBarcode";export{z as BarcodeScanner,y as EnumOptimizationMode,w as EnumResultStatus,p as EnumScanMode}; diff --git a/dist/dynamsoft-barcode-reader@10.4.31/dist/DBR-PresetTemplates.json b/dist/dynamsoft-barcode-reader@10.4.31/dist/DBR-PresetTemplates.json new file mode 100644 index 0000000..8bc3616 --- /dev/null +++ b/dist/dynamsoft-barcode-reader@10.4.31/dist/DBR-PresetTemplates.json @@ -0,0 +1,628 @@ +{ + "CaptureVisionTemplates": [ + { + "Name": "ReadBarcodes_Default", + "ImageROIProcessingNameArray": [ + "roi-read-barcodes" + ], + "Timeout": 10000 + }, + { + "Name": "ReadBarcodes_SpeedFirst", + "ImageROIProcessingNameArray": [ + "roi-read-barcodes-speed-first" + ], + "Timeout": 10000 + }, + { + "Name": "ReadBarcodes_ReadRateFirst", + "ImageROIProcessingNameArray": [ + "roi-read-barcodes-read-rate" + ], + "Timeout": 100000 + }, + { + "Name": "ReadSingleBarcode", + "ImageROIProcessingNameArray": [ + "roi-read-single-barcode" + ], + "Timeout": 10000 + }, + { + "Name": "ReadBarcodes_Balance", + "ImageROIProcessingNameArray": [ + "roi-read-barcodes-balance" + ], + "Timeout": 100000 + }, + { + "Name": "ReadDenseBarcodes", + "ImageROIProcessingNameArray": [ + "roi-read-barcodes-dense" + ], + "Timeout": 10000 + }, + { + "Name": "ReadDistantBarcodes", + "ImageROIProcessingNameArray": [ + "roi-read-barcodes-distant" + ], + "Timeout": 10000 + } + ], + "TargetROIDefOptions": [ + { + "Name": "roi-read-barcodes", + "TaskSettingNameArray": [ + "task-read-barcodes" + ] + }, + { + "Name": "roi-read-barcodes-speed-first", + "TaskSettingNameArray": [ + "task-read-barcodes-speed-first" + ] + }, + { + "Name": "roi-read-barcodes-read-rate", + "TaskSettingNameArray": [ + "task-read-barcodes-read-rate" + ] + }, + { + "Name": "roi-read-single-barcode", + "TaskSettingNameArray": [ + "task-read-single-barcode" + ] + }, + { + "Name": "roi-read-barcodes-balance", + "TaskSettingNameArray": [ + "task-read-barcodes-balance" + ] + }, + { + "Name": "roi-read-barcodes-dense", + "TaskSettingNameArray": [ + "task-read-barcodes-dense" + ] + }, + { + "Name": "roi-read-barcodes-distant", + "TaskSettingNameArray": [ + "task-read-barcodes-distant" + ] + } + ], + "BarcodeFormatSpecificationOptions": [ + { + "Name": "bfs1", + "BarcodeFormatIds": [ + "BF_PDF417", + "BF_QR_CODE", + "BF_DATAMATRIX", + "BF_AZTEC", + "BF_MICRO_QR", + "BF_MICRO_PDF417", + "BF_DOTCODE" + ], + "MirrorMode": "MM_BOTH" + }, + { + "Name": "bfs2", + "BarcodeFormatIds": [ + "BF_ALL" + ], + "MirrorMode": "MM_NORMAL" + }, + { + "Name": "bfs1-speed-first", + "BaseBarcodeFormatSpecification": "bfs1" + }, + { + "Name": "bfs2-speed-first", + "BaseBarcodeFormatSpecification": "bfs2" + }, + { + "Name": "bfs1-read-rate-first", + "BaseBarcodeFormatSpecification": "bfs1" + }, + { + "Name": "bfs2-read-rate-first", + "BaseBarcodeFormatSpecification": "bfs2" + }, + { + "Name": "bfs1-single-barcode", + "BaseBarcodeFormatSpecification": "bfs1" + }, + { + "Name": "bfs2-single-barcode", + "BaseBarcodeFormatSpecification": "bfs2" + }, + { + "Name": "bfs1-balance", + "BaseBarcodeFormatSpecification": "bfs1" + }, + { + "Name": "bfs2-balance", + "BaseBarcodeFormatSpecification": "bfs2" + }, + { + "Name": "bfs1-dense", + "BaseBarcodeFormatSpecification": "bfs1" + }, + { + "Name": "bfs2-dense", + "BaseBarcodeFormatSpecification": "bfs2" + }, + { + "Name": "bfs1-distant", + "BaseBarcodeFormatSpecification": "bfs1" + }, + { + "Name": "bfs2-distant", + "BaseBarcodeFormatSpecification": "bfs2" + } + ], + "BarcodeReaderTaskSettingOptions": [ + { + "Name": "task-read-barcodes", + "ExpectedBarcodesCount": 0, + "LocalizationModes": [ + { + "Mode": "LM_CONNECTED_BLOCKS" + }, + { + "Mode": "LM_LINES" + } + ], + "DeblurModes": [ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_THRESHOLD_BINARIZATION" + } + ], + "BarcodeFormatSpecificationNameArray": [ + "bfs1", + "bfs2" + ], + "SectionImageParameterArray": [ + { + "Section": "ST_REGION_PREDETECTION", + "ImageParameterName": "ip-read-barcodes" + }, + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip-read-barcodes" + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip-read-barcodes" + } + ] + }, + { + "Name": "task-read-barcodes-speed-first", + "ExpectedBarcodesCount": 0, + "LocalizationModes": [ + { + "Mode": "LM_SCAN_DIRECTLY", + "ScanDirection": 2 + }, + { + "Mode": "LM_CONNECTED_BLOCKS" + } + ], + "DeblurModes": [ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_THRESHOLD_BINARIZATION" + }, + { + "Mode": "DM_DEEP_ANALYSIS" + } + ], + "BarcodeFormatSpecificationNameArray": [ + "bfs1-speed-first", + "bfs2-speed-first" + ], + "SectionImageParameterArray": [ + { + "Section": "ST_REGION_PREDETECTION", + "ImageParameterName": "ip-read-barcodes-speed-first" + }, + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip-read-barcodes-speed-first" + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip-read-barcodes-speed-first" + } + ] + }, + { + "Name": "task-read-barcodes-read-rate", + "ExpectedBarcodesCount": 999, + "LocalizationModes": [ + { + "Mode": "LM_CONNECTED_BLOCKS" + }, + { + "Mode": "LM_LINES" + }, + { + "Mode": "LM_STATISTICS" + } + ], + "DeblurModes": [ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_THRESHOLD_BINARIZATION" + }, + { + "Mode": "DM_DIRECT_BINARIZATION" + }, + { + "Mode": "DM_SMOOTHING" + } + ], + "BarcodeFormatSpecificationNameArray": [ + "bfs1-read-rate-first", + "bfs2-read-rate-first" + ], + "SectionImageParameterArray": [ + { + "Section": "ST_REGION_PREDETECTION", + "ImageParameterName": "ip-read-barcodes-read-rate" + }, + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip-read-barcodes-read-rate" + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip-read-barcodes-read-rate" + } + ] + }, + { + "Name": "task-read-single-barcode", + "ExpectedBarcodesCount": 1, + "LocalizationModes": [ + { + "Mode": "LM_SCAN_DIRECTLY", + "ScanDirection": 2 + }, + { + "Mode": "LM_CONNECTED_BLOCKS" + } + ], + "DeblurModes": [ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_THRESHOLD_BINARIZATION" + }, + { + "Mode": "DM_DEEP_ANALYSIS" + } + ], + "BarcodeFormatSpecificationNameArray": [ + "bfs1-single-barcode", + "bfs2-single-barcode" + ], + "SectionImageParameterArray": [ + { + "Section": "ST_REGION_PREDETECTION", + "ImageParameterName": "ip-read-single-barcode" + }, + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip-read-single-barcode" + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip-read-single-barcode" + } + ] + }, + { + "Name": "task-read-barcodes-balance", + "ExpectedBarcodesCount": 999, + "LocalizationModes": [ + { + "Mode": "LM_CONNECTED_BLOCKS" + }, + { + "Mode": "LM_SCAN_DIRECTLY" + } + ], + "DeblurModes": [ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_THRESHOLD_BINARIZATION" + }, + { + "Mode": "DM_DIRECT_BINARIZATION" + } + ], + "BarcodeFormatSpecificationNameArray": [ + "bfs1-balance", + "bfs2-balance" + ], + "SectionImageParameterArray": [ + { + "Section": "ST_REGION_PREDETECTION", + "ImageParameterName": "ip-read-barcodes-balance" + }, + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip-read-barcodes-balance" + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip-read-barcodes-balance" + } + ] + }, + { + "Name": "task-read-barcodes-dense", + "ExpectedBarcodesCount": 0, + "LocalizationModes": [ + { + "Mode": "LM_CONNECTED_BLOCKS" + }, + { + "Mode": "LM_LINES" + } + ], + "DeblurModes": [ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_THRESHOLD_BINARIZATION" + }, + { + "Mode": "DM_DIRECT_BINARIZATION" + }, + { + "Mode": "DM_SMOOTHING" + }, + { + "Mode": "DM_GRAY_EQUALIZATION" + } + ], + "BarcodeFormatSpecificationNameArray": [ + "bfs1-dense", + "bfs2-dense" + ], + "SectionImageParameterArray": [ + { + "Section": "ST_REGION_PREDETECTION", + "ImageParameterName": "ip-read-barcodes-dense" + }, + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip-read-barcodes-dense" + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip-read-barcodes-dense" + } + ] + }, + { + "Name": "task-read-barcodes-distant", + "ExpectedBarcodesCount": 0, + "LocalizationModes": [ + { + "Mode": "LM_CONNECTED_BLOCKS" + }, + { + "Mode": "LM_LINES" + } + ], + "DeblurModes": [ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_THRESHOLD_BINARIZATION" + }, + { + "Mode": "DM_DIRECT_BINARIZATION" + } + ], + "BarcodeFormatSpecificationNameArray": [ + "bfs1-distant", + "bfs2-distant" + ], + "SectionImageParameterArray": [ + { + "Section": "ST_REGION_PREDETECTION", + "ImageParameterName": "ip-read-barcodes-distant" + }, + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip-read-barcodes-distant" + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip-read-barcodes-distant" + } + ] + } + ], + "ImageParameterOptions": [ + { + "Name": "ip-read-barcodes", + "TextDetectionMode": { + "Mode": "TTDM_LINE", + "Direction": "UNKNOWN", + "Sensitivity": 3 + }, + "IfEraseTextZone": 1, + "BinarizationModes": [ + { + "Mode": "BM_LOCAL_BLOCK", + "BlockSizeX": 71, + "BlockSizeY": 71, + "EnableFillBinaryVacancy": 0 + } + ], + "GrayscaleTransformationModes": [ + { + "Mode": "GTM_ORIGINAL" + } + ] + }, + { + "Name": "ip-read-barcodes-speed-first", + "TextDetectionMode": { + "Mode": "TTDM_LINE", + "Direction": "UNKNOWN", + "Sensitivity": 3 + }, + "IfEraseTextZone": 1, + "BinarizationModes": [ + { + "Mode": "BM_LOCAL_BLOCK", + "BlockSizeX": 27, + "BlockSizeY": 27, + "EnableFillBinaryVacancy": 1 + } + ], + "GrayscaleTransformationModes": [ + { + "Mode": "GTM_ORIGINAL" + } + ], + "ScaleDownThreshold": 2300 + }, + { + "Name": "ip-read-barcodes-read-rate", + "TextDetectionMode": { + "Mode": "TTDM_LINE", + "Direction": "UNKNOWN", + "Sensitivity": 3 + }, + "IfEraseTextZone": 1, + "BinarizationModes": [ + { + "Mode": "BM_LOCAL_BLOCK", + "BlockSizeX": 0, + "BlockSizeY": 0, + "EnableFillBinaryVacancy": 1 + } + ], + "GrayscaleTransformationModes": [ + { + "Mode": "GTM_ORIGINAL" + } + ], + "ScaleDownThreshold": 100000 + }, + { + "Name": "ip-read-single-barcode", + "TextDetectionMode": { + "Mode": "TTDM_LINE", + "Direction": "UNKNOWN", + "Sensitivity": 3 + }, + "IfEraseTextZone": 1, + "BinarizationModes": [ + { + "Mode": "BM_LOCAL_BLOCK", + "BlockSizeX": 27, + "BlockSizeY": 27, + "EnableFillBinaryVacancy": 0 + } + ], + "GrayscaleTransformationModes": [ + { + "Mode": "GTM_ORIGINAL" + } + ], + "ScaleDownThreshold": 2300 + }, + { + "Name": "ip-read-barcodes-balance", + "TextDetectionMode": { + "Mode": "TTDM_LINE", + "Direction": "UNKNOWN", + "Sensitivity": 3 + }, + "IfEraseTextZone": 1, + "BinarizationModes": [ + { + "Mode": "BM_LOCAL_BLOCK", + "BlockSizeX": 0, + "BlockSizeY": 0, + "EnableFillBinaryVacancy": 1 + } + ], + "GrayscaleTransformationModes": [ + { + "Mode": "GTM_ORIGINAL" + } + ] + }, + { + "Name": "ip-read-barcodes-dense", + "TextDetectionMode": { + "Mode": "TTDM_LINE", + "Direction": "UNKNOWN", + "Sensitivity": 3 + }, + "IfEraseTextZone": 1, + "BinarizationModes": [ + { + "Mode": "BM_LOCAL_BLOCK", + "BlockSizeX": 0, + "BlockSizeY": 0, + "EnableFillBinaryVacancy": 1 + } + ], + "GrayscaleTransformationModes": [ + { + "Mode": "GTM_ORIGINAL" + } + ], + "ScaleDownThreshold": 100000 + }, + { + "Name": "ip-read-barcodes-distant", + "TextDetectionMode": { + "Mode": "TTDM_LINE", + "Direction": "UNKNOWN", + "Sensitivity": 3 + }, + "IfEraseTextZone": 1, + "BinarizationModes": [ + { + "Mode": "BM_LOCAL_BLOCK", + "BlockSizeX": 0, + "BlockSizeY": 0, + "EnableFillBinaryVacancy": 1 + } + ], + "GrayscaleTransformationModes": [ + { + "Mode": "GTM_ORIGINAL" + } + ], + "ScaleDownThreshold": 2300 + } + ] +} \ No newline at end of file diff --git a/dist/dynamsoft-barcode-reader@10.4.31/dist/dbr.d.ts b/dist/dynamsoft-barcode-reader@10.4.31/dist/dbr.d.ts new file mode 100644 index 0000000..7e39e52 --- /dev/null +++ b/dist/dynamsoft-barcode-reader@10.4.31/dist/dbr.d.ts @@ -0,0 +1,383 @@ +import { CapturedResultItem, Quadrilateral, ImageTag, RegionObjectElement, DSImageData, EnumGrayscaleTransformationMode, EnumGrayscaleEnhancementMode, IntermediateResultExtraInfo, IntermediateResultUnit } from 'dynamsoft-core'; + +declare class BarcodeReaderModule { + static getVersion(): string; +} + +declare const EnumBarcodeFormat: { + /**No barcode format in BarcodeFormat*/ + BF_NULL: bigint; + /**All supported formats in BarcodeFormat*/ + BF_ALL: bigint; + /**Use the default barcode format settings*/ + BF_DEFAULT: bigint; + /**Combined value of BF_CODABAR, BF_CODE_128, BF_CODE_39, BF_CODE_39_Extended, BF_CODE_93, BF_EAN_13, BF_EAN_8, INDUSTRIAL_25, BF_ITF, BF_UPC_A, BF_UPC_E, BF_MSI_CODE; */ + BF_ONED: bigint; + /**Combined value of BF_GS1_DATABAR_OMNIDIRECTIONAL, BF_GS1_DATABAR_TRUNCATED, BF_GS1_DATABAR_STACKED, BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL, BF_GS1_DATABAR_EXPANDED, BF_GS1_DATABAR_EXPANDED_STACKED, BF_GS1_DATABAR_LIMITED*/ + BF_GS1_DATABAR: bigint; + /**Code 39 */ + BF_CODE_39: bigint; + /**Code 128 */ + BF_CODE_128: bigint; + /**Code 93 */ + BF_CODE_93: bigint; + /**Codabar */ + BF_CODABAR: bigint; + /**Interleaved 2 of 5 */ + BF_ITF: bigint; + /**EAN-13 */ + BF_EAN_13: bigint; + /**EAN-8 */ + BF_EAN_8: bigint; + /**UPC-A */ + BF_UPC_A: bigint; + /**UPC-E */ + BF_UPC_E: bigint; + /**Industrial 2 of 5 */ + BF_INDUSTRIAL_25: bigint; + /**CODE39 Extended */ + BF_CODE_39_EXTENDED: bigint; + /**GS1 Databar Omnidirectional*/ + BF_GS1_DATABAR_OMNIDIRECTIONAL: bigint; + /**GS1 Databar Truncated*/ + BF_GS1_DATABAR_TRUNCATED: bigint; + /**GS1 Databar Stacked*/ + BF_GS1_DATABAR_STACKED: bigint; + /**GS1 Databar Stacked Omnidirectional*/ + BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL: bigint; + /**GS1 Databar Expanded*/ + BF_GS1_DATABAR_EXPANDED: bigint; + /**GS1 Databar Expaned Stacked*/ + BF_GS1_DATABAR_EXPANDED_STACKED: bigint; + /**GS1 Databar Limited*/ + BF_GS1_DATABAR_LIMITED: bigint; + /**Patch code. */ + BF_PATCHCODE: bigint; + /**PDF417 */ + BF_CODE_32: bigint; + /**PDF417 */ + BF_PDF417: bigint; + /**QRCode */ + BF_QR_CODE: bigint; + /**DataMatrix */ + BF_DATAMATRIX: bigint; + /**AZTEC */ + BF_AZTEC: bigint; + /**MAXICODE */ + BF_MAXICODE: bigint; + /**Micro QR Code*/ + BF_MICRO_QR: bigint; + /**Micro PDF417*/ + BF_MICRO_PDF417: bigint; + /**GS1 Composite Code*/ + BF_GS1_COMPOSITE: bigint; + /**MSI Code*/ + BF_MSI_CODE: bigint; + BF_CODE_11: bigint; + BF_TWO_DIGIT_ADD_ON: bigint; + BF_FIVE_DIGIT_ADD_ON: bigint; + BF_MATRIX_25: bigint; + /**Combined value of BF2_USPSINTELLIGENTMAIL, BF2_POSTNET, BF2_PLANET, BF2_AUSTRALIANPOST, BF2_RM4SCC.*/ + BF_POSTALCODE: bigint; + /**Nonstandard barcode */ + BF_NONSTANDARD_BARCODE: bigint; + /**USPS Intelligent Mail.*/ + BF_USPSINTELLIGENTMAIL: bigint; + /**Postnet.*/ + BF_POSTNET: bigint; + /**Planet.*/ + BF_PLANET: bigint; + /**Australian Post.*/ + BF_AUSTRALIANPOST: bigint; + /**Royal Mail 4-State Customer Barcode.*/ + BF_RM4SCC: bigint; + /**KIX.*/ + BF_KIX: bigint; + /**DotCode.*/ + BF_DOTCODE: bigint; + /**_PHARMACODE_ONE_TRACK.*/ + BF_PHARMACODE_ONE_TRACK: bigint; + /**PHARMACODE_TWO_TRACK.*/ + BF_PHARMACODE_TWO_TRACK: bigint; + /**PHARMACODE.*/ + BF_PHARMACODE: bigint; +}; +type EnumBarcodeFormat = bigint; + +declare enum EnumExtendedBarcodeResultType { + EBRT_STANDARD_RESULT = 0, + EBRT_CANDIDATE_RESULT = 1, + EBRT_PARTIAL_RESULT = 2 +} + +declare enum EnumQRCodeErrorCorrectionLevel { + QRECL_ERROR_CORRECTION_H = 0, + QRECL_ERROR_CORRECTION_L = 1, + QRECL_ERROR_CORRECTION_M = 2, + QRECL_ERROR_CORRECTION_Q = 3 +} + +/** Label: DBRJS10.0.10-Check + * @enum EnumLocalizationMode + * + * Describes the localization mode. + */ +declare enum EnumLocalizationMode { + /**Not supported yet. */ + LM_AUTO = 1, + /**Localizes barcodes by searching for connected blocks. This algorithm usually gives best result and it is recommended to set ConnectedBlocks to the highest priority. */ + LM_CONNECTED_BLOCKS = 2, + /**Localizes barcodes by groups of contiguous black-white regions. This is optimized for QRCode and DataMatrix. */ + LM_STATISTICS = 4, + /**Localizes barcodes by searching for groups of lines. This is optimized for 1D and PDF417 barcodes. */ + LM_LINES = 8, + /**Localizes barcodes quickly. This mode is recommended in interactive scenario. Check @ref LM for available argument settings.*/ + LM_SCAN_DIRECTLY = 16, + /**Localizes barcodes by groups of marks.This is optimized for DPM codes. */ + LM_STATISTICS_MARKS = 32, + /**Localizes barcodes by groups of connected blocks and lines.This is optimized for postal codes. */ + LM_STATISTICS_POSTAL_CODE = 64, + /**Localizes barcodes from the centre of the image. Check @ref LM for available argument settings. */ + LM_CENTRE = 128, + /**Localizes 1D barcodes fast. Check @ref LM for available argument settings. */ + LM_ONED_FAST_SCAN = 256, + LM_REV = -2147483648, + /**Skips localization. */ + LM_SKIP = 0 +} + +/** Label: DBRJS10.0.10-Check + * @enum EnumDeblurMode + * + * Describes the deblur mode. + */ +declare enum EnumDeblurMode { + /**Performs deblur process using the direct binarization algorithm.*/ + DM_DIRECT_BINARIZATION = 1, + /**Performs deblur process using the threshold binarization algorithm.*/ + DM_THRESHOLD_BINARIZATION = 2, + /**Performs deblur process using the gray equalization algorithm.*/ + DM_GRAY_EQUALIZATION = 4, + /**Performs deblur process using the smoothing algorithm.*/ + DM_SMOOTHING = 8, + /**Performs deblur process using the morphing algorithm.*/ + DM_MORPHING = 16, + /**Performs deblur process using the deep analysis algorithm.*/ + DM_DEEP_ANALYSIS = 32, + /**Performs deblur process using the sharpening algorithm.*/ + DM_SHARPENING = 64, + /**Performs deblur process based on the binary image from the localization process.*/ + DM_BASED_ON_LOC_BIN = 128, + /**Performs deblur process using the sharpening and smoothing algorithm.*/ + DM_SHARPENING_SMOOTHING = 256, + /**Reserved setting for deblur mode.*/ + DM_REV = -2147483648, + /**Skips the deblur process.*/ + DM_SKIP = 0 +} + +interface BarcodeDetails { +} + +interface AztecDetails extends BarcodeDetails { + rows: number; + columns: number; + layerNumber: number; +} + +interface BarcodeResultItem extends CapturedResultItem { + format: EnumBarcodeFormat; + formatString: string; + text: string; + bytes: Uint8Array; + location: Quadrilateral; + confidence: number; + angle: number; + moduleSize: number; + details: BarcodeDetails; + isMirrored: boolean; + isDPM: boolean; +} + +interface DataMatrixDetails extends BarcodeDetails { + rows: number; + columns: number; + dataRegionRows: number; + dataRegionColumns: number; + dataRegionNumber: number; +} + +interface DecodedBarcodesResult { + readonly originalImageHashId: string; + readonly originalImageTag: ImageTag; + readonly barcodeResultItems: Array; + readonly errorCode: number; + readonly errorString: string; +} +declare module "dynamsoft-capture-vision-router" { + interface CapturedResultReceiver { + onDecodedBarcodesReceived?: (result: DecodedBarcodesResult) => void; + } + interface CapturedResultFilter { + onDecodedBarcodesReceived?: (result: DecodedBarcodesResult) => void; + } +} + +interface DecodedBarcodeElement extends RegionObjectElement { + format: EnumBarcodeFormat; + formatString: string; + text: string; + bytes: Uint8Array; + details: BarcodeDetails; + isDPM: boolean; + isMirrored: boolean; + angle: number; + moduleSize: number; + confidence: number; + extendedBarcodeResults: Array; +} + +interface ExtendedBarcodeResult extends DecodedBarcodeElement { + extendedBarcodeResultType: EnumExtendedBarcodeResultType; + deformation: number; + clarity: number; + samplingImage: DSImageData; +} + +interface OneDCodeDetails extends BarcodeDetails { + startCharsBytes: Array; + stopCharsBytes: Array; + checkDigitBytes: Array; + startPatternRange: number; + middlePatternRange: number; + endPatternRange: number; +} + +interface PDF417Details extends BarcodeDetails { + rows: number; + columns: number; + errorCorrectionLevel: number; + hasLeftRowIndicator: boolean; + hasRightRowIndicator: boolean; +} + +interface QRCodeDetails extends BarcodeDetails { + rows: number; + columns: number; + errorCorrectionLevel: number; + version: number; + model: number; + mode: number; + page: number; + totalPage: number; + parityData: number; + dataMaskPattern: number; + codewords: Array; +} + +interface SimplifiedBarcodeReaderSettings { + barcodeFormatIds: EnumBarcodeFormat; + expectedBarcodesCount: number; + grayscaleTransformationModes: Array; + grayscaleEnhancementModes: Array; + localizationModes: Array; + deblurModes: Array; + minResultConfidence: number; + minBarcodeTextLength: number; + barcodeTextRegExPattern: string; +} + +/** + * The `CandidateBarcodeZone` interface represents a candidate barcode zone. + */ +interface CandidateBarcodeZone { + /** Location of the candidate barcode zone within the image. */ + location: Quadrilateral; + /** Possible formats of the localized barcode. */ + possibleFormats: EnumBarcodeFormat; +} + +/** + * The `CandidateBarcodeZonesUnit` interface extends the `IntermediateResultUnit` interface and represents a unit of candidate barcode zones. + */ +interface CandidateBarcodeZonesUnit extends IntermediateResultUnit { + /** Array of candidate barcode zones represented as quadrilaterals. */ + candidateBarcodeZones: Array; +} +declare module "dynamsoft-capture-vision-router" { + interface IntermediateResultReceiver { + onCandidateBarcodeZonesUnitReceived?: (result: CandidateBarcodeZonesUnit, info: IntermediateResultExtraInfo) => void; + } +} + +interface ComplementedBarcodeImageUnit extends IntermediateResultUnit { + imageData: DSImageData; + location: Quadrilateral; +} +declare module "dynamsoft-capture-vision-router" { + interface IntermediateResultReceiver { + onComplementedBarcodeImageUnitReceived?: (result: ComplementedBarcodeImageUnit, info: IntermediateResultExtraInfo) => void; + } +} + +interface DecodedBarcodesUnit extends IntermediateResultUnit { + decodedBarcodes: Array; +} +declare module "dynamsoft-capture-vision-router" { + interface IntermediateResultReceiver { + onDecodedBarcodesReceived?: (result: DecodedBarcodesUnit, info: IntermediateResultExtraInfo) => void; + } +} + +/** + * The `DeformationResistedBarcode` interface represents a deformation-resisted barcode image. + */ +interface DeformationResistedBarcode { + /** Format of the barcode, as defined by `EnumBarcodeFormat`. */ + format: EnumBarcodeFormat; + /** Image data of the deformation-resisted barcode image. */ + imageData: DSImageData; + /** Location of the deformation-resisted barcode within the image. */ + location: Quadrilateral; +} + +/** + * The `DeformationResistedBarcodeImageUnit` interface extends the `IntermediateResultUnit` interface and represents a unit that holds the deformation-resisted barcode which includes the corresponding image data, its location, and the barcode format. + */ +interface DeformationResistedBarcodeImageUnit extends IntermediateResultUnit { + /** The deformation-resisted barcode. */ + deformationResistedBarcode: DeformationResistedBarcode; +} +declare module "dynamsoft-capture-vision-router" { + interface IntermediateResultReceiver { + onDeformationResistedBarcodeImageUnitReceived?: (result: DeformationResistedBarcodeImageUnit, info: IntermediateResultExtraInfo) => void; + } +} + +interface LocalizedBarcodeElement extends RegionObjectElement { + possibleFormats: EnumBarcodeFormat; + possibleFormatsString: string; + angle: number; + moduleSize: number; + confidence: number; +} + +interface LocalizedBarcodesUnit extends IntermediateResultUnit { + localizedBarcodes: Array; +} +declare module "dynamsoft-capture-vision-router" { + interface IntermediateResultReceiver { + onLocalizedBarcodesReceived?: (result: LocalizedBarcodesUnit, info: IntermediateResultExtraInfo) => void; + } +} + +interface ScaledUpBarcodeImageUnit extends IntermediateResultUnit { + imageData: DSImageData; +} +declare module "dynamsoft-capture-vision-router" { + interface IntermediateResultReceiver { + onScaledUpBarcodeImageUnitReceived?: (result: ScaledUpBarcodeImageUnit, info: IntermediateResultExtraInfo) => void; + } +} + +export { AztecDetails, BarcodeDetails, BarcodeReaderModule, BarcodeResultItem, CandidateBarcodeZone, CandidateBarcodeZonesUnit, ComplementedBarcodeImageUnit, DataMatrixDetails, DecodedBarcodeElement, DecodedBarcodesResult, DecodedBarcodesUnit, DeformationResistedBarcode, DeformationResistedBarcodeImageUnit, EnumBarcodeFormat, EnumDeblurMode, EnumExtendedBarcodeResultType, EnumLocalizationMode, EnumQRCodeErrorCorrectionLevel, ExtendedBarcodeResult, LocalizedBarcodeElement, LocalizedBarcodesUnit, OneDCodeDetails, PDF417Details, QRCodeDetails, ScaledUpBarcodeImageUnit, SimplifiedBarcodeReaderSettings }; diff --git a/dist/dynamsoft-barcode-reader@10.4.31/dist/dbr.esm.js b/dist/dynamsoft-barcode-reader@10.4.31/dist/dbr.esm.js new file mode 100644 index 0000000..92e4c66 --- /dev/null +++ b/dist/dynamsoft-barcode-reader@10.4.31/dist/dbr.esm.js @@ -0,0 +1,11 @@ +/*! +* Dynamsoft JavaScript Library +* @product Dynamsoft Barcode Reader JS Edition +* @website http://www.dynamsoft.com +* @copyright Copyright 2024, Dynamsoft Corporation +* @author Dynamsoft +* @version 10.4.31 +* @fileoverview Dynamsoft JavaScript Library for Barcode Reader +* More info on dbr JS: https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/ +*/ +import{CoreModule as _,workerAutoResources as I,mapPackageRegister as B,compareVersion as R,innerVersions as n}from"dynamsoft-core";const t="undefined"==typeof self,A="function"==typeof importScripts,E=(()=>{if(!A){if(!t&&document.currentScript){let _=document.currentScript.src,I=_.indexOf("?");if(-1!=I)_=_.substring(0,I);else{let I=_.indexOf("#");-1!=I&&(_=_.substring(0,I))}return _.substring(0,_.lastIndexOf("/")+1)}return"./"}})(),T=_=>{if(null==_&&(_="./"),t||A);else{let I=document.createElement("a");I.href=_,_=I.href}return _.endsWith("/")||(_+="/"),_};_.engineResourcePaths.dbr={version:"10.4.31",path:E,isInternal:!0},I.dbr={js:!1,wasm:!0,deps:["license","dip"]},B.dbr={};const i="1.4.21";"string"!=typeof _.engineResourcePaths.std&&R(_.engineResourcePaths.std.version,i)<0&&(_.engineResourcePaths.std={version:i,path:T(E+`../../dynamsoft-capture-vision-std@${i}/dist/`),isInternal:!0});const D="2.4.31";(!_.engineResourcePaths.dip||"string"!=typeof _.engineResourcePaths.dip&&R(_.engineResourcePaths.dip.version,D)<0)&&(_.engineResourcePaths.dip={version:D,path:T(E+`../../dynamsoft-image-processing@${D}/dist/`),isInternal:!0});class O{static getVersion(){const _=n.dbr&&n.dbr.wasm,I=n.dbr&&n.dbr.worker;return`10.4.31(Worker: ${I||"Not Loaded"}, Wasm: ${_||"Not Loaded"})`}}const e={BF_NULL:BigInt(0),BF_ALL:BigInt("0xFFFFFFFEFFFFFFFF"),BF_DEFAULT:BigInt(4265345023),BF_ONED:BigInt(3147775),BF_GS1_DATABAR:BigInt(260096),BF_CODE_39:BigInt(1),BF_CODE_128:BigInt(2),BF_CODE_93:BigInt(4),BF_CODABAR:BigInt(8),BF_ITF:BigInt(16),BF_EAN_13:BigInt(32),BF_EAN_8:BigInt(64),BF_UPC_A:BigInt(128),BF_UPC_E:BigInt(256),BF_INDUSTRIAL_25:BigInt(512),BF_CODE_39_EXTENDED:BigInt(1024),BF_GS1_DATABAR_OMNIDIRECTIONAL:BigInt(2048),BF_GS1_DATABAR_TRUNCATED:BigInt(4096),BF_GS1_DATABAR_STACKED:BigInt(8192),BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL:BigInt(16384),BF_GS1_DATABAR_EXPANDED:BigInt(32768),BF_GS1_DATABAR_EXPANDED_STACKED:BigInt(65536),BF_GS1_DATABAR_LIMITED:BigInt(131072),BF_PATCHCODE:BigInt(262144),BF_CODE_32:BigInt(16777216),BF_PDF417:BigInt(33554432),BF_QR_CODE:BigInt(67108864),BF_DATAMATRIX:BigInt(134217728),BF_AZTEC:BigInt(268435456),BF_MAXICODE:BigInt(536870912),BF_MICRO_QR:BigInt(1073741824),BF_MICRO_PDF417:BigInt(524288),BF_GS1_COMPOSITE:BigInt(2147483648),BF_MSI_CODE:BigInt(1048576),BF_CODE_11:BigInt(2097152),BF_TWO_DIGIT_ADD_ON:BigInt(4194304),BF_FIVE_DIGIT_ADD_ON:BigInt(8388608),BF_MATRIX_25:BigInt(68719476736),BF_POSTALCODE:BigInt(0x3f0000000000000),BF_NONSTANDARD_BARCODE:BigInt(4294967296),BF_USPSINTELLIGENTMAIL:BigInt(4503599627370496),BF_POSTNET:BigInt(9007199254740992),BF_PLANET:BigInt(0x40000000000000),BF_AUSTRALIANPOST:BigInt(0x80000000000000),BF_RM4SCC:BigInt(72057594037927940),BF_KIX:BigInt(0x200000000000000),BF_DOTCODE:BigInt(8589934592),BF_PHARMACODE_ONE_TRACK:BigInt(17179869184),BF_PHARMACODE_TWO_TRACK:BigInt(34359738368),BF_PHARMACODE:BigInt(51539607552)};var C,S,N,L;!function(_){_[_.EBRT_STANDARD_RESULT=0]="EBRT_STANDARD_RESULT",_[_.EBRT_CANDIDATE_RESULT=1]="EBRT_CANDIDATE_RESULT",_[_.EBRT_PARTIAL_RESULT=2]="EBRT_PARTIAL_RESULT"}(C||(C={})),function(_){_[_.QRECL_ERROR_CORRECTION_H=0]="QRECL_ERROR_CORRECTION_H",_[_.QRECL_ERROR_CORRECTION_L=1]="QRECL_ERROR_CORRECTION_L",_[_.QRECL_ERROR_CORRECTION_M=2]="QRECL_ERROR_CORRECTION_M",_[_.QRECL_ERROR_CORRECTION_Q=3]="QRECL_ERROR_CORRECTION_Q"}(S||(S={})),function(_){_[_.LM_AUTO=1]="LM_AUTO",_[_.LM_CONNECTED_BLOCKS=2]="LM_CONNECTED_BLOCKS",_[_.LM_STATISTICS=4]="LM_STATISTICS",_[_.LM_LINES=8]="LM_LINES",_[_.LM_SCAN_DIRECTLY=16]="LM_SCAN_DIRECTLY",_[_.LM_STATISTICS_MARKS=32]="LM_STATISTICS_MARKS",_[_.LM_STATISTICS_POSTAL_CODE=64]="LM_STATISTICS_POSTAL_CODE",_[_.LM_CENTRE=128]="LM_CENTRE",_[_.LM_ONED_FAST_SCAN=256]="LM_ONED_FAST_SCAN",_[_.LM_REV=-2147483648]="LM_REV",_[_.LM_SKIP=0]="LM_SKIP"}(N||(N={})),function(_){_[_.DM_DIRECT_BINARIZATION=1]="DM_DIRECT_BINARIZATION",_[_.DM_THRESHOLD_BINARIZATION=2]="DM_THRESHOLD_BINARIZATION",_[_.DM_GRAY_EQUALIZATION=4]="DM_GRAY_EQUALIZATION",_[_.DM_SMOOTHING=8]="DM_SMOOTHING",_[_.DM_MORPHING=16]="DM_MORPHING",_[_.DM_DEEP_ANALYSIS=32]="DM_DEEP_ANALYSIS",_[_.DM_SHARPENING=64]="DM_SHARPENING",_[_.DM_BASED_ON_LOC_BIN=128]="DM_BASED_ON_LOC_BIN",_[_.DM_SHARPENING_SMOOTHING=256]="DM_SHARPENING_SMOOTHING",_[_.DM_REV=-2147483648]="DM_REV",_[_.DM_SKIP=0]="DM_SKIP"}(L||(L={}));export{O as BarcodeReaderModule,e as EnumBarcodeFormat,L as EnumDeblurMode,C as EnumExtendedBarcodeResultType,N as EnumLocalizationMode,S as EnumQRCodeErrorCorrectionLevel}; diff --git a/dist/dynamsoft-barcode-reader@10.4.31/dist/dbr.js b/dist/dynamsoft-barcode-reader@10.4.31/dist/dbr.js new file mode 100644 index 0000000..7b8b3d0 --- /dev/null +++ b/dist/dynamsoft-barcode-reader@10.4.31/dist/dbr.js @@ -0,0 +1,11 @@ +/*! +* Dynamsoft JavaScript Library +* @product Dynamsoft Barcode Reader JS Edition +* @website http://www.dynamsoft.com +* @copyright Copyright 2024, Dynamsoft Corporation +* @author Dynamsoft +* @version 10.4.31 +* @fileoverview Dynamsoft JavaScript Library for Barcode Reader +* More info on dbr JS: https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/ +*/ +!function(_,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("dynamsoft-core")):"function"==typeof define&&define.amd?define(["exports","dynamsoft-core"],e):e(((_="undefined"!=typeof globalThis?globalThis:_||self).Dynamsoft=_.Dynamsoft||{},_.Dynamsoft.DBR={}),_.Dynamsoft.Core)}(this,(function(_,e){"use strict";const n="undefined"==typeof self,t="function"==typeof importScripts,I=(()=>{if(!t){if(!n&&document.currentScript){let _=document.currentScript.src,e=_.indexOf("?");if(-1!=e)_=_.substring(0,e);else{let e=_.indexOf("#");-1!=e&&(_=_.substring(0,e))}return _.substring(0,_.lastIndexOf("/")+1)}return"./"}})(),E=_=>{if(null==_&&(_="./"),n||t);else{let e=document.createElement("a");e.href=_,_=e.href}return _.endsWith("/")||(_+="/"),_};e.CoreModule.engineResourcePaths.dbr={version:"10.4.31",path:I,isInternal:!0},e.workerAutoResources.dbr={js:!1,wasm:!0,deps:["license","dip"]},e.mapPackageRegister.dbr={};const R="1.4.21";"string"!=typeof e.CoreModule.engineResourcePaths.std&&e.compareVersion(e.CoreModule.engineResourcePaths.std.version,R)<0&&(e.CoreModule.engineResourcePaths.std={version:R,path:E(I+`../../dynamsoft-capture-vision-std@${R}/dist/`),isInternal:!0});const i="2.4.31";(!e.CoreModule.engineResourcePaths.dip||"string"!=typeof e.CoreModule.engineResourcePaths.dip&&e.compareVersion(e.CoreModule.engineResourcePaths.dip.version,i)<0)&&(e.CoreModule.engineResourcePaths.dip={version:i,path:E(I+`../../dynamsoft-image-processing@${i}/dist/`),isInternal:!0});const B={BF_NULL:BigInt(0),BF_ALL:BigInt("0xFFFFFFFEFFFFFFFF"),BF_DEFAULT:BigInt(4265345023),BF_ONED:BigInt(3147775),BF_GS1_DATABAR:BigInt(260096),BF_CODE_39:BigInt(1),BF_CODE_128:BigInt(2),BF_CODE_93:BigInt(4),BF_CODABAR:BigInt(8),BF_ITF:BigInt(16),BF_EAN_13:BigInt(32),BF_EAN_8:BigInt(64),BF_UPC_A:BigInt(128),BF_UPC_E:BigInt(256),BF_INDUSTRIAL_25:BigInt(512),BF_CODE_39_EXTENDED:BigInt(1024),BF_GS1_DATABAR_OMNIDIRECTIONAL:BigInt(2048),BF_GS1_DATABAR_TRUNCATED:BigInt(4096),BF_GS1_DATABAR_STACKED:BigInt(8192),BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL:BigInt(16384),BF_GS1_DATABAR_EXPANDED:BigInt(32768),BF_GS1_DATABAR_EXPANDED_STACKED:BigInt(65536),BF_GS1_DATABAR_LIMITED:BigInt(131072),BF_PATCHCODE:BigInt(262144),BF_CODE_32:BigInt(16777216),BF_PDF417:BigInt(33554432),BF_QR_CODE:BigInt(67108864),BF_DATAMATRIX:BigInt(134217728),BF_AZTEC:BigInt(268435456),BF_MAXICODE:BigInt(536870912),BF_MICRO_QR:BigInt(1073741824),BF_MICRO_PDF417:BigInt(524288),BF_GS1_COMPOSITE:BigInt(2147483648),BF_MSI_CODE:BigInt(1048576),BF_CODE_11:BigInt(2097152),BF_TWO_DIGIT_ADD_ON:BigInt(4194304),BF_FIVE_DIGIT_ADD_ON:BigInt(8388608),BF_MATRIX_25:BigInt(68719476736),BF_POSTALCODE:BigInt(0x3f0000000000000),BF_NONSTANDARD_BARCODE:BigInt(4294967296),BF_USPSINTELLIGENTMAIL:BigInt(4503599627370496),BF_POSTNET:BigInt(9007199254740992),BF_PLANET:BigInt(0x40000000000000),BF_AUSTRALIANPOST:BigInt(0x80000000000000),BF_RM4SCC:BigInt(72057594037927940),BF_KIX:BigInt(0x200000000000000),BF_DOTCODE:BigInt(8589934592),BF_PHARMACODE_ONE_TRACK:BigInt(17179869184),BF_PHARMACODE_TWO_TRACK:BigInt(34359738368),BF_PHARMACODE:BigInt(51539607552)};var o,A,T,r;_.EnumExtendedBarcodeResultType=void 0,(o=_.EnumExtendedBarcodeResultType||(_.EnumExtendedBarcodeResultType={}))[o.EBRT_STANDARD_RESULT=0]="EBRT_STANDARD_RESULT",o[o.EBRT_CANDIDATE_RESULT=1]="EBRT_CANDIDATE_RESULT",o[o.EBRT_PARTIAL_RESULT=2]="EBRT_PARTIAL_RESULT",_.EnumQRCodeErrorCorrectionLevel=void 0,(A=_.EnumQRCodeErrorCorrectionLevel||(_.EnumQRCodeErrorCorrectionLevel={}))[A.QRECL_ERROR_CORRECTION_H=0]="QRECL_ERROR_CORRECTION_H",A[A.QRECL_ERROR_CORRECTION_L=1]="QRECL_ERROR_CORRECTION_L",A[A.QRECL_ERROR_CORRECTION_M=2]="QRECL_ERROR_CORRECTION_M",A[A.QRECL_ERROR_CORRECTION_Q=3]="QRECL_ERROR_CORRECTION_Q",_.EnumLocalizationMode=void 0,(T=_.EnumLocalizationMode||(_.EnumLocalizationMode={}))[T.LM_AUTO=1]="LM_AUTO",T[T.LM_CONNECTED_BLOCKS=2]="LM_CONNECTED_BLOCKS",T[T.LM_STATISTICS=4]="LM_STATISTICS",T[T.LM_LINES=8]="LM_LINES",T[T.LM_SCAN_DIRECTLY=16]="LM_SCAN_DIRECTLY",T[T.LM_STATISTICS_MARKS=32]="LM_STATISTICS_MARKS",T[T.LM_STATISTICS_POSTAL_CODE=64]="LM_STATISTICS_POSTAL_CODE",T[T.LM_CENTRE=128]="LM_CENTRE",T[T.LM_ONED_FAST_SCAN=256]="LM_ONED_FAST_SCAN",T[T.LM_REV=-2147483648]="LM_REV",T[T.LM_SKIP=0]="LM_SKIP",_.EnumDeblurMode=void 0,(r=_.EnumDeblurMode||(_.EnumDeblurMode={}))[r.DM_DIRECT_BINARIZATION=1]="DM_DIRECT_BINARIZATION",r[r.DM_THRESHOLD_BINARIZATION=2]="DM_THRESHOLD_BINARIZATION",r[r.DM_GRAY_EQUALIZATION=4]="DM_GRAY_EQUALIZATION",r[r.DM_SMOOTHING=8]="DM_SMOOTHING",r[r.DM_MORPHING=16]="DM_MORPHING",r[r.DM_DEEP_ANALYSIS=32]="DM_DEEP_ANALYSIS",r[r.DM_SHARPENING=64]="DM_SHARPENING",r[r.DM_BASED_ON_LOC_BIN=128]="DM_BASED_ON_LOC_BIN",r[r.DM_SHARPENING_SMOOTHING=256]="DM_SHARPENING_SMOOTHING",r[r.DM_REV=-2147483648]="DM_REV",r[r.DM_SKIP=0]="DM_SKIP",_.BarcodeReaderModule=class{static getVersion(){const _=e.innerVersions.dbr&&e.innerVersions.dbr.wasm,n=e.innerVersions.dbr&&e.innerVersions.dbr.worker;return`10.4.31(Worker: ${n||"Not Loaded"}, Wasm: ${_||"Not Loaded"})`}},_.EnumBarcodeFormat=B})); diff --git a/dist/dynamsoft-camera-enhancer@4.1.1/dist/dce.d.ts b/dist/dynamsoft-camera-enhancer@4.1.1/dist/dce.d.ts new file mode 100644 index 0000000..591b651 --- /dev/null +++ b/dist/dynamsoft-camera-enhancer@4.1.1/dist/dce.d.ts @@ -0,0 +1,1877 @@ +import { ImageTag, DSRect, DSImageData, Point, Rect, Polygon, LineSegment, Quadrilateral, ImageSourceAdapter, Warning, ImageSourceErrorListener, EnumImagePixelFormat } from 'dynamsoft-core'; + +declare class CameraEnhancerModule { + static getVersion(): string; +} + +interface VideoFrameTag extends ImageTag { + isCropped: boolean; + cropRegion: DSRect; + originalWidth: number; + originalHeight: number; + currentWidth: number; + currentHeight: number; + timeSpent: number; + timeStamp: number; +} + +interface DCEFrame extends DSImageData { + toCanvas: () => HTMLCanvasElement; + isDCEFrame: boolean; + tag?: VideoFrameTag; +} + +interface DrawingItemEvent extends Event { + targetItem: DrawingItem; + itemClientX: number; + itemClientY: number; + itemPageX: number; + itemPageY: number; +} + +interface DrawingStyle { + id?: number; + lineWidth?: number; + fillStyle?: string; + strokeStyle?: string; + paintMode?: "fill" | "stroke" | "strokeAndFill"; + fontFamily?: string; + fontSize?: number; +} + +interface Note { + name: string; + content: any; +} + +interface PlayCallbackInfo { + height: number; + width: number; + deviceId: string; +} + +interface Resolution { + width: number; + height: number; +} + +interface TipConfig { + topLeftPoint: Point; + width: number; + duration: number; + coordinateBase?: "view" | "image"; +} + +interface VideoDeviceInfo { + deviceId: string; + label: string; + /** @ignore */ + _checked: boolean; +} + +declare enum EnumDrawingItemMediaType { + DIMT_RECTANGLE = 1, + DIMT_QUADRILATERAL = 2, + DIMT_TEXT = 4, + DIMT_ARC = 8, + DIMT_IMAGE = 16, + DIMT_POLYGON = 32, + DIMT_LINE = 64, + DIMT_GROUP = 128 +} + +declare enum EnumDrawingItemState { + DIS_DEFAULT = 1, + DIS_SELECTED = 2 +} + +declare enum EnumEnhancedFeatures { + EF_ENHANCED_FOCUS = 4, + EF_AUTO_ZOOM = 16, + EF_TAP_TO_FOCUS = 64 +} + +declare enum EnumItemType { + ARC = 0, + IMAGE = 1, + LINE = 2, + POLYGON = 3, + QUAD = 4, + RECT = 5, + TEXT = 6, + GROUP = 7 +} +declare enum EnumItemState { + DEFAULT = 0, + SELECTED = 1 +} +declare abstract class DrawingItem { + #private; + /** + * TODO: replace with enum + * @ignore + */ + static arrMediaTypes: string[]; + /** + * @ignore + */ + static mapItemType: Map; + /** + * TOOD: replace with enum + * @ignore + */ + static arrStyleSelectors: string[]; + /** + * @ignore + */ + static mapItemState: Map; + protected _fabricObject: any; + /** + * TODO: make it private and replace it with 'mediaType' + * @ignore + */ + _mediaType: string; + /** + * @ignore + */ + get mediaType(): EnumDrawingItemMediaType; + /** + * TODO: rename it to 'state' and return enum + */ + get styleSelector(): string; + /** + * @ignore + */ + styleId?: number; + /** + * Returns or sets the numeric ID for the `DrawingStyle` that applies to this `DrawingItem`. + * Invoke `renderAll()` for the new `DrawingStyle` to take effect. + */ + set drawingStyleId(id: number); + get drawingStyleId(): number; + /** + * Returns or sets the coordinate system base with a string: + * - "view" for viewport-based coordinates or + * - "image" for image-based coordinates. + */ + set coordinateBase(base: "view" | "image"); + get coordinateBase(): "view" | "image"; + /** + * @ignore + */ + _zIndex?: number; + /** + * @ignore + */ + _drawingLayer: any; + /** + * @ignore + */ + _drawingLayerId: number; + /** + * Returns the numeric ID for the `DrawingLayer` this `DrawingItem` belongs to. + */ + get drawingLayerId(): number; + /** + * record the item's styles + * TODO: use enum + * @ignore + */ + _mapState_StyleId: Map; + protected mapEvent_Callbacks: Map>; + protected mapNoteName_Content: Map>; + /** + * @ignore + */ + readonly isDrawingItem: boolean; + /** + * + * @param fabricObject + * @param drawingStyleId + * @ignore + */ + constructor(fabricObject?: any, drawingStyleId?: number); + protected _setFabricObject(fabricObject: any): void; + /** + * + * @returns + * @ignore + */ + _getFabricObject(): any; + /** + * + * @param state + * @ignore + */ + setState(state: EnumDrawingItemState): void; + /** + * Returns the current state of the `DrawingItem`. + * + * @returns The current state of the `DrawingItem`, of type `EnumDrawingItemState`. + */ + getState(): EnumDrawingItemState; + /** + * @ignore + */ + _on(eventName: string, listener: (event: DrawingItemEvent) => void): void; + /** + * Binds a listener for a specific event. + * The event name is limited to "mousedown" | "mouseup" | "dblclick" | "mouseover" | "mouseout". + * @param eventName Specifies the event by its name. + * @param listener The event listener. + */ + on(eventName: "mousedown" | "mouseup" | "dblclick" | "mouseover" | "mouseout", listener: (event: DrawingItemEvent) => void): void; + /** + * @ignore + */ + _off(eventName: string, listener: (event: DrawingItemEvent) => void): void; + /** + * Unbinds a listener for a specific event. + * The event name is limited to "mousedown" | "mouseup" | "dblclick" | "mouseover" | "mouseout". + * @param eventName Specifies the event by its name. + * @param listener The event listener. + */ + off(eventName: "mousedown" | "mouseup" | "dblclick" | "mouseover" | "mouseout", listener: (event: DrawingItemEvent) => void): void; + /** + * Set if this item can be edited. + * @param editable + * @ignore + */ + _setEditable(editable: boolean): void; + /** + * Checks if a `Note` object with the specified name exists. + * @param name Specifies the name of the `Note` object. + * + * @returns Boolean indicating whether the `Note` object exists. + */ + hasNote(name: string): boolean; + /** + * Adds a `Note` object to this `DrawingItem`. + * @param note Specifies the `Note` object. + * @param replace [Optional] Whether to replace an existing note if the notes share the same name. + */ + addNote(note: Note, replace?: boolean): void; + /** + * Returns a `Note` object specified by its name, if it exists. + * @param name Specifies the name of the `Note` object. + * + * @returns The corresponding `Note` object specified by its name, if it exists. + */ + getNote(name: string): Note; + /** + * Returns a collection of all existing `Note` objects on this `DrawingItem`. + * + * @returns All existing `Note` objects on this `DrawingItem`. + */ + getNotes(): Array; + /** + * Updates the content of a specified `Note` object. + * @param name Specifies the name of the `Note` object. + * @param content Specifies the new content, can be of any type. + * @param mergeContent [Optional] Whether to merge the new content with the existing one. + */ + updateNote(name: string, content: any, mergeContent?: boolean): void; + /** + * Deletes a `Note` object specified by its name. + * @param name Specifies the name of the `Note` object. + */ + deleteNote(name: string): void; + /** + * Deletes all `Note` objects on this `DrawingItem`. + */ + clearNotes(): void; + protected abstract extendSet(property: string, value: any): boolean; + protected abstract extendGet(property: string): any; + /** + * + * @param property + * @returns + * @ignore + */ + set(property: string, value: any): void; + /** + * + * @param property + * @returns + * @ignore + */ + get(property: string): any; + /** + * Remove this item from drawing layer. + * @ignore + */ + remove(): void; + /** + * Convert item's property(width, height, x, y, etc.) from related to image/video to related to view/page. + * @param value + * @returns + */ + protected convertPropFromImageToView(value: number): number; + /** + * Convert item's property(width, height, x, y, etc.) from related to view/page to related to image/video. + * @param value + * @returns + */ + protected convertPropFromViewToImage(value: number): number; + protected abstract updateCoordinateBaseFromImageToView(): void; + protected abstract updateCoordinateBaseFromViewToImage(): void; + /** + * @ignore + */ + _setLineWidth(value: number): void; + /** + * @ignore + */ + _getLineWidth(): number; + /** + * @ignore + */ + _setFontSize(value: number): void; + /** + * @ignore + */ + _getFontSize(): number; + /** + * @ignore + */ + abstract setPosition(position: any): void; + /** + * @ignore + */ + abstract getPosition(): any; + /** + * Update item's propertys(width, height, x, y, etc.). + * It is called when item is added to layer. + * @ignore + */ + abstract updatePosition(): void; +} + +declare class DT_Rect extends DrawingItem { + #private; + constructor(rect: Rect, drawingStyleId?: number); + protected extendSet(property: string, value: any): boolean; + protected extendGet(property: string): void; + protected updateCoordinateBaseFromImageToView(): void; + protected updateCoordinateBaseFromViewToImage(): void; + setPosition(position: any): void; + getPosition(): any; + updatePosition(): void; + setRect(rect: Rect): void; + getRect(): Rect; +} + +declare class DT_Polygon extends DrawingItem { + #private; + constructor(polygon: Polygon, drawingStyleId?: number); + protected extendSet(property: string, value: any): boolean; + protected extendGet(property: string): any; + protected updateCoordinateBaseFromImageToView(): void; + protected updateCoordinateBaseFromViewToImage(): void; + setPosition(position: any): void; + getPosition(): any; + updatePosition(): void; + setPolygon(polygon: Polygon): void; + getPolygon(): Polygon; +} + +declare class DT_Image extends DrawingItem { + #private; + private image; + set maintainAspectRatio(value: boolean); + get maintainAspectRatio(): boolean; + constructor(image: DSImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, rect: Rect, maintainAspectRatio: boolean, drawingStyleId?: number); + protected extendSet(property: string, value: any): boolean; + protected extendGet(property: string): any; + protected updateCoordinateBaseFromImageToView(): void; + protected updateCoordinateBaseFromViewToImage(): void; + setPosition(position: any): void; + getPosition(): any; + updatePosition(): void; + setImage(image: DSImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement): void; + getImage(): DSImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement; + setImageRect(rect: Rect): void; + getImageRect(): Rect; +} + +declare class DT_Text extends DrawingItem { + #private; + private _text; + constructor(text: string, rect: Rect, drawingStyleId?: number); + protected extendSet(property: string, value: any): boolean; + protected extendGet(property: string): any; + protected updateCoordinateBaseFromImageToView(): void; + protected updateCoordinateBaseFromViewToImage(): void; + setPosition(position: any): void; + getPosition(): any; + updatePosition(): void; + setText(text: string): void; + getText(): string; + setTextRect(rect: Rect): void; + getTextRect(): Rect; +} + +declare class DT_Line extends DT_Polygon { + #private; + constructor(line: LineSegment, drawingStyleId?: number); + protected extendSet(property: string, value: any): boolean; + protected extendGet(property: string): any; + protected updateCoordinateBaseFromImageToView(): void; + protected updateCoordinateBaseFromViewToImage(): void; + setPosition(position: any): void; + getPosition(): any; + updatePosition(): void; + /** + * @ignore + */ + setPolygon(): void; + /** + * @ignore + */ + getPolygon(): Polygon; + setLine(line: LineSegment): void; + getLine(): LineSegment; +} + +declare class DT_Quad extends DT_Polygon { + #private; + constructor(quad: Quadrilateral, drawingStyleId?: number); + setPosition(position: any): void; + getPosition(): any; + updatePosition(): void; + /** + * @ignore + */ + setPolygon(): void; + /** + * @ignore + */ + getPolygon(): Polygon; + setQuad(quad: Quadrilateral): void; + getQuad(): Quadrilateral; +} + +declare class DT_Group extends DrawingItem { + constructor(childItems: Array); + protected extendSet(property: string, value: any): boolean; + protected extendGet(property: string): void; + protected updateCoordinateBaseFromImageToView(): void; + protected updateCoordinateBaseFromViewToImage(): void; + setPosition(): void; + getPosition(): any; + updatePosition(): void; + getChildDrawingItems(): Array; + setChildDrawingItems(item: DrawingItem): void; + removeChildItem(item: DrawingItem): void; +} + +declare class DrawingLayer { + static DDN_LAYER_ID: number; + static DBR_LAYER_ID: number; + static DLR_LAYER_ID: number; + static USER_DEFINED_LAYER_BASE_ID: number; + /** + * @ignore + */ + static TIP_LAYER_ID: number; + /** + * returns the 'fabric.Canvas' object + * @ignore + */ + fabricCanvas: any; + private id; + /** + * @ignore + */ + get width(): number; + /** + * @ignore + */ + get height(): number; + private mapType_StateAndStyleId; + private mode; + /** + * Event triggered whenever there is a change in which `DrawingItem` objects are selected or deselected. + * @param selectedDrawingItems An array of `DrawingItem` objects that have been selected as a result of the latest selection change. + * @param deselectedDrawingItems An array of `DrawingItem` objects that have been deselected as a result of the latest selection change. + * [NOTE]: This event is only functional when the `DrawingLayer` in which it is defined belongs to an `ImageEditorView` instance. + */ + onSelectionChanged: (selectedDrawingItems: Array, deselectedDrawingItems: Array) => void; + private _arrDrwaingItem; + private _arrFabricObject; + private _visible; + /** + * @ignore + */ + _manager: any; + /** + * @ignore + */ + set _allowMultiSelect(value: boolean); + get _allowMultiSelect(): boolean; + /** + * @ignore + */ + constructor(canvas: HTMLCanvasElement, id: number, options?: Object); + /** + * Retrieves the unique identifier of the layer. + */ + getId(): number; + /** + * Sets the visibility of the layer. + * @param visible Whether to show or hide the layer. + */ + setVisible(visible: boolean): void; + /** + * Retrieves the visibility status of the layer. + * + * @returns Boolean indicating whether the layer is visible. + */ + isVisible(): boolean; + private _getItemCurrentStyle; + /** + * Change style of drawingItems of specific media type in specific style selector. + * DrawingItems that have 'styleId' won't be changed. + * @param mediaType the mediaType of drawingItems that attend to change + * @param styleSelector + * @param drawingStyle + * @private + */ + private _changeMediaTypeCurStyleInStyleSelector; + /** + * Change the style of specific drawingItem. + * DrawingItem that has 'styleId' won't be changed. + * @param drawingItem + * @param drawingStyle + * @private + */ + private _changeItemStyle; + /** + * + * @param targetGroup + * @param item + * @param addOrRemove + * @returns + * @ignore + */ + _updateGroupItem(targetGroup: DrawingItem, item: DrawingItem, addOrRemove: string): void; + private _addDrawingItem; + /** + * Add a drawing item to the drawing layer. + * Drawing items in drawing layer with higher id are always above those in drawing layer with lower id. + * In a same drawing layer, the later added is above the previous added. + * @param drawingItem + * @ignore + */ + private addDrawingItem; + /** + * Adds an array of `DrawingItem` objects to the layer. + * @param drawingItems An array of `DrawingItem` objects. + */ + addDrawingItems(drawingItems: Array): void; + /** + * + * @param drawingItem + * @returns + * @ignore + */ + private removeDrawingItem; + /** + * Removes specified `DrawingItem` objects from the layer. + * @param drawingItems An array of `DrawingItem` objects. + */ + removeDrawingItems(drawingItems: Array): void; + /** + * Sets the layer's `DrawingItem` objects, replacing any existing items. + * @param drawingItems An array of `DrawingItem` objects. + */ + setDrawingItems(drawingItems: Array): void; + /** + * Retrieves `DrawingItem` objects from the layer, optionally filtered by a custom function. + * @param filter [Optional] A predicate function used to select a subset of `DrawingItem` objects based on specific criteria. Only items for which this function returns `true` are included in the result. + * + */ + getDrawingItems(filter?: (item: DrawingItem) => boolean): Array; + /** + * Returns an array of all selected DrawingItem instances. + * + * @returns An array of `DrawingItem` objects. + */ + getSelectedDrawingItems(): Array; + /** + * Checks if a specific `DrawingItem` exists within the layer. + * @param drawingItem Specifies the `DrawingItem`. + * + * @returns Boolean indicating whether the specific `DrawingItem` exists. + */ + hasDrawingItem(drawingItem: DrawingItem): boolean; + /** + * Clears all `DrawingItem` objects from the layer. + */ + clearDrawingItems(): void; + private _setDefaultStyle; + /** + * Establishes the baseline styling preferences for `DrawingItem` objects on the layer. + * This method offers flexible styling options tailored to the diverse requirements of `DrawingItem` objects based on their state and type: + * - Universal Application: By default, without specifying `state` or `mediaType`, the designated style is universally applied to all `DrawingItem` objects on the layer, ensuring a cohesive look and feel. + * - State-Specific Styling: Specifying only the state parameter allows the method to target `DrawingItem` objects matching that particular state, enabling differentiated styling that reflects their current status or condition. + * - Refined Targeting with State and MediaType: Providing both `state` and `mediaType` parameters focuses the style application even further, affecting only those `DrawingItem` objects that align with the specified type while in the given state. + * + * This precision is particularly useful for creating visually distinct interactions or highlighting specific elements based on their content and interaction state. + * @param drawingStyleId The unique ID of the `DrawingStyle` to be applied. + * @param state [Optional] Allows the styling to be conditional based on the `DrawingItem`'s current state. + * @param mediaType [Optional] Further refines the application of the style based on the the `DrawingItem`'s type. + */ + setDefaultStyle(drawingStyleId: number, state?: EnumDrawingItemState, mediaType?: EnumDrawingItemMediaType): void; + /** + * Change drawing layer mode, "viewer" or "editor". + * @param newMode + * @ignore + */ + setMode(newMode: string): void; + /** + * + * @returns + * @ignore + */ + getMode(): string; + /** + * Update the dimensions of drawing layer. + * @param dimensions + * @param options + * @ignore + */ + _setDimensions(dimensions: { + width: number | string; + height: number | string; + }, options?: { + backstoreOnly?: boolean; + cssOnly?: boolean; + }): void; + /** + * Update the object-fit of drawing layer. + * @param value + * @ignore + */ + _setObjectFit(value: string): void; + /** + * + * @returns + * @ignore + */ + _getObjectFit(): string; + /** + * Forces a re-render of all `DrawingItem` objects on the layer. + * Invoke this method to ensure any modifications made to existing `DrawingItem` objects are visually reflected on the layer. + */ + renderAll(): void; + /** + * @ignore + */ + dispose(): void; +} + +declare class DrawingLayerManager { + _arrDrawingLayer: DrawingLayer[]; + createDrawingLayer(baseCvs: HTMLCanvasElement, drawingLayerId: number): DrawingLayer; + deleteDrawingLayer(drawingLayerId: number): void; + clearDrawingLayers(): void; + getDrawingLayer(drawingLayerId: number): DrawingLayer; + getAllDrawingLayers(): Array; + getSelectedDrawingItems(): Array; + setDimensions(dimensions: { + width: number | string; + height: number | string; + }, options?: { + backstoreOnly?: boolean; + cssOnly?: boolean; + }): void; + setObjectFit(value: string): void; + getObjectFit(): string; + setVisible(visible: boolean): void; + _getFabricCanvas(): any; + _switchPointerEvent(): void; +} + +declare class InnerComponent extends HTMLElement { + #private; + constructor(); + getWrapper(): HTMLDivElement; + setElement(slot: "content" | "single-frame-input-container" | "drawing-layer", el: HTMLElement): void; + getElement(slot: "content" | "single-frame-input-container" | "drawing-layer"): HTMLElement; + removeElement(slot: "content" | "single-frame-input-container" | "drawing-layer"): void; +} + +declare class DT_Tip extends DT_Text { + #private; + constructor(text: string, x: number, y: number, width: number, styleId?: number); + /** + * Make the tip hidden after a period of time. + * @param duration if less then 0, it clears the timer. + */ + setDuration(duration: number): void; + getDuration(): number; +} +declare abstract class View { + #private; + /** + * @ignore + */ + _innerComponent: InnerComponent; + /** @ignore */ + _drawingLayerManager: DrawingLayerManager; + /** @ignore */ + _layerBaseCvs: HTMLCanvasElement; + /** @ignore */ + _drawingLayerOfTip: DrawingLayer; + private _tipStyleId; + /** @ignore */ + _tip: DT_Tip; + constructor(); + /** + * get the dimensions of content which the view shows. In 'CameraView', the 'content' usually means the video; in 'ImageEditorView', the 'content' usually means the image. + */ + protected abstract getContentDimensions(): { + width: number; + height: number; + objectFit: string; + }; + /** + * Create a native 'canvas' element, which will be passed to 'fabric' to create a 'fabric.Canvas'. + * In fact, all drawing layers are in one canvas. + * @ignore + */ + protected createDrawingLayerBaseCvs(width: number, height: number, objectFit?: string): HTMLCanvasElement; + /** + * Create drawing layer with specified id and size. + * Differ from 'createDrawingLayer()', the drawing layers created'createDrawingLayer()' can not Specified id, and their size is the same as video. + * @ignore + */ + _createDrawingLayer(drawingLayerId: number, width?: number, height?: number, objectFit?: string): DrawingLayer; + /** + * Creates a new `DrawingLayer` object and returns it. + * + * @returns The created `DrawingLayer` object. + */ + createDrawingLayer(): DrawingLayer; + /** + * Differ from 'deleteUserDefinedDrawingLayer()', 'deleteDrawingLayer()' can delete any layer, while 'deleteUserDefinedDrawingLayer()' can only delete user defined layer. + */ + protected deleteDrawingLayer(drawingLayerId: number): void; + /** + * Deletes a user-defined `DrawingLayer` object specified by its unique identifier (ID). + * @param id The unique identifier (ID) of the `DrawingLayer` object. + */ + deleteUserDefinedDrawingLayer(id: number): void; + /** + * Not used yet. + * @ignore + */ + _clearDrawingLayers(): void; + /** + * Clears all user-defined `DrawingLayer` objects, resetting the drawing space without affecting default built-in `DrawingLayer` objects. + */ + clearUserDefinedDrawingLayers(): void; + /** + * Retrieves a `DrawingLayer` object by its unique identifier (ID). + * @param id The unique identifier (ID) of the `DrawingLayer` object. + * + * @returns The `DrawingLayer` object specified by its unique identifier (ID) or `null`. + */ + getDrawingLayer(drawingLayerId: number): DrawingLayer; + /** + * Returns an array of all `DrawingLayer` objects . + * + * @returns An array of all `DrawingLayer` objects. + */ + getAllDrawingLayers(): Array; + /** + * update drawing layers according to content(video/image) dimensions. + */ + protected updateDrawingLayers(contentDimensions: { + width: number; + height: number; + objectFit: string; + }): void; + /** + * Returns an array of all selected DrawingItem instances across different layers, supporting complex selection scenarios. + * + * @returns An array of `DrawingItem` objects. + */ + getSelectedDrawingItems(): Array; + /** + * Applies configuration settings to the tip message box. + * This includes its position, size, display duration, and the coordinate system basis. + * @param tipConfig Configuration object for the tip message box, including top-left position, width, display duration, and coordinate system basis. + */ + setTipConfig(tipConfig: TipConfig): void; + /** + * Retrieves the current configuration of the tip message box, reflecting its position, size, display duration, and the coordinate system basis. + * + * @returns The current configuration settings of the tip message box. + */ + getTipConfig(): TipConfig; + /** + * Controls the visibility of the tip message box on the screen. + * This can be used to show or hide the tip based on user interaction or other criteria. + * @param visible Boolean flag indicating whether the tip message box should be visible (`true`) or hidden (`false`). + */ + setTipVisible(visible: boolean): void; + /** + * Checks whether the tip message box is currently visible to the user. + * + * @returns Boolean indicating the visibility of the tip message box (`true` for visible, `false` for hidden). + */ + isTipVisible(): boolean; + /** + * Updates the message displayed in the tip message box. + * This can be used to provide dynamic feedback or information to the user. + * @param message The new message to be displayed in the tip message box. + */ + updateTipMessage(message: string): void; +} + +declare class EventHandler { + #private; + get disposed(): boolean; + on(event: string, listener: Function): void; + off(event: string, listener: Function): void; + offAll(event: string): void; + fire(event: string, params?: Array, options?: { + target?: object; + async?: boolean; + copy?: boolean; + }): void; + dispose(): void; +} + +declare class CameraEnhancer extends ImageSourceAdapter { + #private; + /** @ignore */ + static _debug: boolean; + static set _onLog(value: (message: any) => void); + static get _onLog(): (message: any) => void; + /** + * @ignore + */ + static browserInfo: { + browser: string; + version: number; + OS: string; + }; + /** + * Event triggered when the running environment is not ideal. + * @param warning The warning message. + */ + static onWarning: (warning: Warning) => void; + /** + * Detect environment and get a report. + * ```js + * console.log(Dynamsoft.DCE.CameraEnhancer.detectEnvironment()); + * // {"wasm":true, "worker":true, "getUserMedia":true, "camera":true, "browser":"Chrome", "version":90, "OS":"Windows"} + * ``` + */ + static detectEnvironment(): Promise; + /** + * Tests whether the application has access to the camera. + * This static method can be used before initializing a `CameraEnhancer` instance to ensure that the device's camera can be accessed, providing a way to handle permissions or other access issues preemptively. + * This method offers the additional advantage of accelerating the camera opening process for the first time. + * + * @returns A promise that resolves with an object containing: + * - `ok`: Boolean indicating whether camera access is available. + * - `message`: A string providing additional information or the reason why camera access is not available, if applicable. + */ + static testCameraAccess(): Promise<{ + ok: boolean; + message: string; + }>; + /** + * Initializes a new instance of the `CameraEnhancer` class. + * @param view [Optional] Specifies a `CameraView` instance to provide the user interface element to display the live feed from the camera. + * + * @returns A promise that resolves with the initialized `CameraEnhancer` instance. + */ + static createInstance(view?: CameraView): Promise; + private cameraManager; + private cameraView; + /** + * @ignore + */ + private _imageDataGetter; + /** + * @ignore + */ + get video(): HTMLVideoElement; + /** + * Sets or returns the source URL for the video stream to be used by the `CameraEnhancer`. + * 1. You can use this property to specify an existing video as the source to play which will be processed the same way as the video feed from a live camera. + * 2. When playing an existing video, the camera selection and video selection boxes will be hidden. + * + * It is particularly useful for applications that need to process or display video from a specific source rather than the device's default camera. + */ + set videoSrc(src: string); + get videoSrc(): string; + /** + * Determines whether the last used camera settings should be saved and reused the next time the `CameraEnhancer` is initialized. + * + * The default is `false`. + * + * When set to `true`, the enhancer attempts to restore the previously used camera settings, offering a more seamless user experience across sessions. + * + * - This feature makes use of the [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) of the browser. + * - This feature only works on mainstream browsers like Chrome, Firefox, and Safari. Other browsers may change the device IDs dynamically thus making it impossible to track the camera. + */ + set ifSaveLastUsedCamera(value: boolean); + get ifSaveLastUsedCamera(): boolean; + /** + * Determines whether to skip the initial camera inspection process. + * + * The default is `false`, which means to opt for an optimal rear camera at the first `open()`. + * + * Setting this property to `true` bypasses the automatic inspection and configuration that typically occurs when a camera connection is established. + * This can be useful for scenarios where the default inspection process may not be desirable or necessary. + * + * Note that if a previously used camera is already available in the [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage), the inspection is skipped automatically. Read more on `ifSaveLastUsedCamera`. + */ + set ifSkipCameraInspection(value: boolean); + get ifSkipCameraInspection(): boolean; + /** + * Specifies the timeout in milliseconds for opening the camera. The default value is 15000 ms. + * + * Setting 0 means canceling the timeout or waiting indefinitely. + * + * This property sets a limit on how long the `CameraEnhancer` will attempt to open the camera before timing out. + * It can be adjusted to accommodate different devices and scenarios, ensuring that the application does not hang indefinitely while trying to access the camera. + */ + set cameraOpenTimeout(value: number); + get cameraOpenTimeout(): number; + isTorchOn: undefined | boolean; + set singleFrameMode(value: "disabled" | "camera" | "image"); + get singleFrameMode(): "disabled" | "camera" | "image"; + /** + * Event handler in camera selection in default UI. + * @ignore + */ + private _onCameraSelChange; + /** + * Event handler in resolution selection in default UI. + * @ignore + */ + private _onResolutionSelChange; + /** + * Event handler in close button in default UI. + * + * Now the close button is removed, so it is useless. + * @ignore + */ + private _onCloseBtnClick; + /** + * Event handler for single frame mode. + * @ignore + */ + private _onSingleFrameAcquired; + _intermediateResultReceiver: any; + /** + * @ignore + */ + get _isFetchingStarted(): boolean; + /** + * Set the size limit of the gotten images. + * + * By default, there is no limit. + * @ignore + */ + canvasSizeLimit: number; + /** + * It is used in `DCEFrame.tag.imageId`. + * @ignore + */ + _imageId: number; + private fetchInterval; + /** + * Returns whether the `CameraEnhancer` instance has been disposed of. + * + * @returns Boolean indicating whether the `CameraEnhancer` instance has been disposed of. + */ + get disposed(): boolean; + readonly isCameraEnhancer = true; + private constructor(); + /** + * Sets the `CameraView` instance to be used with the `CameraEnhancer`. + * This method allows for specifying a custom camera view, which can be used to display the camera feed and interface elements. + * + * @param view A `CameraView` instance that will be used to display the camera's video feed and any associated UI components. + */ + setCameraView(view: CameraView): void; + /** + * Retrieves the current `CameraView` instance associated with the `CameraEnhancer`. + * This method allows for accessing the camera view, which can be useful for manipulating the view or accessing its properties and methods. + * + * @returns The current `CameraView` instance used by the `CameraEnhancer`. + */ + getCameraView(): CameraView; + /** + * + * @returns + * @ignore + */ + private releaseCameraView; + /** + * Add some event listeners to UI element in camera view. + * @returns + * @ignore + */ + private addListenerToView; + /** + * Remove event listeners from UI element in camera view. + * @returns + */ + private removeListenerFromView; + /** + * Retrieves the current state of the camera. + * + * @returns A string indicating the camera's current state, which can be "opening", "open", or "closed". + */ + getCameraState(): string; + /** + * Checks if the camera is currently open and streaming video. + * + * @returns Boolean indicating whether the camera is open (`true`) or not (`false`). + */ + isOpen(): boolean; + /** + * Retrieves the HTMLVideoElement used by the `CameraEnhancer` for displaying the camera feed. + * This method provides direct access to the video element, enabling further customization or interaction with the video stream. + * + * @returns The `HTMLVideoElement` that is being used to display the camera's video feed. + */ + getVideoEl(): HTMLVideoElement; + /** + * Opens the currently selected camera and starts the video stream. + * + * @returns A promise that resolves with a `PlayCallbackInfo` object with details about the operation's outcome. + */ + open(): Promise; + /** + * Closes the currently active camera and stops the video stream. + */ + close(): void; + /** + * Pauses the video stream without closing the camera. + * This can be useful for temporarily halting video processing while keeping the camera ready. + */ + pause(): void; + /** + * Checks if the video stream is currently paused. + * + * @returns Boolean indicating whether the video stream is paused (`true`) or active (`false`). + */ + isPaused(): boolean; + /** + * Resumes the video stream from a paused state. + * + * @returns A promise that resolves when the video stream resumes. It does not provide any value upon resolution. + */ + resume(): Promise; + /** + * Selects a specific camera for use by the `CameraEnhancer`. The camera can be specified by a `VideoDeviceInfo` object or by its device ID. + * If called before `open()` or `show()`, the selected camera will be used. Otherwise, the system will decide which one to use. + * @param cameraObjectOrDeviceID The `VideoDeviceInfo` object or device ID string of the camera to select. + * + * @returns A promise that resolves with a `PlayCallbackInfo` object indicating the outcome of the camera selection operation. + */ + selectCamera(videoDeviceInfoOrDeviceId: VideoDeviceInfo | string): Promise; + /** + * Returns the currently selected camera device. + * + * @returns The `VideoDeviceInfo` object representing the currently active camera. + */ + getSelectedCamera(): VideoDeviceInfo; + /** + * Retrieves a list of all available video input devices (cameras) on the current device. + * + * @returns A promise that resolves with an array of `VideoDeviceInfo` objects representing each available camera. + */ + getAllCameras(): Promise>; + /** + * Sets the resolution of the video stream to a specified value. + * If the specified resolution is not exactly supported, the closest resolution will be applied. + * If called before `open()` or `show()`, the camera will use the set resolution when it opens. Otherwise, the default resolution used is 1920x1080 on desktop and 1280x720 on mobile devices. + * @param resolution The `Resolution` to which the video stream should be set. + * + * @returns A promise that resolves with a `PlayCallbackInfo` object with details about the operation's outcome. + */ + setResolution(resolution: Resolution): Promise; + /** + * Gets the current resolution of the video stream. + * + * @returns The current `Resolution` of the video stream. + */ + getResolution(): Resolution; + /** + * Retrieves a list of available resolutions supported by the currently selected camera. + * + * - The returned resolutions are limited to these values "160 by 120", "320 by 240", "480 by 360", "640 by 480", "800 by 600", "960 by 720", "1280 by 720", "1920 by 1080", "2560 by 1440", "3840 by 2160". + * - The SDK tests all these resolutions to find out which ones are supported. As a result, the method may be time-consuming. + * + * @returns A promise that resolves with an array of `Resolution` objects representing each supported resolution. + */ + getAvailableResolutions(): Promise>; + /** + * 'on()' is the wrapper of '_on()'. + * @param event includes + * @param listener + * @ignore + */ + private _on; + /** + * 'off()' is the wrapper of '_off()'. + * @param event + * @param listener + * @ignore + */ + private _off; + /** + * Registers an event listener for specific camera-related events. + * This method allows you to respond to various changes and states in the camera lifecycle. + * @param eventName The name of the event to listen for. Possible values include "cameraOpen", "cameraClose", "cameraChange", "resolutionChange", "played", "singleFrameAcquired", and "frameAddedToBuffer". + * @param listener The callback function to be invoked when the event occurs. + */ + on(eventName: "cameraOpen" | "cameraClose" | "cameraChange" | "resolutionChange" | "played" | "singleFrameAcquired" | "frameAddedToBuffer", listener: Function): void; + /** + * Removes an event listener previously registered with the `on` method. + * @param eventName The name of the event for which to remove the listener. + * @param listener The callback function that was originally registered for the event. + */ + off(eventName: "cameraOpen" | "cameraClose" | "cameraChange" | "resolutionChange" | "played" | "singleFrameAcquired" | "frameAddedToBuffer", listener: Function): void; + /** + * Retrieves the current video settings applied to the camera stream. + * + * @returns The current `MediaStreamConstraints` object representing the video stream's settings. + */ + getVideoSettings(): MediaStreamConstraints; + /** + * Updates the video settings for the camera stream with new constraints. + * @param constraints The new `MediaStreamConstraints` to apply to the video stream. + * + * @returns A promise that resolves when the new `MediaStreamConstraints` is applied. It does not provide any value upon resolution. + */ + updateVideoSettings(mediaStreamConstraints: MediaStreamConstraints): Promise; + /** + * Gets the capabilities of the current camera. + * + * At present, this method only works in Edge, Safari, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open. + * @returns A `MediaTrackCapabilities` object representing the capabilities of the camera's video track. + */ + getCapabilities(): MediaTrackCapabilities; + /** + * Retrieves the current settings of the camera. + * + * @returns The `MediaTrackSettings` object representing the current settings of the camera's video track. + */ + getCameraSettings(): MediaTrackSettings; + /** + * Turns on the camera's torch (flashlight) mode, if supported. + * This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported. + * @returns A promise that resolves when the torch has been successfully turned on. It does not provide any value upon resolution. + */ + turnOnTorch(): Promise; + /** + * Turns off the camera's torch (flashlight) mode. + * This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported. + * + * @returns A promise that resolves when the torch has been successfully turned off. It does not provide any value upon resolution. + */ + turnOffTorch(): Promise; + _taskid4AutoTorch: any; + _delay4AutoTorch: number; + grayThreshold4AutoTorch: number; + maxDarkCount4AutoTroch: number; + turnAutoTorch(delay?: number): Promise; + /** + * Sets the color temperature of the camera's video feed. + * This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported. + * @param colorTemperature The desired color temperature in Kelvin. + * + * @returns A promise that resolves when the color temperature has been successfully set. It does not provide any value upon resolution. + */ + setColorTemperature(value: number): Promise; + /** + * Retrieves the current color temperature setting of the camera's video feed. + * + * This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported. + * + * @returns The current color temperature in Kelvin. + */ + getColorTemperature(): number; + /** + * Sets the exposure compensation of the camera's video feed. + * This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported. + * @param exposureCompensation The desired exposure compensation value. + * + * @returns A promise that resolves when the exposure compensation has been successfully set. It does not provide any value upon resolution. + */ + setExposureCompensation(value: number): Promise; + /** + * Retrieves the current exposure compensation setting of the camera's video feed. + * This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported. + * + * @returns The current exposure compensation value. + */ + getExposureCompensation(): number; + /** + * 'setZoom()' is the wrapper of '_setZoom()'. '_setZoom()' can set the zoom center, which is not tested and there are no plans to make it open to clients. + * @ignore + */ + private _setZoom; + /** + * Sets the zoom level of the camera. + * + * - How it works: + * 1. If the camera supports zooming and the zoom factor is within its supported range, zooming is done directly by the camera. + * 2. If the camera does not support zooming, software-based magnification is used instead. + * 3. If the camera supports zooming but the zoom factor is beyond what it supports, the camera's maximum zoom is used, and software-based magnification is used to do the rest. (In this case, you may see a brief video flicker between the two zooming processes). + * @param settings An object containing the zoom settings. + * @param settings.factor: A number specifying the zoom level. At present, it is the only available setting. + * + * @returns A promise that resolves when the zoom level has been successfully set. It does not provide any value upon resolution. + */ + setZoom(settings: { + factor: number; + }): Promise; + /** + * Retrieves the current zoom settings of the camera. + * + * @returns An object containing the current zoom settings. As present, it contains only the zoom factor. + */ + getZoomSettings(): { + factor: number; + }; + /** + * Resets the zoom level of the camera to its default value. + * + * @returns A promise that resolves when the zoom level has been successfully reset. It does not provide any value upon resolution. + */ + resetZoom(): Promise; + /** + * Sets the frame rate of the camera's video stream. + * - At present, this method only works in Edge, Safari, Chrome and other Chromium-based browsers (Firefox is not supported). Also, it should be called when a camera is open. + * - If you provide a value that exceeds the camera's capabilities, we will automatically adjust it to the maximum value that can be applied. + * + * @param rate The desired frame rate in frames per second (fps). + * + * @returns A promise that resolves when the frame rate has been successfully set. It does not provide any value upon resolution. + */ + setFrameRate(value: number): Promise; + /** + * Retrieves the current frame rate of the camera's video stream. + * + * @returns The current frame rate in frames per second (fps). + */ + getFrameRate(): number; + /** + * Sets the focus mode of the camera. This method allows for both manual and continuous focus configurations, as well as specifying a focus area. + * - This method should be called when the camera is turned on. Note that it only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported. + * - Typically, `continuous` mode works best. `manual` mode based on a specific area helps the camera focus on that particular area which may seem blurry under `continuous` mode. `manual` mode with specified distances is for those rare cases where the camera distance must be fine-tuned to get the best results. + * @param settings An object describing the focus settings. The structure of this object varies depending on the mode specified (`continuous`, `manual` with fixed `distance`, or `manual` with specific `area`). + * + * @returns A promise that resolves when the focus settings have been successfully applied. It does not provide any value upon resolution. + */ + setFocus(settings: { + mode: string; + } | { + mode: "manual"; + distance: number; + } | { + mode: "manual"; + area: { + centerPoint: { + x: string; + y: string; + }; + width?: string; + height?: string; + }; + }): Promise; + /** + * Retrieves the current focus settings of the camera. + * + * @returns An object representing the current focus settings or null. + */ + getFocusSettings(): Object; + /** + * Sets the auto zoom range for the camera. + * `EF_AUTO_ZOOM` is one of the enhanced features that require a license, and is only effective when used in conjunction with other functional products of Dynamsoft. + * This method allows for specifying the minimum and maximum zoom levels that the camera can automatically adjust to. + * + * @param range An object specifying the minimum and maximum zoom levels. Both `min` and `max` should be positive numbers, with `min` less than or equal to `max`. The default is `{min: 1, max: 999}`. + */ + setAutoZoomRange(range: { + min: number; + max: number; + }): void; + /** + * Retrieves the current auto zoom range settings for the camera. + * `EF_AUTO_ZOOM` is one of the enhanced features that require a license, and is only effective when used in conjunction with other functional products of Dynamsoft. + * + * @returns An object representing the current auto zoom range, including the minimum and maximum zoom levels. + */ + getAutoZoomRange(): { + min: number; + max: number; + }; + /** + * Enables one or more enhanced features. + * This method allows for activating specific advanced capabilities that may be available. + * + * - The enhanced features require a license, and only take effect when used in conjunction with other functional products under the Dynamsoft Capture Vision(DCV)architecture. + * - `EF_ENHANCED_FOCUS` and `EF_TAP_TO_FOCUS` only works with Chromium-based browsers such as Edge and Chrome on Windows or Android. Other browsers such as Firefox or Safari are not supported. Note that all browsers on iOS (including Chrome) use WebKit as the rendering engine and are not supported. + * @param enhancedFeatures An enum value or a bitwise combination of `EnumEnhancedFeatures` indicating the features to be enabled. + * + * @returns A promise that resolves when the specified enhanced features have been successfully enabled. It does not provide any value upon resolution. + */ + enableEnhancedFeatures(enhancedFeatures: EnumEnhancedFeatures): Promise; + /** + * Disables one or more previously enabled enhanced features. + * This method can be used to deactivate specific features that are no longer needed or to revert to default behavior. + * + * @param enhancedFeatures An enum value or a bitwise combination of `EnumEnhancedFeatures` indicating the features to be disabled. + */ + disableEnhancedFeatures(enhancedFeatures: EnumEnhancedFeatures): void; + /** + * Differ from 'setScanRegion()', 'setScanRegion()' will update the UI in camera view, while '_setScanRegion()' not. + * @param region + * @ignore + */ + private _setScanRegion; + /** + * Sets the scan region within the camera's view which limits the frame acquisition to a specific area of the video feed. + * + * Note: The region is always specified relative to the original video size, regardless of any transformations or zoom applied to the video display. + * + * @param region Specifies the scan region. + */ + setScanRegion(region: DSRect | Rect): void; + /** + * Retrieves the current scan region set within the camera's view. + * + * Note: If no scan region has been explicitly set before calling this method, an error may be thrown, indicating the necessity to define a scan region beforehand. + * + * @returns A `DSRect` or `Rect` object representing the current scan region. + * + * @throws Error indicating that no scan region has been set, if applicable. + */ + getScanRegion(): DSRect | Rect; + /** + * Sets an error listener to receive notifications about errors that occur during image source operations. + * + * @param listener An instance of `ImageSourceErrorListener` or its derived class to handle error notifications. + */ + setErrorListener(listener: ImageSourceErrorListener): void; + /** + * Determines whether there are more images available to fetch. + * + * @returns Boolean indicating whether more images can be fetched. `false` means the image source is closed or exhausted. + */ + hasNextImageToFetch(): boolean; + /** + * Starts the process of fetching images. + */ + startFetching(): void; + /** + * Stops the process of fetching images. + * to false, indicating that image fetching has been halted. + */ + stopFetching(): void; + /** + * Fetches the current frame from the camera's video feed. + * This method is used to obtain the latest image captured by the camera. + * + * @returns A `DCEFrame` object representing the current frame. + * The structure and content of this object will depend on the pixel format set by `setPixelFormat()` and other settings. + */ + fetchImage(): DCEFrame; + /** + * Sets the interval at which images are continuously fetched from the camera's video feed. + * This method allows for controlling how frequently new frames are obtained when `startFetching()` is invoked, + * which can be useful for reducing computational load or for pacing the frame processing rate. + * + * @param interval The desired interval between fetches, specified in milliseconds. + */ + setImageFetchInterval(interval: number): void; + /** + * Retrieves the current interval at which images are continuously fetched from the camera's video feed. + * + * @returns The current fetch interval, specified in milliseconds. + */ + getImageFetchInterval(): number; + /** + * Sets the pixel format for the images fetched from the camera, which determines the format of the images added to the buffer when the `fetchImage()` or `startFetching()` method is called. + * It can affect both the performance of image processing tasks and the compatibility with certain analysis algorithms. + * + * @param pixelFormat The desired pixel format for the images. Supported formats include `IPF_GRAYSCALED`, `IPF_ABGR_8888`, and `IPF_ARGB_8888`. + */ + setPixelFormat(format: EnumImagePixelFormat.IPF_GRAYSCALED | EnumImagePixelFormat.IPF_ABGR_8888): void; + /** + * Retrieves the current pixel format used for images fetched from the camera. + * + * @returns The current pixel format, which could be one of the following: `IPF_GRAYSCALED`, `IPF_ABGR_8888`, and `IPF_ARGB_8888`. + */ + getPixelFormat(): EnumImagePixelFormat; + /** + * Initiates a sequence to capture a single frame from the camera, only valid when the camera was open. halting the video stream temporarily. + * This method prompts the user to either select a local image or capture a new one using the system camera, similar to the behavior in `singleFrameMode` but without changing the mode. + * + * Note: This method is intended for use cases where capturing a single, user-obtained image is necessary while the application is otherwise utilizing a live video stream. + * + * Steps performed by `takePhoto`: + * 1. Stops the video stream and releases the camera, if it was in use. + * 2. Prompts the user to take a new image with the system camera (on desktop, it prompts the user to select an image from the disk). This behavior mirrors that of `singleFrameMode[=="camera"]` + * 3. Returns the obtained image in a callback function, this differs from `singleFrameMode` which would display the image in the view. + * NOTE: user should resume the video stream after the image has been obtained to keep the video stream going. + * @param listener A callback function that is invoked with a `DCEFrame` object containing the obtained image. + */ + takePhoto(listener: (dceFrame: DCEFrame) => void): void; + /** + * Converts coordinates from the video's coordinate system to coordinates relative to the whole page. + * This is useful for overlaying HTML elements on top of specific points in the video, aligning with the page's layout. + * + * @param point A `Point` object representing the x and y coordinates within the video's coordinate system. + * + * @returns A `Point` object representing the converted x and y coordinates relative to the page. + */ + convertToPageCoordinates(point: Point): Point; + /** + * Converts coordinates from the video's coordinate system to coordinates relative to the viewport. + * This is useful for positioning HTML elements in relation to the video element on the screen, regardless of page scrolling. + * + * @param point A `Point` object representing the x and y coordinates within the video's coordinate system. + * + * @returns A `Point` object representing the converted x and y coordinates relative to the viewport. + */ + convertToClientCoordinates(point: Point): Point; + /** + * Converts coordinates from the video's coordinate system to coordinates relative to the viewport. + * This is useful for positioning HTML elements in relation to the video element on the screen, regardless of page scrolling. + * + * @param point A `Point` object representing the x and y coordinates within the video's coordinate system. + * + * @returns A `Point` object representing the converted x and y coordinates relative to the viewport. + */ + convertToScanRegionCoordinates(point: Point): Point; + /** + * Releases all resources used by the `CameraEnhancer` instance. + */ + dispose(): void; +} + +declare class CameraView extends View { + #private; + /** + * @ignore + */ + static _onLog: (message: any) => void; + private static get engineResourcePath(); + private static _defaultUIElementURL; + /** + * Specifies the URL to a default UI definition file. + * This URL is used as a fallback source for the UI of the `CameraView` class when the `createInstance()` method is invoked without specifying a `HTMLDivElement`. + * This ensures that `CameraView` has a user interface even when no custom UI is provided. + */ + static set defaultUIElementURL(value: string); + static get defaultUIElementURL(): string; + /** + * Initializes a new instance of the `CameraView` class. + * This method allows for optional customization of the user interface (UI) through a specified HTML element or an HTML file. + */ + static createInstance(elementOrUrl?: HTMLElement | string): Promise; + /** + * Transform the coordinates from related to scan region to related to the whole video/image. + * @param coord The coordinates related to scan region. + * @param sx The x coordinate of scan region related to the whole video/image. + * @param sy The y coordinate of scan region related to the whole video/image. + * @param sWidth The width of scan region. + * @param sHeight The height of scan region. + * @param dWidth The width of cropped image. Its value is different from `sWidth` when the image is compressed. + * @param dHeight The height of cropped image. Its value is different from `sHeight` when the image is compressed. + * @ignore + */ + static _transformCoordinates(coord: { + x: number; + y: number; + }, sx: number, sy: number, sWidth: number, sHeight: number, dWidth: number, dHeight: number): void; + cameraEnhancer: CameraEnhancer; + /** + * @ignore + */ + eventHandler: EventHandler; + private UIElement; + /** + * @ignore + */ + containerClassName: string; + _videoContainer: HTMLDivElement; + private videoFit; + /** @ignore */ + _hideDefaultSelection: boolean; + /** @ignore */ + _divScanArea: any; + /** @ignore */ + _divScanLight: any; + /** @ignore */ + _bgLoading: any; + /** @ignore */ + _selCam: any; + /** @ignore */ + _bgCamera: any; + /** @ignore */ + _selRsl: any; + /** @ignore */ + _optGotRsl: any; + /** @ignore */ + _btnClose: any; + /** @ignore */ + _selMinLtr: any; + /** @ignore */ + _optGotMinLtr: any; + /** @ignore */ + _cvsSingleFrameMode: HTMLCanvasElement; + private scanRegion; + private _drawingLayerOfMask; + private _maskBackRectStyleId; + private _maskCenterRectStyleId; + private regionMaskFillStyle; + private regionMaskStrokeStyle; + private regionMaskLineWidth; + /** + * @ignore + */ + _userSetMaskVisible: boolean; + /** + * @ignore + */ + _userSetLaserVisible: boolean; + private _updateLayersTimeoutId; + private _updateLayersTimeout; + /** + * Trigger when the css dimensions of the container of video element changed, or window changed. + */ + private _videoResizeListener; + private _windowResizeListener; + private _resizeObserver; + /** + * @ignore + */ + set _singleFrameMode(value: "disabled" | "camera" | "image"); + get _singleFrameMode(): "disabled" | "camera" | "image"; + _onSingleFrameAcquired: (canvas: HTMLCanvasElement) => void; + private _singleFrameInputContainer; + _clickIptSingleFrameMode: () => void; + _capturedResultReceiver: any; + /** + * Returns whether the `CameraView` instance has been disposed of. + * + * @returns Boolean indicating whether the `CameraView` instance has been disposed of. + */ + get disposed(): boolean; + private constructor(); + /** + * Differ from 'setUIElement()', 'setUIElement()' allow parameter of 'string' type, which means a url, '_setUIElement()' only accept parameter of 'HTMLElement' type. + * @param element + */ + private _setUIElement; + setUIElement(elementOrUrl: HTMLElement | string): Promise; + getUIElement(): HTMLElement; + private _bindUI; + private _unbindUI; + /** + * Show loading animation. + * @ignore + */ + _startLoading(): void; + /** + * Hide loading animation. + * @ignore + */ + _stopLoading(): void; + /** + * Render cameras info in camera selection in default UI. + * @ignore + */ + _renderCamerasInfo(curCamera: { + deviceId: string; + label: string; + }, cameraList: Array<{ + deviceId: string; + label: string; + }>): void; + /** + * Render resolution list in resolution selection in default UI. + * @ignore + */ + _renderResolutionInfo(curResolution: { + width: number; + height: number; + }): void; + /** + * Retrieves the `HTMLVideoElement` that is currently being used for displaying the video in this `CameraView` instance. + * This method allows access to the underlying video element, enabling direct interaction or further customization. + * + * @returns The `HTMLVideoElement` currently used by this `CameraView` instance for video display. + */ + getVideoElement(): HTMLVideoElement; + /** + * tell if video is loaded. + * @ignore + */ + isVideoLoaded(): boolean; + /** + * Sets the `object-fit` CSS property of the `HTMLVideoElement` used by this `CameraView` instance. + * The `object-fit` property specifies how the video content should be resized to fit the container in a way that maintains its aspect ratio. + * @param objectFit The value for the `object-fit` property. At present, only "cover" and "contain" are allowed and the default is "contain". + * Check out more on [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit). + */ + setVideoFit(value: "contain" | "cover"): void; + /** + * Retrieves the current value of the `object-fit` CSS property from the `HTMLVideoElement` used by this `CameraView` instance. + * The `object-fit` property determines how the video content is resized to fit its container. + * + * @returns The current value of the `object-fit` property applied to the video element. At present, the value is limited to "cover" and "contain". + * Check out more on [object-fit](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit). + */ + getVideoFit(): "contain" | "cover"; + /** + * Get dimensions of content(video, or image in single frame mode). It decides what dimensions the layers should be created. + * @returns + */ + protected getContentDimensions(): { + width: number; + height: number; + objectFit: string; + }; + /** + * Update prop '#convertedRegion' and update related UI. + * @param contentDimensions + * @ignore + */ + private updateConvertedRegion; + /** + * @ignore + */ + getConvertedRegion(): { + x: number; + y: number; + width: number; + height: number; + }; + /** + * @ignore + */ + setScanRegion(region: DSRect | Rect): void; + /** + * @ignore + */ + getScanRegion(): any; + /** + * Returns the region of the video that is currently visible to the user. + * @param options [Optional] Specifies how the visible region should be returned. + * @param options.inPixels [Optional] If `true`, the coordinates of the visible region are returned in pixels. If `false` or omitted, the coordinates are returned as a percentage of the video element's size. + * + * @returns An object representing the visible region of the video. + */ + getVisibleRegionOfVideo(options: { + inPixels?: boolean; + }): Rect; + private setScanRegionMask; + private clearScanRegionMask; + /** + * Not used yet. + * @ignore + */ + private deleteScanRegionMask; + /** + * + * @param visible + * @ignore + */ + _setScanRegionMaskVisible(visible: boolean): void; + /** + * Sets the visibility of the scan region mask. This can be used to show or hide the mask. + * @param visible Boolean indicating whether the scan region mask should be visible (`true`) or not (`false`). + */ + setScanRegionMaskVisible(visible: boolean): void; + /** + * Checks if the scan region mask is currently visible. + * + * @returns Boolean indicating whether the scan region mask is visible (`true`) or not (`false`). + */ + isScanRegionMaskVisible(): boolean; + /** + * Sets the style of the scan region mask. This style includes the line width, stroke color, and fill color. + * @param style An object containing the new style settings for the scan region mask. + * @param style.lineWidth The width of the line used to draw the border of the scan region mask. + * @param style.strokeStyle The color of the stroke (border) of the scan region mask. + * @param style.fillStyle The fill color of the scan region mask. + */ + setScanRegionMaskStyle(style: { + lineWidth: number; + strokeStyle: string; + fillStyle: string; + }): void; + /** + * Retrieves the current style of the scan region mask. This includes the line width, stroke color, and fill color. + */ + getScanRegionMaskStyle(): { + fillStyle: string; + strokeStyle: string; + lineWidth: number; + }; + /** + * @ignore + */ + private _setScanLaserVisible; + /** + * Sets the visibility of the scan laser effect. This can be used to show or hide the scan laser. + * @param visible Boolean indicating whether the scan laser should be visible (`true`) or not (`false`). + */ + setScanLaserVisible(visible: boolean): void; + /** + * Checks if the scan laser effect is currently visible. + * + * @returns Boolean indicating whether the scan laser is visible (`true`) or not (`false`). + */ + isScanLaserVisible(): boolean; + /** + * @ignore + */ + _updateVideoContainer(): void; + /** + * Update all layers(scan laser, drawing layers, scan region mask). Not used yet. + * @ignore + */ + private updateLayers; + /** + * Clears all system-defined `DrawingItem` objects while keeping user-defined ones. + */ + clearAllInnerDrawingItems(): void; + /** + * Remove added elements. Remove event listeners. + */ + dispose(): void; +} + +declare class ImageEditorView extends View { + #private; + static createInstance(elementOrUrl?: HTMLElement | string): Promise; + private UIElement; + /** + * @ignore + */ + containerClassName: string; + /** + * Control if enable magnifier function. + * @ignore + */ + private isUseMagnifier; + /** + * Returns whether the `ImageEditorView` instance has been disposed of. + * + * @returns Boolean indicating whether the `ImageEditorView` instance has been disposed of. + */ + get disposed(): boolean; + private constructor(); + /** + * Differ from 'setUIElement()', 'setUIElement()' allow parameter of 'string' type, which means a url, '_setUIElement()' only accept parameter of 'HTMLElement' type. + * @param element + */ + private _setUIElement; + setUIElement(elementOrUrl: HTMLElement | string): Promise; + getUIElement(): HTMLElement; + private _bindUI; + private _unbindUI; + /** + * Draw image in inner canvas. + * @ignore + */ + private setImage; + /** + * Not used yet. + * @ignore + */ + private getImage; + /** + * Not used yet. + * @ignore + */ + private clearImage; + /** + * Not used yet. + * @ignore + */ + private removeImage; + /** + * Sets the image to be drawn on the `ImageEditorView`. + * This method allows for the initialization or updating of the image. + * @param image The image to be drawn on the `ImageEditorView`. + */ + setOriginalImage(img: DSImageData | HTMLCanvasElement | HTMLImageElement): void; + /** + * Returns the current image drawn on the `ImageEditorView`. + * + * @returns The current image drawn on the `ImageEditorView`. The returned type will match the format of the image originally set via `setOriginalImage()`. + */ + getOriginalImage(): DSImageData | HTMLCanvasElement | HTMLImageElement; + /** + * Get dimensions of content(that is, the image). It decides what dimensions the layers should be created. + * @returns + */ + protected getContentDimensions(): { + width: number; + height: number; + objectFit: string; + }; + /** + * Create drawing layer with specified id and size. + * Differ from 'createDrawingLayer()', the drawing layers created'createDrawingLayer()' can not Specified id, and their size is the same as video. + * @ignore + */ + _createDrawingLayer(drawingLayerId: number, width?: number, height?: number, objectFit?: string): DrawingLayer; + /** + * Releases all resources used by the `ImageEditorView` instance. + */ + dispose(): void; +} + +declare class Feedback { + #private; + static allowBeep: boolean; + static beepSoundSource: string; + static beep(): void; + static allowVibrate: boolean; + static vibrateDuration: number; + static vibrate(): void; +} + +declare class DrawingStyleManager { + #private; + static STYLE_BLUE_STROKE: number; + static STYLE_GREEN_STROKE: number; + static STYLE_ORANGE_STROKE: number; + static STYLE_YELLOW_STROKE: number; + static STYLE_BLUE_STROKE_FILL: number; + static STYLE_GREEN_STROKE_FILL: number; + static STYLE_ORANGE_STROKE_FILL: number; + static STYLE_YELLOW_STROKE_FILL: number; + static STYLE_BLUE_STROKE_TRANSPARENT: number; + static STYLE_GREEN_STROKE_TRANSPARENT: number; + static STYLE_ORANGE_STROKE_TRANSPARENT: number; + static USER_START_STYLE_ID: number; + static createDrawingStyle(styleDefinition: DrawingStyle): number; + private static _getDrawingStyle; + static getDrawingStyle(styleId: number): DrawingStyle; + static getAllDrawingStyles(): Array; + private static _updateDrawingStyle; + static updateDrawingStyle(styleId: number, styleDefinition: DrawingStyle): void; +} + +export { CameraEnhancer, CameraEnhancerModule, CameraView, DCEFrame, DrawingItem, DrawingItemEvent, DrawingLayer, DrawingStyle, DrawingStyleManager, EnumDrawingItemMediaType, EnumDrawingItemState, EnumEnhancedFeatures, Feedback, DT_Group as GroupDrawingItem, DT_Image as ImageDrawingItem, ImageEditorView, DT_Line as LineDrawingItem, Note, PlayCallbackInfo, DT_Quad as QuadDrawingItem, DT_Rect as RectDrawingItem, Resolution, DT_Text as TextDrawingItem, TipConfig, VideoDeviceInfo, VideoFrameTag }; diff --git a/dist/dynamsoft-camera-enhancer@4.1.1/dist/dce.esm.js b/dist/dynamsoft-camera-enhancer@4.1.1/dist/dce.esm.js new file mode 100644 index 0000000..d64709a --- /dev/null +++ b/dist/dynamsoft-camera-enhancer@4.1.1/dist/dce.esm.js @@ -0,0 +1,11 @@ +/*! + * Dynamsoft JavaScript Library + * @product Dynamsoft Camera Enhancer JS Edition + * @website https://www.dynamsoft.com + * @copyright Copyright 2024, Dynamsoft Corporation + * @author Dynamsoft + * @version 4.1.1 + * @fileoverview Dynamsoft JavaScript Library for Camera Enhancer + * More info on DCE JS: https://www.dynamsoft.com/camera-enhancer/docs/programming/javascript/?ver=latest + */ +import{CoreModule as t,workerAutoResources as e,mapPackageRegister as i,isRect as r,isPolygon as n,isDSImageData as s,EnumImagePixelFormat as o,isLineSegment as a,isQuad as h,isPoint as l,isDSRect as c,handleEngineResourcePaths as u,EnumCapturedResultItemType as d,EnumCrossVerificationStatus as f,ImageSourceAdapter as g,EnumImageTagType as m,EnumIntermediateResultUnitType as p,EnumBufferOverflowProtectionMode as v,EnumErrorCode as y}from"dynamsoft-core";const _="undefined"==typeof self,w="function"==typeof importScripts,b=(()=>{if(!w){if(!_&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})();t.engineResourcePaths.dce={version:"4.1.1",path:b,isInternal:!0},e.dce={wasm:!1,js:!1},i.dce={};class x{static getVersion(){return"4.1.1"}}function C(t,e,i,r){if("a"===i&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?r:"a"===i?r.call(t):r?r.value:e.get(t)}function S(t,e,i,r,n){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?n.call(t,i):n?n.value=i:e.set(t,i),i}let T,E,O,A,I;"function"==typeof SuppressedError&&SuppressedError,"undefined"!=typeof navigator&&(T=navigator,E=T.userAgent,O=T.platform,A=T.mediaDevices),function(){if(!_){const t={Edge:{search:"Edg",verSearch:"Edg"},OPR:null,Chrome:null,Safari:{str:T.vendor,search:"Apple",verSearch:["Version","iPhone OS","CPU OS"]},Firefox:null,Explorer:{search:"MSIE",verSearch:"MSIE"}},e={HarmonyOS:null,Android:null,iPhone:null,iPad:null,Windows:{str:O,search:"Win"},Mac:{str:O},Linux:{str:O}};let i="unknownBrowser",r=0,n="unknownOS";for(let e in t){const n=t[e]||{};let s=n.str||E,o=n.search||e,a=n.verStr||E,h=n.verSearch||e;if(h instanceof Array||(h=[h]),-1!=s.indexOf(o)){i=e;for(let t of h){let e=a.indexOf(t);if(-1!=e){r=parseFloat(a.substring(e+t.length+1));break}}break}}for(let t in e){const i=e[t]||{};let r=i.str||E,s=i.search||t;if(-1!=r.indexOf(s)){n=t;break}}"Linux"==n&&-1!=E.indexOf("Windows NT")&&(n="HarmonyOS"),I={browser:i,version:r,OS:n}}_&&(I={browser:"ssr",version:0,OS:"ssr"})}();const L="undefined"!=typeof WebAssembly&&E&&!(/Safari/.test(E)&&!/Chrome/.test(E)&&/\(.+\s11_2_([2-6]).*\)/.test(E)),D=!("undefined"==typeof Worker),M=!(!A||!A.getUserMedia),F=async()=>{let t=!1;if(M)try{(await A.getUserMedia({video:!0})).getTracks().forEach((t=>{t.stop()})),t=!0}catch(t){}return t};"Chrome"===I.browser&&I.version>66||"Safari"===I.browser&&I.version>13||"OPR"===I.browser&&I.version>43||"Edge"===I.browser&&I.version;var P={653:(t,e,i)=>{var r,n,s,o,a,h,l,c,u,d,f,g,m,p,v,y,_,w,b,x,C,S=S||{version:"5.2.1"};if(e.fabric=S,"undefined"!=typeof document&&"undefined"!=typeof window)document instanceof("undefined"!=typeof HTMLDocument?HTMLDocument:Document)?S.document=document:S.document=document.implementation.createHTMLDocument(""),S.window=window;else{var T=new(i(192).JSDOM)(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"),{features:{FetchExternalResources:["img"]},resources:"usable"}).window;S.document=T.document,S.jsdomImplForWrapper=i(898).implForWrapper,S.nodeCanvas=i(245).Canvas,S.window=T,DOMParser=S.window.DOMParser}function E(t,e){var i=t.canvas,r=e.targetCanvas,n=r.getContext("2d");n.translate(0,r.height),n.scale(1,-1);var s=i.height-r.height;n.drawImage(i,0,s,r.width,r.height,0,0,r.width,r.height)}function O(t,e){var i=e.targetCanvas.getContext("2d"),r=e.destinationWidth,n=e.destinationHeight,s=r*n*4,o=new Uint8Array(this.imageBuffer,0,s),a=new Uint8ClampedArray(this.imageBuffer,0,s);t.readPixels(0,0,r,n,t.RGBA,t.UNSIGNED_BYTE,o);var h=new ImageData(a,r,n);i.putImageData(h,0,0)}S.isTouchSupported="ontouchstart"in S.window||"ontouchstart"in S.document||S.window&&S.window.navigator&&S.window.navigator.maxTouchPoints>0,S.isLikelyNode="undefined"!=typeof Buffer&&"undefined"==typeof window,S.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-dashoffset","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id","paint-order","vector-effect","instantiated_by_use","clip-path"],S.DPI=96,S.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)",S.commaWsp="(?:\\s+,?\\s*|,\\s*)",S.rePathCommand=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/gi,S.reNonWord=/[ \n\.,;!\?\-]/,S.fontPaths={},S.iMatrix=[1,0,0,1,0,0],S.svgNS="http://www.w3.org/2000/svg",S.perfLimitSizeTotal=2097152,S.maxCacheSideLimit=4096,S.minCacheSideLimit=256,S.charWidthsCache={},S.textureSize=2048,S.disableStyleCopyPaste=!1,S.enableGLFiltering=!0,S.devicePixelRatio=S.window.devicePixelRatio||S.window.webkitDevicePixelRatio||S.window.mozDevicePixelRatio||1,S.browserShadowBlurConstant=1,S.arcToSegmentsCache={},S.boundsOfCurveCache={},S.cachesBoundsOfCurve=!0,S.forceGLPutImageData=!1,S.initFilterBackend=function(){return S.enableGLFiltering&&S.isWebglSupported&&S.isWebglSupported(S.textureSize)?(console.log("max texture size: "+S.maxTextureSize),new S.WebglFilterBackend({tileSize:S.textureSize})):S.Canvas2dFilterBackend?new S.Canvas2dFilterBackend:void 0},"undefined"!=typeof document&&"undefined"!=typeof window&&(window.fabric=S),function(){function t(t,e){if(this.__eventListeners[t]){var i=this.__eventListeners[t];e?i[i.indexOf(e)]=!1:S.util.array.fill(i,!1)}}function e(t,e){var i=function(){e.apply(this,arguments),this.off(t,i)}.bind(this);this.on(t,i)}S.Observable={fire:function(t,e){if(!this.__eventListeners)return this;var i=this.__eventListeners[t];if(!i)return this;for(var r=0,n=i.length;r-1||!!e&&this._objects.some((function(e){return"function"==typeof e.contains&&e.contains(t,!0)}))},complexity:function(){return this._objects.reduce((function(t,e){return t+(e.complexity?e.complexity():0)}),0)}},S.CommonMethods={_setOptions:function(t){for(var e in t)this.set(e,t[e])},_initGradient:function(t,e){!t||!t.colorStops||t instanceof S.Gradient||this.set(e,new S.Gradient(t))},_initPattern:function(t,e,i){!t||!t.source||t instanceof S.Pattern?i&&i():this.set(e,new S.Pattern(t,i))},_setObject:function(t){for(var e in t)this._set(e,t[e])},set:function(t,e){return"object"==typeof t?this._setObject(t):this._set(t,e),this},_set:function(t,e){this[t]=e},toggle:function(t){var e=this.get(t);return"boolean"==typeof e&&this.set(t,!e),this},get:function(t){return this[t]}},r=e,n=Math.sqrt,s=Math.atan2,o=Math.pow,a=Math.PI/180,h=Math.PI/2,S.util={cos:function(t){if(0===t)return 1;switch(t<0&&(t=-t),t/h){case 1:case 3:return 0;case 2:return-1}return Math.cos(t)},sin:function(t){if(0===t)return 0;var e=1;switch(t<0&&(e=-1),t/h){case 1:return e;case 2:return 0;case 3:return-e}return Math.sin(t)},removeFromArray:function(t,e){var i=t.indexOf(e);return-1!==i&&t.splice(i,1),t},getRandomInt:function(t,e){return Math.floor(Math.random()*(e-t+1))+t},degreesToRadians:function(t){return t*a},radiansToDegrees:function(t){return t/a},rotatePoint:function(t,e,i){var r=new S.Point(t.x-e.x,t.y-e.y),n=S.util.rotateVector(r,i);return new S.Point(n.x,n.y).addEquals(e)},rotateVector:function(t,e){var i=S.util.sin(e),r=S.util.cos(e);return{x:t.x*r-t.y*i,y:t.x*i+t.y*r}},createVector:function(t,e){return new S.Point(e.x-t.x,e.y-t.y)},calcAngleBetweenVectors:function(t,e){return Math.acos((t.x*e.x+t.y*e.y)/(Math.hypot(t.x,t.y)*Math.hypot(e.x,e.y)))},getHatVector:function(t){return new S.Point(t.x,t.y).multiply(1/Math.hypot(t.x,t.y))},getBisector:function(t,e,i){var r=S.util.createVector(t,e),n=S.util.createVector(t,i),s=S.util.calcAngleBetweenVectors(r,n),o=s*(0===S.util.calcAngleBetweenVectors(S.util.rotateVector(r,s),n)?1:-1)/2;return{vector:S.util.getHatVector(S.util.rotateVector(r,o)),angle:s}},projectStrokeOnPoints:function(t,e,i){var r=[],n=e.strokeWidth/2,s=e.strokeUniform?new S.Point(1/e.scaleX,1/e.scaleY):new S.Point(1,1),o=function(t){var e=n/Math.hypot(t.x,t.y);return new S.Point(t.x*e*s.x,t.y*e*s.y)};return t.length<=1||t.forEach((function(a,h){var l,c,u=new S.Point(a.x,a.y);0===h?(c=t[h+1],l=i?o(S.util.createVector(c,u)).addEquals(u):t[t.length-1]):h===t.length-1?(l=t[h-1],c=i?o(S.util.createVector(l,u)).addEquals(u):t[0]):(l=t[h-1],c=t[h+1]);var d,f,g=S.util.getBisector(u,l,c),m=g.vector,p=g.angle;if("miter"===e.strokeLineJoin&&(d=-n/Math.sin(p/2),f=new S.Point(m.x*d*s.x,m.y*d*s.y),Math.hypot(f.x,f.y)/n<=e.strokeMiterLimit))return r.push(u.add(f)),void r.push(u.subtract(f));d=-n*Math.SQRT2,f=new S.Point(m.x*d*s.x,m.y*d*s.y),r.push(u.add(f)),r.push(u.subtract(f))})),r},transformPoint:function(t,e,i){return i?new S.Point(e[0]*t.x+e[2]*t.y,e[1]*t.x+e[3]*t.y):new S.Point(e[0]*t.x+e[2]*t.y+e[4],e[1]*t.x+e[3]*t.y+e[5])},makeBoundingBoxFromPoints:function(t,e){if(e)for(var i=0;i0&&(e>r?e-=r:e=0,i>r?i-=r:i=0);var n,s=!0,o=t.getImageData(e,i,2*r||1,2*r||1),a=o.data.length;for(n=3;n=n?s-n:2*Math.PI-(n-s)}function s(t,e,i){for(var s=i[1],o=i[2],a=i[3],h=i[4],l=i[5],c=function(t,e,i,s,o,a,h){var l=Math.PI,c=h*l/180,u=S.util.sin(c),d=S.util.cos(c),f=0,g=0,m=-d*t*.5-u*e*.5,p=-d*e*.5+u*t*.5,v=(i=Math.abs(i))*i,y=(s=Math.abs(s))*s,_=p*p,w=m*m,b=v*y-v*_-y*w,x=0;if(b<0){var C=Math.sqrt(1-b/(v*y));i*=C,s*=C}else x=(o===a?-1:1)*Math.sqrt(b/(v*_+y*w));var T=x*i*p/s,E=-x*s*m/i,O=d*T-u*E+.5*t,A=u*T+d*E+.5*e,I=n(1,0,(m-T)/i,(p-E)/s),L=n((m-T)/i,(p-E)/s,(-m-T)/i,(-p-E)/s);0===a&&L>0?L-=2*l:1===a&&L<0&&(L+=2*l);for(var D=Math.ceil(Math.abs(L/l*2)),M=[],F=L/D,P=8/3*Math.sin(F/4)*Math.sin(F/4)/Math.sin(F/2),k=I+F,R=0;Rx)for(var T=1,E=m.length;T2;for(e=e||0,l&&(a=t[2].xt[i-2].x?1:n.x===t[i-2].x?0:-1,h=n.y>t[i-2].y?1:n.y===t[i-2].y?0:-1),r.push(["L",n.x+a*e,n.y+h*e]),r},S.util.getPathSegmentsInfo=d,S.util.getBoundsOfCurve=function(e,i,r,n,s,o,a,h){var l;if(S.cachesBoundsOfCurve&&(l=t.call(arguments),S.boundsOfCurveCache[l]))return S.boundsOfCurveCache[l];var c,u,d,f,g,m,p,v,y=Math.sqrt,_=Math.min,w=Math.max,b=Math.abs,x=[],C=[[],[]];u=6*e-12*r+6*s,c=-3*e+9*r-9*s+3*a,d=3*r-3*e;for(var T=0;T<2;++T)if(T>0&&(u=6*i-12*n+6*o,c=-3*i+9*n-9*o+3*h,d=3*n-3*i),b(c)<1e-12){if(b(u)<1e-12)continue;0<(f=-d/u)&&f<1&&x.push(f)}else(p=u*u-4*d*c)<0||(0<(g=(-u+(v=y(p)))/(2*c))&&g<1&&x.push(g),0<(m=(-u-v)/(2*c))&&m<1&&x.push(m));for(var E,O,A,I=x.length,L=I;I--;)E=(A=1-(f=x[I]))*A*A*e+3*A*A*f*r+3*A*f*f*s+f*f*f*a,C[0][I]=E,O=A*A*A*i+3*A*A*f*n+3*A*f*f*o+f*f*f*h,C[1][I]=O;C[0][L]=e,C[1][L]=i,C[0][L+1]=a,C[1][L+1]=h;var D=[{x:_.apply(null,C[0]),y:_.apply(null,C[1])},{x:w.apply(null,C[0]),y:w.apply(null,C[1])}];return S.cachesBoundsOfCurve&&(S.boundsOfCurveCache[l]=D),D},S.util.getPointOnPath=function(t,e,i){i||(i=d(t));for(var r=0;e-i[r].length>0&&r1e-4;)i=h(s),n=s,(r=o(l.x,l.y,i.x,i.y))+a>e?(s-=c,c/=2):(l=i,s+=c,a+=r);return i.angle=u(n),i}(s,e)}},S.util.transformPath=function(t,e,i){return i&&(e=S.util.multiplyTransformMatrices(e,[1,0,0,1,-i.x,-i.y])),t.map((function(t){for(var i=t.slice(0),r={},n=1;n=e}))}}}(),function(){function t(e,i,r){if(r)if(!S.isLikelyNode&&i instanceof Element)e=i;else if(i instanceof Array){e=[];for(var n=0,s=i.length;n57343)return t.charAt(e);if(55296<=i&&i<=56319){if(t.length<=e+1)throw"High surrogate without following low surrogate";var r=t.charCodeAt(e+1);if(56320>r||r>57343)throw"High surrogate without following low surrogate";return t.charAt(e)+t.charAt(e+1)}if(0===e)throw"Low surrogate without preceding high surrogate";var n=t.charCodeAt(e-1);if(55296>n||n>56319)throw"Low surrogate without preceding high surrogate";return!1}S.util.string={camelize:function(t){return t.replace(/-+(.)?/g,(function(t,e){return e?e.toUpperCase():""}))},capitalize:function(t,e){return t.charAt(0).toUpperCase()+(e?t.slice(1):t.slice(1).toLowerCase())},escapeXml:function(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")},graphemeSplit:function(e){var i,r=0,n=[];for(r=0;r-1?t.prototype[n]=function(t){return function(){var i=this.constructor.superclass;this.constructor.superclass=r;var n=e[t].apply(this,arguments);if(this.constructor.superclass=i,"initialize"!==t)return n}}(n):t.prototype[n]=e[n],i&&(e.toString!==Object.prototype.toString&&(t.prototype.toString=e.toString),e.valueOf!==Object.prototype.valueOf&&(t.prototype.valueOf=e.valueOf))};function n(){}function s(e){for(var i=null,r=this;r.constructor.superclass;){var n=r.constructor.superclass.prototype[e];if(r[e]!==n){i=n;break}r=r.constructor.superclass.prototype}return i?arguments.length>1?i.apply(this,t.call(arguments,1)):i.call(this):console.log("tried to callSuper "+e+", method not found in prototype chain",this)}S.util.createClass=function(){var i=null,o=t.call(arguments,0);function a(){this.initialize.apply(this,arguments)}"function"==typeof o[0]&&(i=o.shift()),a.superclass=i,a.subclasses=[],i&&(n.prototype=i.prototype,a.prototype=new n,i.subclasses.push(a));for(var h=0,l=o.length;h-1||"touch"===t.pointerType},d="string"==typeof(u=S.document.createElement("div")).style.opacity,f="string"==typeof u.style.filter,g=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,m=function(t){return t},d?m=function(t,e){return t.style.opacity=e,t}:f&&(m=function(t,e){var i=t.style;return t.currentStyle&&!t.currentStyle.hasLayout&&(i.zoom=1),g.test(i.filter)?(e=e>=.9999?"":"alpha(opacity="+100*e+")",i.filter=i.filter.replace(g,e)):i.filter+=" alpha(opacity="+100*e+")",t}),S.util.setStyle=function(t,e){var i=t.style;if(!i)return t;if("string"==typeof e)return t.style.cssText+=";"+e,e.indexOf("opacity")>-1?m(t,e.match(/opacity:\s*(\d?\.?\d*)/)[1]):t;for(var r in e)"opacity"===r?m(t,e[r]):i["float"===r||"cssFloat"===r?void 0===i.styleFloat?"cssFloat":"styleFloat":r]=e[r];return t},function(){var t,e,i,r,n=Array.prototype.slice,s=function(t){return n.call(t,0)};try{t=s(S.document.childNodes)instanceof Array}catch(t){}function o(t,e){var i=S.document.createElement(t);for(var r in e)"class"===r?i.className=e[r]:"for"===r?i.htmlFor=e[r]:i.setAttribute(r,e[r]);return i}function a(t){for(var e=0,i=0,r=S.document.documentElement,n=S.document.body||{scrollLeft:0,scrollTop:0};t&&(t.parentNode||t.host)&&((t=t.parentNode||t.host)===S.document?(e=n.scrollLeft||r.scrollLeft||0,i=n.scrollTop||r.scrollTop||0):(e+=t.scrollLeft||0,i+=t.scrollTop||0),1!==t.nodeType||"fixed"!==t.style.position););return{left:e,top:i}}t||(s=function(t){for(var e=new Array(t.length),i=t.length;i--;)e[i]=t[i];return e}),e=S.document.defaultView&&S.document.defaultView.getComputedStyle?function(t,e){var i=S.document.defaultView.getComputedStyle(t,null);return i?i[e]:void 0}:function(t,e){var i=t.style[e];return!i&&t.currentStyle&&(i=t.currentStyle[e]),i},i=S.document.documentElement.style,r="userSelect"in i?"userSelect":"MozUserSelect"in i?"MozUserSelect":"WebkitUserSelect"in i?"WebkitUserSelect":"KhtmlUserSelect"in i?"KhtmlUserSelect":"",S.util.makeElementUnselectable=function(t){return void 0!==t.onselectstart&&(t.onselectstart=S.util.falseFunction),r?t.style[r]="none":"string"==typeof t.unselectable&&(t.unselectable="on"),t},S.util.makeElementSelectable=function(t){return void 0!==t.onselectstart&&(t.onselectstart=null),r?t.style[r]="":"string"==typeof t.unselectable&&(t.unselectable=""),t},S.util.setImageSmoothing=function(t,e){t.imageSmoothingEnabled=t.imageSmoothingEnabled||t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled||t.oImageSmoothingEnabled,t.imageSmoothingEnabled=e},S.util.getById=function(t){return"string"==typeof t?S.document.getElementById(t):t},S.util.toArray=s,S.util.addClass=function(t,e){t&&-1===(" "+t.className+" ").indexOf(" "+e+" ")&&(t.className+=(t.className?" ":"")+e)},S.util.makeElement=o,S.util.wrapElement=function(t,e,i){return"string"==typeof e&&(e=o(e,i)),t.parentNode&&t.parentNode.replaceChild(e,t),e.appendChild(t),e},S.util.getScrollLeftTop=a,S.util.getElementOffset=function(t){var i,r,n=t&&t.ownerDocument,s={left:0,top:0},o={left:0,top:0},h={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!n)return o;for(var l in h)o[h[l]]+=parseInt(e(t,l),10)||0;return i=n.documentElement,void 0!==t.getBoundingClientRect&&(s=t.getBoundingClientRect()),r=a(t),{left:s.left+r.left-(i.clientLeft||0)+o.left,top:s.top+r.top-(i.clientTop||0)+o.top}},S.util.getNodeCanvas=function(t){var e=S.jsdomImplForWrapper(t);return e._canvas||e._image},S.util.cleanUpJsdomNode=function(t){if(S.isLikelyNode){var e=S.jsdomImplForWrapper(t);e&&(e._image=null,e._canvas=null,e._currentSrc=null,e._attributes=null,e._classList=null)}}}(),function(){function t(){}S.util.request=function(e,i){i||(i={});var r=i.method?i.method.toUpperCase():"GET",n=i.onComplete||function(){},s=new S.window.XMLHttpRequest,o=i.body||i.parameters;return s.onreadystatechange=function(){4===s.readyState&&(n(s),s.onreadystatechange=t)},"GET"===r&&(o=null,"string"==typeof i.parameters&&(e=function(t,e){return t+(/\?/.test(t)?"&":"?")+e}(e,i.parameters))),s.open(r,e,!0),"POST"!==r&&"PUT"!==r||s.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),s.send(o),s}}(),S.log=console.log,S.warn=console.warn,function(){var t=S.util.object.extend,e=S.util.object.clone,i=[];function r(){return!1}function n(t,e,i,r){return-i*Math.cos(t/r*(Math.PI/2))+i+e}S.util.object.extend(i,{cancelAll:function(){var t=this.splice(0);return t.forEach((function(t){t.cancel()})),t},cancelByCanvas:function(t){if(!t)return[];var e=this.filter((function(e){return"object"==typeof e.target&&e.target.canvas===t}));return e.forEach((function(t){t.cancel()})),e},cancelByTarget:function(t){var e=this.findAnimationsByTarget(t);return e.forEach((function(t){t.cancel()})),e},findAnimationIndex:function(t){return this.indexOf(this.findAnimation(t))},findAnimation:function(t){return this.find((function(e){return e.cancel===t}))},findAnimationsByTarget:function(t){return t?this.filter((function(e){return e.target===t})):[]}});var s=S.window.requestAnimationFrame||S.window.webkitRequestAnimationFrame||S.window.mozRequestAnimationFrame||S.window.oRequestAnimationFrame||S.window.msRequestAnimationFrame||function(t){return S.window.setTimeout(t,1e3/60)},o=S.window.cancelAnimationFrame||S.window.clearTimeout;function a(){return s.apply(S.window,arguments)}S.util.animate=function(i){i||(i={});var s,o=!1,h=function(){var t=S.runningAnimations.indexOf(s);return t>-1&&S.runningAnimations.splice(t,1)[0]};return s=t(e(i),{cancel:function(){return o=!0,h()},currentValue:"startValue"in i?i.startValue:0,completionRate:0,durationRate:0}),S.runningAnimations.push(s),a((function(t){var e,l=t||+new Date,c=i.duration||500,u=l+c,d=i.onChange||r,f=i.abort||r,g=i.onComplete||r,m=i.easing||n,p="startValue"in i&&i.startValue.length>0,v="startValue"in i?i.startValue:0,y="endValue"in i?i.endValue:100,_=i.byValue||(p?v.map((function(t,e){return y[e]-v[e]})):y-v);i.onStart&&i.onStart(),function t(i){var r=(e=i||+new Date)>u?c:e-l,n=r/c,w=p?v.map((function(t,e){return m(r,v[e],_[e],c)})):m(r,v,_,c),b=p?Math.abs((w[0]-v[0])/_[0]):Math.abs((w-v)/_);if(s.currentValue=p?w.slice():w,s.completionRate=b,s.durationRate=n,!o){if(!f(w,b,n))return e>u?(s.currentValue=p?y.slice():y,s.completionRate=1,s.durationRate=1,d(p?y.slice():y,1,1),g(y,1,1),void h()):(d(w,b,n),void a(t));h()}}(l)})),s.cancel},S.util.requestAnimFrame=a,S.util.cancelAnimFrame=function(){return o.apply(S.window,arguments)},S.runningAnimations=i}(),function(){function t(t,e,i){var r="rgba("+parseInt(t[0]+i*(e[0]-t[0]),10)+","+parseInt(t[1]+i*(e[1]-t[1]),10)+","+parseInt(t[2]+i*(e[2]-t[2]),10);return(r+=","+(t&&e?parseFloat(t[3]+i*(e[3]-t[3])):1))+")"}S.util.animateColor=function(e,i,r,n){var s=new S.Color(e).getSource(),o=new S.Color(i).getSource(),a=n.onComplete,h=n.onChange;return n=n||{},S.util.animate(S.util.object.extend(n,{duration:r||500,startValue:s,endValue:o,byValue:o,easing:function(e,i,r,s){return t(i,r,n.colorEasing?n.colorEasing(e,s):1-Math.cos(e/s*(Math.PI/2)))},onComplete:function(e,i,r){if(a)return a(t(o,o,0),i,r)},onChange:function(e,i,r){if(h){if(Array.isArray(e))return h(t(e,e,0),i,r);h(e,i,r)}}}))}}(),function(){function t(t,e,i,r){return t-1&&c>-1&&c-1)&&(i="stroke")}else{if("href"===t||"xlink:href"===t||"font"===t)return i;if("imageSmoothing"===t)return"optimizeQuality"===i;a=h?i.map(s):s(i,n)}}else i="";return!h&&isNaN(a)?i:a}function f(t){return new RegExp("^("+t.join("|")+")\\b","i")}function g(t,e){var i,r,n,s,o=[];for(n=0,s=e.length;n1;)h.shift(),l=e.util.multiplyTransformMatrices(l,h[0]);return l}}();var y=new RegExp("^\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*$");function _(t){if(!e.svgViewBoxElementsRegEx.test(t.nodeName))return{};var i,r,n,o,a,h,l=t.getAttribute("viewBox"),c=1,u=1,d=t.getAttribute("width"),f=t.getAttribute("height"),g=t.getAttribute("x")||0,m=t.getAttribute("y")||0,p=t.getAttribute("preserveAspectRatio")||"",v=!l||!(l=l.match(y)),_=!d||!f||"100%"===d||"100%"===f,w=v&&_,b={},x="",C=0,S=0;if(b.width=0,b.height=0,b.toBeParsed=w,v&&(g||m)&&t.parentNode&&"#document"!==t.parentNode.nodeName&&(x=" translate("+s(g)+" "+s(m)+") ",a=(t.getAttribute("transform")||"")+x,t.setAttribute("transform",a),t.removeAttribute("x"),t.removeAttribute("y")),w)return b;if(v)return b.width=s(d),b.height=s(f),b;if(i=-parseFloat(l[1]),r=-parseFloat(l[2]),n=parseFloat(l[3]),o=parseFloat(l[4]),b.minX=i,b.minY=r,b.viewBoxWidth=n,b.viewBoxHeight=o,_?(b.width=n,b.height=o):(b.width=s(d),b.height=s(f),c=b.width/n,u=b.height/o),"none"!==(p=e.util.parsePreserveAspectRatioAttribute(p)).alignX&&("meet"===p.meetOrSlice&&(u=c=c>u?u:c),"slice"===p.meetOrSlice&&(u=c=c>u?c:u),C=b.width-n*c,S=b.height-o*c,"Mid"===p.alignX&&(C/=2),"Mid"===p.alignY&&(S/=2),"Min"===p.alignX&&(C=0),"Min"===p.alignY&&(S=0)),1===c&&1===u&&0===i&&0===r&&0===g&&0===m)return b;if((g||m)&&"#document"!==t.parentNode.nodeName&&(x=" translate("+s(g)+" "+s(m)+") "),a=x+" matrix("+c+" 0 0 "+u+" "+(i*c+C)+" "+(r*u+S)+") ","svg"===t.nodeName){for(h=t.ownerDocument.createElementNS(e.svgNS,"g");t.firstChild;)h.appendChild(t.firstChild);t.appendChild(h)}else(h=t).removeAttribute("x"),h.removeAttribute("y"),a=h.getAttribute("transform")+a;return h.setAttribute("transform",a),b}function w(t,e){var i="xlink:href",r=v(t,e.getAttribute(i).slice(1));if(r&&r.getAttribute(i)&&w(t,r),["gradientTransform","x1","x2","y1","y2","gradientUnits","cx","cy","r","fx","fy"].forEach((function(t){r&&!e.hasAttribute(t)&&r.hasAttribute(t)&&e.setAttribute(t,r.getAttribute(t))})),!e.children.length)for(var n=r.cloneNode(!0);n.firstChild;)e.appendChild(n.firstChild);e.removeAttribute(i)}e.parseSVGDocument=function(t,i,n,s){if(t){!function(t){for(var i=g(t,["use","svg:use"]),r=0;i.length&&rt.x&&this.y>t.y},gte:function(t){return this.x>=t.x&&this.y>=t.y},lerp:function(t,e){return void 0===e&&(e=.5),e=Math.max(Math.min(1,e),0),new i(this.x+(t.x-this.x)*e,this.y+(t.y-this.y)*e)},distanceFrom:function(t){var e=this.x-t.x,i=this.y-t.y;return Math.sqrt(e*e+i*i)},midPointFrom:function(t){return this.lerp(t)},min:function(t){return new i(Math.min(this.x,t.x),Math.min(this.y,t.y))},max:function(t){return new i(Math.max(this.x,t.x),Math.max(this.y,t.y))},toString:function(){return this.x+","+this.y},setXY:function(t,e){return this.x=t,this.y=e,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setFromPoint:function(t){return this.x=t.x,this.y=t.y,this},swap:function(t){var e=this.x,i=this.y;this.x=t.x,this.y=t.y,t.x=e,t.y=i},clone:function(){return new i(this.x,this.y)}})}(e),function(t){var e=t.fabric||(t.fabric={});function i(t){this.status=t,this.points=[]}e.Intersection?e.warn("fabric.Intersection is already defined"):(e.Intersection=i,e.Intersection.prototype={constructor:i,appendPoint:function(t){return this.points.push(t),this},appendPoints:function(t){return this.points=this.points.concat(t),this}},e.Intersection.intersectLineLine=function(t,r,n,s){var o,a=(s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x),h=(r.x-t.x)*(t.y-n.y)-(r.y-t.y)*(t.x-n.x),l=(s.y-n.y)*(r.x-t.x)-(s.x-n.x)*(r.y-t.y);if(0!==l){var c=a/l,u=h/l;0<=c&&c<=1&&0<=u&&u<=1?(o=new i("Intersection")).appendPoint(new e.Point(t.x+c*(r.x-t.x),t.y+c*(r.y-t.y))):o=new i}else o=new i(0===a||0===h?"Coincident":"Parallel");return o},e.Intersection.intersectLinePolygon=function(t,e,r){var n,s,o,a,h=new i,l=r.length;for(a=0;a0&&(h.status="Intersection"),h},e.Intersection.intersectPolygonPolygon=function(t,e){var r,n=new i,s=t.length;for(r=0;r0&&(n.status="Intersection"),n},e.Intersection.intersectPolygonRectangle=function(t,r,n){var s=r.min(n),o=r.max(n),a=new e.Point(o.x,s.y),h=new e.Point(s.x,o.y),l=i.intersectLinePolygon(s,a,t),c=i.intersectLinePolygon(a,o,t),u=i.intersectLinePolygon(o,h,t),d=i.intersectLinePolygon(h,s,t),f=new i;return f.appendPoints(l.points),f.appendPoints(c.points),f.appendPoints(u.points),f.appendPoints(d.points),f.points.length>0&&(f.status="Intersection"),f})}(e),function(t){var e=t.fabric||(t.fabric={});function i(t){t?this._tryParsingColor(t):this.setSource([0,0,0,1])}function r(t,e,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+6*(e-t)*i:i<.5?e:i<2/3?t+(e-t)*(2/3-i)*6:t}e.Color?e.warn("fabric.Color is already defined."):(e.Color=i,e.Color.prototype={_tryParsingColor:function(t){var e;t in i.colorNameMap&&(t=i.colorNameMap[t]),"transparent"===t&&(e=[255,255,255,0]),e||(e=i.sourceFromHex(t)),e||(e=i.sourceFromRgb(t)),e||(e=i.sourceFromHsl(t)),e||(e=[0,0,0,1]),e&&this.setSource(e)},_rgbToHsl:function(t,i,r){t/=255,i/=255,r/=255;var n,s,o,a=e.util.array.max([t,i,r]),h=e.util.array.min([t,i,r]);if(o=(a+h)/2,a===h)n=s=0;else{var l=a-h;switch(s=o>.5?l/(2-a-h):l/(a+h),a){case t:n=(i-r)/l+(i0)-(t<0)||+t};function f(t,e){var i=t.angle+u(Math.atan2(e.y,e.x))+360;return Math.round(i%360/45)}function g(t,i){var r=i.transform.target,n=r.canvas,s=e.util.object.clone(i);s.target=r,n&&n.fire("object:"+t,s),r.fire(t,i)}function m(t,e){var i=e.canvas,r=t[i.uniScaleKey];return i.uniformScaling&&!r||!i.uniformScaling&&r}function p(t){return t.originX===l&&t.originY===l}function v(t,e,i){var r=t.lockScalingX,n=t.lockScalingY;return!((!r||!n)&&(e||!r&&!n||!i)&&(!r||"x"!==e)&&(!n||"y"!==e))}function y(t,e,i,r){return{e:t,transform:e,pointer:{x:i,y:r}}}function _(t){return function(e,i,r,n){var s=i.target,o=s.getCenterPoint(),a=s.translateToOriginPoint(o,i.originX,i.originY),h=t(e,i,r,n);return s.setPositionByOrigin(a,i.originX,i.originY),h}}function w(t,e){return function(i,r,n,s){var o=e(i,r,n,s);return o&&g(t,y(i,r,n,s)),o}}function b(t,i,r,n,s){var o=t.target,a=o.controls[t.corner],h=o.canvas.getZoom(),l=o.padding/h,c=o.toLocalPoint(new e.Point(n,s),i,r);return c.x>=l&&(c.x-=l),c.x<=-l&&(c.x+=l),c.y>=l&&(c.y-=l),c.y<=l&&(c.y+=l),c.x-=a.offsetX,c.y-=a.offsetY,c}function x(t){return t.flipX!==t.flipY}function C(t,e,i,r,n){if(0!==t[e]){var s=n/t._getTransformedDimensions()[r]*t[i];t.set(i,s)}}function S(t,e,i,r){var n,l=e.target,c=l._getTransformedDimensions(0,l.skewY),d=b(e,e.originX,e.originY,i,r),f=Math.abs(2*d.x)-c.x,g=l.skewX;f<2?n=0:(n=u(Math.atan2(f/l.scaleX,c.y/l.scaleY)),e.originX===s&&e.originY===h&&(n=-n),e.originX===a&&e.originY===o&&(n=-n),x(l)&&(n=-n));var m=g!==n;if(m){var p=l._getTransformedDimensions().y;l.set("skewX",n),C(l,"skewY","scaleY","y",p)}return m}function T(t,e,i,r){var n,l=e.target,c=l._getTransformedDimensions(l.skewX,0),d=b(e,e.originX,e.originY,i,r),f=Math.abs(2*d.y)-c.y,g=l.skewY;f<2?n=0:(n=u(Math.atan2(f/l.scaleY,c.x/l.scaleX)),e.originX===s&&e.originY===h&&(n=-n),e.originX===a&&e.originY===o&&(n=-n),x(l)&&(n=-n));var m=g!==n;if(m){var p=l._getTransformedDimensions().x;l.set("skewY",n),C(l,"skewX","scaleX","x",p)}return m}function E(t,e,i,r,n){n=n||{};var s,o,a,h,l,u,f=e.target,g=f.lockScalingX,y=f.lockScalingY,_=n.by,w=m(t,f),x=v(f,_,w),C=e.gestureScale;if(x)return!1;if(C)o=e.scaleX*C,a=e.scaleY*C;else{if(s=b(e,e.originX,e.originY,i,r),l="y"!==_?d(s.x):1,u="x"!==_?d(s.y):1,e.signX||(e.signX=l),e.signY||(e.signY=u),f.lockScalingFlip&&(e.signX!==l||e.signY!==u))return!1;if(h=f._getTransformedDimensions(),w&&!_){var S=Math.abs(s.x)+Math.abs(s.y),T=e.original,E=S/(Math.abs(h.x*T.scaleX/f.scaleX)+Math.abs(h.y*T.scaleY/f.scaleY));o=T.scaleX*E,a=T.scaleY*E}else o=Math.abs(s.x*f.scaleX/h.x),a=Math.abs(s.y*f.scaleY/h.y);p(e)&&(o*=2,a*=2),e.signX!==l&&"y"!==_&&(e.originX=c[e.originX],o*=-1,e.signX=l),e.signY!==u&&"x"!==_&&(e.originY=c[e.originY],a*=-1,e.signY=u)}var O=f.scaleX,A=f.scaleY;return _?("x"===_&&f.set("scaleX",o),"y"===_&&f.set("scaleY",a)):(!g&&f.set("scaleX",o),!y&&f.set("scaleY",a)),O!==f.scaleX||A!==f.scaleY}n.scaleCursorStyleHandler=function(t,e,r){var n=m(t,r),s="";if(0!==e.x&&0===e.y?s="x":0===e.x&&0!==e.y&&(s="y"),v(r,s,n))return"not-allowed";var o=f(r,e);return i[o]+"-resize"},n.skewCursorStyleHandler=function(t,e,i){var n="not-allowed";if(0!==e.x&&i.lockSkewingY)return n;if(0!==e.y&&i.lockSkewingX)return n;var s=f(i,e)%4;return r[s]+"-resize"},n.scaleSkewCursorStyleHandler=function(t,e,i){return t[i.canvas.altActionKey]?n.skewCursorStyleHandler(t,e,i):n.scaleCursorStyleHandler(t,e,i)},n.rotationWithSnapping=w("rotating",_((function(t,e,i,r){var n=e,s=n.target,o=s.translateToOriginPoint(s.getCenterPoint(),n.originX,n.originY);if(s.lockRotation)return!1;var a,h=Math.atan2(n.ey-o.y,n.ex-o.x),l=Math.atan2(r-o.y,i-o.x),c=u(l-h+n.theta);if(s.snapAngle>0){var d=s.snapAngle,f=s.snapThreshold||d,g=Math.ceil(c/d)*d,m=Math.floor(c/d)*d;Math.abs(c-m)0?s:a:(c>0&&(n=u===o?s:a),c<0&&(n=u===o?a:s),x(h)&&(n=n===s?a:s)),e.originX=n,w("skewing",_(S))(t,e,i,r))},n.skewHandlerY=function(t,e,i,r){var n,a=e.target,c=a.skewY,u=e.originX;return!a.lockSkewingY&&(0===c?n=b(e,l,l,i,r).y>0?o:h:(c>0&&(n=u===s?o:h),c<0&&(n=u===s?h:o),x(a)&&(n=n===o?h:o)),e.originY=n,w("skewing",_(T))(t,e,i,r))},n.dragHandler=function(t,e,i,r){var n=e.target,s=i-e.offsetX,o=r-e.offsetY,a=!n.get("lockMovementX")&&n.left!==s,h=!n.get("lockMovementY")&&n.top!==o;return a&&n.set("left",s),h&&n.set("top",o),(a||h)&&g("moving",y(t,e,i,r)),a||h},n.scaleOrSkewActionName=function(t,e,i){var r=t[i.canvas.altActionKey];return 0===e.x?r?"skewX":"scaleY":0===e.y?r?"skewY":"scaleX":void 0},n.rotationStyleHandler=function(t,e,i){return i.lockRotation?"not-allowed":e.cursorStyle},n.fireEvent=g,n.wrapWithFixedAnchor=_,n.wrapWithFireEvent=w,n.getLocalPoint=b,e.controlsUtils=n}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.degreesToRadians,r=e.controlsUtils;r.renderCircleControl=function(t,e,i,r,n){r=r||{};var s,o=this.sizeX||r.cornerSize||n.cornerSize,a=this.sizeY||r.cornerSize||n.cornerSize,h=void 0!==r.transparentCorners?r.transparentCorners:n.transparentCorners,l=h?"stroke":"fill",c=!h&&(r.cornerStrokeColor||n.cornerStrokeColor),u=e,d=i;t.save(),t.fillStyle=r.cornerColor||n.cornerColor,t.strokeStyle=r.cornerStrokeColor||n.cornerStrokeColor,o>a?(s=o,t.scale(1,a/o),d=i*o/a):a>o?(s=a,t.scale(o/a,1),u=e*a/o):s=o,t.lineWidth=1,t.beginPath(),t.arc(u,d,s/2,0,2*Math.PI,!1),t[l](),c&&t.stroke(),t.restore()},r.renderSquareControl=function(t,e,r,n,s){n=n||{};var o=this.sizeX||n.cornerSize||s.cornerSize,a=this.sizeY||n.cornerSize||s.cornerSize,h=void 0!==n.transparentCorners?n.transparentCorners:s.transparentCorners,l=h?"stroke":"fill",c=!h&&(n.cornerStrokeColor||s.cornerStrokeColor),u=o/2,d=a/2;t.save(),t.fillStyle=n.cornerColor||s.cornerColor,t.strokeStyle=n.cornerStrokeColor||s.cornerStrokeColor,t.lineWidth=1,t.translate(e,r),t.rotate(i(s.angle)),t[l+"Rect"](-u,-d,o,a),c&&t.strokeRect(-u,-d,o,a),t.restore()}}(e),function(t){var e=t.fabric||(t.fabric={});e.Control=function(t){for(var e in t)this[e]=t[e]},e.Control.prototype={visible:!0,actionName:"scale",angle:0,x:0,y:0,offsetX:0,offsetY:0,sizeX:null,sizeY:null,touchSizeX:null,touchSizeY:null,cursorStyle:"crosshair",withConnection:!1,actionHandler:function(){},mouseDownHandler:function(){},mouseUpHandler:function(){},getActionHandler:function(){return this.actionHandler},getMouseDownHandler:function(){return this.mouseDownHandler},getMouseUpHandler:function(){return this.mouseUpHandler},cursorStyleHandler:function(t,e){return e.cursorStyle},getActionName:function(t,e){return e.actionName},getVisibility:function(t,e){var i=t._controlsVisibility;return i&&void 0!==i[e]?i[e]:this.visible},setVisibility:function(t){this.visible=t},positionHandler:function(t,i){return e.util.transformPoint({x:this.x*t.x+this.offsetX,y:this.y*t.y+this.offsetY},i)},calcCornerCoords:function(t,i,r,n,s){var o,a,h,l,c=s?this.touchSizeX:this.sizeX,u=s?this.touchSizeY:this.sizeY;if(c&&u&&c!==u){var d=Math.atan2(u,c),f=Math.sqrt(c*c+u*u)/2,g=d-e.util.degreesToRadians(t),m=Math.PI/2-d-e.util.degreesToRadians(t);o=f*e.util.cos(g),a=f*e.util.sin(g),h=f*e.util.cos(m),l=f*e.util.sin(m)}else f=.7071067812*(c&&u?c:i),g=e.util.degreesToRadians(45-t),o=h=f*e.util.cos(g),a=l=f*e.util.sin(g);return{tl:{x:r-l,y:n-h},tr:{x:r+o,y:n-a},bl:{x:r-o,y:n+a},br:{x:r+l,y:n+h}}},render:function(t,i,r,n,s){"circle"===((n=n||{}).cornerStyle||s.cornerStyle)?e.controlsUtils.renderCircleControl.call(this,t,i,r,n,s):e.controlsUtils.renderSquareControl.call(this,t,i,r,n,s)}}}(e),function(){function t(t,e){var i,r,n,s,o=t.getAttribute("style"),a=t.getAttribute("offset")||0;if(a=(a=parseFloat(a)/(/%$/.test(a)?100:1))<0?0:a>1?1:a,o){var h=o.split(/\s*;\s*/);for(""===h[h.length-1]&&h.pop(),s=h.length;s--;){var l=h[s].split(/\s*:\s*/),c=l[0].trim(),u=l[1].trim();"stop-color"===c?i=u:"stop-opacity"===c&&(n=u)}}return i||(i=t.getAttribute("stop-color")||"rgb(0,0,0)"),n||(n=t.getAttribute("stop-opacity")),r=(i=new S.Color(i)).getAlpha(),n=isNaN(parseFloat(n))?1:parseFloat(n),n*=r*e,{offset:a,color:i.toRgb(),opacity:n}}var e=S.util.object.clone;S.Gradient=S.util.createClass({offsetX:0,offsetY:0,gradientTransform:null,gradientUnits:"pixels",type:"linear",initialize:function(t){t||(t={}),t.coords||(t.coords={});var e,i=this;Object.keys(t).forEach((function(e){i[e]=t[e]})),this.id?this.id+="_"+S.Object.__uid++:this.id=S.Object.__uid++,e={x1:t.coords.x1||0,y1:t.coords.y1||0,x2:t.coords.x2||0,y2:t.coords.y2||0},"radial"===this.type&&(e.r1=t.coords.r1||0,e.r2=t.coords.r2||0),this.coords=e,this.colorStops=t.colorStops.slice()},addColorStop:function(t){for(var e in t){var i=new S.Color(t[e]);this.colorStops.push({offset:parseFloat(e),color:i.toRgb(),opacity:i.getAlpha()})}return this},toObject:function(t){var e={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return S.util.populateWithProperties(this,e,t),e},toSVG:function(t,i){var r,n,s,o,a=e(this.coords,!0),h=(i=i||{},e(this.colorStops,!0)),l=a.r1>a.r2,c=this.gradientTransform?this.gradientTransform.concat():S.iMatrix.concat(),u=-this.offsetX,d=-this.offsetY,f=!!i.additionalTransform,g="pixels"===this.gradientUnits?"userSpaceOnUse":"objectBoundingBox";if(h.sort((function(t,e){return t.offset-e.offset})),"objectBoundingBox"===g?(u/=t.width,d/=t.height):(u+=t.width/2,d+=t.height/2),"path"===t.type&&"percentage"!==this.gradientUnits&&(u-=t.pathOffset.x,d-=t.pathOffset.y),c[4]-=u,c[5]-=d,o='id="SVGID_'+this.id+'" gradientUnits="'+g+'"',o+=' gradientTransform="'+(f?i.additionalTransform+" ":"")+S.util.matrixToSVG(c)+'" ',"linear"===this.type?s=["\n']:"radial"===this.type&&(s=["\n']),"radial"===this.type){if(l)for((h=h.concat()).reverse(),r=0,n=h.length;r0){var p=m/Math.max(a.r1,a.r2);for(r=0,n=h.length;r\n')}return s.push("linear"===this.type?"\n":"\n"),s.join("")},toLive:function(t){var e,i,r,n=S.util.object.clone(this.coords);if(this.type){for("linear"===this.type?e=t.createLinearGradient(n.x1,n.y1,n.x2,n.y2):"radial"===this.type&&(e=t.createRadialGradient(n.x1,n.y1,n.r1,n.x2,n.y2,n.r2)),i=0,r=this.colorStops.length;i1?1:s,isNaN(s)&&(s=1);var o,a,h,l,c=e.getElementsByTagName("stop"),u="userSpaceOnUse"===e.getAttribute("gradientUnits")?"pixels":"percentage",d=e.getAttribute("gradientTransform")||"",f=[],g=0,m=0;for("linearGradient"===e.nodeName||"LINEARGRADIENT"===e.nodeName?(o="linear",a=function(t){return{x1:t.getAttribute("x1")||0,y1:t.getAttribute("y1")||0,x2:t.getAttribute("x2")||"100%",y2:t.getAttribute("y2")||0}}(e)):(o="radial",a=function(t){return{x1:t.getAttribute("fx")||t.getAttribute("cx")||"50%",y1:t.getAttribute("fy")||t.getAttribute("cy")||"50%",r1:0,x2:t.getAttribute("cx")||"50%",y2:t.getAttribute("cy")||"50%",r2:t.getAttribute("r")||"50%"}}(e)),h=c.length;h--;)f.push(t(c[h],s));return l=S.parseTransformAttribute(d),function(t,e,i,r){var n,s;Object.keys(e).forEach((function(t){"Infinity"===(n=e[t])?s=1:"-Infinity"===n?s=0:(s=parseFloat(e[t],10),"string"==typeof n&&/^(\d+\.\d+)%|(\d+)%$/.test(n)&&(s*=.01,"pixels"===r&&("x1"!==t&&"x2"!==t&&"r2"!==t||(s*=i.viewBoxWidth||i.width),"y1"!==t&&"y2"!==t||(s*=i.viewBoxHeight||i.height)))),e[t]=s}))}(0,a,n,u),"pixels"===u&&(g=-i.left,m=-i.top),new S.Gradient({id:e.getAttribute("id"),type:o,coords:a,colorStops:f,gradientUnits:u,gradientTransform:l,offsetX:g,offsetY:m})}})}(),v=S.util.toFixed,S.Pattern=S.util.createClass({repeat:"repeat",offsetX:0,offsetY:0,crossOrigin:"",patternTransform:null,initialize:function(t,e){if(t||(t={}),this.id=S.Object.__uid++,this.setOptions(t),!t.source||t.source&&"string"!=typeof t.source)e&&e(this);else{var i=this;this.source=S.util.createImage(),S.util.loadImage(t.source,(function(t,r){i.source=t,e&&e(i,r)}),null,this.crossOrigin)}},toObject:function(t){var e,i,r=S.Object.NUM_FRACTION_DIGITS;return"string"==typeof this.source.src?e=this.source.src:"object"==typeof this.source&&this.source.toDataURL&&(e=this.source.toDataURL()),i={type:"pattern",source:e,repeat:this.repeat,crossOrigin:this.crossOrigin,offsetX:v(this.offsetX,r),offsetY:v(this.offsetY,r),patternTransform:this.patternTransform?this.patternTransform.concat():null},S.util.populateWithProperties(this,i,t),i},toSVG:function(t){var e="function"==typeof this.source?this.source():this.source,i=e.width/t.width,r=e.height/t.height,n=this.offsetX/t.width,s=this.offsetY/t.height,o="";return"repeat-x"!==this.repeat&&"no-repeat"!==this.repeat||(r=1,s&&(r+=Math.abs(s))),"repeat-y"!==this.repeat&&"no-repeat"!==this.repeat||(i=1,n&&(i+=Math.abs(n))),e.src?o=e.src:e.toDataURL&&(o=e.toDataURL()),'\n\n\n'},setOptions:function(t){for(var e in t)this[e]=t[e]},toLive:function(t){var e=this.source;if(!e)return"";if(void 0!==e.src){if(!e.complete)return"";if(0===e.naturalWidth||0===e.naturalHeight)return""}return t.createPattern(e,this.repeat)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.toFixed;e.Shadow?e.warn("fabric.Shadow is already defined."):(e.Shadow=e.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1,initialize:function(t){for(var i in"string"==typeof t&&(t=this._parseShadow(t)),t)this[i]=t[i];this.id=e.Object.__uid++},_parseShadow:function(t){var i=t.trim(),r=e.Shadow.reOffsetsAndBlur.exec(i)||[];return{color:(i.replace(e.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)").trim(),offsetX:parseFloat(r[1],10)||0,offsetY:parseFloat(r[2],10)||0,blur:parseFloat(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(t){var r=40,n=40,s=e.Object.NUM_FRACTION_DIGITS,o=e.util.rotateVector({x:this.offsetX,y:this.offsetY},e.util.degreesToRadians(-t.angle)),a=new e.Color(this.color);return t.width&&t.height&&(r=100*i((Math.abs(o.x)+this.blur)/t.width,s)+20,n=100*i((Math.abs(o.y)+this.blur)/t.height,s)+20),t.flipX&&(o.x*=-1),t.flipY&&(o.y*=-1),'\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\n\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling};var t={},i=e.Shadow.prototype;return["color","blur","offsetX","offsetY","affectStroke","nonScaling"].forEach((function(e){this[e]!==i[e]&&(t[e]=this[e])}),this),t}}),e.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(\d+(?:\.\d*)?(?:px)?)?(?:\s?|$)(?:$|\s)/)}(e),function(){if(S.StaticCanvas)S.warn("fabric.StaticCanvas is already defined.");else{var t=S.util.object.extend,e=S.util.getElementOffset,i=S.util.removeFromArray,r=S.util.toFixed,n=S.util.transformPoint,s=S.util.invertTransform,o=S.util.getNodeCanvas,a=S.util.createCanvasElement,h=new Error("Could not initialize `canvas` element");S.StaticCanvas=S.util.createClass(S.CommonMethods,{initialize:function(t,e){e||(e={}),this.renderAndResetBound=this.renderAndReset.bind(this),this.requestRenderAllBound=this.requestRenderAll.bind(this),this._initStatic(t,e)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!1,renderOnAddRemove:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:S.iMatrix.concat(),backgroundVpt:!0,overlayVpt:!0,enableRetinaScaling:!0,vptCoords:{},skipOffscreen:!0,clipPath:void 0,_initStatic:function(t,e){var i=this.requestRenderAllBound;this._objects=[],this._createLowerCanvas(t),this._initOptions(e),this.interactive||this._initRetinaScaling(),e.overlayImage&&this.setOverlayImage(e.overlayImage,i),e.backgroundImage&&this.setBackgroundImage(e.backgroundImage,i),e.backgroundColor&&this.setBackgroundColor(e.backgroundColor,i),e.overlayColor&&this.setOverlayColor(e.overlayColor,i),this.calcOffset()},_isRetinaScaling:function(){return S.devicePixelRatio>1&&this.enableRetinaScaling},getRetinaScaling:function(){return this._isRetinaScaling()?Math.max(1,S.devicePixelRatio):1},_initRetinaScaling:function(){if(this._isRetinaScaling()){var t=S.devicePixelRatio;this.__initRetinaScaling(t,this.lowerCanvasEl,this.contextContainer),this.upperCanvasEl&&this.__initRetinaScaling(t,this.upperCanvasEl,this.contextTop)}},__initRetinaScaling:function(t,e,i){e.setAttribute("width",this.width*t),e.setAttribute("height",this.height*t),i.scale(t,t)},calcOffset:function(){return this._offset=e(this.lowerCanvasEl),this},setOverlayImage:function(t,e,i){return this.__setBgOverlayImage("overlayImage",t,e,i)},setBackgroundImage:function(t,e,i){return this.__setBgOverlayImage("backgroundImage",t,e,i)},setOverlayColor:function(t,e){return this.__setBgOverlayColor("overlayColor",t,e)},setBackgroundColor:function(t,e){return this.__setBgOverlayColor("backgroundColor",t,e)},__setBgOverlayImage:function(t,e,i,r){return"string"==typeof e?S.util.loadImage(e,(function(e,n){if(e){var s=new S.Image(e,r);this[t]=s,s.canvas=this}i&&i(e,n)}),this,r&&r.crossOrigin):(r&&e.setOptions(r),this[t]=e,e&&(e.canvas=this),i&&i(e,!1)),this},__setBgOverlayColor:function(t,e,i){return this[t]=e,this._initGradient(e,t),this._initPattern(e,t,i),this},_createCanvasElement:function(){var t=a();if(!t)throw h;if(t.style||(t.style={}),void 0===t.getContext)throw h;return t},_initOptions:function(t){var e=this.lowerCanvasEl;this._setOptions(t),this.width=this.width||parseInt(e.width,10)||0,this.height=this.height||parseInt(e.height,10)||0,this.lowerCanvasEl.style&&(e.width=this.width,e.height=this.height,e.style.width=this.width+"px",e.style.height=this.height+"px",this.viewportTransform=this.viewportTransform.slice())},_createLowerCanvas:function(t){t&&t.getContext?this.lowerCanvasEl=t:this.lowerCanvasEl=S.util.getById(t)||this._createCanvasElement(),S.util.addClass(this.lowerCanvasEl,"lower-canvas"),this._originalCanvasStyle=this.lowerCanvasEl.style,this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(t,e){return this.setDimensions({width:t},e)},setHeight:function(t,e){return this.setDimensions({height:t},e)},setDimensions:function(t,e){var i;for(var r in e=e||{},t)i=t[r],e.cssOnly||(this._setBackstoreDimension(r,t[r]),i+="px",this.hasLostContext=!0),e.backstoreOnly||this._setCssDimension(r,i);return this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(this.contextTop),this._initRetinaScaling(),this.calcOffset(),e.cssOnly||this.requestRenderAll(),this},_setBackstoreDimension:function(t,e){return this.lowerCanvasEl[t]=e,this.upperCanvasEl&&(this.upperCanvasEl[t]=e),this.cacheCanvasEl&&(this.cacheCanvasEl[t]=e),this[t]=e,this},_setCssDimension:function(t,e){return this.lowerCanvasEl.style[t]=e,this.upperCanvasEl&&(this.upperCanvasEl.style[t]=e),this.wrapperEl&&(this.wrapperEl.style[t]=e),this},getZoom:function(){return this.viewportTransform[0]},setViewportTransform:function(t){var e,i,r,n=this._activeObject,s=this.backgroundImage,o=this.overlayImage;for(this.viewportTransform=t,i=0,r=this._objects.length;i\n'),this._setSVGBgOverlayColor(i,"background"),this._setSVGBgOverlayImage(i,"backgroundImage",e),this._setSVGObjects(i,e),this.clipPath&&i.push("\n"),this._setSVGBgOverlayColor(i,"overlay"),this._setSVGBgOverlayImage(i,"overlayImage",e),i.push(""),i.join("")},_setSVGPreamble:function(t,e){e.suppressPreamble||t.push('\n','\n')},_setSVGHeader:function(t,e){var i,n=e.width||this.width,s=e.height||this.height,o='viewBox="0 0 '+this.width+" "+this.height+'" ',a=S.Object.NUM_FRACTION_DIGITS;e.viewBox?o='viewBox="'+e.viewBox.x+" "+e.viewBox.y+" "+e.viewBox.width+" "+e.viewBox.height+'" ':this.svgViewportTransformation&&(i=this.viewportTransform,o='viewBox="'+r(-i[4]/i[0],a)+" "+r(-i[5]/i[3],a)+" "+r(this.width/i[0],a)+" "+r(this.height/i[3],a)+'" '),t.push("\n',"Created with Fabric.js ",S.version,"\n","\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(e),"\n")},createSVGClipPathMarkup:function(t){var e=this.clipPath;return e?(e.clipPathId="CLIPPATH_"+S.Object.__uid++,'\n'+this.clipPath.toClipPathSVG(t.reviver)+"\n"):""},createSVGRefElementsMarkup:function(){var t=this;return["background","overlay"].map((function(e){var i=t[e+"Color"];if(i&&i.toLive){var r=t[e+"Vpt"],n=t.viewportTransform,s={width:t.width/(r?n[0]:1),height:t.height/(r?n[3]:1)};return i.toSVG(s,{additionalTransform:r?S.util.matrixToSVG(n):""})}})).join("")},createSVGFontFacesMarkup:function(){var t,e,i,r,n,s,o,a,h="",l={},c=S.fontPaths,u=[];for(this._objects.forEach((function t(e){u.push(e),e._objects&&e._objects.forEach(t)})),o=0,a=u.length;o',"\n",h,"","\n"].join("")),h},_setSVGObjects:function(t,e){var i,r,n,s=this._objects;for(r=0,n=s.length;r\n")}else t.push('\n")},sendToBack:function(t){if(!t)return this;var e,r,n,s=this._activeObject;if(t===s&&"activeSelection"===t.type)for(e=(n=s._objects).length;e--;)r=n[e],i(this._objects,r),this._objects.unshift(r);else i(this._objects,t),this._objects.unshift(t);return this.renderOnAddRemove&&this.requestRenderAll(),this},bringToFront:function(t){if(!t)return this;var e,r,n,s=this._activeObject;if(t===s&&"activeSelection"===t.type)for(n=s._objects,e=0;e0+l&&(o=s-1,i(this._objects,n),this._objects.splice(o,0,n)),l++;else 0!==(s=this._objects.indexOf(t))&&(o=this._findNewLowerIndex(t,s,e),i(this._objects,t),this._objects.splice(o,0,t));return this.renderOnAddRemove&&this.requestRenderAll(),this},_findNewLowerIndex:function(t,e,i){var r,n;if(i){for(r=e,n=e-1;n>=0;--n)if(t.intersectsWithObject(this._objects[n])||t.isContainedWithinObject(this._objects[n])||this._objects[n].isContainedWithinObject(t)){r=n;break}}else r=e-1;return r},bringForward:function(t,e){if(!t)return this;var r,n,s,o,a,h=this._activeObject,l=0;if(t===h&&"activeSelection"===t.type)for(r=(a=h._objects).length;r--;)n=a[r],(s=this._objects.indexOf(n))"}}),t(S.StaticCanvas.prototype,S.Observable),t(S.StaticCanvas.prototype,S.Collection),t(S.StaticCanvas.prototype,S.DataURLExporter),t(S.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(t){var e=a();if(!e||!e.getContext)return null;var i=e.getContext("2d");return i&&"setLineDash"===t?void 0!==i.setLineDash:null}}),S.StaticCanvas.prototype.toJSON=S.StaticCanvas.prototype.toObject,S.isLikelyNode&&(S.StaticCanvas.prototype.createPNGStream=function(){var t=o(this.lowerCanvasEl);return t&&t.createPNGStream()},S.StaticCanvas.prototype.createJPEGStream=function(t){var e=o(this.lowerCanvasEl);return e&&e.createJPEGStream(t)})}}(),S.BaseBrush=S.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",strokeMiterLimit:10,strokeDashArray:null,limitedToCanvasSize:!1,_setBrushStyles:function(t){t.strokeStyle=this.color,t.lineWidth=this.width,t.lineCap=this.strokeLineCap,t.miterLimit=this.strokeMiterLimit,t.lineJoin=this.strokeLineJoin,t.setLineDash(this.strokeDashArray||[])},_saveAndTransform:function(t){var e=this.canvas.viewportTransform;t.save(),t.transform(e[0],e[1],e[2],e[3],e[4],e[5])},_setShadow:function(){if(this.shadow){var t=this.canvas,e=this.shadow,i=t.contextTop,r=t.getZoom();t&&t._isRetinaScaling()&&(r*=S.devicePixelRatio),i.shadowColor=e.color,i.shadowBlur=e.blur*r,i.shadowOffsetX=e.offsetX*r,i.shadowOffsetY=e.offsetY*r}},needsFullRender:function(){return new S.Color(this.color).getAlpha()<1||!!this.shadow},_resetShadow:function(){var t=this.canvas.contextTop;t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0},_isOutSideCanvas:function(t){return t.x<0||t.x>this.canvas.getWidth()||t.y<0||t.y>this.canvas.getHeight()}}),S.PencilBrush=S.util.createClass(S.BaseBrush,{decimate:.4,drawStraightLine:!1,straightLineKey:"shiftKey",initialize:function(t){this.canvas=t,this._points=[]},needsFullRender:function(){return this.callSuper("needsFullRender")||this._hasStraightLine},_drawSegment:function(t,e,i){var r=e.midPointFrom(i);return t.quadraticCurveTo(e.x,e.y,r.x,r.y),r},onMouseDown:function(t,e){this.canvas._isMainEvent(e.e)&&(this.drawStraightLine=e.e[this.straightLineKey],this._prepareForDrawing(t),this._captureDrawingPath(t),this._render())},onMouseMove:function(t,e){if(this.canvas._isMainEvent(e.e)&&(this.drawStraightLine=e.e[this.straightLineKey],(!0!==this.limitedToCanvasSize||!this._isOutSideCanvas(t))&&this._captureDrawingPath(t)&&this._points.length>1))if(this.needsFullRender())this.canvas.clearContext(this.canvas.contextTop),this._render();else{var i=this._points,r=i.length,n=this.canvas.contextTop;this._saveAndTransform(n),this.oldEnd&&(n.beginPath(),n.moveTo(this.oldEnd.x,this.oldEnd.y)),this.oldEnd=this._drawSegment(n,i[r-2],i[r-1],!0),n.stroke(),n.restore()}},onMouseUp:function(t){return!this.canvas._isMainEvent(t.e)||(this.drawStraightLine=!1,this.oldEnd=void 0,this._finalizeAndAddPath(),!1)},_prepareForDrawing:function(t){var e=new S.Point(t.x,t.y);this._reset(),this._addPoint(e),this.canvas.contextTop.moveTo(e.x,e.y)},_addPoint:function(t){return!(this._points.length>1&&t.eq(this._points[this._points.length-1])||(this.drawStraightLine&&this._points.length>1&&(this._hasStraightLine=!0,this._points.pop()),this._points.push(t),0))},_reset:function(){this._points=[],this._setBrushStyles(this.canvas.contextTop),this._setShadow(),this._hasStraightLine=!1},_captureDrawingPath:function(t){var e=new S.Point(t.x,t.y);return this._addPoint(e)},_render:function(t){var e,i,r=this._points[0],n=this._points[1];if(t=t||this.canvas.contextTop,this._saveAndTransform(t),t.beginPath(),2===this._points.length&&r.x===n.x&&r.y===n.y){var s=this.width/1e3;r=new S.Point(r.x,r.y),n=new S.Point(n.x,n.y),r.x-=s,n.x+=s}for(t.moveTo(r.x,r.y),e=1,i=this._points.length;e=n&&(o=t[i],a.push(o));return a.push(t[s]),a},_finalizeAndAddPath:function(){this.canvas.contextTop.closePath(),this.decimate&&(this._points=this.decimatePoints(this._points,this.decimate));var t=this.convertPointsToSVGPath(this._points);if(this._isEmptySVGPath(t))this.canvas.requestRenderAll();else{var e=this.createPath(t);this.canvas.clearContext(this.canvas.contextTop),this.canvas.fire("before:path:created",{path:e}),this.canvas.add(e),this.canvas.requestRenderAll(),e.setCoords(),this._resetShadow(),this.canvas.fire("path:created",{path:e})}}}),S.CircleBrush=S.util.createClass(S.BaseBrush,{width:10,initialize:function(t){this.canvas=t,this.points=[]},drawDot:function(t){var e=this.addPoint(t),i=this.canvas.contextTop;this._saveAndTransform(i),this.dot(i,e),i.restore()},dot:function(t,e){t.fillStyle=e.fill,t.beginPath(),t.arc(e.x,e.y,e.radius,0,2*Math.PI,!1),t.closePath(),t.fill()},onMouseDown:function(t){this.points.length=0,this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.drawDot(t)},_render:function(){var t,e,i=this.canvas.contextTop,r=this.points;for(this._saveAndTransform(i),t=0,e=r.length;t0&&!this.preserveObjectStacking){e=[],i=[];for(var n=0,s=this._objects.length;n1&&(this._activeObject._objects=i),e.push.apply(e,i)}else e=this._objects;return e},renderAll:function(){!this.contextTopDirty||this._groupSelector||this.isDrawingMode||(this.clearContext(this.contextTop),this.contextTopDirty=!1),this.hasLostContext&&(this.renderTopLayer(this.contextTop),this.hasLostContext=!1);var t=this.contextContainer;return this.renderCanvas(t,this._chooseObjectsToRender()),this},renderTopLayer:function(t){t.save(),this.isDrawingMode&&this._isCurrentlyDrawing&&(this.freeDrawingBrush&&this.freeDrawingBrush._render(),this.contextTopDirty=!0),this.selection&&this._groupSelector&&(this._drawSelection(t),this.contextTopDirty=!0),t.restore()},renderTop:function(){var t=this.contextTop;return this.clearContext(t),this.renderTopLayer(t),this.fire("after:render"),this},_normalizePointer:function(t,e){var i=t.calcTransformMatrix(),r=S.util.invertTransform(i),n=this.restorePointerVpt(e);return S.util.transformPoint(n,r)},isTargetTransparent:function(t,e,i){if(t.shouldCache()&&t._cacheCanvas&&t!==this._activeObject){var r=this._normalizePointer(t,{x:e,y:i}),n=Math.max(t.cacheTranslationX+r.x*t.zoomX,0),s=Math.max(t.cacheTranslationY+r.y*t.zoomY,0);return S.util.isTransparent(t._cacheContext,Math.round(n),Math.round(s),this.targetFindTolerance)}var o=this.contextCache,a=t.selectionBackgroundColor,h=this.viewportTransform;return t.selectionBackgroundColor="",this.clearContext(o),o.save(),o.transform(h[0],h[1],h[2],h[3],h[4],h[5]),t.render(o),o.restore(),t.selectionBackgroundColor=a,S.util.isTransparent(o,e,i,this.targetFindTolerance)},_isSelectionKeyPressed:function(t){return Array.isArray(this.selectionKey)?!!this.selectionKey.find((function(e){return!0===t[e]})):t[this.selectionKey]},_shouldClearSelection:function(t,e){var i=this.getActiveObjects(),r=this._activeObject;return!e||e&&r&&i.length>1&&-1===i.indexOf(e)&&r!==e&&!this._isSelectionKeyPressed(t)||e&&!e.evented||e&&!e.selectable&&r&&r!==e},_shouldCenterTransform:function(t,e,i){var r;if(t)return"scale"===e||"scaleX"===e||"scaleY"===e||"resizing"===e?r=this.centeredScaling||t.centeredScaling:"rotate"===e&&(r=this.centeredRotation||t.centeredRotation),r?!i:i},_getOriginFromCorner:function(t,e){var i={x:t.originX,y:t.originY};return"ml"===e||"tl"===e||"bl"===e?i.x="right":"mr"!==e&&"tr"!==e&&"br"!==e||(i.x="left"),"tl"===e||"mt"===e||"tr"===e?i.y="bottom":"bl"!==e&&"mb"!==e&&"br"!==e||(i.y="top"),i},_getActionFromCorner:function(t,e,i,r){if(!e||!t)return"drag";var n=r.controls[e];return n.getActionName(i,n,r)},_setupCurrentTransform:function(t,i,r){if(i){var n=this.getPointer(t),s=i.__corner,o=i.controls[s],a=r&&s?o.getActionHandler(t,i,o):S.controlsUtils.dragHandler,h=this._getActionFromCorner(r,s,t,i),l=this._getOriginFromCorner(i,s),c=t[this.centeredKey],u={target:i,action:h,actionHandler:a,corner:s,scaleX:i.scaleX,scaleY:i.scaleY,skewX:i.skewX,skewY:i.skewY,offsetX:n.x-i.left,offsetY:n.y-i.top,originX:l.x,originY:l.y,ex:n.x,ey:n.y,lastX:n.x,lastY:n.y,theta:e(i.angle),width:i.width*i.scaleX,shiftKey:t.shiftKey,altKey:c,original:S.util.saveObjectTransform(i)};this._shouldCenterTransform(i,h,c)&&(u.originX="center",u.originY="center"),u.original.originX=l.x,u.original.originY=l.y,this._currentTransform=u,this._beforeTransform(t)}},setCursor:function(t){this.upperCanvasEl.style.cursor=t},_drawSelection:function(t){var e=this._groupSelector,i=new S.Point(e.ex,e.ey),r=S.util.transformPoint(i,this.viewportTransform),n=new S.Point(e.ex+e.left,e.ey+e.top),s=S.util.transformPoint(n,this.viewportTransform),o=Math.min(r.x,s.x),a=Math.min(r.y,s.y),h=Math.max(r.x,s.x),l=Math.max(r.y,s.y),c=this.selectionLineWidth/2;this.selectionColor&&(t.fillStyle=this.selectionColor,t.fillRect(o,a,h-o,l-a)),this.selectionLineWidth&&this.selectionBorderColor&&(t.lineWidth=this.selectionLineWidth,t.strokeStyle=this.selectionBorderColor,o+=c,a+=c,h-=c,l-=c,S.Object.prototype._setLineDash.call(this,t,this.selectionDashArray),t.strokeRect(o,a,h-o,l-a))},findTarget:function(t,e){if(!this.skipTargetFind){var r,n,s=this.getPointer(t,!0),o=this._activeObject,a=this.getActiveObjects(),h=i(t),l=a.length>1&&!e||1===a.length;if(this.targets=[],l&&o._findTargetCorner(s,h))return o;if(a.length>1&&!e&&o===this._searchPossibleTargets([o],s))return o;if(1===a.length&&o===this._searchPossibleTargets([o],s)){if(!this.preserveObjectStacking)return o;r=o,n=this.targets,this.targets=[]}var c=this._searchPossibleTargets(this._objects,s);return t[this.altSelectionKey]&&c&&r&&c!==r&&(c=r,this.targets=n),c}},_checkTarget:function(t,e,i){if(e&&e.visible&&e.evented&&e.containsPoint(t)){if(!this.perPixelTargetFind&&!e.perPixelTargetFind||e.isEditing)return!0;if(!this.isTargetTransparent(e,i.x,i.y))return!0}},_searchPossibleTargets:function(t,e){for(var i,r,n=t.length;n--;){var s=t[n],o=s.group?this._normalizePointer(s.group,e):e;if(this._checkTarget(o,s,e)){(i=t[n]).subTargetCheck&&i instanceof S.Group&&(r=this._searchPossibleTargets(i._objects,e))&&this.targets.push(r);break}}return i},restorePointerVpt:function(t){return S.util.transformPoint(t,S.util.invertTransform(this.viewportTransform))},getPointer:function(e,i){if(this._absolutePointer&&!i)return this._absolutePointer;if(this._pointer&&i)return this._pointer;var r,n=t(e),s=this.upperCanvasEl,o=s.getBoundingClientRect(),a=o.width||0,h=o.height||0;a&&h||("top"in o&&"bottom"in o&&(h=Math.abs(o.top-o.bottom)),"right"in o&&"left"in o&&(a=Math.abs(o.right-o.left))),this.calcOffset(),n.x=n.x-this._offset.left,n.y=n.y-this._offset.top,i||(n=this.restorePointerVpt(n));var l=this.getRetinaScaling();return 1!==l&&(n.x/=l,n.y/=l),r=0===a||0===h?{width:1,height:1}:{width:s.width/a,height:s.height/h},{x:n.x*r.width,y:n.y*r.height}},_createUpperCanvas:function(){var t=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,""),e=this.lowerCanvasEl,i=this.upperCanvasEl;i?i.className="":(i=this._createCanvasElement(),this.upperCanvasEl=i),S.util.addClass(i,"upper-canvas "+t),this.wrapperEl.appendChild(i),this._copyCanvasStyle(e,i),this._applyCanvasStyle(i),this.contextTop=i.getContext("2d")},getTopContext:function(){return this.contextTop},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement(),this.cacheCanvasEl.setAttribute("width",this.width),this.cacheCanvasEl.setAttribute("height",this.height),this.contextCache=this.cacheCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=S.util.wrapElement(this.lowerCanvasEl,"div",{class:this.containerClass}),S.util.setStyle(this.wrapperEl,{width:this.width+"px",height:this.height+"px",position:"relative"}),S.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(t){var e=this.width||t.width,i=this.height||t.height;S.util.setStyle(t,{position:"absolute",width:e+"px",height:i+"px",left:0,top:0,"touch-action":this.allowTouchScrolling?"manipulation":"none","-ms-touch-action":this.allowTouchScrolling?"manipulation":"none"}),t.width=e,t.height=i,S.util.makeElementUnselectable(t)},_copyCanvasStyle:function(t,e){e.style.cssText=t.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},getActiveObject:function(){return this._activeObject},getActiveObjects:function(){var t=this._activeObject;return t?"activeSelection"===t.type&&t._objects?t._objects.slice(0):[t]:[]},_onObjectRemoved:function(t){t===this._activeObject&&(this.fire("before:selection:cleared",{target:t}),this._discardActiveObject(),this.fire("selection:cleared",{target:t}),t.fire("deselected")),t===this._hoveredTarget&&(this._hoveredTarget=null,this._hoveredTargets=[]),this.callSuper("_onObjectRemoved",t)},_fireSelectionEvents:function(t,e){var i=!1,r=this.getActiveObjects(),n=[],s=[];t.forEach((function(t){-1===r.indexOf(t)&&(i=!0,t.fire("deselected",{e,target:t}),s.push(t))})),r.forEach((function(r){-1===t.indexOf(r)&&(i=!0,r.fire("selected",{e,target:r}),n.push(r))})),t.length>0&&r.length>0?i&&this.fire("selection:updated",{e,selected:n,deselected:s}):r.length>0?this.fire("selection:created",{e,selected:n}):t.length>0&&this.fire("selection:cleared",{e,deselected:s})},setActiveObject:function(t,e){var i=this.getActiveObjects();return this._setActiveObject(t,e),this._fireSelectionEvents(i,e),this},_setActiveObject:function(t,e){return this._activeObject!==t&&!!this._discardActiveObject(e,t)&&!t.onSelect({e})&&(this._activeObject=t,!0)},_discardActiveObject:function(t,e){var i=this._activeObject;if(i){if(i.onDeselect({e:t,object:e}))return!1;this._activeObject=null}return!0},discardActiveObject:function(t){var e=this.getActiveObjects(),i=this.getActiveObject();return e.length&&this.fire("before:selection:cleared",{target:i,e:t}),this._discardActiveObject(t),this._fireSelectionEvents(e,t),this},dispose:function(){var t=this.wrapperEl;return this.removeListeners(),t.removeChild(this.upperCanvasEl),t.removeChild(this.lowerCanvasEl),this.contextCache=null,this.contextTop=null,["upperCanvasEl","cacheCanvasEl"].forEach(function(t){S.util.cleanUpJsdomNode(this[t]),this[t]=void 0}.bind(this)),t.parentNode&&t.parentNode.replaceChild(this.lowerCanvasEl,this.wrapperEl),delete this.wrapperEl,S.StaticCanvas.prototype.dispose.call(this),this},clear:function(){return this.discardActiveObject(),this.clearContext(this.contextTop),this.callSuper("clear")},drawControls:function(t){var e=this._activeObject;e&&e._renderControls(t)},_toObject:function(t,e,i){var r=this._realizeGroupTransformOnObject(t),n=this.callSuper("_toObject",t,e,i);return this._unwindGroupTransformOnObject(t,r),n},_realizeGroupTransformOnObject:function(t){if(t.group&&"activeSelection"===t.group.type&&this._activeObject===t.group){var e={};return["angle","flipX","flipY","left","scaleX","scaleY","skewX","skewY","top"].forEach((function(i){e[i]=t[i]})),S.util.addTransformToObject(t,this._activeObject.calcOwnMatrix()),e}return null},_unwindGroupTransformOnObject:function(t,e){e&&t.set(e)},_setSVGObject:function(t,e,i){var r=this._realizeGroupTransformOnObject(e);this.callSuper("_setSVGObject",t,e,i),this._unwindGroupTransformOnObject(e,r)},setViewportTransform:function(t){this.renderOnAddRemove&&this._activeObject&&this._activeObject.isEditing&&this._activeObject.clearContextTop(),S.StaticCanvas.prototype.setViewportTransform.call(this,t)}}),S.StaticCanvas)"prototype"!==r&&(S.Canvas[r]=S.StaticCanvas[r])}(),function(){var t=S.util.addListener,e=S.util.removeListener,i={passive:!1};function r(t,e){return t.button&&t.button===e-1}S.util.object.extend(S.Canvas.prototype,{mainTouchId:null,_initEventListeners:function(){this.removeListeners(),this._bindEvents(),this.addOrRemove(t,"add")},_getEventPrefix:function(){return this.enablePointerEvents?"pointer":"mouse"},addOrRemove:function(t,e){var r=this.upperCanvasEl,n=this._getEventPrefix();t(S.window,"resize",this._onResize),t(r,n+"down",this._onMouseDown),t(r,n+"move",this._onMouseMove,i),t(r,n+"out",this._onMouseOut),t(r,n+"enter",this._onMouseEnter),t(r,"wheel",this._onMouseWheel),t(r,"contextmenu",this._onContextMenu),t(r,"dblclick",this._onDoubleClick),t(r,"dragover",this._onDragOver),t(r,"dragenter",this._onDragEnter),t(r,"dragleave",this._onDragLeave),t(r,"drop",this._onDrop),this.enablePointerEvents||t(r,"touchstart",this._onTouchStart,i),"undefined"!=typeof eventjs&&e in eventjs&&(eventjs[e](r,"gesture",this._onGesture),eventjs[e](r,"drag",this._onDrag),eventjs[e](r,"orientation",this._onOrientationChange),eventjs[e](r,"shake",this._onShake),eventjs[e](r,"longpress",this._onLongPress))},removeListeners:function(){this.addOrRemove(e,"remove");var t=this._getEventPrefix();e(S.document,t+"up",this._onMouseUp),e(S.document,"touchend",this._onTouchEnd,i),e(S.document,t+"move",this._onMouseMove,i),e(S.document,"touchmove",this._onMouseMove,i)},_bindEvents:function(){this.eventsBound||(this._onMouseDown=this._onMouseDown.bind(this),this._onTouchStart=this._onTouchStart.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this._onTouchEnd=this._onTouchEnd.bind(this),this._onResize=this._onResize.bind(this),this._onGesture=this._onGesture.bind(this),this._onDrag=this._onDrag.bind(this),this._onShake=this._onShake.bind(this),this._onLongPress=this._onLongPress.bind(this),this._onOrientationChange=this._onOrientationChange.bind(this),this._onMouseWheel=this._onMouseWheel.bind(this),this._onMouseOut=this._onMouseOut.bind(this),this._onMouseEnter=this._onMouseEnter.bind(this),this._onContextMenu=this._onContextMenu.bind(this),this._onDoubleClick=this._onDoubleClick.bind(this),this._onDragOver=this._onDragOver.bind(this),this._onDragEnter=this._simpleEventHandler.bind(this,"dragenter"),this._onDragLeave=this._simpleEventHandler.bind(this,"dragleave"),this._onDrop=this._onDrop.bind(this),this.eventsBound=!0)},_onGesture:function(t,e){this.__onTransformGesture&&this.__onTransformGesture(t,e)},_onDrag:function(t,e){this.__onDrag&&this.__onDrag(t,e)},_onMouseWheel:function(t){this.__onMouseWheel(t)},_onMouseOut:function(t){var e=this._hoveredTarget;this.fire("mouse:out",{target:e,e:t}),this._hoveredTarget=null,e&&e.fire("mouseout",{e:t});var i=this;this._hoveredTargets.forEach((function(r){i.fire("mouse:out",{target:e,e:t}),r&&e.fire("mouseout",{e:t})})),this._hoveredTargets=[],this._iTextInstances&&this._iTextInstances.forEach((function(t){t.isEditing&&t.hiddenTextarea.focus()}))},_onMouseEnter:function(t){this._currentTransform||this.findTarget(t)||(this.fire("mouse:over",{target:null,e:t}),this._hoveredTarget=null,this._hoveredTargets=[])},_onOrientationChange:function(t,e){this.__onOrientationChange&&this.__onOrientationChange(t,e)},_onShake:function(t,e){this.__onShake&&this.__onShake(t,e)},_onLongPress:function(t,e){this.__onLongPress&&this.__onLongPress(t,e)},_onDragOver:function(t){t.preventDefault();var e=this._simpleEventHandler("dragover",t);this._fireEnterLeaveEvents(e,t)},_onDrop:function(t){return this._simpleEventHandler("drop:before",t),this._simpleEventHandler("drop",t)},_onContextMenu:function(t){return this.stopContextMenu&&(t.stopPropagation(),t.preventDefault()),!1},_onDoubleClick:function(t){this._cacheTransformEventData(t),this._handleEvent(t,"dblclick"),this._resetTransformEventData(t)},getPointerId:function(t){var e=t.changedTouches;return e?e[0]&&e[0].identifier:this.enablePointerEvents?t.pointerId:-1},_isMainEvent:function(t){return!0===t.isPrimary||!1!==t.isPrimary&&("touchend"===t.type&&0===t.touches.length||!t.changedTouches||t.changedTouches[0].identifier===this.mainTouchId)},_onTouchStart:function(r){r.preventDefault(),null===this.mainTouchId&&(this.mainTouchId=this.getPointerId(r)),this.__onMouseDown(r),this._resetTransformEventData();var n=this.upperCanvasEl,s=this._getEventPrefix();t(S.document,"touchend",this._onTouchEnd,i),t(S.document,"touchmove",this._onMouseMove,i),e(n,s+"down",this._onMouseDown)},_onMouseDown:function(r){this.__onMouseDown(r),this._resetTransformEventData();var n=this.upperCanvasEl,s=this._getEventPrefix();e(n,s+"move",this._onMouseMove,i),t(S.document,s+"up",this._onMouseUp),t(S.document,s+"move",this._onMouseMove,i)},_onTouchEnd:function(r){if(!(r.touches.length>0)){this.__onMouseUp(r),this._resetTransformEventData(),this.mainTouchId=null;var n=this._getEventPrefix();e(S.document,"touchend",this._onTouchEnd,i),e(S.document,"touchmove",this._onMouseMove,i);var s=this;this._willAddMouseDown&&clearTimeout(this._willAddMouseDown),this._willAddMouseDown=setTimeout((function(){t(s.upperCanvasEl,n+"down",s._onMouseDown),s._willAddMouseDown=0}),400)}},_onMouseUp:function(r){this.__onMouseUp(r),this._resetTransformEventData();var n=this.upperCanvasEl,s=this._getEventPrefix();this._isMainEvent(r)&&(e(S.document,s+"up",this._onMouseUp),e(S.document,s+"move",this._onMouseMove,i),t(n,s+"move",this._onMouseMove,i))},_onMouseMove:function(t){!this.allowTouchScrolling&&t.preventDefault&&t.preventDefault(),this.__onMouseMove(t)},_onResize:function(){this.calcOffset()},_shouldRender:function(t){var e=this._activeObject;return!!(!!e!=!!t||e&&t&&e!==t)||(e&&e.isEditing,!1)},__onMouseUp:function(t){var e,i=this._currentTransform,n=this._groupSelector,s=!1,o=!n||0===n.left&&0===n.top;if(this._cacheTransformEventData(t),e=this._target,this._handleEvent(t,"up:before"),r(t,3))this.fireRightClick&&this._handleEvent(t,"up",3,o);else{if(r(t,2))return this.fireMiddleClick&&this._handleEvent(t,"up",2,o),void this._resetTransformEventData();if(this.isDrawingMode&&this._isCurrentlyDrawing)this._onMouseUpInDrawingMode(t);else if(this._isMainEvent(t)){if(i&&(this._finalizeCurrentTransform(t),s=i.actionPerformed),!o){var a=e===this._activeObject;this._maybeGroupObjects(t),s||(s=this._shouldRender(e)||!a&&e===this._activeObject)}var h,l;if(e){if(h=e._findTargetCorner(this.getPointer(t,!0),S.util.isTouchEvent(t)),e.selectable&&e!==this._activeObject&&"up"===e.activeOn)this.setActiveObject(e,t),s=!0;else{var c=e.controls[h],u=c&&c.getMouseUpHandler(t,e,c);u&&u(t,i,(l=this.getPointer(t)).x,l.y)}e.isMoving=!1}if(i&&(i.target!==e||i.corner!==h)){var d=i.target&&i.target.controls[i.corner],f=d&&d.getMouseUpHandler(t,e,c);l=l||this.getPointer(t),f&&f(t,i,l.x,l.y)}this._setCursorFromEvent(t,e),this._handleEvent(t,"up",1,o),this._groupSelector=null,this._currentTransform=null,e&&(e.__corner=0),s?this.requestRenderAll():o||this.renderTop()}}},_simpleEventHandler:function(t,e){var i=this.findTarget(e),r=this.targets,n={e,target:i,subTargets:r};if(this.fire(t,n),i&&i.fire(t,n),!r)return i;for(var s=0;s1&&(e=new S.ActiveSelection(i.reverse(),{canvas:this}),this.setActiveObject(e,t))},_collectObjects:function(t){for(var e,i=[],r=this._groupSelector.ex,n=this._groupSelector.ey,s=r+this._groupSelector.left,o=n+this._groupSelector.top,a=new S.Point(y(r,s),y(n,o)),h=new S.Point(_(r,s),_(n,o)),l=!this.selectionFullyContained,c=r===s&&n===o,u=this._objects.length;u--&&!((e=this._objects[u])&&e.selectable&&e.visible&&(l&&e.intersectsWithRect(a,h,!0)||e.isContainedWithinRect(a,h,!0)||l&&e.containsPoint(a,null,!0)||l&&e.containsPoint(h,null,!0))&&(i.push(e),c)););return i.length>1&&(i=i.filter((function(e){return!e.onSelect({e:t})}))),i},_maybeGroupObjects:function(t){this.selection&&this._groupSelector&&this._groupSelectedObjects(t),this.setCursor(this.defaultCursor),this._groupSelector=null}}),S.util.object.extend(S.StaticCanvas.prototype,{toDataURL:function(t){t||(t={});var e=t.format||"png",i=t.quality||1,r=(t.multiplier||1)*(t.enableRetinaScaling?this.getRetinaScaling():1),n=this.toCanvasElement(r,t);return S.util.toDataURL(n,e,i)},toCanvasElement:function(t,e){t=t||1;var i=((e=e||{}).width||this.width)*t,r=(e.height||this.height)*t,n=this.getZoom(),s=this.width,o=this.height,a=n*t,h=this.viewportTransform,l=(h[4]-(e.left||0))*t,c=(h[5]-(e.top||0))*t,u=this.interactive,d=[a,0,0,a,l,c],f=this.enableRetinaScaling,g=S.util.createCanvasElement(),m=this.contextTop;return g.width=i,g.height=r,this.contextTop=null,this.enableRetinaScaling=!1,this.interactive=!1,this.viewportTransform=d,this.width=i,this.height=r,this.calcViewportBoundaries(),this.renderCanvas(g.getContext("2d"),this._objects),this.viewportTransform=h,this.width=s,this.height=o,this.calcViewportBoundaries(),this.interactive=u,this.enableRetinaScaling=f,this.contextTop=m,g}}),S.util.object.extend(S.StaticCanvas.prototype,{loadFromJSON:function(t,e,i){if(t){var r="string"==typeof t?JSON.parse(t):S.util.object.clone(t),n=this,s=r.clipPath,o=this.renderOnAddRemove;return this.renderOnAddRemove=!1,delete r.clipPath,this._enlivenObjects(r.objects,(function(t){n.clear(),n._setBgOverlay(r,(function(){s?n._enlivenObjects([s],(function(i){n.clipPath=i[0],n.__setupCanvas.call(n,r,t,o,e)})):n.__setupCanvas.call(n,r,t,o,e)}))}),i),this}},__setupCanvas:function(t,e,i,r){var n=this;e.forEach((function(t,e){n.insertAt(t,e)})),this.renderOnAddRemove=i,delete t.objects,delete t.backgroundImage,delete t.overlayImage,delete t.background,delete t.overlay,this._setOptions(t),this.renderAll(),r&&r()},_setBgOverlay:function(t,e){var i={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(t.backgroundImage||t.overlayImage||t.background||t.overlay){var r=function(){i.backgroundImage&&i.overlayImage&&i.backgroundColor&&i.overlayColor&&e&&e()};this.__setBgOverlay("backgroundImage",t.backgroundImage,i,r),this.__setBgOverlay("overlayImage",t.overlayImage,i,r),this.__setBgOverlay("backgroundColor",t.background,i,r),this.__setBgOverlay("overlayColor",t.overlay,i,r)}else e&&e()},__setBgOverlay:function(t,e,i,r){var n=this;if(!e)return i[t]=!0,void(r&&r());"backgroundImage"===t||"overlayImage"===t?S.util.enlivenObjects([e],(function(e){n[t]=e[0],i[t]=!0,r&&r()})):this["set"+S.util.string.capitalize(t,!0)](e,(function(){i[t]=!0,r&&r()}))},_enlivenObjects:function(t,e,i){t&&0!==t.length?S.util.enlivenObjects(t,(function(t){e&&e(t)}),null,i):e&&e([])},_toDataURL:function(t,e){this.clone((function(i){e(i.toDataURL(t))}))},_toDataURLWithMultiplier:function(t,e,i){this.clone((function(r){i(r.toDataURLWithMultiplier(t,e))}))},clone:function(t,e){var i=JSON.stringify(this.toJSON(e));this.cloneWithoutData((function(e){e.loadFromJSON(i,(function(){t&&t(e)}))}))},cloneWithoutData:function(t){var e=S.util.createCanvasElement();e.width=this.width,e.height=this.height;var i=new S.Canvas(e);this.backgroundImage?(i.setBackgroundImage(this.backgroundImage.src,(function(){i.renderAll(),t&&t(i)})),i.backgroundImageOpacity=this.backgroundImageOpacity,i.backgroundImageStretch=this.backgroundImageStretch):t&&t(i)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.object.clone,n=e.util.toFixed,s=e.util.string.capitalize,o=e.util.degreesToRadians,a=!e.isLikelyNode;e.Object||(e.Object=e.util.createClass(e.CommonMethods,{type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,skewX:0,skewY:0,cornerSize:13,touchCornerSize:24,transparentCorners:!0,hoverCursor:null,moveCursor:null,padding:0,borderColor:"rgb(178,204,255)",borderDashArray:null,cornerColor:"rgb(178,204,255)",cornerStrokeColor:null,cornerStyle:"rect",cornerDashArray:null,centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"nonzero",globalCompositeOperation:"source-over",backgroundColor:"",selectionBackgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeDashOffset:0,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:4,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,minScaleLimit:0,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,perPixelTargetFind:!1,includeDefaultValues:!0,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,excludeFromExport:!1,objectCaching:a,statefullCache:!1,noScaleCache:!0,strokeUniform:!1,dirty:!0,__corner:0,paintFirst:"fill",activeOn:"down",stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit angle opacity fill globalCompositeOperation shadow visible backgroundColor skewX skewY fillRule paintFirst clipPath strokeUniform".split(" "),cacheProperties:"fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath".split(" "),colorProperties:"fill stroke backgroundColor".split(" "),clipPath:void 0,inverted:!1,absolutePositioned:!1,initialize:function(t){t&&this.setOptions(t)},_createCacheCanvas:function(){this._cacheProperties={},this._cacheCanvas=e.util.createCanvasElement(),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas(),this.dirty=!0},_limitCacheSize:function(t){var i=e.perfLimitSizeTotal,r=t.width,n=t.height,s=e.maxCacheSideLimit,o=e.minCacheSideLimit;if(r<=s&&n<=s&&r*n<=i)return rc&&(t.zoomX/=r/c,t.width=c,t.capped=!0),n>u&&(t.zoomY/=n/u,t.height=u,t.capped=!0),t},_getCacheCanvasDimensions:function(){var t=this.getTotalObjectScaling(),e=this._getTransformedDimensions(0,0),i=e.x*t.scaleX/this.scaleX,r=e.y*t.scaleY/this.scaleY;return{width:i+2,height:r+2,zoomX:t.scaleX,zoomY:t.scaleY,x:i,y:r}},_updateCacheCanvas:function(){var t=this.canvas;if(this.noScaleCache&&t&&t._currentTransform){var i=t._currentTransform.target,r=t._currentTransform.action;if(this===i&&r.slice&&"scale"===r.slice(0,5))return!1}var n,s,o=this._cacheCanvas,a=this._limitCacheSize(this._getCacheCanvasDimensions()),h=e.minCacheSideLimit,l=a.width,c=a.height,u=a.zoomX,d=a.zoomY,f=l!==this.cacheWidth||c!==this.cacheHeight,g=this.zoomX!==u||this.zoomY!==d,m=f||g,p=0,v=0,y=!1;if(f){var _=this._cacheCanvas.width,w=this._cacheCanvas.height,b=l>_||c>w;y=b||(l<.9*_||c<.9*w)&&_>h&&w>h,b&&!a.capped&&(l>h||c>h)&&(p=.1*l,v=.1*c)}return this instanceof e.Text&&this.path&&(m=!0,y=!0,p+=this.getHeightOfLine(0)*this.zoomX,v+=this.getHeightOfLine(0)*this.zoomY),!!m&&(y?(o.width=Math.ceil(l+p),o.height=Math.ceil(c+v)):(this._cacheContext.setTransform(1,0,0,1,0,0),this._cacheContext.clearRect(0,0,o.width,o.height)),n=a.x/2,s=a.y/2,this.cacheTranslationX=Math.round(o.width/2-n)+n,this.cacheTranslationY=Math.round(o.height/2-s)+s,this.cacheWidth=l,this.cacheHeight=c,this._cacheContext.translate(this.cacheTranslationX,this.cacheTranslationY),this._cacheContext.scale(u,d),this.zoomX=u,this.zoomY=d,!0)},setOptions:function(t){this._setOptions(t),this._initGradient(t.fill,"fill"),this._initGradient(t.stroke,"stroke"),this._initPattern(t.fill,"fill"),this._initPattern(t.stroke,"stroke")},transform:function(t){var e=this.group&&!this.group._transformDone||this.group&&this.canvas&&t===this.canvas.contextTop,i=this.calcTransformMatrix(!e);t.transform(i[0],i[1],i[2],i[3],i[4],i[5])},toObject:function(t){var i=e.Object.NUM_FRACTION_DIGITS,r={type:this.type,version:e.version,originX:this.originX,originY:this.originY,left:n(this.left,i),top:n(this.top,i),width:n(this.width,i),height:n(this.height,i),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:n(this.strokeWidth,i),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeDashOffset:this.strokeDashOffset,strokeLineJoin:this.strokeLineJoin,strokeUniform:this.strokeUniform,strokeMiterLimit:n(this.strokeMiterLimit,i),scaleX:n(this.scaleX,i),scaleY:n(this.scaleY,i),angle:n(this.angle,i),flipX:this.flipX,flipY:this.flipY,opacity:n(this.opacity,i),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,backgroundColor:this.backgroundColor,fillRule:this.fillRule,paintFirst:this.paintFirst,globalCompositeOperation:this.globalCompositeOperation,skewX:n(this.skewX,i),skewY:n(this.skewY,i)};return this.clipPath&&!this.clipPath.excludeFromExport&&(r.clipPath=this.clipPath.toObject(t),r.clipPath.inverted=this.clipPath.inverted,r.clipPath.absolutePositioned=this.clipPath.absolutePositioned),e.util.populateWithProperties(this,r,t),this.includeDefaultValues||(r=this._removeDefaultValues(r)),r},toDatalessObject:function(t){return this.toObject(t)},_removeDefaultValues:function(t){var i=e.util.getKlass(t.type).prototype;return i.stateProperties.forEach((function(e){"left"!==e&&"top"!==e&&(t[e]===i[e]&&delete t[e],Array.isArray(t[e])&&Array.isArray(i[e])&&0===t[e].length&&0===i[e].length&&delete t[e])})),t},toString:function(){return"#"},getObjectScaling:function(){if(!this.group)return{scaleX:this.scaleX,scaleY:this.scaleY};var t=e.util.qrDecompose(this.calcTransformMatrix());return{scaleX:Math.abs(t.scaleX),scaleY:Math.abs(t.scaleY)}},getTotalObjectScaling:function(){var t=this.getObjectScaling(),e=t.scaleX,i=t.scaleY;if(this.canvas){var r=this.canvas.getZoom(),n=this.canvas.getRetinaScaling();e*=r*n,i*=r*n}return{scaleX:e,scaleY:i}},getObjectOpacity:function(){var t=this.opacity;return this.group&&(t*=this.group.getObjectOpacity()),t},_set:function(t,i){var r="scaleX"===t||"scaleY"===t,n=this[t]!==i,s=!1;return r&&(i=this._constrainScale(i)),"scaleX"===t&&i<0?(this.flipX=!this.flipX,i*=-1):"scaleY"===t&&i<0?(this.flipY=!this.flipY,i*=-1):"shadow"!==t||!i||i instanceof e.Shadow?"dirty"===t&&this.group&&this.group.set("dirty",i):i=new e.Shadow(i),this[t]=i,n&&(s=this.group&&this.group.isOnACache(),this.cacheProperties.indexOf(t)>-1?(this.dirty=!0,s&&this.group.set("dirty",!0)):s&&this.stateProperties.indexOf(t)>-1&&this.group.set("dirty",!0)),this},setOnGroup:function(){},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:e.iMatrix.concat()},isNotVisible:function(){return 0===this.opacity||!this.width&&!this.height&&0===this.strokeWidth||!this.visible},render:function(t){this.isNotVisible()||this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(t.save(),this._setupCompositeOperation(t),this.drawSelectionBackground(t),this.transform(t),this._setOpacity(t),this._setShadow(t,this),this.shouldCache()?(this.renderCache(),this.drawCacheOnCanvas(t)):(this._removeCacheCanvas(),this.dirty=!1,this.drawObject(t),this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})),t.restore())},renderCache:function(t){t=t||{},this._cacheCanvas&&this._cacheContext||this._createCacheCanvas(),this.isCacheDirty()&&(this.statefullCache&&this.saveState({propertySet:"cacheProperties"}),this.drawObject(this._cacheContext,t.forClipping),this.dirty=!1)},_removeCacheCanvas:function(){this._cacheCanvas=null,this._cacheContext=null,this.cacheWidth=0,this.cacheHeight=0},hasStroke:function(){return this.stroke&&"transparent"!==this.stroke&&0!==this.strokeWidth},hasFill:function(){return this.fill&&"transparent"!==this.fill},needsItsOwnCache:function(){return!("stroke"!==this.paintFirst||!this.hasFill()||!this.hasStroke()||"object"!=typeof this.shadow)||!!this.clipPath},shouldCache:function(){return this.ownCaching=this.needsItsOwnCache()||this.objectCaching&&(!this.group||!this.group.isOnACache()),this.ownCaching},willDrawShadow:function(){return!!this.shadow&&(0!==this.shadow.offsetX||0!==this.shadow.offsetY)},drawClipPathOnCache:function(t,i){if(t.save(),i.inverted?t.globalCompositeOperation="destination-out":t.globalCompositeOperation="destination-in",i.absolutePositioned){var r=e.util.invertTransform(this.calcTransformMatrix());t.transform(r[0],r[1],r[2],r[3],r[4],r[5])}i.transform(t),t.scale(1/i.zoomX,1/i.zoomY),t.drawImage(i._cacheCanvas,-i.cacheTranslationX,-i.cacheTranslationY),t.restore()},drawObject:function(t,e){var i=this.fill,r=this.stroke;e?(this.fill="black",this.stroke="",this._setClippingProperties(t)):this._renderBackground(t),this._render(t),this._drawClipPath(t,this.clipPath),this.fill=i,this.stroke=r},_drawClipPath:function(t,e){e&&(e.canvas=this.canvas,e.shouldCache(),e._transformDone=!0,e.renderCache({forClipping:!0}),this.drawClipPathOnCache(t,e))},drawCacheOnCanvas:function(t){t.scale(1/this.zoomX,1/this.zoomY),t.drawImage(this._cacheCanvas,-this.cacheTranslationX,-this.cacheTranslationY)},isCacheDirty:function(t){if(this.isNotVisible())return!1;if(this._cacheCanvas&&this._cacheContext&&!t&&this._updateCacheCanvas())return!0;if(this.dirty||this.clipPath&&this.clipPath.absolutePositioned||this.statefullCache&&this.hasStateChanged("cacheProperties")){if(this._cacheCanvas&&this._cacheContext&&!t){var e=this.cacheWidth/this.zoomX,i=this.cacheHeight/this.zoomY;this._cacheContext.clearRect(-e/2,-i/2,e,i)}return!0}return!1},_renderBackground:function(t){if(this.backgroundColor){var e=this._getNonTransformedDimensions();t.fillStyle=this.backgroundColor,t.fillRect(-e.x/2,-e.y/2,e.x,e.y),this._removeShadow(t)}},_setOpacity:function(t){this.group&&!this.group._transformDone?t.globalAlpha=this.getObjectOpacity():t.globalAlpha*=this.opacity},_setStrokeStyles:function(t,e){var i=e.stroke;i&&(t.lineWidth=e.strokeWidth,t.lineCap=e.strokeLineCap,t.lineDashOffset=e.strokeDashOffset,t.lineJoin=e.strokeLineJoin,t.miterLimit=e.strokeMiterLimit,i.toLive?"percentage"===i.gradientUnits||i.gradientTransform||i.patternTransform?this._applyPatternForTransformedGradient(t,i):(t.strokeStyle=i.toLive(t,this),this._applyPatternGradientTransform(t,i)):t.strokeStyle=e.stroke)},_setFillStyles:function(t,e){var i=e.fill;i&&(i.toLive?(t.fillStyle=i.toLive(t,this),this._applyPatternGradientTransform(t,e.fill)):t.fillStyle=i)},_setClippingProperties:function(t){t.globalAlpha=1,t.strokeStyle="transparent",t.fillStyle="#000000"},_setLineDash:function(t,e){e&&0!==e.length&&(1&e.length&&e.push.apply(e,e),t.setLineDash(e))},_renderControls:function(t,i){var r,n,s,a=this.getViewportTransform(),h=this.calcTransformMatrix();n=void 0!==(i=i||{}).hasBorders?i.hasBorders:this.hasBorders,s=void 0!==i.hasControls?i.hasControls:this.hasControls,h=e.util.multiplyTransformMatrices(a,h),r=e.util.qrDecompose(h),t.save(),t.translate(r.translateX,r.translateY),t.lineWidth=1*this.borderScaleFactor,this.group||(t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.flipX&&(r.angle-=180),t.rotate(o(this.group?r.angle:this.angle)),i.forActiveSelection||this.group?n&&this.drawBordersInGroup(t,r,i):n&&this.drawBorders(t,i),s&&this.drawControls(t,i),t.restore()},_setShadow:function(t){if(this.shadow){var i,r=this.shadow,n=this.canvas,s=n&&n.viewportTransform[0]||1,o=n&&n.viewportTransform[3]||1;i=r.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),n&&n._isRetinaScaling()&&(s*=e.devicePixelRatio,o*=e.devicePixelRatio),t.shadowColor=r.color,t.shadowBlur=r.blur*e.browserShadowBlurConstant*(s+o)*(i.scaleX+i.scaleY)/4,t.shadowOffsetX=r.offsetX*s*i.scaleX,t.shadowOffsetY=r.offsetY*o*i.scaleY}},_removeShadow:function(t){this.shadow&&(t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0)},_applyPatternGradientTransform:function(t,e){if(!e||!e.toLive)return{offsetX:0,offsetY:0};var i=e.gradientTransform||e.patternTransform,r=-this.width/2+e.offsetX||0,n=-this.height/2+e.offsetY||0;return"percentage"===e.gradientUnits?t.transform(this.width,0,0,this.height,r,n):t.transform(1,0,0,1,r,n),i&&t.transform(i[0],i[1],i[2],i[3],i[4],i[5]),{offsetX:r,offsetY:n}},_renderPaintInOrder:function(t){"stroke"===this.paintFirst?(this._renderStroke(t),this._renderFill(t)):(this._renderFill(t),this._renderStroke(t))},_render:function(){},_renderFill:function(t){this.fill&&(t.save(),this._setFillStyles(t,this),"evenodd"===this.fillRule?t.fill("evenodd"):t.fill(),t.restore())},_renderStroke:function(t){if(this.stroke&&0!==this.strokeWidth){if(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(t),t.save(),this.strokeUniform&&this.group){var e=this.getObjectScaling();t.scale(1/e.scaleX,1/e.scaleY)}else this.strokeUniform&&t.scale(1/this.scaleX,1/this.scaleY);this._setLineDash(t,this.strokeDashArray),this._setStrokeStyles(t,this),t.stroke(),t.restore()}},_applyPatternForTransformedGradient:function(t,i){var r,n=this._limitCacheSize(this._getCacheCanvasDimensions()),s=e.util.createCanvasElement(),o=this.canvas.getRetinaScaling(),a=n.x/this.scaleX/o,h=n.y/this.scaleY/o;s.width=a,s.height=h,(r=s.getContext("2d")).beginPath(),r.moveTo(0,0),r.lineTo(a,0),r.lineTo(a,h),r.lineTo(0,h),r.closePath(),r.translate(a/2,h/2),r.scale(n.zoomX/this.scaleX/o,n.zoomY/this.scaleY/o),this._applyPatternGradientTransform(r,i),r.fillStyle=i.toLive(t),r.fill(),t.translate(-this.width/2-this.strokeWidth/2,-this.height/2-this.strokeWidth/2),t.scale(o*this.scaleX/n.zoomX,o*this.scaleY/n.zoomY),t.strokeStyle=r.createPattern(s,"no-repeat")},_findCenterFromElement:function(){return{x:this.left+this.width/2,y:this.top+this.height/2}},_assignTransformMatrixProps:function(){if(this.transformMatrix){var t=e.util.qrDecompose(this.transformMatrix);this.flipX=!1,this.flipY=!1,this.set("scaleX",t.scaleX),this.set("scaleY",t.scaleY),this.angle=t.angle,this.skewX=t.skewX,this.skewY=0}},_removeTransformMatrix:function(t){var i=this._findCenterFromElement();this.transformMatrix&&(this._assignTransformMatrixProps(),i=e.util.transformPoint(i,this.transformMatrix)),this.transformMatrix=null,t&&(this.scaleX*=t.scaleX,this.scaleY*=t.scaleY,this.cropX=t.cropX,this.cropY=t.cropY,i.x+=t.offsetLeft,i.y+=t.offsetTop,this.width=t.width,this.height=t.height),this.setPositionByOrigin(i,"center","center")},clone:function(t,i){var r=this.toObject(i);this.constructor.fromObject?this.constructor.fromObject(r,t):e.Object._fromObject("Object",r,t)},cloneAsImage:function(t,i){var r=this.toCanvasElement(i);return t&&t(new e.Image(r)),this},toCanvasElement:function(t){t||(t={});var i=e.util,r=i.saveObjectTransform(this),n=this.group,s=this.shadow,o=Math.abs,a=(t.multiplier||1)*(t.enableRetinaScaling?e.devicePixelRatio:1);delete this.group,t.withoutTransform&&i.resetObjectTransform(this),t.withoutShadow&&(this.shadow=null);var h,l,c,u,d=e.util.createCanvasElement(),f=this.getBoundingRect(!0,!0),g=this.shadow,m={x:0,y:0};g&&(l=g.blur,h=g.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),m.x=2*Math.round(o(g.offsetX)+l)*o(h.scaleX),m.y=2*Math.round(o(g.offsetY)+l)*o(h.scaleY)),c=f.width+m.x,u=f.height+m.y,d.width=Math.ceil(c),d.height=Math.ceil(u);var p=new e.StaticCanvas(d,{enableRetinaScaling:!1,renderOnAddRemove:!1,skipOffscreen:!1});"jpeg"===t.format&&(p.backgroundColor="#fff"),this.setPositionByOrigin(new e.Point(p.width/2,p.height/2),"center","center");var v=this.canvas;p.add(this);var y=p.toCanvasElement(a||1,t);return this.shadow=s,this.set("canvas",v),n&&(this.group=n),this.set(r).setCoords(),p._objects=[],p.dispose(),p=null,y},toDataURL:function(t){return t||(t={}),e.util.toDataURL(this.toCanvasElement(t),t.format||"png",t.quality||1)},isType:function(t){return arguments.length>1?Array.from(arguments).includes(this.type):this.type===t},complexity:function(){return 1},toJSON:function(t){return this.toObject(t)},rotate:function(t){var e=("center"!==this.originX||"center"!==this.originY)&&this.centeredRotation;return e&&this._setOriginToCenter(),this.set("angle",t),e&&this._resetOrigin(),this},centerH:function(){return this.canvas&&this.canvas.centerObjectH(this),this},viewportCenterH:function(){return this.canvas&&this.canvas.viewportCenterObjectH(this),this},centerV:function(){return this.canvas&&this.canvas.centerObjectV(this),this},viewportCenterV:function(){return this.canvas&&this.canvas.viewportCenterObjectV(this),this},center:function(){return this.canvas&&this.canvas.centerObject(this),this},viewportCenter:function(){return this.canvas&&this.canvas.viewportCenterObject(this),this},getLocalPointer:function(t,i){i=i||this.canvas.getPointer(t);var r=new e.Point(i.x,i.y),n=this._getLeftTopCoords();return this.angle&&(r=e.util.rotatePoint(r,n,o(-this.angle))),{x:r.x-n.x,y:r.y-n.y}},_setupCompositeOperation:function(t){this.globalCompositeOperation&&(t.globalCompositeOperation=this.globalCompositeOperation)},dispose:function(){e.runningAnimations&&e.runningAnimations.cancelByTarget(this)}}),e.util.createAccessors&&e.util.createAccessors(e.Object),i(e.Object.prototype,e.Observable),e.Object.NUM_FRACTION_DIGITS=2,e.Object.ENLIVEN_PROPS=["clipPath"],e.Object._fromObject=function(t,i,n,s){var o=e[t];i=r(i,!0),e.util.enlivenPatterns([i.fill,i.stroke],(function(t){void 0!==t[0]&&(i.fill=t[0]),void 0!==t[1]&&(i.stroke=t[1]),e.util.enlivenObjectEnlivables(i,i,(function(){var t=s?new o(i[s],i):new o(i);n&&n(t)}))}))},e.Object.__uid=0)}(e),w=S.util.degreesToRadians,b={left:-.5,center:0,right:.5},x={top:-.5,center:0,bottom:.5},S.util.object.extend(S.Object.prototype,{translateToGivenOrigin:function(t,e,i,r,n){var s,o,a,h=t.x,l=t.y;return"string"==typeof e?e=b[e]:e-=.5,"string"==typeof r?r=b[r]:r-=.5,"string"==typeof i?i=x[i]:i-=.5,"string"==typeof n?n=x[n]:n-=.5,o=n-i,((s=r-e)||o)&&(a=this._getTransformedDimensions(),h=t.x+s*a.x,l=t.y+o*a.y),new S.Point(h,l)},translateToCenterPoint:function(t,e,i){var r=this.translateToGivenOrigin(t,e,i,"center","center");return this.angle?S.util.rotatePoint(r,t,w(this.angle)):r},translateToOriginPoint:function(t,e,i){var r=this.translateToGivenOrigin(t,"center","center",e,i);return this.angle?S.util.rotatePoint(r,t,w(this.angle)):r},getCenterPoint:function(){var t=new S.Point(this.left,this.top);return this.translateToCenterPoint(t,this.originX,this.originY)},getPointByOrigin:function(t,e){var i=this.getCenterPoint();return this.translateToOriginPoint(i,t,e)},toLocalPoint:function(t,e,i){var r,n,s=this.getCenterPoint();return r=void 0!==e&&void 0!==i?this.translateToGivenOrigin(s,"center","center",e,i):new S.Point(this.left,this.top),n=new S.Point(t.x,t.y),this.angle&&(n=S.util.rotatePoint(n,s,-w(this.angle))),n.subtractEquals(r)},setPositionByOrigin:function(t,e,i){var r=this.translateToCenterPoint(t,e,i),n=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",n.x),this.set("top",n.y)},adjustPosition:function(t){var e,i,r=w(this.angle),n=this.getScaledWidth(),s=S.util.cos(r)*n,o=S.util.sin(r)*n;e="string"==typeof this.originX?b[this.originX]:this.originX-.5,i="string"==typeof t?b[t]:t-.5,this.left+=s*(i-e),this.top+=o*(i-e),this.setCoords(),this.originX=t},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var t=this.getCenterPoint();this.originX="center",this.originY="center",this.left=t.x,this.top=t.y},_resetOrigin:function(){var t=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX,this.originY=this._originalOriginY,this.left=t.x,this.top=t.y,this._originalOriginX=null,this._originalOriginY=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","top")}}),function(){var t=S.util,e=t.degreesToRadians,i=t.multiplyTransformMatrices,r=t.transformPoint;t.object.extend(S.Object.prototype,{oCoords:null,aCoords:null,lineCoords:null,ownMatrixCache:null,matrixCache:null,controls:{},_getCoords:function(t,e){return e?t?this.calcACoords():this.calcLineCoords():(this.aCoords&&this.lineCoords||this.setCoords(!0),t?this.aCoords:this.lineCoords)},getCoords:function(t,e){return i=this._getCoords(t,e),[new S.Point(i.tl.x,i.tl.y),new S.Point(i.tr.x,i.tr.y),new S.Point(i.br.x,i.br.y),new S.Point(i.bl.x,i.bl.y)];var i},intersectsWithRect:function(t,e,i,r){var n=this.getCoords(i,r);return"Intersection"===S.Intersection.intersectPolygonRectangle(n,t,e).status},intersectsWithObject:function(t,e,i){return"Intersection"===S.Intersection.intersectPolygonPolygon(this.getCoords(e,i),t.getCoords(e,i)).status||t.isContainedWithinObject(this,e,i)||this.isContainedWithinObject(t,e,i)},isContainedWithinObject:function(t,e,i){for(var r=this.getCoords(e,i),n=e?t.aCoords:t.lineCoords,s=0,o=t._getImageLines(n);s<4;s++)if(!t.containsPoint(r[s],o))return!1;return!0},isContainedWithinRect:function(t,e,i,r){var n=this.getBoundingRect(i,r);return n.left>=t.x&&n.left+n.width<=e.x&&n.top>=t.y&&n.top+n.height<=e.y},containsPoint:function(t,e,i,r){var n=this._getCoords(i,r),s=(e=e||this._getImageLines(n),this._findCrossPoints(t,e));return 0!==s&&s%2==1},isOnScreen:function(t){if(!this.canvas)return!1;var e=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.getCoords(!0,t).some((function(t){return t.x<=i.x&&t.x>=e.x&&t.y<=i.y&&t.y>=e.y}))||!!this.intersectsWithRect(e,i,!0,t)||this._containsCenterOfCanvas(e,i,t)},_containsCenterOfCanvas:function(t,e,i){var r={x:(t.x+e.x)/2,y:(t.y+e.y)/2};return!!this.containsPoint(r,null,!0,i)},isPartiallyOnScreen:function(t){if(!this.canvas)return!1;var e=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.intersectsWithRect(e,i,!0,t)||this.getCoords(!0,t).every((function(t){return(t.x>=i.x||t.x<=e.x)&&(t.y>=i.y||t.y<=e.y)}))&&this._containsCenterOfCanvas(e,i,t)},_getImageLines:function(t){return{topline:{o:t.tl,d:t.tr},rightline:{o:t.tr,d:t.br},bottomline:{o:t.br,d:t.bl},leftline:{o:t.bl,d:t.tl}}},_findCrossPoints:function(t,e){var i,r,n,s=0;for(var o in e)if(!((n=e[o]).o.y=t.y&&n.d.y>=t.y||(n.o.x===n.d.x&&n.o.x>=t.x?r=n.o.x:(i=(n.d.y-n.o.y)/(n.d.x-n.o.x),r=-(t.y-0*t.x-(n.o.y-i*n.o.x))/(0-i)),r>=t.x&&(s+=1),2!==s)))break;return s},getBoundingRect:function(e,i){var r=this.getCoords(e,i);return t.makeBoundingBoxFromPoints(r)},getScaledWidth:function(){return this._getTransformedDimensions().x},getScaledHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(t){return Math.abs(t)\n')}},toSVG:function(t){return this._createBaseSVGMarkup(this._toSVG(t),{reviver:t})},toClipPathSVG:function(t){return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(t),{reviver:t})},_createBaseClipPathSVGMarkup:function(t,e){var i=(e=e||{}).reviver,r=e.additionalTransform||"",n=[this.getSvgTransform(!0,r),this.getSvgCommons()].join(""),s=t.indexOf("COMMON_PARTS");return t[s]=n,i?i(t.join("")):t.join("")},_createBaseSVGMarkup:function(t,e){var i,r,n=(e=e||{}).noStyle,s=e.reviver,o=n?"":'style="'+this.getSvgStyles()+'" ',a=e.withShadow?'style="'+this.getSvgFilter()+'" ':"",h=this.clipPath,l=this.strokeUniform?'vector-effect="non-scaling-stroke" ':"",c=h&&h.absolutePositioned,u=this.stroke,d=this.fill,f=this.shadow,g=[],m=t.indexOf("COMMON_PARTS"),p=e.additionalTransform;return h&&(h.clipPathId="CLIPPATH_"+S.Object.__uid++,r='\n'+h.toClipPathSVG(s)+"\n"),c&&g.push("\n"),g.push("\n"),i=[o,l,n?"":this.addPaintOrder()," ",p?'transform="'+p+'" ':""].join(""),t[m]=i,d&&d.toLive&&g.push(d.toSVG(this)),u&&u.toLive&&g.push(u.toSVG(this)),f&&g.push(f.toSVG(this)),h&&g.push(r),g.push(t.join("")),g.push("\n"),c&&g.push("\n"),s?s(g.join("")):g.join("")},addPaintOrder:function(){return"fill"!==this.paintFirst?' paint-order="'+this.paintFirst+'" ':""}})}(),function(){var t=S.util.object.extend,e="stateProperties";function i(e,i,r){var n={};r.forEach((function(t){n[t]=e[t]})),t(e[i],n,!0)}function r(t,e,i){if(t===e)return!0;if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(var n=0,s=t.length;n=0;h--)if(n=a[h],this.isControlVisible(n)&&(r=this._getImageLines(e?this.oCoords[n].touchCorner:this.oCoords[n].corner),0!==(i=this._findCrossPoints({x:s,y:o},r))&&i%2==1))return this.__corner=n,n;return!1},forEachControl:function(t){for(var e in this.controls)t(this.controls[e],e,this)},_setCornerCoords:function(){var t=this.oCoords;for(var e in t){var i=this.controls[e];t[e].corner=i.calcCornerCoords(this.angle,this.cornerSize,t[e].x,t[e].y,!1),t[e].touchCorner=i.calcCornerCoords(this.angle,this.touchCornerSize,t[e].x,t[e].y,!0)}},drawSelectionBackground:function(e){if(!this.selectionBackgroundColor||this.canvas&&!this.canvas.interactive||this.canvas&&this.canvas._activeObject!==this)return this;e.save();var i=this.getCenterPoint(),r=this._calculateCurrentDimensions(),n=this.canvas.viewportTransform;return e.translate(i.x,i.y),e.scale(1/n[0],1/n[3]),e.rotate(t(this.angle)),e.fillStyle=this.selectionBackgroundColor,e.fillRect(-r.x/2,-r.y/2,r.x,r.y),e.restore(),this},drawBorders:function(t,e){e=e||{};var i=this._calculateCurrentDimensions(),r=this.borderScaleFactor,n=i.x+r,s=i.y+r,o=void 0!==e.hasControls?e.hasControls:this.hasControls,a=!1;return t.save(),t.strokeStyle=e.borderColor||this.borderColor,this._setLineDash(t,e.borderDashArray||this.borderDashArray),t.strokeRect(-n/2,-s/2,n,s),o&&(t.beginPath(),this.forEachControl((function(e,i,r){e.withConnection&&e.getVisibility(r,i)&&(a=!0,t.moveTo(e.x*n,e.y*s),t.lineTo(e.x*n+e.offsetX,e.y*s+e.offsetY))})),a&&t.stroke()),t.restore(),this},drawBordersInGroup:function(t,e,i){i=i||{};var r=S.util.sizeAfterTransform(this.width,this.height,e),n=this.strokeWidth,s=this.strokeUniform,o=this.borderScaleFactor,a=r.x+n*(s?this.canvas.getZoom():e.scaleX)+o,h=r.y+n*(s?this.canvas.getZoom():e.scaleY)+o;return t.save(),this._setLineDash(t,i.borderDashArray||this.borderDashArray),t.strokeStyle=i.borderColor||this.borderColor,t.strokeRect(-a/2,-h/2,a,h),t.restore(),this},drawControls:function(t,e){e=e||{},t.save();var i,r,n=this.canvas.getRetinaScaling();return t.setTransform(n,0,0,n,0,0),t.strokeStyle=t.fillStyle=e.cornerColor||this.cornerColor,this.transparentCorners||(t.strokeStyle=e.cornerStrokeColor||this.cornerStrokeColor),this._setLineDash(t,e.cornerDashArray||this.cornerDashArray),this.setCoords(),this.group&&(i=this.group.calcTransformMatrix()),this.forEachControl((function(n,s,o){r=o.oCoords[s],n.getVisibility(o,s)&&(i&&(r=S.util.transformPoint(r,i)),n.render(t,r.x,r.y,e,o))})),t.restore(),this},isControlVisible:function(t){return this.controls[t]&&this.controls[t].getVisibility(this,t)},setControlVisible:function(t,e){return this._controlsVisibility||(this._controlsVisibility={}),this._controlsVisibility[t]=e,this},setControlsVisibility:function(t){for(var e in t||(t={}),t)this.setControlVisible(e,t[e]);return this},onDeselect:function(){},onSelect:function(){}})}(),S.util.object.extend(S.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(t,e){var i=function(){},r=(e=e||{}).onComplete||i,n=e.onChange||i,s=this;return S.util.animate({target:this,startValue:t.left,endValue:this.getCenterPoint().x,duration:this.FX_DURATION,onChange:function(e){t.set("left",e),s.requestRenderAll(),n()},onComplete:function(){t.setCoords(),r()}})},fxCenterObjectV:function(t,e){var i=function(){},r=(e=e||{}).onComplete||i,n=e.onChange||i,s=this;return S.util.animate({target:this,startValue:t.top,endValue:this.getCenterPoint().y,duration:this.FX_DURATION,onChange:function(e){t.set("top",e),s.requestRenderAll(),n()},onComplete:function(){t.setCoords(),r()}})},fxRemove:function(t,e){var i=function(){},r=(e=e||{}).onComplete||i,n=e.onChange||i,s=this;return S.util.animate({target:this,startValue:t.opacity,endValue:0,duration:this.FX_DURATION,onChange:function(e){t.set("opacity",e),s.requestRenderAll(),n()},onComplete:function(){s.remove(t),r()}})}}),S.util.object.extend(S.Object.prototype,{animate:function(){if(arguments[0]&&"object"==typeof arguments[0]){var t,e,i=[],r=[];for(t in arguments[0])i.push(t);for(var n=0,s=i.length;n-1||n&&s.colorProperties.indexOf(n[1])>-1,a=n?this.get(n[0])[n[1]]:this.get(t);"from"in i||(i.from=a),o||(e=~e.indexOf("=")?a+parseFloat(e.replace("=","")):parseFloat(e));var h={target:this,startValue:i.from,endValue:e,byValue:i.by,easing:i.easing,duration:i.duration,abort:i.abort&&function(t,e,r){return i.abort.call(s,t,e,r)},onChange:function(e,o,a){n?s[n[0]][n[1]]=e:s.set(t,e),r||i.onChange&&i.onChange(e,o,a)},onComplete:function(t,e,n){r||(s.setCoords(),i.onComplete&&i.onComplete(t,e,n))}};return o?S.util.animateColor(h.startValue,h.endValue,h.duration,h):S.util.animate(h)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.object.clone,n={x1:1,x2:1,y1:1,y2:1};function s(t,e){var i=t.origin,r=t.axis1,n=t.axis2,s=t.dimension,o=e.nearest,a=e.center,h=e.farthest;return function(){switch(this.get(i)){case o:return Math.min(this.get(r),this.get(n));case a:return Math.min(this.get(r),this.get(n))+.5*this.get(s);case h:return Math.max(this.get(r),this.get(n))}}}e.Line?e.warn("fabric.Line is already defined"):(e.Line=e.util.createClass(e.Object,{type:"line",x1:0,y1:0,x2:0,y2:0,cacheProperties:e.Object.prototype.cacheProperties.concat("x1","x2","y1","y2"),initialize:function(t,e){t||(t=[0,0,0,0]),this.callSuper("initialize",e),this.set("x1",t[0]),this.set("y1",t[1]),this.set("x2",t[2]),this.set("y2",t[3]),this._setWidthHeight(e)},_setWidthHeight:function(t){t||(t={}),this.width=Math.abs(this.x2-this.x1),this.height=Math.abs(this.y2-this.y1),this.left="left"in t?t.left:this._getLeftToOriginX(),this.top="top"in t?t.top:this._getTopToOriginY()},_set:function(t,e){return this.callSuper("_set",t,e),void 0!==n[t]&&this._setWidthHeight(),this},_getLeftToOriginX:s({origin:"originX",axis1:"x1",axis2:"x2",dimension:"width"},{nearest:"left",center:"center",farthest:"right"}),_getTopToOriginY:s({origin:"originY",axis1:"y1",axis2:"y2",dimension:"height"},{nearest:"top",center:"center",farthest:"bottom"}),_render:function(t){t.beginPath();var e=this.calcLinePoints();t.moveTo(e.x1,e.y1),t.lineTo(e.x2,e.y2),t.lineWidth=this.strokeWidth;var i=t.strokeStyle;t.strokeStyle=this.stroke||t.fillStyle,this.stroke&&this._renderStroke(t),t.strokeStyle=i},_findCenterFromElement:function(){return{x:(this.x1+this.x2)/2,y:(this.y1+this.y2)/2}},toObject:function(t){return i(this.callSuper("toObject",t),this.calcLinePoints())},_getNonTransformedDimensions:function(){var t=this.callSuper("_getNonTransformedDimensions");return"butt"===this.strokeLineCap&&(0===this.width&&(t.y-=this.strokeWidth),0===this.height&&(t.x-=this.strokeWidth)),t},calcLinePoints:function(){var t=this.x1<=this.x2?-1:1,e=this.y1<=this.y2?-1:1,i=t*this.width*.5,r=e*this.height*.5;return{x1:i,x2:t*this.width*-.5,y1:r,y2:e*this.height*-.5}},_toSVG:function(){var t=this.calcLinePoints();return["\n']}}),e.Line.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),e.Line.fromElement=function(t,r,n){n=n||{};var s=e.parseAttributes(t,e.Line.ATTRIBUTE_NAMES),o=[s.x1||0,s.y1||0,s.x2||0,s.y2||0];r(new e.Line(o,i(s,n)))},e.Line.fromObject=function(t,i){var n=r(t,!0);n.points=[t.x1,t.y1,t.x2,t.y2],e.Object._fromObject("Line",n,(function(t){delete t.points,i&&i(t)}),"points")})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.degreesToRadians;e.Circle?e.warn("fabric.Circle is already defined."):(e.Circle=e.util.createClass(e.Object,{type:"circle",radius:0,startAngle:0,endAngle:360,cacheProperties:e.Object.prototype.cacheProperties.concat("radius","startAngle","endAngle"),_set:function(t,e){return this.callSuper("_set",t,e),"radius"===t&&this.setRadius(e),this},toObject:function(t){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(t))},_toSVG:function(){var t,r=(this.endAngle-this.startAngle)%360;if(0===r)t=["\n'];else{var n=i(this.startAngle),s=i(this.endAngle),o=this.radius;t=['180?"1":"0")+" 1"," "+e.util.cos(s)*o+" "+e.util.sin(s)*o,'" ',"COMMON_PARTS"," />\n"]}return t},_render:function(t){t.beginPath(),t.arc(0,0,this.radius,i(this.startAngle),i(this.endAngle),!1),this._renderPaintInOrder(t)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(t){return this.radius=t,this.set("width",2*t).set("height",2*t)}}),e.Circle.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),e.Circle.fromElement=function(t,i){var r,n=e.parseAttributes(t,e.Circle.ATTRIBUTE_NAMES);if(!("radius"in(r=n)&&r.radius>=0))throw new Error("value of `r` attribute is required and can not be negative");n.left=(n.left||0)-n.radius,n.top=(n.top||0)-n.radius,i(new e.Circle(n))},e.Circle.fromObject=function(t,i){e.Object._fromObject("Circle",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={});e.Triangle?e.warn("fabric.Triangle is already defined"):(e.Triangle=e.util.createClass(e.Object,{type:"triangle",width:100,height:100,_render:function(t){var e=this.width/2,i=this.height/2;t.beginPath(),t.moveTo(-e,i),t.lineTo(0,-i),t.lineTo(e,i),t.closePath(),this._renderPaintInOrder(t)},_toSVG:function(){var t=this.width/2,e=this.height/2;return["']}}),e.Triangle.fromObject=function(t,i){return e.Object._fromObject("Triangle",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=2*Math.PI;e.Ellipse?e.warn("fabric.Ellipse is already defined."):(e.Ellipse=e.util.createClass(e.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:e.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this.set("rx",t&&t.rx||0),this.set("ry",t&&t.ry||0)},_set:function(t,e){switch(this.callSuper("_set",t,e),t){case"rx":this.rx=e,this.set("width",2*e);break;case"ry":this.ry=e,this.set("height",2*e)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']},_render:function(t){t.beginPath(),t.save(),t.transform(1,0,0,this.ry/this.rx,0,0),t.arc(0,0,this.rx,0,i,!1),t.restore(),this._renderPaintInOrder(t)}}),e.Ellipse.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),e.Ellipse.fromElement=function(t,i){var r=e.parseAttributes(t,e.Ellipse.ATTRIBUTE_NAMES);r.left=(r.left||0)-r.rx,r.top=(r.top||0)-r.ry,i(new e.Ellipse(r))},e.Ellipse.fromObject=function(t,i){e.Object._fromObject("Ellipse",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend;e.Rect?e.warn("fabric.Rect is already defined"):(e.Rect=e.util.createClass(e.Object,{stateProperties:e.Object.prototype.stateProperties.concat("rx","ry"),type:"rect",rx:0,ry:0,cacheProperties:e.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(t){var e=this.rx?Math.min(this.rx,this.width/2):0,i=this.ry?Math.min(this.ry,this.height/2):0,r=this.width,n=this.height,s=-this.width/2,o=-this.height/2,a=0!==e||0!==i,h=.4477152502;t.beginPath(),t.moveTo(s+e,o),t.lineTo(s+r-e,o),a&&t.bezierCurveTo(s+r-h*e,o,s+r,o+h*i,s+r,o+i),t.lineTo(s+r,o+n-i),a&&t.bezierCurveTo(s+r,o+n-h*i,s+r-h*e,o+n,s+r-e,o+n),t.lineTo(s+e,o+n),a&&t.bezierCurveTo(s+h*e,o+n,s,o+n-h*i,s,o+n-i),t.lineTo(s,o+i),a&&t.bezierCurveTo(s,o+h*i,s+h*e,o,s+e,o),t.closePath(),this._renderPaintInOrder(t)},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']}}),e.Rect.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),e.Rect.fromElement=function(t,r,n){if(!t)return r(null);n=n||{};var s=e.parseAttributes(t,e.Rect.ATTRIBUTE_NAMES);s.left=s.left||0,s.top=s.top||0,s.height=s.height||0,s.width=s.width||0;var o=new e.Rect(i(n?e.util.object.clone(n):{},s));o.visible=o.visible&&o.width>0&&o.height>0,r(o)},e.Rect.fromObject=function(t,i){return e.Object._fromObject("Rect",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.array.min,n=e.util.array.max,s=e.util.toFixed,o=e.util.projectStrokeOnPoints;e.Polyline?e.warn("fabric.Polyline is already defined"):(e.Polyline=e.util.createClass(e.Object,{type:"polyline",points:null,exactBoundingBox:!1,cacheProperties:e.Object.prototype.cacheProperties.concat("points"),initialize:function(t,e){e=e||{},this.points=t||[],this.callSuper("initialize",e),this._setPositionDimensions(e)},_projectStrokeOnPoints:function(){return o(this.points,this,!0)},_setPositionDimensions:function(t){var e,i=this._calcDimensions(t),r=this.exactBoundingBox?this.strokeWidth:0;this.width=i.width-r,this.height=i.height-r,t.fromSVG||(e=this.translateToGivenOrigin({x:i.left-this.strokeWidth/2+r/2,y:i.top-this.strokeWidth/2+r/2},"left","top",this.originX,this.originY)),void 0===t.left&&(this.left=t.fromSVG?i.left:e.x),void 0===t.top&&(this.top=t.fromSVG?i.top:e.y),this.pathOffset={x:i.left+this.width/2+r/2,y:i.top+this.height/2+r/2}},_calcDimensions:function(){var t=this.exactBoundingBox?this._projectStrokeOnPoints():this.points,e=r(t,"x")||0,i=r(t,"y")||0;return{left:e,top:i,width:(n(t,"x")||0)-e,height:(n(t,"y")||0)-i}},toObject:function(t){return i(this.callSuper("toObject",t),{points:this.points.concat()})},_toSVG:function(){for(var t=[],i=this.pathOffset.x,r=this.pathOffset.y,n=e.Object.NUM_FRACTION_DIGITS,o=0,a=this.points.length;o\n']},commonRender:function(t){var e,i=this.points.length,r=this.pathOffset.x,n=this.pathOffset.y;if(!i||isNaN(this.points[i-1].y))return!1;t.beginPath(),t.moveTo(this.points[0].x-r,this.points[0].y-n);for(var s=0;s"},toObject:function(t){return n(this.callSuper("toObject",t),{path:this.path.map((function(t){return t.slice()}))})},toDatalessObject:function(t){var e=this.toObject(["sourcePath"].concat(t));return e.sourcePath&&delete e.path,e},_toSVG:function(){return["\n"]},_getOffsetTransform:function(){var t=e.Object.NUM_FRACTION_DIGITS;return" translate("+o(-this.pathOffset.x,t)+", "+o(-this.pathOffset.y,t)+")"},toClipPathSVG:function(t){var e=this._getOffsetTransform();return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},toSVG:function(t){var e=this._getOffsetTransform();return this._createBaseSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},complexity:function(){return this.path.length},_calcDimensions:function(){for(var t,n,s=[],o=[],a=0,h=0,l=0,c=0,u=0,d=this.path.length;u"},addWithUpdate:function(t){var i=!!this.group;return this._restoreObjectsState(),e.util.resetObjectTransform(this),t&&(i&&e.util.removeTransformFromObject(t,this.group.calcTransformMatrix()),this._objects.push(t),t.group=this,t._set("canvas",this.canvas)),this._calcBounds(),this._updateObjectsCoords(),this.dirty=!0,i?this.group.addWithUpdate():this.setCoords(),this},removeWithUpdate:function(t){return this._restoreObjectsState(),e.util.resetObjectTransform(this),this.remove(t),this._calcBounds(),this._updateObjectsCoords(),this.setCoords(),this.dirty=!0,this},_onObjectAdded:function(t){this.dirty=!0,t.group=this,t._set("canvas",this.canvas)},_onObjectRemoved:function(t){this.dirty=!0,delete t.group},_set:function(t,i){var r=this._objects.length;if(this.useSetOnGroup)for(;r--;)this._objects[r].setOnGroup(t,i);if("canvas"===t)for(;r--;)this._objects[r]._set(t,i);e.Object.prototype._set.call(this,t,i)},toObject:function(t){var i=this.includeDefaultValues,r=this._objects.filter((function(t){return!t.excludeFromExport})).map((function(e){var r=e.includeDefaultValues;e.includeDefaultValues=i;var n=e.toObject(t);return e.includeDefaultValues=r,n})),n=e.Object.prototype.toObject.call(this,t);return n.objects=r,n},toDatalessObject:function(t){var i,r=this.sourcePath;if(r)i=r;else{var n=this.includeDefaultValues;i=this._objects.map((function(e){var i=e.includeDefaultValues;e.includeDefaultValues=n;var r=e.toDatalessObject(t);return e.includeDefaultValues=i,r}))}var s=e.Object.prototype.toDatalessObject.call(this,t);return s.objects=i,s},render:function(t){this._transformDone=!0,this.callSuper("render",t),this._transformDone=!1},shouldCache:function(){var t=e.Object.prototype.shouldCache.call(this);if(t)for(var i=0,r=this._objects.length;i\n"],i=0,r=this._objects.length;i\n"),e},getSvgStyles:function(){var t=void 0!==this.opacity&&1!==this.opacity?"opacity: "+this.opacity+";":"",e=this.visible?"":" visibility: hidden;";return[t,this.getSvgFilter(),e].join("")},toClipPathSVG:function(t){for(var e=[],i=0,r=this._objects.length;i"},shouldCache:function(){return!1},isOnACache:function(){return!1},_renderControls:function(t,e,i){t.save(),t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,this.callSuper("_renderControls",t,e),void 0===(i=i||{}).hasControls&&(i.hasControls=!1),i.forActiveSelection=!0;for(var r=0,n=this._objects.length;r\n','\t\n',"\n"),o=' clip-path="url(#imageCrop_'+h+')" '}if(this.imageSmoothing||(a='" image-rendering="optimizeSpeed'),i.push("\t\n"),this.stroke||this.strokeDashArray){var l=this.fill;this.fill=null,t=["\t\n'],this.fill=l}return"fill"!==this.paintFirst?e.concat(t,i):e.concat(i,t)},getSrc:function(t){var e=t?this._element:this._originalElement;return e?e.toDataURL?e.toDataURL():this.srcFromAttribute?e.getAttribute("src"):e.src:this.src||""},setSrc:function(t,e,i){return S.util.loadImage(t,(function(t,r){this.setElement(t,i),this._setWidthHeight(),e&&e(this,r)}),this,i&&i.crossOrigin),this},toString:function(){return'#'},applyResizeFilters:function(){var t=this.resizeFilter,e=this.minimumScaleTrigger,i=this.getTotalObjectScaling(),r=i.scaleX,n=i.scaleY,s=this._filteredEl||this._originalElement;if(this.group&&this.set("dirty",!0),!t||r>e&&n>e)return this._element=s,this._filterScalingX=1,this._filterScalingY=1,this._lastScaleX=r,void(this._lastScaleY=n);S.filterBackend||(S.filterBackend=S.initFilterBackend());var o=S.util.createCanvasElement(),a=this._filteredEl?this.cacheKey+"_filtered":this.cacheKey,h=s.width,l=s.height;o.width=h,o.height=l,this._element=o,this._lastScaleX=t.scaleX=r,this._lastScaleY=t.scaleY=n,S.filterBackend.applyFilters([t],s,h,l,this._element,a),this._filterScalingX=o.width/this._originalElement.width,this._filterScalingY=o.height/this._originalElement.height},applyFilters:function(t){if(t=(t=t||this.filters||[]).filter((function(t){return t&&!t.isNeutralState()})),this.set("dirty",!0),this.removeTexture(this.cacheKey+"_filtered"),0===t.length)return this._element=this._originalElement,this._filteredEl=null,this._filterScalingX=1,this._filterScalingY=1,this;var e=this._originalElement,i=e.naturalWidth||e.width,r=e.naturalHeight||e.height;if(this._element===this._originalElement){var n=S.util.createCanvasElement();n.width=i,n.height=r,this._element=n,this._filteredEl=n}else this._element=this._filteredEl,this._filteredEl.getContext("2d").clearRect(0,0,i,r),this._lastScaleX=1,this._lastScaleY=1;return S.filterBackend||(S.filterBackend=S.initFilterBackend()),S.filterBackend.applyFilters(t,this._originalElement,i,r,this._element,this.cacheKey),this._originalElement.width===this._element.width&&this._originalElement.height===this._element.height||(this._filterScalingX=this._element.width/this._originalElement.width,this._filterScalingY=this._element.height/this._originalElement.height),this},_render:function(t){S.util.setImageSmoothing(t,this.imageSmoothing),!0!==this.isMoving&&this.resizeFilter&&this._needsResize()&&this.applyResizeFilters(),this._stroke(t),this._renderPaintInOrder(t)},drawCacheOnCanvas:function(t){S.util.setImageSmoothing(t,this.imageSmoothing),S.Object.prototype.drawCacheOnCanvas.call(this,t)},shouldCache:function(){return this.needsItsOwnCache()},_renderFill:function(t){var e=this._element;if(e){var i=this._filterScalingX,r=this._filterScalingY,n=this.width,s=this.height,o=Math.min,a=Math.max,h=a(this.cropX,0),l=a(this.cropY,0),c=e.naturalWidth||e.width,u=e.naturalHeight||e.height,d=h*i,f=l*r,g=o(n*i,c-d),m=o(s*r,u-f),p=-n/2,v=-s/2,y=o(n,c/i-h),_=o(s,u/r-l);e&&t.drawImage(e,d,f,g,m,p,v,y,_)}},_needsResize:function(){var t=this.getTotalObjectScaling();return t.scaleX!==this._lastScaleX||t.scaleY!==this._lastScaleY},_resetWidthHeight:function(){this.set(this.getOriginalSize())},_initElement:function(t,e){this.setElement(S.util.getById(t),e),S.util.addClass(this.getElement(),S.Image.CSS_CANVAS)},_initConfig:function(t){t||(t={}),this.setOptions(t),this._setWidthHeight(t)},_initFilters:function(t,e){t&&t.length?S.util.enlivenObjects(t,(function(t){e&&e(t)}),"fabric.Image.filters"):e&&e()},_setWidthHeight:function(t){t||(t={});var e=this.getElement();this.width=t.width||e.naturalWidth||e.width||0,this.height=t.height||e.naturalHeight||e.height||0},parsePreserveAspectRatioAttribute:function(){var t,e=S.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio||""),i=this._element.width,r=this._element.height,n=1,s=1,o=0,a=0,h=0,l=0,c=this.width,u=this.height,d={width:c,height:u};return!e||"none"===e.alignX&&"none"===e.alignY?(n=c/i,s=u/r):("meet"===e.meetOrSlice&&(t=(c-i*(n=s=S.util.findScaleToFit(this._element,d)))/2,"Min"===e.alignX&&(o=-t),"Max"===e.alignX&&(o=t),t=(u-r*s)/2,"Min"===e.alignY&&(a=-t),"Max"===e.alignY&&(a=t)),"slice"===e.meetOrSlice&&(t=i-c/(n=s=S.util.findScaleToCover(this._element,d)),"Mid"===e.alignX&&(h=t/2),"Max"===e.alignX&&(h=t),t=r-u/s,"Mid"===e.alignY&&(l=t/2),"Max"===e.alignY&&(l=t),i=c/n,r=u/s)),{width:i,height:r,scaleX:n,scaleY:s,offsetLeft:o,offsetTop:a,cropX:h,cropY:l}}}),S.Image.CSS_CANVAS="canvas-img",S.Image.prototype.getSvgSrc=S.Image.prototype.getSrc,S.Image.fromObject=function(t,e){var i=S.util.object.clone(t);S.util.loadImage(i.src,(function(t,r){r?e&&e(null,!0):S.Image.prototype._initFilters.call(i,i.filters,(function(r){i.filters=r||[],S.Image.prototype._initFilters.call(i,[i.resizeFilter],(function(r){i.resizeFilter=r[0],S.util.enlivenObjectEnlivables(i,i,(function(){var r=new S.Image(t,i);e(r,!1)}))}))}))}),null,i.crossOrigin)},S.Image.fromURL=function(t,e,i){S.util.loadImage(t,(function(t,r){e&&e(new S.Image(t,i),r)}),null,i&&i.crossOrigin)},S.Image.ATTRIBUTE_NAMES=S.SHARED_ATTRIBUTES.concat("x y width height preserveAspectRatio xlink:href crossOrigin image-rendering".split(" ")),S.Image.fromElement=function(t,i,r){var n=S.parseAttributes(t,S.Image.ATTRIBUTE_NAMES);S.Image.fromURL(n["xlink:href"],i,e(r?S.util.object.clone(r):{},n))})}(e),S.util.object.extend(S.Object.prototype,{_getAngleValueForStraighten:function(){var t=this.angle%360;return t>0?90*Math.round((t-1)/90):90*Math.round(t/90)},straighten:function(){return this.rotate(this._getAngleValueForStraighten())},fxStraighten:function(t){var e=function(){},i=(t=t||{}).onComplete||e,r=t.onChange||e,n=this;return S.util.animate({target:this,startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(t){n.rotate(t),r()},onComplete:function(){n.setCoords(),i()}})}}),S.util.object.extend(S.StaticCanvas.prototype,{straightenObject:function(t){return t.straighten(),this.requestRenderAll(),this},fxStraightenObject:function(t){return t.fxStraighten({onChange:this.requestRenderAllBound})}}),function(){function t(t,e){var i="precision "+e+" float;\nvoid main(){}",r=t.createShader(t.FRAGMENT_SHADER);return t.shaderSource(r,i),t.compileShader(r),!!t.getShaderParameter(r,t.COMPILE_STATUS)}function e(t){t&&t.tileSize&&(this.tileSize=t.tileSize),this.setupGLContext(this.tileSize,this.tileSize),this.captureGPUInfo()}S.isWebglSupported=function(e){if(S.isLikelyNode)return!1;e=e||S.WebglFilterBackend.prototype.tileSize;var i=document.createElement("canvas"),r=i.getContext("webgl")||i.getContext("experimental-webgl"),n=!1;if(r){S.maxTextureSize=r.getParameter(r.MAX_TEXTURE_SIZE),n=S.maxTextureSize>=e;for(var s=["highp","mediump","lowp"],o=0;o<3;o++)if(t(r,s[o])){S.webGlPrecision=s[o];break}}return this.isSupported=n,n},S.WebglFilterBackend=e,e.prototype={tileSize:2048,resources:{},setupGLContext:function(t,e){this.dispose(),this.createWebGLCanvas(t,e),this.aPosition=new Float32Array([0,0,0,1,1,0,1,1]),this.chooseFastestCopyGLTo2DMethod(t,e)},chooseFastestCopyGLTo2DMethod:function(t,e){var i,r=void 0!==window.performance;try{new ImageData(1,1),i=!0}catch(t){i=!1}var n="undefined"!=typeof ArrayBuffer,s="undefined"!=typeof Uint8ClampedArray;if(r&&i&&n&&s){var o=S.util.createCanvasElement(),a=new ArrayBuffer(t*e*4);if(S.forceGLPutImageData)return this.imageBuffer=a,void(this.copyGLTo2D=O);var h,l,c={imageBuffer:a,destinationWidth:t,destinationHeight:e,targetCanvas:o};o.width=t,o.height=e,h=window.performance.now(),E.call(c,this.gl,c),l=window.performance.now()-h,h=window.performance.now(),O.call(c,this.gl,c),l>window.performance.now()-h?(this.imageBuffer=a,this.copyGLTo2D=O):this.copyGLTo2D=E}},createWebGLCanvas:function(t,e){var i=S.util.createCanvasElement();i.width=t,i.height=e;var r={alpha:!0,premultipliedAlpha:!1,depth:!1,stencil:!1,antialias:!1},n=i.getContext("webgl",r);n||(n=i.getContext("experimental-webgl",r)),n&&(n.clearColor(0,0,0,0),this.canvas=i,this.gl=n)},applyFilters:function(t,e,i,r,n,s){var o,a=this.gl;s&&(o=this.getCachedTexture(s,e));var h={originalWidth:e.width||e.originalWidth,originalHeight:e.height||e.originalHeight,sourceWidth:i,sourceHeight:r,destinationWidth:i,destinationHeight:r,context:a,sourceTexture:this.createTexture(a,i,r,!o&&e),targetTexture:this.createTexture(a,i,r),originalTexture:o||this.createTexture(a,i,r,!o&&e),passes:t.length,webgl:!0,aPosition:this.aPosition,programCache:this.programCache,pass:0,filterBackend:this,targetCanvas:n},l=a.createFramebuffer();return a.bindFramebuffer(a.FRAMEBUFFER,l),t.forEach((function(t){t&&t.applyTo(h)})),function(t){var e=t.targetCanvas,i=e.width,r=e.height,n=t.destinationWidth,s=t.destinationHeight;i===n&&r===s||(e.width=n,e.height=s)}(h),this.copyGLTo2D(a,h),a.bindTexture(a.TEXTURE_2D,null),a.deleteTexture(h.sourceTexture),a.deleteTexture(h.targetTexture),a.deleteFramebuffer(l),n.getContext("2d").setTransform(1,0,0,1,0,0),h},dispose:function(){this.canvas&&(this.canvas=null,this.gl=null),this.clearWebGLCaches()},clearWebGLCaches:function(){this.programCache={},this.textureCache={}},createTexture:function(t,e,i,r){var n=t.createTexture();return t.bindTexture(t.TEXTURE_2D,n),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),r?t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,r):t.texImage2D(t.TEXTURE_2D,0,t.RGBA,e,i,0,t.RGBA,t.UNSIGNED_BYTE,null),n},getCachedTexture:function(t,e){if(this.textureCache[t])return this.textureCache[t];var i=this.createTexture(this.gl,e.width,e.height,e);return this.textureCache[t]=i,i},evictCachesForKey:function(t){this.textureCache[t]&&(this.gl.deleteTexture(this.textureCache[t]),delete this.textureCache[t])},copyGLTo2D:E,captureGPUInfo:function(){if(this.gpuInfo)return this.gpuInfo;var t=this.gl,e={renderer:"",vendor:""};if(!t)return e;var i=t.getExtension("WEBGL_debug_renderer_info");if(i){var r=t.getParameter(i.UNMASKED_RENDERER_WEBGL),n=t.getParameter(i.UNMASKED_VENDOR_WEBGL);r&&(e.renderer=r.toLowerCase()),n&&(e.vendor=n.toLowerCase())}return this.gpuInfo=e,e}}}(),function(){var t=function(){};function e(){}S.Canvas2dFilterBackend=e,e.prototype={evictCachesForKey:t,dispose:t,clearWebGLCaches:t,resources:{},applyFilters:function(t,e,i,r,n){var s=n.getContext("2d");s.drawImage(e,0,0,i,r);var o={sourceWidth:i,sourceHeight:r,imageData:s.getImageData(0,0,i,r),originalEl:e,originalImageData:s.getImageData(0,0,i,r),canvasEl:n,ctx:s,filterBackend:this};return t.forEach((function(t){t.applyTo(o)})),o.imageData.width===i&&o.imageData.height===r||(n.width=o.imageData.width,n.height=o.imageData.height),s.putImageData(o.imageData,0,0),o}}}(),S.Image=S.Image||{},S.Image.filters=S.Image.filters||{},S.Image.filters.BaseFilter=S.util.createClass({type:"BaseFilter",vertexSource:"attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvoid main() {\nvTexCoord = aPosition;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",fragmentSource:"precision highp float;\nvarying vec2 vTexCoord;\nuniform sampler2D uTexture;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\n}",initialize:function(t){t&&this.setOptions(t)},setOptions:function(t){for(var e in t)this[e]=t[e]},createProgram:function(t,e,i){e=e||this.fragmentSource,i=i||this.vertexSource,"highp"!==S.webGlPrecision&&(e=e.replace(/precision highp float/g,"precision "+S.webGlPrecision+" float"));var r=t.createShader(t.VERTEX_SHADER);if(t.shaderSource(r,i),t.compileShader(r),!t.getShaderParameter(r,t.COMPILE_STATUS))throw new Error("Vertex shader compile error for "+this.type+": "+t.getShaderInfoLog(r));var n=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(n,e),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS))throw new Error("Fragment shader compile error for "+this.type+": "+t.getShaderInfoLog(n));var s=t.createProgram();if(t.attachShader(s,r),t.attachShader(s,n),t.linkProgram(s),!t.getProgramParameter(s,t.LINK_STATUS))throw new Error('Shader link error for "${this.type}" '+t.getProgramInfoLog(s));var o=this.getAttributeLocations(t,s),a=this.getUniformLocations(t,s)||{};return a.uStepW=t.getUniformLocation(s,"uStepW"),a.uStepH=t.getUniformLocation(s,"uStepH"),{program:s,attributeLocations:o,uniformLocations:a}},getAttributeLocations:function(t,e){return{aPosition:t.getAttribLocation(e,"aPosition")}},getUniformLocations:function(){return{}},sendAttributeData:function(t,e,i){var r=e.aPosition,n=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,n),t.enableVertexAttribArray(r),t.vertexAttribPointer(r,2,t.FLOAT,!1,0,0),t.bufferData(t.ARRAY_BUFFER,i,t.STATIC_DRAW)},_setupFrameBuffer:function(t){var e,i,r=t.context;t.passes>1?(e=t.destinationWidth,i=t.destinationHeight,t.sourceWidth===e&&t.sourceHeight===i||(r.deleteTexture(t.targetTexture),t.targetTexture=t.filterBackend.createTexture(r,e,i)),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,t.targetTexture,0)):(r.bindFramebuffer(r.FRAMEBUFFER,null),r.finish())},_swapTextures:function(t){t.passes--,t.pass++;var e=t.targetTexture;t.targetTexture=t.sourceTexture,t.sourceTexture=e},isNeutralState:function(){var t=this.mainParameter,e=S.Image.filters[this.type].prototype;if(t){if(Array.isArray(e[t])){for(var i=e[t].length;i--;)if(this[t][i]!==e[t][i])return!1;return!0}return e[t]===this[t]}return!1},applyTo:function(t){t.webgl?(this._setupFrameBuffer(t),this.applyToWebGL(t),this._swapTextures(t)):this.applyTo2d(t)},retrieveShader:function(t){return t.programCache.hasOwnProperty(this.type)||(t.programCache[this.type]=this.createProgram(t.context)),t.programCache[this.type]},applyToWebGL:function(t){var e=t.context,i=this.retrieveShader(t);0===t.pass&&t.originalTexture?e.bindTexture(e.TEXTURE_2D,t.originalTexture):e.bindTexture(e.TEXTURE_2D,t.sourceTexture),e.useProgram(i.program),this.sendAttributeData(e,i.attributeLocations,t.aPosition),e.uniform1f(i.uniformLocations.uStepW,1/t.sourceWidth),e.uniform1f(i.uniformLocations.uStepH,1/t.sourceHeight),this.sendUniformData(e,i.uniformLocations),e.viewport(0,0,t.destinationWidth,t.destinationHeight),e.drawArrays(e.TRIANGLE_STRIP,0,4)},bindAdditionalTexture:function(t,e,i){t.activeTexture(i),t.bindTexture(t.TEXTURE_2D,e),t.activeTexture(t.TEXTURE0)},unbindAdditionalTexture:function(t,e){t.activeTexture(e),t.bindTexture(t.TEXTURE_2D,null),t.activeTexture(t.TEXTURE0)},getMainParameter:function(){return this[this.mainParameter]},setMainParameter:function(t){this[this.mainParameter]=t},sendUniformData:function(){},createHelpLayer:function(t){if(!t.helpLayer){var e=document.createElement("canvas");e.width=t.sourceWidth,e.height=t.sourceHeight,t.helpLayer=e}},toObject:function(){var t={type:this.type},e=this.mainParameter;return e&&(t[e]=this[e]),t},toJSON:function(){return this.toObject()}}),S.Image.filters.BaseFilter.fromObject=function(t,e){var i=new S.Image.filters[t.type](t);return e&&e(i),i},function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,r=e.util.createClass;i.ColorMatrix=r(i.BaseFilter,{type:"ColorMatrix",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nuniform mat4 uColorMatrix;\nuniform vec4 uConstants;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor *= uColorMatrix;\ncolor += uConstants;\ngl_FragColor = color;\n}",matrix:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],mainParameter:"matrix",colorsOnly:!0,initialize:function(t){this.callSuper("initialize",t),this.matrix=this.matrix.slice(0)},applyTo2d:function(t){var e,i,r,n,s,o=t.imageData.data,a=o.length,h=this.matrix,l=this.colorsOnly;for(s=0;s=w||o<0||o>=_||(h=4*(a*_+o),l=p[f*v+d],e+=m[h]*l,i+=m[h+1]*l,r+=m[h+2]*l,C||(n+=m[h+3]*l));x[s]=e,x[s+1]=i,x[s+2]=r,x[s+3]=C?m[s+3]:n}t.imageData=b},getUniformLocations:function(t,e){return{uMatrix:t.getUniformLocation(e,"uMatrix"),uOpaque:t.getUniformLocation(e,"uOpaque"),uHalfSize:t.getUniformLocation(e,"uHalfSize"),uSize:t.getUniformLocation(e,"uSize")}},sendUniformData:function(t,e){t.uniform1fv(e.uMatrix,this.matrix)},toObject:function(){return i(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),e.Image.filters.Convolute.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,r=e.util.createClass;i.Grayscale=r(i.BaseFilter,{type:"Grayscale",fragmentSource:{average:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat average = (color.r + color.b + color.g) / 3.0;\ngl_FragColor = vec4(average, average, average, color.a);\n}",lightness:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\ngl_FragColor = vec4(average, average, average, col.a);\n}",luminosity:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\ngl_FragColor = vec4(average, average, average, col.a);\n}"},mode:"average",mainParameter:"mode",applyTo2d:function(t){var e,i,r=t.imageData.data,n=r.length,s=this.mode;for(e=0;el[0]&&n>l[1]&&s>l[2]&&r 0.0) {\n"+this.fragmentSource[t]+"}\n}"},retrieveShader:function(t){var e,i=this.type+"_"+this.mode;return t.programCache.hasOwnProperty(i)||(e=this.buildSource(this.mode),t.programCache[i]=this.createProgram(t.context,e)),t.programCache[i]},applyTo2d:function(t){var i,r,n,s,o,a,h,l=t.imageData.data,c=l.length,u=1-this.alpha;i=(h=new e.Color(this.color).getSource())[0]*this.alpha,r=h[1]*this.alpha,n=h[2]*this.alpha;for(var d=0;d=t||e<=-t)return 0;if(e<1.1920929e-7&&e>-1.1920929e-7)return 1;var i=(e*=Math.PI)/t;return a(e)/e*a(i)/i}},applyTo2d:function(t){var e=t.imageData,i=this.scaleX,r=this.scaleY;this.rcpScaleX=1/i,this.rcpScaleY=1/r;var n,s=e.width,a=e.height,h=o(s*i),l=o(a*r);"sliceHack"===this.resizeType?n=this.sliceByTwo(t,s,a,h,l):"hermite"===this.resizeType?n=this.hermiteFastResize(t,s,a,h,l):"bilinear"===this.resizeType?n=this.bilinearFiltering(t,s,a,h,l):"lanczos"===this.resizeType&&(n=this.lanczosResize(t,s,a,h,l)),t.imageData=n},sliceByTwo:function(t,i,n,s,o){var a,h,l=t.imageData,c=.5,u=!1,d=!1,f=i*c,g=n*c,m=e.filterBackend.resources,p=0,v=0,y=i,_=0;for(m.sliceByTwo||(m.sliceByTwo=document.createElement("canvas")),((a=m.sliceByTwo).width<1.5*i||a.height=e)){M=r(1e3*s(S-b.x)),w[M]||(w[M]={});for(var P=x.y-_;P<=x.y+_;P++)P<0||P>=o||(F=r(1e3*s(P-b.y)),w[M][F]||(w[M][F]=f(n(i(M*p,2)+i(F*v,2))/1e3)),(T=w[M][F])>0&&(O+=T,A+=T*c[E=4*(P*e+S)],I+=T*c[E+1],L+=T*c[E+2],D+=T*c[E+3]))}d[E=4*(C*a+h)]=A/O,d[E+1]=I/O,d[E+2]=L/O,d[E+3]=D/O}return++h1&&F<-1||(_=2*F*F*F-3*F*F+1)>0&&(T+=_*f[3+(M=4*(D+O*e))],b+=_,f[M+3]<255&&(_=_*f[M+3]/250),x+=_*f[M],C+=_*f[M+1],S+=_*f[M+2],w+=_)}m[y]=x/w,m[y+1]=C/w,m[y+2]=S/w,m[y+3]=T/b}return g},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),e.Image.filters.Resize.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,r=e.util.createClass;i.Contrast=r(i.BaseFilter,{type:"Contrast",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uContrast;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\ncolor.rgb = contrastF * (color.rgb - 0.5) + 0.5;\ngl_FragColor = color;\n}",contrast:0,mainParameter:"contrast",applyTo2d:function(t){if(0!==this.contrast){var e,i=t.imageData.data,r=i.length,n=Math.floor(255*this.contrast),s=259*(n+255)/(255*(259-n));for(e=0;e1&&(e=1/this.aspectRatio):this.aspectRatio<1&&(e=this.aspectRatio),t=e*this.blur*.12,this.horizontal?i[0]=t:i[1]=t,i}}),i.Blur.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,r=e.util.createClass;i.Gamma=r(i.BaseFilter,{type:"Gamma",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform vec3 uGamma;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec3 correction = (1.0 / uGamma);\ncolor.r = pow(color.r, correction.r);\ncolor.g = pow(color.g, correction.g);\ncolor.b = pow(color.b, correction.b);\ngl_FragColor = color;\ngl_FragColor.rgb *= color.a;\n}",gamma:[1,1,1],mainParameter:"gamma",initialize:function(t){this.gamma=[1,1,1],i.BaseFilter.prototype.initialize.call(this,t)},applyTo2d:function(t){var e,i=t.imageData.data,r=this.gamma,n=i.length,s=1/r[0],o=1/r[1],a=1/r[2];for(this.rVals||(this.rVals=new Uint8Array(256),this.gVals=new Uint8Array(256),this.bVals=new Uint8Array(256)),e=0,n=256;e'},_getCacheCanvasDimensions:function(){var t=this.callSuper("_getCacheCanvasDimensions"),e=this.fontSize;return t.width+=e*t.zoomX,t.height+=e*t.zoomY,t},_render:function(t){var e=this.path;e&&!e.isNotVisible()&&e._render(t),this._setTextStyles(t),this._renderTextLinesBackground(t),this._renderTextDecoration(t,"underline"),this._renderText(t),this._renderTextDecoration(t,"overline"),this._renderTextDecoration(t,"linethrough")},_renderText:function(t){"stroke"===this.paintFirst?(this._renderTextStroke(t),this._renderTextFill(t)):(this._renderTextFill(t),this._renderTextStroke(t))},_setTextStyles:function(t,e,i){if(t.textBaseline="alphabetical",this.path)switch(this.pathAlign){case"center":t.textBaseline="middle";break;case"ascender":t.textBaseline="top";break;case"descender":t.textBaseline="bottom"}t.font=this._getFontDeclaration(e,i)},calcTextWidth:function(){for(var t=this.getLineWidth(0),e=1,i=this._textLines.length;et&&(t=r)}return t},_renderTextLine:function(t,e,i,r,n,s){this._renderChars(t,e,i,r,n,s)},_renderTextLinesBackground:function(t){if(this.textBackgroundColor||this.styleHas("textBackgroundColor")){for(var e,i,r,n,s,o,a,h=t.fillStyle,l=this._getLeftOffset(),c=this._getTopOffset(),u=0,d=0,f=this.path,g=0,m=this._textLines.length;g=0:ia?u%=a:u<0&&(u+=a),this._setGraphemeOnPath(u,s,o),u+=s.kernedWidth}return{width:h,numOfSpaces:0}},_setGraphemeOnPath:function(t,i,r){var n=t+i.kernedWidth/2,s=this.path,o=e.util.getPointOnPath(s.path,n,s.segmentsInfo);i.renderLeft=o.x-r.x,i.renderTop=o.y-r.y,i.angle=o.angle+("right"===this.pathSide?Math.PI:0)},_getGraphemeBox:function(t,e,i,r,n){var s,o=this.getCompleteStyleDeclaration(e,i),a=r?this.getCompleteStyleDeclaration(e,i-1):{},h=this._measureChar(t,o,r,a),l=h.kernedWidth,c=h.width;0!==this.charSpacing&&(c+=s=this._getWidthOfCharSpacing(),l+=s);var u={width:c,left:0,height:o.fontSize,kernedWidth:l,deltaY:o.deltaY};if(i>0&&!n){var d=this.__charBounds[e][i-1];u.left=d.left+d.width+h.kernedWidth-h.width}return u},getHeightOfLine:function(t){if(this.__lineHeights[t])return this.__lineHeights[t];for(var e=this._textLines[t],i=this.getHeightOfChar(t,0),r=1,n=e.length;r0){var O=y+s+u;"rtl"===this.direction&&(O=this.width-O-d),l&&v&&(t.fillStyle=v,t.fillRect(O,c+x*r+o,d,this.fontSize/15)),u=f.left,d=f.width,l=g,v=p,r=n,o=a}else d+=f.kernedWidth;O=y+s+u,"rtl"===this.direction&&(O=this.width-O-d),t.fillStyle=p,g&&p&&t.fillRect(O,c+x*r+o,d-b,this.fontSize/15),_+=i}else _+=i;this._removeShadow(t)}},_getFontDeclaration:function(t,i){var r=t||this,n=this.fontFamily,s=e.Text.genericFonts.indexOf(n.toLowerCase())>-1,o=void 0===n||n.indexOf("'")>-1||n.indexOf(",")>-1||n.indexOf('"')>-1||s?r.fontFamily:'"'+r.fontFamily+'"';return[e.isLikelyNode?r.fontWeight:r.fontStyle,e.isLikelyNode?r.fontStyle:r.fontWeight,i?this.CACHE_FONT_SIZE+"px":r.fontSize+"px",o].join(" ")},render:function(t){this.visible&&(this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(this._shouldClearDimensionCache()&&this.initDimensions(),this.callSuper("render",t)))},_splitTextIntoLines:function(t){for(var i=t.split(this._reNewline),r=new Array(i.length),n=["\n"],s=[],o=0;o-1&&(t.underline=!0),t.textDecoration.indexOf("line-through")>-1&&(t.linethrough=!0),t.textDecoration.indexOf("overline")>-1&&(t.overline=!0),delete t.textDecoration)}S.IText=S.util.createClass(S.Text,S.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"",cursorDelay:1e3,cursorDuration:600,caching:!0,hiddenTextareaContainer:null,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,__widthOfSpace:[],inCompositionMode:!1,initialize:function(t,e){this.callSuper("initialize",t,e),this.initBehavior()},setSelectionStart:function(t){t=Math.max(t,0),this._updateAndFire("selectionStart",t)},setSelectionEnd:function(t){t=Math.min(t,this.text.length),this._updateAndFire("selectionEnd",t)},_updateAndFire:function(t,e){this[t]!==e&&(this._fireSelectionChanged(),this[t]=e),this._updateTextarea()},_fireSelectionChanged:function(){this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},initDimensions:function(){this.isEditing&&this.initDelayedCursor(),this.clearContextTop(),this.callSuper("initDimensions")},render:function(t){this.clearContextTop(),this.callSuper("render",t),this.cursorOffsetCache={},this.renderCursorOrSelection()},_render:function(t){this.callSuper("_render",t)},clearContextTop:function(t){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var e=this.canvas.contextTop,i=this.canvas.viewportTransform;e.save(),e.transform(i[0],i[1],i[2],i[3],i[4],i[5]),this.transform(e),this._clearTextArea(e),t||e.restore()}},renderCursorOrSelection:function(){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var t=this._getCursorBoundaries(),e=this.canvas.contextTop;this.clearContextTop(!0),this.selectionStart===this.selectionEnd?this.renderCursor(t,e):this.renderSelection(t,e),e.restore()}},_clearTextArea:function(t){var e=this.width+4,i=this.height+4;t.clearRect(-e/2,-i/2,e,i)},_getCursorBoundaries:function(t){void 0===t&&(t=this.selectionStart);var e=this._getLeftOffset(),i=this._getTopOffset(),r=this._getCursorBoundariesOffsets(t);return{left:e,top:i,leftOffset:r.left,topOffset:r.top}},_getCursorBoundariesOffsets:function(t){if(this.cursorOffsetCache&&"top"in this.cursorOffsetCache)return this.cursorOffsetCache;var e,i,r,n,s=0,o=0,a=this.get2DCursorLocation(t);r=a.charIndex,i=a.lineIndex;for(var h=0;h0?o:0)},"rtl"===this.direction&&(n.left*=-1),this.cursorOffsetCache=n,this.cursorOffsetCache},renderCursor:function(t,e){var i=this.get2DCursorLocation(),r=i.lineIndex,n=i.charIndex>0?i.charIndex-1:0,s=this.getValueOfPropertyAt(r,n,"fontSize"),o=this.scaleX*this.canvas.getZoom(),a=this.cursorWidth/o,h=t.topOffset,l=this.getValueOfPropertyAt(r,n,"deltaY");h+=(1-this._fontSizeFraction)*this.getHeightOfLine(r)/this.lineHeight-s*(1-this._fontSizeFraction),this.inCompositionMode&&this.renderSelection(t,e),e.fillStyle=this.cursorColor||this.getValueOfPropertyAt(r,n,"fill"),e.globalAlpha=this.__isMousedown?1:this._currentCursorOpacity,e.fillRect(t.left+t.leftOffset-a/2,h+t.top+l,a,s)},renderSelection:function(t,e){for(var i=this.inCompositionMode?this.hiddenTextarea.selectionStart:this.selectionStart,r=this.inCompositionMode?this.hiddenTextarea.selectionEnd:this.selectionEnd,n=-1!==this.textAlign.indexOf("justify"),s=this.get2DCursorLocation(i),o=this.get2DCursorLocation(r),a=s.lineIndex,h=o.lineIndex,l=s.charIndex<0?0:s.charIndex,c=o.charIndex<0?0:o.charIndex,u=a;u<=h;u++){var d,f=this._getLineLeftOffset(u)||0,g=this.getHeightOfLine(u),m=0,p=0;if(u===a&&(m=this.__charBounds[a][l].left),u>=a&&u1)&&(g/=this.lineHeight);var y=t.left+f+m,_=p-m,w=g,b=0;this.inCompositionMode?(e.fillStyle=this.compositionColor||"black",w=1,b=g):e.fillStyle=this.selectionColor,"rtl"===this.direction&&(y=this.width-y-_),e.fillRect(y,t.top+t.topOffset+b,_,w),t.topOffset+=d}},getCurrentCharFontSize:function(){var t=this._getCurrentCharIndex();return this.getValueOfPropertyAt(t.l,t.c,"fontSize")},getCurrentCharColor:function(){var t=this._getCurrentCharIndex();return this.getValueOfPropertyAt(t.l,t.c,"fill")},_getCurrentCharIndex:function(){var t=this.get2DCursorLocation(this.selectionStart,!0),e=t.charIndex>0?t.charIndex-1:0;return{l:t.lineIndex,c:e}}}),S.IText.fromObject=function(e,i){if(t(e),e.styles)for(var r in e.styles)for(var n in e.styles[r])t(e.styles[r][n]);S.Object._fromObject("IText",e,i,"text")}}(),C=S.util.object.clone,S.util.object.extend(S.IText.prototype,{initBehavior:function(){this.initAddedHandler(),this.initRemovedHandler(),this.initCursorSelectionHandlers(),this.initDoubleClickSimulation(),this.mouseMoveHandler=this.mouseMoveHandler.bind(this)},onDeselect:function(){this.isEditing&&this.exitEditing(),this.selected=!1},initAddedHandler:function(){var t=this;this.on("added",(function(){var e=t.canvas;e&&(e._hasITextHandlers||(e._hasITextHandlers=!0,t._initCanvasHandlers(e)),e._iTextInstances=e._iTextInstances||[],e._iTextInstances.push(t))}))},initRemovedHandler:function(){var t=this;this.on("removed",(function(){var e=t.canvas;e&&(e._iTextInstances=e._iTextInstances||[],S.util.removeFromArray(e._iTextInstances,t),0===e._iTextInstances.length&&(e._hasITextHandlers=!1,t._removeCanvasHandlers(e)))}))},_initCanvasHandlers:function(t){t._mouseUpITextHandler=function(){t._iTextInstances&&t._iTextInstances.forEach((function(t){t.__isMousedown=!1}))},t.on("mouse:up",t._mouseUpITextHandler)},_removeCanvasHandlers:function(t){t.off("mouse:up",t._mouseUpITextHandler)},_tick:function(){this._currentTickState=this._animateCursor(this,1,this.cursorDuration,"_onTickComplete")},_animateCursor:function(t,e,i,r){var n;return n={isAborted:!1,abort:function(){this.isAborted=!0}},t.animate("_currentCursorOpacity",e,{duration:i,onComplete:function(){n.isAborted||t[r]()},onChange:function(){t.canvas&&t.selectionStart===t.selectionEnd&&t.renderCursorOrSelection()},abort:function(){return n.isAborted}}),n},_onTickComplete:function(){var t=this;this._cursorTimeout1&&clearTimeout(this._cursorTimeout1),this._cursorTimeout1=setTimeout((function(){t._currentTickCompleteState=t._animateCursor(t,0,this.cursorDuration/2,"_tick")}),100)},initDelayedCursor:function(t){var e=this,i=t?0:this.cursorDelay;this.abortCursorAnimation(),this._currentCursorOpacity=1,this._cursorTimeout2=setTimeout((function(){e._tick()}),i)},abortCursorAnimation:function(){var t=this._currentTickState||this._currentTickCompleteState,e=this.canvas;this._currentTickState&&this._currentTickState.abort(),this._currentTickCompleteState&&this._currentTickCompleteState.abort(),clearTimeout(this._cursorTimeout1),clearTimeout(this._cursorTimeout2),this._currentCursorOpacity=0,t&&e&&e.clearContext(e.contextTop||e.contextContainer)},selectAll:function(){return this.selectionStart=0,this.selectionEnd=this._text.length,this._fireSelectionChanged(),this._updateTextarea(),this},getSelectedText:function(){return this._text.slice(this.selectionStart,this.selectionEnd).join("")},findWordBoundaryLeft:function(t){var e=0,i=t-1;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)e++,i--;for(;/\S/.test(this._text[i])&&i>-1;)e++,i--;return t-e},findWordBoundaryRight:function(t){var e=0,i=t;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)e++,i++;for(;/\S/.test(this._text[i])&&i-1;)e++,i--;return t-e},findLineBoundaryRight:function(t){for(var e=0,i=t;!/\n/.test(this._text[i])&&i0&&rthis.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=e):(this.selectionStart=e,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===i&&this.selectionEnd===r||(this.restartCursorIfNeeded(),this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},fromStringToGraphemeSelection:function(t,e,i){var r=i.slice(0,t),n=S.util.string.graphemeSplit(r).length;if(t===e)return{selectionStart:n,selectionEnd:n};var s=i.slice(t,e);return{selectionStart:n,selectionEnd:n+S.util.string.graphemeSplit(s).length}},fromGraphemeToStringSelection:function(t,e,i){var r=i.slice(0,t).join("").length;return t===e?{selectionStart:r,selectionEnd:r}:{selectionStart:r,selectionEnd:r+i.slice(t,e).join("").length}},_updateTextarea:function(){if(this.cursorOffsetCache={},this.hiddenTextarea){if(!this.inCompositionMode){var t=this.fromGraphemeToStringSelection(this.selectionStart,this.selectionEnd,this._text);this.hiddenTextarea.selectionStart=t.selectionStart,this.hiddenTextarea.selectionEnd=t.selectionEnd}this.updateTextareaPosition()}},updateFromTextArea:function(){if(this.hiddenTextarea){this.cursorOffsetCache={},this.text=this.hiddenTextarea.value,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords());var t=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value);this.selectionEnd=this.selectionStart=t.selectionEnd,this.inCompositionMode||(this.selectionStart=t.selectionStart),this.updateTextareaPosition()}},updateTextareaPosition:function(){if(this.selectionStart===this.selectionEnd){var t=this._calcTextareaPosition();this.hiddenTextarea.style.left=t.left,this.hiddenTextarea.style.top=t.top}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var t=this.inCompositionMode?this.compositionStart:this.selectionStart,e=this._getCursorBoundaries(t),i=this.get2DCursorLocation(t),r=i.lineIndex,n=i.charIndex,s=this.getValueOfPropertyAt(r,n,"fontSize")*this.lineHeight,o=e.leftOffset,a=this.calcTransformMatrix(),h={x:e.left+o,y:e.top+e.topOffset+s},l=this.canvas.getRetinaScaling(),c=this.canvas.upperCanvasEl,u=c.width/l,d=c.height/l,f=u-s,g=d-s,m=c.clientWidth/u,p=c.clientHeight/d;return h=S.util.transformPoint(h,a),(h=S.util.transformPoint(h,this.canvas.viewportTransform)).x*=m,h.y*=p,h.x<0&&(h.x=0),h.x>f&&(h.x=f),h.y<0&&(h.y=0),h.y>g&&(h.y=g),h.x+=this.canvas._offset.left,h.y+=this.canvas._offset.top,{left:h.x+"px",top:h.y+"px",fontSize:s+"px",charHeight:s}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,selectable:this.selectable,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.hoverCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.selectable=this._savedProps.selectable,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var t=this._textBeforeEdit!==this.text,e=this.hiddenTextarea;return this.selected=!1,this.isEditing=!1,this.selectionEnd=this.selectionStart,e&&(e.blur&&e.blur(),e.parentNode&&e.parentNode.removeChild(e)),this.hiddenTextarea=null,this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this.fire("editing:exited"),t&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),t&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var t in this.styles)this._textLines[t]||delete this.styles[t]},removeStyleFromTo:function(t,e){var i,r,n=this.get2DCursorLocation(t,!0),s=this.get2DCursorLocation(e,!0),o=n.lineIndex,a=n.charIndex,h=s.lineIndex,l=s.charIndex;if(o!==h){if(this.styles[o])for(i=a;i=l&&(r[c-d]=r[u],delete r[u])}},shiftLineStyles:function(t,e){var i=C(this.styles);for(var r in this.styles){var n=parseInt(r,10);n>t&&(this.styles[n+e]=i[n],i[n-e]||delete this.styles[n])}},restartCursorIfNeeded:function(){this._currentTickState&&!this._currentTickState.isAborted&&this._currentTickCompleteState&&!this._currentTickCompleteState.isAborted||this.initDelayedCursor()},insertNewlineStyleObject:function(t,e,i,r){var n,s={},o=!1,a=this._unwrappedTextLines[t].length===e;for(var h in i||(i=1),this.shiftLineStyles(t,i),this.styles[t]&&(n=this.styles[t][0===e?e:e-1]),this.styles[t]){var l=parseInt(h,10);l>=e&&(o=!0,s[l-e]=this.styles[t][h],a&&0===e||delete this.styles[t][h])}var c=!1;for(o&&!a&&(this.styles[t+i]=s,c=!0),c&&i--;i>0;)r&&r[i-1]?this.styles[t+i]={0:C(r[i-1])}:n?this.styles[t+i]={0:C(n)}:delete this.styles[t+i],i--;this._forceClearCache=!0},insertCharStyleObject:function(t,e,i,r){this.styles||(this.styles={});var n=this.styles[t],s=n?C(n):{};for(var o in i||(i=1),s){var a=parseInt(o,10);a>=e&&(n[a+i]=s[a],s[a-i]||delete n[a])}if(this._forceClearCache=!0,r)for(;i--;)Object.keys(r[i]).length&&(this.styles[t]||(this.styles[t]={}),this.styles[t][e+i]=C(r[i]));else if(n)for(var h=n[e?e-1:1];h&&i--;)this.styles[t][e+i]=C(h)},insertNewStyleBlock:function(t,e,i){for(var r=this.get2DCursorLocation(e,!0),n=[0],s=0,o=0;o0&&(this.insertCharStyleObject(r.lineIndex,r.charIndex,n[0],i),i=i&&i.slice(n[0]+1)),s&&this.insertNewlineStyleObject(r.lineIndex,r.charIndex+n[0],s),o=1;o0?this.insertCharStyleObject(r.lineIndex+o,0,n[o],i):i&&this.styles[r.lineIndex+o]&&i[0]&&(this.styles[r.lineIndex+o][0]=i[0]),i=i&&i.slice(n[o]+1);n[o]>0&&this.insertCharStyleObject(r.lineIndex+o,0,n[o],i)},setSelectionStartEndWithShift:function(t,e,i){i<=t?(e===t?this._selectionDirection="left":"right"===this._selectionDirection&&(this._selectionDirection="left",this.selectionEnd=t),this.selectionStart=i):i>t&&it?this.selectionStart=t:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>t?this.selectionEnd=t:this.selectionEnd<0&&(this.selectionEnd=0)}}),S.util.object.extend(S.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown)},onMouseDown:function(t){if(this.canvas){this.__newClickTime=+new Date;var e=t.pointer;this.isTripleClick(e)&&(this.fire("tripleclick",t),this._stopEvent(t.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=e,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected}},isTripleClick:function(t){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===t.x&&this.__lastPointer.y===t.y},_stopEvent:function(t){t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation()},initCursorSelectionHandlers:function(){this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},doubleClickHandler:function(t){this.isEditing&&this.selectWord(this.getSelectionStartFromPointer(t.e))},tripleClickHandler:function(t){this.isEditing&&this.selectLine(this.getSelectionStartFromPointer(t.e))},initClicks:function(){this.on("mousedblclick",this.doubleClickHandler),this.on("tripleclick",this.tripleClickHandler)},_mouseDownHandler:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.__isMousedown=!0,this.selected&&(this.inCompositionMode=!1,this.setCursorByClick(t.e)),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection()))},_mouseDownHandlerBefore:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.selected=this===this.canvas._activeObject)},initMousedownHandler:function(){this.on("mousedown",this._mouseDownHandler),this.on("mousedown:before",this._mouseDownHandlerBefore)},initMouseupHandler:function(){this.on("mouseup",this.mouseUpHandler)},mouseUpHandler:function(t){if(this.__isMousedown=!1,!(!this.editable||this.group||t.transform&&t.transform.actionPerformed||t.e.button&&1!==t.e.button)){if(this.canvas){var e=this.canvas._activeObject;if(e&&e!==this)return}this.__lastSelected&&!this.__corner?(this.selected=!1,this.__lastSelected=!1,this.enterEditing(t.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()):this.selected=!0}},setCursorByClick:function(t){var e=this.getSelectionStartFromPointer(t),i=this.selectionStart,r=this.selectionEnd;t.shiftKey?this.setSelectionStartEndWithShift(i,r,e):(this.selectionStart=e,this.selectionEnd=e),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(t){for(var e,i=this.getLocalPointer(t),r=0,n=0,s=0,o=0,a=0,h=0,l=this._textLines.length;h0&&(o+=this._textLines[h-1].length+this.missingNewlineOffset(h-1));n=this._getLineLeftOffset(a)*this.scaleX,e=this._textLines[a],"rtl"===this.direction&&(i.x=this.width*this.scaleX-i.x+n);for(var c=0,u=e.length;cs||o<0?0:1);return this.flipX&&(a=n-a),a>this._text.length&&(a=this._text.length),a}}),S.util.object.extend(S.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=S.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.setAttribute("autocorrect","off"),this.hiddenTextarea.setAttribute("autocomplete","off"),this.hiddenTextarea.setAttribute("spellcheck","false"),this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea",""),this.hiddenTextarea.setAttribute("wrap","off");var t=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+t.top+"; left: "+t.left+"; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; paddingーtop: "+t.fontSize+";",this.hiddenTextareaContainer?this.hiddenTextareaContainer.appendChild(this.hiddenTextarea):S.document.body.appendChild(this.hiddenTextarea),S.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),S.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),S.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),S.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),S.util.addListener(this.hiddenTextarea,"cut",this.copy.bind(this)),S.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),S.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),S.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),S.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(S.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},keysMap:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown"},keysMapRtl:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorLeft",36:"moveCursorRight",37:"moveCursorRight",38:"moveCursorUp",39:"moveCursorLeft",40:"moveCursorDown"},ctrlKeysMapUp:{67:"copy",88:"cut"},ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(t){if(this.isEditing){var e="rtl"===this.direction?this.keysMapRtl:this.keysMap;if(t.keyCode in e)this[e[t.keyCode]](t);else{if(!(t.keyCode in this.ctrlKeysMapDown)||!t.ctrlKey&&!t.metaKey)return;this[this.ctrlKeysMapDown[t.keyCode]](t)}t.stopImmediatePropagation(),t.preventDefault(),t.keyCode>=33&&t.keyCode<=40?(this.inCompositionMode=!1,this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.requestRenderAll()}},onKeyUp:function(t){!this.isEditing||this._copyDone||this.inCompositionMode?this._copyDone=!1:t.keyCode in this.ctrlKeysMapUp&&(t.ctrlKey||t.metaKey)&&(this[this.ctrlKeysMapUp[t.keyCode]](t),t.stopImmediatePropagation(),t.preventDefault(),this.canvas&&this.canvas.requestRenderAll())},onInput:function(t){var e=this.fromPaste;if(this.fromPaste=!1,t&&t.stopPropagation(),this.isEditing){var i,r,n,s,o,a=this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,h=this._text.length,l=a.length,c=l-h,u=this.selectionStart,d=this.selectionEnd,f=u!==d;if(""===this.hiddenTextarea.value)return this.styles={},this.updateFromTextArea(),this.fire("changed"),void(this.canvas&&(this.canvas.fire("text:changed",{target:this}),this.canvas.requestRenderAll()));var g=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value),m=u>g.selectionStart;f?(i=this._text.slice(u,d),c+=d-u):l0&&(r+=(i=this.__charBounds[t][e-1]).left+i.width),r},getDownCursorOffset:function(t,e){var i=this._getSelectionForOffset(t,e),r=this.get2DCursorLocation(i),n=r.lineIndex;if(n===this._textLines.length-1||t.metaKey||34===t.keyCode)return this._text.length-i;var s=r.charIndex,o=this._getWidthBeforeCursor(n,s),a=this._getIndexOnLine(n+1,o);return this._textLines[n].slice(s).length+a+1+this.missingNewlineOffset(n)},_getSelectionForOffset:function(t,e){return t.shiftKey&&this.selectionStart!==this.selectionEnd&&e?this.selectionEnd:this.selectionStart},getUpCursorOffset:function(t,e){var i=this._getSelectionForOffset(t,e),r=this.get2DCursorLocation(i),n=r.lineIndex;if(0===n||t.metaKey||33===t.keyCode)return-i;var s=r.charIndex,o=this._getWidthBeforeCursor(n,s),a=this._getIndexOnLine(n-1,o),h=this._textLines[n].slice(0,s),l=this.missingNewlineOffset(n-1);return-this._textLines[n-1].length+a-h.length+(1-l)},_getIndexOnLine:function(t,e){for(var i,r,n=this._textLines[t],s=this._getLineLeftOffset(t),o=0,a=0,h=n.length;ae){r=!0;var l=s-i,c=s,u=Math.abs(l-e);o=Math.abs(c-e)=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorUpOrDown("Down",t)},moveCursorUp:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",t)},_moveCursorUpOrDown:function(t,e){var i=this["get"+t+"CursorOffset"](e,"right"===this._selectionDirection);e.shiftKey?this.moveCursorWithShift(i):this.moveCursorWithoutShift(i),0!==i&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(t){var e="left"===this._selectionDirection?this.selectionStart+t:this.selectionEnd+t;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,e),0!==t},moveCursorWithoutShift:function(t){return t<0?(this.selectionStart+=t,this.selectionEnd=this.selectionStart):(this.selectionEnd+=t,this.selectionStart=this.selectionEnd),0!==t},moveCursorLeft:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",t)},_move:function(t,e,i){var r;if(t.altKey)r=this["findWordBoundary"+i](this[e]);else{if(!t.metaKey&&35!==t.keyCode&&36!==t.keyCode)return this[e]+="Left"===i?-1:1,!0;r=this["findLineBoundary"+i](this[e])}if(void 0!==typeof r&&this[e]!==r)return this[e]=r,!0},_moveLeft:function(t,e){return this._move(t,e,"Left")},_moveRight:function(t,e){return this._move(t,e,"Right")},moveCursorLeftWithoutShift:function(t){var e=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(e=this._moveLeft(t,"selectionStart")),this.selectionEnd=this.selectionStart,e},moveCursorLeftWithShift:function(t){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(t,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(t,"selectionStart")):void 0},moveCursorRight:function(t){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorLeftOrRight("Right",t)},_moveCursorLeftOrRight:function(t,e){var i="moveCursor"+t+"With";this._currentCursorOpacity=1,e.shiftKey?i+="Shift":i+="outShift",this[i](e)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(t){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(t,"selectionStart"):this.selectionEnd!==this._text.length?(this._selectionDirection="right",this._moveRight(t,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(t){var e=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(e=this._moveRight(t,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,e},removeChars:function(t,e){void 0===e&&(e=t+1),this.removeStyleFromTo(t,e),this._text.splice(t,e-t),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()},insertChars:function(t,e,i,r){void 0===r&&(r=i),r>i&&this.removeStyleFromTo(i,r);var n=S.util.string.graphemeSplit(t);this.insertNewStyleBlock(n,i,e),this._text=[].concat(this._text.slice(0,i),n,this._text.slice(r)),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()}}),function(){var t=S.util.toFixed,e=/ +/g;S.util.object.extend(S.Text.prototype,{_toSVG:function(){var t=this._getSVGLeftTopOffsets(),e=this._getSVGTextAndBg(t.textTop,t.textLeft);return this._wrapSVGTextAndBg(e)},toSVG:function(t){return this._createBaseSVGMarkup(this._toSVG(),{reviver:t,noStyle:!0,withShadow:!0})},_getSVGLeftTopOffsets:function(){return{textLeft:-this.width/2,textTop:-this.height/2,lineTop:this.getHeightOfLine(0)}},_wrapSVGTextAndBg:function(t){var e=this.getSvgTextDecoration(this);return[t.textBgRects.join(""),'\t\t",t.textSpans.join(""),"\n"]},_getSVGTextAndBg:function(t,e){var i,r=[],n=[],s=t;this._setSVGBg(n);for(var o=0,a=this._textLines.length;o",S.util.string.escapeXml(i),""].join("")},_setSVGTextLineText:function(t,e,i,r){var n,s,o,a,h,l=this.getHeightOfLine(e),c=-1!==this.textAlign.indexOf("justify"),u="",d=0,f=this._textLines[e];r+=l*(1-this._fontSizeFraction)/this.lineHeight;for(var g=0,m=f.length-1;g<=m;g++)h=g===m||this.charSpacing,u+=f[g],o=this.__charBounds[e][g],0===d?(i+=o.kernedWidth-o.width,d+=o.width):d+=o.kernedWidth,c&&!h&&this._reSpaceAndTab.test(f[g])&&(h=!0),h||(n=n||this.getCompleteStyleDeclaration(e,g),s=this.getCompleteStyleDeclaration(e,g+1),h=this._hasStyleChangedForSvg(n,s)),h&&(a=this._getStyleDeclaration(e,g)||{},t.push(this._createTextCharSpan(u,a,i,r)),u="",n=s,i+=d,d=0)},_pushTextBgRect:function(e,i,r,n,s,o){var a=S.Object.NUM_FRACTION_DIGITS;e.push("\t\t\n')},_setSVGTextLineBg:function(t,e,i,r){for(var n,s,o=this._textLines[e],a=this.getHeightOfLine(e)/this.lineHeight,h=0,l=0,c=this.getValueOfPropertyAt(e,0,"textBackgroundColor"),u=0,d=o.length;uthis.width&&this._set("width",this.dynamicMinWidth),-1!==this.textAlign.indexOf("justify")&&this.enlargeSpaces(),this.height=this.calcTextHeight(),this.saveState({propertySet:"_dimensionAffectingProps"}))},_generateStyleMap:function(t){for(var e=0,i=0,r=0,n={},s=0;s0?(i=0,r++,e++):!this.splitByGrapheme&&this._reSpaceAndTab.test(t.graphemeText[r])&&s>0&&(i++,r++),n[s]={line:e,offset:i},r+=t.graphemeLines[s].length,i+=t.graphemeLines[s].length;return n},styleHas:function(t,i){if(this._styleMap&&!this.isWrapping){var r=this._styleMap[i];r&&(i=r.line)}return e.Text.prototype.styleHas.call(this,t,i)},isEmptyStyles:function(t){if(!this.styles)return!0;var e,i,r=0,n=!1,s=this._styleMap[t],o=this._styleMap[t+1];for(var a in s&&(t=s.line,r=s.offset),o&&(n=o.line===t,e=o.offset),i=void 0===t?this.styles:{line:this.styles[t]})for(var h in i[a])if(h>=r&&(!n||hr&&!p?(a.push(h),h=[],s=f,p=!0):s+=v,p||o||h.push(d),h=h.concat(c),g=o?0:this._measureWord([d],i,u),u++,p=!1,f>m&&(m=f);return y&&a.push(h),m+n>this.dynamicMinWidth&&(this.dynamicMinWidth=m-v+n),a},isEndOfWrapping:function(t){return!this._styleMap[t+1]||this._styleMap[t+1].line!==this._styleMap[t].line},missingNewlineOffset:function(t){return this.splitByGrapheme?this.isEndOfWrapping(t)?1:0:1},_splitTextIntoLines:function(t){for(var i=e.Text.prototype._splitTextIntoLines.call(this,t),r=this._wrapText(i.lines,this.width),n=new Array(r.length),s=0;s{},898:()=>{},245:()=>{}},k={};function R(t){var e=k[t];if(void 0!==e)return e.exports;var i=k[t]={exports:{}};return P[t](i,i.exports,R),i.exports}R.d=(t,e)=>{for(var i in e)R.o(e,i)&&!R.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},R.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var B={};(()=>{let t;R.d(B,{R:()=>t}),t="undefined"!=typeof document&&"undefined"!=typeof window?R(653).fabric:{version:"5.2.1"}})();var j,V,W,N,U=B.R;!function(t){t[t.DIMT_RECTANGLE=1]="DIMT_RECTANGLE",t[t.DIMT_QUADRILATERAL=2]="DIMT_QUADRILATERAL",t[t.DIMT_TEXT=4]="DIMT_TEXT",t[t.DIMT_ARC=8]="DIMT_ARC",t[t.DIMT_IMAGE=16]="DIMT_IMAGE",t[t.DIMT_POLYGON=32]="DIMT_POLYGON",t[t.DIMT_LINE=64]="DIMT_LINE",t[t.DIMT_GROUP=128]="DIMT_GROUP"}(j||(j={})),function(t){t[t.DIS_DEFAULT=1]="DIS_DEFAULT",t[t.DIS_SELECTED=2]="DIS_SELECTED"}(V||(V={})),function(t){t[t.EF_ENHANCED_FOCUS=4]="EF_ENHANCED_FOCUS",t[t.EF_AUTO_ZOOM=16]="EF_AUTO_ZOOM",t[t.EF_TAP_TO_FOCUS=64]="EF_TAP_TO_FOCUS"}(W||(W={})),function(t){t.GREY="grey",t.GREY32="grey32",t.RGBA="rgba",t.RBGA="rbga",t.GRBA="grba",t.GBRA="gbra",t.BRGA="brga",t.BGRA="bgra"}(N||(N={}));const G=t=>"number"==typeof t&&!Number.isNaN(t),Y=t=>"string"==typeof t;var H,X,z,q,K,Z,J,Q,$,tt,et;!function(t){t[t.ARC=0]="ARC",t[t.IMAGE=1]="IMAGE",t[t.LINE=2]="LINE",t[t.POLYGON=3]="POLYGON",t[t.QUAD=4]="QUAD",t[t.RECT=5]="RECT",t[t.TEXT=6]="TEXT",t[t.GROUP=7]="GROUP"}(K||(K={})),function(t){t[t.DEFAULT=0]="DEFAULT",t[t.SELECTED=1]="SELECTED"}(Z||(Z={}));class it{get mediaType(){return new Map([["rect",j.DIMT_RECTANGLE],["quad",j.DIMT_QUADRILATERAL],["text",j.DIMT_TEXT],["arc",j.DIMT_ARC],["image",j.DIMT_IMAGE],["polygon",j.DIMT_POLYGON],["line",j.DIMT_LINE],["group",j.DIMT_GROUP]]).get(this._mediaType)}get styleSelector(){switch(C(this,X,"f")){case V.DIS_DEFAULT:return"default";case V.DIS_SELECTED:return"selected"}}set drawingStyleId(t){this.styleId=t}get drawingStyleId(){return this.styleId}set coordinateBase(t){if(!["view","image"].includes(t))throw new Error("Invalid 'coordinateBase'.");this._drawingLayer&&("image"===C(this,z,"f")&&"view"===t?this.updateCoordinateBaseFromImageToView():"view"===C(this,z,"f")&&"image"===t&&this.updateCoordinateBaseFromViewToImage()),S(this,z,t,"f")}get coordinateBase(){return C(this,z,"f")}get drawingLayerId(){return this._drawingLayerId}constructor(t,e){if(H.add(this),X.set(this,void 0),z.set(this,"image"),this._zIndex=null,this._drawingLayer=null,this._drawingLayerId=null,this._mapState_StyleId=new Map,this.mapEvent_Callbacks=new Map([["selected",new Map],["deselected",new Map],["mousedown",new Map],["mouseup",new Map],["dblclick",new Map],["mouseover",new Map],["mouseout",new Map]]),this.mapNoteName_Content=new Map([]),this.isDrawingItem=!0,null!=e&&!G(e))throw new TypeError("Invalid 'drawingStyleId'.");t&&this._setFabricObject(t),this.setState(V.DIS_DEFAULT),this.styleId=e}_setFabricObject(t){this._fabricObject=t,this._fabricObject.on("selected",(()=>{this.setState(V.DIS_SELECTED)})),this._fabricObject.on("deselected",(()=>{this._fabricObject.canvas&&this._fabricObject.canvas.getActiveObjects().includes(this._fabricObject)?this.setState(V.DIS_SELECTED):this.setState(V.DIS_DEFAULT),"textbox"===this._fabricObject.type&&(this._fabricObject.isEditing&&this._fabricObject.exitEditing(),this._fabricObject.selected=!1)})),t.getDrawingItem=()=>this}_getFabricObject(){return this._fabricObject}setState(t){S(this,X,t,"f")}getState(){return C(this,X,"f")}_on(t,e){if(!e)return;const i=t.toLowerCase(),r=this.mapEvent_Callbacks.get(i);if(!r)throw new Error(`Event '${t}' does not exist.`);let n=r.get(e);n||(n=t=>{const i=t.e;if(!i)return void(e&&e.apply(this,[{targetItem:this,itemClientX:null,itemClientY:null,itemPageX:null,itemPageY:null}]));const r={targetItem:this,itemClientX:null,itemClientY:null,itemPageX:null,itemPageY:null};if(this._drawingLayer){let t,e,n,s;const o=i.target.getBoundingClientRect();t=o.left,e=o.top,n=t+window.scrollX,s=e+window.scrollY;const{width:a,height:h}=this._drawingLayer.fabricCanvas.lowerCanvasEl.getBoundingClientRect(),l=this._drawingLayer.width,c=this._drawingLayer.height,u=a/h,d=l/c,f=this._drawingLayer._getObjectFit();let g,m,p,v,y=1;if("contain"===f)u0?i-1:r,ot),actionName:"modifyPolygon",pointIndex:i}),t}),{}),S(this,Q,JSON.parse(JSON.stringify(t)),"f"),this._mediaType="polygon"}extendSet(t,e){if("vertices"===t){const t=this._fabricObject;if(t.group){const i=t.group;t.points=e.map((t=>({x:t.x-i.left-i.width/2,y:t.y-i.top-i.height/2}))),i.addWithUpdate()}else t.points=e;const i=t.points.length-1;return t.controls=t.points.reduce((function(t,e,r){return t["p"+r]=new U.Control({positionHandler:nt,actionHandler:at(r>0?r-1:i,ot),actionName:"modifyPolygon",pointIndex:r}),t}),{}),t._setPositionDimensions({}),!0}}extendGet(t){if("vertices"===t){const t=[],e=this._fabricObject;if(e.selectable&&!e.group)for(let i in e.oCoords)t.push({x:e.oCoords[i].x,y:e.oCoords[i].y});else for(let i of e.points){let r=i.x-e.pathOffset.x,n=i.y-e.pathOffset.y;const s=U.util.transformPoint({x:r,y:n},e.calcTransformMatrix());t.push({x:s.x,y:s.y})}return t}}updateCoordinateBaseFromImageToView(){const t=this.get("vertices").map((t=>({x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)})));this.set("vertices",t)}updateCoordinateBaseFromViewToImage(){const t=this.get("vertices").map((t=>({x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)})));this.set("vertices",t)}setPosition(t){this.setPolygon(t)}getPosition(){return this.getPolygon()}updatePosition(){C(this,Q,"f")&&this.setPolygon(C(this,Q,"f"))}setPolygon(t){if(!n(t))throw new TypeError("Invalid 'polygon'.");if(this._drawingLayer){if("view"===this.coordinateBase){const e=t.points.map((t=>({x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)})));this.set("vertices",e)}else{if("image"!==this.coordinateBase)throw new Error("Invalid 'coordinateBase'.");this.set("vertices",t.points)}this._drawingLayer.renderAll()}else S(this,Q,JSON.parse(JSON.stringify(t)),"f")}getPolygon(){if(this._drawingLayer){if("view"===this.coordinateBase){return{points:this.get("vertices").map((t=>({x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)})))}}if("image"===this.coordinateBase)return{points:this.get("vertices")};throw new Error("Invalid 'coordinateBase'.")}return C(this,Q,"f")?JSON.parse(JSON.stringify(C(this,Q,"f"))):null}}Q=new WeakMap;class lt extends it{set maintainAspectRatio(t){t&&this.set("scaleY",this.get("scaleX"))}get maintainAspectRatio(){return C(this,tt,"f")}constructor(t,e,i,n){if(super(null,n),$.set(this,void 0),tt.set(this,void 0),!r(e))throw new TypeError("Invalid 'rect'.");if(t instanceof HTMLImageElement||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement)this._setFabricObject(new U.Image(t,{left:e.x,top:e.y}));else{if(!s(t))throw new TypeError("Invalid 'image'.");{const i=document.createElement("canvas");let r;i.width=t.width,i.height=t.height;if(t.format===o.IPF_GRAYSCALED){r=new Uint8ClampedArray(t.width*t.height*4);for(let e=0;e{let e=(t=>t.split("\n").map((t=>t.split("\t"))))(t);return(t=>{for(let e=0;;e++){let i=-1;for(let r=0;ri&&(i=n.length))}if(-1===i)break;for(let r=0;r=t[r].length-1)continue;let n=" ".repeat(i+2-t[r][e].length);t[r][e]=t[r][e].concat(n)}}})(e),(t=>{let e="";for(let i=0;i({x:e.x-t.left-t.width/2,y:e.y-t.top-t.height/2}))),t.addWithUpdate()}else i.points=e;const r=i.points.length-1;return i.controls=i.points.reduce((function(t,e,i){return t["p"+i]=new U.Control({positionHandler:nt,actionHandler:at(i>0?i-1:r,ot),actionName:"modifyPolygon",pointIndex:i}),t}),{}),i._setPositionDimensions({}),!0}}extendGet(t){if("startPoint"===t||"endPoint"===t){const e=[],i=this._fabricObject;if(i.selectable&&!i.group)for(let t in i.oCoords)e.push({x:i.oCoords[t].x,y:i.oCoords[t].y});else for(let t of i.points){let r=t.x-i.pathOffset.x,n=t.y-i.pathOffset.y;const s=U.util.transformPoint({x:r,y:n},i.calcTransformMatrix());e.push({x:s.x,y:s.y})}return"startPoint"===t?e[0]:e[1]}}updateCoordinateBaseFromImageToView(){const t=this.get("startPoint"),e=this.get("endPoint");this.set("startPoint",{x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)}),this.set("endPoint",{x:this.convertPropFromViewToImage(e.x),y:this.convertPropFromViewToImage(e.y)})}updateCoordinateBaseFromViewToImage(){const t=this.get("startPoint"),e=this.get("endPoint");this.set("startPoint",{x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)}),this.set("endPoint",{x:this.convertPropFromImageToView(e.x),y:this.convertPropFromImageToView(e.y)})}setPosition(t){this.setLine(t)}getPosition(){return this.getLine()}updatePosition(){C(this,dt,"f")&&this.setLine(C(this,dt,"f"))}setPolygon(){}getPolygon(){return null}setLine(t){if(!a(t))throw new TypeError("Invalid 'line'.");if(this._drawingLayer){if("view"===this.coordinateBase)this.set("startPoint",{x:this.convertPropFromViewToImage(t.startPoint.x),y:this.convertPropFromViewToImage(t.startPoint.y)}),this.set("endPoint",{x:this.convertPropFromViewToImage(t.endPoint.x),y:this.convertPropFromViewToImage(t.endPoint.y)});else{if("image"!==this.coordinateBase)throw new Error("Invalid 'coordinateBase'.");this.set("startPoint",t.startPoint),this.set("endPoint",t.endPoint)}this._drawingLayer.renderAll()}else S(this,dt,JSON.parse(JSON.stringify(t)),"f")}getLine(){if(this._drawingLayer){if("view"===this.coordinateBase)return{startPoint:{x:this.convertPropFromImageToView(this.get("startPoint").x),y:this.convertPropFromImageToView(this.get("startPoint").y)},endPoint:{x:this.convertPropFromImageToView(this.get("endPoint").x),y:this.convertPropFromImageToView(this.get("endPoint").y)}};if("image"===this.coordinateBase)return{startPoint:this.get("startPoint"),endPoint:this.get("endPoint")};throw new Error("Invalid 'coordinateBase'.")}return C(this,dt,"f")?JSON.parse(JSON.stringify(C(this,dt,"f"))):null}}dt=new WeakMap;class mt extends ht{constructor(t,e){if(super({points:null==t?void 0:t.points},e),ft.set(this,void 0),!h(t))throw new TypeError("Invalid 'quad'.");S(this,ft,JSON.parse(JSON.stringify(t)),"f"),this._mediaType="quad"}setPosition(t){this.setQuad(t)}getPosition(){return this.getQuad()}updatePosition(){C(this,ft,"f")&&this.setQuad(C(this,ft,"f"))}setPolygon(){}getPolygon(){return null}setQuad(t){if(!h(t))throw new TypeError("Invalid 'quad'.");if(this._drawingLayer){if("view"===this.coordinateBase){const e=t.points.map((t=>({x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)})));this.set("vertices",e)}else{if("image"!==this.coordinateBase)throw new Error("Invalid 'coordinateBase'.");this.set("vertices",t.points)}this._drawingLayer.renderAll()}else S(this,ft,JSON.parse(JSON.stringify(t)),"f")}getQuad(){if(this._drawingLayer){if("view"===this.coordinateBase){return{points:this.get("vertices").map((t=>({x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)})))}}if("image"===this.coordinateBase)return{points:this.get("vertices")};throw new Error("Invalid 'coordinateBase'.")}return C(this,ft,"f")?JSON.parse(JSON.stringify(C(this,ft,"f"))):null}}ft=new WeakMap;class pt extends it{constructor(t){super(new U.Group(t.map((t=>t._getFabricObject())))),this._fabricObject.on("selected",(()=>{this.setState(V.DIS_SELECTED);const t=this._fabricObject._objects;for(let e of t)setTimeout((()=>{e&&e.fire("selected")}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)})),this._fabricObject.on("deselected",(()=>{this.setState(V.DIS_DEFAULT);const t=this._fabricObject._objects;for(let e of t)setTimeout((()=>{e&&e.fire("deselected")}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)})),this._mediaType="group"}extendSet(t,e){return!1}extendGet(t){}updateCoordinateBaseFromImageToView(){}updateCoordinateBaseFromViewToImage(){}setPosition(){}getPosition(){}updatePosition(){}getChildDrawingItems(){return this._fabricObject._objects.map((t=>t.getDrawingItem()))}setChildDrawingItems(t){if(!t||!t.isDrawingItem)throw TypeError("Illegal drawing item.");this._drawingLayer?this._drawingLayer._updateGroupItem(this,t,"add"):this._fabricObject.addWithUpdate(t._getFabricObject())}removeChildItem(t){t&&t.isDrawingItem&&(this._drawingLayer?this._drawingLayer._updateGroupItem(this,t,"remove"):this._fabricObject.removeWithUpdate(t._getFabricObject()))}}const vt=t=>null!==t&&"object"==typeof t&&!Array.isArray(t),yt=t=>!!Y(t)&&""!==t,_t=t=>!!vt(t)&&(!("id"in t&&!G(t.id))&&(!("lineWidth"in t&&!G(t.lineWidth))&&(!("fillStyle"in t&&!yt(t.fillStyle))&&(!("strokeStyle"in t&&!yt(t.strokeStyle))&&(!("paintMode"in t&&!["fill","stroke","strokeAndFill"].includes(t.paintMode))&&(!("fontFamily"in t&&!yt(t.fontFamily))&&!("fontSize"in t&&!G(t.fontSize))))))));class wt{static convert(t,e,i){const n={x:0,y:0,width:e,height:i};if(!t)return n;if(r(t))t.isMeasuredInPercentage?(n.x=t.x/100*e,n.y=t.y/100*i,n.width=t.width/100*e,n.height=t.height/100*i):(n.x=t.x,n.y=t.y,n.width=t.width,n.height=t.height);else{if(!c(t))throw TypeError("Invalid region.");t.isMeasuredInPercentage?(n.x=t.left/100*e,n.y=t.top/100*i,n.width=(t.right-t.left)/100*e,n.height=(t.bottom-t.top)/100*i):(n.x=t.left,n.y=t.top,n.width=t.right-t.left,n.height=t.bottom-t.top)}return n.x=Math.round(n.x),n.y=Math.round(n.y),n.width=Math.round(n.width),n.height=Math.round(n.height),n}}var bt,xt;class Ct{constructor(){bt.set(this,new Map),xt.set(this,!1)}get disposed(){return C(this,xt,"f")}on(t,e){t=t.toLowerCase();const i=C(this,bt,"f").get(t);if(i){if(i.includes(e))return;i.push(e)}else C(this,bt,"f").set(t,[e])}off(t,e){t=t.toLowerCase();const i=C(this,bt,"f").get(t);if(!i)return;const r=i.indexOf(e);-1!==r&&i.splice(r,1)}offAll(t){t=t.toLowerCase();const e=C(this,bt,"f").get(t);e&&(e.length=0)}fire(t,e=[],i={async:!1,copy:!0}){e||(e=[]),t=t.toLowerCase();const r=C(this,bt,"f").get(t);if(r&&r.length){i=Object.assign({async:!1,copy:!0},i);for(let t of r){if(!t)continue;let n=[];if(i.copy)for(let t of e){try{t=JSON.parse(JSON.stringify(t))}catch(t){}n.push(t)}else n=e;let s=!1;if(i.async)setTimeout((()=>{this.disposed||r.includes(t)&&t.apply(i.target,n)}),0);else try{s=t.apply(i.target,n)}catch(t){}if(!0===s)break}}}dispose(){S(this,xt,!0,"f")}}function St(t,e,i){return(i.x-t.x)*(e.y-t.y)==(e.x-t.x)*(i.y-t.y)&&Math.min(t.x,e.x)<=i.x&&i.x<=Math.max(t.x,e.x)&&Math.min(t.y,e.y)<=i.y&&i.y<=Math.max(t.y,e.y)}function Tt(t){return Math.abs(t)<1e-6?0:t<0?-1:1}function Et(t,e,i,r){let n=t[0]*(i[1]-e[1])+e[0]*(t[1]-i[1])+i[0]*(e[1]-t[1]),s=t[0]*(r[1]-e[1])+e[0]*(t[1]-r[1])+r[0]*(e[1]-t[1]);return!((n^s)>=0&&0!==n&&0!==s)&&(n=i[0]*(t[1]-r[1])+r[0]*(i[1]-t[1])+t[0]*(r[1]-i[1]),s=i[0]*(e[1]-r[1])+r[0]*(i[1]-e[1])+e[0]*(r[1]-i[1]),!((n^s)>=0&&0!==n&&0!==s))}bt=new WeakMap,xt=new WeakMap;const Ot=async t=>{if("string"!=typeof t)throw new TypeError("Invalid url.");const e=await fetch(t);if(!e.ok)throw Error("Network Error: "+e.statusText);const i=await e.text();if(!i.trim().startsWith("<"))throw Error("Unable to get valid HTMLElement.");const r=document.createElement("div");if(r.insertAdjacentHTML("beforeend",i),1===r.childElementCount&&r.firstChild instanceof HTMLTemplateElement)return r.firstChild.content;const n=new DocumentFragment;for(let t of r.children)n.append(t);return n};var At,It,Lt,Dt,Mt,Ft,Pt,kt,Rt,Bt,jt,Vt,Wt,Nt,Ut,Gt,Yt,Ht,Xt,zt,qt,Kt,Zt,Jt,Qt,$t,te,ee,ie,re,ne,se,oe,ae;class he{static createDrawingStyle(t){if(!_t(t))throw new Error("Invalid style definition.");let e,i=he.USER_START_STYLE_ID;for(;C(he,At,"f",It).has(i);)i++;e=i;const r=JSON.parse(JSON.stringify(t));r.id=e;for(let t in C(he,At,"f",Lt))r.hasOwnProperty(t)||(r[t]=C(he,At,"f",Lt)[t]);return C(he,At,"f",It).set(e,r),r.id}static _getDrawingStyle(t,e){if("number"!=typeof t)throw new Error("Invalid style id.");const i=C(he,At,"f",It).get(t);return i?e?JSON.parse(JSON.stringify(i)):i:null}static getDrawingStyle(t){return this._getDrawingStyle(t,!0)}static getAllDrawingStyles(){return JSON.parse(JSON.stringify(Array.from(C(he,At,"f",It).values())))}static _updateDrawingStyle(t,e){if(!_t(e))throw new Error("Invalid style definition.");const i=C(he,At,"f",It).get(t);if(i)for(let t in e)i.hasOwnProperty(t)&&(i[t]=e[t])}static updateDrawingStyle(t,e){this._updateDrawingStyle(t,e)}}At=he,he.STYLE_BLUE_STROKE=1,he.STYLE_GREEN_STROKE=2,he.STYLE_ORANGE_STROKE=3,he.STYLE_YELLOW_STROKE=4,he.STYLE_BLUE_STROKE_FILL=5,he.STYLE_GREEN_STROKE_FILL=6,he.STYLE_ORANGE_STROKE_FILL=7,he.STYLE_YELLOW_STROKE_FILL=8,he.STYLE_BLUE_STROKE_TRANSPARENT=9,he.STYLE_GREEN_STROKE_TRANSPARENT=10,he.STYLE_ORANGE_STROKE_TRANSPARENT=11,he.USER_START_STYLE_ID=1024,It={value:new Map([[he.STYLE_BLUE_STROKE,{id:he.STYLE_BLUE_STROKE,lineWidth:4,fillStyle:"rgba(73, 173, 245, 0.3)",strokeStyle:"rgba(73, 173, 245, 1)",paintMode:"stroke",fontFamily:"consolas",fontSize:40}],[he.STYLE_GREEN_STROKE,{id:he.STYLE_GREEN_STROKE,lineWidth:2,fillStyle:"rgba(73, 245, 73, 0.3)",strokeStyle:"rgba(73, 245, 73, 0.9)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[he.STYLE_ORANGE_STROKE,{id:he.STYLE_ORANGE_STROKE,lineWidth:2,fillStyle:"rgba(254, 180, 32, 0.3)",strokeStyle:"rgba(254, 180, 32, 0.9)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[he.STYLE_YELLOW_STROKE,{id:he.STYLE_YELLOW_STROKE,lineWidth:2,fillStyle:"rgba(245, 236, 73, 0.3)",strokeStyle:"rgba(245, 236, 73, 1)",paintMode:"stroke",fontFamily:"consolas",fontSize:40}],[he.STYLE_BLUE_STROKE_FILL,{id:he.STYLE_BLUE_STROKE_FILL,lineWidth:4,fillStyle:"rgba(73, 173, 245, 0.3)",strokeStyle:"rgba(73, 173, 245, 1)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[he.STYLE_GREEN_STROKE_FILL,{id:he.STYLE_GREEN_STROKE_FILL,lineWidth:2,fillStyle:"rgba(73, 245, 73, 0.3)",strokeStyle:"rgba(73, 245, 73, 0.9)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[he.STYLE_ORANGE_STROKE_FILL,{id:he.STYLE_ORANGE_STROKE_FILL,lineWidth:2,fillStyle:"rgba(254, 180, 32, 0.3)",strokeStyle:"rgba(254, 180, 32, 1)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[he.STYLE_YELLOW_STROKE_FILL,{id:he.STYLE_YELLOW_STROKE_FILL,lineWidth:2,fillStyle:"rgba(245, 236, 73, 0.3)",strokeStyle:"rgba(245, 236, 73, 1)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[he.STYLE_BLUE_STROKE_TRANSPARENT,{id:he.STYLE_BLUE_STROKE_TRANSPARENT,lineWidth:4,fillStyle:"rgba(73, 173, 245, 0.2)",strokeStyle:"transparent",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[he.STYLE_GREEN_STROKE_TRANSPARENT,{id:he.STYLE_GREEN_STROKE_TRANSPARENT,lineWidth:2,fillStyle:"rgba(73, 245, 73, 0.2)",strokeStyle:"transparent",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[he.STYLE_ORANGE_STROKE_TRANSPARENT,{id:he.STYLE_ORANGE_STROKE_TRANSPARENT,lineWidth:2,fillStyle:"rgba(254, 180, 32, 0.2)",strokeStyle:"transparent",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}]])},Lt={value:{lineWidth:2,fillStyle:"rgba(245, 236, 73, 0.3)",strokeStyle:"rgba(245, 236, 73, 1)",paintMode:"stroke",fontFamily:"consolas",fontSize:40}},"undefined"!=typeof document&&"undefined"!=typeof window&&(U.StaticCanvas.prototype.dispose=function(){return this.isRendering&&(U.util.cancelAnimFrame(this.isRendering),this.isRendering=0),this.forEachObject((function(t){t.dispose&&t.dispose()})),this._objects=[],this.backgroundImage&&this.backgroundImage.dispose&&this.backgroundImage.dispose(),this.backgroundImage=null,this.overlayImage&&this.overlayImage.dispose&&this.overlayImage.dispose(),this.overlayImage=null,this._iTextInstances=null,this.contextContainer=null,this.lowerCanvasEl.classList.remove("lower-canvas"),delete this._originalCanvasStyle,this.lowerCanvasEl.setAttribute("width",this.width),this.lowerCanvasEl.setAttribute("height",this.height),U.util.cleanUpJsdomNode(this.lowerCanvasEl),this.lowerCanvasEl=void 0,this},U.Object.prototype.transparentCorners=!1,U.Object.prototype.cornerSize=20,U.Object.prototype.touchCornerSize=100,U.Object.prototype.cornerColor="rgb(254,142,20)",U.Object.prototype.cornerStyle="circle",U.Object.prototype.strokeUniform=!0,U.Object.prototype.hasBorders=!1,U.Canvas.prototype.containerClass="",U.Canvas.prototype.getPointer=function(t,e){if(this._absolutePointer&&!e)return this._absolutePointer;if(this._pointer&&e)return this._pointer;var i,r=this.upperCanvasEl,n=U.util.getPointer(t,r),s=r.getBoundingClientRect(),o=s.width||0,a=s.height||0;o&&a||("top"in s&&"bottom"in s&&(a=Math.abs(s.top-s.bottom)),"right"in s&&"left"in s&&(o=Math.abs(s.right-s.left))),this.calcOffset(),n.x=n.x-this._offset.left,n.y=n.y-this._offset.top,e||(n=this.restorePointerVpt(n));var h=this.getRetinaScaling();if(1!==h&&(n.x/=h,n.y/=h),0!==o&&0!==a){var l=window.getComputedStyle(r).objectFit,c=r.width,u=r.height,d=o,f=a;i={width:c/d,height:u/f};var g,m,p=c/u,v=d/f;return"contain"===l?p>v?(g=d,m=d/p,{x:n.x*i.width,y:(n.y-(f-m)/2)*i.width}):(g=f*p,m=f,{x:(n.x-(d-g)/2)*i.height,y:n.y*i.height}):"cover"===l?p>v?{x:(c-i.height*d)/2+n.x*i.height,y:n.y*i.height}:{x:n.x*i.width,y:(u-i.width*f)/2+n.y*i.width}:{x:n.x*i.width,y:n.y*i.height}}return i={width:1,height:1},{x:n.x*i.width,y:n.y*i.height}},U.Canvas.prototype._onTouchStart=function(t){var e=this.findTarget(t);!this.allowTouchScrolling&&t.cancelable&&t.preventDefault&&t.preventDefault(),e&&t.cancelable&&t.preventDefault&&t.preventDefault(),null===this.mainTouchId&&(this.mainTouchId=this.getPointerId(t)),this.__onMouseDown(t),this._resetTransformEventData();var i=this.upperCanvasEl,r=this._getEventPrefix();U.util.addListener(U.document,"touchend",this._onTouchEnd,{passive:!1}),U.util.addListener(U.document,"touchmove",this._onMouseMove,{passive:!1}),U.util.removeListener(i,r+"down",this._onMouseDown)},U.Textbox.prototype._wrapLine=function(t,e,i,r){const n=t.match(/[\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff\uff66-\uff9f]/g),s=!(!n||!n.length);var o=0,a=this.splitByGrapheme||s,h=[],l=[],c=a?U.util.string.graphemeSplit(t):t.split(this._wordJoiners),u="",d=0,f=a?"":" ",g=0,m=0,p=0,v=!0,y=this._getWidthOfCharSpacing();r=r||0;0===c.length&&c.push([]),i-=r;for(var _=0;_i&&!v?(h.push(l),l=[],o=g,v=!0):o+=y,v||a||l.push(f),l=l.concat(u),m=a?0:this._measureWord([f],e,d),d++,v=!1,g>p&&(p=g);return _&&h.push(l),p+r>this.dynamicMinWidth&&(this.dynamicMinWidth=p-y+r),h});class le{get width(){return this.fabricCanvas.width}get height(){return this.fabricCanvas.height}set _allowMultiSelect(t){this.fabricCanvas.selection=t,this.fabricCanvas.renderAll()}get _allowMultiSelect(){return this.fabricCanvas.selection}constructor(t,e,i){if(this.mapType_StateAndStyleId=new Map,this.mode="viewer",this.onSelectionChanged=null,this._arrDrwaingItem=[],this._arrFabricObject=[],this._visible=!0,t.hasOwnProperty("getFabricCanvas"))this.fabricCanvas=t.getFabricCanvas();else{let e=this.fabricCanvas=new U.Canvas(t,Object.assign(i,{allowTouchScrolling:!0,selection:!1}));e.setDimensions({width:"100%",height:"100%"},{cssOnly:!0}),e.lowerCanvasEl.className="",e.upperCanvasEl.className="",e.on("selection:created",(function(t){const e=t.selected,i=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!i.includes(e)&&i.push(e)}for(let t of i){const i=[];for(let r of e){const e=r.getDrawingItem();e._drawingLayer===t&&i.push(e)}setTimeout((()=>{t.onSelectionChanged&&t.onSelectionChanged(i,[])}),0)}})),e.on("before:selection:cleared",(function(t){const e=this.getActiveObjects(),i=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!i.includes(e)&&i.push(e)}for(let t of i){const i=[];for(let r of e){const e=r.getDrawingItem();e._drawingLayer===t&&i.push(e)}setTimeout((()=>{const e=[];for(let r of i)t.hasDrawingItem(r)&&e.push(r);e.length>0&&t.onSelectionChanged&&t.onSelectionChanged([],e)}),0)}})),e.on("selection:updated",(function(t){const e=t.selected,i=t.deselected,r=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!r.includes(e)&&r.push(e)}for(let t of i){const e=t.getDrawingItem()._drawingLayer;e&&!r.includes(e)&&r.push(e)}for(let t of r){const r=[],n=[];for(let i of e){const e=i.getDrawingItem();e._drawingLayer===t&&r.push(e)}for(let e of i){const i=e.getDrawingItem();i._drawingLayer===t&&n.push(i)}setTimeout((()=>{t.onSelectionChanged&&t.onSelectionChanged(r,n)}),0)}})),e.wrapperEl.style.position="absolute",t.getFabricCanvas=()=>this.fabricCanvas}let r,n;switch(this.id=e,e){case le.DDN_LAYER_ID:r=he.getDrawingStyle(he.STYLE_BLUE_STROKE),n=he.getDrawingStyle(he.STYLE_BLUE_STROKE_FILL);break;case le.DBR_LAYER_ID:r=he.getDrawingStyle(he.STYLE_ORANGE_STROKE),n=he.getDrawingStyle(he.STYLE_ORANGE_STROKE_FILL);break;case le.DLR_LAYER_ID:r=he.getDrawingStyle(he.STYLE_GREEN_STROKE),n=he.getDrawingStyle(he.STYLE_GREEN_STROKE_FILL);break;default:r=he.getDrawingStyle(he.STYLE_YELLOW_STROKE),n=he.getDrawingStyle(he.STYLE_YELLOW_STROKE_FILL)}for(let t of it.arrMediaTypes)this.mapType_StateAndStyleId.set(t,{default:r.id,selected:n.id})}getId(){return this.id}setVisible(t){if(t){for(let t of this._arrFabricObject)t.visible=!0,t.hasControls=!0;this._visible=!0}else{for(let t of this._arrFabricObject)t.visible=!1,t.hasControls=!1;this._visible=!1}this.fabricCanvas.renderAll()}isVisible(){return this._visible}_getItemCurrentStyle(t){if(t.styleId)return he.getDrawingStyle(t.styleId);const e=he.getDrawingStyle(t._mapState_StyleId.get(t.styleSelector));return e||null}_changeMediaTypeCurStyleInStyleSelector(t,e,i,r){const n=this.getDrawingItems((e=>e._mediaType===t));for(let t of n)t.styleSelector===e&&this._changeItemStyle(t,i,!0);r||this.fabricCanvas.renderAll()}_changeItemStyle(t,e,i){if(!t||!e)return;const r=t._getFabricObject();"number"==typeof t.styleId&&(e=he.getDrawingStyle(t.styleId)),r.strokeWidth=e.lineWidth,"fill"===e.paintMode?(r.fill=e.fillStyle,r.stroke=e.fillStyle):"stroke"===e.paintMode?(r.fill="transparent",r.stroke=e.strokeStyle):"strokeAndFill"===e.paintMode&&(r.fill=e.fillStyle,r.stroke=e.strokeStyle),r.fontFamily&&(r.fontFamily=e.fontFamily),r.fontSize&&(r.fontSize=e.fontSize),r.group||(r.dirty=!0),i||this.fabricCanvas.renderAll()}_updateGroupItem(t,e,i){if(!t||!e)return;const r=t.getChildDrawingItems();if("add"===i){if(r.includes(e))return;const i=e._getFabricObject();if(this.fabricCanvas.getObjects().includes(i)){if(!this._arrFabricObject.includes(i))throw new Error("Existed in other drawing layers.");e._zIndex=null}else{let i;if(e.styleId)i=he.getDrawingStyle(e.styleId);else{const r=this.mapType_StateAndStyleId.get(e._mediaType);i=he.getDrawingStyle(r[t.styleSelector]);const n=()=>{this._changeItemStyle(e,he.getDrawingStyle(this.mapType_StateAndStyleId.get(e._mediaType).selected),!0)},s=()=>{this._changeItemStyle(e,he.getDrawingStyle(this.mapType_StateAndStyleId.get(e._mediaType).default),!0)};e._on("selected",n),e._on("deselected",s),e._funcChangeStyleToSelected=n,e._funcChangeStyleToDefault=s}e._drawingLayer=this,e._drawingLayerId=this.id,this._changeItemStyle(e,i,!0)}t._fabricObject.addWithUpdate(e._getFabricObject())}else{if("remove"!==i)return;if(!r.includes(e))return;e._zIndex=null,e._drawingLayer=null,e._drawingLayerId=null,e._off("selected",e._funcChangeStyleToSelected),e._off("deselected",e._funcChangeStyleToDefault),e._funcChangeStyleToSelected=null,e._funcChangeStyleToDefault=null,t._fabricObject.removeWithUpdate(e._getFabricObject())}this.fabricCanvas.renderAll()}_addDrawingItem(t,e){if(!(t instanceof it))throw new TypeError("Invalid 'drawingItem'.");if(t._drawingLayer){if(t._drawingLayer==this)return;throw new Error("This drawing item has existed in other layer.")}let i=t._getFabricObject();const r=this.fabricCanvas.getObjects();let n,s;if(r.includes(i)){if(this._arrFabricObject.includes(i))return;throw new Error("Existed in other drawing layers.")}if("group"===t._mediaType){n=t.getChildDrawingItems();for(let t of n)if(t._drawingLayer&&t._drawingLayer!==this)throw new Error("The childItems of DT_Group have existed in other drawing layers.")}if(e&&"object"==typeof e&&!Array.isArray(e))for(let t in e)i.set(t,e[t]);if(n){for(let t of n){const e=this.mapType_StateAndStyleId.get(t._mediaType);for(let i of it.arrStyleSelectors)t._mapState_StyleId.set(i,e[i]);if(t.styleId)s=he.getDrawingStyle(t.styleId);else{s=he.getDrawingStyle(e.default);const i=()=>{this._changeItemStyle(t,he.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).selected),!0)},r=()=>{this._changeItemStyle(t,he.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).default),!0)};t._on("selected",i),t._on("deselected",r),t._funcChangeStyleToSelected=i,t._funcChangeStyleToDefault=r}t._drawingLayer=this,t._drawingLayerId=this.id,this._changeItemStyle(t,s,!0)}i.dirty=!0,this.fabricCanvas.renderAll()}else{const e=this.mapType_StateAndStyleId.get(t._mediaType);for(let i of it.arrStyleSelectors)t._mapState_StyleId.set(i,e[i]);if(t.styleId)s=he.getDrawingStyle(t.styleId);else{s=he.getDrawingStyle(e.default);const i=()=>{this._changeItemStyle(t,he.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).selected))},r=()=>{this._changeItemStyle(t,he.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).default))};t._on("selected",i),t._on("deselected",r),t._funcChangeStyleToSelected=i,t._funcChangeStyleToDefault=r}this._changeItemStyle(t,s)}t._zIndex=this.id,t._drawingLayer=this,t._drawingLayerId=this.id;const o=this._arrFabricObject.length;let a=r.length;if(o)a=r.indexOf(this._arrFabricObject[o-1])+1;else for(let e=0;et.toLowerCase())):e=it.arrMediaTypes,i?i.forEach((t=>t.toLowerCase())):i=it.arrStyleSelectors;const r=he.getDrawingStyle(t);if(!r)throw new Error(`The 'drawingStyle' with id '${t}' doesn't exist.`);let n;for(let s of e)if(n=this.mapType_StateAndStyleId.get(s),n)for(let e of i){this._changeMediaTypeCurStyleInStyleSelector(s,e,r,!0),n[e]=t;for(let i of this._arrDrwaingItem)i._mediaType===s&&i._mapState_StyleId.set(e,t)}this.fabricCanvas.renderAll()}setDefaultStyle(t,e,i){const r=[];i&j.DIMT_RECTANGLE&&r.push("rect"),i&j.DIMT_QUADRILATERAL&&r.push("quad"),i&j.DIMT_TEXT&&r.push("text"),i&j.DIMT_ARC&&r.push("arc"),i&j.DIMT_IMAGE&&r.push("image"),i&j.DIMT_POLYGON&&r.push("polygon"),i&j.DIMT_LINE&&r.push("line");const n=[];e&V.DIS_DEFAULT&&n.push("default"),e&V.DIS_SELECTED&&n.push("selected"),this._setDefaultStyle(t,r.length?r:null,n.length?n:null)}setMode(t){if("viewer"===(t=t.toLowerCase())){for(let t of this._arrDrwaingItem)t._setEditable(!1);this.fabricCanvas.discardActiveObject(),this.fabricCanvas.renderAll(),this.mode="viewer"}else{if("editor"!==t)throw new RangeError("Invalid value.");for(let t of this._arrDrwaingItem)t._setEditable(!0);this.mode="editor"}this._manager._switchPointerEvent()}getMode(){return this.mode}_setDimensions(t,e){this.fabricCanvas.setDimensions(t,e)}_setObjectFit(t){if(t=t.toLowerCase(),!["contain","cover"].includes(t))throw new Error(`Unsupported value '${t}'.`);this.fabricCanvas.lowerCanvasEl.style.objectFit=t,this.fabricCanvas.upperCanvasEl.style.objectFit=t}_getObjectFit(){return this.fabricCanvas.lowerCanvasEl.style.objectFit}renderAll(){for(let t of this._arrDrwaingItem){const e=this._getItemCurrentStyle(t);this._changeItemStyle(t,e,!0)}this.fabricCanvas.renderAll()}dispose(){this.clearDrawingItems(),1===this._manager._arrDrawingLayer.length&&(this.fabricCanvas.wrapperEl.style.pointerEvents="none",this.fabricCanvas.dispose(),this._arrDrwaingItem.length=0,this._arrFabricObject.length=0)}}le.DDN_LAYER_ID=1,le.DBR_LAYER_ID=2,le.DLR_LAYER_ID=3,le.USER_DEFINED_LAYER_BASE_ID=100,le.TIP_LAYER_ID=999;class ce{constructor(){this._arrDrawingLayer=[]}createDrawingLayer(t,e){if(this.getDrawingLayer(e))throw new Error("Existed drawing layer id.");const i=new le(t,e,{enableRetinaScaling:!1});return i._manager=this,this._arrDrawingLayer.push(i),this._switchPointerEvent(),i}deleteDrawingLayer(t){const e=this.getDrawingLayer(t);if(!e)return;const i=this._arrDrawingLayer;e.dispose(),i.splice(i.indexOf(e),1),this._switchPointerEvent()}clearDrawingLayers(){for(let t of this._arrDrawingLayer)t.dispose();this._arrDrawingLayer.length=0}getDrawingLayer(t){for(let e of this._arrDrawingLayer)if(e.getId()===t)return e;return null}getAllDrawingLayers(){return Array.from(this._arrDrawingLayer)}getSelectedDrawingItems(){if(!this._arrDrawingLayer.length)return;const t=this._getFabricCanvas().getActiveObjects(),e=[];for(let i of t)e.push(i.getDrawingItem());return e}setDimensions(t,e){this._arrDrawingLayer.length&&this._arrDrawingLayer[0]._setDimensions(t,e)}setObjectFit(t){for(let e of this._arrDrawingLayer)e&&e._setObjectFit(t)}getObjectFit(){return this._arrDrawingLayer.length?this._arrDrawingLayer[0]._getObjectFit():null}setVisible(t){if(!this._arrDrawingLayer.length)return;const e=this._getFabricCanvas();e.wrapperEl.style.display=t?"block":"none"}_getFabricCanvas(){return this._arrDrawingLayer.length?this._arrDrawingLayer[0].fabricCanvas:null}_switchPointerEvent(){if(this._arrDrawingLayer.length)for(let t of this._arrDrawingLayer)t.getMode()}}class ue extends ut{constructor(t,e,i,r,n){super(t,{x:e,y:i,width:r,height:0},n),Dt.set(this,void 0),Mt.set(this,void 0),this._fabricObject.paddingTop=15,this._fabricObject.calcTextHeight=function(){for(var t=0,e=0,i=this._textLines.length;e=0&&S(this,Mt,setTimeout((()=>{this.set("visible",!1),this._drawingLayer&&this._drawingLayer.renderAll()}),C(this,Dt,"f")),"f")}getDuration(){return C(this,Dt,"f")}}Dt=new WeakMap,Mt=new WeakMap;class de{constructor(){Ft.add(this),Pt.set(this,void 0),kt.set(this,void 0),Rt.set(this,void 0),Bt.set(this,!0),this._drawingLayerManager=new ce}createDrawingLayerBaseCvs(t,e,i="contain"){if("number"!=typeof t||t<=1)throw new Error("Invalid 'width'.");if("number"!=typeof e||e<=1)throw new Error("Invalid 'height'.");if(!["contain","cover"].includes(i))throw new Error("Unsupported 'objectFit'.");const r=document.createElement("canvas");return r.width==t&&r.height==e||(r.width=t,r.height=e),r.style.objectFit=i,r}_createDrawingLayer(t,e,i,r){if(!this._layerBaseCvs){let t;try{t=this.getContentDimensions()}catch(t){if("Invalid content dimensions."!==(t.message||t))throw t}e||(e=(null==t?void 0:t.width)||1280),i||(i=(null==t?void 0:t.height)||720),r||(r=(null==t?void 0:t.objectFit)||"contain"),this._layerBaseCvs=this.createDrawingLayerBaseCvs(e,i,r)}const n=this._layerBaseCvs,s=this._drawingLayerManager.createDrawingLayer(n,t);return this._innerComponent.getElement("drawing-layer")||this._innerComponent.setElement("drawing-layer",n.parentElement),s}createDrawingLayer(){let t;for(let e=le.USER_DEFINED_LAYER_BASE_ID;;e++)if(!this._drawingLayerManager.getDrawingLayer(e)&&e!==le.TIP_LAYER_ID){t=e;break}return this._createDrawingLayer(t)}deleteDrawingLayer(t){var e;this._drawingLayerManager.deleteDrawingLayer(t),this._drawingLayerManager.getAllDrawingLayers().length||(null===(e=this._innerComponent)||void 0===e||e.removeElement("drawing-layer"),this._layerBaseCvs=null)}deleteUserDefinedDrawingLayer(t){if("number"!=typeof t)throw new TypeError("Invalid id.");if(tt.getId()>=0&&t.getId()!==le.TIP_LAYER_ID))}updateDrawingLayers(t){((t,e,i)=>{if(!(t<=1||e<=1)){if(!["contain","cover"].includes(i))throw new Error("Unsupported 'objectFit'.");this._drawingLayerManager.setDimensions({width:t,height:e},{backstoreOnly:!0}),this._drawingLayerManager.setObjectFit(i)}})(t.width,t.height,t.objectFit)}getSelectedDrawingItems(){return this._drawingLayerManager.getSelectedDrawingItems()}setTipConfig(t){if(!(vt(e=t)&&l(e.topLeftPoint)&&G(e.width))||e.width<=0||!G(e.duration)||"coordinateBase"in e&&!["view","image"].includes(e.coordinateBase))throw new Error("Invalid tip config.");var e;S(this,Pt,JSON.parse(JSON.stringify(t)),"f"),C(this,Pt,"f").coordinateBase||(C(this,Pt,"f").coordinateBase="view"),S(this,Rt,t.duration,"f"),C(this,Ft,"m",Nt).call(this)}getTipConfig(){return C(this,Pt,"f")?C(this,Pt,"f"):null}setTipVisible(t){if("boolean"!=typeof t)throw new TypeError("Invalid value.");this._tip&&(this._tip.set("visible",t),this._drawingLayerOfTip&&this._drawingLayerOfTip.renderAll()),S(this,Bt,t,"f")}isTipVisible(){return C(this,Bt,"f")}updateTipMessage(t){if(!C(this,Pt,"f"))throw new Error("Tip config is not set.");this._tipStyleId||(this._tipStyleId=he.createDrawingStyle({fillStyle:"#FFFFFF",paintMode:"fill",fontFamily:"Open Sans",fontSize:40})),this._drawingLayerOfTip||(this._drawingLayerOfTip=this._drawingLayerManager.getDrawingLayer(le.TIP_LAYER_ID)||this._createDrawingLayer(le.TIP_LAYER_ID)),this._tip?this._tip.set("text",t):this._tip=C(this,Ft,"m",jt).call(this,t,C(this,Pt,"f").topLeftPoint.x,C(this,Pt,"f").topLeftPoint.y,C(this,Pt,"f").width,C(this,Pt,"f").coordinateBase,this._tipStyleId),C(this,Ft,"m",Vt).call(this,this._tip,this._drawingLayerOfTip),this._tip.set("visible",C(this,Bt,"f")),this._drawingLayerOfTip&&this._drawingLayerOfTip.renderAll(),C(this,kt,"f")&&clearTimeout(C(this,kt,"f")),C(this,Rt,"f")>=0&&S(this,kt,setTimeout((()=>{C(this,Ft,"m",Wt).call(this)}),C(this,Rt,"f")),"f")}}Pt=new WeakMap,kt=new WeakMap,Rt=new WeakMap,Bt=new WeakMap,Ft=new WeakSet,jt=function(t,e,i,r,n,s){const o=new ue(t,e,i,r,s);return o.coordinateBase=n,o},Vt=function(t,e){e.hasDrawingItem(t)||e.addDrawingItems([t])},Wt=function(){this._tip&&this._drawingLayerOfTip.removeDrawingItems([this._tip])},Nt=function(){if(!this._tip)return;const t=C(this,Pt,"f");this._tip.coordinateBase=t.coordinateBase,this._tip.setTextRect({x:t.topLeftPoint.x,y:t.topLeftPoint.y,width:t.width,height:0}),this._tip.set("width",this._tip.get("width")),this._tip._drawingLayer&&this._tip._drawingLayer.renderAll()};class fe extends HTMLElement{constructor(){super(),Ut.set(this,void 0);const t=new DocumentFragment,e=document.createElement("div");e.setAttribute("class","wrapper"),t.appendChild(e),S(this,Ut,e,"f");const i=document.createElement("slot");i.setAttribute("name","single-frame-input-container"),e.append(i);const r=document.createElement("slot");r.setAttribute("name","content"),e.append(r);const n=document.createElement("slot");n.setAttribute("name","drawing-layer"),e.append(n);const s=document.createElement("style");s.textContent='\n.wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n}\n::slotted(canvas[slot="content"]) {\n object-fit: contain;\n pointer-events: none;\n}\n::slotted(div[slot="single-frame-input-container"]) {\n width: 1px;\n height: 1px;\n overflow: hidden;\n pointer-events: none;\n}\n::slotted(*) {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n ',t.appendChild(s),this.attachShadow({mode:"open"}).appendChild(t)}getWrapper(){return C(this,Ut,"f")}setElement(t,e){if(!(e instanceof HTMLElement))throw new TypeError("Invalid 'el'.");if(!["content","single-frame-input-container","drawing-layer"].includes(t))throw new TypeError("Invalid 'slot'.");this.removeElement(t),e.setAttribute("slot",t),this.appendChild(e)}getElement(t){if(!["content","single-frame-input-container","drawing-layer"].includes(t))throw new TypeError("Invalid 'slot'.");return this.querySelector(`[slot="${t}"]`)}removeElement(t){var e;if(!["content","single-frame-input-container","drawing-layer"].includes(t))throw new TypeError("Invalid 'slot'.");null===(e=this.querySelectorAll(`[slot="${t}"]`))||void 0===e||e.forEach((t=>t.remove()))}}Ut=new WeakMap,customElements.get("dce-component")||customElements.define("dce-component",fe);class ge extends de{static get engineResourcePath(){return u(t.engineResourcePaths).dce}static set defaultUIElementURL(t){ge._defaultUIElementURL=t}static get defaultUIElementURL(){var t;return null===(t=ge._defaultUIElementURL)||void 0===t?void 0:t.replace("@engineResourcePath/",ge.engineResourcePath)}static async createInstance(t){const e=new ge;return"string"==typeof t&&(t=t.replace("@engineResourcePath/",ge.engineResourcePath)),await e.setUIElement(t||ge.defaultUIElementURL),e}static _transformCoordinates(t,e,i,r,n,s,o){const a=s/r,h=o/n;t.x=Math.round(t.x/a+e),t.y=Math.round(t.y/h+i)}set _singleFrameMode(t){if(!["disabled","image","camera"].includes(t))throw new Error("Invalid value.");if(t!==C(this,Qt,"f")){if(S(this,Qt,t,"f"),C(this,Gt,"m",ee).call(this))S(this,zt,null,"f"),this._videoContainer=null,this._innerComponent.removeElement("content"),this._innerComponent&&(this._innerComponent.addEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.setAttribute("title","Take a photo")),this._bgCamera&&(this._bgCamera.style.display="block");else if(this._innerComponent&&(this._innerComponent.removeEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.removeAttribute("title")),this._bgCamera&&(this._bgCamera.style.display="none"),!C(this,zt,"f")){const t=document.createElement("video");t.style.position="absolute",t.style.left="0",t.style.top="0",t.style.width="100%",t.style.height="100%",t.style.objectFit=this.getVideoFit(),t.setAttribute("autoplay","true"),t.setAttribute("playsinline","true"),t.setAttribute("muted","true"),["iPhone","iPad","Mac"].includes(I.OS)&&t.setAttribute("poster","data:image/gif;base64,R0lGODlhAQABAIEAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAgEAAEEBAA7"),S(this,zt,t,"f");const e=document.createElement("div");e.append(t),e.style.overflow="hidden",this._videoContainer=e,this._innerComponent.setElement("content",e)}C(this,Gt,"m",ee).call(this)||this._hideDefaultSelection?(this._selCam&&(this._selCam.style.display="none"),this._selRsl&&(this._selRsl.style.display="none"),this._selMinLtr&&(this._selMinLtr.style.display="none")):(this._selCam&&(this._selCam.style.display="block"),this._selRsl&&(this._selRsl.style.display="block"),this._selMinLtr&&(this._selMinLtr.style.display="block"),this._stopLoading())}}get _singleFrameMode(){return C(this,Qt,"f")}get disposed(){return C(this,te,"f")}constructor(){super(),Gt.add(this),Yt.set(this,void 0),Ht.set(this,void 0),Xt.set(this,void 0),this.containerClassName="dce-video-container",zt.set(this,void 0),this.videoFit="contain",this._hideDefaultSelection=!1,this._divScanArea=null,this._divScanLight=null,this._bgLoading=null,this._selCam=null,this._bgCamera=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,qt.set(this,null),this.regionMaskFillStyle="rgba(0,0,0,0.5)",this.regionMaskStrokeStyle="rgb(254,142,20)",this.regionMaskLineWidth=6,Kt.set(this,!1),Zt.set(this,!1),Jt.set(this,{width:0,height:0}),this._updateLayersTimeout=500,this._videoResizeListener=()=>{C(this,Gt,"m",oe).call(this),this._updateLayersTimeoutId&&clearTimeout(this._updateLayersTimeoutId),this._updateLayersTimeoutId=setTimeout((()=>{this.disposed||(this.eventHandler.fire("videoEl:resized",null,{async:!1}),this.eventHandler.fire("content:updated",null,{async:!1}),this.isScanLaserVisible()&&C(this,Gt,"m",se).call(this))}),this._updateLayersTimeout)},this._windowResizeListener=()=>{ge._onLog&&ge._onLog("window resize event triggered."),C(this,Jt,"f").width===document.documentElement.clientWidth&&C(this,Jt,"f").height===document.documentElement.clientHeight||(C(this,Jt,"f").width=document.documentElement.clientWidth,C(this,Jt,"f").height=document.documentElement.clientHeight,this._videoResizeListener())},Qt.set(this,"disabled"),this._clickIptSingleFrameMode=()=>{if(!C(this,Gt,"m",ee).call(this))return;let t;if(this._singleFrameInputContainer)t=this._singleFrameInputContainer.firstElementChild;else{t=document.createElement("input"),t.setAttribute("type","file"),"camera"===this._singleFrameMode?(t.setAttribute("capture",""),t.setAttribute("accept","image/*")):"image"===this._singleFrameMode&&(t.removeAttribute("capture"),t.setAttribute("accept",".jpg,.jpeg,.icon,.gif,.svg,.webp,.png,.bmp")),t.addEventListener("change",(async()=>{const e=t.files[0];t.value="";{const t=async t=>{let e=null,i=null;if("undefined"!=typeof createImageBitmap)try{if(e=await createImageBitmap(t),e)return e}catch(t){}var r;return e||(i=await(r=t,new Promise(((t,e)=>{let i=URL.createObjectURL(r),n=new Image;n.src=i,n.onload=()=>{URL.revokeObjectURL(n.src),t(n)},n.onerror=t=>{e(new Error("Can't convert blob to image : "+(t instanceof Event?t.type:t)))}})))),i},i=(t,e,i,r)=>{t.width==i&&t.height==r||(t.width=i,t.height=r);const n=t.getContext("2d");n.clearRect(0,0,t.width,t.height),n.drawImage(e,0,0)},r=await t(e),n=r instanceof HTMLImageElement?r.naturalWidth:r.width,s=r instanceof HTMLImageElement?r.naturalHeight:r.height;let o=this._cvsSingleFrameMode;const a=null==o?void 0:o.width,h=null==o?void 0:o.height;o||(o=document.createElement("canvas"),this._cvsSingleFrameMode=o),i(o,r,n,s),this._innerComponent.setElement("content",o),a===o.width&&h===o.height||this.eventHandler.fire("content:updated",null,{async:!1})}this._onSingleFrameAcquired&&setTimeout((()=>{this._onSingleFrameAcquired(this._cvsSingleFrameMode)}),0)})),t.style.position="absolute",t.style.top="-9999px",t.style.backgroundColor="transparent",t.style.color="transparent";const e=document.createElement("div");e.append(t),this._innerComponent.setElement("single-frame-input-container",e),this._singleFrameInputContainer=e}null==t||t.click()},$t.set(this,[]),this._capturedResultReceiver={onCapturedResultReceived:(t,e)=>{var i,r,n,s;if(this.disposed)return;if(this.clearAllInnerDrawingItems(),!t)return;const o=t.originalImageTag;if(!o)return;const a=t.items;if(!(null==a?void 0:a.length))return;const h=(null===(i=o.cropRegion)||void 0===i?void 0:i.left)||0,l=(null===(r=o.cropRegion)||void 0===r?void 0:r.top)||0,c=(null===(n=o.cropRegion)||void 0===n?void 0:n.right)?o.cropRegion.right-h:o.originalWidth,u=(null===(s=o.cropRegion)||void 0===s?void 0:s.bottom)?o.cropRegion.bottom-l:o.originalHeight,g=o.currentWidth,m=o.currentHeight,p=(t,e,i,r,n,s,o,a,h=[],l)=>{e.forEach((t=>ge._transformCoordinates(t,i,r,n,s,o,a)));const c=new mt({points:[{x:e[0].x,y:e[0].y},{x:e[1].x,y:e[1].y},{x:e[2].x,y:e[2].y},{x:e[3].x,y:e[3].y}]},l);for(let t of h)c.addNote(t);t.addDrawingItems([c]),C(this,$t,"f").push(c)};let v,y;for(let t of a)switch(t.type){case d.CRIT_ORIGINAL_IMAGE:break;case d.CRIT_BARCODE:v=this.getDrawingLayer(le.DBR_LAYER_ID),y=[{name:"format",content:t.formatString},{name:"text",content:t.text}],(null==e?void 0:e.isBarcodeVerifyOpen)?t.verified?p(v,t.location.points,h,l,c,u,g,m,y):p(v,t.location.points,h,l,c,u,g,m,y,he.STYLE_ORANGE_STROKE_TRANSPARENT):p(v,t.location.points,h,l,c,u,g,m,y);break;case d.CRIT_TEXT_LINE:v=this.getDrawingLayer(le.DLR_LAYER_ID),y=[{name:"text",content:t.text}],e.isLabelVerifyOpen?t.verified?p(v,t.location.points,h,l,c,u,g,m,y):p(v,t.location.points,h,l,c,u,g,m,y,he.STYLE_GREEN_STROKE_TRANSPARENT):p(v,t.location.points,h,l,c,u,g,m,y);break;case d.CRIT_DETECTED_QUAD:v=this.getDrawingLayer(le.DDN_LAYER_ID),(null==e?void 0:e.isDetectVerifyOpen)?t.crossVerificationStatus===f.CVS_PASSED?p(v,t.location.points,h,l,c,u,g,m,[]):p(v,t.location.points,h,l,c,u,g,m,[],he.STYLE_BLUE_STROKE_TRANSPARENT):p(v,t.location.points,h,l,c,u,g,m,[]);break;case d.CRIT_NORMALIZED_IMAGE:v=this.getDrawingLayer(le.DDN_LAYER_ID),(null==e?void 0:e.isNormalizeVerifyOpen)?t.crossVerificationStatus===f.CVS_PASSED?p(v,t.location.points,h,l,c,u,g,m,[]):p(v,t.location.points,h,l,c,u,g,m,[],he.STYLE_BLUE_STROKE_TRANSPARENT):p(v,t.location.points,h,l,c,u,g,m,[]);break;case d.CRIT_PARSED_RESULT:break;default:throw new Error("Illegal item type.")}}},te.set(this,!1),this.eventHandler=new Ct,this.eventHandler.on("content:updated",(()=>{C(this,Yt,"f")&&clearTimeout(C(this,Yt,"f")),S(this,Yt,setTimeout((()=>{if(this.disposed)return;let t;this._updateVideoContainer();try{t=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}this.updateDrawingLayers(t),this.updateConvertedRegion(t)}),0),"f")})),this.eventHandler.on("videoEl:resized",(()=>{C(this,Ht,"f")&&clearTimeout(C(this,Ht,"f")),S(this,Ht,setTimeout((()=>{this.disposed||this._updateVideoContainer()}),0),"f")}))}_setUIElement(t){this.UIElement=t,this._unbindUI(),this._bindUI()}async setUIElement(t){let e;if("string"==typeof t){let i=await Ot(t);e=document.createElement("div"),Object.assign(e.style,{width:"100%",height:"100%"}),e.attachShadow({mode:"open"}).appendChild(i.cloneNode(!0))}else e=t;this._setUIElement(e)}getUIElement(){return this.UIElement}_bindUI(){var t,e;if(!this.UIElement)throw new Error("Need to set 'UIElement'.");if(this._innerComponent)return;let i=this.UIElement;i=i.shadowRoot||i;let r=(null===(t=i.classList)||void 0===t?void 0:t.contains(this.containerClassName))?i:i.querySelector(`.${this.containerClassName}`);if(!r)throw Error(`Can not find the element with class '${this.containerClassName}'.`);if(this._innerComponent=document.createElement("dce-component"),r.appendChild(this._innerComponent),C(this,Gt,"m",ee).call(this));else{const t=document.createElement("video");Object.assign(t.style,{position:"absolute",left:"0",top:"0",width:"100%",height:"100%",objectFit:this.getVideoFit()}),t.setAttribute("autoplay","true"),t.setAttribute("playsinline","true"),t.setAttribute("muted","true"),["iPhone","iPad","Mac"].includes(I.OS)&&t.setAttribute("poster","data:image/gif;base64,R0lGODlhAQABAIEAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAgEAAEEBAA7"),S(this,zt,t,"f");const e=document.createElement("div");e.append(t),e.style.overflow="hidden",this._videoContainer=e,this._innerComponent.setElement("content",e)}if(this._selRsl=i.querySelector(".dce-sel-resolution"),this._selMinLtr=i.querySelector(".dlr-sel-minletter"),this._divScanArea=i.querySelector(".dce-scanarea"),this._divScanLight=i.querySelector(".dce-scanlight"),this._bgLoading=i.querySelector(".dce-bg-loading"),this._bgCamera=i.querySelector(".dce-bg-camera"),this._selCam=i.querySelector(".dce-sel-camera"),this._optGotRsl=i.querySelector(".dce-opt-gotResolution"),this._btnClose=i.querySelector(".dce-btn-close"),this._optGotMinLtr=i.querySelector(".dlr-opt-gotMinLtr"),this._selRsl&&(this._hideDefaultSelection||C(this,Gt,"m",ee).call(this)||this._selRsl.options.length||(this._selRsl.innerHTML=['','','',''].join(""),this._optGotRsl=this._selRsl.options[0])),this._selMinLtr&&(this._hideDefaultSelection||C(this,Gt,"m",ee).call(this)||this._selMinLtr.options.length||(this._selMinLtr.innerHTML=['','','','','','','','','','',''].join(""),this._optGotMinLtr=this._selMinLtr.options[0])),this.isScanLaserVisible()||C(this,Gt,"m",oe).call(this),C(this,Gt,"m",ee).call(this)&&(this._innerComponent&&(this._innerComponent.addEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.setAttribute("title","Take a photo")),this._bgCamera&&(this._bgCamera.style.display="block")),C(this,Gt,"m",ee).call(this)||this._hideDefaultSelection?(this._selCam&&(this._selCam.style.display="none"),this._selRsl&&(this._selRsl.style.display="none"),this._selMinLtr&&(this._selMinLtr.style.display="none")):(this._selCam&&(this._selCam.style.display="block"),this._selRsl&&(this._selRsl.style.display="block"),this._selMinLtr&&(this._selMinLtr.style.display="block"),this._stopLoading()),window.ResizeObserver){this._resizeObserver||(this._resizeObserver=new ResizeObserver((t=>{var e;ge._onLog&&ge._onLog("resize observer triggered.");for(let i of t)i.target===(null===(e=this._innerComponent)||void 0===e?void 0:e.getWrapper())&&this._videoResizeListener()})));const t=null===(e=this._innerComponent)||void 0===e?void 0:e.getWrapper();t&&this._resizeObserver.observe(t)}C(this,Jt,"f").width=document.documentElement.clientWidth,C(this,Jt,"f").height=document.documentElement.clientHeight,window.addEventListener("resize",this._windowResizeListener)}_unbindUI(){var t,e,i,r;C(this,Gt,"m",ee).call(this)?(this._innerComponent&&(this._innerComponent.removeEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.removeAttribute("title")),this._bgCamera&&(this._bgCamera.style.display="none")):this._stopLoading(),C(this,Gt,"m",oe).call(this),null===(t=this._drawingLayerManager)||void 0===t||t.clearDrawingLayers(),null===(e=this._innerComponent)||void 0===e||e.removeElement("drawing-layer"),this._layerBaseCvs=null,this._drawingLayerOfMask=null,this._drawingLayerOfTip=null,null===(i=this._innerComponent)||void 0===i||i.remove(),this._innerComponent=null,S(this,zt,null,"f"),null===(r=this._videoContainer)||void 0===r||r.remove(),this._videoContainer=null,this._selCam=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,this._divScanArea=null,this._divScanLight=null,this._singleFrameInputContainer&&(this._singleFrameInputContainer.remove(),this._singleFrameInputContainer=null),window.ResizeObserver&&this._resizeObserver&&this._resizeObserver.disconnect(),window.removeEventListener("resize",this._windowResizeListener)}_startLoading(){this._bgLoading&&(this._bgLoading.style.display="",this._bgLoading.style.animationPlayState="")}_stopLoading(){this._bgLoading&&(this._bgLoading.style.display="none",this._bgLoading.style.animationPlayState="paused")}_renderCamerasInfo(t,e){if(this._selCam){let i;this._selCam.textContent="";for(let r of e){const e=document.createElement("option");e.value=r.deviceId,e.innerText=r.label,this._selCam.append(e),r.deviceId&&t&&t.deviceId==r.deviceId&&(i=e)}this._selCam.value=i?i.value:""}let i=this.UIElement;if(i=i.shadowRoot||i,i.querySelector(".dce-macro-use-mobile-native-like-ui")){let t=i.querySelector(".dce-mn-cameras");if(t){t.textContent="";for(let i of e){const e=document.createElement("div");e.classList.add("dce-mn-camera-option"),e.setAttribute("data-davice-id",i.deviceId),e.textContent=i.label,t.append(e)}}}}_renderResolutionInfo(t){this._optGotRsl&&(this._optGotRsl.setAttribute("data-width",t.width),this._optGotRsl.setAttribute("data-height",t.height),this._optGotRsl.innerText="got "+t.width+"x"+t.height,this._selRsl&&this._optGotRsl.parentNode==this._selRsl&&(this._selRsl.value="got"));{let e=this.UIElement;e=(null==e?void 0:e.shadowRoot)||e;let i=null==e?void 0:e.querySelector(".dce-mn-resolution-box");if(i){let e="";if(t&&t.width&&t.height){let i=Math.max(t.width,t.height),r=Math.min(t.width,t.height);e=r<=1080?r+"P":i<3e3?"2K":Math.round(i/1e3)+"K"}i.textContent=e}}}getVideoElement(){return C(this,zt,"f")}isVideoLoaded(){return!(!C(this,zt,"f")||!this.cameraEnhancer)&&this.cameraEnhancer.isOpen()}setVideoFit(t){if(t=t.toLowerCase(),!["contain","cover"].includes(t))throw new Error(`Unsupported value '${t}'.`);if(this.videoFit=t,!C(this,zt,"f"))return;if(C(this,zt,"f").style.objectFit=t,C(this,Gt,"m",ee).call(this))return;let e;this._updateVideoContainer();try{e=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}C(this,Gt,"m",ae).call(this,e,this.getConvertedRegion()),this.updateDrawingLayers(e)}getVideoFit(){return this.videoFit}getContentDimensions(){var t,e,i,r;let n,s,o;if(C(this,Gt,"m",ee).call(this)?(n=null===(i=this._cvsSingleFrameMode)||void 0===i?void 0:i.width,s=null===(r=this._cvsSingleFrameMode)||void 0===r?void 0:r.height,o="contain"):(n=null===(t=C(this,zt,"f"))||void 0===t?void 0:t.videoWidth,s=null===(e=C(this,zt,"f"))||void 0===e?void 0:e.videoHeight,o=this.getVideoFit()),!n||!s)throw new Error("Invalid content dimensions.");return{width:n,height:s,objectFit:o}}updateConvertedRegion(t){const e=wt.convert(this.scanRegion,t.width,t.height);S(this,qt,e,"f"),C(this,Xt,"f")&&clearTimeout(C(this,Xt,"f")),S(this,Xt,setTimeout((()=>{let t;try{t=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}C(this,Gt,"m",ie).call(this,t,e),C(this,Gt,"m",ae).call(this,t,e)}),0),"f")}getConvertedRegion(){return C(this,qt,"f")}setScanRegion(t){if(null!=t&&!c(t)&&!r(t))throw TypeError("Invalid 'region'.");let e;this.scanRegion=t?JSON.parse(JSON.stringify(t)):null;try{e=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}this.updateConvertedRegion(e)}getScanRegion(){return JSON.parse(JSON.stringify(this.scanRegion))}getVisibleRegionOfVideo(t){if(!this.isVideoLoaded())throw new Error("The video is not loaded.");const e=C(this,zt,"f").videoWidth,i=C(this,zt,"f").videoHeight,r=this.getVideoFit(),{width:n,height:s}=this._innerComponent.getBoundingClientRect();if(n<=0||s<=0)throw new Error("Unable to get video dimensions. Video may not be rendered on the page.");let o;const a={x:0,y:0,width:e,height:i,isMeasuredInPercentage:!1};if("cover"===r&&(n/s1){const t=C(this,zt,"f").videoWidth,e=C(this,zt,"f").videoHeight,{width:r,height:n}=this._innerComponent.getBoundingClientRect(),s=t/e;if(r/nt.remove())),C(this,$t,"f").length=0}dispose(){this._unbindUI(),S(this,te,!0,"f")}}function me(t,e,i,r){if("a"===i&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?r:"a"===i?r.call(t):r?r.value:e.get(t)}function pe(t,e,i,r,n){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?n.call(t,i):n?n.value=i:e.set(t,i),i}Yt=new WeakMap,Ht=new WeakMap,Xt=new WeakMap,zt=new WeakMap,qt=new WeakMap,Kt=new WeakMap,Zt=new WeakMap,Jt=new WeakMap,Qt=new WeakMap,$t=new WeakMap,te=new WeakMap,Gt=new WeakSet,ee=function(){return"disabled"!==this._singleFrameMode},ie=function(t,e){e&&(0!==e.x||0!==e.y||e.width!==t.width||e.height!==t.height)?this.setScanRegionMask(e.x,e.y,e.width,e.height):this.clearScanRegionMask()},re=function(){this._drawingLayerOfMask&&this._drawingLayerOfMask.setVisible(!0)},ne=function(){this._drawingLayerOfMask&&this._drawingLayerOfMask.setVisible(!1)},se=function(){this._divScanLight&&"none"==this._divScanLight.style.display&&(this._divScanLight.style.display="block")},oe=function(){this._divScanLight&&(this._divScanLight.style.display="none")},ae=function(t,e){if(!this._divScanArea)return;if(!this._innerComponent.getElement("content"))return;const{width:i,height:r,objectFit:n}=t;e||(e={x:0,y:0,width:i,height:r});const{width:s,height:o}=this._innerComponent.getBoundingClientRect();if(s<=0||o<=0)return;const a=s/o,h=i/r;let l,c,u,d,f=1;if("contain"===n)a66||"Safari"===xe.browser&&xe.version>13||"OPR"===xe.browser&&xe.version>43||"Edge"===xe.browser&&xe.version,"function"==typeof SuppressedError&&SuppressedError;class Te{static multiply(t,e){const i=[];for(let r=0;r<3;r++){const n=e.slice(3*r,3*r+3);for(let e=0;e<3;e++){const r=[t[e],t[e+3],t[e+6]].reduce(((t,e,i)=>t+e*n[i]),0);i.push(r)}}return i}static identity(){return[1,0,0,0,1,0,0,0,1]}static translate(t,e,i){return Te.multiply(t,[1,0,0,0,1,0,e,i,1])}static rotate(t,e){var i=Math.cos(e),r=Math.sin(e);return Te.multiply(t,[i,-r,0,r,i,0,0,0,1])}static scale(t,e,i){return Te.multiply(t,[e,0,0,0,i,0,0,0,1])}}var Ee,Oe,Ae,Ie,Le,De,Me;!function(t){t.GREY="grey",t.GREY32="grey32",t.RGBA="rgba",t.RBGA="rbga",t.GRBA="grba",t.GBRA="gbra",t.BRGA="brga",t.BGRA="bgra"}(Ee||(Ee={}));class Fe{static get version(){return"1.1.3"}static get webGLSupported(){return void 0===Fe._webGLSupported&&(Fe._webGLSupported=!!document.createElement("canvas").getContext("webgl")),Fe._webGLSupported}get disposed(){return Ce(this,Me,"f")}constructor(){Oe.set(this,Ee.RGBA),Ae.set(this,null),Ie.set(this,null),Le.set(this,null),this.useWebGLByDefault=!0,this._reusedCvs=null,this._reusedWebGLCvs=null,De.set(this,null),Me.set(this,!1)}drawImage(t,e,i,r,n,s){if(this.disposed)throw Error("The 'ImageDataGetter' instance has been disposed.");if(!i||!r)throw new Error("Invalid 'sourceWidth' or 'sourceHeight'.");if((null==s?void 0:s.bUseWebGL)&&!Fe.webGLSupported)throw new Error("Your browser or machine may not support WebGL.");if(e instanceof HTMLVideoElement&&4!==e.readyState||e instanceof HTMLImageElement&&!e.complete)throw new Error("The source is not loaded.");let o;Fe._onLog&&(o=Date.now(),Fe._onLog("drawImage(), START: "+o));let a=0,h=0,l=i,c=r,u=0,d=0,f=i,g=r;n&&(n.sx&&(a=Math.round(n.sx)),n.sy&&(h=Math.round(n.sy)),n.sWidth&&(l=Math.round(n.sWidth)),n.sHeight&&(c=Math.round(n.sHeight)),n.dx&&(u=Math.round(n.dx)),n.dy&&(d=Math.round(n.dy)),n.dWidth&&(f=Math.round(n.dWidth)),n.dHeight&&(g=Math.round(n.dHeight)));let m,p=Ee.RGBA;if((null==s?void 0:s.pixelFormat)&&(p=s.pixelFormat),(null==s?void 0:s.bufferContainer)&&(m=s.bufferContainer,m.length<4*f*g))throw new Error("Unexpected size of the 'bufferContainer'.");const v=t;if(!Fe.webGLSupported||!(this.useWebGLByDefault&&null==(null==s?void 0:s.bUseWebGL)||(null==s?void 0:s.bUseWebGL))){Fe._onLog&&Fe._onLog("drawImage() in context2d."),v.ctx2d||(v.ctx2d=v.getContext("2d",{willReadFrequently:!0}));const t=v.ctx2d;if(!t)throw new Error("Unable to get 'CanvasRenderingContext2D' from canvas.");return(v.width{const e=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,e),t.bufferData(t.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),t.STATIC_DRAW);const i=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,i),t.bufferData(t.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),t.STATIC_DRAW),{positions:e,texCoords:i}},i=t=>{const e=t.createTexture();return t.bindTexture(t.TEXTURE_2D,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),e},r=(t,e)=>{const i=t.createProgram();if(e.forEach((e=>t.attachShader(i,e))),t.linkProgram(i),!t.getProgramParameter(i,t.LINK_STATUS)){const e=new Error(`An error occured linking the program: ${t.getProgramInfoLog(i)}.`);throw e.name="WebGLError",e}return t.useProgram(i),i},n=(t,e,i)=>{const r=t.createShader(e);if(t.shaderSource(r,i),t.compileShader(r),!t.getShaderParameter(r,t.COMPILE_STATUS)){const e=new Error(`An error occured compiling the shader: ${t.getShaderInfoLog(r)}.`);throw e.name="WebGLError",e}return r},s="\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\n\nuniform mat3 u_matrix;\nuniform mat3 u_textureMatrix;\n\nvarying vec2 v_texCoord;\nvoid main(void) {\ngl_Position = vec4((u_matrix * vec3(a_position, 1)).xy, 0, 1.0);\nv_texCoord = vec4((u_textureMatrix * vec3(a_texCoord, 1)).xy, 0, 1.0).xy;\n}";let o="rgb";["rgba","rbga","grba","gbra","brga","bgra"].includes(p)&&(o=p.slice(0,3));const a=`\nprecision mediump float;\nvarying vec2 v_texCoord;\nuniform sampler2D u_image;\nuniform float uColorFactor;\n\nvoid main() {\nvec4 sample = texture2D(u_image, v_texCoord);\nfloat grey = 0.3 * sample.r + 0.59 * sample.g + 0.11 * sample.b;\ngl_FragColor = vec4(sample.${o} * (1.0 - uColorFactor) + (grey * uColorFactor), sample.a);\n}`,h=r(t,[n(t,t.VERTEX_SHADER,s),n(t,t.FRAGMENT_SHADER,a)]);Se(this,Ie,{program:h,attribLocations:{vertexPosition:t.getAttribLocation(h,"a_position"),texPosition:t.getAttribLocation(h,"a_texCoord")},uniformLocations:{uSampler:t.getUniformLocation(h,"u_image"),uColorFactor:t.getUniformLocation(h,"uColorFactor"),uMatrix:t.getUniformLocation(h,"u_matrix"),uTextureMatrix:t.getUniformLocation(h,"u_textureMatrix")}},"f"),Se(this,Le,e(t),"f"),Se(this,Ae,i(t),"f"),Se(this,Oe,p,"f")}const n=(t,e,i)=>{t.bindBuffer(t.ARRAY_BUFFER,e),t.enableVertexAttribArray(i),t.vertexAttribPointer(i,2,t.FLOAT,!1,0,0)},s=(t,e,i)=>{const r=t.RGBA,n=t.RGBA,s=t.UNSIGNED_BYTE;t.bindTexture(t.TEXTURE_2D,e),t.texImage2D(t.TEXTURE_2D,0,r,n,s,i)},y=(t,e,s,o)=>{t.clearColor(0,0,0,1),t.clearDepth(1),t.enable(t.DEPTH_TEST),t.depthFunc(t.LEQUAL),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT),n(t,s.positions,e.attribLocations.vertexPosition),n(t,s.texCoords,e.attribLocations.texPosition),t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,o),t.uniform1i(e.uniformLocations.uSampler,0),t.uniform1f(e.uniformLocations.uColorFactor,[Ee.GREY,Ee.GREY32].includes(p)?1:0);let m,v,y=Te.translate(Te.identity(),-1,-1);y=Te.scale(y,2,2),y=Te.scale(y,1/t.canvas.width,1/t.canvas.height),m=Te.translate(y,u,d),m=Te.scale(m,f,g),t.uniformMatrix3fv(e.uniformLocations.uMatrix,!1,m),v=Te.translate(Te.identity(),a/i,h/r),v=Te.scale(v,l/i,c/r),t.uniformMatrix3fv(e.uniformLocations.uTextureMatrix,!1,v),t.drawArrays(t.TRIANGLES,0,6)};s(t,Ce(this,Ae,"f"),e),y(t,Ce(this,Ie,"f"),Ce(this,Le,"f"),Ce(this,Ae,"f"));const _=m||new Uint8Array(4*f*g);if(t.readPixels(u,d,f,g,t.RGBA,t.UNSIGNED_BYTE,_),255!==_[3]){Fe._onLog&&Fe._onLog("Incorrect WebGL drawing .");const t=new Error("WebGL error: incorrect drawing.");throw t.name="WebGLError",t}return Fe._onLog&&Fe._onLog("drawImage() in WebGL end. Costs: "+(Date.now()-o)),{context:t,pixelFormat:p===Ee.GREY?Ee.GREY32:p,bUseWebGL:!0}}catch(o){if(this.forceLoseContext(),null==(null==s?void 0:s.bUseWebGL))return Fe._onLog&&Fe._onLog("'drawImage()' in WebGL failed, try again in context2d."),this.useWebGLByDefault=!1,this.drawImage(t,e,i,r,n,Object.assign({},s,{bUseWebGL:!1}));throw o.name="WebGLError",o}}readCvsData(t,e,i){if(!(t instanceof CanvasRenderingContext2D||t instanceof WebGLRenderingContext))throw new Error("Invalid 'context'.");let r,n=0,s=0,o=t.canvas.width,a=t.canvas.height;if(e&&(e.x&&(n=e.x),e.y&&(s=e.y),e.width&&(o=e.width),e.height&&(a=e.height)),(null==i?void 0:i.length)<4*o*a)throw new Error("Unexpected size of the 'bufferContainer'.");if(t instanceof WebGLRenderingContext){const e=t;i?(e.readPixels(n,s,o,a,e.RGBA,e.UNSIGNED_BYTE,i),r=new Uint8Array(i.buffer,0,4*o*a)):(r=new Uint8Array(4*o*a),e.readPixels(n,s,o,a,e.RGBA,e.UNSIGNED_BYTE,r))}else if(t instanceof CanvasRenderingContext2D){let e;e=t.getImageData(n,s,o,a),r=new Uint8Array(e.data.buffer),null==i||i.set(r)}return r}transformPixelFormat(t,e,i,r){let n,s;if(Fe._onLog&&(n=Date.now(),Fe._onLog("transformPixelFormat(), START: "+n)),e===i)return Fe._onLog&&Fe._onLog("transformPixelFormat() end. Costs: "+(Date.now()-n)),r?new Uint8Array(t):t;const o=[Ee.RGBA,Ee.RBGA,Ee.GRBA,Ee.GBRA,Ee.BRGA,Ee.BGRA];if(o.includes(e))if(i===Ee.GREY){s=new Uint8Array(t.length/4);for(let e=0;eh||e.sy+e.sHeight>l)throw new Error("Invalid position.");null===(r=Fe._onLog)||void 0===r||r.call(Fe,"getImageData(), START: "+(c=Date.now()));const d=Math.round(e.sx),f=Math.round(e.sy),g=Math.round(e.sWidth),m=Math.round(e.sHeight),p=Math.round(e.dWidth),v=Math.round(e.dHeight);let y,_=(null==i?void 0:i.pixelFormat)||Ee.RGBA,w=null==i?void 0:i.bufferContainer;if(w&&(Ee.GREY===_&&w.length{this.disposed||r.includes(t)&&t.apply(i.target,n)}),0);else try{s=t.apply(i.target,n)}catch(t){}if(!0===s)break}}}dispose(){pe(this,ke,!0,"f")}}Pe=new WeakMap,ke=new WeakMap;const Si=(t,e,i,r)=>{if(!i)return t;let n=e+Math.round((t-e)/i)*i;return r&&(n=Math.min(n,r)),n};class Ti{static get version(){return"2.0.18"}static isStorageAvailable(t){let e;try{e=window[t];const i="__storage_test__";return e.setItem(i,i),e.removeItem(i),!0}catch(t){return t instanceof DOMException&&(22===t.code||1014===t.code||"QuotaExceededError"===t.name||"NS_ERROR_DOM_QUOTA_REACHED"===t.name)&&e&&0!==e.length}}static findBestRearCameraInIOS(t,e){if(!t||!t.length)return null;let i=!1;if((null==e?void 0:e.getMainCamera)&&(i=!0),i){const e=["후면 카메라","背面カメラ","後置鏡頭","后置相机","กล้องด้านหลัง","बैक कैमरा","الكاميرا الخلفية","מצלמה אחורית","камера на задней панели","задня камера","задна камера","артқы камера","πίσω κάμερα","zadní fotoaparát","zadná kamera","tylny aparat","takakamera","stražnja kamera","rückkamera","kamera på baksidan","kamera belakang","kamera bak","hátsó kamera","fotocamera (posteriore)","câmera traseira","câmara traseira","cámara trasera","càmera posterior","caméra arrière","cameră spate","camera mặt sau","camera aan achterzijde","bagsidekamera","back camera","arka kamera"],i=t.find((t=>e.includes(t.label.toLowerCase())));return null==i?void 0:i.deviceId}{const e=["후면","背面","後置","后置","านหลัง","बैक","خلفية","אחורית","задняя","задней","задна","πίσω","zadní","zadná","tylny","trasera","traseira","taka","stražnja","spate","sau","rück","posteriore","posterior","hátsó","belakang","baksidan","bakre","bak","bagside","back","aртқы","arrière","arka","achterzijde"],i=["트리플","三镜头","三鏡頭","トリプル","สาม","ट्रिपल","ثلاثية","משולשת","үштік","тройная","тройна","потроєна","τριπλή","üçlü","trójobiektywowy","trostruka","trojný","trojitá","trippelt","trippel","triplă","triple","tripla","tiga","kolmois","ba camera"],r=["듀얼 와이드","雙廣角","双广角","デュアル広角","คู่ด้านหลังมุมกว้าง","ड्युअल वाइड","مزدوجة عريضة","כפולה רחבה","қос кең бұрышты","здвоєна ширококутна","двойная широкоугольная","двойна широкоъгълна","διπλή ευρεία","çift geniş","laajakulmainen kaksois","kép rộng mặt sau","kettős, széles látószögű","grande angular dupla","ganda","dwuobiektywowy","dwikamera","dvostruka široka","duální širokoúhlý","duálna širokouhlá","dupla grande-angular","dublă","dubbel vidvinkel","dual-weitwinkel","dual wide","dual con gran angular","dual","double","doppia con grandangolo","doble","dobbelt vidvinkelkamera"],n=t.filter((t=>{const i=t.label.toLowerCase();return e.some((t=>i.includes(t)))}));if(!n.length)return null;const s=n.find((t=>{const e=t.label.toLowerCase();return i.some((t=>e.includes(t)))}));if(s)return s.deviceId;const o=n.find((t=>{const e=t.label.toLowerCase();return r.some((t=>e.includes(t)))}));return o?o.deviceId:n[0].deviceId}}static findBestRearCamera(t,e){if(!t||!t.length)return null;if(["iPhone","iPad","Mac"].includes(xe.OS))return Ti.findBestRearCameraInIOS(t,{getMainCamera:null==e?void 0:e.getMainCameraInIOS});const i=["후","背面","背置","後面","後置","后面","后置","านหลัง","หลัง","बैक","خلفية","אחורית","задняя","задня","задней","задна","πίσω","zadní","zadná","tylny","trás","trasera","traseira","taka","stražnja","spate","sau","rück","rear","posteriore","posterior","hátsó","darrere","belakang","baksidan","bakre","bak","bagside","back","aртқы","arrière","arka","achterzijde"];for(let e of t){const t=e.label.toLowerCase();if(t&&i.some((e=>t.includes(e)))&&/\b0(\b)?/.test(t))return e.deviceId}return["Android","HarmonyOS"].includes(xe.OS)?t[t.length-1].deviceId:null}static findBestCamera(t,e,i){return t&&t.length?"environment"===e?this.findBestRearCamera(t,i):"user"===e?null:e?void 0:null:null}static async playVideo(t,e,i){if(!t)throw new Error("Invalid 'videoEl'.");if(!e)throw new Error("Invalid 'source'.");return new Promise((async(r,n)=>{let s;const o=()=>{t.removeEventListener("loadstart",c),t.removeEventListener("abort",u),t.removeEventListener("play",d),t.removeEventListener("error",f),t.removeEventListener("loadedmetadata",p)};let a=!1;const h=()=>{a=!0,s&&clearTimeout(s),o(),r(t)},l=t=>{s&&clearTimeout(s),o(),n(t)},c=()=>{t.addEventListener("abort",u,{once:!0})},u=()=>{const t=new Error("Video playing was interrupted.");t.name="AbortError",l(t)},d=()=>{h()},f=()=>{l(new Error(`Video error ${t.error.code}: ${t.error.message}.`))};let g;const m=new Promise((t=>{g=t})),p=()=>{g()};if(t.addEventListener("loadstart",c,{once:!0}),t.addEventListener("play",d,{once:!0}),t.addEventListener("error",f,{once:!0}),t.addEventListener("loadedmetadata",p,{once:!0}),"string"==typeof e||e instanceof String?t.src=e:t.srcObject=e,t.autoplay&&await new Promise((t=>{setTimeout(t,1e3)})),!a){i&&(s=setTimeout((()=>{o(),n(new Error("Failed to play video. Timeout."))}),i)),await m;try{await t.play(),h()}catch(t){console.warn("1st play error: "+((null==t?void 0:t.message)||t))}if(!a)try{await t.play(),h()}catch(t){console.warn("2rd play error: "+((null==t?void 0:t.message)||t)),l(t)}}}))}static async testCameraAccess(t){var e,i;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))return{ok:!1,errorName:"InsecureContext",errorMessage:"Insecure context."};let r;try{r=t?await navigator.mediaDevices.getUserMedia(t):await navigator.mediaDevices.getUserMedia({video:!0})}catch(t){return{ok:!1,errorName:t.name,errorMessage:t.message}}finally{null==r||r.getTracks().forEach((t=>{t.stop()}))}return{ok:!0}}get state(){if(!me(this,Ke,"f"))return"closed";if("pending"===me(this,Ke,"f"))return"opening";if("fulfilled"===me(this,Ke,"f"))return"opened";throw new Error("Unknown state.")}set ifSaveLastUsedCamera(t){t?Ti.isStorageAvailable("localStorage")?pe(this,He,!0,"f"):(pe(this,He,!1,"f"),console.warn("Local storage is unavailable")):pe(this,He,!1,"f")}get ifSaveLastUsedCamera(){return me(this,He,"f")}get isVideoPlaying(){return!(!me(this,je,"f")||me(this,je,"f").paused)&&"opened"===this.state}set tapFocusEventBoundEl(t){var e,i,r;if(!(t instanceof HTMLElement)&&null!=t)throw new TypeError("Invalid 'element'.");null===(e=me(this,ei,"f"))||void 0===e||e.removeEventListener("click",me(this,ti,"f")),null===(i=me(this,ei,"f"))||void 0===i||i.removeEventListener("touchend",me(this,ti,"f")),null===(r=me(this,ei,"f"))||void 0===r||r.removeEventListener("touchmove",me(this,$e,"f")),pe(this,ei,t,"f"),t&&(window.TouchEvent&&["Android","HarmonyOS","iPhone","iPad"].includes(xe.OS)?(t.addEventListener("touchend",me(this,ti,"f")),t.addEventListener("touchmove",me(this,$e,"f"))):t.addEventListener("click",me(this,ti,"f")))}get tapFocusEventBoundEl(){return me(this,ei,"f")}get disposed(){return me(this,ci,"f")}constructor(t){var e,i;Be.add(this),je.set(this,null),Ve.set(this,void 0),We.set(this,(()=>{"opened"===this.state&&me(this,si,"f").fire("resumed",null,{target:this,async:!1})})),Ne.set(this,(()=>{me(this,si,"f").fire("paused",null,{target:this,async:!1})})),Ue.set(this,void 0),Ge.set(this,void 0),this.cameraOpenTimeout=15e3,this._arrCameras=[],Ye.set(this,void 0),He.set(this,!1),this.ifSkipCameraInspection=!1,this.selectIOSRearMainCameraAsDefault=!1,Xe.set(this,void 0),ze.set(this,!0),qe.set(this,void 0),Ke.set(this,void 0),Ze.set(this,!1),this._focusParameters={maxTimeout:400,minTimeout:300,kTimeout:void 0,oldDistance:null,fds:null,isDoingFocus:0,taskBackToContinous:null,curFocusTaskId:0,focusCancelableTime:1500,defaultFocusAreaSizeRatio:6,focusBackToContinousTime:5e3,tapFocusMinDistance:null,tapFocusMaxDistance:null,focusArea:null,tempBufferContainer:null,defaultTempBufferContainerLenRatio:1/4},Je.set(this,!1),this._focusSupported=!0,this.calculateCoordInVideo=(t,e)=>{let i,r;const n=window.getComputedStyle(me(this,je,"f")).objectFit,s=this.getResolution(),o=me(this,je,"f").getBoundingClientRect(),a=o.left,h=o.top,{width:l,height:c}=me(this,je,"f").getBoundingClientRect();if(l<=0||c<=0)throw new Error("Unable to get video dimensions. Video may not be rendered on the page.");const u=l/c,d=s.width/s.height;let f=1;if("contain"===n)d>u?(f=l/s.width,i=(t-a)/f,r=(e-h-(c-l/d)/2)/f):(f=c/s.height,r=(e-h)/f,i=(t-a-(l-c*d)/2)/f);else{if("cover"!==n)throw new Error("Unsupported object-fit.");d>u?(f=c/s.height,r=(e-h)/f,i=(t-a+(c*d-l)/2)/f):(f=l/s.width,i=(t-a)/f,r=(e-h+(l/d-c)/2)/f)}return{x:i,y:r}},Qe.set(this,!1),$e.set(this,(()=>{pe(this,Qe,!0,"f")})),ti.set(this,(async t=>{var e;if(me(this,Qe,"f"))return void pe(this,Qe,!1,"f");if(!me(this,Je,"f"))return;if(!this.isVideoPlaying)return;if(!me(this,Ve,"f"))return;if(!this._focusSupported)return;if(!this._focusParameters.fds&&(this._focusParameters.fds=null===(e=this.getCameraCapabilities())||void 0===e?void 0:e.focusDistance,!this._focusParameters.fds))return void(this._focusSupported=!1);if(null==this._focusParameters.kTimeout&&(this._focusParameters.kTimeout=(this._focusParameters.maxTimeout-this._focusParameters.minTimeout)/(1/this._focusParameters.fds.min-1/this._focusParameters.fds.max)),1==this._focusParameters.isDoingFocus)return;let i,r;if(this._focusParameters.taskBackToContinous&&(clearTimeout(this._focusParameters.taskBackToContinous),this._focusParameters.taskBackToContinous=null),t instanceof MouseEvent)i=t.clientX,r=t.clientY;else{if(!(t instanceof TouchEvent))throw new Error("Unknown event type.");if(!t.changedTouches.length)return;i=t.changedTouches[0].clientX,r=t.changedTouches[0].clientY}const n=this.getResolution(),s=2*Math.round(Math.min(n.width,n.height)/this._focusParameters.defaultFocusAreaSizeRatio/2);let o;try{o=this.calculateCoordInVideo(i,r)}catch(t){}if(o.x<0||o.x>n.width||o.y<0||o.y>n.height)return;const a={x:o.x+"px",y:o.y+"px"},h=s+"px",l=h;let c;Ti._onLog&&(c=Date.now());try{await me(this,Be,"m",wi).call(this,a,h,l,this._focusParameters.tapFocusMinDistance,this._focusParameters.tapFocusMaxDistance)}catch(t){if(Ti._onLog)throw Ti._onLog(t),t}Ti._onLog&&Ti._onLog(`Tap focus costs: ${Date.now()-c} ms`),this._focusParameters.taskBackToContinous=setTimeout((()=>{var t;Ti._onLog&&Ti._onLog("Back to continuous focus."),null===(t=me(this,Ve,"f"))||void 0===t||t.applyConstraints({advanced:[{focusMode:"continuous"}]}).catch((()=>{}))}),this._focusParameters.focusBackToContinousTime),me(this,si,"f").fire("tapfocus",null,{target:this,async:!1})})),ei.set(this,null),ii.set(this,1),ri.set(this,{x:0,y:0}),this.updateVideoElWhenSoftwareScaled=()=>{if(!me(this,je,"f"))return;const t=me(this,ii,"f");if(t<1)throw new RangeError("Invalid scale value.");if(1===t)me(this,je,"f").style.transform="";else{const e=window.getComputedStyle(me(this,je,"f")).objectFit,i=me(this,je,"f").videoWidth,r=me(this,je,"f").videoHeight,{width:n,height:s}=me(this,je,"f").getBoundingClientRect();if(n<=0||s<=0)throw new Error("Unable to get video dimensions. Video may not be rendered on the page.");const o=n/s,a=i/r;let h=1;"contain"===e?h=oo?s/(i/t):n/(r/t));const l=h*(1-1/t)*(i/2-me(this,ri,"f").x),c=h*(1-1/t)*(r/2-me(this,ri,"f").y);me(this,je,"f").style.transform=`translate(${l}px, ${c}px) scale(${t})`}},ni.set(this,(function(){if(!(this.data instanceof Uint8Array||this.data instanceof Uint8ClampedArray))throw new TypeError("Invalid data.");if("number"!=typeof this.width||this.width<=0)throw new Error("Invalid width.");if("number"!=typeof this.height||this.height<=0)throw new Error("Invalid height.");const t=document.createElement("canvas");let e;if(t.width=this.width,t.height=this.height,this.pixelFormat===Ee.GREY){e=new Uint8ClampedArray(this.width*this.height*4);for(let t=0;t{var t,e;if("visible"===document.visibilityState){if(Ti._onLog&&Ti._onLog("document visible. video paused: "+(null===(t=me(this,je,"f"))||void 0===t?void 0:t.paused)),"opening"==this.state||"opened"==this.state){let t=!1;if(!this.isVideoPlaying){Ti._onLog&&Ti._onLog("document visible. Not auto resume. 1st resume start.");try{await this.resume(),t=!0}catch(t){Ti._onLog&&Ti._onLog("document visible. 1st resume video failed, try open instead.")}t||await me(this,Be,"m",mi).call(this)}if(await new Promise((t=>setTimeout(t,300))),!this.isVideoPlaying){Ti._onLog&&Ti._onLog("document visible. 1st open failed. 2rd resume start."),t=!1;try{await this.resume(),t=!0}catch(t){Ti._onLog&&Ti._onLog("document visible. 2rd resume video failed, try open instead.")}t||await me(this,Be,"m",mi).call(this)}}}else"hidden"===document.visibilityState&&(Ti._onLog&&Ti._onLog("document hidden. video paused: "+(null===(e=me(this,je,"f"))||void 0===e?void 0:e.paused)),"opening"==this.state||"opened"==this.state&&this.isVideoPlaying&&this.pause())})),ci.set(this,!1),(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia)||setTimeout((()=>{Ti.onWarning&&Ti.onWarning("The browser is too old or the page is loaded from an insecure origin.")}),0),this.defaultConstraints={video:{facingMode:{ideal:"environment"}}},this.resetMediaStreamConstraints(),t instanceof HTMLVideoElement&&this.setVideoEl(t),pe(this,si,new Ci,"f"),this.imageDataGetter=new Fe,document.addEventListener("visibilitychange",me(this,li,"f"))}setVideoEl(t){if(!(t&&t instanceof HTMLVideoElement))throw new Error("Invalid 'videoEl'.");t.addEventListener("play",me(this,We,"f")),t.addEventListener("pause",me(this,Ne,"f")),pe(this,je,t,"f")}getVideoEl(){return me(this,je,"f")}releaseVideoEl(){var t,e;null===(t=me(this,je,"f"))||void 0===t||t.removeEventListener("play",me(this,We,"f")),null===(e=me(this,je,"f"))||void 0===e||e.removeEventListener("pause",me(this,Ne,"f")),pe(this,je,null,"f")}isVideoLoaded(){return!!me(this,je,"f")&&4==me(this,je,"f").readyState}async open(){if(me(this,qe,"f")&&!me(this,ze,"f")){if("pending"===me(this,Ke,"f"))return me(this,qe,"f");if("fulfilled"===me(this,Ke,"f"))return}me(this,si,"f").fire("before:open",null,{target:this}),await me(this,Be,"m",mi).call(this),me(this,si,"f").fire("played",null,{target:this,async:!1}),me(this,si,"f").fire("opened",null,{target:this,async:!1})}async close(){if("closed"===this.state)return;me(this,si,"f").fire("before:close",null,{target:this});const t=me(this,qe,"f");if(me(this,Be,"m",vi).call(this),t&&"pending"===me(this,Ke,"f")){try{await t}catch(t){}if(!1===me(this,ze,"f")){const t=new Error("'close()' was interrupted.");throw t.name="AbortError",t}}pe(this,qe,null,"f"),pe(this,Ke,null,"f"),me(this,si,"f").fire("closed",null,{target:this,async:!1})}pause(){if(!this.isVideoLoaded())throw new Error("Video is not loaded.");if("opened"!==this.state)throw new Error("Camera or video is not open.");me(this,je,"f").pause()}async resume(){if(!this.isVideoLoaded())throw new Error("Video is not loaded.");if("opened"!==this.state)throw new Error("Camera or video is not open.");await me(this,je,"f").play()}async setCamera(t){if("string"!=typeof t)throw new TypeError("Invalid 'deviceId'.");if("object"!=typeof me(this,Ue,"f").video&&(me(this,Ue,"f").video={}),delete me(this,Ue,"f").video.facingMode,me(this,Ue,"f").video.deviceId={exact:t},!("closed"===this.state||this.videoSrc||"opening"===this.state&&me(this,ze,"f"))){me(this,si,"f").fire("before:camera:change",[],{target:this,async:!1}),await me(this,Be,"m",pi).call(this);try{this.resetSoftwareScale()}catch(t){}return me(this,Ge,"f")}}async switchToFrontCamera(t){if("object"!=typeof me(this,Ue,"f").video&&(me(this,Ue,"f").video={}),(null==t?void 0:t.resolution)&&(me(this,Ue,"f").video.width={ideal:t.resolution.width},me(this,Ue,"f").video.height={ideal:t.resolution.height}),delete me(this,Ue,"f").video.deviceId,me(this,Ue,"f").video.facingMode={exact:"user"},pe(this,Ye,null,"f"),!("closed"===this.state||this.videoSrc||"opening"===this.state&&me(this,ze,"f"))){me(this,si,"f").fire("before:camera:change",[],{target:this,async:!1}),me(this,Be,"m",pi).call(this);try{this.resetSoftwareScale()}catch(t){}return me(this,Ge,"f")}}getCamera(){var t;if(me(this,Ge,"f"))return me(this,Ge,"f");{let e=(null===(t=me(this,Ue,"f").video)||void 0===t?void 0:t.deviceId)||"";if(e){e=e.exact||e.ideal||e;for(let t of this._arrCameras)if(t.deviceId===e)return JSON.parse(JSON.stringify(t))}return{deviceId:"",label:"",_checked:!1}}}async _getCameras(t){var e,i;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))throw new Error("Failed to access the camera because the browser is too old or the page is loaded from an insecure origin.");let r;if(t){let t=await navigator.mediaDevices.getUserMedia({video:!0});r=(await navigator.mediaDevices.enumerateDevices()).filter((t=>"videoinput"===t.kind)),t.getTracks().forEach((t=>{t.stop()}))}else r=(await navigator.mediaDevices.enumerateDevices()).filter((t=>"videoinput"===t.kind));const n=[],s=[];if(this._arrCameras)for(let t of this._arrCameras)t._checked&&s.push(t);for(let t=0;t"videoinput"===t.kind));return i&&i.length&&!i[0].deviceId?this._getCameras(!0):this._getCameras(!1)}async getAllCameras(){return this.getCameras()}async setResolution(t,e,i){if("number"!=typeof t||t<=0)throw new TypeError("Invalid 'width'.");if("number"!=typeof e||e<=0)throw new TypeError("Invalid 'height'.");if("object"!=typeof me(this,Ue,"f").video&&(me(this,Ue,"f").video={}),i?(me(this,Ue,"f").video.width={exact:t},me(this,Ue,"f").video.height={exact:e}):(me(this,Ue,"f").video.width={ideal:t},me(this,Ue,"f").video.height={ideal:e}),"closed"===this.state||this.videoSrc||"opening"===this.state&&me(this,ze,"f"))return null;me(this,si,"f").fire("before:resolution:change",[],{target:this,async:!1}),await me(this,Be,"m",pi).call(this);try{this.resetSoftwareScale()}catch(t){}const r=this.getResolution();return{width:r.width,height:r.height}}getResolution(){if("opened"===this.state&&this.videoSrc&&me(this,je,"f"))return{width:me(this,je,"f").videoWidth,height:me(this,je,"f").videoHeight};if(me(this,Ve,"f")){const t=me(this,Ve,"f").getSettings();return{width:t.width,height:t.height}}if(this.isVideoLoaded())return{width:me(this,je,"f").videoWidth,height:me(this,je,"f").videoHeight};{const t={width:0,height:0};let e=me(this,Ue,"f").video.width||0,i=me(this,Ue,"f").video.height||0;return e&&(t.width=e.exact||e.ideal||e),i&&(t.height=i.exact||i.ideal||i),t}}async getResolutions(t){var e,i,r,n,s,o,a,h,l,c,u;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))throw new Error("Failed to access the camera because the browser is too old or the page is loaded from an insecure origin.");let d="";const f=(t,e)=>{const i=me(this,ai,"f").get(t);if(!i||!i.length)return!1;for(let t of i)if(t.width===e.width&&t.height===e.height)return!0;return!1};if(this._mediaStream){d=null===(u=me(this,Ge,"f"))||void 0===u?void 0:u.deviceId;let e=me(this,ai,"f").get(d);if(e&&!t)return JSON.parse(JSON.stringify(e));e=[],me(this,ai,"f").set(d,e),pe(this,Ze,!0,"f");try{for(let t of this.detectedResolutions){await me(this,Ve,"f").applyConstraints({width:{ideal:t.width},height:{ideal:t.height}}),me(this,Be,"m",di).call(this);const i=me(this,Ve,"f").getSettings(),r={width:i.width,height:i.height};f(d,r)||e.push({width:r.width,height:r.height})}}catch(t){throw me(this,Be,"m",vi).call(this),pe(this,Ze,!1,"f"),t}try{await me(this,Be,"m",mi).call(this)}catch(t){if("AbortError"===t.name)return e;throw t}finally{pe(this,Ze,!1,"f")}return e}{const e=async(t,e,i)=>{const r={video:{deviceId:{exact:t},width:{ideal:e},height:{ideal:i}}};let n=null;try{n=await navigator.mediaDevices.getUserMedia(r)}catch(t){return null}if(!n)return null;const s=n.getVideoTracks();let o=null;try{const t=s[0].getSettings();o={width:t.width,height:t.height}}catch(t){const e=document.createElement("video");e.srcObject=n,o={width:e.videoWidth,height:e.videoHeight},e.srcObject=null}return s.forEach((t=>{t.stop()})),o};let i=(null===(s=null===(n=null===(r=me(this,Ue,"f"))||void 0===r?void 0:r.video)||void 0===n?void 0:n.deviceId)||void 0===s?void 0:s.exact)||(null===(h=null===(a=null===(o=me(this,Ue,"f"))||void 0===o?void 0:o.video)||void 0===a?void 0:a.deviceId)||void 0===h?void 0:h.ideal)||(null===(c=null===(l=me(this,Ue,"f"))||void 0===l?void 0:l.video)||void 0===c?void 0:c.deviceId);if(!i)return[];let u=me(this,ai,"f").get(i);if(u&&!t)return JSON.parse(JSON.stringify(u));u=[],me(this,ai,"f").set(i,u);for(let t of this.detectedResolutions){const r=await e(i,t.width,t.height);r&&!f(i,r)&&u.push({width:r.width,height:r.height})}return u}}async setMediaStreamConstraints(t,e){if(!(t=>{return null!==t&&"[object Object]"===(e=t,Object.prototype.toString.call(e));var e})(t))throw new TypeError("Invalid 'mediaStreamConstraints'.");pe(this,Ue,JSON.parse(JSON.stringify(t)),"f"),pe(this,Ye,null,"f"),e&&me(this,Be,"m",pi).call(this)}getMediaStreamConstraints(){return JSON.parse(JSON.stringify(me(this,Ue,"f")))}resetMediaStreamConstraints(){pe(this,Ue,this.defaultConstraints?JSON.parse(JSON.stringify(this.defaultConstraints)):null,"f")}getCameraCapabilities(){if(!me(this,Ve,"f")||"opened"!==this.state)throw new Error("Camera is not open.");return me(this,Ve,"f").getCapabilities?me(this,Ve,"f").getCapabilities():{}}getCameraSettings(){if(!me(this,Ve,"f")||"opened"!==this.state)throw new Error("Camera is not open.");return me(this,Ve,"f").getSettings()}async turnOnTorch(){if(!me(this,Ve,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const t=this.getCameraCapabilities();if(!(null==t?void 0:t.torch))throw Error("Not supported.");await me(this,Ve,"f").applyConstraints({advanced:[{torch:!0}]})}async turnOffTorch(){if(!me(this,Ve,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const t=this.getCameraCapabilities();if(!(null==t?void 0:t.torch))throw Error("Not supported.");await me(this,Ve,"f").applyConstraints({advanced:[{torch:!1}]})}async setColorTemperature(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(!me(this,Ve,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const r=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.colorTemperature;if(!r)throw Error("Not supported.");return e&&(tr.max&&(t=r.max),t=Si(t,r.min,r.step,r.max)),await me(this,Ve,"f").applyConstraints({advanced:[{colorTemperature:t,whiteBalanceMode:"manual"}]}),t}getColorTemperature(){return this.getCameraSettings().colorTemperature||0}async setExposureCompensation(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(!me(this,Ve,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const r=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.exposureCompensation;if(!r)throw Error("Not supported.");return e&&(tr.max&&(t=r.max),t=Si(t,r.min,r.step,r.max)),await me(this,Ve,"f").applyConstraints({advanced:[{exposureCompensation:t}]}),t}getExposureCompensation(){return this.getCameraSettings().exposureCompensation||0}async setFrameRate(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(!me(this,Ve,"f")||"opened"!==this.state)throw new Error("Camera is not open.");let r=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.frameRate;if(!r)throw Error("Not supported.");e&&(tr.max&&(t=r.max));const n=this.getResolution();return await me(this,Ve,"f").applyConstraints({width:{ideal:Math.max(n.width,n.height)},frameRate:t}),t}getFrameRate(){return this.getCameraSettings().frameRate}async setFocus(t,e){if("object"!=typeof t||Array.isArray(t)||null==t)throw new TypeError("Invalid 'settings'.");if(!me(this,Ve,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const i=this.getCameraCapabilities(),r=null==i?void 0:i.focusMode,n=null==i?void 0:i.focusDistance;if(!r)throw Error("Not supported.");if("string"!=typeof t.mode)throw TypeError("Invalid 'mode'.");const s=t.mode.toLowerCase();if(!r.includes(s))throw Error("Unsupported focus mode.");if("manual"===s){if(!n)throw Error("Manual focus unsupported.");if(t.hasOwnProperty("distance")){let i=t.distance;e&&(in.max&&(i=n.max),i=Si(i,n.min,n.step,n.max)),this._focusParameters.focusArea=null,await me(this,Ve,"f").applyConstraints({advanced:[{focusMode:s,focusDistance:i}]})}else{if(!t.area)throw new Error("'distance' or 'area' should be specified in 'manual' mode.");{const e=t.area.centerPoint;let i=t.area.width,r=t.area.height;if(!i||!r){const t=this.getResolution();i||(i=2*Math.round(Math.min(t.width,t.height)/this._focusParameters.defaultFocusAreaSizeRatio/2)+"px"),r||(r=2*Math.round(Math.min(t.width,t.height)/this._focusParameters.defaultFocusAreaSizeRatio/2)+"px")}this._focusParameters.focusArea={centerPoint:{x:e.x,y:e.y},width:i,height:r},await me(this,Be,"m",wi).call(this,e,i,r)}}}else this._focusParameters.focusArea=null,await me(this,Ve,"f").applyConstraints({advanced:[{focusMode:s}]})}getFocus(){const t=this.getCameraSettings(),e=t.focusMode;return e?"manual"===e?this._focusParameters.focusArea?{mode:"manual",area:JSON.parse(JSON.stringify(this._focusParameters.focusArea))}:{mode:"manual",distance:t.focusDistance}:{mode:e}:null}async enableTapToFocus(){pe(this,Je,!0,"f")}disableTapToFocus(){pe(this,Je,!1,"f")}isTapToFocusEnabled(){return me(this,Je,"f")}async setZoom(t){if("object"!=typeof t||Array.isArray(t)||null==t)throw new TypeError("Invalid 'settings'.");if("number"!=typeof t.factor)throw new TypeError("Illegal type of 'factor'.");if(t.factor<1)throw new RangeError("Invalid 'factor'.");if("opened"!==this.state)throw new Error("Video is not playing.");t.centerPoint?me(this,Be,"m",bi).call(this,t.centerPoint):this.resetScaleCenter();try{if(me(this,Be,"m",xi).call(this,me(this,ri,"f"))){const e=await this.setHardwareScale(t.factor,!0);let i=this.getHardwareScale();1==i&&1!=e&&(i=e),t.factor>i?this.setSoftwareScale(t.factor/i):this.setSoftwareScale(1)}else await this.setHardwareScale(1),this.setSoftwareScale(t.factor)}catch(e){const i=e.message||e;if("Not supported."!==i&&"Camera is not open."!==i)throw e;this.setSoftwareScale(t.factor)}}getZoom(){if("opened"!==this.state)throw new Error("Video is not playing.");let t=1;try{t=this.getHardwareScale()}catch(t){if("Camera is not open."!==(t.message||t))throw t}return{factor:t*me(this,ii,"f")}}async resetZoom(){await this.setZoom({factor:1})}async setHardwareScale(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(t<1)throw new RangeError("Invalid 'value'.");if(!me(this,Ve,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const r=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.zoom;if(!r)throw Error("Not supported.");return e&&(tr.max&&(t=r.max),t=Si(t,r.min,r.step,r.max)),await me(this,Ve,"f").applyConstraints({advanced:[{zoom:t}]}),t}getHardwareScale(){return this.getCameraSettings().zoom||1}setSoftwareScale(t,e){if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(t<1)throw new RangeError("Invalid 'value'.");if("opened"!==this.state)throw new Error("Video is not playing.");e&&me(this,Be,"m",bi).call(this,e),pe(this,ii,t,"f"),this.updateVideoElWhenSoftwareScaled()}getSoftwareScale(){return me(this,ii,"f")}resetScaleCenter(){if("opened"!==this.state)throw new Error("Video is not playing.");const t=this.getResolution();pe(this,ri,{x:t.width/2,y:t.height/2},"f")}resetSoftwareScale(){this.setSoftwareScale(1),this.resetScaleCenter()}getFrameData(t){if(this.disposed)throw Error("The 'Camera' instance has been disposed.");if(!this.isVideoLoaded())return null;if(me(this,Ze,"f"))return null;const e=Date.now();Ti._onLog&&Ti._onLog("getFrameData() START: "+e);const i=me(this,je,"f").videoWidth,r=me(this,je,"f").videoHeight;let n={sx:0,sy:0,sWidth:i,sHeight:r,dWidth:i,dHeight:r};(null==t?void 0:t.position)&&(n=JSON.parse(JSON.stringify(t.position)));let s=Ee.RGBA;(null==t?void 0:t.pixelFormat)&&(s=t.pixelFormat);let o=me(this,ii,"f");(null==t?void 0:t.scale)&&(o=t.scale);let a=me(this,ri,"f");if(null==t?void 0:t.scaleCenter){if("string"!=typeof t.scaleCenter.x||"string"!=typeof t.scaleCenter.y)throw new Error("Invalid scale center.");let e=0,n=0;if(t.scaleCenter.x.endsWith("px"))e=parseFloat(t.scaleCenter.x);else{if(!t.scaleCenter.x.endsWith("%"))throw new Error("Invalid scale center.");e=parseFloat(t.scaleCenter.x)/100*i}if(t.scaleCenter.y.endsWith("px"))n=parseFloat(t.scaleCenter.y);else{if(!t.scaleCenter.y.endsWith("%"))throw new Error("Invalid scale center.");n=parseFloat(t.scaleCenter.y)/100*r}if(isNaN(e)||isNaN(n))throw new Error("Invalid scale center.");a.x=Math.round(e),a.y=Math.round(n)}let h=null;if((null==t?void 0:t.bufferContainer)&&(h=t.bufferContainer),0==i||0==r)return null;1!==o&&(n.sWidth=Math.round(n.sWidth/o),n.sHeight=Math.round(n.sHeight/o),n.sx=Math.round((1-1/o)*a.x+n.sx/o),n.sy=Math.round((1-1/o)*a.y+n.sy/o));const l=this.imageDataGetter.getImageData(me(this,je,"f"),n,{pixelFormat:s,bufferContainer:h});if(!l)return null;const c=Date.now();return Ti._onLog&&Ti._onLog("getFrameData() END: "+c),{data:l.data,width:l.width,height:l.height,pixelFormat:l.pixelFormat,timeSpent:c-e,timeStamp:c,toCanvas:me(this,ni,"f")}}on(t,e){if(!me(this,oi,"f").includes(t.toLowerCase()))throw new Error(`Event '${t}' does not exist.`);me(this,si,"f").on(t,e)}off(t,e){me(this,si,"f").off(t,e)}async dispose(){this.tapFocusEventBoundEl=null,await this.close(),this.releaseVideoEl(),me(this,si,"f").dispose(),this.imageDataGetter.dispose(),document.removeEventListener("visibilitychange",me(this,li,"f")),pe(this,ci,!0,"f")}}var Ei,Oi,Ai,Ii,Li,Di,Mi,Fi,Pi,ki,Ri,Bi,ji,Vi,Wi,Ni,Ui,Gi,Yi,Hi,Xi,zi,qi,Ki,Zi,Ji,Qi,$i,tr,er,ir,rr,nr,sr,or;je=new WeakMap,Ve=new WeakMap,We=new WeakMap,Ne=new WeakMap,Ue=new WeakMap,Ge=new WeakMap,Ye=new WeakMap,He=new WeakMap,Xe=new WeakMap,ze=new WeakMap,qe=new WeakMap,Ke=new WeakMap,Ze=new WeakMap,Je=new WeakMap,Qe=new WeakMap,$e=new WeakMap,ti=new WeakMap,ei=new WeakMap,ii=new WeakMap,ri=new WeakMap,ni=new WeakMap,si=new WeakMap,oi=new WeakMap,ai=new WeakMap,hi=new WeakMap,li=new WeakMap,ci=new WeakMap,Be=new WeakSet,ui=async function(){const t=this.getMediaStreamConstraints();if("boolean"==typeof t.video&&(t.video={}),t.video.deviceId);else if(me(this,Ye,"f"))delete t.video.facingMode,t.video.deviceId={exact:me(this,Ye,"f")};else if(this.ifSaveLastUsedCamera&&Ti.isStorageAvailable&&window.localStorage.getItem("dce_last_camera_id")){delete t.video.facingMode,t.video.deviceId={ideal:window.localStorage.getItem("dce_last_camera_id")};const e=JSON.parse(window.localStorage.getItem("dce_last_apply_width")),i=JSON.parse(window.localStorage.getItem("dce_last_apply_height"));e&&i&&(t.video.width=e,t.video.height=i)}else if(this.ifSkipCameraInspection);else{const e=async t=>{let e=null;return"environment"===t&&["Android","HarmonyOS","iPhone","iPad"].includes(xe.OS)?(await this._getCameras(!1),me(this,Be,"m",di).call(this),e=Ti.findBestCamera(this._arrCameras,"environment",{getMainCameraInIOS:this.selectIOSRearMainCameraAsDefault})):t||["Android","HarmonyOS","iPhone","iPad"].includes(xe.OS)||(await this._getCameras(!1),me(this,Be,"m",di).call(this),e=Ti.findBestCamera(this._arrCameras,null,{getMainCameraInIOS:this.selectIOSRearMainCameraAsDefault})),e};let i=t.video.facingMode;i instanceof Array&&i.length&&(i=i[0]),"object"==typeof i&&(i=i.exact||i.ideal);const r=await e(i);r&&(delete t.video.facingMode,t.video.deviceId={exact:r})}return t},di=function(){if(me(this,ze,"f")){const t=new Error("The operation was interrupted.");throw t.name="AbortError",t}},fi=async function(t){var e,i;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))throw new Error("Failed to access the camera because the browser is too old or the page is loaded from an insecure origin.");let r;try{Ti._onLog&&Ti._onLog("======try getUserMedia========");let e=[0,500,1e3,2e3],i=null;const n=async t=>{for(let n of e){n&&(await new Promise((t=>setTimeout(t,n))),me(this,Be,"m",di).call(this));try{Ti._onLog&&Ti._onLog("ask "+JSON.stringify(t)),r=await navigator.mediaDevices.getUserMedia(t),me(this,Be,"m",di).call(this);break}catch(t){if("NotFoundError"===t.name||"NotAllowedError"===t.name||"AbortError"===t.name||"OverconstrainedError"===t.name)throw t;i=t,Ti._onLog&&Ti._onLog(t.message||t)}}};if(await n(t),r||"object"!=typeof t.video||(t.video.deviceId&&(delete t.video.deviceId,await n(t)),!r&&t.video.facingMode&&(delete t.video.facingMode,await n(t)),r||!t.video.width&&!t.video.height||(delete t.video.width,delete t.video.height,await n(t))),!r)throw i;return r}catch(t){throw null==r||r.getTracks().forEach((t=>{t.stop()})),"NotFoundError"===t.name&&(DOMException?t=new DOMException("No camera available, please use a device with an accessible camera.",t.name):(t=new Error("No camera available, please use a device with an accessible camera.")).name="NotFoundError"),t}},gi=function(){this._mediaStream&&(this._mediaStream.getTracks().forEach((t=>{t.stop()})),this._mediaStream=null),pe(this,Ve,null,"f")},mi=async function(){pe(this,ze,!1,"f");const t=pe(this,Xe,Symbol(),"f");if(me(this,qe,"f")&&"pending"===me(this,Ke,"f")){try{await me(this,qe,"f")}catch(t){}me(this,Be,"m",di).call(this)}if(t!==me(this,Xe,"f"))return;const e=pe(this,qe,(async()=>{pe(this,Ke,"pending","f");try{if(this.videoSrc){if(!me(this,je,"f"))throw new Error("'videoEl' should be set.");await Ti.playVideo(me(this,je,"f"),this.videoSrc,this.cameraOpenTimeout),me(this,Be,"m",di).call(this)}else{let t=await me(this,Be,"m",ui).call(this);me(this,Be,"m",gi).call(this);let e=await me(this,Be,"m",fi).call(this,t);await this._getCameras(!1),me(this,Be,"m",di).call(this);const i=()=>{const t=e.getVideoTracks();let i,r;if(t.length&&(i=t[0]),i){const t=i.getSettings();if(t)for(let e of this._arrCameras)if(t.deviceId===e.deviceId){e._checked=!0,e.label=i.label,r=e;break}}return r},r=me(this,Ue,"f");if("object"==typeof r.video){let n=r.video.facingMode;if(n instanceof Array&&n.length&&(n=n[0]),"object"==typeof n&&(n=n.exact||n.ideal),!(me(this,Ye,"f")||this.ifSaveLastUsedCamera&&Ti.isStorageAvailable&&window.localStorage.getItem("dce_last_camera_id")||this.ifSkipCameraInspection||r.video.deviceId)){const r=i(),s=Ti.findBestCamera(this._arrCameras,n,{getMainCameraInIOS:this.selectIOSRearMainCameraAsDefault});s&&s!=(null==r?void 0:r.deviceId)&&(e.getTracks().forEach((t=>{t.stop()})),t.video.deviceId={exact:s},e=await me(this,Be,"m",fi).call(this,t),me(this,Be,"m",di).call(this))}}const n=i();(null==n?void 0:n.deviceId)&&(pe(this,Ye,n&&n.deviceId,"f"),this.ifSaveLastUsedCamera&&Ti.isStorageAvailable&&(window.localStorage.setItem("dce_last_camera_id",me(this,Ye,"f")),"object"==typeof t.video&&t.video.width&&t.video.height&&(window.localStorage.setItem("dce_last_apply_width",JSON.stringify(t.video.width)),window.localStorage.setItem("dce_last_apply_height",JSON.stringify(t.video.height))))),me(this,je,"f")&&(await Ti.playVideo(me(this,je,"f"),e,this.cameraOpenTimeout),me(this,Be,"m",di).call(this)),this._mediaStream=e;const s=e.getVideoTracks();(null==s?void 0:s.length)&&pe(this,Ve,s[0],"f"),pe(this,Ge,n,"f")}}catch(t){throw me(this,Be,"m",vi).call(this),pe(this,Ke,null,"f"),t}pe(this,Ke,"fulfilled","f")})(),"f");return e},pi=async function(){var t;if("closed"===this.state||this.videoSrc)return;const e=null===(t=me(this,Ge,"f"))||void 0===t?void 0:t.deviceId,i=this.getResolution();await me(this,Be,"m",mi).call(this);const r=this.getResolution();e&&e!==me(this,Ge,"f").deviceId&&me(this,si,"f").fire("camera:changed",[me(this,Ge,"f").deviceId,e],{target:this,async:!1}),i.width==r.width&&i.height==r.height||me(this,si,"f").fire("resolution:changed",[{width:r.width,height:r.height},{width:i.width,height:i.height}],{target:this,async:!1}),me(this,si,"f").fire("played",null,{target:this,async:!1})},vi=function(){me(this,Be,"m",gi).call(this),pe(this,Ge,null,"f"),me(this,je,"f")&&(me(this,je,"f").srcObject=null,this.videoSrc&&(me(this,je,"f").pause(),me(this,je,"f").currentTime=0)),pe(this,ze,!0,"f");try{this.resetSoftwareScale()}catch(t){}},yi=async function t(e,i){const r=t=>{if(!me(this,Ve,"f")||!this.isVideoPlaying||t.focusTaskId!=this._focusParameters.curFocusTaskId){me(this,Ve,"f")&&this.isVideoPlaying||(this._focusParameters.isDoingFocus=0);const e=new Error(`Focus task ${t.focusTaskId} canceled.`);throw e.name="DeprecatedTaskError",e}1===this._focusParameters.isDoingFocus&&Date.now()-t.timeStart>this._focusParameters.focusCancelableTime&&(this._focusParameters.isDoingFocus=-1)};let n;i=Si(i,this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),await me(this,Ve,"f").applyConstraints({advanced:[{focusMode:"manual",focusDistance:i}]}),r(e),n=null==this._focusParameters.oldDistance?this._focusParameters.kTimeout*Math.max(Math.abs(1/this._focusParameters.fds.min-1/i),Math.abs(1/this._focusParameters.fds.max-1/i))+this._focusParameters.minTimeout:this._focusParameters.kTimeout*Math.abs(1/this._focusParameters.oldDistance-1/i)+this._focusParameters.minTimeout,this._focusParameters.oldDistance=i,await new Promise((t=>{setTimeout(t,n)})),r(e);let s=e.focusL-e.focusW/2,o=e.focusT-e.focusH/2,a=e.focusW,h=e.focusH;const l=this.getResolution();s=Math.round(s),o=Math.round(o),a=Math.round(a),h=Math.round(h),a>l.width&&(a=l.width),h>l.height&&(h=l.height),s<0?s=0:s+a>l.width&&(s=l.width-a),o<0?o=0:o+h>l.height&&(o=l.height-h);const c=4*l.width*l.height*this._focusParameters.defaultTempBufferContainerLenRatio,u=4*a*h;let d=this._focusParameters.tempBufferContainer;if(d){const t=d.length;c>t&&c>=u?d=new Uint8Array(c):u>t&&u>=c&&(d=new Uint8Array(u))}else d=this._focusParameters.tempBufferContainer=new Uint8Array(Math.max(c,u));if(!this.imageDataGetter.getImageData(me(this,je,"f"),{sx:s,sy:o,sWidth:a,sHeight:h,dWidth:a,dHeight:h},{pixelFormat:Ee.RGBA,bufferContainer:d}))return me(this,Be,"m",t).call(this,e,i);const f=d;let g=0;for(let t=0,e=u-8;ta&&au)return await me(this,Be,"m",t).call(this,e,o,a,n,s,c,u)}else{let h=await me(this,Be,"m",yi).call(this,e,c);if(a>h)return await me(this,Be,"m",t).call(this,e,o,a,n,s,c,h);if(a==h)return await me(this,Be,"m",t).call(this,e,o,a,c,h);let u=await me(this,Be,"m",yi).call(this,e,l);if(u>a&&ao.width||h<0||h>o.height)throw new Error("Invalid 'centerPoint'.");let l=0;if(e.endsWith("px"))l=parseFloat(e);else{if(!e.endsWith("%"))throw new Error("Invalid 'width'.");l=parseFloat(e)/100*o.width}if(isNaN(l)||l<0)throw new Error("Invalid 'width'.");let c=0;if(i.endsWith("px"))c=parseFloat(i);else{if(!i.endsWith("%"))throw new Error("Invalid 'height'.");c=parseFloat(i)/100*o.height}if(isNaN(c)||c<0)throw new Error("Invalid 'height'.");if(1!==me(this,ii,"f")){const t=me(this,ii,"f"),e=me(this,ri,"f");l/=t,c/=t,a=(1-1/t)*e.x+a/t,h=(1-1/t)*e.y+h/t}if(!this._focusSupported)throw new Error("Manual focus unsupported.");if(!this._focusParameters.fds&&(this._focusParameters.fds=null===(s=this.getCameraCapabilities())||void 0===s?void 0:s.focusDistance,!this._focusParameters.fds))throw this._focusSupported=!1,new Error("Manual focus unsupported.");null==this._focusParameters.kTimeout&&(this._focusParameters.kTimeout=(this._focusParameters.maxTimeout-this._focusParameters.minTimeout)/(1/this._focusParameters.fds.min-1/this._focusParameters.fds.max)),this._focusParameters.isDoingFocus=1;const u={focusL:a,focusT:h,focusW:l,focusH:c,focusTaskId:++this._focusParameters.curFocusTaskId,timeStart:Date.now()},d=async(t,e,i)=>{try{(null==e||ethis._focusParameters.fds.max)&&(i=this._focusParameters.fds.max),this._focusParameters.oldDistance=null;let r=Si(Math.sqrt(i*(e||this._focusParameters.fds.step)),this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),n=Si(Math.sqrt((e||this._focusParameters.fds.step)*r),this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),s=Si(Math.sqrt(r*i),this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),o=await me(this,Be,"m",yi).call(this,t,s),a=await me(this,Be,"m",yi).call(this,t,n),h=await me(this,Be,"m",yi).call(this,t,r);if(a>h&&ho&&a>o){let e=await me(this,Be,"m",yi).call(this,t,i);const n=await me(this,Be,"m",_i).call(this,t,r,h,i,e,s,o);return this._focusParameters.isDoingFocus=0,n}if(a==h&&hh){const e=await me(this,Be,"m",_i).call(this,t,r,h,s,o);return this._focusParameters.isDoingFocus=0,e}return d(t,e,i)}catch(t){if("DeprecatedTaskError"!==t.name)throw t}};return d(u,r,n)},bi=function(t){if("opened"!==this.state)throw new Error("Video is not playing.");if(!t||"string"!=typeof t.x||"string"!=typeof t.y)throw new Error("Invalid 'center'.");const e=this.getResolution();let i=0,r=0;if(t.x.endsWith("px"))i=parseFloat(t.x);else{if(!t.x.endsWith("%"))throw new Error("Invalid scale center.");i=parseFloat(t.x)/100*e.width}if(t.y.endsWith("px"))r=parseFloat(t.y);else{if(!t.y.endsWith("%"))throw new Error("Invalid scale center.");r=parseFloat(t.y)/100*e.height}if(isNaN(i)||isNaN(r))throw new Error("Invalid scale center.");pe(this,ri,{x:i,y:r},"f")},xi=function(t){if("opened"!==this.state)throw new Error("Video is not playing.");const e=this.getResolution();return t&&t.x==e.width/2&&t.y==e.height/2},Ti.browserInfo=xe,Ti.onWarning=null===(Re=null===window||void 0===window?void 0:window.console)||void 0===Re?void 0:Re.warn;class ar{constructor(t){Ei.add(this),Oi.set(this,void 0),Ai.set(this,0),Ii.set(this,void 0),Li.set(this,0),Di.set(this,!1),S(this,Oi,t,"f")}startCharging(){C(this,Di,"f")||(ar._onLog&&ar._onLog("start charging."),C(this,Ei,"m",Fi).call(this),S(this,Di,!0,"f"))}stopCharging(){C(this,Ii,"f")&&clearTimeout(C(this,Ii,"f")),C(this,Di,"f")&&(ar._onLog&&ar._onLog("stop charging."),S(this,Ai,Date.now()-C(this,Li,"f"),"f"),S(this,Di,!1,"f"))}}Oi=new WeakMap,Ai=new WeakMap,Ii=new WeakMap,Li=new WeakMap,Di=new WeakMap,Ei=new WeakSet,Mi=function(){t.cfd(1),ar._onLog&&ar._onLog("charge 1.")},Fi=function t(){0==C(this,Ai,"f")&&C(this,Ei,"m",Mi).call(this),S(this,Li,Date.now(),"f"),C(this,Ii,"f")&&clearTimeout(C(this,Ii,"f")),S(this,Ii,setTimeout((()=>{S(this,Ai,0,"f"),C(this,Ei,"m",t).call(this)}),C(this,Oi,"f")-C(this,Ai,"f")),"f")};class hr{static beep(){if(!this.allowBeep)return;if(!this.beepSoundSource)return;let t,e=Date.now();if(!(e-C(this,Pi,"f",Bi)<100)){if(S(this,Pi,e,"f",Bi),C(this,Pi,"f",ki).size&&(t=C(this,Pi,"f",ki).values().next().value,this.beepSoundSource==t.src?(C(this,Pi,"f",ki).delete(t),t.play()):t=null),!t)if(C(this,Pi,"f",Ri).size<16){t=new Audio(this.beepSoundSource);let e=null,i=()=>{t.removeEventListener("loadedmetadata",i),t.play(),e=setTimeout((()=>{C(this,Pi,"f",Ri).delete(t)}),2e3*t.duration)};t.addEventListener("loadedmetadata",i),t.addEventListener("ended",(()=>{null!=e&&(clearTimeout(e),e=null),t.pause(),t.currentTime=0,C(this,Pi,"f",Ri).delete(t),C(this,Pi,"f",ki).add(t)}))}else C(this,Pi,"f",ji)||(S(this,Pi,!0,"f",ji),console.warn("The requested audio tracks exceed 16 and will not be played."));t&&C(this,Pi,"f",Ri).add(t)}}static vibrate(){if(this.allowVibrate){if(!navigator||!navigator.vibrate)throw new Error("Not supported.");navigator.vibrate(hr.vibrateDuration)}}}Pi=hr,ki={value:new Set},Ri={value:new Set},Bi={value:0},ji={value:!1},hr.allowBeep=!0,hr.beepSoundSource="data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA/+M4wAAAAAAAAAAAAEluZm8AAAAPAAAABQAAAkAAgICAgICAgICAgICAgICAgICAgKCgoKCgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4ODg4P//////////////////////////AAAAAExhdmM1OC41NAAAAAAAAAAAAAAAACQEUQAAAAAAAAJAk0uXRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MYxAANQAbGeUEQAAHZYZ3fASqD4P5TKBgocg+Bw/8+CAYBA4XB9/4EBAEP4nB9+UOf/6gfUCAIKyjgQ/Kf//wfswAAAwQA/+MYxAYOqrbdkZGQAMA7DJLCsQxNOij///////////+tv///3RWiZGBEhsf/FO/+LoCSFs1dFVS/g8f/4Mhv0nhqAieHleLy/+MYxAYOOrbMAY2gABf/////////////////usPJ66R0wI4boY9/8jQYg//g2SPx1M0N3Z0kVJLIs///Uw4aMyvHJJYmPBYG/+MYxAgPMALBucAQAoGgaBoFQVBUFQWDv6gZBUFQVBUGgaBr5YSgqCoKhIGg7+IQVBUFQVBoGga//SsFSoKnf/iVTEFNRTMu/+MYxAYAAANIAAAAADEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",hr.allowVibrate=!0,hr.vibrateDuration=300;const lr=new Map([[Ee.GREY,o.IPF_GRAYSCALED],[Ee.RGBA,o.IPF_ABGR_8888]]),cr="function"==typeof BigInt?{BF_NULL:BigInt(0),BF_ALL:BigInt(0x10000000000000000),BF_DEFAULT:BigInt(4265345023),BF_ONED:BigInt(3147775),BF_GS1_DATABAR:BigInt(260096),BF_CODE_39:BigInt(1),BF_CODE_128:BigInt(2),BF_CODE_93:BigInt(4),BF_CODABAR:BigInt(8),BF_ITF:BigInt(16),BF_EAN_13:BigInt(32),BF_EAN_8:BigInt(64),BF_UPC_A:BigInt(128),BF_UPC_E:BigInt(256),BF_INDUSTRIAL_25:BigInt(512),BF_CODE_39_EXTENDED:BigInt(1024),BF_GS1_DATABAR_OMNIDIRECTIONAL:BigInt(2048),BF_GS1_DATABAR_TRUNCATED:BigInt(4096),BF_GS1_DATABAR_STACKED:BigInt(8192),BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL:BigInt(16384),BF_GS1_DATABAR_EXPANDED:BigInt(32768),BF_GS1_DATABAR_EXPANDED_STACKED:BigInt(65536),BF_GS1_DATABAR_LIMITED:BigInt(131072),BF_PATCHCODE:BigInt(262144),BF_CODE_32:BigInt(16777216),BF_PDF417:BigInt(33554432),BF_QR_CODE:BigInt(67108864),BF_DATAMATRIX:BigInt(134217728),BF_AZTEC:BigInt(268435456),BF_MAXICODE:BigInt(536870912),BF_MICRO_QR:BigInt(1073741824),BF_MICRO_PDF417:BigInt(524288),BF_GS1_COMPOSITE:BigInt(2147483648),BF_MSI_CODE:BigInt(1048576),BF_CODE_11:BigInt(2097152),BF_TWO_DIGIT_ADD_ON:BigInt(4194304),BF_FIVE_DIGIT_ADD_ON:BigInt(8388608),BF_MATRIX_25:BigInt(68719476736),BF_POSTALCODE:BigInt(0x3f0000000000000),BF_NONSTANDARD_BARCODE:BigInt(4294967296),BF_USPSINTELLIGENTMAIL:BigInt(4503599627370496),BF_POSTNET:BigInt(9007199254740992),BF_PLANET:BigInt(0x40000000000000),BF_AUSTRALIANPOST:BigInt(0x80000000000000),BF_RM4SCC:BigInt(72057594037927940),BF_KIX:BigInt(0x200000000000000),BF_DOTCODE:BigInt(8589934592),BF_PHARMACODE_ONE_TRACK:BigInt(17179869184),BF_PHARMACODE_TWO_TRACK:BigInt(34359738368),BF_PHARMACODE:BigInt(51539607552)}:{BF_NULL:"0x00",BF_ALL:"0xFFFFFFFFFFFFFFFF",BF_DEFAULT:"0xFE3BFFFF",BF_ONED:"0x003007FF",BF_GS1_DATABAR:"0x0003F800",BF_CODE_39:"0x1",BF_CODE_128:"0x2",BF_CODE_93:"0x4",BF_CODABAR:"0x8",BF_ITF:"0x10",BF_EAN_13:"0x20",BF_EAN_8:"0x40",BF_UPC_A:"0x80",BF_UPC_E:"0x100",BF_INDUSTRIAL_25:"0x200",BF_CODE_39_EXTENDED:"0x400",BF_GS1_DATABAR_OMNIDIRECTIONAL:"0x800",BF_GS1_DATABAR_TRUNCATED:"0x1000",BF_GS1_DATABAR_STACKED:"0x2000",BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL:"0x4000",BF_GS1_DATABAR_EXPANDED:"0x8000",BF_GS1_DATABAR_EXPANDED_STACKED:"0x10000",BF_GS1_DATABAR_LIMITED:"0x20000",BF_PATCHCODE:"0x00040000",BF_CODE_32:"0x01000000",BF_PDF417:"0x02000000",BF_QR_CODE:"0x04000000",BF_DATAMATRIX:"0x08000000",BF_AZTEC:"0x10000000",BF_MAXICODE:"0x20000000",BF_MICRO_QR:"0x40000000",BF_MICRO_PDF417:"0x00080000",BF_GS1_COMPOSITE:"0x80000000",BF_MSI_CODE:"0x100000",BF_CODE_11:"0x200000",BF_TWO_DIGIT_ADD_ON:"0x400000",BF_FIVE_DIGIT_ADD_ON:"0x800000",BF_MATRIX_25:"0x1000000000",BF_POSTALCODE:"0x3F0000000000000",BF_NONSTANDARD_BARCODE:"0x100000000",BF_USPSINTELLIGENTMAIL:"0x10000000000000",BF_POSTNET:"0x20000000000000",BF_PLANET:"0x40000000000000",BF_AUSTRALIANPOST:"0x80000000000000",BF_RM4SCC:"0x100000000000000",BF_KIX:"0x200000000000000",BF_DOTCODE:"0x200000000",BF_PHARMACODE_ONE_TRACK:"0x400000000",BF_PHARMACODE_TWO_TRACK:"0x800000000",BF_PHARMACODE:"0xC00000000"};class ur extends g{static set _onLog(t){S(ur,Wi,t,"f",Ni),Ti._onLog=t,ar._onLog=t}static get _onLog(){return C(ur,Wi,"f",Ni)}static async detectEnvironment(){return await(async()=>({wasm:L,worker:D,getUserMedia:M,camera:await F(),browser:I.browser,version:I.version,OS:I.OS}))()}static async testCameraAccess(){const t=await Ti.testCameraAccess();return t.ok?{ok:!0,message:"Successfully accessed the camera."}:"InsecureContext"===t.errorName?{ok:!1,message:"Insecure context."}:"OverconstrainedError"===t.errorName||"NotFoundError"===t.errorName?{ok:!1,message:"No camera detected."}:"NotAllowedError"===t.errorName?{ok:!1,message:"No permission to access camera."}:"AbortError"===t.errorName?{ok:!1,message:"Some problem occurred which prevented the device from being used."}:"NotReadableError"===t.errorName?{ok:!1,message:"A hardware error occurred."}:"SecurityError"===t.errorName?{ok:!1,message:"User media support is disabled."}:{ok:!1,message:t.errorMessage}}static async createInstance(e){var r,n;if(e&&!(e instanceof ge))throw new TypeError("Invalid view.");if(null===(r=i.license)||void 0===r?void 0:r.LicenseManager){if(!(null===(n=i.license)||void 0===n?void 0:n.LicenseManager.bCallInitLicense))throw new Error("License is not set.");await t.loadWasm(["license"]),await i.license.dynamsoft()}const s=new ur(e);return ur.onWarning&&(location&&"file:"===location.protocol?setTimeout((()=>{ur.onWarning&&ur.onWarning({id:1,message:"The page is opened over file:// and Dynamsoft Camera Enhancer may not work properly. Please open the page via https://."})}),0):!1!==window.isSecureContext&&navigator&&navigator.mediaDevices&&navigator.mediaDevices.getUserMedia||setTimeout((()=>{ur.onWarning&&ur.onWarning({id:2,message:"Dynamsoft Camera Enhancer may not work properly in a non-secure context. Please open the page via https://."})}),0)),s}get video(){return this.cameraManager.getVideoEl()}set videoSrc(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraView&&(this.cameraView._hideDefaultSelection=!0),this.cameraManager.videoSrc=t}get videoSrc(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.videoSrc}set ifSaveLastUsedCamera(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraManager.ifSaveLastUsedCamera=t}get ifSaveLastUsedCamera(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.ifSaveLastUsedCamera}set ifSkipCameraInspection(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraManager.ifSkipCameraInspection=t}get ifSkipCameraInspection(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.ifSkipCameraInspection}set cameraOpenTimeout(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraManager.cameraOpenTimeout=t}get cameraOpenTimeout(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.cameraOpenTimeout}set singleFrameMode(t){if(!["disabled","image","camera"].includes(t))throw new Error("Invalid value.");if(this.isOpen())throw new Error("It is not allowed to change `singleFrameMode` when the camera is open.");S(this,Yi,t,"f")}get singleFrameMode(){return C(this,Yi,"f")}get _isFetchingStarted(){return C(this,Zi,"f")}get disposed(){return C(this,er,"f")}constructor(t){if(super(),Vi.add(this),Ui.set(this,"closed"),Gi.set(this,void 0),this.isTorchOn=void 0,Yi.set(this,void 0),this._onCameraSelChange=async()=>{this.isOpen()&&this.cameraView&&!this.cameraView.disposed&&await this.selectCamera(this.cameraView._selCam.value)},this._onResolutionSelChange=async()=>{if(!this.isOpen())return;if(!this.cameraView||this.cameraView.disposed)return;let t,e;if(this.cameraView._selRsl&&-1!=this.cameraView._selRsl.selectedIndex){let i=this.cameraView._selRsl.options[this.cameraView._selRsl.selectedIndex];t=parseInt(i.getAttribute("data-width")),e=parseInt(i.getAttribute("data-height"))}await this.setResolution({width:t,height:e})},this._onCloseBtnClick=async()=>{this.isOpen()&&this.cameraView&&!this.cameraView.disposed&&this.close()},Hi.set(this,((t,e,i,r)=>{const n=Date.now(),s={sx:r.x,sy:r.y,sWidth:r.width,sHeight:r.height,dWidth:r.width,dHeight:r.height},a=Math.max(s.dWidth,s.dHeight);if(this.canvasSizeLimit&&a>this.canvasSizeLimit){const t=this.canvasSizeLimit/a;s.dWidth>s.dHeight?(s.dWidth=this.canvasSizeLimit,s.dHeight=Math.round(s.dHeight*t)):(s.dWidth=Math.round(s.dWidth*t),s.dHeight=this.canvasSizeLimit)}const h=this.cameraManager.imageDataGetter.getImageData(t,s,{pixelFormat:this.getPixelFormat()===o.IPF_GRAYSCALED?Ee.GREY:Ee.RGBA});let l=null;if(h){const t=Date.now();let o;if(h.pixelFormat===Ee.GREY)o=h.width;else o=4*h.width;let a=!0;0===s.sx&&0===s.sy&&s.sWidth===e&&s.sHeight===i&&(a=!1),l={bytes:h.data,width:h.width,height:h.height,stride:o,format:lr.get(h.pixelFormat),tag:{imageId:this._imageId==Number.MAX_VALUE?this._imageId=0:++this._imageId,type:m.ITT_FILE_IMAGE,isCropped:a,cropRegion:{left:r.x,top:r.y,right:r.x+r.width,bottom:r.y+r.height,isMeasuredInPercentage:!1},originalWidth:e,originalHeight:i,currentWidth:h.width,currentHeight:h.height,timeSpent:t-n,timeStamp:t},toCanvas:C(this,Xi,"f"),isDCEFrame:!0}}return l})),this._onSingleFrameAcquired=t=>{let e;e=this.cameraView?this.cameraView.getConvertedRegion():wt.convert(C(this,qi,"f"),t.width,t.height),e||(e={x:0,y:0,width:t.width,height:t.height});const i=C(this,Hi,"f").call(this,t,t.width,t.height,e);C(this,Gi,"f").fire("singleFrameAcquired",[i],{async:!1,copy:!1})},Xi.set(this,(function(){if(!(this.bytes instanceof Uint8Array||this.bytes instanceof Uint8ClampedArray))throw new TypeError("Invalid bytes.");if("number"!=typeof this.width||this.width<=0)throw new Error("Invalid width.");if("number"!=typeof this.height||this.height<=0)throw new Error("Invalid height.");const t=document.createElement("canvas");let e;t.width=this.width,t.height=this.height;if(this.format===o.IPF_GRAYSCALED){e=new Uint8ClampedArray(this.width*this.height*4);for(let t=0;t{if(!this.video)return;const t=this.cameraManager.getSoftwareScale();if(t<1)throw new RangeError("Invalid scale value.");this.cameraView&&!this.cameraView.disposed?(this.video.style.transform=1===t?"":`scale(${t})`,this.cameraView._updateVideoContainer()):this.video.style.transform=1===t?"":`scale(${t})`},["iPhone","iPad","Android","HarmonyOS"].includes(I.OS)?this.cameraManager.setResolution(1280,720):this.cameraManager.setResolution(1920,1080),navigator&&navigator.mediaDevices&&navigator.mediaDevices.getUserMedia?this.singleFrameMode="disabled":this.singleFrameMode="image",t&&(this.setCameraView(t),t.cameraEnhancer=this),this._on("before:camera:change",(()=>{C(this,tr,"f").stopCharging();const t=this.cameraView;t&&!t.disposed&&(t._startLoading(),t.clearAllInnerDrawingItems())})),this._on("camera:changed",(()=>{this.clearBuffer()})),this._on("before:resolution:change",(()=>{const t=this.cameraView;t&&!t.disposed&&(t._startLoading(),t.clearAllInnerDrawingItems())})),this._on("resolution:changed",(()=>{this.clearBuffer(),t.eventHandler.fire("content:updated",null,{async:!1})})),this._on("paused",(()=>{C(this,tr,"f").stopCharging();const t=this.cameraView;t&&t.disposed})),this._on("resumed",(()=>{const t=this.cameraView;t&&t.disposed})),this._on("tapfocus",(()=>{C(this,Qi,"f").tapToFocus&&C(this,tr,"f").startCharging()})),this._intermediateResultReceiver={},this._intermediateResultReceiver.onTaskResultsReceived=async(t,e)=>{var i,r,n,s;if(C(this,Vi,"m",ir).call(this)||!this.isOpen()||this.isPaused())return;const o=t.intermediateResultUnits;ur._onLog&&(ur._onLog("intermediateResultUnits:"),ur._onLog(o));let a=!1,h=!1;for(let t of o){if(t.unitType===p.IRUT_DECODED_BARCODES&&t.decodedBarcodes.length){a=!0;break}t.unitType===p.IRUT_LOCALIZED_BARCODES&&t.localizedBarcodes.length&&(h=!0)}if(ur._onLog&&(ur._onLog("hasLocalizedBarcodes:"),ur._onLog(h)),C(this,Qi,"f").autoZoom||C(this,Qi,"f").enhancedFocus)if(a)C(this,$i,"f").autoZoomInFrameArray.length=0,C(this,$i,"f").autoZoomOutFrameCount=0,C(this,$i,"f").frameArrayInIdealZoom.length=0,C(this,$i,"f").autoFocusFrameArray.length=0;else{const t=async t=>{await this.setZoom(t),C(this,Qi,"f").autoZoom&&C(this,tr,"f").startCharging()},e=async t=>{await this.setFocus(t),C(this,Qi,"f").enhancedFocus&&C(this,tr,"f").startCharging()};if(h){const a=o[0].originalImageTag,h=(null===(i=a.cropRegion)||void 0===i?void 0:i.left)||0,l=(null===(r=a.cropRegion)||void 0===r?void 0:r.top)||0,c=(null===(n=a.cropRegion)||void 0===n?void 0:n.right)?a.cropRegion.right-h:a.originalWidth,u=(null===(s=a.cropRegion)||void 0===s?void 0:s.bottom)?a.cropRegion.bottom-l:a.originalHeight,d=a.currentWidth,f=a.currentHeight;let g;{let t,e,i,r,n;{const t=this.video.videoWidth*(1-C(this,$i,"f").autoZoomDetectionArea)/2,e=this.video.videoWidth*(1+C(this,$i,"f").autoZoomDetectionArea)/2,i=e,r=t,s=this.video.videoHeight*(1-C(this,$i,"f").autoZoomDetectionArea)/2,o=s,a=this.video.videoHeight*(1+C(this,$i,"f").autoZoomDetectionArea)/2;n=[{x:t,y:s},{x:e,y:o},{x:i,y:a},{x:r,y:a}]}ur._onLog&&(ur._onLog("detectionArea:"),ur._onLog(n));const s=[];{const t=(t,e)=>{const i=(t,e)=>{if(!t&&!e)throw new Error("Invalid arguments.");return function(t,e,i){let r=!1;const n=t.length;if(n<=2)return!1;for(let s=0;s0!=Tt(a.y-i)>0&&Tt(e-(i-o.y)*(o.x-a.x)/(o.y-a.y)-o.x)<0&&(r=!r)}return r}(e,t.x,t.y)},r=(t,e)=>!!(Et([t[0],t[1]],[t[2],t[3]],[e[0].x,e[0].y],[e[1].x,e[1].y])||Et([t[0],t[1]],[t[2],t[3]],[e[1].x,e[1].y],[e[2].x,e[2].y])||Et([t[0],t[1]],[t[2],t[3]],[e[2].x,e[2].y],[e[3].x,e[3].y])||Et([t[0],t[1]],[t[2],t[3]],[e[3].x,e[3].y],[e[0].x,e[0].y]));return!!(i({x:t[0].x,y:t[0].y},e)||i({x:t[1].x,y:t[1].y},e)||i({x:t[2].x,y:t[2].y},e)||i({x:t[3].x,y:t[3].y},e))||(!!(i({x:e[0].x,y:e[0].y},t)||i({x:e[1].x,y:e[1].y},t)||i({x:e[2].x,y:e[2].y},t)||i({x:e[3].x,y:e[3].y},t))||!!(r([e[0].x,e[0].y,e[1].x,e[1].y],t)||r([e[1].x,e[1].y,e[2].x,e[2].y],t)||r([e[2].x,e[2].y,e[3].x,e[3].y],t)||r([e[3].x,e[3].y,e[0].x,e[0].y],t)))};for(let e of o)if(e.unitType===p.IRUT_LOCALIZED_BARCODES)for(let i of e.localizedBarcodes){if(!i)continue;const e=i.location.points;e.forEach((t=>{ge._transformCoordinates(t,h,l,c,u,d,f)})),t(n,e)&&s.push(i)}if(ur._debug&&this.cameraView){const t=this.__layer||(this.__layer=this.cameraView._createDrawingLayer(99));t.clearDrawingItems();const e=this.__styleId2||(this.__styleId2=he.createDrawingStyle({strokeStyle:"red"}));for(let i of o)if(i.unitType===p.IRUT_LOCALIZED_BARCODES)for(let r of i.localizedBarcodes){if(!r)continue;const i=r.location.points,n=new ht({points:i},e);t.addDrawingItems([n])}}}if(ur._onLog&&(ur._onLog("intersectedResults:"),ur._onLog(s)),!s.length)return;let a;if(s.length){let t=s.filter((t=>t.possibleFormats==cr.BF_QR_CODE||t.possibleFormats==cr.BF_DATAMATRIX));if(t.length||(t=s.filter((t=>t.possibleFormats==cr.BF_ONED)),t.length||(t=s)),t.length){const e=t=>{const e=t.location.points,i=(e[0].x+e[1].x+e[2].x+e[3].x)/4,r=(e[0].y+e[1].y+e[2].y+e[3].y)/4;return(i-d/2)*(i-d/2)+(r-f/2)*(r-f/2)};a=t[0];let i=e(a);if(1!=t.length)for(let r=1;r1.1*a.confidence?(a=t[r],i=n):t[r].confidence>.9*a.confidence&&ni&&s>i&&o>i&&a>i&&g.result.moduleSize{})),C(this,$i,"f").autoZoomInFrameArray.filter((t=>!0===t)).length>=C(this,$i,"f").autoZoomInFrameLimit[1]){C(this,$i,"f").autoZoomInFrameArray.length=0;const e=[(.5-r)/(.5-n),(.5-r)/(.5-s),(.5-r)/(.5-o),(.5-r)/(.5-a)].filter((t=>t>0)),i=Math.min(...e,C(this,$i,"f").autoZoomInIdealModuleSize/g.result.moduleSize),h=this.getZoomSettings().factor;let l=Math.max(Math.pow(h*i,1/C(this,$i,"f").autoZoomInMaxTimes),C(this,$i,"f").autoZoomInMinStep);l=Math.min(l,i);let c=h*l;c=Math.max(C(this,$i,"f").minValue,c),c=Math.min(C(this,$i,"f").maxValue,c);try{await t({factor:c})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}}else if(C(this,$i,"f").autoZoomInFrameArray.length=0,C(this,$i,"f").frameArrayInIdealZoom.push(!0),C(this,$i,"f").frameArrayInIdealZoom.splice(0,C(this,$i,"f").frameArrayInIdealZoom.length-C(this,$i,"f").frameLimitInIdealZoom[0]),C(this,$i,"f").frameArrayInIdealZoom.filter((t=>!0===t)).length>=C(this,$i,"f").frameLimitInIdealZoom[1]&&(C(this,$i,"f").frameArrayInIdealZoom.length=0,C(this,Qi,"f").enhancedFocus)){const t=g.points;try{await e({mode:"manual",area:{centerPoint:{x:(t[0].x+t[2].x)/2+"px",y:(t[0].y+t[2].y)/2+"px"},width:t[2].x-t[0].x+"px",height:t[2].y-t[0].y+"px"}})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}}if(!C(this,Qi,"f").autoZoom&&C(this,Qi,"f").enhancedFocus&&(C(this,$i,"f").autoFocusFrameArray.push(!0),C(this,$i,"f").autoFocusFrameArray.splice(0,C(this,$i,"f").autoFocusFrameArray.length-C(this,$i,"f").autoFocusFrameLimit[0]),C(this,$i,"f").autoFocusFrameArray.filter((t=>!0===t)).length>=C(this,$i,"f").autoFocusFrameLimit[1])){C(this,$i,"f").autoFocusFrameArray.length=0;try{const t=g.points;await e({mode:"manual",area:{centerPoint:{x:(t[0].x+t[2].x)/2+"px",y:(t[0].y+t[2].y)/2+"px"},width:t[2].x-t[0].x+"px",height:t[2].y-t[0].y+"px"}})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}}else{if(C(this,Qi,"f").autoZoom){if(C(this,$i,"f").autoZoomInFrameArray.push(!1),C(this,$i,"f").autoZoomInFrameArray.splice(0,C(this,$i,"f").autoZoomInFrameArray.length-C(this,$i,"f").autoZoomInFrameLimit[0]),C(this,$i,"f").autoZoomOutFrameCount++,C(this,$i,"f").frameArrayInIdealZoom.push(!1),C(this,$i,"f").frameArrayInIdealZoom.splice(0,C(this,$i,"f").frameArrayInIdealZoom.length-C(this,$i,"f").frameLimitInIdealZoom[0]),C(this,$i,"f").autoZoomOutFrameCount>=C(this,$i,"f").autoZoomOutFrameLimit){C(this,$i,"f").autoZoomOutFrameCount=0;const e=this.getZoomSettings().factor;let i=e-Math.max((e-1)*C(this,$i,"f").autoZoomOutStepRate,C(this,$i,"f").autoZoomOutMinStep);i=Math.max(C(this,$i,"f").minValue,i),i=Math.min(C(this,$i,"f").maxValue,i);try{await t({factor:i})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}C(this,Qi,"f").enhancedFocus&&e({mode:"continuous"}).catch((()=>{}))}!C(this,Qi,"f").autoZoom&&C(this,Qi,"f").enhancedFocus&&(C(this,$i,"f").autoFocusFrameArray.length=0,e({mode:"continuous"}).catch((()=>{})))}}},S(this,tr,new ar(1e4),"f")}setCameraView(t){if(!(t instanceof ge))throw new TypeError("Invalid view.");if(t.disposed)throw new Error("The camera view has been disposed.");if(this.isOpen())throw new Error("It is not allowed to change camera view when the camera is open.");this.releaseCameraView(),t._singleFrameMode=this.singleFrameMode,t._onSingleFrameAcquired=this._onSingleFrameAcquired,this.videoSrc&&(this.cameraView._hideDefaultSelection=!0),C(this,Vi,"m",ir).call(this)||this.cameraManager.setVideoEl(t.getVideoElement()),this.cameraView=t,this.addListenerToView()}getCameraView(){return this.cameraView}releaseCameraView(){this.cameraView&&(this.removeListenerFromView(),this.cameraView.disposed||(this.cameraView._singleFrameMode="disabled",this.cameraView._onSingleFrameAcquired=null,this.cameraView._hideDefaultSelection=!1),this.cameraManager.releaseVideoEl(),this.cameraView=null)}addListenerToView(){if(!this.cameraView)return;if(this.cameraView.disposed)throw new Error("'cameraView' has been disposed.");const t=this.cameraView;C(this,Vi,"m",ir).call(this)||this.videoSrc||(t._innerComponent&&(this.cameraManager.tapFocusEventBoundEl=t._innerComponent),t._selCam&&t._selCam.addEventListener("change",this._onCameraSelChange),t._selRsl&&t._selRsl.addEventListener("change",this._onResolutionSelChange)),t._btnClose&&t._btnClose.addEventListener("click",this._onCloseBtnClick)}removeListenerFromView(){if(!this.cameraView||this.cameraView.disposed)return;const t=this.cameraView;this.cameraManager.tapFocusEventBoundEl=null,t._selCam&&t._selCam.removeEventListener("change",this._onCameraSelChange),t._selRsl&&t._selRsl.removeEventListener("change",this._onResolutionSelChange),t._btnClose&&t._btnClose.removeEventListener("click",this._onCloseBtnClick)}getCameraState(){return C(this,Vi,"m",ir).call(this)?C(this,Ui,"f"):new Map([["closed","closed"],["opening","opening"],["opened","open"]]).get(this.cameraManager.state)}isOpen(){return"open"===this.getCameraState()}getVideoEl(){return this.video}async open(){const t=this.cameraView;if(null==t?void 0:t.disposed)throw new Error("'cameraView' has been disposed.");t&&(t._singleFrameMode=this.singleFrameMode,C(this,Vi,"m",ir).call(this)?t._clickIptSingleFrameMode():(this.cameraManager.setVideoEl(t.getVideoElement()),t._startLoading()));let e={width:0,height:0,deviceId:""};if(C(this,Vi,"m",ir).call(this));else{try{await this.cameraManager.open()}catch(e){throw t&&t._stopLoading(),"NotFoundError"===e.name?new Error(`No camera devices were detected. Please ensure a camera is connected and recognized by your system. ${null==e?void 0:e.name}: ${null==e?void 0:e.message}`):"NotAllowedError"===e.name?new Error(`Camera access is blocked. Please check your browser settings or grant permission to use the camera. ${null==e?void 0:e.name}: ${null==e?void 0:e.message}`):e}let i,r=t.getUIElement();if(r=r.shadowRoot||r,i=r.querySelector(".dce-macro-use-mobile-native-like-ui")){let t=r.elTorchAuto=r.querySelector(".dce-mn-torch-auto"),e=r.elTorchOn=r.querySelector(".dce-mn-torch-on"),n=r.elTorchOff=r.querySelector(".dce-mn-torch-off");t&&(e.style.display=null==this.isTorchOn?"":"none"),e&&(e.style.display=1==this.isTorchOn?"":"none"),n&&(n.style.display=0==this.isTorchOn?"":"none");let s=r.elBeepOn=r.querySelector(".dce-mn-beep-on"),o=r.elBeepOff=r.querySelector(".dce-mn-beep-off");s&&(s.style.display=hr.allowBeep?"":"none"),o&&(o.style.display=hr.allowBeep?"none":"");let a=r.elVibrateOn=r.querySelector(".dce-mn-vibrate-on"),h=r.elVibrateOff=r.querySelector(".dce-mn-vibrate-off");a&&(a.style.display=hr.allowVibrate?"":"none"),h&&(h.style.display=hr.allowVibrate?"none":""),r.elResolutionBox=r.querySelector(".dce-mn-resolution-box");let l,c=r.elZoom=r.querySelector(".dce-mn-zoom");c&&(c.style.display="none",l=r.elZoomSpan=c.querySelector("span"));let u=r.elToast=r.querySelector(".dce-mn-toast"),d=r.elCameraClose=r.querySelector(".dce-mn-camera-close"),f=r.elTakePhoto=r.querySelector(".dce-mn-take-photo"),g=r.elCameraSwitch=r.querySelector(".dce-mn-camera-switch"),m=r.elCameraAndResolutionSettings=r.querySelector(".dce-mn-camera-and-resolution-settings");m&&(m.style.display="none");const p=r.dceMnFs={},v=()=>{this.turnOnTorch()};null==t||t.addEventListener("pointerdown",v);const y=()=>{this.turnOffTorch()};null==e||e.addEventListener("pointerdown",y);const _=()=>{this.turnAutoTorch()};null==n||n.addEventListener("pointerdown",_);const w=()=>{hr.allowBeep=!hr.allowBeep,s&&(s.style.display=hr.allowBeep?"":"none"),o&&(o.style.display=hr.allowBeep?"none":"")};for(let t of[o,s])null==t||t.addEventListener("pointerdown",w);const b=()=>{hr.allowVibrate=!hr.allowVibrate,a&&(a.style.display=hr.allowVibrate?"":"none"),h&&(h.style.display=hr.allowVibrate?"none":"")};for(let t of[h,a])null==t||t.addEventListener("pointerdown",b);const x=async t=>{let e,i=t.target;if(e=i.closest(".dce-mn-camera-option"))this.selectCamera(e.getAttribute("data-davice-id"));else if(e=i.closest(".dce-mn-resolution-option")){let t,i=parseInt(e.getAttribute("data-width")),r=parseInt(e.getAttribute("data-height")),n=await this.setResolution({width:i,height:r});{let e=Math.max(n.width,n.height),i=Math.min(n.width,n.height);t=i<=1080?i+"P":e<3e3?"2K":Math.round(e/1e3)+"K"}t!=e.textContent&&T(`Fallback to ${t}`)}else i.closest(".dce-mn-camera-and-resolution-settings")||(i.closest(".dce-mn-resolution-box")?m&&(m.style.display=m.style.display?"":"none"):m&&""===m.style.display&&(m.style.display="none"))};r.addEventListener("click",x);let C=null;p.funcInfoZoomChange=(t,e=3e3)=>{c&&l&&(l.textContent=t.toFixed(1),c.style.display="",null!=C&&(clearTimeout(C),C=null),C=setTimeout((()=>{c.style.display="none",C=null}),e))};let S=null,T=p.funcShowToast=(t,e=3e3)=>{u&&(u.textContent=t,u.style.display="",null!=S&&(clearTimeout(S),S=null),S=setTimeout((()=>{u.style.display="none",S=null}),e))};const E=()=>{this.close()};null==d||d.addEventListener("click",E);const O=()=>{};null==f||f.addEventListener("pointerdown",O);const A=()=>{var t,e;let i,r=this.getVideoSettings(),n=r.video.facingMode,s=null===(e=null===(t=this.cameraManager.getCamera())||void 0===t?void 0:t.label)||void 0===e?void 0:e.toLowerCase(),o=null==s?void 0:s.indexOf("front");-1===o&&(o=null==s?void 0:s.indexOf("前"));let a=null==s?void 0:s.indexOf("back");if(-1===a&&(a=null==s?void 0:s.indexOf("后")),"number"==typeof o&&-1!==o?i=!0:"number"==typeof a&&-1!==a&&(i=!1),void 0===i){i="user"===((null==n?void 0:n.ideal)||(null==n?void 0:n.exact)||n)}r.video.facingMode={ideal:i?"environment":"user"},delete r.video.deviceId,this.updateVideoSettings(r)};null==g||g.addEventListener("pointerdown",A);let L=-1/0,D=1;const M=t=>{let e=Date.now();e-L>1e3&&(D=this.getZoomSettings().factor),D-=t.deltaY/200,D>20&&(D=20),D<1&&(D=1),this.setZoom({factor:D}),L=e};i.addEventListener("wheel",M);const F=new Map;let P=!1;const k=async t=>{var e;for(t.touches.length>=2&&"touchmove"==t.type&&t.preventDefault();t.changedTouches.length>1&&2==t.touches.length;){let i=t.touches[0],r=t.touches[1],n=F.get(i.identifier),s=F.get(r.identifier);if(!n||!s)break;let o=Math.pow(Math.pow(n.x-s.x,2)+Math.pow(n.y-s.y,2),.5),a=Math.pow(Math.pow(i.clientX-r.clientX,2)+Math.pow(i.clientY-r.clientY,2),.5),h=Date.now();if(P||h-L<100)return;h-L>1e3&&(D=this.getZoomSettings().factor),D*=a/o,D>20&&(D=20),D<1&&(D=1);let l=!1;"safari"==(null===(e=null==I?void 0:I.browser)||void 0===e?void 0:e.toLocaleLowerCase())&&(a/o>1&&D<2?(D=2,l=!0):a/o<1&&D<2&&(D=1,l=!0)),P=!0,l&&T("zooming..."),await this.setZoom({factor:D}),l&&(u.textContent=""),P=!1,L=Date.now();break}F.clear();for(let e of t.touches)F.set(e.identifier,{x:e.clientX,y:e.clientY})};r.addEventListener("touchstart",k),r.addEventListener("touchmove",k),r.addEventListener("touchend",k),r.addEventListener("touchcancel",k),p.unbind=()=>{null==t||t.removeEventListener("pointerdown",v),null==e||e.removeEventListener("pointerdown",y),null==n||n.removeEventListener("pointerdown",_);for(let t of[o,s])null==t||t.removeEventListener("pointerdown",w);for(let t of[h,a])null==t||t.removeEventListener("pointerdown",b);r.removeEventListener("click",x),null==d||d.removeEventListener("click",E),null==f||f.removeEventListener("pointerdown",O),null==g||g.removeEventListener("pointerdown",A),i.removeEventListener("wheel",M),r.removeEventListener("touchstart",k),r.removeEventListener("touchmove",k),r.removeEventListener("touchend",k),r.removeEventListener("touchcancel",k),delete r.dceMnFs,i.style.display="none"},i.style.display="",t&&null==this.isTorchOn&&setTimeout((()=>{this.turnAutoTorch(1e3)}),0)}this.isTorchOn&&this.turnOnTorch().catch((()=>{}));const n=this.getResolution();e.width=n.width,e.height=n.height,e.deviceId=this.getSelectedCamera().deviceId}return S(this,Ui,"open","f"),t&&(t._innerComponent.style.display="",C(this,Vi,"m",ir).call(this)||(t._stopLoading(),t._renderCamerasInfo(this.getSelectedCamera(),this.cameraManager._arrCameras),t._renderResolutionInfo({width:e.width,height:e.height}),t.eventHandler.fire("content:updated",null,{async:!1}),t.eventHandler.fire("videoEl:resized",null,{async:!1}))),C(this,Gi,"f").fire("opened",null,{target:this,async:!1}),e}close(){var t;const e=this.cameraView;if(null==e?void 0:e.disposed)throw new Error("'cameraView' has been disposed.");if(this.stopFetching(),this.clearBuffer(),C(this,Vi,"m",ir).call(this));else{this.cameraManager.close();let i=e.getUIElement();i=i.shadowRoot||i,i.querySelector(".dce-macro-use-mobile-native-like-ui")&&(null===(t=i.dceMnFs)||void 0===t||t.unbind())}S(this,Ui,"closed","f"),C(this,tr,"f").stopCharging(),e&&(e._innerComponent.style.display="none",C(this,Vi,"m",ir).call(this)&&e._innerComponent.removeElement("content"),e._stopLoading()),C(this,Gi,"f").fire("closed",null,{target:this,async:!1})}pause(){if(C(this,Vi,"m",ir).call(this))throw new Error("'pause()' is invalid in 'singleFrameMode'.");this.cameraManager.pause()}isPaused(){var t;return!C(this,Vi,"m",ir).call(this)&&!0===(null===(t=this.video)||void 0===t?void 0:t.paused)}async resume(){if(C(this,Vi,"m",ir).call(this))throw new Error("'resume()' is invalid in 'singleFrameMode'.");await this.cameraManager.resume()}async selectCamera(t){if(!t)throw new Error("Invalid value.");let e;e="string"==typeof t?t:t.deviceId,await this.cameraManager.setCamera(e),this.isTorchOn=!1;const i=this.getResolution(),r=this.cameraView;return r&&!r.disposed&&(r._stopLoading(),r._renderCamerasInfo(this.getSelectedCamera(),this.cameraManager._arrCameras),r._renderResolutionInfo({width:i.width,height:i.height})),{width:i.width,height:i.height,deviceId:this.getSelectedCamera().deviceId}}getSelectedCamera(){return this.cameraManager.getCamera()}async getAllCameras(){return this.cameraManager.getCameras()}async setResolution(t){await this.cameraManager.setResolution(t.width,t.height),this.isTorchOn&&this.turnOnTorch().catch((()=>{}));const e=this.getResolution(),i=this.cameraView;return i&&!i.disposed&&(i._stopLoading(),i._renderResolutionInfo({width:e.width,height:e.height})),{width:e.width,height:e.height,deviceId:this.getSelectedCamera().deviceId}}getResolution(){return this.cameraManager.getResolution()}getAvailableResolutions(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getResolutions()}_on(t,e){["opened","closed","singleframeacquired","frameaddedtobuffer"].includes(t.toLowerCase())?C(this,Gi,"f").on(t,e):this.cameraManager.on(t,e)}_off(t,e){["opened","closed","singleframeacquired","frameaddedtobuffer"].includes(t.toLowerCase())?C(this,Gi,"f").off(t,e):this.cameraManager.off(t,e)}on(t,e){const i=t.toLowerCase(),r=new Map([["cameraopen","opened"],["cameraclose","closed"],["camerachange","camera:changed"],["resolutionchange","resolution:changed"],["played","played"],["singleframeacquired","singleFrameAcquired"],["frameaddedtobuffer","frameAddedToBuffer"]]).get(i);if(!r)throw new Error("Invalid event.");this._on(r,e)}off(t,e){const i=t.toLowerCase(),r=new Map([["cameraopen","opened"],["cameraclose","closed"],["camerachange","camera:changed"],["resolutionchange","resolution:changed"],["played","played"],["singleframeacquired","singleFrameAcquired"],["frameaddedtobuffer","frameAddedToBuffer"]]).get(i);if(!r)throw new Error("Invalid event.");this._off(r,e)}getVideoSettings(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getMediaStreamConstraints()}async updateVideoSettings(t){var e;await(null===(e=this.cameraManager)||void 0===e?void 0:e.setMediaStreamConstraints(t,!0))}getCapabilities(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getCameraCapabilities()}getCameraSettings(){return this.cameraManager.getCameraSettings()}async turnOnTorch(){var t,e;if(C(this,Vi,"m",ir).call(this))throw new Error("'turnOnTorch()' is invalid in 'singleFrameMode'.");try{await(null===(t=this.cameraManager)||void 0===t?void 0:t.turnOnTorch())}catch(t){let i=this.cameraView.getUIElement();throw i=i.shadowRoot||i,null===(e=null==i?void 0:i.dceMnFs)||void 0===e||e.funcShowToast("Torch Not Supported"),t}this.isTorchOn=!0;let i=this.cameraView.getUIElement();i=i.shadowRoot||i,i.elTorchAuto&&(i.elTorchAuto.style.display="none"),i.elTorchOn&&(i.elTorchOn.style.display=""),i.elTorchOff&&(i.elTorchOff.style.display="none")}async turnOffTorch(){var t;if(C(this,Vi,"m",ir).call(this))throw new Error("'turnOffTorch()' is invalid in 'singleFrameMode'.");await(null===(t=this.cameraManager)||void 0===t?void 0:t.turnOffTorch()),this.isTorchOn=!1;let e=this.cameraView.getUIElement();e=e.shadowRoot||e,e.elTorchAuto&&(e.elTorchAuto.style.display="none"),e.elTorchOn&&(e.elTorchOn.style.display="none"),e.elTorchOff&&(e.elTorchOff.style.display="")}async turnAutoTorch(t=250){if(null!=this._taskid4AutoTorch){if(!(t{var t,n,s;if(this.disposed||e||null!=this.isTorchOn||!this.isOpen())return clearInterval(this._taskid4AutoTorch),void(this._taskid4AutoTorch=null);if(this.isPaused())return;if(++r>10&&this._delay4AutoTorch<1e3)return clearInterval(this._taskid4AutoTorch),this._taskid4AutoTorch=null,void this.turnAutoTorch(1e3);let a;try{a=this.fetchImage()}catch(t){}if(!a||!a.width||!a.height)return;let h=0;if(o.IPF_GRAYSCALED===a.format){for(let t=0;t=this.maxDarkCount4AutoTroch){null===(t=ur._onLog)||void 0===t||t.call(ur,`darkCount ${i}`);try{await this.turnOnTorch(),this.isTorchOn=!0;let t=this.cameraView.getUIElement();t=t.shadowRoot||t,null===(n=null==t?void 0:t.dceMnFs)||void 0===n||n.funcShowToast("Torch Auto On")}catch(t){console.warn(t),e=!0;let i=this.cameraView.getUIElement();i=i.shadowRoot||i,null===(s=null==i?void 0:i.dceMnFs)||void 0===s||s.funcShowToast("Torch Not Supported")}}}else i=0};this._taskid4AutoTorch=setInterval(n,t),this.isTorchOn=void 0,n();let s=this.cameraView.getUIElement();s=s.shadowRoot||s,s.elTorchAuto&&(s.elTorchAuto.style.display=""),s.elTorchOn&&(s.elTorchOn.style.display="none"),s.elTorchOff&&(s.elTorchOff.style.display="none")}async setColorTemperature(t){if(C(this,Vi,"m",ir).call(this))throw new Error("'setColorTemperature()' is invalid in 'singleFrameMode'.");await this.cameraManager.setColorTemperature(t,!0)}getColorTemperature(){return this.cameraManager.getColorTemperature()}async setExposureCompensation(t){var e;if(C(this,Vi,"m",ir).call(this))throw new Error("'setExposureCompensation()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setExposureCompensation(t,!0))}getExposureCompensation(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getExposureCompensation()}async _setZoom(t){var e,i,r;if(C(this,Vi,"m",ir).call(this))throw new Error("'setZoom()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setZoom(t));{let e=null===(i=this.cameraView)||void 0===i?void 0:i.getUIElement();e=(null==e?void 0:e.shadowRoot)||e,null===(r=null==e?void 0:e.dceMnFs)||void 0===r||r.funcInfoZoomChange(t.factor)}}async setZoom(t){await this._setZoom(t)}getZoomSettings(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getZoom()}async resetZoom(){var t;if(C(this,Vi,"m",ir).call(this))throw new Error("'resetZoom()' is invalid in 'singleFrameMode'.");await(null===(t=this.cameraManager)||void 0===t?void 0:t.resetZoom())}async setFrameRate(t){var e;if(C(this,Vi,"m",ir).call(this))throw new Error("'setFrameRate()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setFrameRate(t,!0))}getFrameRate(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getFrameRate()}async setFocus(t){var e;if(C(this,Vi,"m",ir).call(this))throw new Error("'setFocus()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setFocus(t,!0))}getFocusSettings(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getFocus()}setAutoZoomRange(t){C(this,$i,"f").minValue=t.min,C(this,$i,"f").maxValue=t.max}getAutoZoomRange(){return{min:C(this,$i,"f").minValue,max:C(this,$i,"f").maxValue}}async enableEnhancedFeatures(e){var r,n;if(!(null===(n=null===(r=i.license)||void 0===r?void 0:r.LicenseManager)||void 0===n?void 0:n.bPassValidation))throw new Error("License is not verified, or license is invalid.");if(0!==t.bSupportDce4Module)throw new Error("Please set a license containing the DCE module.");e&W.EF_ENHANCED_FOCUS&&(C(this,Qi,"f").enhancedFocus=!0),e&W.EF_AUTO_ZOOM&&(C(this,Qi,"f").autoZoom=!0),e&W.EF_TAP_TO_FOCUS&&(C(this,Qi,"f").tapToFocus=!0,this.cameraManager.enableTapToFocus())}disableEnhancedFeatures(t){t&W.EF_ENHANCED_FOCUS&&(C(this,Qi,"f").enhancedFocus=!1,this.setFocus({mode:"continuous"}).catch((()=>{}))),t&W.EF_AUTO_ZOOM&&(C(this,Qi,"f").autoZoom=!1,this.resetZoom().catch((()=>{}))),t&W.EF_TAP_TO_FOCUS&&(C(this,Qi,"f").tapToFocus=!1,this.cameraManager.disableTapToFocus()),C(this,Vi,"m",nr).call(this)&&C(this,Vi,"m",rr).call(this)||C(this,tr,"f").stopCharging()}_setScanRegion(t){if(null!=t&&!c(t)&&!r(t))throw TypeError("Invalid 'region'.");S(this,qi,t?JSON.parse(JSON.stringify(t)):null,"f"),this.cameraView&&!this.cameraView.disposed&&this.cameraView.setScanRegion(t)}setScanRegion(t){this._setScanRegion(t),this.cameraView&&!this.cameraView.disposed&&(null===t?this.cameraView.setScanRegionMaskVisible(!1):this.cameraView.setScanRegionMaskVisible(!0))}getScanRegion(){return JSON.parse(JSON.stringify(C(this,qi,"f")))}setErrorListener(t){if(!t)throw new TypeError("Invalid 'listener'");S(this,zi,t,"f")}hasNextImageToFetch(){return!("open"!==this.getCameraState()||!this.cameraManager.isVideoLoaded()||C(this,Vi,"m",ir).call(this))}startFetching(){if(C(this,Vi,"m",ir).call(this))throw Error("'startFetching()' is unavailable in 'singleFrameMode'.");C(this,Zi,"f")||(S(this,Zi,!0,"f"),C(this,Vi,"m",sr).call(this))}stopFetching(){C(this,Zi,"f")&&(ur._onLog&&ur._onLog("DCE: stop fetching loop: "+Date.now()),C(this,Ji,"f")&&clearTimeout(C(this,Ji,"f")),S(this,Zi,!1,"f"))}fetchImage(){if(C(this,Vi,"m",ir).call(this))throw new Error("'fetchImage()' is unavailable in 'singleFrameMode'.");if(!this.video)throw new Error("The video element does not exist.");if(4!==this.video.readyState)throw new Error("The video is not loaded.");const t=this.getResolution();if(!(null==t?void 0:t.width)||!(null==t?void 0:t.height))throw new Error("The video is not loaded.");let e;if(e=wt.convert(C(this,qi,"f"),t.width,t.height),e||(e={x:0,y:0,width:t.width,height:t.height}),e.x>t.width||e.y>t.height)throw new Error("Invalid scan region.");e.x+e.width>t.width&&(e.width=t.width-e.x),e.y+e.height>t.height&&(e.height=t.height-e.y);const i={sx:e.x,sy:e.y,sWidth:e.width,sHeight:e.height,dWidth:e.width,dHeight:e.height},r=Math.max(i.dWidth,i.dHeight);if(this.canvasSizeLimit&&r>this.canvasSizeLimit){const t=this.canvasSizeLimit/r;i.dWidth>i.dHeight?(i.dWidth=this.canvasSizeLimit,i.dHeight=Math.round(i.dHeight*t)):(i.dWidth=Math.round(i.dWidth*t),i.dHeight=this.canvasSizeLimit)}const n=this.cameraManager.getFrameData({position:i,pixelFormat:this.getPixelFormat()===o.IPF_GRAYSCALED?Ee.GREY:Ee.RGBA});if(!n)return null;let s;if(n.pixelFormat===Ee.GREY)s=n.width;else s=4*n.width;let a=!0;0===i.sx&&0===i.sy&&i.sWidth===t.width&&i.sHeight===t.height&&(a=!1);return{bytes:n.data,width:n.width,height:n.height,stride:s,format:lr.get(n.pixelFormat),tag:{imageId:this._imageId==Number.MAX_VALUE?this._imageId=0:++this._imageId,type:m.ITT_VIDEO_FRAME,isCropped:a,cropRegion:{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height,isMeasuredInPercentage:!1},originalWidth:t.width,originalHeight:t.height,currentWidth:n.width,currentHeight:n.height,timeSpent:n.timeSpent,timeStamp:n.timeStamp},toCanvas:C(this,Xi,"f"),isDCEFrame:!0}}setImageFetchInterval(t){this.fetchInterval=t,C(this,Zi,"f")&&(C(this,Ji,"f")&&clearTimeout(C(this,Ji,"f")),S(this,Ji,setTimeout((()=>{this.disposed||C(this,Vi,"m",sr).call(this)}),t),"f"))}getImageFetchInterval(){return this.fetchInterval}setPixelFormat(t){S(this,Ki,t,"f")}getPixelFormat(){return C(this,Ki,"f")}takePhoto(t){if(!this.isOpen())throw new Error("Not open.");if(C(this,Vi,"m",ir).call(this))throw new Error("'takePhoto()' is unavailable in 'singleFrameMode'.");const e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("accept",".jpg,.jpeg,.icon,.gif,.svg,.webp,.png,.bmp"),e.setAttribute("capture",""),e.style.position="absolute",e.style.top="-9999px",e.style.backgroundColor="transparent",e.style.color="transparent",e.addEventListener("click",(()=>{const t=this.isOpen();this.close(),window.addEventListener("focus",(()=>{t&&this.open(),e.remove()}),{once:!0})})),e.addEventListener("change",(async()=>{const i=e.files[0],r=await(async t=>{let e=null,i=null;if("undefined"!=typeof createImageBitmap)try{if(e=await createImageBitmap(t),e)return e}catch(t){}var r;return e||(i=await(r=t,new Promise(((t,e)=>{let i=URL.createObjectURL(r),n=new Image;n.src=i,n.onload=()=>{URL.revokeObjectURL(n.src),t(n)},n.onerror=t=>{e(new Error("Can't convert blob to image : "+(t instanceof Event?t.type:t)))}})))),i})(i),n=r instanceof HTMLImageElement?r.naturalWidth:r.width,s=r instanceof HTMLImageElement?r.naturalHeight:r.height;let o=wt.convert(C(this,qi,"f"),n,s);o||(o={x:0,y:0,width:n,height:s});const a=C(this,Hi,"f").call(this,r,n,s,o);t&&t(a)})),document.body.appendChild(e),e.click()}convertToPageCoordinates(t){const e=C(this,Vi,"m",or).call(this,t);return{x:e.pageX,y:e.pageY}}convertToClientCoordinates(t){const e=C(this,Vi,"m",or).call(this,t);return{x:e.clientX,y:e.clientY}}convertToScanRegionCoordinates(t){if(!C(this,qi,"f"))return JSON.parse(JSON.stringify(t));let e,i,r=C(this,qi,"f").left||C(this,qi,"f").x||0,n=C(this,qi,"f").top||C(this,qi,"f").y||0;if(!C(this,qi,"f").isMeasuredInPercentage)return{x:t.x-r,y:t.y-n};if(!this.cameraView)throw new Error("Camera view is not set.");if(this.cameraView.disposed)throw new Error("'cameraView' has been disposed.");if(!this.isOpen())throw new Error("Not open.");if(!C(this,Vi,"m",ir).call(this)&&!this.cameraManager.isVideoLoaded())throw new Error("Video is not loaded.");if(C(this,Vi,"m",ir).call(this)&&!this.cameraView._cvsSingleFrameMode)throw new Error("No image is selected.");if(C(this,Vi,"m",ir).call(this)){const t=this.cameraView._innerComponent.getElement("content");e=t.width,i=t.height}else{const t=this.getVideoEl();e=t.videoWidth,i=t.videoHeight}return{x:t.x-Math.round(r*e/100),y:t.y-Math.round(n*i/100)}}dispose(){this.close(),this.cameraManager.dispose(),this.releaseCameraView(),S(this,er,!0,"f")}}var dr,fr,gr,mr,pr,vr,yr,_r;Wi=ur,Ui=new WeakMap,Gi=new WeakMap,Yi=new WeakMap,Hi=new WeakMap,Xi=new WeakMap,zi=new WeakMap,qi=new WeakMap,Ki=new WeakMap,Zi=new WeakMap,Ji=new WeakMap,Qi=new WeakMap,$i=new WeakMap,tr=new WeakMap,er=new WeakMap,Vi=new WeakSet,ir=function(){return"disabled"!==this.singleFrameMode},rr=function(){return!this.videoSrc&&"opened"===this.cameraManager.state},nr=function(){for(let t in C(this,Qi,"f"))if(1==C(this,Qi,"f")[t])return!0;return!1},sr=function t(){if(this.disposed)return;if("open"!==this.getCameraState()||!C(this,Zi,"f"))return C(this,Ji,"f")&&clearTimeout(C(this,Ji,"f")),void S(this,Ji,setTimeout((()=>{this.disposed||C(this,Vi,"m",t).call(this)}),this.fetchInterval),"f");const e=()=>{var t;let e;ur._onLog&&ur._onLog("DCE: start fetching a frame into buffer: "+Date.now());try{e=this.fetchImage()}catch(e){const i=e.message||e;if("The video is not loaded."===i)return;if(null===(t=C(this,zi,"f"))||void 0===t?void 0:t.onErrorReceived)return void setTimeout((()=>{var t;null===(t=C(this,zi,"f"))||void 0===t||t.onErrorReceived(y.EC_IMAGE_READ_FAILED,i)}),0);console.warn(e)}e?(this.addImageToBuffer(e),ur._onLog&&ur._onLog("DCE: finish fetching a frame into buffer: "+Date.now()),C(this,Gi,"f").fire("frameAddedToBuffer",null,{async:!1})):ur._onLog&&ur._onLog("DCE: get a invalid frame, abandon it: "+Date.now())};if(this.getImageCount()>=this.getMaxImageCount())switch(this.getBufferOverflowProtectionMode()){case v.BOPM_BLOCK:break;case v.BOPM_UPDATE:e()}else e();C(this,Ji,"f")&&clearTimeout(C(this,Ji,"f")),S(this,Ji,setTimeout((()=>{this.disposed||C(this,Vi,"m",t).call(this)}),this.fetchInterval),"f")},or=function(t){if(!this.cameraView)throw new Error("Camera view is not set.");if(this.cameraView.disposed)throw new Error("'cameraView' has been disposed.");if(!this.isOpen())throw new Error("Not open.");if(!C(this,Vi,"m",ir).call(this)&&!this.cameraManager.isVideoLoaded())throw new Error("Video is not loaded.");if(C(this,Vi,"m",ir).call(this)&&!this.cameraView._cvsSingleFrameMode)throw new Error("No image is selected.");const e=this.cameraView._innerComponent.getBoundingClientRect(),i=e.left,r=e.top,n=i+window.scrollX,s=r+window.scrollY,{width:o,height:a}=this.cameraView._innerComponent.getBoundingClientRect();if(o<=0||a<=0)throw new Error("Unable to get content dimensions. Camera view may not be rendered on the page.");let h,l,c;if(C(this,Vi,"m",ir).call(this)){const t=this.cameraView._innerComponent.getElement("content");h=t.width,l=t.height,c="contain"}else{const t=this.getVideoEl();h=t.videoWidth,l=t.videoHeight,c=this.cameraView.getVideoFit()}const u=o/a,d=h/l;let f,g,m,p,v=1;if("contain"===c)u{var e;if(!this.isUseMagnifier)return;if(C(this,mr,"f")||S(this,mr,new wr,"f"),!C(this,mr,"f").magnifierCanvas)return;document.body.contains(C(this,mr,"f").magnifierCanvas)||(C(this,mr,"f").magnifierCanvas.style.position="fixed",C(this,mr,"f").magnifierCanvas.style.boxSizing="content-box",C(this,mr,"f").magnifierCanvas.style.border="2px solid #FFFFFF",document.body.append(C(this,mr,"f").magnifierCanvas));const i=this._innerComponent.getElement("content");if(!i)return;if(t.pointer.x<0||t.pointer.x>i.width||t.pointer.y<0||t.pointer.y>i.height)return void C(this,vr,"f").call(this);const r=null===(e=this._drawingLayerManager._getFabricCanvas())||void 0===e?void 0:e.lowerCanvasEl;if(!r)return;const n=Math.max(i.clientWidth/5/1.5,i.clientHeight/4/1.5),s=1.5*n,o=[{image:i,width:i.width,height:i.height},{image:r,width:r.width,height:r.height}];C(this,mr,"f").update(s,t.pointer,n,o);{let e=0,i=0;t.e instanceof MouseEvent?(e=t.e.clientX,i=t.e.clientY):t.e instanceof TouchEvent&&t.e.changedTouches.length&&(e=t.e.changedTouches[0].clientX,i=t.e.changedTouches[0].clientY),e<1.5*s&&i<1.5*s?(C(this,mr,"f").magnifierCanvas.style.left="auto",C(this,mr,"f").magnifierCanvas.style.top="0",C(this,mr,"f").magnifierCanvas.style.right="0"):(C(this,mr,"f").magnifierCanvas.style.left="0",C(this,mr,"f").magnifierCanvas.style.top="0",C(this,mr,"f").magnifierCanvas.style.right="auto")}C(this,mr,"f").show()})),vr.set(this,(()=>{C(this,mr,"f")&&C(this,mr,"f").hide()})),yr.set(this,!1)}_setUIElement(t){this.UIElement=t,this._unbindUI(),this._bindUI()}async setUIElement(t){let e;if("string"==typeof t){let i=await Ot(t);e=document.createElement("div"),Object.assign(e.style,{width:"100%",height:"100%"}),e.attachShadow({mode:"open"}).appendChild(i)}else e=t;this._setUIElement(e)}getUIElement(){return this.UIElement}_bindUI(){if(!this.UIElement)throw new Error("Need to set 'UIElement'.");if(this._innerComponent)return;const t=this.UIElement;let e=t.classList.contains(this.containerClassName)?t:t.querySelector(`.${this.containerClassName}`);e||(e=document.createElement("div"),e.style.width="100%",e.style.height="100%",e.className=this.containerClassName,t.append(e)),this._innerComponent=document.createElement("dce-component"),e.appendChild(this._innerComponent)}_unbindUI(){var t,e,i;null===(t=this._drawingLayerManager)||void 0===t||t.clearDrawingLayers(),null===(e=this._innerComponent)||void 0===e||e.removeElement("drawing-layer"),this._layerBaseCvs=null,null===(i=this._innerComponent)||void 0===i||i.remove(),this._innerComponent=null}setImage(t,e,i){if(!this._innerComponent)throw new Error("Need to set 'UIElement'.");let r=this._innerComponent.getElement("content");r||(r=document.createElement("canvas"),r.style.objectFit="contain",this._innerComponent.setElement("content",r)),r.width===e&&r.height===i||(r.width=e,r.height=i);const n=r.getContext("2d");n.clearRect(0,0,r.width,r.height),t instanceof Uint8Array||t instanceof Uint8ClampedArray?(t instanceof Uint8Array&&(t=new Uint8ClampedArray(t.buffer)),n.putImageData(new ImageData(t,e,i),0,0)):(t instanceof HTMLCanvasElement||t instanceof HTMLImageElement)&&n.drawImage(t,0,0)}getImage(){return this._innerComponent.getElement("content")}clearImage(){if(!this._innerComponent)return;let t=this._innerComponent.getElement("content");t&&t.getContext("2d").clearRect(0,0,t.width,t.height)}removeImage(){this._innerComponent&&this._innerComponent.removeElement("content")}setOriginalImage(t){if(s(t)){S(this,gr,t,"f");const{width:e,height:i,bytes:r,format:n}=Object.assign({},t);let s;if(n===o.IPF_GRAYSCALED){s=new Uint8ClampedArray(e*i*4);for(let t=0;t{if(!n){if(!i&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})();e.CoreModule.engineResourcePaths.dce={version:"4.1.1",path:r,isInternal:!0},e.workerAutoResources.dce={wasm:!1,js:!1},e.mapPackageRegister.dce={};function s(t,e,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(t):n?n.value:e.get(t)}function o(t,e,i,n,r){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?r.call(t,i):r?r.value=i:e.set(t,i),i}let a,h,l,c,u;"function"==typeof SuppressedError&&SuppressedError,"undefined"!=typeof navigator&&(a=navigator,h=a.userAgent,l=a.platform,c=a.mediaDevices),function(){if(!i){const t={Edge:{search:"Edg",verSearch:"Edg"},OPR:null,Chrome:null,Safari:{str:a.vendor,search:"Apple",verSearch:["Version","iPhone OS","CPU OS"]},Firefox:null,Explorer:{search:"MSIE",verSearch:"MSIE"}},e={HarmonyOS:null,Android:null,iPhone:null,iPad:null,Windows:{str:l,search:"Win"},Mac:{str:l},Linux:{str:l}};let i="unknownBrowser",n=0,r="unknownOS";for(let e in t){const r=t[e]||{};let s=r.str||h,o=r.search||e,a=r.verStr||h,l=r.verSearch||e;if(l instanceof Array||(l=[l]),-1!=s.indexOf(o)){i=e;for(let t of l){let e=a.indexOf(t);if(-1!=e){n=parseFloat(a.substring(e+t.length+1));break}}break}}for(let t in e){const i=e[t]||{};let n=i.str||h,s=i.search||t;if(-1!=n.indexOf(s)){r=t;break}}"Linux"==r&&-1!=h.indexOf("Windows NT")&&(r="HarmonyOS"),u={browser:i,version:n,OS:r}}i&&(u={browser:"ssr",version:0,OS:"ssr"})}();const d="undefined"!=typeof WebAssembly&&h&&!(/Safari/.test(h)&&!/Chrome/.test(h)&&/\(.+\s11_2_([2-6]).*\)/.test(h)),f=!("undefined"==typeof Worker),g=!(!c||!c.getUserMedia),m=async()=>{let t=!1;if(g)try{(await c.getUserMedia({video:!0})).getTracks().forEach((t=>{t.stop()})),t=!0}catch(t){}return t};"Chrome"===u.browser&&u.version>66||"Safari"===u.browser&&u.version>13||"OPR"===u.browser&&u.version>43||"Edge"===u.browser&&u.version;var p={653:(t,e,i)=>{var n,r,s,o,a,h,l,c,u,d,f,g,m,p,v,y,_,w,b,x,C,S=S||{version:"5.2.1"};if(e.fabric=S,"undefined"!=typeof document&&"undefined"!=typeof window)document instanceof("undefined"!=typeof HTMLDocument?HTMLDocument:Document)?S.document=document:S.document=document.implementation.createHTMLDocument(""),S.window=window;else{var T=new(i(192).JSDOM)(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"),{features:{FetchExternalResources:["img"]},resources:"usable"}).window;S.document=T.document,S.jsdomImplForWrapper=i(898).implForWrapper,S.nodeCanvas=i(245).Canvas,S.window=T,DOMParser=S.window.DOMParser}function E(t,e){var i=t.canvas,n=e.targetCanvas,r=n.getContext("2d");r.translate(0,n.height),r.scale(1,-1);var s=i.height-n.height;r.drawImage(i,0,s,n.width,n.height,0,0,n.width,n.height)}function O(t,e){var i=e.targetCanvas.getContext("2d"),n=e.destinationWidth,r=e.destinationHeight,s=n*r*4,o=new Uint8Array(this.imageBuffer,0,s),a=new Uint8ClampedArray(this.imageBuffer,0,s);t.readPixels(0,0,n,r,t.RGBA,t.UNSIGNED_BYTE,o);var h=new ImageData(a,n,r);i.putImageData(h,0,0)}S.isTouchSupported="ontouchstart"in S.window||"ontouchstart"in S.document||S.window&&S.window.navigator&&S.window.navigator.maxTouchPoints>0,S.isLikelyNode="undefined"!=typeof Buffer&&"undefined"==typeof window,S.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-dashoffset","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id","paint-order","vector-effect","instantiated_by_use","clip-path"],S.DPI=96,S.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?)",S.commaWsp="(?:\\s+,?\\s*|,\\s*)",S.rePathCommand=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:[eE][-+]?\d+)?)/gi,S.reNonWord=/[ \n\.,;!\?\-]/,S.fontPaths={},S.iMatrix=[1,0,0,1,0,0],S.svgNS="http://www.w3.org/2000/svg",S.perfLimitSizeTotal=2097152,S.maxCacheSideLimit=4096,S.minCacheSideLimit=256,S.charWidthsCache={},S.textureSize=2048,S.disableStyleCopyPaste=!1,S.enableGLFiltering=!0,S.devicePixelRatio=S.window.devicePixelRatio||S.window.webkitDevicePixelRatio||S.window.mozDevicePixelRatio||1,S.browserShadowBlurConstant=1,S.arcToSegmentsCache={},S.boundsOfCurveCache={},S.cachesBoundsOfCurve=!0,S.forceGLPutImageData=!1,S.initFilterBackend=function(){return S.enableGLFiltering&&S.isWebglSupported&&S.isWebglSupported(S.textureSize)?(console.log("max texture size: "+S.maxTextureSize),new S.WebglFilterBackend({tileSize:S.textureSize})):S.Canvas2dFilterBackend?new S.Canvas2dFilterBackend:void 0},"undefined"!=typeof document&&"undefined"!=typeof window&&(window.fabric=S),function(){function t(t,e){if(this.__eventListeners[t]){var i=this.__eventListeners[t];e?i[i.indexOf(e)]=!1:S.util.array.fill(i,!1)}}function e(t,e){var i=function(){e.apply(this,arguments),this.off(t,i)}.bind(this);this.on(t,i)}S.Observable={fire:function(t,e){if(!this.__eventListeners)return this;var i=this.__eventListeners[t];if(!i)return this;for(var n=0,r=i.length;n-1||!!e&&this._objects.some((function(e){return"function"==typeof e.contains&&e.contains(t,!0)}))},complexity:function(){return this._objects.reduce((function(t,e){return t+(e.complexity?e.complexity():0)}),0)}},S.CommonMethods={_setOptions:function(t){for(var e in t)this.set(e,t[e])},_initGradient:function(t,e){!t||!t.colorStops||t instanceof S.Gradient||this.set(e,new S.Gradient(t))},_initPattern:function(t,e,i){!t||!t.source||t instanceof S.Pattern?i&&i():this.set(e,new S.Pattern(t,i))},_setObject:function(t){for(var e in t)this._set(e,t[e])},set:function(t,e){return"object"==typeof t?this._setObject(t):this._set(t,e),this},_set:function(t,e){this[t]=e},toggle:function(t){var e=this.get(t);return"boolean"==typeof e&&this.set(t,!e),this},get:function(t){return this[t]}},n=e,r=Math.sqrt,s=Math.atan2,o=Math.pow,a=Math.PI/180,h=Math.PI/2,S.util={cos:function(t){if(0===t)return 1;switch(t<0&&(t=-t),t/h){case 1:case 3:return 0;case 2:return-1}return Math.cos(t)},sin:function(t){if(0===t)return 0;var e=1;switch(t<0&&(e=-1),t/h){case 1:return e;case 2:return 0;case 3:return-e}return Math.sin(t)},removeFromArray:function(t,e){var i=t.indexOf(e);return-1!==i&&t.splice(i,1),t},getRandomInt:function(t,e){return Math.floor(Math.random()*(e-t+1))+t},degreesToRadians:function(t){return t*a},radiansToDegrees:function(t){return t/a},rotatePoint:function(t,e,i){var n=new S.Point(t.x-e.x,t.y-e.y),r=S.util.rotateVector(n,i);return new S.Point(r.x,r.y).addEquals(e)},rotateVector:function(t,e){var i=S.util.sin(e),n=S.util.cos(e);return{x:t.x*n-t.y*i,y:t.x*i+t.y*n}},createVector:function(t,e){return new S.Point(e.x-t.x,e.y-t.y)},calcAngleBetweenVectors:function(t,e){return Math.acos((t.x*e.x+t.y*e.y)/(Math.hypot(t.x,t.y)*Math.hypot(e.x,e.y)))},getHatVector:function(t){return new S.Point(t.x,t.y).multiply(1/Math.hypot(t.x,t.y))},getBisector:function(t,e,i){var n=S.util.createVector(t,e),r=S.util.createVector(t,i),s=S.util.calcAngleBetweenVectors(n,r),o=s*(0===S.util.calcAngleBetweenVectors(S.util.rotateVector(n,s),r)?1:-1)/2;return{vector:S.util.getHatVector(S.util.rotateVector(n,o)),angle:s}},projectStrokeOnPoints:function(t,e,i){var n=[],r=e.strokeWidth/2,s=e.strokeUniform?new S.Point(1/e.scaleX,1/e.scaleY):new S.Point(1,1),o=function(t){var e=r/Math.hypot(t.x,t.y);return new S.Point(t.x*e*s.x,t.y*e*s.y)};return t.length<=1||t.forEach((function(a,h){var l,c,u=new S.Point(a.x,a.y);0===h?(c=t[h+1],l=i?o(S.util.createVector(c,u)).addEquals(u):t[t.length-1]):h===t.length-1?(l=t[h-1],c=i?o(S.util.createVector(l,u)).addEquals(u):t[0]):(l=t[h-1],c=t[h+1]);var d,f,g=S.util.getBisector(u,l,c),m=g.vector,p=g.angle;if("miter"===e.strokeLineJoin&&(d=-r/Math.sin(p/2),f=new S.Point(m.x*d*s.x,m.y*d*s.y),Math.hypot(f.x,f.y)/r<=e.strokeMiterLimit))return n.push(u.add(f)),void n.push(u.subtract(f));d=-r*Math.SQRT2,f=new S.Point(m.x*d*s.x,m.y*d*s.y),n.push(u.add(f)),n.push(u.subtract(f))})),n},transformPoint:function(t,e,i){return i?new S.Point(e[0]*t.x+e[2]*t.y,e[1]*t.x+e[3]*t.y):new S.Point(e[0]*t.x+e[2]*t.y+e[4],e[1]*t.x+e[3]*t.y+e[5])},makeBoundingBoxFromPoints:function(t,e){if(e)for(var i=0;i0&&(e>n?e-=n:e=0,i>n?i-=n:i=0);var r,s=!0,o=t.getImageData(e,i,2*n||1,2*n||1),a=o.data.length;for(r=3;r=r?s-r:2*Math.PI-(r-s)}function s(t,e,i){for(var s=i[1],o=i[2],a=i[3],h=i[4],l=i[5],c=function(t,e,i,s,o,a,h){var l=Math.PI,c=h*l/180,u=S.util.sin(c),d=S.util.cos(c),f=0,g=0,m=-d*t*.5-u*e*.5,p=-d*e*.5+u*t*.5,v=(i=Math.abs(i))*i,y=(s=Math.abs(s))*s,_=p*p,w=m*m,b=v*y-v*_-y*w,x=0;if(b<0){var C=Math.sqrt(1-b/(v*y));i*=C,s*=C}else x=(o===a?-1:1)*Math.sqrt(b/(v*_+y*w));var T=x*i*p/s,E=-x*s*m/i,O=d*T-u*E+.5*t,I=u*T+d*E+.5*e,A=r(1,0,(m-T)/i,(p-E)/s),D=r((m-T)/i,(p-E)/s,(-m-T)/i,(-p-E)/s);0===a&&D>0?D-=2*l:1===a&&D<0&&(D+=2*l);for(var L=Math.ceil(Math.abs(D/l*2)),M=[],F=D/L,P=8/3*Math.sin(F/4)*Math.sin(F/4)/Math.sin(F/2),k=A+F,R=0;Rx)for(var T=1,E=m.length;T2;for(e=e||0,l&&(a=t[2].xt[i-2].x?1:r.x===t[i-2].x?0:-1,h=r.y>t[i-2].y?1:r.y===t[i-2].y?0:-1),n.push(["L",r.x+a*e,r.y+h*e]),n},S.util.getPathSegmentsInfo=d,S.util.getBoundsOfCurve=function(e,i,n,r,s,o,a,h){var l;if(S.cachesBoundsOfCurve&&(l=t.call(arguments),S.boundsOfCurveCache[l]))return S.boundsOfCurveCache[l];var c,u,d,f,g,m,p,v,y=Math.sqrt,_=Math.min,w=Math.max,b=Math.abs,x=[],C=[[],[]];u=6*e-12*n+6*s,c=-3*e+9*n-9*s+3*a,d=3*n-3*e;for(var T=0;T<2;++T)if(T>0&&(u=6*i-12*r+6*o,c=-3*i+9*r-9*o+3*h,d=3*r-3*i),b(c)<1e-12){if(b(u)<1e-12)continue;0<(f=-d/u)&&f<1&&x.push(f)}else(p=u*u-4*d*c)<0||(0<(g=(-u+(v=y(p)))/(2*c))&&g<1&&x.push(g),0<(m=(-u-v)/(2*c))&&m<1&&x.push(m));for(var E,O,I,A=x.length,D=A;A--;)E=(I=1-(f=x[A]))*I*I*e+3*I*I*f*n+3*I*f*f*s+f*f*f*a,C[0][A]=E,O=I*I*I*i+3*I*I*f*r+3*I*f*f*o+f*f*f*h,C[1][A]=O;C[0][D]=e,C[1][D]=i,C[0][D+1]=a,C[1][D+1]=h;var L=[{x:_.apply(null,C[0]),y:_.apply(null,C[1])},{x:w.apply(null,C[0]),y:w.apply(null,C[1])}];return S.cachesBoundsOfCurve&&(S.boundsOfCurveCache[l]=L),L},S.util.getPointOnPath=function(t,e,i){i||(i=d(t));for(var n=0;e-i[n].length>0&&n1e-4;)i=h(s),r=s,(n=o(l.x,l.y,i.x,i.y))+a>e?(s-=c,c/=2):(l=i,s+=c,a+=n);return i.angle=u(r),i}(s,e)}},S.util.transformPath=function(t,e,i){return i&&(e=S.util.multiplyTransformMatrices(e,[1,0,0,1,-i.x,-i.y])),t.map((function(t){for(var i=t.slice(0),n={},r=1;r=e}))}}}(),function(){function t(e,i,n){if(n)if(!S.isLikelyNode&&i instanceof Element)e=i;else if(i instanceof Array){e=[];for(var r=0,s=i.length;r57343)return t.charAt(e);if(55296<=i&&i<=56319){if(t.length<=e+1)throw"High surrogate without following low surrogate";var n=t.charCodeAt(e+1);if(56320>n||n>57343)throw"High surrogate without following low surrogate";return t.charAt(e)+t.charAt(e+1)}if(0===e)throw"Low surrogate without preceding high surrogate";var r=t.charCodeAt(e-1);if(55296>r||r>56319)throw"Low surrogate without preceding high surrogate";return!1}S.util.string={camelize:function(t){return t.replace(/-+(.)?/g,(function(t,e){return e?e.toUpperCase():""}))},capitalize:function(t,e){return t.charAt(0).toUpperCase()+(e?t.slice(1):t.slice(1).toLowerCase())},escapeXml:function(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")},graphemeSplit:function(e){var i,n=0,r=[];for(n=0;n-1?t.prototype[r]=function(t){return function(){var i=this.constructor.superclass;this.constructor.superclass=n;var r=e[t].apply(this,arguments);if(this.constructor.superclass=i,"initialize"!==t)return r}}(r):t.prototype[r]=e[r],i&&(e.toString!==Object.prototype.toString&&(t.prototype.toString=e.toString),e.valueOf!==Object.prototype.valueOf&&(t.prototype.valueOf=e.valueOf))};function r(){}function s(e){for(var i=null,n=this;n.constructor.superclass;){var r=n.constructor.superclass.prototype[e];if(n[e]!==r){i=r;break}n=n.constructor.superclass.prototype}return i?arguments.length>1?i.apply(this,t.call(arguments,1)):i.call(this):console.log("tried to callSuper "+e+", method not found in prototype chain",this)}S.util.createClass=function(){var i=null,o=t.call(arguments,0);function a(){this.initialize.apply(this,arguments)}"function"==typeof o[0]&&(i=o.shift()),a.superclass=i,a.subclasses=[],i&&(r.prototype=i.prototype,a.prototype=new r,i.subclasses.push(a));for(var h=0,l=o.length;h-1||"touch"===t.pointerType},d="string"==typeof(u=S.document.createElement("div")).style.opacity,f="string"==typeof u.style.filter,g=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,m=function(t){return t},d?m=function(t,e){return t.style.opacity=e,t}:f&&(m=function(t,e){var i=t.style;return t.currentStyle&&!t.currentStyle.hasLayout&&(i.zoom=1),g.test(i.filter)?(e=e>=.9999?"":"alpha(opacity="+100*e+")",i.filter=i.filter.replace(g,e)):i.filter+=" alpha(opacity="+100*e+")",t}),S.util.setStyle=function(t,e){var i=t.style;if(!i)return t;if("string"==typeof e)return t.style.cssText+=";"+e,e.indexOf("opacity")>-1?m(t,e.match(/opacity:\s*(\d?\.?\d*)/)[1]):t;for(var n in e)"opacity"===n?m(t,e[n]):i["float"===n||"cssFloat"===n?void 0===i.styleFloat?"cssFloat":"styleFloat":n]=e[n];return t},function(){var t,e,i,n,r=Array.prototype.slice,s=function(t){return r.call(t,0)};try{t=s(S.document.childNodes)instanceof Array}catch(t){}function o(t,e){var i=S.document.createElement(t);for(var n in e)"class"===n?i.className=e[n]:"for"===n?i.htmlFor=e[n]:i.setAttribute(n,e[n]);return i}function a(t){for(var e=0,i=0,n=S.document.documentElement,r=S.document.body||{scrollLeft:0,scrollTop:0};t&&(t.parentNode||t.host)&&((t=t.parentNode||t.host)===S.document?(e=r.scrollLeft||n.scrollLeft||0,i=r.scrollTop||n.scrollTop||0):(e+=t.scrollLeft||0,i+=t.scrollTop||0),1!==t.nodeType||"fixed"!==t.style.position););return{left:e,top:i}}t||(s=function(t){for(var e=new Array(t.length),i=t.length;i--;)e[i]=t[i];return e}),e=S.document.defaultView&&S.document.defaultView.getComputedStyle?function(t,e){var i=S.document.defaultView.getComputedStyle(t,null);return i?i[e]:void 0}:function(t,e){var i=t.style[e];return!i&&t.currentStyle&&(i=t.currentStyle[e]),i},i=S.document.documentElement.style,n="userSelect"in i?"userSelect":"MozUserSelect"in i?"MozUserSelect":"WebkitUserSelect"in i?"WebkitUserSelect":"KhtmlUserSelect"in i?"KhtmlUserSelect":"",S.util.makeElementUnselectable=function(t){return void 0!==t.onselectstart&&(t.onselectstart=S.util.falseFunction),n?t.style[n]="none":"string"==typeof t.unselectable&&(t.unselectable="on"),t},S.util.makeElementSelectable=function(t){return void 0!==t.onselectstart&&(t.onselectstart=null),n?t.style[n]="":"string"==typeof t.unselectable&&(t.unselectable=""),t},S.util.setImageSmoothing=function(t,e){t.imageSmoothingEnabled=t.imageSmoothingEnabled||t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled||t.oImageSmoothingEnabled,t.imageSmoothingEnabled=e},S.util.getById=function(t){return"string"==typeof t?S.document.getElementById(t):t},S.util.toArray=s,S.util.addClass=function(t,e){t&&-1===(" "+t.className+" ").indexOf(" "+e+" ")&&(t.className+=(t.className?" ":"")+e)},S.util.makeElement=o,S.util.wrapElement=function(t,e,i){return"string"==typeof e&&(e=o(e,i)),t.parentNode&&t.parentNode.replaceChild(e,t),e.appendChild(t),e},S.util.getScrollLeftTop=a,S.util.getElementOffset=function(t){var i,n,r=t&&t.ownerDocument,s={left:0,top:0},o={left:0,top:0},h={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!r)return o;for(var l in h)o[h[l]]+=parseInt(e(t,l),10)||0;return i=r.documentElement,void 0!==t.getBoundingClientRect&&(s=t.getBoundingClientRect()),n=a(t),{left:s.left+n.left-(i.clientLeft||0)+o.left,top:s.top+n.top-(i.clientTop||0)+o.top}},S.util.getNodeCanvas=function(t){var e=S.jsdomImplForWrapper(t);return e._canvas||e._image},S.util.cleanUpJsdomNode=function(t){if(S.isLikelyNode){var e=S.jsdomImplForWrapper(t);e&&(e._image=null,e._canvas=null,e._currentSrc=null,e._attributes=null,e._classList=null)}}}(),function(){function t(){}S.util.request=function(e,i){i||(i={});var n=i.method?i.method.toUpperCase():"GET",r=i.onComplete||function(){},s=new S.window.XMLHttpRequest,o=i.body||i.parameters;return s.onreadystatechange=function(){4===s.readyState&&(r(s),s.onreadystatechange=t)},"GET"===n&&(o=null,"string"==typeof i.parameters&&(e=function(t,e){return t+(/\?/.test(t)?"&":"?")+e}(e,i.parameters))),s.open(n,e,!0),"POST"!==n&&"PUT"!==n||s.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),s.send(o),s}}(),S.log=console.log,S.warn=console.warn,function(){var t=S.util.object.extend,e=S.util.object.clone,i=[];function n(){return!1}function r(t,e,i,n){return-i*Math.cos(t/n*(Math.PI/2))+i+e}S.util.object.extend(i,{cancelAll:function(){var t=this.splice(0);return t.forEach((function(t){t.cancel()})),t},cancelByCanvas:function(t){if(!t)return[];var e=this.filter((function(e){return"object"==typeof e.target&&e.target.canvas===t}));return e.forEach((function(t){t.cancel()})),e},cancelByTarget:function(t){var e=this.findAnimationsByTarget(t);return e.forEach((function(t){t.cancel()})),e},findAnimationIndex:function(t){return this.indexOf(this.findAnimation(t))},findAnimation:function(t){return this.find((function(e){return e.cancel===t}))},findAnimationsByTarget:function(t){return t?this.filter((function(e){return e.target===t})):[]}});var s=S.window.requestAnimationFrame||S.window.webkitRequestAnimationFrame||S.window.mozRequestAnimationFrame||S.window.oRequestAnimationFrame||S.window.msRequestAnimationFrame||function(t){return S.window.setTimeout(t,1e3/60)},o=S.window.cancelAnimationFrame||S.window.clearTimeout;function a(){return s.apply(S.window,arguments)}S.util.animate=function(i){i||(i={});var s,o=!1,h=function(){var t=S.runningAnimations.indexOf(s);return t>-1&&S.runningAnimations.splice(t,1)[0]};return s=t(e(i),{cancel:function(){return o=!0,h()},currentValue:"startValue"in i?i.startValue:0,completionRate:0,durationRate:0}),S.runningAnimations.push(s),a((function(t){var e,l=t||+new Date,c=i.duration||500,u=l+c,d=i.onChange||n,f=i.abort||n,g=i.onComplete||n,m=i.easing||r,p="startValue"in i&&i.startValue.length>0,v="startValue"in i?i.startValue:0,y="endValue"in i?i.endValue:100,_=i.byValue||(p?v.map((function(t,e){return y[e]-v[e]})):y-v);i.onStart&&i.onStart(),function t(i){var n=(e=i||+new Date)>u?c:e-l,r=n/c,w=p?v.map((function(t,e){return m(n,v[e],_[e],c)})):m(n,v,_,c),b=p?Math.abs((w[0]-v[0])/_[0]):Math.abs((w-v)/_);if(s.currentValue=p?w.slice():w,s.completionRate=b,s.durationRate=r,!o){if(!f(w,b,r))return e>u?(s.currentValue=p?y.slice():y,s.completionRate=1,s.durationRate=1,d(p?y.slice():y,1,1),g(y,1,1),void h()):(d(w,b,r),void a(t));h()}}(l)})),s.cancel},S.util.requestAnimFrame=a,S.util.cancelAnimFrame=function(){return o.apply(S.window,arguments)},S.runningAnimations=i}(),function(){function t(t,e,i){var n="rgba("+parseInt(t[0]+i*(e[0]-t[0]),10)+","+parseInt(t[1]+i*(e[1]-t[1]),10)+","+parseInt(t[2]+i*(e[2]-t[2]),10);return(n+=","+(t&&e?parseFloat(t[3]+i*(e[3]-t[3])):1))+")"}S.util.animateColor=function(e,i,n,r){var s=new S.Color(e).getSource(),o=new S.Color(i).getSource(),a=r.onComplete,h=r.onChange;return r=r||{},S.util.animate(S.util.object.extend(r,{duration:n||500,startValue:s,endValue:o,byValue:o,easing:function(e,i,n,s){return t(i,n,r.colorEasing?r.colorEasing(e,s):1-Math.cos(e/s*(Math.PI/2)))},onComplete:function(e,i,n){if(a)return a(t(o,o,0),i,n)},onChange:function(e,i,n){if(h){if(Array.isArray(e))return h(t(e,e,0),i,n);h(e,i,n)}}}))}}(),function(){function t(t,e,i,n){return t-1&&c>-1&&c-1)&&(i="stroke")}else{if("href"===t||"xlink:href"===t||"font"===t)return i;if("imageSmoothing"===t)return"optimizeQuality"===i;a=h?i.map(s):s(i,r)}}else i="";return!h&&isNaN(a)?i:a}function f(t){return new RegExp("^("+t.join("|")+")\\b","i")}function g(t,e){var i,n,r,s,o=[];for(r=0,s=e.length;r1;)h.shift(),l=e.util.multiplyTransformMatrices(l,h[0]);return l}}();var y=new RegExp("^\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*,?\\s*("+e.reNum+"+)\\s*$");function _(t){if(!e.svgViewBoxElementsRegEx.test(t.nodeName))return{};var i,n,r,o,a,h,l=t.getAttribute("viewBox"),c=1,u=1,d=t.getAttribute("width"),f=t.getAttribute("height"),g=t.getAttribute("x")||0,m=t.getAttribute("y")||0,p=t.getAttribute("preserveAspectRatio")||"",v=!l||!(l=l.match(y)),_=!d||!f||"100%"===d||"100%"===f,w=v&&_,b={},x="",C=0,S=0;if(b.width=0,b.height=0,b.toBeParsed=w,v&&(g||m)&&t.parentNode&&"#document"!==t.parentNode.nodeName&&(x=" translate("+s(g)+" "+s(m)+") ",a=(t.getAttribute("transform")||"")+x,t.setAttribute("transform",a),t.removeAttribute("x"),t.removeAttribute("y")),w)return b;if(v)return b.width=s(d),b.height=s(f),b;if(i=-parseFloat(l[1]),n=-parseFloat(l[2]),r=parseFloat(l[3]),o=parseFloat(l[4]),b.minX=i,b.minY=n,b.viewBoxWidth=r,b.viewBoxHeight=o,_?(b.width=r,b.height=o):(b.width=s(d),b.height=s(f),c=b.width/r,u=b.height/o),"none"!==(p=e.util.parsePreserveAspectRatioAttribute(p)).alignX&&("meet"===p.meetOrSlice&&(u=c=c>u?u:c),"slice"===p.meetOrSlice&&(u=c=c>u?c:u),C=b.width-r*c,S=b.height-o*c,"Mid"===p.alignX&&(C/=2),"Mid"===p.alignY&&(S/=2),"Min"===p.alignX&&(C=0),"Min"===p.alignY&&(S=0)),1===c&&1===u&&0===i&&0===n&&0===g&&0===m)return b;if((g||m)&&"#document"!==t.parentNode.nodeName&&(x=" translate("+s(g)+" "+s(m)+") "),a=x+" matrix("+c+" 0 0 "+u+" "+(i*c+C)+" "+(n*u+S)+") ","svg"===t.nodeName){for(h=t.ownerDocument.createElementNS(e.svgNS,"g");t.firstChild;)h.appendChild(t.firstChild);t.appendChild(h)}else(h=t).removeAttribute("x"),h.removeAttribute("y"),a=h.getAttribute("transform")+a;return h.setAttribute("transform",a),b}function w(t,e){var i="xlink:href",n=v(t,e.getAttribute(i).slice(1));if(n&&n.getAttribute(i)&&w(t,n),["gradientTransform","x1","x2","y1","y2","gradientUnits","cx","cy","r","fx","fy"].forEach((function(t){n&&!e.hasAttribute(t)&&n.hasAttribute(t)&&e.setAttribute(t,n.getAttribute(t))})),!e.children.length)for(var r=n.cloneNode(!0);r.firstChild;)e.appendChild(r.firstChild);e.removeAttribute(i)}e.parseSVGDocument=function(t,i,r,s){if(t){!function(t){for(var i=g(t,["use","svg:use"]),n=0;i.length&&nt.x&&this.y>t.y},gte:function(t){return this.x>=t.x&&this.y>=t.y},lerp:function(t,e){return void 0===e&&(e=.5),e=Math.max(Math.min(1,e),0),new i(this.x+(t.x-this.x)*e,this.y+(t.y-this.y)*e)},distanceFrom:function(t){var e=this.x-t.x,i=this.y-t.y;return Math.sqrt(e*e+i*i)},midPointFrom:function(t){return this.lerp(t)},min:function(t){return new i(Math.min(this.x,t.x),Math.min(this.y,t.y))},max:function(t){return new i(Math.max(this.x,t.x),Math.max(this.y,t.y))},toString:function(){return this.x+","+this.y},setXY:function(t,e){return this.x=t,this.y=e,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setFromPoint:function(t){return this.x=t.x,this.y=t.y,this},swap:function(t){var e=this.x,i=this.y;this.x=t.x,this.y=t.y,t.x=e,t.y=i},clone:function(){return new i(this.x,this.y)}})}(e),function(t){var e=t.fabric||(t.fabric={});function i(t){this.status=t,this.points=[]}e.Intersection?e.warn("fabric.Intersection is already defined"):(e.Intersection=i,e.Intersection.prototype={constructor:i,appendPoint:function(t){return this.points.push(t),this},appendPoints:function(t){return this.points=this.points.concat(t),this}},e.Intersection.intersectLineLine=function(t,n,r,s){var o,a=(s.x-r.x)*(t.y-r.y)-(s.y-r.y)*(t.x-r.x),h=(n.x-t.x)*(t.y-r.y)-(n.y-t.y)*(t.x-r.x),l=(s.y-r.y)*(n.x-t.x)-(s.x-r.x)*(n.y-t.y);if(0!==l){var c=a/l,u=h/l;0<=c&&c<=1&&0<=u&&u<=1?(o=new i("Intersection")).appendPoint(new e.Point(t.x+c*(n.x-t.x),t.y+c*(n.y-t.y))):o=new i}else o=new i(0===a||0===h?"Coincident":"Parallel");return o},e.Intersection.intersectLinePolygon=function(t,e,n){var r,s,o,a,h=new i,l=n.length;for(a=0;a0&&(h.status="Intersection"),h},e.Intersection.intersectPolygonPolygon=function(t,e){var n,r=new i,s=t.length;for(n=0;n0&&(r.status="Intersection"),r},e.Intersection.intersectPolygonRectangle=function(t,n,r){var s=n.min(r),o=n.max(r),a=new e.Point(o.x,s.y),h=new e.Point(s.x,o.y),l=i.intersectLinePolygon(s,a,t),c=i.intersectLinePolygon(a,o,t),u=i.intersectLinePolygon(o,h,t),d=i.intersectLinePolygon(h,s,t),f=new i;return f.appendPoints(l.points),f.appendPoints(c.points),f.appendPoints(u.points),f.appendPoints(d.points),f.points.length>0&&(f.status="Intersection"),f})}(e),function(t){var e=t.fabric||(t.fabric={});function i(t){t?this._tryParsingColor(t):this.setSource([0,0,0,1])}function n(t,e,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+6*(e-t)*i:i<.5?e:i<2/3?t+(e-t)*(2/3-i)*6:t}e.Color?e.warn("fabric.Color is already defined."):(e.Color=i,e.Color.prototype={_tryParsingColor:function(t){var e;t in i.colorNameMap&&(t=i.colorNameMap[t]),"transparent"===t&&(e=[255,255,255,0]),e||(e=i.sourceFromHex(t)),e||(e=i.sourceFromRgb(t)),e||(e=i.sourceFromHsl(t)),e||(e=[0,0,0,1]),e&&this.setSource(e)},_rgbToHsl:function(t,i,n){t/=255,i/=255,n/=255;var r,s,o,a=e.util.array.max([t,i,n]),h=e.util.array.min([t,i,n]);if(o=(a+h)/2,a===h)r=s=0;else{var l=a-h;switch(s=o>.5?l/(2-a-h):l/(a+h),a){case t:r=(i-n)/l+(i0)-(t<0)||+t};function f(t,e){var i=t.angle+u(Math.atan2(e.y,e.x))+360;return Math.round(i%360/45)}function g(t,i){var n=i.transform.target,r=n.canvas,s=e.util.object.clone(i);s.target=n,r&&r.fire("object:"+t,s),n.fire(t,i)}function m(t,e){var i=e.canvas,n=t[i.uniScaleKey];return i.uniformScaling&&!n||!i.uniformScaling&&n}function p(t){return t.originX===l&&t.originY===l}function v(t,e,i){var n=t.lockScalingX,r=t.lockScalingY;return!((!n||!r)&&(e||!n&&!r||!i)&&(!n||"x"!==e)&&(!r||"y"!==e))}function y(t,e,i,n){return{e:t,transform:e,pointer:{x:i,y:n}}}function _(t){return function(e,i,n,r){var s=i.target,o=s.getCenterPoint(),a=s.translateToOriginPoint(o,i.originX,i.originY),h=t(e,i,n,r);return s.setPositionByOrigin(a,i.originX,i.originY),h}}function w(t,e){return function(i,n,r,s){var o=e(i,n,r,s);return o&&g(t,y(i,n,r,s)),o}}function b(t,i,n,r,s){var o=t.target,a=o.controls[t.corner],h=o.canvas.getZoom(),l=o.padding/h,c=o.toLocalPoint(new e.Point(r,s),i,n);return c.x>=l&&(c.x-=l),c.x<=-l&&(c.x+=l),c.y>=l&&(c.y-=l),c.y<=l&&(c.y+=l),c.x-=a.offsetX,c.y-=a.offsetY,c}function x(t){return t.flipX!==t.flipY}function C(t,e,i,n,r){if(0!==t[e]){var s=r/t._getTransformedDimensions()[n]*t[i];t.set(i,s)}}function S(t,e,i,n){var r,l=e.target,c=l._getTransformedDimensions(0,l.skewY),d=b(e,e.originX,e.originY,i,n),f=Math.abs(2*d.x)-c.x,g=l.skewX;f<2?r=0:(r=u(Math.atan2(f/l.scaleX,c.y/l.scaleY)),e.originX===s&&e.originY===h&&(r=-r),e.originX===a&&e.originY===o&&(r=-r),x(l)&&(r=-r));var m=g!==r;if(m){var p=l._getTransformedDimensions().y;l.set("skewX",r),C(l,"skewY","scaleY","y",p)}return m}function T(t,e,i,n){var r,l=e.target,c=l._getTransformedDimensions(l.skewX,0),d=b(e,e.originX,e.originY,i,n),f=Math.abs(2*d.y)-c.y,g=l.skewY;f<2?r=0:(r=u(Math.atan2(f/l.scaleY,c.x/l.scaleX)),e.originX===s&&e.originY===h&&(r=-r),e.originX===a&&e.originY===o&&(r=-r),x(l)&&(r=-r));var m=g!==r;if(m){var p=l._getTransformedDimensions().x;l.set("skewY",r),C(l,"skewX","scaleX","x",p)}return m}function E(t,e,i,n,r){r=r||{};var s,o,a,h,l,u,f=e.target,g=f.lockScalingX,y=f.lockScalingY,_=r.by,w=m(t,f),x=v(f,_,w),C=e.gestureScale;if(x)return!1;if(C)o=e.scaleX*C,a=e.scaleY*C;else{if(s=b(e,e.originX,e.originY,i,n),l="y"!==_?d(s.x):1,u="x"!==_?d(s.y):1,e.signX||(e.signX=l),e.signY||(e.signY=u),f.lockScalingFlip&&(e.signX!==l||e.signY!==u))return!1;if(h=f._getTransformedDimensions(),w&&!_){var S=Math.abs(s.x)+Math.abs(s.y),T=e.original,E=S/(Math.abs(h.x*T.scaleX/f.scaleX)+Math.abs(h.y*T.scaleY/f.scaleY));o=T.scaleX*E,a=T.scaleY*E}else o=Math.abs(s.x*f.scaleX/h.x),a=Math.abs(s.y*f.scaleY/h.y);p(e)&&(o*=2,a*=2),e.signX!==l&&"y"!==_&&(e.originX=c[e.originX],o*=-1,e.signX=l),e.signY!==u&&"x"!==_&&(e.originY=c[e.originY],a*=-1,e.signY=u)}var O=f.scaleX,I=f.scaleY;return _?("x"===_&&f.set("scaleX",o),"y"===_&&f.set("scaleY",a)):(!g&&f.set("scaleX",o),!y&&f.set("scaleY",a)),O!==f.scaleX||I!==f.scaleY}r.scaleCursorStyleHandler=function(t,e,n){var r=m(t,n),s="";if(0!==e.x&&0===e.y?s="x":0===e.x&&0!==e.y&&(s="y"),v(n,s,r))return"not-allowed";var o=f(n,e);return i[o]+"-resize"},r.skewCursorStyleHandler=function(t,e,i){var r="not-allowed";if(0!==e.x&&i.lockSkewingY)return r;if(0!==e.y&&i.lockSkewingX)return r;var s=f(i,e)%4;return n[s]+"-resize"},r.scaleSkewCursorStyleHandler=function(t,e,i){return t[i.canvas.altActionKey]?r.skewCursorStyleHandler(t,e,i):r.scaleCursorStyleHandler(t,e,i)},r.rotationWithSnapping=w("rotating",_((function(t,e,i,n){var r=e,s=r.target,o=s.translateToOriginPoint(s.getCenterPoint(),r.originX,r.originY);if(s.lockRotation)return!1;var a,h=Math.atan2(r.ey-o.y,r.ex-o.x),l=Math.atan2(n-o.y,i-o.x),c=u(l-h+r.theta);if(s.snapAngle>0){var d=s.snapAngle,f=s.snapThreshold||d,g=Math.ceil(c/d)*d,m=Math.floor(c/d)*d;Math.abs(c-m)0?s:a:(c>0&&(r=u===o?s:a),c<0&&(r=u===o?a:s),x(h)&&(r=r===s?a:s)),e.originX=r,w("skewing",_(S))(t,e,i,n))},r.skewHandlerY=function(t,e,i,n){var r,a=e.target,c=a.skewY,u=e.originX;return!a.lockSkewingY&&(0===c?r=b(e,l,l,i,n).y>0?o:h:(c>0&&(r=u===s?o:h),c<0&&(r=u===s?h:o),x(a)&&(r=r===o?h:o)),e.originY=r,w("skewing",_(T))(t,e,i,n))},r.dragHandler=function(t,e,i,n){var r=e.target,s=i-e.offsetX,o=n-e.offsetY,a=!r.get("lockMovementX")&&r.left!==s,h=!r.get("lockMovementY")&&r.top!==o;return a&&r.set("left",s),h&&r.set("top",o),(a||h)&&g("moving",y(t,e,i,n)),a||h},r.scaleOrSkewActionName=function(t,e,i){var n=t[i.canvas.altActionKey];return 0===e.x?n?"skewX":"scaleY":0===e.y?n?"skewY":"scaleX":void 0},r.rotationStyleHandler=function(t,e,i){return i.lockRotation?"not-allowed":e.cursorStyle},r.fireEvent=g,r.wrapWithFixedAnchor=_,r.wrapWithFireEvent=w,r.getLocalPoint=b,e.controlsUtils=r}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.degreesToRadians,n=e.controlsUtils;n.renderCircleControl=function(t,e,i,n,r){n=n||{};var s,o=this.sizeX||n.cornerSize||r.cornerSize,a=this.sizeY||n.cornerSize||r.cornerSize,h=void 0!==n.transparentCorners?n.transparentCorners:r.transparentCorners,l=h?"stroke":"fill",c=!h&&(n.cornerStrokeColor||r.cornerStrokeColor),u=e,d=i;t.save(),t.fillStyle=n.cornerColor||r.cornerColor,t.strokeStyle=n.cornerStrokeColor||r.cornerStrokeColor,o>a?(s=o,t.scale(1,a/o),d=i*o/a):a>o?(s=a,t.scale(o/a,1),u=e*a/o):s=o,t.lineWidth=1,t.beginPath(),t.arc(u,d,s/2,0,2*Math.PI,!1),t[l](),c&&t.stroke(),t.restore()},n.renderSquareControl=function(t,e,n,r,s){r=r||{};var o=this.sizeX||r.cornerSize||s.cornerSize,a=this.sizeY||r.cornerSize||s.cornerSize,h=void 0!==r.transparentCorners?r.transparentCorners:s.transparentCorners,l=h?"stroke":"fill",c=!h&&(r.cornerStrokeColor||s.cornerStrokeColor),u=o/2,d=a/2;t.save(),t.fillStyle=r.cornerColor||s.cornerColor,t.strokeStyle=r.cornerStrokeColor||s.cornerStrokeColor,t.lineWidth=1,t.translate(e,n),t.rotate(i(s.angle)),t[l+"Rect"](-u,-d,o,a),c&&t.strokeRect(-u,-d,o,a),t.restore()}}(e),function(t){var e=t.fabric||(t.fabric={});e.Control=function(t){for(var e in t)this[e]=t[e]},e.Control.prototype={visible:!0,actionName:"scale",angle:0,x:0,y:0,offsetX:0,offsetY:0,sizeX:null,sizeY:null,touchSizeX:null,touchSizeY:null,cursorStyle:"crosshair",withConnection:!1,actionHandler:function(){},mouseDownHandler:function(){},mouseUpHandler:function(){},getActionHandler:function(){return this.actionHandler},getMouseDownHandler:function(){return this.mouseDownHandler},getMouseUpHandler:function(){return this.mouseUpHandler},cursorStyleHandler:function(t,e){return e.cursorStyle},getActionName:function(t,e){return e.actionName},getVisibility:function(t,e){var i=t._controlsVisibility;return i&&void 0!==i[e]?i[e]:this.visible},setVisibility:function(t){this.visible=t},positionHandler:function(t,i){return e.util.transformPoint({x:this.x*t.x+this.offsetX,y:this.y*t.y+this.offsetY},i)},calcCornerCoords:function(t,i,n,r,s){var o,a,h,l,c=s?this.touchSizeX:this.sizeX,u=s?this.touchSizeY:this.sizeY;if(c&&u&&c!==u){var d=Math.atan2(u,c),f=Math.sqrt(c*c+u*u)/2,g=d-e.util.degreesToRadians(t),m=Math.PI/2-d-e.util.degreesToRadians(t);o=f*e.util.cos(g),a=f*e.util.sin(g),h=f*e.util.cos(m),l=f*e.util.sin(m)}else f=.7071067812*(c&&u?c:i),g=e.util.degreesToRadians(45-t),o=h=f*e.util.cos(g),a=l=f*e.util.sin(g);return{tl:{x:n-l,y:r-h},tr:{x:n+o,y:r-a},bl:{x:n-o,y:r+a},br:{x:n+l,y:r+h}}},render:function(t,i,n,r,s){"circle"===((r=r||{}).cornerStyle||s.cornerStyle)?e.controlsUtils.renderCircleControl.call(this,t,i,n,r,s):e.controlsUtils.renderSquareControl.call(this,t,i,n,r,s)}}}(e),function(){function t(t,e){var i,n,r,s,o=t.getAttribute("style"),a=t.getAttribute("offset")||0;if(a=(a=parseFloat(a)/(/%$/.test(a)?100:1))<0?0:a>1?1:a,o){var h=o.split(/\s*;\s*/);for(""===h[h.length-1]&&h.pop(),s=h.length;s--;){var l=h[s].split(/\s*:\s*/),c=l[0].trim(),u=l[1].trim();"stop-color"===c?i=u:"stop-opacity"===c&&(r=u)}}return i||(i=t.getAttribute("stop-color")||"rgb(0,0,0)"),r||(r=t.getAttribute("stop-opacity")),n=(i=new S.Color(i)).getAlpha(),r=isNaN(parseFloat(r))?1:parseFloat(r),r*=n*e,{offset:a,color:i.toRgb(),opacity:r}}var e=S.util.object.clone;S.Gradient=S.util.createClass({offsetX:0,offsetY:0,gradientTransform:null,gradientUnits:"pixels",type:"linear",initialize:function(t){t||(t={}),t.coords||(t.coords={});var e,i=this;Object.keys(t).forEach((function(e){i[e]=t[e]})),this.id?this.id+="_"+S.Object.__uid++:this.id=S.Object.__uid++,e={x1:t.coords.x1||0,y1:t.coords.y1||0,x2:t.coords.x2||0,y2:t.coords.y2||0},"radial"===this.type&&(e.r1=t.coords.r1||0,e.r2=t.coords.r2||0),this.coords=e,this.colorStops=t.colorStops.slice()},addColorStop:function(t){for(var e in t){var i=new S.Color(t[e]);this.colorStops.push({offset:parseFloat(e),color:i.toRgb(),opacity:i.getAlpha()})}return this},toObject:function(t){var e={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientUnits:this.gradientUnits,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return S.util.populateWithProperties(this,e,t),e},toSVG:function(t,i){var n,r,s,o,a=e(this.coords,!0),h=(i=i||{},e(this.colorStops,!0)),l=a.r1>a.r2,c=this.gradientTransform?this.gradientTransform.concat():S.iMatrix.concat(),u=-this.offsetX,d=-this.offsetY,f=!!i.additionalTransform,g="pixels"===this.gradientUnits?"userSpaceOnUse":"objectBoundingBox";if(h.sort((function(t,e){return t.offset-e.offset})),"objectBoundingBox"===g?(u/=t.width,d/=t.height):(u+=t.width/2,d+=t.height/2),"path"===t.type&&"percentage"!==this.gradientUnits&&(u-=t.pathOffset.x,d-=t.pathOffset.y),c[4]-=u,c[5]-=d,o='id="SVGID_'+this.id+'" gradientUnits="'+g+'"',o+=' gradientTransform="'+(f?i.additionalTransform+" ":"")+S.util.matrixToSVG(c)+'" ',"linear"===this.type?s=["\n']:"radial"===this.type&&(s=["\n']),"radial"===this.type){if(l)for((h=h.concat()).reverse(),n=0,r=h.length;n0){var p=m/Math.max(a.r1,a.r2);for(n=0,r=h.length;n\n')}return s.push("linear"===this.type?"\n":"\n"),s.join("")},toLive:function(t){var e,i,n,r=S.util.object.clone(this.coords);if(this.type){for("linear"===this.type?e=t.createLinearGradient(r.x1,r.y1,r.x2,r.y2):"radial"===this.type&&(e=t.createRadialGradient(r.x1,r.y1,r.r1,r.x2,r.y2,r.r2)),i=0,n=this.colorStops.length;i1?1:s,isNaN(s)&&(s=1);var o,a,h,l,c=e.getElementsByTagName("stop"),u="userSpaceOnUse"===e.getAttribute("gradientUnits")?"pixels":"percentage",d=e.getAttribute("gradientTransform")||"",f=[],g=0,m=0;for("linearGradient"===e.nodeName||"LINEARGRADIENT"===e.nodeName?(o="linear",a=function(t){return{x1:t.getAttribute("x1")||0,y1:t.getAttribute("y1")||0,x2:t.getAttribute("x2")||"100%",y2:t.getAttribute("y2")||0}}(e)):(o="radial",a=function(t){return{x1:t.getAttribute("fx")||t.getAttribute("cx")||"50%",y1:t.getAttribute("fy")||t.getAttribute("cy")||"50%",r1:0,x2:t.getAttribute("cx")||"50%",y2:t.getAttribute("cy")||"50%",r2:t.getAttribute("r")||"50%"}}(e)),h=c.length;h--;)f.push(t(c[h],s));return l=S.parseTransformAttribute(d),function(t,e,i,n){var r,s;Object.keys(e).forEach((function(t){"Infinity"===(r=e[t])?s=1:"-Infinity"===r?s=0:(s=parseFloat(e[t],10),"string"==typeof r&&/^(\d+\.\d+)%|(\d+)%$/.test(r)&&(s*=.01,"pixels"===n&&("x1"!==t&&"x2"!==t&&"r2"!==t||(s*=i.viewBoxWidth||i.width),"y1"!==t&&"y2"!==t||(s*=i.viewBoxHeight||i.height)))),e[t]=s}))}(0,a,r,u),"pixels"===u&&(g=-i.left,m=-i.top),new S.Gradient({id:e.getAttribute("id"),type:o,coords:a,colorStops:f,gradientUnits:u,gradientTransform:l,offsetX:g,offsetY:m})}})}(),v=S.util.toFixed,S.Pattern=S.util.createClass({repeat:"repeat",offsetX:0,offsetY:0,crossOrigin:"",patternTransform:null,initialize:function(t,e){if(t||(t={}),this.id=S.Object.__uid++,this.setOptions(t),!t.source||t.source&&"string"!=typeof t.source)e&&e(this);else{var i=this;this.source=S.util.createImage(),S.util.loadImage(t.source,(function(t,n){i.source=t,e&&e(i,n)}),null,this.crossOrigin)}},toObject:function(t){var e,i,n=S.Object.NUM_FRACTION_DIGITS;return"string"==typeof this.source.src?e=this.source.src:"object"==typeof this.source&&this.source.toDataURL&&(e=this.source.toDataURL()),i={type:"pattern",source:e,repeat:this.repeat,crossOrigin:this.crossOrigin,offsetX:v(this.offsetX,n),offsetY:v(this.offsetY,n),patternTransform:this.patternTransform?this.patternTransform.concat():null},S.util.populateWithProperties(this,i,t),i},toSVG:function(t){var e="function"==typeof this.source?this.source():this.source,i=e.width/t.width,n=e.height/t.height,r=this.offsetX/t.width,s=this.offsetY/t.height,o="";return"repeat-x"!==this.repeat&&"no-repeat"!==this.repeat||(n=1,s&&(n+=Math.abs(s))),"repeat-y"!==this.repeat&&"no-repeat"!==this.repeat||(i=1,r&&(i+=Math.abs(r))),e.src?o=e.src:e.toDataURL&&(o=e.toDataURL()),'\n\n\n'},setOptions:function(t){for(var e in t)this[e]=t[e]},toLive:function(t){var e=this.source;if(!e)return"";if(void 0!==e.src){if(!e.complete)return"";if(0===e.naturalWidth||0===e.naturalHeight)return""}return t.createPattern(e,this.repeat)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.toFixed;e.Shadow?e.warn("fabric.Shadow is already defined."):(e.Shadow=e.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1,initialize:function(t){for(var i in"string"==typeof t&&(t=this._parseShadow(t)),t)this[i]=t[i];this.id=e.Object.__uid++},_parseShadow:function(t){var i=t.trim(),n=e.Shadow.reOffsetsAndBlur.exec(i)||[];return{color:(i.replace(e.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)").trim(),offsetX:parseFloat(n[1],10)||0,offsetY:parseFloat(n[2],10)||0,blur:parseFloat(n[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(t){var n=40,r=40,s=e.Object.NUM_FRACTION_DIGITS,o=e.util.rotateVector({x:this.offsetX,y:this.offsetY},e.util.degreesToRadians(-t.angle)),a=new e.Color(this.color);return t.width&&t.height&&(n=100*i((Math.abs(o.x)+this.blur)/t.width,s)+20,r=100*i((Math.abs(o.y)+this.blur)/t.height,s)+20),t.flipX&&(o.x*=-1),t.flipY&&(o.y*=-1),'\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\n\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling};var t={},i=e.Shadow.prototype;return["color","blur","offsetX","offsetY","affectStroke","nonScaling"].forEach((function(e){this[e]!==i[e]&&(t[e]=this[e])}),this),t}}),e.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(-?\d+(?:\.\d*)?(?:px)?(?:\s?|$))?(\d+(?:\.\d*)?(?:px)?)?(?:\s?|$)(?:$|\s)/)}(e),function(){if(S.StaticCanvas)S.warn("fabric.StaticCanvas is already defined.");else{var t=S.util.object.extend,e=S.util.getElementOffset,i=S.util.removeFromArray,n=S.util.toFixed,r=S.util.transformPoint,s=S.util.invertTransform,o=S.util.getNodeCanvas,a=S.util.createCanvasElement,h=new Error("Could not initialize `canvas` element");S.StaticCanvas=S.util.createClass(S.CommonMethods,{initialize:function(t,e){e||(e={}),this.renderAndResetBound=this.renderAndReset.bind(this),this.requestRenderAllBound=this.requestRenderAll.bind(this),this._initStatic(t,e)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!1,renderOnAddRemove:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:S.iMatrix.concat(),backgroundVpt:!0,overlayVpt:!0,enableRetinaScaling:!0,vptCoords:{},skipOffscreen:!0,clipPath:void 0,_initStatic:function(t,e){var i=this.requestRenderAllBound;this._objects=[],this._createLowerCanvas(t),this._initOptions(e),this.interactive||this._initRetinaScaling(),e.overlayImage&&this.setOverlayImage(e.overlayImage,i),e.backgroundImage&&this.setBackgroundImage(e.backgroundImage,i),e.backgroundColor&&this.setBackgroundColor(e.backgroundColor,i),e.overlayColor&&this.setOverlayColor(e.overlayColor,i),this.calcOffset()},_isRetinaScaling:function(){return S.devicePixelRatio>1&&this.enableRetinaScaling},getRetinaScaling:function(){return this._isRetinaScaling()?Math.max(1,S.devicePixelRatio):1},_initRetinaScaling:function(){if(this._isRetinaScaling()){var t=S.devicePixelRatio;this.__initRetinaScaling(t,this.lowerCanvasEl,this.contextContainer),this.upperCanvasEl&&this.__initRetinaScaling(t,this.upperCanvasEl,this.contextTop)}},__initRetinaScaling:function(t,e,i){e.setAttribute("width",this.width*t),e.setAttribute("height",this.height*t),i.scale(t,t)},calcOffset:function(){return this._offset=e(this.lowerCanvasEl),this},setOverlayImage:function(t,e,i){return this.__setBgOverlayImage("overlayImage",t,e,i)},setBackgroundImage:function(t,e,i){return this.__setBgOverlayImage("backgroundImage",t,e,i)},setOverlayColor:function(t,e){return this.__setBgOverlayColor("overlayColor",t,e)},setBackgroundColor:function(t,e){return this.__setBgOverlayColor("backgroundColor",t,e)},__setBgOverlayImage:function(t,e,i,n){return"string"==typeof e?S.util.loadImage(e,(function(e,r){if(e){var s=new S.Image(e,n);this[t]=s,s.canvas=this}i&&i(e,r)}),this,n&&n.crossOrigin):(n&&e.setOptions(n),this[t]=e,e&&(e.canvas=this),i&&i(e,!1)),this},__setBgOverlayColor:function(t,e,i){return this[t]=e,this._initGradient(e,t),this._initPattern(e,t,i),this},_createCanvasElement:function(){var t=a();if(!t)throw h;if(t.style||(t.style={}),void 0===t.getContext)throw h;return t},_initOptions:function(t){var e=this.lowerCanvasEl;this._setOptions(t),this.width=this.width||parseInt(e.width,10)||0,this.height=this.height||parseInt(e.height,10)||0,this.lowerCanvasEl.style&&(e.width=this.width,e.height=this.height,e.style.width=this.width+"px",e.style.height=this.height+"px",this.viewportTransform=this.viewportTransform.slice())},_createLowerCanvas:function(t){t&&t.getContext?this.lowerCanvasEl=t:this.lowerCanvasEl=S.util.getById(t)||this._createCanvasElement(),S.util.addClass(this.lowerCanvasEl,"lower-canvas"),this._originalCanvasStyle=this.lowerCanvasEl.style,this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(t,e){return this.setDimensions({width:t},e)},setHeight:function(t,e){return this.setDimensions({height:t},e)},setDimensions:function(t,e){var i;for(var n in e=e||{},t)i=t[n],e.cssOnly||(this._setBackstoreDimension(n,t[n]),i+="px",this.hasLostContext=!0),e.backstoreOnly||this._setCssDimension(n,i);return this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(this.contextTop),this._initRetinaScaling(),this.calcOffset(),e.cssOnly||this.requestRenderAll(),this},_setBackstoreDimension:function(t,e){return this.lowerCanvasEl[t]=e,this.upperCanvasEl&&(this.upperCanvasEl[t]=e),this.cacheCanvasEl&&(this.cacheCanvasEl[t]=e),this[t]=e,this},_setCssDimension:function(t,e){return this.lowerCanvasEl.style[t]=e,this.upperCanvasEl&&(this.upperCanvasEl.style[t]=e),this.wrapperEl&&(this.wrapperEl.style[t]=e),this},getZoom:function(){return this.viewportTransform[0]},setViewportTransform:function(t){var e,i,n,r=this._activeObject,s=this.backgroundImage,o=this.overlayImage;for(this.viewportTransform=t,i=0,n=this._objects.length;i\n'),this._setSVGBgOverlayColor(i,"background"),this._setSVGBgOverlayImage(i,"backgroundImage",e),this._setSVGObjects(i,e),this.clipPath&&i.push("\n"),this._setSVGBgOverlayColor(i,"overlay"),this._setSVGBgOverlayImage(i,"overlayImage",e),i.push(""),i.join("")},_setSVGPreamble:function(t,e){e.suppressPreamble||t.push('\n','\n')},_setSVGHeader:function(t,e){var i,r=e.width||this.width,s=e.height||this.height,o='viewBox="0 0 '+this.width+" "+this.height+'" ',a=S.Object.NUM_FRACTION_DIGITS;e.viewBox?o='viewBox="'+e.viewBox.x+" "+e.viewBox.y+" "+e.viewBox.width+" "+e.viewBox.height+'" ':this.svgViewportTransformation&&(i=this.viewportTransform,o='viewBox="'+n(-i[4]/i[0],a)+" "+n(-i[5]/i[3],a)+" "+n(this.width/i[0],a)+" "+n(this.height/i[3],a)+'" '),t.push("\n',"Created with Fabric.js ",S.version,"\n","\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(e),"\n")},createSVGClipPathMarkup:function(t){var e=this.clipPath;return e?(e.clipPathId="CLIPPATH_"+S.Object.__uid++,'\n'+this.clipPath.toClipPathSVG(t.reviver)+"\n"):""},createSVGRefElementsMarkup:function(){var t=this;return["background","overlay"].map((function(e){var i=t[e+"Color"];if(i&&i.toLive){var n=t[e+"Vpt"],r=t.viewportTransform,s={width:t.width/(n?r[0]:1),height:t.height/(n?r[3]:1)};return i.toSVG(s,{additionalTransform:n?S.util.matrixToSVG(r):""})}})).join("")},createSVGFontFacesMarkup:function(){var t,e,i,n,r,s,o,a,h="",l={},c=S.fontPaths,u=[];for(this._objects.forEach((function t(e){u.push(e),e._objects&&e._objects.forEach(t)})),o=0,a=u.length;o',"\n",h,"","\n"].join("")),h},_setSVGObjects:function(t,e){var i,n,r,s=this._objects;for(n=0,r=s.length;n\n")}else t.push('\n")},sendToBack:function(t){if(!t)return this;var e,n,r,s=this._activeObject;if(t===s&&"activeSelection"===t.type)for(e=(r=s._objects).length;e--;)n=r[e],i(this._objects,n),this._objects.unshift(n);else i(this._objects,t),this._objects.unshift(t);return this.renderOnAddRemove&&this.requestRenderAll(),this},bringToFront:function(t){if(!t)return this;var e,n,r,s=this._activeObject;if(t===s&&"activeSelection"===t.type)for(r=s._objects,e=0;e0+l&&(o=s-1,i(this._objects,r),this._objects.splice(o,0,r)),l++;else 0!==(s=this._objects.indexOf(t))&&(o=this._findNewLowerIndex(t,s,e),i(this._objects,t),this._objects.splice(o,0,t));return this.renderOnAddRemove&&this.requestRenderAll(),this},_findNewLowerIndex:function(t,e,i){var n,r;if(i){for(n=e,r=e-1;r>=0;--r)if(t.intersectsWithObject(this._objects[r])||t.isContainedWithinObject(this._objects[r])||this._objects[r].isContainedWithinObject(t)){n=r;break}}else n=e-1;return n},bringForward:function(t,e){if(!t)return this;var n,r,s,o,a,h=this._activeObject,l=0;if(t===h&&"activeSelection"===t.type)for(n=(a=h._objects).length;n--;)r=a[n],(s=this._objects.indexOf(r))"}}),t(S.StaticCanvas.prototype,S.Observable),t(S.StaticCanvas.prototype,S.Collection),t(S.StaticCanvas.prototype,S.DataURLExporter),t(S.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(t){var e=a();if(!e||!e.getContext)return null;var i=e.getContext("2d");return i&&"setLineDash"===t?void 0!==i.setLineDash:null}}),S.StaticCanvas.prototype.toJSON=S.StaticCanvas.prototype.toObject,S.isLikelyNode&&(S.StaticCanvas.prototype.createPNGStream=function(){var t=o(this.lowerCanvasEl);return t&&t.createPNGStream()},S.StaticCanvas.prototype.createJPEGStream=function(t){var e=o(this.lowerCanvasEl);return e&&e.createJPEGStream(t)})}}(),S.BaseBrush=S.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",strokeMiterLimit:10,strokeDashArray:null,limitedToCanvasSize:!1,_setBrushStyles:function(t){t.strokeStyle=this.color,t.lineWidth=this.width,t.lineCap=this.strokeLineCap,t.miterLimit=this.strokeMiterLimit,t.lineJoin=this.strokeLineJoin,t.setLineDash(this.strokeDashArray||[])},_saveAndTransform:function(t){var e=this.canvas.viewportTransform;t.save(),t.transform(e[0],e[1],e[2],e[3],e[4],e[5])},_setShadow:function(){if(this.shadow){var t=this.canvas,e=this.shadow,i=t.contextTop,n=t.getZoom();t&&t._isRetinaScaling()&&(n*=S.devicePixelRatio),i.shadowColor=e.color,i.shadowBlur=e.blur*n,i.shadowOffsetX=e.offsetX*n,i.shadowOffsetY=e.offsetY*n}},needsFullRender:function(){return new S.Color(this.color).getAlpha()<1||!!this.shadow},_resetShadow:function(){var t=this.canvas.contextTop;t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0},_isOutSideCanvas:function(t){return t.x<0||t.x>this.canvas.getWidth()||t.y<0||t.y>this.canvas.getHeight()}}),S.PencilBrush=S.util.createClass(S.BaseBrush,{decimate:.4,drawStraightLine:!1,straightLineKey:"shiftKey",initialize:function(t){this.canvas=t,this._points=[]},needsFullRender:function(){return this.callSuper("needsFullRender")||this._hasStraightLine},_drawSegment:function(t,e,i){var n=e.midPointFrom(i);return t.quadraticCurveTo(e.x,e.y,n.x,n.y),n},onMouseDown:function(t,e){this.canvas._isMainEvent(e.e)&&(this.drawStraightLine=e.e[this.straightLineKey],this._prepareForDrawing(t),this._captureDrawingPath(t),this._render())},onMouseMove:function(t,e){if(this.canvas._isMainEvent(e.e)&&(this.drawStraightLine=e.e[this.straightLineKey],(!0!==this.limitedToCanvasSize||!this._isOutSideCanvas(t))&&this._captureDrawingPath(t)&&this._points.length>1))if(this.needsFullRender())this.canvas.clearContext(this.canvas.contextTop),this._render();else{var i=this._points,n=i.length,r=this.canvas.contextTop;this._saveAndTransform(r),this.oldEnd&&(r.beginPath(),r.moveTo(this.oldEnd.x,this.oldEnd.y)),this.oldEnd=this._drawSegment(r,i[n-2],i[n-1],!0),r.stroke(),r.restore()}},onMouseUp:function(t){return!this.canvas._isMainEvent(t.e)||(this.drawStraightLine=!1,this.oldEnd=void 0,this._finalizeAndAddPath(),!1)},_prepareForDrawing:function(t){var e=new S.Point(t.x,t.y);this._reset(),this._addPoint(e),this.canvas.contextTop.moveTo(e.x,e.y)},_addPoint:function(t){return!(this._points.length>1&&t.eq(this._points[this._points.length-1])||(this.drawStraightLine&&this._points.length>1&&(this._hasStraightLine=!0,this._points.pop()),this._points.push(t),0))},_reset:function(){this._points=[],this._setBrushStyles(this.canvas.contextTop),this._setShadow(),this._hasStraightLine=!1},_captureDrawingPath:function(t){var e=new S.Point(t.x,t.y);return this._addPoint(e)},_render:function(t){var e,i,n=this._points[0],r=this._points[1];if(t=t||this.canvas.contextTop,this._saveAndTransform(t),t.beginPath(),2===this._points.length&&n.x===r.x&&n.y===r.y){var s=this.width/1e3;n=new S.Point(n.x,n.y),r=new S.Point(r.x,r.y),n.x-=s,r.x+=s}for(t.moveTo(n.x,n.y),e=1,i=this._points.length;e=r&&(o=t[i],a.push(o));return a.push(t[s]),a},_finalizeAndAddPath:function(){this.canvas.contextTop.closePath(),this.decimate&&(this._points=this.decimatePoints(this._points,this.decimate));var t=this.convertPointsToSVGPath(this._points);if(this._isEmptySVGPath(t))this.canvas.requestRenderAll();else{var e=this.createPath(t);this.canvas.clearContext(this.canvas.contextTop),this.canvas.fire("before:path:created",{path:e}),this.canvas.add(e),this.canvas.requestRenderAll(),e.setCoords(),this._resetShadow(),this.canvas.fire("path:created",{path:e})}}}),S.CircleBrush=S.util.createClass(S.BaseBrush,{width:10,initialize:function(t){this.canvas=t,this.points=[]},drawDot:function(t){var e=this.addPoint(t),i=this.canvas.contextTop;this._saveAndTransform(i),this.dot(i,e),i.restore()},dot:function(t,e){t.fillStyle=e.fill,t.beginPath(),t.arc(e.x,e.y,e.radius,0,2*Math.PI,!1),t.closePath(),t.fill()},onMouseDown:function(t){this.points.length=0,this.canvas.clearContext(this.canvas.contextTop),this._setShadow(),this.drawDot(t)},_render:function(){var t,e,i=this.canvas.contextTop,n=this.points;for(this._saveAndTransform(i),t=0,e=n.length;t0&&!this.preserveObjectStacking){e=[],i=[];for(var r=0,s=this._objects.length;r1&&(this._activeObject._objects=i),e.push.apply(e,i)}else e=this._objects;return e},renderAll:function(){!this.contextTopDirty||this._groupSelector||this.isDrawingMode||(this.clearContext(this.contextTop),this.contextTopDirty=!1),this.hasLostContext&&(this.renderTopLayer(this.contextTop),this.hasLostContext=!1);var t=this.contextContainer;return this.renderCanvas(t,this._chooseObjectsToRender()),this},renderTopLayer:function(t){t.save(),this.isDrawingMode&&this._isCurrentlyDrawing&&(this.freeDrawingBrush&&this.freeDrawingBrush._render(),this.contextTopDirty=!0),this.selection&&this._groupSelector&&(this._drawSelection(t),this.contextTopDirty=!0),t.restore()},renderTop:function(){var t=this.contextTop;return this.clearContext(t),this.renderTopLayer(t),this.fire("after:render"),this},_normalizePointer:function(t,e){var i=t.calcTransformMatrix(),n=S.util.invertTransform(i),r=this.restorePointerVpt(e);return S.util.transformPoint(r,n)},isTargetTransparent:function(t,e,i){if(t.shouldCache()&&t._cacheCanvas&&t!==this._activeObject){var n=this._normalizePointer(t,{x:e,y:i}),r=Math.max(t.cacheTranslationX+n.x*t.zoomX,0),s=Math.max(t.cacheTranslationY+n.y*t.zoomY,0);return S.util.isTransparent(t._cacheContext,Math.round(r),Math.round(s),this.targetFindTolerance)}var o=this.contextCache,a=t.selectionBackgroundColor,h=this.viewportTransform;return t.selectionBackgroundColor="",this.clearContext(o),o.save(),o.transform(h[0],h[1],h[2],h[3],h[4],h[5]),t.render(o),o.restore(),t.selectionBackgroundColor=a,S.util.isTransparent(o,e,i,this.targetFindTolerance)},_isSelectionKeyPressed:function(t){return Array.isArray(this.selectionKey)?!!this.selectionKey.find((function(e){return!0===t[e]})):t[this.selectionKey]},_shouldClearSelection:function(t,e){var i=this.getActiveObjects(),n=this._activeObject;return!e||e&&n&&i.length>1&&-1===i.indexOf(e)&&n!==e&&!this._isSelectionKeyPressed(t)||e&&!e.evented||e&&!e.selectable&&n&&n!==e},_shouldCenterTransform:function(t,e,i){var n;if(t)return"scale"===e||"scaleX"===e||"scaleY"===e||"resizing"===e?n=this.centeredScaling||t.centeredScaling:"rotate"===e&&(n=this.centeredRotation||t.centeredRotation),n?!i:i},_getOriginFromCorner:function(t,e){var i={x:t.originX,y:t.originY};return"ml"===e||"tl"===e||"bl"===e?i.x="right":"mr"!==e&&"tr"!==e&&"br"!==e||(i.x="left"),"tl"===e||"mt"===e||"tr"===e?i.y="bottom":"bl"!==e&&"mb"!==e&&"br"!==e||(i.y="top"),i},_getActionFromCorner:function(t,e,i,n){if(!e||!t)return"drag";var r=n.controls[e];return r.getActionName(i,r,n)},_setupCurrentTransform:function(t,i,n){if(i){var r=this.getPointer(t),s=i.__corner,o=i.controls[s],a=n&&s?o.getActionHandler(t,i,o):S.controlsUtils.dragHandler,h=this._getActionFromCorner(n,s,t,i),l=this._getOriginFromCorner(i,s),c=t[this.centeredKey],u={target:i,action:h,actionHandler:a,corner:s,scaleX:i.scaleX,scaleY:i.scaleY,skewX:i.skewX,skewY:i.skewY,offsetX:r.x-i.left,offsetY:r.y-i.top,originX:l.x,originY:l.y,ex:r.x,ey:r.y,lastX:r.x,lastY:r.y,theta:e(i.angle),width:i.width*i.scaleX,shiftKey:t.shiftKey,altKey:c,original:S.util.saveObjectTransform(i)};this._shouldCenterTransform(i,h,c)&&(u.originX="center",u.originY="center"),u.original.originX=l.x,u.original.originY=l.y,this._currentTransform=u,this._beforeTransform(t)}},setCursor:function(t){this.upperCanvasEl.style.cursor=t},_drawSelection:function(t){var e=this._groupSelector,i=new S.Point(e.ex,e.ey),n=S.util.transformPoint(i,this.viewportTransform),r=new S.Point(e.ex+e.left,e.ey+e.top),s=S.util.transformPoint(r,this.viewportTransform),o=Math.min(n.x,s.x),a=Math.min(n.y,s.y),h=Math.max(n.x,s.x),l=Math.max(n.y,s.y),c=this.selectionLineWidth/2;this.selectionColor&&(t.fillStyle=this.selectionColor,t.fillRect(o,a,h-o,l-a)),this.selectionLineWidth&&this.selectionBorderColor&&(t.lineWidth=this.selectionLineWidth,t.strokeStyle=this.selectionBorderColor,o+=c,a+=c,h-=c,l-=c,S.Object.prototype._setLineDash.call(this,t,this.selectionDashArray),t.strokeRect(o,a,h-o,l-a))},findTarget:function(t,e){if(!this.skipTargetFind){var n,r,s=this.getPointer(t,!0),o=this._activeObject,a=this.getActiveObjects(),h=i(t),l=a.length>1&&!e||1===a.length;if(this.targets=[],l&&o._findTargetCorner(s,h))return o;if(a.length>1&&!e&&o===this._searchPossibleTargets([o],s))return o;if(1===a.length&&o===this._searchPossibleTargets([o],s)){if(!this.preserveObjectStacking)return o;n=o,r=this.targets,this.targets=[]}var c=this._searchPossibleTargets(this._objects,s);return t[this.altSelectionKey]&&c&&n&&c!==n&&(c=n,this.targets=r),c}},_checkTarget:function(t,e,i){if(e&&e.visible&&e.evented&&e.containsPoint(t)){if(!this.perPixelTargetFind&&!e.perPixelTargetFind||e.isEditing)return!0;if(!this.isTargetTransparent(e,i.x,i.y))return!0}},_searchPossibleTargets:function(t,e){for(var i,n,r=t.length;r--;){var s=t[r],o=s.group?this._normalizePointer(s.group,e):e;if(this._checkTarget(o,s,e)){(i=t[r]).subTargetCheck&&i instanceof S.Group&&(n=this._searchPossibleTargets(i._objects,e))&&this.targets.push(n);break}}return i},restorePointerVpt:function(t){return S.util.transformPoint(t,S.util.invertTransform(this.viewportTransform))},getPointer:function(e,i){if(this._absolutePointer&&!i)return this._absolutePointer;if(this._pointer&&i)return this._pointer;var n,r=t(e),s=this.upperCanvasEl,o=s.getBoundingClientRect(),a=o.width||0,h=o.height||0;a&&h||("top"in o&&"bottom"in o&&(h=Math.abs(o.top-o.bottom)),"right"in o&&"left"in o&&(a=Math.abs(o.right-o.left))),this.calcOffset(),r.x=r.x-this._offset.left,r.y=r.y-this._offset.top,i||(r=this.restorePointerVpt(r));var l=this.getRetinaScaling();return 1!==l&&(r.x/=l,r.y/=l),n=0===a||0===h?{width:1,height:1}:{width:s.width/a,height:s.height/h},{x:r.x*n.width,y:r.y*n.height}},_createUpperCanvas:function(){var t=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,""),e=this.lowerCanvasEl,i=this.upperCanvasEl;i?i.className="":(i=this._createCanvasElement(),this.upperCanvasEl=i),S.util.addClass(i,"upper-canvas "+t),this.wrapperEl.appendChild(i),this._copyCanvasStyle(e,i),this._applyCanvasStyle(i),this.contextTop=i.getContext("2d")},getTopContext:function(){return this.contextTop},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement(),this.cacheCanvasEl.setAttribute("width",this.width),this.cacheCanvasEl.setAttribute("height",this.height),this.contextCache=this.cacheCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=S.util.wrapElement(this.lowerCanvasEl,"div",{class:this.containerClass}),S.util.setStyle(this.wrapperEl,{width:this.width+"px",height:this.height+"px",position:"relative"}),S.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(t){var e=this.width||t.width,i=this.height||t.height;S.util.setStyle(t,{position:"absolute",width:e+"px",height:i+"px",left:0,top:0,"touch-action":this.allowTouchScrolling?"manipulation":"none","-ms-touch-action":this.allowTouchScrolling?"manipulation":"none"}),t.width=e,t.height=i,S.util.makeElementUnselectable(t)},_copyCanvasStyle:function(t,e){e.style.cssText=t.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},getActiveObject:function(){return this._activeObject},getActiveObjects:function(){var t=this._activeObject;return t?"activeSelection"===t.type&&t._objects?t._objects.slice(0):[t]:[]},_onObjectRemoved:function(t){t===this._activeObject&&(this.fire("before:selection:cleared",{target:t}),this._discardActiveObject(),this.fire("selection:cleared",{target:t}),t.fire("deselected")),t===this._hoveredTarget&&(this._hoveredTarget=null,this._hoveredTargets=[]),this.callSuper("_onObjectRemoved",t)},_fireSelectionEvents:function(t,e){var i=!1,n=this.getActiveObjects(),r=[],s=[];t.forEach((function(t){-1===n.indexOf(t)&&(i=!0,t.fire("deselected",{e:e,target:t}),s.push(t))})),n.forEach((function(n){-1===t.indexOf(n)&&(i=!0,n.fire("selected",{e:e,target:n}),r.push(n))})),t.length>0&&n.length>0?i&&this.fire("selection:updated",{e:e,selected:r,deselected:s}):n.length>0?this.fire("selection:created",{e:e,selected:r}):t.length>0&&this.fire("selection:cleared",{e:e,deselected:s})},setActiveObject:function(t,e){var i=this.getActiveObjects();return this._setActiveObject(t,e),this._fireSelectionEvents(i,e),this},_setActiveObject:function(t,e){return this._activeObject!==t&&!!this._discardActiveObject(e,t)&&!t.onSelect({e:e})&&(this._activeObject=t,!0)},_discardActiveObject:function(t,e){var i=this._activeObject;if(i){if(i.onDeselect({e:t,object:e}))return!1;this._activeObject=null}return!0},discardActiveObject:function(t){var e=this.getActiveObjects(),i=this.getActiveObject();return e.length&&this.fire("before:selection:cleared",{target:i,e:t}),this._discardActiveObject(t),this._fireSelectionEvents(e,t),this},dispose:function(){var t=this.wrapperEl;return this.removeListeners(),t.removeChild(this.upperCanvasEl),t.removeChild(this.lowerCanvasEl),this.contextCache=null,this.contextTop=null,["upperCanvasEl","cacheCanvasEl"].forEach(function(t){S.util.cleanUpJsdomNode(this[t]),this[t]=void 0}.bind(this)),t.parentNode&&t.parentNode.replaceChild(this.lowerCanvasEl,this.wrapperEl),delete this.wrapperEl,S.StaticCanvas.prototype.dispose.call(this),this},clear:function(){return this.discardActiveObject(),this.clearContext(this.contextTop),this.callSuper("clear")},drawControls:function(t){var e=this._activeObject;e&&e._renderControls(t)},_toObject:function(t,e,i){var n=this._realizeGroupTransformOnObject(t),r=this.callSuper("_toObject",t,e,i);return this._unwindGroupTransformOnObject(t,n),r},_realizeGroupTransformOnObject:function(t){if(t.group&&"activeSelection"===t.group.type&&this._activeObject===t.group){var e={};return["angle","flipX","flipY","left","scaleX","scaleY","skewX","skewY","top"].forEach((function(i){e[i]=t[i]})),S.util.addTransformToObject(t,this._activeObject.calcOwnMatrix()),e}return null},_unwindGroupTransformOnObject:function(t,e){e&&t.set(e)},_setSVGObject:function(t,e,i){var n=this._realizeGroupTransformOnObject(e);this.callSuper("_setSVGObject",t,e,i),this._unwindGroupTransformOnObject(e,n)},setViewportTransform:function(t){this.renderOnAddRemove&&this._activeObject&&this._activeObject.isEditing&&this._activeObject.clearContextTop(),S.StaticCanvas.prototype.setViewportTransform.call(this,t)}}),S.StaticCanvas)"prototype"!==n&&(S.Canvas[n]=S.StaticCanvas[n])}(),function(){var t=S.util.addListener,e=S.util.removeListener,i={passive:!1};function n(t,e){return t.button&&t.button===e-1}S.util.object.extend(S.Canvas.prototype,{mainTouchId:null,_initEventListeners:function(){this.removeListeners(),this._bindEvents(),this.addOrRemove(t,"add")},_getEventPrefix:function(){return this.enablePointerEvents?"pointer":"mouse"},addOrRemove:function(t,e){var n=this.upperCanvasEl,r=this._getEventPrefix();t(S.window,"resize",this._onResize),t(n,r+"down",this._onMouseDown),t(n,r+"move",this._onMouseMove,i),t(n,r+"out",this._onMouseOut),t(n,r+"enter",this._onMouseEnter),t(n,"wheel",this._onMouseWheel),t(n,"contextmenu",this._onContextMenu),t(n,"dblclick",this._onDoubleClick),t(n,"dragover",this._onDragOver),t(n,"dragenter",this._onDragEnter),t(n,"dragleave",this._onDragLeave),t(n,"drop",this._onDrop),this.enablePointerEvents||t(n,"touchstart",this._onTouchStart,i),"undefined"!=typeof eventjs&&e in eventjs&&(eventjs[e](n,"gesture",this._onGesture),eventjs[e](n,"drag",this._onDrag),eventjs[e](n,"orientation",this._onOrientationChange),eventjs[e](n,"shake",this._onShake),eventjs[e](n,"longpress",this._onLongPress))},removeListeners:function(){this.addOrRemove(e,"remove");var t=this._getEventPrefix();e(S.document,t+"up",this._onMouseUp),e(S.document,"touchend",this._onTouchEnd,i),e(S.document,t+"move",this._onMouseMove,i),e(S.document,"touchmove",this._onMouseMove,i)},_bindEvents:function(){this.eventsBound||(this._onMouseDown=this._onMouseDown.bind(this),this._onTouchStart=this._onTouchStart.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this._onTouchEnd=this._onTouchEnd.bind(this),this._onResize=this._onResize.bind(this),this._onGesture=this._onGesture.bind(this),this._onDrag=this._onDrag.bind(this),this._onShake=this._onShake.bind(this),this._onLongPress=this._onLongPress.bind(this),this._onOrientationChange=this._onOrientationChange.bind(this),this._onMouseWheel=this._onMouseWheel.bind(this),this._onMouseOut=this._onMouseOut.bind(this),this._onMouseEnter=this._onMouseEnter.bind(this),this._onContextMenu=this._onContextMenu.bind(this),this._onDoubleClick=this._onDoubleClick.bind(this),this._onDragOver=this._onDragOver.bind(this),this._onDragEnter=this._simpleEventHandler.bind(this,"dragenter"),this._onDragLeave=this._simpleEventHandler.bind(this,"dragleave"),this._onDrop=this._onDrop.bind(this),this.eventsBound=!0)},_onGesture:function(t,e){this.__onTransformGesture&&this.__onTransformGesture(t,e)},_onDrag:function(t,e){this.__onDrag&&this.__onDrag(t,e)},_onMouseWheel:function(t){this.__onMouseWheel(t)},_onMouseOut:function(t){var e=this._hoveredTarget;this.fire("mouse:out",{target:e,e:t}),this._hoveredTarget=null,e&&e.fire("mouseout",{e:t});var i=this;this._hoveredTargets.forEach((function(n){i.fire("mouse:out",{target:e,e:t}),n&&e.fire("mouseout",{e:t})})),this._hoveredTargets=[],this._iTextInstances&&this._iTextInstances.forEach((function(t){t.isEditing&&t.hiddenTextarea.focus()}))},_onMouseEnter:function(t){this._currentTransform||this.findTarget(t)||(this.fire("mouse:over",{target:null,e:t}),this._hoveredTarget=null,this._hoveredTargets=[])},_onOrientationChange:function(t,e){this.__onOrientationChange&&this.__onOrientationChange(t,e)},_onShake:function(t,e){this.__onShake&&this.__onShake(t,e)},_onLongPress:function(t,e){this.__onLongPress&&this.__onLongPress(t,e)},_onDragOver:function(t){t.preventDefault();var e=this._simpleEventHandler("dragover",t);this._fireEnterLeaveEvents(e,t)},_onDrop:function(t){return this._simpleEventHandler("drop:before",t),this._simpleEventHandler("drop",t)},_onContextMenu:function(t){return this.stopContextMenu&&(t.stopPropagation(),t.preventDefault()),!1},_onDoubleClick:function(t){this._cacheTransformEventData(t),this._handleEvent(t,"dblclick"),this._resetTransformEventData(t)},getPointerId:function(t){var e=t.changedTouches;return e?e[0]&&e[0].identifier:this.enablePointerEvents?t.pointerId:-1},_isMainEvent:function(t){return!0===t.isPrimary||!1!==t.isPrimary&&("touchend"===t.type&&0===t.touches.length||!t.changedTouches||t.changedTouches[0].identifier===this.mainTouchId)},_onTouchStart:function(n){n.preventDefault(),null===this.mainTouchId&&(this.mainTouchId=this.getPointerId(n)),this.__onMouseDown(n),this._resetTransformEventData();var r=this.upperCanvasEl,s=this._getEventPrefix();t(S.document,"touchend",this._onTouchEnd,i),t(S.document,"touchmove",this._onMouseMove,i),e(r,s+"down",this._onMouseDown)},_onMouseDown:function(n){this.__onMouseDown(n),this._resetTransformEventData();var r=this.upperCanvasEl,s=this._getEventPrefix();e(r,s+"move",this._onMouseMove,i),t(S.document,s+"up",this._onMouseUp),t(S.document,s+"move",this._onMouseMove,i)},_onTouchEnd:function(n){if(!(n.touches.length>0)){this.__onMouseUp(n),this._resetTransformEventData(),this.mainTouchId=null;var r=this._getEventPrefix();e(S.document,"touchend",this._onTouchEnd,i),e(S.document,"touchmove",this._onMouseMove,i);var s=this;this._willAddMouseDown&&clearTimeout(this._willAddMouseDown),this._willAddMouseDown=setTimeout((function(){t(s.upperCanvasEl,r+"down",s._onMouseDown),s._willAddMouseDown=0}),400)}},_onMouseUp:function(n){this.__onMouseUp(n),this._resetTransformEventData();var r=this.upperCanvasEl,s=this._getEventPrefix();this._isMainEvent(n)&&(e(S.document,s+"up",this._onMouseUp),e(S.document,s+"move",this._onMouseMove,i),t(r,s+"move",this._onMouseMove,i))},_onMouseMove:function(t){!this.allowTouchScrolling&&t.preventDefault&&t.preventDefault(),this.__onMouseMove(t)},_onResize:function(){this.calcOffset()},_shouldRender:function(t){var e=this._activeObject;return!!(!!e!=!!t||e&&t&&e!==t)||(e&&e.isEditing,!1)},__onMouseUp:function(t){var e,i=this._currentTransform,r=this._groupSelector,s=!1,o=!r||0===r.left&&0===r.top;if(this._cacheTransformEventData(t),e=this._target,this._handleEvent(t,"up:before"),n(t,3))this.fireRightClick&&this._handleEvent(t,"up",3,o);else{if(n(t,2))return this.fireMiddleClick&&this._handleEvent(t,"up",2,o),void this._resetTransformEventData();if(this.isDrawingMode&&this._isCurrentlyDrawing)this._onMouseUpInDrawingMode(t);else if(this._isMainEvent(t)){if(i&&(this._finalizeCurrentTransform(t),s=i.actionPerformed),!o){var a=e===this._activeObject;this._maybeGroupObjects(t),s||(s=this._shouldRender(e)||!a&&e===this._activeObject)}var h,l;if(e){if(h=e._findTargetCorner(this.getPointer(t,!0),S.util.isTouchEvent(t)),e.selectable&&e!==this._activeObject&&"up"===e.activeOn)this.setActiveObject(e,t),s=!0;else{var c=e.controls[h],u=c&&c.getMouseUpHandler(t,e,c);u&&u(t,i,(l=this.getPointer(t)).x,l.y)}e.isMoving=!1}if(i&&(i.target!==e||i.corner!==h)){var d=i.target&&i.target.controls[i.corner],f=d&&d.getMouseUpHandler(t,e,c);l=l||this.getPointer(t),f&&f(t,i,l.x,l.y)}this._setCursorFromEvent(t,e),this._handleEvent(t,"up",1,o),this._groupSelector=null,this._currentTransform=null,e&&(e.__corner=0),s?this.requestRenderAll():o||this.renderTop()}}},_simpleEventHandler:function(t,e){var i=this.findTarget(e),n=this.targets,r={e:e,target:i,subTargets:n};if(this.fire(t,r),i&&i.fire(t,r),!n)return i;for(var s=0;s1&&(e=new S.ActiveSelection(i.reverse(),{canvas:this}),this.setActiveObject(e,t))},_collectObjects:function(t){for(var e,i=[],n=this._groupSelector.ex,r=this._groupSelector.ey,s=n+this._groupSelector.left,o=r+this._groupSelector.top,a=new S.Point(y(n,s),y(r,o)),h=new S.Point(_(n,s),_(r,o)),l=!this.selectionFullyContained,c=n===s&&r===o,u=this._objects.length;u--&&!((e=this._objects[u])&&e.selectable&&e.visible&&(l&&e.intersectsWithRect(a,h,!0)||e.isContainedWithinRect(a,h,!0)||l&&e.containsPoint(a,null,!0)||l&&e.containsPoint(h,null,!0))&&(i.push(e),c)););return i.length>1&&(i=i.filter((function(e){return!e.onSelect({e:t})}))),i},_maybeGroupObjects:function(t){this.selection&&this._groupSelector&&this._groupSelectedObjects(t),this.setCursor(this.defaultCursor),this._groupSelector=null}}),S.util.object.extend(S.StaticCanvas.prototype,{toDataURL:function(t){t||(t={});var e=t.format||"png",i=t.quality||1,n=(t.multiplier||1)*(t.enableRetinaScaling?this.getRetinaScaling():1),r=this.toCanvasElement(n,t);return S.util.toDataURL(r,e,i)},toCanvasElement:function(t,e){t=t||1;var i=((e=e||{}).width||this.width)*t,n=(e.height||this.height)*t,r=this.getZoom(),s=this.width,o=this.height,a=r*t,h=this.viewportTransform,l=(h[4]-(e.left||0))*t,c=(h[5]-(e.top||0))*t,u=this.interactive,d=[a,0,0,a,l,c],f=this.enableRetinaScaling,g=S.util.createCanvasElement(),m=this.contextTop;return g.width=i,g.height=n,this.contextTop=null,this.enableRetinaScaling=!1,this.interactive=!1,this.viewportTransform=d,this.width=i,this.height=n,this.calcViewportBoundaries(),this.renderCanvas(g.getContext("2d"),this._objects),this.viewportTransform=h,this.width=s,this.height=o,this.calcViewportBoundaries(),this.interactive=u,this.enableRetinaScaling=f,this.contextTop=m,g}}),S.util.object.extend(S.StaticCanvas.prototype,{loadFromJSON:function(t,e,i){if(t){var n="string"==typeof t?JSON.parse(t):S.util.object.clone(t),r=this,s=n.clipPath,o=this.renderOnAddRemove;return this.renderOnAddRemove=!1,delete n.clipPath,this._enlivenObjects(n.objects,(function(t){r.clear(),r._setBgOverlay(n,(function(){s?r._enlivenObjects([s],(function(i){r.clipPath=i[0],r.__setupCanvas.call(r,n,t,o,e)})):r.__setupCanvas.call(r,n,t,o,e)}))}),i),this}},__setupCanvas:function(t,e,i,n){var r=this;e.forEach((function(t,e){r.insertAt(t,e)})),this.renderOnAddRemove=i,delete t.objects,delete t.backgroundImage,delete t.overlayImage,delete t.background,delete t.overlay,this._setOptions(t),this.renderAll(),n&&n()},_setBgOverlay:function(t,e){var i={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(t.backgroundImage||t.overlayImage||t.background||t.overlay){var n=function(){i.backgroundImage&&i.overlayImage&&i.backgroundColor&&i.overlayColor&&e&&e()};this.__setBgOverlay("backgroundImage",t.backgroundImage,i,n),this.__setBgOverlay("overlayImage",t.overlayImage,i,n),this.__setBgOverlay("backgroundColor",t.background,i,n),this.__setBgOverlay("overlayColor",t.overlay,i,n)}else e&&e()},__setBgOverlay:function(t,e,i,n){var r=this;if(!e)return i[t]=!0,void(n&&n());"backgroundImage"===t||"overlayImage"===t?S.util.enlivenObjects([e],(function(e){r[t]=e[0],i[t]=!0,n&&n()})):this["set"+S.util.string.capitalize(t,!0)](e,(function(){i[t]=!0,n&&n()}))},_enlivenObjects:function(t,e,i){t&&0!==t.length?S.util.enlivenObjects(t,(function(t){e&&e(t)}),null,i):e&&e([])},_toDataURL:function(t,e){this.clone((function(i){e(i.toDataURL(t))}))},_toDataURLWithMultiplier:function(t,e,i){this.clone((function(n){i(n.toDataURLWithMultiplier(t,e))}))},clone:function(t,e){var i=JSON.stringify(this.toJSON(e));this.cloneWithoutData((function(e){e.loadFromJSON(i,(function(){t&&t(e)}))}))},cloneWithoutData:function(t){var e=S.util.createCanvasElement();e.width=this.width,e.height=this.height;var i=new S.Canvas(e);this.backgroundImage?(i.setBackgroundImage(this.backgroundImage.src,(function(){i.renderAll(),t&&t(i)})),i.backgroundImageOpacity=this.backgroundImageOpacity,i.backgroundImageStretch=this.backgroundImageStretch):t&&t(i)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,n=e.util.object.clone,r=e.util.toFixed,s=e.util.string.capitalize,o=e.util.degreesToRadians,a=!e.isLikelyNode;e.Object||(e.Object=e.util.createClass(e.CommonMethods,{type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,skewX:0,skewY:0,cornerSize:13,touchCornerSize:24,transparentCorners:!0,hoverCursor:null,moveCursor:null,padding:0,borderColor:"rgb(178,204,255)",borderDashArray:null,cornerColor:"rgb(178,204,255)",cornerStrokeColor:null,cornerStyle:"rect",cornerDashArray:null,centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"nonzero",globalCompositeOperation:"source-over",backgroundColor:"",selectionBackgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeDashOffset:0,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:4,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,minScaleLimit:0,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,perPixelTargetFind:!1,includeDefaultValues:!0,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,excludeFromExport:!1,objectCaching:a,statefullCache:!1,noScaleCache:!0,strokeUniform:!1,dirty:!0,__corner:0,paintFirst:"fill",activeOn:"down",stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit angle opacity fill globalCompositeOperation shadow visible backgroundColor skewX skewY fillRule paintFirst clipPath strokeUniform".split(" "),cacheProperties:"fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath".split(" "),colorProperties:"fill stroke backgroundColor".split(" "),clipPath:void 0,inverted:!1,absolutePositioned:!1,initialize:function(t){t&&this.setOptions(t)},_createCacheCanvas:function(){this._cacheProperties={},this._cacheCanvas=e.util.createCanvasElement(),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas(),this.dirty=!0},_limitCacheSize:function(t){var i=e.perfLimitSizeTotal,n=t.width,r=t.height,s=e.maxCacheSideLimit,o=e.minCacheSideLimit;if(n<=s&&r<=s&&n*r<=i)return nc&&(t.zoomX/=n/c,t.width=c,t.capped=!0),r>u&&(t.zoomY/=r/u,t.height=u,t.capped=!0),t},_getCacheCanvasDimensions:function(){var t=this.getTotalObjectScaling(),e=this._getTransformedDimensions(0,0),i=e.x*t.scaleX/this.scaleX,n=e.y*t.scaleY/this.scaleY;return{width:i+2,height:n+2,zoomX:t.scaleX,zoomY:t.scaleY,x:i,y:n}},_updateCacheCanvas:function(){var t=this.canvas;if(this.noScaleCache&&t&&t._currentTransform){var i=t._currentTransform.target,n=t._currentTransform.action;if(this===i&&n.slice&&"scale"===n.slice(0,5))return!1}var r,s,o=this._cacheCanvas,a=this._limitCacheSize(this._getCacheCanvasDimensions()),h=e.minCacheSideLimit,l=a.width,c=a.height,u=a.zoomX,d=a.zoomY,f=l!==this.cacheWidth||c!==this.cacheHeight,g=this.zoomX!==u||this.zoomY!==d,m=f||g,p=0,v=0,y=!1;if(f){var _=this._cacheCanvas.width,w=this._cacheCanvas.height,b=l>_||c>w;y=b||(l<.9*_||c<.9*w)&&_>h&&w>h,b&&!a.capped&&(l>h||c>h)&&(p=.1*l,v=.1*c)}return this instanceof e.Text&&this.path&&(m=!0,y=!0,p+=this.getHeightOfLine(0)*this.zoomX,v+=this.getHeightOfLine(0)*this.zoomY),!!m&&(y?(o.width=Math.ceil(l+p),o.height=Math.ceil(c+v)):(this._cacheContext.setTransform(1,0,0,1,0,0),this._cacheContext.clearRect(0,0,o.width,o.height)),r=a.x/2,s=a.y/2,this.cacheTranslationX=Math.round(o.width/2-r)+r,this.cacheTranslationY=Math.round(o.height/2-s)+s,this.cacheWidth=l,this.cacheHeight=c,this._cacheContext.translate(this.cacheTranslationX,this.cacheTranslationY),this._cacheContext.scale(u,d),this.zoomX=u,this.zoomY=d,!0)},setOptions:function(t){this._setOptions(t),this._initGradient(t.fill,"fill"),this._initGradient(t.stroke,"stroke"),this._initPattern(t.fill,"fill"),this._initPattern(t.stroke,"stroke")},transform:function(t){var e=this.group&&!this.group._transformDone||this.group&&this.canvas&&t===this.canvas.contextTop,i=this.calcTransformMatrix(!e);t.transform(i[0],i[1],i[2],i[3],i[4],i[5])},toObject:function(t){var i=e.Object.NUM_FRACTION_DIGITS,n={type:this.type,version:e.version,originX:this.originX,originY:this.originY,left:r(this.left,i),top:r(this.top,i),width:r(this.width,i),height:r(this.height,i),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:r(this.strokeWidth,i),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeDashOffset:this.strokeDashOffset,strokeLineJoin:this.strokeLineJoin,strokeUniform:this.strokeUniform,strokeMiterLimit:r(this.strokeMiterLimit,i),scaleX:r(this.scaleX,i),scaleY:r(this.scaleY,i),angle:r(this.angle,i),flipX:this.flipX,flipY:this.flipY,opacity:r(this.opacity,i),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,backgroundColor:this.backgroundColor,fillRule:this.fillRule,paintFirst:this.paintFirst,globalCompositeOperation:this.globalCompositeOperation,skewX:r(this.skewX,i),skewY:r(this.skewY,i)};return this.clipPath&&!this.clipPath.excludeFromExport&&(n.clipPath=this.clipPath.toObject(t),n.clipPath.inverted=this.clipPath.inverted,n.clipPath.absolutePositioned=this.clipPath.absolutePositioned),e.util.populateWithProperties(this,n,t),this.includeDefaultValues||(n=this._removeDefaultValues(n)),n},toDatalessObject:function(t){return this.toObject(t)},_removeDefaultValues:function(t){var i=e.util.getKlass(t.type).prototype;return i.stateProperties.forEach((function(e){"left"!==e&&"top"!==e&&(t[e]===i[e]&&delete t[e],Array.isArray(t[e])&&Array.isArray(i[e])&&0===t[e].length&&0===i[e].length&&delete t[e])})),t},toString:function(){return"#"},getObjectScaling:function(){if(!this.group)return{scaleX:this.scaleX,scaleY:this.scaleY};var t=e.util.qrDecompose(this.calcTransformMatrix());return{scaleX:Math.abs(t.scaleX),scaleY:Math.abs(t.scaleY)}},getTotalObjectScaling:function(){var t=this.getObjectScaling(),e=t.scaleX,i=t.scaleY;if(this.canvas){var n=this.canvas.getZoom(),r=this.canvas.getRetinaScaling();e*=n*r,i*=n*r}return{scaleX:e,scaleY:i}},getObjectOpacity:function(){var t=this.opacity;return this.group&&(t*=this.group.getObjectOpacity()),t},_set:function(t,i){var n="scaleX"===t||"scaleY"===t,r=this[t]!==i,s=!1;return n&&(i=this._constrainScale(i)),"scaleX"===t&&i<0?(this.flipX=!this.flipX,i*=-1):"scaleY"===t&&i<0?(this.flipY=!this.flipY,i*=-1):"shadow"!==t||!i||i instanceof e.Shadow?"dirty"===t&&this.group&&this.group.set("dirty",i):i=new e.Shadow(i),this[t]=i,r&&(s=this.group&&this.group.isOnACache(),this.cacheProperties.indexOf(t)>-1?(this.dirty=!0,s&&this.group.set("dirty",!0)):s&&this.stateProperties.indexOf(t)>-1&&this.group.set("dirty",!0)),this},setOnGroup:function(){},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:e.iMatrix.concat()},isNotVisible:function(){return 0===this.opacity||!this.width&&!this.height&&0===this.strokeWidth||!this.visible},render:function(t){this.isNotVisible()||this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(t.save(),this._setupCompositeOperation(t),this.drawSelectionBackground(t),this.transform(t),this._setOpacity(t),this._setShadow(t,this),this.shouldCache()?(this.renderCache(),this.drawCacheOnCanvas(t)):(this._removeCacheCanvas(),this.dirty=!1,this.drawObject(t),this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})),t.restore())},renderCache:function(t){t=t||{},this._cacheCanvas&&this._cacheContext||this._createCacheCanvas(),this.isCacheDirty()&&(this.statefullCache&&this.saveState({propertySet:"cacheProperties"}),this.drawObject(this._cacheContext,t.forClipping),this.dirty=!1)},_removeCacheCanvas:function(){this._cacheCanvas=null,this._cacheContext=null,this.cacheWidth=0,this.cacheHeight=0},hasStroke:function(){return this.stroke&&"transparent"!==this.stroke&&0!==this.strokeWidth},hasFill:function(){return this.fill&&"transparent"!==this.fill},needsItsOwnCache:function(){return!("stroke"!==this.paintFirst||!this.hasFill()||!this.hasStroke()||"object"!=typeof this.shadow)||!!this.clipPath},shouldCache:function(){return this.ownCaching=this.needsItsOwnCache()||this.objectCaching&&(!this.group||!this.group.isOnACache()),this.ownCaching},willDrawShadow:function(){return!!this.shadow&&(0!==this.shadow.offsetX||0!==this.shadow.offsetY)},drawClipPathOnCache:function(t,i){if(t.save(),i.inverted?t.globalCompositeOperation="destination-out":t.globalCompositeOperation="destination-in",i.absolutePositioned){var n=e.util.invertTransform(this.calcTransformMatrix());t.transform(n[0],n[1],n[2],n[3],n[4],n[5])}i.transform(t),t.scale(1/i.zoomX,1/i.zoomY),t.drawImage(i._cacheCanvas,-i.cacheTranslationX,-i.cacheTranslationY),t.restore()},drawObject:function(t,e){var i=this.fill,n=this.stroke;e?(this.fill="black",this.stroke="",this._setClippingProperties(t)):this._renderBackground(t),this._render(t),this._drawClipPath(t,this.clipPath),this.fill=i,this.stroke=n},_drawClipPath:function(t,e){e&&(e.canvas=this.canvas,e.shouldCache(),e._transformDone=!0,e.renderCache({forClipping:!0}),this.drawClipPathOnCache(t,e))},drawCacheOnCanvas:function(t){t.scale(1/this.zoomX,1/this.zoomY),t.drawImage(this._cacheCanvas,-this.cacheTranslationX,-this.cacheTranslationY)},isCacheDirty:function(t){if(this.isNotVisible())return!1;if(this._cacheCanvas&&this._cacheContext&&!t&&this._updateCacheCanvas())return!0;if(this.dirty||this.clipPath&&this.clipPath.absolutePositioned||this.statefullCache&&this.hasStateChanged("cacheProperties")){if(this._cacheCanvas&&this._cacheContext&&!t){var e=this.cacheWidth/this.zoomX,i=this.cacheHeight/this.zoomY;this._cacheContext.clearRect(-e/2,-i/2,e,i)}return!0}return!1},_renderBackground:function(t){if(this.backgroundColor){var e=this._getNonTransformedDimensions();t.fillStyle=this.backgroundColor,t.fillRect(-e.x/2,-e.y/2,e.x,e.y),this._removeShadow(t)}},_setOpacity:function(t){this.group&&!this.group._transformDone?t.globalAlpha=this.getObjectOpacity():t.globalAlpha*=this.opacity},_setStrokeStyles:function(t,e){var i=e.stroke;i&&(t.lineWidth=e.strokeWidth,t.lineCap=e.strokeLineCap,t.lineDashOffset=e.strokeDashOffset,t.lineJoin=e.strokeLineJoin,t.miterLimit=e.strokeMiterLimit,i.toLive?"percentage"===i.gradientUnits||i.gradientTransform||i.patternTransform?this._applyPatternForTransformedGradient(t,i):(t.strokeStyle=i.toLive(t,this),this._applyPatternGradientTransform(t,i)):t.strokeStyle=e.stroke)},_setFillStyles:function(t,e){var i=e.fill;i&&(i.toLive?(t.fillStyle=i.toLive(t,this),this._applyPatternGradientTransform(t,e.fill)):t.fillStyle=i)},_setClippingProperties:function(t){t.globalAlpha=1,t.strokeStyle="transparent",t.fillStyle="#000000"},_setLineDash:function(t,e){e&&0!==e.length&&(1&e.length&&e.push.apply(e,e),t.setLineDash(e))},_renderControls:function(t,i){var n,r,s,a=this.getViewportTransform(),h=this.calcTransformMatrix();r=void 0!==(i=i||{}).hasBorders?i.hasBorders:this.hasBorders,s=void 0!==i.hasControls?i.hasControls:this.hasControls,h=e.util.multiplyTransformMatrices(a,h),n=e.util.qrDecompose(h),t.save(),t.translate(n.translateX,n.translateY),t.lineWidth=1*this.borderScaleFactor,this.group||(t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.flipX&&(n.angle-=180),t.rotate(o(this.group?n.angle:this.angle)),i.forActiveSelection||this.group?r&&this.drawBordersInGroup(t,n,i):r&&this.drawBorders(t,i),s&&this.drawControls(t,i),t.restore()},_setShadow:function(t){if(this.shadow){var i,n=this.shadow,r=this.canvas,s=r&&r.viewportTransform[0]||1,o=r&&r.viewportTransform[3]||1;i=n.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),r&&r._isRetinaScaling()&&(s*=e.devicePixelRatio,o*=e.devicePixelRatio),t.shadowColor=n.color,t.shadowBlur=n.blur*e.browserShadowBlurConstant*(s+o)*(i.scaleX+i.scaleY)/4,t.shadowOffsetX=n.offsetX*s*i.scaleX,t.shadowOffsetY=n.offsetY*o*i.scaleY}},_removeShadow:function(t){this.shadow&&(t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0)},_applyPatternGradientTransform:function(t,e){if(!e||!e.toLive)return{offsetX:0,offsetY:0};var i=e.gradientTransform||e.patternTransform,n=-this.width/2+e.offsetX||0,r=-this.height/2+e.offsetY||0;return"percentage"===e.gradientUnits?t.transform(this.width,0,0,this.height,n,r):t.transform(1,0,0,1,n,r),i&&t.transform(i[0],i[1],i[2],i[3],i[4],i[5]),{offsetX:n,offsetY:r}},_renderPaintInOrder:function(t){"stroke"===this.paintFirst?(this._renderStroke(t),this._renderFill(t)):(this._renderFill(t),this._renderStroke(t))},_render:function(){},_renderFill:function(t){this.fill&&(t.save(),this._setFillStyles(t,this),"evenodd"===this.fillRule?t.fill("evenodd"):t.fill(),t.restore())},_renderStroke:function(t){if(this.stroke&&0!==this.strokeWidth){if(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(t),t.save(),this.strokeUniform&&this.group){var e=this.getObjectScaling();t.scale(1/e.scaleX,1/e.scaleY)}else this.strokeUniform&&t.scale(1/this.scaleX,1/this.scaleY);this._setLineDash(t,this.strokeDashArray),this._setStrokeStyles(t,this),t.stroke(),t.restore()}},_applyPatternForTransformedGradient:function(t,i){var n,r=this._limitCacheSize(this._getCacheCanvasDimensions()),s=e.util.createCanvasElement(),o=this.canvas.getRetinaScaling(),a=r.x/this.scaleX/o,h=r.y/this.scaleY/o;s.width=a,s.height=h,(n=s.getContext("2d")).beginPath(),n.moveTo(0,0),n.lineTo(a,0),n.lineTo(a,h),n.lineTo(0,h),n.closePath(),n.translate(a/2,h/2),n.scale(r.zoomX/this.scaleX/o,r.zoomY/this.scaleY/o),this._applyPatternGradientTransform(n,i),n.fillStyle=i.toLive(t),n.fill(),t.translate(-this.width/2-this.strokeWidth/2,-this.height/2-this.strokeWidth/2),t.scale(o*this.scaleX/r.zoomX,o*this.scaleY/r.zoomY),t.strokeStyle=n.createPattern(s,"no-repeat")},_findCenterFromElement:function(){return{x:this.left+this.width/2,y:this.top+this.height/2}},_assignTransformMatrixProps:function(){if(this.transformMatrix){var t=e.util.qrDecompose(this.transformMatrix);this.flipX=!1,this.flipY=!1,this.set("scaleX",t.scaleX),this.set("scaleY",t.scaleY),this.angle=t.angle,this.skewX=t.skewX,this.skewY=0}},_removeTransformMatrix:function(t){var i=this._findCenterFromElement();this.transformMatrix&&(this._assignTransformMatrixProps(),i=e.util.transformPoint(i,this.transformMatrix)),this.transformMatrix=null,t&&(this.scaleX*=t.scaleX,this.scaleY*=t.scaleY,this.cropX=t.cropX,this.cropY=t.cropY,i.x+=t.offsetLeft,i.y+=t.offsetTop,this.width=t.width,this.height=t.height),this.setPositionByOrigin(i,"center","center")},clone:function(t,i){var n=this.toObject(i);this.constructor.fromObject?this.constructor.fromObject(n,t):e.Object._fromObject("Object",n,t)},cloneAsImage:function(t,i){var n=this.toCanvasElement(i);return t&&t(new e.Image(n)),this},toCanvasElement:function(t){t||(t={});var i=e.util,n=i.saveObjectTransform(this),r=this.group,s=this.shadow,o=Math.abs,a=(t.multiplier||1)*(t.enableRetinaScaling?e.devicePixelRatio:1);delete this.group,t.withoutTransform&&i.resetObjectTransform(this),t.withoutShadow&&(this.shadow=null);var h,l,c,u,d=e.util.createCanvasElement(),f=this.getBoundingRect(!0,!0),g=this.shadow,m={x:0,y:0};g&&(l=g.blur,h=g.nonScaling?{scaleX:1,scaleY:1}:this.getObjectScaling(),m.x=2*Math.round(o(g.offsetX)+l)*o(h.scaleX),m.y=2*Math.round(o(g.offsetY)+l)*o(h.scaleY)),c=f.width+m.x,u=f.height+m.y,d.width=Math.ceil(c),d.height=Math.ceil(u);var p=new e.StaticCanvas(d,{enableRetinaScaling:!1,renderOnAddRemove:!1,skipOffscreen:!1});"jpeg"===t.format&&(p.backgroundColor="#fff"),this.setPositionByOrigin(new e.Point(p.width/2,p.height/2),"center","center");var v=this.canvas;p.add(this);var y=p.toCanvasElement(a||1,t);return this.shadow=s,this.set("canvas",v),r&&(this.group=r),this.set(n).setCoords(),p._objects=[],p.dispose(),p=null,y},toDataURL:function(t){return t||(t={}),e.util.toDataURL(this.toCanvasElement(t),t.format||"png",t.quality||1)},isType:function(t){return arguments.length>1?Array.from(arguments).includes(this.type):this.type===t},complexity:function(){return 1},toJSON:function(t){return this.toObject(t)},rotate:function(t){var e=("center"!==this.originX||"center"!==this.originY)&&this.centeredRotation;return e&&this._setOriginToCenter(),this.set("angle",t),e&&this._resetOrigin(),this},centerH:function(){return this.canvas&&this.canvas.centerObjectH(this),this},viewportCenterH:function(){return this.canvas&&this.canvas.viewportCenterObjectH(this),this},centerV:function(){return this.canvas&&this.canvas.centerObjectV(this),this},viewportCenterV:function(){return this.canvas&&this.canvas.viewportCenterObjectV(this),this},center:function(){return this.canvas&&this.canvas.centerObject(this),this},viewportCenter:function(){return this.canvas&&this.canvas.viewportCenterObject(this),this},getLocalPointer:function(t,i){i=i||this.canvas.getPointer(t);var n=new e.Point(i.x,i.y),r=this._getLeftTopCoords();return this.angle&&(n=e.util.rotatePoint(n,r,o(-this.angle))),{x:n.x-r.x,y:n.y-r.y}},_setupCompositeOperation:function(t){this.globalCompositeOperation&&(t.globalCompositeOperation=this.globalCompositeOperation)},dispose:function(){e.runningAnimations&&e.runningAnimations.cancelByTarget(this)}}),e.util.createAccessors&&e.util.createAccessors(e.Object),i(e.Object.prototype,e.Observable),e.Object.NUM_FRACTION_DIGITS=2,e.Object.ENLIVEN_PROPS=["clipPath"],e.Object._fromObject=function(t,i,r,s){var o=e[t];i=n(i,!0),e.util.enlivenPatterns([i.fill,i.stroke],(function(t){void 0!==t[0]&&(i.fill=t[0]),void 0!==t[1]&&(i.stroke=t[1]),e.util.enlivenObjectEnlivables(i,i,(function(){var t=s?new o(i[s],i):new o(i);r&&r(t)}))}))},e.Object.__uid=0)}(e),w=S.util.degreesToRadians,b={left:-.5,center:0,right:.5},x={top:-.5,center:0,bottom:.5},S.util.object.extend(S.Object.prototype,{translateToGivenOrigin:function(t,e,i,n,r){var s,o,a,h=t.x,l=t.y;return"string"==typeof e?e=b[e]:e-=.5,"string"==typeof n?n=b[n]:n-=.5,"string"==typeof i?i=x[i]:i-=.5,"string"==typeof r?r=x[r]:r-=.5,o=r-i,((s=n-e)||o)&&(a=this._getTransformedDimensions(),h=t.x+s*a.x,l=t.y+o*a.y),new S.Point(h,l)},translateToCenterPoint:function(t,e,i){var n=this.translateToGivenOrigin(t,e,i,"center","center");return this.angle?S.util.rotatePoint(n,t,w(this.angle)):n},translateToOriginPoint:function(t,e,i){var n=this.translateToGivenOrigin(t,"center","center",e,i);return this.angle?S.util.rotatePoint(n,t,w(this.angle)):n},getCenterPoint:function(){var t=new S.Point(this.left,this.top);return this.translateToCenterPoint(t,this.originX,this.originY)},getPointByOrigin:function(t,e){var i=this.getCenterPoint();return this.translateToOriginPoint(i,t,e)},toLocalPoint:function(t,e,i){var n,r,s=this.getCenterPoint();return n=void 0!==e&&void 0!==i?this.translateToGivenOrigin(s,"center","center",e,i):new S.Point(this.left,this.top),r=new S.Point(t.x,t.y),this.angle&&(r=S.util.rotatePoint(r,s,-w(this.angle))),r.subtractEquals(n)},setPositionByOrigin:function(t,e,i){var n=this.translateToCenterPoint(t,e,i),r=this.translateToOriginPoint(n,this.originX,this.originY);this.set("left",r.x),this.set("top",r.y)},adjustPosition:function(t){var e,i,n=w(this.angle),r=this.getScaledWidth(),s=S.util.cos(n)*r,o=S.util.sin(n)*r;e="string"==typeof this.originX?b[this.originX]:this.originX-.5,i="string"==typeof t?b[t]:t-.5,this.left+=s*(i-e),this.top+=o*(i-e),this.setCoords(),this.originX=t},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var t=this.getCenterPoint();this.originX="center",this.originY="center",this.left=t.x,this.top=t.y},_resetOrigin:function(){var t=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX,this.originY=this._originalOriginY,this.left=t.x,this.top=t.y,this._originalOriginX=null,this._originalOriginY=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","top")}}),function(){var t=S.util,e=t.degreesToRadians,i=t.multiplyTransformMatrices,n=t.transformPoint;t.object.extend(S.Object.prototype,{oCoords:null,aCoords:null,lineCoords:null,ownMatrixCache:null,matrixCache:null,controls:{},_getCoords:function(t,e){return e?t?this.calcACoords():this.calcLineCoords():(this.aCoords&&this.lineCoords||this.setCoords(!0),t?this.aCoords:this.lineCoords)},getCoords:function(t,e){return i=this._getCoords(t,e),[new S.Point(i.tl.x,i.tl.y),new S.Point(i.tr.x,i.tr.y),new S.Point(i.br.x,i.br.y),new S.Point(i.bl.x,i.bl.y)];var i},intersectsWithRect:function(t,e,i,n){var r=this.getCoords(i,n);return"Intersection"===S.Intersection.intersectPolygonRectangle(r,t,e).status},intersectsWithObject:function(t,e,i){return"Intersection"===S.Intersection.intersectPolygonPolygon(this.getCoords(e,i),t.getCoords(e,i)).status||t.isContainedWithinObject(this,e,i)||this.isContainedWithinObject(t,e,i)},isContainedWithinObject:function(t,e,i){for(var n=this.getCoords(e,i),r=e?t.aCoords:t.lineCoords,s=0,o=t._getImageLines(r);s<4;s++)if(!t.containsPoint(n[s],o))return!1;return!0},isContainedWithinRect:function(t,e,i,n){var r=this.getBoundingRect(i,n);return r.left>=t.x&&r.left+r.width<=e.x&&r.top>=t.y&&r.top+r.height<=e.y},containsPoint:function(t,e,i,n){var r=this._getCoords(i,n),s=(e=e||this._getImageLines(r),this._findCrossPoints(t,e));return 0!==s&&s%2==1},isOnScreen:function(t){if(!this.canvas)return!1;var e=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.getCoords(!0,t).some((function(t){return t.x<=i.x&&t.x>=e.x&&t.y<=i.y&&t.y>=e.y}))||!!this.intersectsWithRect(e,i,!0,t)||this._containsCenterOfCanvas(e,i,t)},_containsCenterOfCanvas:function(t,e,i){var n={x:(t.x+e.x)/2,y:(t.y+e.y)/2};return!!this.containsPoint(n,null,!0,i)},isPartiallyOnScreen:function(t){if(!this.canvas)return!1;var e=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.intersectsWithRect(e,i,!0,t)||this.getCoords(!0,t).every((function(t){return(t.x>=i.x||t.x<=e.x)&&(t.y>=i.y||t.y<=e.y)}))&&this._containsCenterOfCanvas(e,i,t)},_getImageLines:function(t){return{topline:{o:t.tl,d:t.tr},rightline:{o:t.tr,d:t.br},bottomline:{o:t.br,d:t.bl},leftline:{o:t.bl,d:t.tl}}},_findCrossPoints:function(t,e){var i,n,r,s=0;for(var o in e)if(!((r=e[o]).o.y=t.y&&r.d.y>=t.y||(r.o.x===r.d.x&&r.o.x>=t.x?n=r.o.x:(i=(r.d.y-r.o.y)/(r.d.x-r.o.x),n=-(t.y-0*t.x-(r.o.y-i*r.o.x))/(0-i)),n>=t.x&&(s+=1),2!==s)))break;return s},getBoundingRect:function(e,i){var n=this.getCoords(e,i);return t.makeBoundingBoxFromPoints(n)},getScaledWidth:function(){return this._getTransformedDimensions().x},getScaledHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(t){return Math.abs(t)\n')}},toSVG:function(t){return this._createBaseSVGMarkup(this._toSVG(t),{reviver:t})},toClipPathSVG:function(t){return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(t),{reviver:t})},_createBaseClipPathSVGMarkup:function(t,e){var i=(e=e||{}).reviver,n=e.additionalTransform||"",r=[this.getSvgTransform(!0,n),this.getSvgCommons()].join(""),s=t.indexOf("COMMON_PARTS");return t[s]=r,i?i(t.join("")):t.join("")},_createBaseSVGMarkup:function(t,e){var i,n,r=(e=e||{}).noStyle,s=e.reviver,o=r?"":'style="'+this.getSvgStyles()+'" ',a=e.withShadow?'style="'+this.getSvgFilter()+'" ':"",h=this.clipPath,l=this.strokeUniform?'vector-effect="non-scaling-stroke" ':"",c=h&&h.absolutePositioned,u=this.stroke,d=this.fill,f=this.shadow,g=[],m=t.indexOf("COMMON_PARTS"),p=e.additionalTransform;return h&&(h.clipPathId="CLIPPATH_"+S.Object.__uid++,n='\n'+h.toClipPathSVG(s)+"\n"),c&&g.push("\n"),g.push("\n"),i=[o,l,r?"":this.addPaintOrder()," ",p?'transform="'+p+'" ':""].join(""),t[m]=i,d&&d.toLive&&g.push(d.toSVG(this)),u&&u.toLive&&g.push(u.toSVG(this)),f&&g.push(f.toSVG(this)),h&&g.push(n),g.push(t.join("")),g.push("\n"),c&&g.push("\n"),s?s(g.join("")):g.join("")},addPaintOrder:function(){return"fill"!==this.paintFirst?' paint-order="'+this.paintFirst+'" ':""}})}(),function(){var t=S.util.object.extend,e="stateProperties";function i(e,i,n){var r={};n.forEach((function(t){r[t]=e[t]})),t(e[i],r,!0)}function n(t,e,i){if(t===e)return!0;if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(var r=0,s=t.length;r=0;h--)if(r=a[h],this.isControlVisible(r)&&(n=this._getImageLines(e?this.oCoords[r].touchCorner:this.oCoords[r].corner),0!==(i=this._findCrossPoints({x:s,y:o},n))&&i%2==1))return this.__corner=r,r;return!1},forEachControl:function(t){for(var e in this.controls)t(this.controls[e],e,this)},_setCornerCoords:function(){var t=this.oCoords;for(var e in t){var i=this.controls[e];t[e].corner=i.calcCornerCoords(this.angle,this.cornerSize,t[e].x,t[e].y,!1),t[e].touchCorner=i.calcCornerCoords(this.angle,this.touchCornerSize,t[e].x,t[e].y,!0)}},drawSelectionBackground:function(e){if(!this.selectionBackgroundColor||this.canvas&&!this.canvas.interactive||this.canvas&&this.canvas._activeObject!==this)return this;e.save();var i=this.getCenterPoint(),n=this._calculateCurrentDimensions(),r=this.canvas.viewportTransform;return e.translate(i.x,i.y),e.scale(1/r[0],1/r[3]),e.rotate(t(this.angle)),e.fillStyle=this.selectionBackgroundColor,e.fillRect(-n.x/2,-n.y/2,n.x,n.y),e.restore(),this},drawBorders:function(t,e){e=e||{};var i=this._calculateCurrentDimensions(),n=this.borderScaleFactor,r=i.x+n,s=i.y+n,o=void 0!==e.hasControls?e.hasControls:this.hasControls,a=!1;return t.save(),t.strokeStyle=e.borderColor||this.borderColor,this._setLineDash(t,e.borderDashArray||this.borderDashArray),t.strokeRect(-r/2,-s/2,r,s),o&&(t.beginPath(),this.forEachControl((function(e,i,n){e.withConnection&&e.getVisibility(n,i)&&(a=!0,t.moveTo(e.x*r,e.y*s),t.lineTo(e.x*r+e.offsetX,e.y*s+e.offsetY))})),a&&t.stroke()),t.restore(),this},drawBordersInGroup:function(t,e,i){i=i||{};var n=S.util.sizeAfterTransform(this.width,this.height,e),r=this.strokeWidth,s=this.strokeUniform,o=this.borderScaleFactor,a=n.x+r*(s?this.canvas.getZoom():e.scaleX)+o,h=n.y+r*(s?this.canvas.getZoom():e.scaleY)+o;return t.save(),this._setLineDash(t,i.borderDashArray||this.borderDashArray),t.strokeStyle=i.borderColor||this.borderColor,t.strokeRect(-a/2,-h/2,a,h),t.restore(),this},drawControls:function(t,e){e=e||{},t.save();var i,n,r=this.canvas.getRetinaScaling();return t.setTransform(r,0,0,r,0,0),t.strokeStyle=t.fillStyle=e.cornerColor||this.cornerColor,this.transparentCorners||(t.strokeStyle=e.cornerStrokeColor||this.cornerStrokeColor),this._setLineDash(t,e.cornerDashArray||this.cornerDashArray),this.setCoords(),this.group&&(i=this.group.calcTransformMatrix()),this.forEachControl((function(r,s,o){n=o.oCoords[s],r.getVisibility(o,s)&&(i&&(n=S.util.transformPoint(n,i)),r.render(t,n.x,n.y,e,o))})),t.restore(),this},isControlVisible:function(t){return this.controls[t]&&this.controls[t].getVisibility(this,t)},setControlVisible:function(t,e){return this._controlsVisibility||(this._controlsVisibility={}),this._controlsVisibility[t]=e,this},setControlsVisibility:function(t){for(var e in t||(t={}),t)this.setControlVisible(e,t[e]);return this},onDeselect:function(){},onSelect:function(){}})}(),S.util.object.extend(S.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(t,e){var i=function(){},n=(e=e||{}).onComplete||i,r=e.onChange||i,s=this;return S.util.animate({target:this,startValue:t.left,endValue:this.getCenterPoint().x,duration:this.FX_DURATION,onChange:function(e){t.set("left",e),s.requestRenderAll(),r()},onComplete:function(){t.setCoords(),n()}})},fxCenterObjectV:function(t,e){var i=function(){},n=(e=e||{}).onComplete||i,r=e.onChange||i,s=this;return S.util.animate({target:this,startValue:t.top,endValue:this.getCenterPoint().y,duration:this.FX_DURATION,onChange:function(e){t.set("top",e),s.requestRenderAll(),r()},onComplete:function(){t.setCoords(),n()}})},fxRemove:function(t,e){var i=function(){},n=(e=e||{}).onComplete||i,r=e.onChange||i,s=this;return S.util.animate({target:this,startValue:t.opacity,endValue:0,duration:this.FX_DURATION,onChange:function(e){t.set("opacity",e),s.requestRenderAll(),r()},onComplete:function(){s.remove(t),n()}})}}),S.util.object.extend(S.Object.prototype,{animate:function(){if(arguments[0]&&"object"==typeof arguments[0]){var t,e,i=[],n=[];for(t in arguments[0])i.push(t);for(var r=0,s=i.length;r-1||r&&s.colorProperties.indexOf(r[1])>-1,a=r?this.get(r[0])[r[1]]:this.get(t);"from"in i||(i.from=a),o||(e=~e.indexOf("=")?a+parseFloat(e.replace("=","")):parseFloat(e));var h={target:this,startValue:i.from,endValue:e,byValue:i.by,easing:i.easing,duration:i.duration,abort:i.abort&&function(t,e,n){return i.abort.call(s,t,e,n)},onChange:function(e,o,a){r?s[r[0]][r[1]]=e:s.set(t,e),n||i.onChange&&i.onChange(e,o,a)},onComplete:function(t,e,r){n||(s.setCoords(),i.onComplete&&i.onComplete(t,e,r))}};return o?S.util.animateColor(h.startValue,h.endValue,h.duration,h):S.util.animate(h)}}),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,n=e.util.object.clone,r={x1:1,x2:1,y1:1,y2:1};function s(t,e){var i=t.origin,n=t.axis1,r=t.axis2,s=t.dimension,o=e.nearest,a=e.center,h=e.farthest;return function(){switch(this.get(i)){case o:return Math.min(this.get(n),this.get(r));case a:return Math.min(this.get(n),this.get(r))+.5*this.get(s);case h:return Math.max(this.get(n),this.get(r))}}}e.Line?e.warn("fabric.Line is already defined"):(e.Line=e.util.createClass(e.Object,{type:"line",x1:0,y1:0,x2:0,y2:0,cacheProperties:e.Object.prototype.cacheProperties.concat("x1","x2","y1","y2"),initialize:function(t,e){t||(t=[0,0,0,0]),this.callSuper("initialize",e),this.set("x1",t[0]),this.set("y1",t[1]),this.set("x2",t[2]),this.set("y2",t[3]),this._setWidthHeight(e)},_setWidthHeight:function(t){t||(t={}),this.width=Math.abs(this.x2-this.x1),this.height=Math.abs(this.y2-this.y1),this.left="left"in t?t.left:this._getLeftToOriginX(),this.top="top"in t?t.top:this._getTopToOriginY()},_set:function(t,e){return this.callSuper("_set",t,e),void 0!==r[t]&&this._setWidthHeight(),this},_getLeftToOriginX:s({origin:"originX",axis1:"x1",axis2:"x2",dimension:"width"},{nearest:"left",center:"center",farthest:"right"}),_getTopToOriginY:s({origin:"originY",axis1:"y1",axis2:"y2",dimension:"height"},{nearest:"top",center:"center",farthest:"bottom"}),_render:function(t){t.beginPath();var e=this.calcLinePoints();t.moveTo(e.x1,e.y1),t.lineTo(e.x2,e.y2),t.lineWidth=this.strokeWidth;var i=t.strokeStyle;t.strokeStyle=this.stroke||t.fillStyle,this.stroke&&this._renderStroke(t),t.strokeStyle=i},_findCenterFromElement:function(){return{x:(this.x1+this.x2)/2,y:(this.y1+this.y2)/2}},toObject:function(t){return i(this.callSuper("toObject",t),this.calcLinePoints())},_getNonTransformedDimensions:function(){var t=this.callSuper("_getNonTransformedDimensions");return"butt"===this.strokeLineCap&&(0===this.width&&(t.y-=this.strokeWidth),0===this.height&&(t.x-=this.strokeWidth)),t},calcLinePoints:function(){var t=this.x1<=this.x2?-1:1,e=this.y1<=this.y2?-1:1,i=t*this.width*.5,n=e*this.height*.5;return{x1:i,x2:t*this.width*-.5,y1:n,y2:e*this.height*-.5}},_toSVG:function(){var t=this.calcLinePoints();return["\n']}}),e.Line.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),e.Line.fromElement=function(t,n,r){r=r||{};var s=e.parseAttributes(t,e.Line.ATTRIBUTE_NAMES),o=[s.x1||0,s.y1||0,s.x2||0,s.y2||0];n(new e.Line(o,i(s,r)))},e.Line.fromObject=function(t,i){var r=n(t,!0);r.points=[t.x1,t.y1,t.x2,t.y2],e.Object._fromObject("Line",r,(function(t){delete t.points,i&&i(t)}),"points")})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.degreesToRadians;e.Circle?e.warn("fabric.Circle is already defined."):(e.Circle=e.util.createClass(e.Object,{type:"circle",radius:0,startAngle:0,endAngle:360,cacheProperties:e.Object.prototype.cacheProperties.concat("radius","startAngle","endAngle"),_set:function(t,e){return this.callSuper("_set",t,e),"radius"===t&&this.setRadius(e),this},toObject:function(t){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(t))},_toSVG:function(){var t,n=(this.endAngle-this.startAngle)%360;if(0===n)t=["\n'];else{var r=i(this.startAngle),s=i(this.endAngle),o=this.radius;t=['180?"1":"0")+" 1"," "+e.util.cos(s)*o+" "+e.util.sin(s)*o,'" ',"COMMON_PARTS"," />\n"]}return t},_render:function(t){t.beginPath(),t.arc(0,0,this.radius,i(this.startAngle),i(this.endAngle),!1),this._renderPaintInOrder(t)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(t){return this.radius=t,this.set("width",2*t).set("height",2*t)}}),e.Circle.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),e.Circle.fromElement=function(t,i){var n,r=e.parseAttributes(t,e.Circle.ATTRIBUTE_NAMES);if(!("radius"in(n=r)&&n.radius>=0))throw new Error("value of `r` attribute is required and can not be negative");r.left=(r.left||0)-r.radius,r.top=(r.top||0)-r.radius,i(new e.Circle(r))},e.Circle.fromObject=function(t,i){e.Object._fromObject("Circle",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={});e.Triangle?e.warn("fabric.Triangle is already defined"):(e.Triangle=e.util.createClass(e.Object,{type:"triangle",width:100,height:100,_render:function(t){var e=this.width/2,i=this.height/2;t.beginPath(),t.moveTo(-e,i),t.lineTo(0,-i),t.lineTo(e,i),t.closePath(),this._renderPaintInOrder(t)},_toSVG:function(){var t=this.width/2,e=this.height/2;return["']}}),e.Triangle.fromObject=function(t,i){return e.Object._fromObject("Triangle",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=2*Math.PI;e.Ellipse?e.warn("fabric.Ellipse is already defined."):(e.Ellipse=e.util.createClass(e.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:e.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this.set("rx",t&&t.rx||0),this.set("ry",t&&t.ry||0)},_set:function(t,e){switch(this.callSuper("_set",t,e),t){case"rx":this.rx=e,this.set("width",2*e);break;case"ry":this.ry=e,this.set("height",2*e)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']},_render:function(t){t.beginPath(),t.save(),t.transform(1,0,0,this.ry/this.rx,0,0),t.arc(0,0,this.rx,0,i,!1),t.restore(),this._renderPaintInOrder(t)}}),e.Ellipse.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),e.Ellipse.fromElement=function(t,i){var n=e.parseAttributes(t,e.Ellipse.ATTRIBUTE_NAMES);n.left=(n.left||0)-n.rx,n.top=(n.top||0)-n.ry,i(new e.Ellipse(n))},e.Ellipse.fromObject=function(t,i){e.Object._fromObject("Ellipse",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend;e.Rect?e.warn("fabric.Rect is already defined"):(e.Rect=e.util.createClass(e.Object,{stateProperties:e.Object.prototype.stateProperties.concat("rx","ry"),type:"rect",rx:0,ry:0,cacheProperties:e.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(t){var e=this.rx?Math.min(this.rx,this.width/2):0,i=this.ry?Math.min(this.ry,this.height/2):0,n=this.width,r=this.height,s=-this.width/2,o=-this.height/2,a=0!==e||0!==i,h=.4477152502;t.beginPath(),t.moveTo(s+e,o),t.lineTo(s+n-e,o),a&&t.bezierCurveTo(s+n-h*e,o,s+n,o+h*i,s+n,o+i),t.lineTo(s+n,o+r-i),a&&t.bezierCurveTo(s+n,o+r-h*i,s+n-h*e,o+r,s+n-e,o+r),t.lineTo(s+e,o+r),a&&t.bezierCurveTo(s+h*e,o+r,s,o+r-h*i,s,o+r-i),t.lineTo(s,o+i),a&&t.bezierCurveTo(s,o+h*i,s+h*e,o,s+e,o),t.closePath(),this._renderPaintInOrder(t)},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']}}),e.Rect.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),e.Rect.fromElement=function(t,n,r){if(!t)return n(null);r=r||{};var s=e.parseAttributes(t,e.Rect.ATTRIBUTE_NAMES);s.left=s.left||0,s.top=s.top||0,s.height=s.height||0,s.width=s.width||0;var o=new e.Rect(i(r?e.util.object.clone(r):{},s));o.visible=o.visible&&o.width>0&&o.height>0,n(o)},e.Rect.fromObject=function(t,i){return e.Object._fromObject("Rect",t,i)})}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.util.object.extend,n=e.util.array.min,r=e.util.array.max,s=e.util.toFixed,o=e.util.projectStrokeOnPoints;e.Polyline?e.warn("fabric.Polyline is already defined"):(e.Polyline=e.util.createClass(e.Object,{type:"polyline",points:null,exactBoundingBox:!1,cacheProperties:e.Object.prototype.cacheProperties.concat("points"),initialize:function(t,e){e=e||{},this.points=t||[],this.callSuper("initialize",e),this._setPositionDimensions(e)},_projectStrokeOnPoints:function(){return o(this.points,this,!0)},_setPositionDimensions:function(t){var e,i=this._calcDimensions(t),n=this.exactBoundingBox?this.strokeWidth:0;this.width=i.width-n,this.height=i.height-n,t.fromSVG||(e=this.translateToGivenOrigin({x:i.left-this.strokeWidth/2+n/2,y:i.top-this.strokeWidth/2+n/2},"left","top",this.originX,this.originY)),void 0===t.left&&(this.left=t.fromSVG?i.left:e.x),void 0===t.top&&(this.top=t.fromSVG?i.top:e.y),this.pathOffset={x:i.left+this.width/2+n/2,y:i.top+this.height/2+n/2}},_calcDimensions:function(){var t=this.exactBoundingBox?this._projectStrokeOnPoints():this.points,e=n(t,"x")||0,i=n(t,"y")||0;return{left:e,top:i,width:(r(t,"x")||0)-e,height:(r(t,"y")||0)-i}},toObject:function(t){return i(this.callSuper("toObject",t),{points:this.points.concat()})},_toSVG:function(){for(var t=[],i=this.pathOffset.x,n=this.pathOffset.y,r=e.Object.NUM_FRACTION_DIGITS,o=0,a=this.points.length;o\n']},commonRender:function(t){var e,i=this.points.length,n=this.pathOffset.x,r=this.pathOffset.y;if(!i||isNaN(this.points[i-1].y))return!1;t.beginPath(),t.moveTo(this.points[0].x-n,this.points[0].y-r);for(var s=0;s"},toObject:function(t){return r(this.callSuper("toObject",t),{path:this.path.map((function(t){return t.slice()}))})},toDatalessObject:function(t){var e=this.toObject(["sourcePath"].concat(t));return e.sourcePath&&delete e.path,e},_toSVG:function(){return["\n"]},_getOffsetTransform:function(){var t=e.Object.NUM_FRACTION_DIGITS;return" translate("+o(-this.pathOffset.x,t)+", "+o(-this.pathOffset.y,t)+")"},toClipPathSVG:function(t){var e=this._getOffsetTransform();return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},toSVG:function(t){var e=this._getOffsetTransform();return this._createBaseSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},complexity:function(){return this.path.length},_calcDimensions:function(){for(var t,r,s=[],o=[],a=0,h=0,l=0,c=0,u=0,d=this.path.length;u"},addWithUpdate:function(t){var i=!!this.group;return this._restoreObjectsState(),e.util.resetObjectTransform(this),t&&(i&&e.util.removeTransformFromObject(t,this.group.calcTransformMatrix()),this._objects.push(t),t.group=this,t._set("canvas",this.canvas)),this._calcBounds(),this._updateObjectsCoords(),this.dirty=!0,i?this.group.addWithUpdate():this.setCoords(),this},removeWithUpdate:function(t){return this._restoreObjectsState(),e.util.resetObjectTransform(this),this.remove(t),this._calcBounds(),this._updateObjectsCoords(),this.setCoords(),this.dirty=!0,this},_onObjectAdded:function(t){this.dirty=!0,t.group=this,t._set("canvas",this.canvas)},_onObjectRemoved:function(t){this.dirty=!0,delete t.group},_set:function(t,i){var n=this._objects.length;if(this.useSetOnGroup)for(;n--;)this._objects[n].setOnGroup(t,i);if("canvas"===t)for(;n--;)this._objects[n]._set(t,i);e.Object.prototype._set.call(this,t,i)},toObject:function(t){var i=this.includeDefaultValues,n=this._objects.filter((function(t){return!t.excludeFromExport})).map((function(e){var n=e.includeDefaultValues;e.includeDefaultValues=i;var r=e.toObject(t);return e.includeDefaultValues=n,r})),r=e.Object.prototype.toObject.call(this,t);return r.objects=n,r},toDatalessObject:function(t){var i,n=this.sourcePath;if(n)i=n;else{var r=this.includeDefaultValues;i=this._objects.map((function(e){var i=e.includeDefaultValues;e.includeDefaultValues=r;var n=e.toDatalessObject(t);return e.includeDefaultValues=i,n}))}var s=e.Object.prototype.toDatalessObject.call(this,t);return s.objects=i,s},render:function(t){this._transformDone=!0,this.callSuper("render",t),this._transformDone=!1},shouldCache:function(){var t=e.Object.prototype.shouldCache.call(this);if(t)for(var i=0,n=this._objects.length;i\n"],i=0,n=this._objects.length;i\n"),e},getSvgStyles:function(){var t=void 0!==this.opacity&&1!==this.opacity?"opacity: "+this.opacity+";":"",e=this.visible?"":" visibility: hidden;";return[t,this.getSvgFilter(),e].join("")},toClipPathSVG:function(t){for(var e=[],i=0,n=this._objects.length;i"},shouldCache:function(){return!1},isOnACache:function(){return!1},_renderControls:function(t,e,i){t.save(),t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,this.callSuper("_renderControls",t,e),void 0===(i=i||{}).hasControls&&(i.hasControls=!1),i.forActiveSelection=!0;for(var n=0,r=this._objects.length;n\n','\t\n',"\n"),o=' clip-path="url(#imageCrop_'+h+')" '}if(this.imageSmoothing||(a='" image-rendering="optimizeSpeed'),i.push("\t\n"),this.stroke||this.strokeDashArray){var l=this.fill;this.fill=null,t=["\t\n'],this.fill=l}return"fill"!==this.paintFirst?e.concat(t,i):e.concat(i,t)},getSrc:function(t){var e=t?this._element:this._originalElement;return e?e.toDataURL?e.toDataURL():this.srcFromAttribute?e.getAttribute("src"):e.src:this.src||""},setSrc:function(t,e,i){return S.util.loadImage(t,(function(t,n){this.setElement(t,i),this._setWidthHeight(),e&&e(this,n)}),this,i&&i.crossOrigin),this},toString:function(){return'#'},applyResizeFilters:function(){var t=this.resizeFilter,e=this.minimumScaleTrigger,i=this.getTotalObjectScaling(),n=i.scaleX,r=i.scaleY,s=this._filteredEl||this._originalElement;if(this.group&&this.set("dirty",!0),!t||n>e&&r>e)return this._element=s,this._filterScalingX=1,this._filterScalingY=1,this._lastScaleX=n,void(this._lastScaleY=r);S.filterBackend||(S.filterBackend=S.initFilterBackend());var o=S.util.createCanvasElement(),a=this._filteredEl?this.cacheKey+"_filtered":this.cacheKey,h=s.width,l=s.height;o.width=h,o.height=l,this._element=o,this._lastScaleX=t.scaleX=n,this._lastScaleY=t.scaleY=r,S.filterBackend.applyFilters([t],s,h,l,this._element,a),this._filterScalingX=o.width/this._originalElement.width,this._filterScalingY=o.height/this._originalElement.height},applyFilters:function(t){if(t=(t=t||this.filters||[]).filter((function(t){return t&&!t.isNeutralState()})),this.set("dirty",!0),this.removeTexture(this.cacheKey+"_filtered"),0===t.length)return this._element=this._originalElement,this._filteredEl=null,this._filterScalingX=1,this._filterScalingY=1,this;var e=this._originalElement,i=e.naturalWidth||e.width,n=e.naturalHeight||e.height;if(this._element===this._originalElement){var r=S.util.createCanvasElement();r.width=i,r.height=n,this._element=r,this._filteredEl=r}else this._element=this._filteredEl,this._filteredEl.getContext("2d").clearRect(0,0,i,n),this._lastScaleX=1,this._lastScaleY=1;return S.filterBackend||(S.filterBackend=S.initFilterBackend()),S.filterBackend.applyFilters(t,this._originalElement,i,n,this._element,this.cacheKey),this._originalElement.width===this._element.width&&this._originalElement.height===this._element.height||(this._filterScalingX=this._element.width/this._originalElement.width,this._filterScalingY=this._element.height/this._originalElement.height),this},_render:function(t){S.util.setImageSmoothing(t,this.imageSmoothing),!0!==this.isMoving&&this.resizeFilter&&this._needsResize()&&this.applyResizeFilters(),this._stroke(t),this._renderPaintInOrder(t)},drawCacheOnCanvas:function(t){S.util.setImageSmoothing(t,this.imageSmoothing),S.Object.prototype.drawCacheOnCanvas.call(this,t)},shouldCache:function(){return this.needsItsOwnCache()},_renderFill:function(t){var e=this._element;if(e){var i=this._filterScalingX,n=this._filterScalingY,r=this.width,s=this.height,o=Math.min,a=Math.max,h=a(this.cropX,0),l=a(this.cropY,0),c=e.naturalWidth||e.width,u=e.naturalHeight||e.height,d=h*i,f=l*n,g=o(r*i,c-d),m=o(s*n,u-f),p=-r/2,v=-s/2,y=o(r,c/i-h),_=o(s,u/n-l);e&&t.drawImage(e,d,f,g,m,p,v,y,_)}},_needsResize:function(){var t=this.getTotalObjectScaling();return t.scaleX!==this._lastScaleX||t.scaleY!==this._lastScaleY},_resetWidthHeight:function(){this.set(this.getOriginalSize())},_initElement:function(t,e){this.setElement(S.util.getById(t),e),S.util.addClass(this.getElement(),S.Image.CSS_CANVAS)},_initConfig:function(t){t||(t={}),this.setOptions(t),this._setWidthHeight(t)},_initFilters:function(t,e){t&&t.length?S.util.enlivenObjects(t,(function(t){e&&e(t)}),"fabric.Image.filters"):e&&e()},_setWidthHeight:function(t){t||(t={});var e=this.getElement();this.width=t.width||e.naturalWidth||e.width||0,this.height=t.height||e.naturalHeight||e.height||0},parsePreserveAspectRatioAttribute:function(){var t,e=S.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio||""),i=this._element.width,n=this._element.height,r=1,s=1,o=0,a=0,h=0,l=0,c=this.width,u=this.height,d={width:c,height:u};return!e||"none"===e.alignX&&"none"===e.alignY?(r=c/i,s=u/n):("meet"===e.meetOrSlice&&(t=(c-i*(r=s=S.util.findScaleToFit(this._element,d)))/2,"Min"===e.alignX&&(o=-t),"Max"===e.alignX&&(o=t),t=(u-n*s)/2,"Min"===e.alignY&&(a=-t),"Max"===e.alignY&&(a=t)),"slice"===e.meetOrSlice&&(t=i-c/(r=s=S.util.findScaleToCover(this._element,d)),"Mid"===e.alignX&&(h=t/2),"Max"===e.alignX&&(h=t),t=n-u/s,"Mid"===e.alignY&&(l=t/2),"Max"===e.alignY&&(l=t),i=c/r,n=u/s)),{width:i,height:n,scaleX:r,scaleY:s,offsetLeft:o,offsetTop:a,cropX:h,cropY:l}}}),S.Image.CSS_CANVAS="canvas-img",S.Image.prototype.getSvgSrc=S.Image.prototype.getSrc,S.Image.fromObject=function(t,e){var i=S.util.object.clone(t);S.util.loadImage(i.src,(function(t,n){n?e&&e(null,!0):S.Image.prototype._initFilters.call(i,i.filters,(function(n){i.filters=n||[],S.Image.prototype._initFilters.call(i,[i.resizeFilter],(function(n){i.resizeFilter=n[0],S.util.enlivenObjectEnlivables(i,i,(function(){var n=new S.Image(t,i);e(n,!1)}))}))}))}),null,i.crossOrigin)},S.Image.fromURL=function(t,e,i){S.util.loadImage(t,(function(t,n){e&&e(new S.Image(t,i),n)}),null,i&&i.crossOrigin)},S.Image.ATTRIBUTE_NAMES=S.SHARED_ATTRIBUTES.concat("x y width height preserveAspectRatio xlink:href crossOrigin image-rendering".split(" ")),S.Image.fromElement=function(t,i,n){var r=S.parseAttributes(t,S.Image.ATTRIBUTE_NAMES);S.Image.fromURL(r["xlink:href"],i,e(n?S.util.object.clone(n):{},r))})}(e),S.util.object.extend(S.Object.prototype,{_getAngleValueForStraighten:function(){var t=this.angle%360;return t>0?90*Math.round((t-1)/90):90*Math.round(t/90)},straighten:function(){return this.rotate(this._getAngleValueForStraighten())},fxStraighten:function(t){var e=function(){},i=(t=t||{}).onComplete||e,n=t.onChange||e,r=this;return S.util.animate({target:this,startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(t){r.rotate(t),n()},onComplete:function(){r.setCoords(),i()}})}}),S.util.object.extend(S.StaticCanvas.prototype,{straightenObject:function(t){return t.straighten(),this.requestRenderAll(),this},fxStraightenObject:function(t){return t.fxStraighten({onChange:this.requestRenderAllBound})}}),function(){function t(t,e){var i="precision "+e+" float;\nvoid main(){}",n=t.createShader(t.FRAGMENT_SHADER);return t.shaderSource(n,i),t.compileShader(n),!!t.getShaderParameter(n,t.COMPILE_STATUS)}function e(t){t&&t.tileSize&&(this.tileSize=t.tileSize),this.setupGLContext(this.tileSize,this.tileSize),this.captureGPUInfo()}S.isWebglSupported=function(e){if(S.isLikelyNode)return!1;e=e||S.WebglFilterBackend.prototype.tileSize;var i=document.createElement("canvas"),n=i.getContext("webgl")||i.getContext("experimental-webgl"),r=!1;if(n){S.maxTextureSize=n.getParameter(n.MAX_TEXTURE_SIZE),r=S.maxTextureSize>=e;for(var s=["highp","mediump","lowp"],o=0;o<3;o++)if(t(n,s[o])){S.webGlPrecision=s[o];break}}return this.isSupported=r,r},S.WebglFilterBackend=e,e.prototype={tileSize:2048,resources:{},setupGLContext:function(t,e){this.dispose(),this.createWebGLCanvas(t,e),this.aPosition=new Float32Array([0,0,0,1,1,0,1,1]),this.chooseFastestCopyGLTo2DMethod(t,e)},chooseFastestCopyGLTo2DMethod:function(t,e){var i,n=void 0!==window.performance;try{new ImageData(1,1),i=!0}catch(t){i=!1}var r="undefined"!=typeof ArrayBuffer,s="undefined"!=typeof Uint8ClampedArray;if(n&&i&&r&&s){var o=S.util.createCanvasElement(),a=new ArrayBuffer(t*e*4);if(S.forceGLPutImageData)return this.imageBuffer=a,void(this.copyGLTo2D=O);var h,l,c={imageBuffer:a,destinationWidth:t,destinationHeight:e,targetCanvas:o};o.width=t,o.height=e,h=window.performance.now(),E.call(c,this.gl,c),l=window.performance.now()-h,h=window.performance.now(),O.call(c,this.gl,c),l>window.performance.now()-h?(this.imageBuffer=a,this.copyGLTo2D=O):this.copyGLTo2D=E}},createWebGLCanvas:function(t,e){var i=S.util.createCanvasElement();i.width=t,i.height=e;var n={alpha:!0,premultipliedAlpha:!1,depth:!1,stencil:!1,antialias:!1},r=i.getContext("webgl",n);r||(r=i.getContext("experimental-webgl",n)),r&&(r.clearColor(0,0,0,0),this.canvas=i,this.gl=r)},applyFilters:function(t,e,i,n,r,s){var o,a=this.gl;s&&(o=this.getCachedTexture(s,e));var h={originalWidth:e.width||e.originalWidth,originalHeight:e.height||e.originalHeight,sourceWidth:i,sourceHeight:n,destinationWidth:i,destinationHeight:n,context:a,sourceTexture:this.createTexture(a,i,n,!o&&e),targetTexture:this.createTexture(a,i,n),originalTexture:o||this.createTexture(a,i,n,!o&&e),passes:t.length,webgl:!0,aPosition:this.aPosition,programCache:this.programCache,pass:0,filterBackend:this,targetCanvas:r},l=a.createFramebuffer();return a.bindFramebuffer(a.FRAMEBUFFER,l),t.forEach((function(t){t&&t.applyTo(h)})),function(t){var e=t.targetCanvas,i=e.width,n=e.height,r=t.destinationWidth,s=t.destinationHeight;i===r&&n===s||(e.width=r,e.height=s)}(h),this.copyGLTo2D(a,h),a.bindTexture(a.TEXTURE_2D,null),a.deleteTexture(h.sourceTexture),a.deleteTexture(h.targetTexture),a.deleteFramebuffer(l),r.getContext("2d").setTransform(1,0,0,1,0,0),h},dispose:function(){this.canvas&&(this.canvas=null,this.gl=null),this.clearWebGLCaches()},clearWebGLCaches:function(){this.programCache={},this.textureCache={}},createTexture:function(t,e,i,n){var r=t.createTexture();return t.bindTexture(t.TEXTURE_2D,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),n?t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,n):t.texImage2D(t.TEXTURE_2D,0,t.RGBA,e,i,0,t.RGBA,t.UNSIGNED_BYTE,null),r},getCachedTexture:function(t,e){if(this.textureCache[t])return this.textureCache[t];var i=this.createTexture(this.gl,e.width,e.height,e);return this.textureCache[t]=i,i},evictCachesForKey:function(t){this.textureCache[t]&&(this.gl.deleteTexture(this.textureCache[t]),delete this.textureCache[t])},copyGLTo2D:E,captureGPUInfo:function(){if(this.gpuInfo)return this.gpuInfo;var t=this.gl,e={renderer:"",vendor:""};if(!t)return e;var i=t.getExtension("WEBGL_debug_renderer_info");if(i){var n=t.getParameter(i.UNMASKED_RENDERER_WEBGL),r=t.getParameter(i.UNMASKED_VENDOR_WEBGL);n&&(e.renderer=n.toLowerCase()),r&&(e.vendor=r.toLowerCase())}return this.gpuInfo=e,e}}}(),function(){var t=function(){};function e(){}S.Canvas2dFilterBackend=e,e.prototype={evictCachesForKey:t,dispose:t,clearWebGLCaches:t,resources:{},applyFilters:function(t,e,i,n,r){var s=r.getContext("2d");s.drawImage(e,0,0,i,n);var o={sourceWidth:i,sourceHeight:n,imageData:s.getImageData(0,0,i,n),originalEl:e,originalImageData:s.getImageData(0,0,i,n),canvasEl:r,ctx:s,filterBackend:this};return t.forEach((function(t){t.applyTo(o)})),o.imageData.width===i&&o.imageData.height===n||(r.width=o.imageData.width,r.height=o.imageData.height),s.putImageData(o.imageData,0,0),o}}}(),S.Image=S.Image||{},S.Image.filters=S.Image.filters||{},S.Image.filters.BaseFilter=S.util.createClass({type:"BaseFilter",vertexSource:"attribute vec2 aPosition;\nvarying vec2 vTexCoord;\nvoid main() {\nvTexCoord = aPosition;\ngl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n}",fragmentSource:"precision highp float;\nvarying vec2 vTexCoord;\nuniform sampler2D uTexture;\nvoid main() {\ngl_FragColor = texture2D(uTexture, vTexCoord);\n}",initialize:function(t){t&&this.setOptions(t)},setOptions:function(t){for(var e in t)this[e]=t[e]},createProgram:function(t,e,i){e=e||this.fragmentSource,i=i||this.vertexSource,"highp"!==S.webGlPrecision&&(e=e.replace(/precision highp float/g,"precision "+S.webGlPrecision+" float"));var n=t.createShader(t.VERTEX_SHADER);if(t.shaderSource(n,i),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS))throw new Error("Vertex shader compile error for "+this.type+": "+t.getShaderInfoLog(n));var r=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(r,e),t.compileShader(r),!t.getShaderParameter(r,t.COMPILE_STATUS))throw new Error("Fragment shader compile error for "+this.type+": "+t.getShaderInfoLog(r));var s=t.createProgram();if(t.attachShader(s,n),t.attachShader(s,r),t.linkProgram(s),!t.getProgramParameter(s,t.LINK_STATUS))throw new Error('Shader link error for "${this.type}" '+t.getProgramInfoLog(s));var o=this.getAttributeLocations(t,s),a=this.getUniformLocations(t,s)||{};return a.uStepW=t.getUniformLocation(s,"uStepW"),a.uStepH=t.getUniformLocation(s,"uStepH"),{program:s,attributeLocations:o,uniformLocations:a}},getAttributeLocations:function(t,e){return{aPosition:t.getAttribLocation(e,"aPosition")}},getUniformLocations:function(){return{}},sendAttributeData:function(t,e,i){var n=e.aPosition,r=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,r),t.enableVertexAttribArray(n),t.vertexAttribPointer(n,2,t.FLOAT,!1,0,0),t.bufferData(t.ARRAY_BUFFER,i,t.STATIC_DRAW)},_setupFrameBuffer:function(t){var e,i,n=t.context;t.passes>1?(e=t.destinationWidth,i=t.destinationHeight,t.sourceWidth===e&&t.sourceHeight===i||(n.deleteTexture(t.targetTexture),t.targetTexture=t.filterBackend.createTexture(n,e,i)),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,t.targetTexture,0)):(n.bindFramebuffer(n.FRAMEBUFFER,null),n.finish())},_swapTextures:function(t){t.passes--,t.pass++;var e=t.targetTexture;t.targetTexture=t.sourceTexture,t.sourceTexture=e},isNeutralState:function(){var t=this.mainParameter,e=S.Image.filters[this.type].prototype;if(t){if(Array.isArray(e[t])){for(var i=e[t].length;i--;)if(this[t][i]!==e[t][i])return!1;return!0}return e[t]===this[t]}return!1},applyTo:function(t){t.webgl?(this._setupFrameBuffer(t),this.applyToWebGL(t),this._swapTextures(t)):this.applyTo2d(t)},retrieveShader:function(t){return t.programCache.hasOwnProperty(this.type)||(t.programCache[this.type]=this.createProgram(t.context)),t.programCache[this.type]},applyToWebGL:function(t){var e=t.context,i=this.retrieveShader(t);0===t.pass&&t.originalTexture?e.bindTexture(e.TEXTURE_2D,t.originalTexture):e.bindTexture(e.TEXTURE_2D,t.sourceTexture),e.useProgram(i.program),this.sendAttributeData(e,i.attributeLocations,t.aPosition),e.uniform1f(i.uniformLocations.uStepW,1/t.sourceWidth),e.uniform1f(i.uniformLocations.uStepH,1/t.sourceHeight),this.sendUniformData(e,i.uniformLocations),e.viewport(0,0,t.destinationWidth,t.destinationHeight),e.drawArrays(e.TRIANGLE_STRIP,0,4)},bindAdditionalTexture:function(t,e,i){t.activeTexture(i),t.bindTexture(t.TEXTURE_2D,e),t.activeTexture(t.TEXTURE0)},unbindAdditionalTexture:function(t,e){t.activeTexture(e),t.bindTexture(t.TEXTURE_2D,null),t.activeTexture(t.TEXTURE0)},getMainParameter:function(){return this[this.mainParameter]},setMainParameter:function(t){this[this.mainParameter]=t},sendUniformData:function(){},createHelpLayer:function(t){if(!t.helpLayer){var e=document.createElement("canvas");e.width=t.sourceWidth,e.height=t.sourceHeight,t.helpLayer=e}},toObject:function(){var t={type:this.type},e=this.mainParameter;return e&&(t[e]=this[e]),t},toJSON:function(){return this.toObject()}}),S.Image.filters.BaseFilter.fromObject=function(t,e){var i=new S.Image.filters[t.type](t);return e&&e(i),i},function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,n=e.util.createClass;i.ColorMatrix=n(i.BaseFilter,{type:"ColorMatrix",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nuniform mat4 uColorMatrix;\nuniform vec4 uConstants;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\ncolor *= uColorMatrix;\ncolor += uConstants;\ngl_FragColor = color;\n}",matrix:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],mainParameter:"matrix",colorsOnly:!0,initialize:function(t){this.callSuper("initialize",t),this.matrix=this.matrix.slice(0)},applyTo2d:function(t){var e,i,n,r,s,o=t.imageData.data,a=o.length,h=this.matrix,l=this.colorsOnly;for(s=0;s=w||o<0||o>=_||(h=4*(a*_+o),l=p[f*v+d],e+=m[h]*l,i+=m[h+1]*l,n+=m[h+2]*l,C||(r+=m[h+3]*l));x[s]=e,x[s+1]=i,x[s+2]=n,x[s+3]=C?m[s+3]:r}t.imageData=b},getUniformLocations:function(t,e){return{uMatrix:t.getUniformLocation(e,"uMatrix"),uOpaque:t.getUniformLocation(e,"uOpaque"),uHalfSize:t.getUniformLocation(e,"uHalfSize"),uSize:t.getUniformLocation(e,"uSize")}},sendUniformData:function(t,e){t.uniform1fv(e.uMatrix,this.matrix)},toObject:function(){return i(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),e.Image.filters.Convolute.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,n=e.util.createClass;i.Grayscale=n(i.BaseFilter,{type:"Grayscale",fragmentSource:{average:"precision highp float;\nuniform sampler2D uTexture;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat average = (color.r + color.b + color.g) / 3.0;\ngl_FragColor = vec4(average, average, average, color.a);\n}",lightness:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\ngl_FragColor = vec4(average, average, average, col.a);\n}",luminosity:"precision highp float;\nuniform sampler2D uTexture;\nuniform int uMode;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 col = texture2D(uTexture, vTexCoord);\nfloat average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\ngl_FragColor = vec4(average, average, average, col.a);\n}"},mode:"average",mainParameter:"mode",applyTo2d:function(t){var e,i,n=t.imageData.data,r=n.length,s=this.mode;for(e=0;el[0]&&r>l[1]&&s>l[2]&&n 0.0) {\n"+this.fragmentSource[t]+"}\n}"},retrieveShader:function(t){var e,i=this.type+"_"+this.mode;return t.programCache.hasOwnProperty(i)||(e=this.buildSource(this.mode),t.programCache[i]=this.createProgram(t.context,e)),t.programCache[i]},applyTo2d:function(t){var i,n,r,s,o,a,h,l=t.imageData.data,c=l.length,u=1-this.alpha;i=(h=new e.Color(this.color).getSource())[0]*this.alpha,n=h[1]*this.alpha,r=h[2]*this.alpha;for(var d=0;d=t||e<=-t)return 0;if(e<1.1920929e-7&&e>-1.1920929e-7)return 1;var i=(e*=Math.PI)/t;return a(e)/e*a(i)/i}},applyTo2d:function(t){var e=t.imageData,i=this.scaleX,n=this.scaleY;this.rcpScaleX=1/i,this.rcpScaleY=1/n;var r,s=e.width,a=e.height,h=o(s*i),l=o(a*n);"sliceHack"===this.resizeType?r=this.sliceByTwo(t,s,a,h,l):"hermite"===this.resizeType?r=this.hermiteFastResize(t,s,a,h,l):"bilinear"===this.resizeType?r=this.bilinearFiltering(t,s,a,h,l):"lanczos"===this.resizeType&&(r=this.lanczosResize(t,s,a,h,l)),t.imageData=r},sliceByTwo:function(t,i,r,s,o){var a,h,l=t.imageData,c=.5,u=!1,d=!1,f=i*c,g=r*c,m=e.filterBackend.resources,p=0,v=0,y=i,_=0;for(m.sliceByTwo||(m.sliceByTwo=document.createElement("canvas")),((a=m.sliceByTwo).width<1.5*i||a.height=e)){M=n(1e3*s(S-b.x)),w[M]||(w[M]={});for(var P=x.y-_;P<=x.y+_;P++)P<0||P>=o||(F=n(1e3*s(P-b.y)),w[M][F]||(w[M][F]=f(r(i(M*p,2)+i(F*v,2))/1e3)),(T=w[M][F])>0&&(O+=T,I+=T*c[E=4*(P*e+S)],A+=T*c[E+1],D+=T*c[E+2],L+=T*c[E+3]))}d[E=4*(C*a+h)]=I/O,d[E+1]=A/O,d[E+2]=D/O,d[E+3]=L/O}return++h1&&F<-1||(_=2*F*F*F-3*F*F+1)>0&&(T+=_*f[3+(M=4*(L+O*e))],b+=_,f[M+3]<255&&(_=_*f[M+3]/250),x+=_*f[M],C+=_*f[M+1],S+=_*f[M+2],w+=_)}m[y]=x/w,m[y+1]=C/w,m[y+2]=S/w,m[y+3]=T/b}return g},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),e.Image.filters.Resize.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,n=e.util.createClass;i.Contrast=n(i.BaseFilter,{type:"Contrast",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform float uContrast;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nfloat contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\ncolor.rgb = contrastF * (color.rgb - 0.5) + 0.5;\ngl_FragColor = color;\n}",contrast:0,mainParameter:"contrast",applyTo2d:function(t){if(0!==this.contrast){var e,i=t.imageData.data,n=i.length,r=Math.floor(255*this.contrast),s=259*(r+255)/(255*(259-r));for(e=0;e1&&(e=1/this.aspectRatio):this.aspectRatio<1&&(e=this.aspectRatio),t=e*this.blur*.12,this.horizontal?i[0]=t:i[1]=t,i}}),i.Blur.fromObject=e.Image.filters.BaseFilter.fromObject}(e),function(t){var e=t.fabric||(t.fabric={}),i=e.Image.filters,n=e.util.createClass;i.Gamma=n(i.BaseFilter,{type:"Gamma",fragmentSource:"precision highp float;\nuniform sampler2D uTexture;\nuniform vec3 uGamma;\nvarying vec2 vTexCoord;\nvoid main() {\nvec4 color = texture2D(uTexture, vTexCoord);\nvec3 correction = (1.0 / uGamma);\ncolor.r = pow(color.r, correction.r);\ncolor.g = pow(color.g, correction.g);\ncolor.b = pow(color.b, correction.b);\ngl_FragColor = color;\ngl_FragColor.rgb *= color.a;\n}",gamma:[1,1,1],mainParameter:"gamma",initialize:function(t){this.gamma=[1,1,1],i.BaseFilter.prototype.initialize.call(this,t)},applyTo2d:function(t){var e,i=t.imageData.data,n=this.gamma,r=i.length,s=1/n[0],o=1/n[1],a=1/n[2];for(this.rVals||(this.rVals=new Uint8Array(256),this.gVals=new Uint8Array(256),this.bVals=new Uint8Array(256)),e=0,r=256;e'},_getCacheCanvasDimensions:function(){var t=this.callSuper("_getCacheCanvasDimensions"),e=this.fontSize;return t.width+=e*t.zoomX,t.height+=e*t.zoomY,t},_render:function(t){var e=this.path;e&&!e.isNotVisible()&&e._render(t),this._setTextStyles(t),this._renderTextLinesBackground(t),this._renderTextDecoration(t,"underline"),this._renderText(t),this._renderTextDecoration(t,"overline"),this._renderTextDecoration(t,"linethrough")},_renderText:function(t){"stroke"===this.paintFirst?(this._renderTextStroke(t),this._renderTextFill(t)):(this._renderTextFill(t),this._renderTextStroke(t))},_setTextStyles:function(t,e,i){if(t.textBaseline="alphabetical",this.path)switch(this.pathAlign){case"center":t.textBaseline="middle";break;case"ascender":t.textBaseline="top";break;case"descender":t.textBaseline="bottom"}t.font=this._getFontDeclaration(e,i)},calcTextWidth:function(){for(var t=this.getLineWidth(0),e=1,i=this._textLines.length;et&&(t=n)}return t},_renderTextLine:function(t,e,i,n,r,s){this._renderChars(t,e,i,n,r,s)},_renderTextLinesBackground:function(t){if(this.textBackgroundColor||this.styleHas("textBackgroundColor")){for(var e,i,n,r,s,o,a,h=t.fillStyle,l=this._getLeftOffset(),c=this._getTopOffset(),u=0,d=0,f=this.path,g=0,m=this._textLines.length;g=0:ia?u%=a:u<0&&(u+=a),this._setGraphemeOnPath(u,s,o),u+=s.kernedWidth}return{width:h,numOfSpaces:0}},_setGraphemeOnPath:function(t,i,n){var r=t+i.kernedWidth/2,s=this.path,o=e.util.getPointOnPath(s.path,r,s.segmentsInfo);i.renderLeft=o.x-n.x,i.renderTop=o.y-n.y,i.angle=o.angle+("right"===this.pathSide?Math.PI:0)},_getGraphemeBox:function(t,e,i,n,r){var s,o=this.getCompleteStyleDeclaration(e,i),a=n?this.getCompleteStyleDeclaration(e,i-1):{},h=this._measureChar(t,o,n,a),l=h.kernedWidth,c=h.width;0!==this.charSpacing&&(c+=s=this._getWidthOfCharSpacing(),l+=s);var u={width:c,left:0,height:o.fontSize,kernedWidth:l,deltaY:o.deltaY};if(i>0&&!r){var d=this.__charBounds[e][i-1];u.left=d.left+d.width+h.kernedWidth-h.width}return u},getHeightOfLine:function(t){if(this.__lineHeights[t])return this.__lineHeights[t];for(var e=this._textLines[t],i=this.getHeightOfChar(t,0),n=1,r=e.length;n0){var O=y+s+u;"rtl"===this.direction&&(O=this.width-O-d),l&&v&&(t.fillStyle=v,t.fillRect(O,c+x*n+o,d,this.fontSize/15)),u=f.left,d=f.width,l=g,v=p,n=r,o=a}else d+=f.kernedWidth;O=y+s+u,"rtl"===this.direction&&(O=this.width-O-d),t.fillStyle=p,g&&p&&t.fillRect(O,c+x*n+o,d-b,this.fontSize/15),_+=i}else _+=i;this._removeShadow(t)}},_getFontDeclaration:function(t,i){var n=t||this,r=this.fontFamily,s=e.Text.genericFonts.indexOf(r.toLowerCase())>-1,o=void 0===r||r.indexOf("'")>-1||r.indexOf(",")>-1||r.indexOf('"')>-1||s?n.fontFamily:'"'+n.fontFamily+'"';return[e.isLikelyNode?n.fontWeight:n.fontStyle,e.isLikelyNode?n.fontStyle:n.fontWeight,i?this.CACHE_FONT_SIZE+"px":n.fontSize+"px",o].join(" ")},render:function(t){this.visible&&(this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(this._shouldClearDimensionCache()&&this.initDimensions(),this.callSuper("render",t)))},_splitTextIntoLines:function(t){for(var i=t.split(this._reNewline),n=new Array(i.length),r=["\n"],s=[],o=0;o-1&&(t.underline=!0),t.textDecoration.indexOf("line-through")>-1&&(t.linethrough=!0),t.textDecoration.indexOf("overline")>-1&&(t.overline=!0),delete t.textDecoration)}S.IText=S.util.createClass(S.Text,S.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"",cursorDelay:1e3,cursorDuration:600,caching:!0,hiddenTextareaContainer:null,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,__widthOfSpace:[],inCompositionMode:!1,initialize:function(t,e){this.callSuper("initialize",t,e),this.initBehavior()},setSelectionStart:function(t){t=Math.max(t,0),this._updateAndFire("selectionStart",t)},setSelectionEnd:function(t){t=Math.min(t,this.text.length),this._updateAndFire("selectionEnd",t)},_updateAndFire:function(t,e){this[t]!==e&&(this._fireSelectionChanged(),this[t]=e),this._updateTextarea()},_fireSelectionChanged:function(){this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},initDimensions:function(){this.isEditing&&this.initDelayedCursor(),this.clearContextTop(),this.callSuper("initDimensions")},render:function(t){this.clearContextTop(),this.callSuper("render",t),this.cursorOffsetCache={},this.renderCursorOrSelection()},_render:function(t){this.callSuper("_render",t)},clearContextTop:function(t){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var e=this.canvas.contextTop,i=this.canvas.viewportTransform;e.save(),e.transform(i[0],i[1],i[2],i[3],i[4],i[5]),this.transform(e),this._clearTextArea(e),t||e.restore()}},renderCursorOrSelection:function(){if(this.isEditing&&this.canvas&&this.canvas.contextTop){var t=this._getCursorBoundaries(),e=this.canvas.contextTop;this.clearContextTop(!0),this.selectionStart===this.selectionEnd?this.renderCursor(t,e):this.renderSelection(t,e),e.restore()}},_clearTextArea:function(t){var e=this.width+4,i=this.height+4;t.clearRect(-e/2,-i/2,e,i)},_getCursorBoundaries:function(t){void 0===t&&(t=this.selectionStart);var e=this._getLeftOffset(),i=this._getTopOffset(),n=this._getCursorBoundariesOffsets(t);return{left:e,top:i,leftOffset:n.left,topOffset:n.top}},_getCursorBoundariesOffsets:function(t){if(this.cursorOffsetCache&&"top"in this.cursorOffsetCache)return this.cursorOffsetCache;var e,i,n,r,s=0,o=0,a=this.get2DCursorLocation(t);n=a.charIndex,i=a.lineIndex;for(var h=0;h0?o:0)},"rtl"===this.direction&&(r.left*=-1),this.cursorOffsetCache=r,this.cursorOffsetCache},renderCursor:function(t,e){var i=this.get2DCursorLocation(),n=i.lineIndex,r=i.charIndex>0?i.charIndex-1:0,s=this.getValueOfPropertyAt(n,r,"fontSize"),o=this.scaleX*this.canvas.getZoom(),a=this.cursorWidth/o,h=t.topOffset,l=this.getValueOfPropertyAt(n,r,"deltaY");h+=(1-this._fontSizeFraction)*this.getHeightOfLine(n)/this.lineHeight-s*(1-this._fontSizeFraction),this.inCompositionMode&&this.renderSelection(t,e),e.fillStyle=this.cursorColor||this.getValueOfPropertyAt(n,r,"fill"),e.globalAlpha=this.__isMousedown?1:this._currentCursorOpacity,e.fillRect(t.left+t.leftOffset-a/2,h+t.top+l,a,s)},renderSelection:function(t,e){for(var i=this.inCompositionMode?this.hiddenTextarea.selectionStart:this.selectionStart,n=this.inCompositionMode?this.hiddenTextarea.selectionEnd:this.selectionEnd,r=-1!==this.textAlign.indexOf("justify"),s=this.get2DCursorLocation(i),o=this.get2DCursorLocation(n),a=s.lineIndex,h=o.lineIndex,l=s.charIndex<0?0:s.charIndex,c=o.charIndex<0?0:o.charIndex,u=a;u<=h;u++){var d,f=this._getLineLeftOffset(u)||0,g=this.getHeightOfLine(u),m=0,p=0;if(u===a&&(m=this.__charBounds[a][l].left),u>=a&&u1)&&(g/=this.lineHeight);var y=t.left+f+m,_=p-m,w=g,b=0;this.inCompositionMode?(e.fillStyle=this.compositionColor||"black",w=1,b=g):e.fillStyle=this.selectionColor,"rtl"===this.direction&&(y=this.width-y-_),e.fillRect(y,t.top+t.topOffset+b,_,w),t.topOffset+=d}},getCurrentCharFontSize:function(){var t=this._getCurrentCharIndex();return this.getValueOfPropertyAt(t.l,t.c,"fontSize")},getCurrentCharColor:function(){var t=this._getCurrentCharIndex();return this.getValueOfPropertyAt(t.l,t.c,"fill")},_getCurrentCharIndex:function(){var t=this.get2DCursorLocation(this.selectionStart,!0),e=t.charIndex>0?t.charIndex-1:0;return{l:t.lineIndex,c:e}}}),S.IText.fromObject=function(e,i){if(t(e),e.styles)for(var n in e.styles)for(var r in e.styles[n])t(e.styles[n][r]);S.Object._fromObject("IText",e,i,"text")}}(),C=S.util.object.clone,S.util.object.extend(S.IText.prototype,{initBehavior:function(){this.initAddedHandler(),this.initRemovedHandler(),this.initCursorSelectionHandlers(),this.initDoubleClickSimulation(),this.mouseMoveHandler=this.mouseMoveHandler.bind(this)},onDeselect:function(){this.isEditing&&this.exitEditing(),this.selected=!1},initAddedHandler:function(){var t=this;this.on("added",(function(){var e=t.canvas;e&&(e._hasITextHandlers||(e._hasITextHandlers=!0,t._initCanvasHandlers(e)),e._iTextInstances=e._iTextInstances||[],e._iTextInstances.push(t))}))},initRemovedHandler:function(){var t=this;this.on("removed",(function(){var e=t.canvas;e&&(e._iTextInstances=e._iTextInstances||[],S.util.removeFromArray(e._iTextInstances,t),0===e._iTextInstances.length&&(e._hasITextHandlers=!1,t._removeCanvasHandlers(e)))}))},_initCanvasHandlers:function(t){t._mouseUpITextHandler=function(){t._iTextInstances&&t._iTextInstances.forEach((function(t){t.__isMousedown=!1}))},t.on("mouse:up",t._mouseUpITextHandler)},_removeCanvasHandlers:function(t){t.off("mouse:up",t._mouseUpITextHandler)},_tick:function(){this._currentTickState=this._animateCursor(this,1,this.cursorDuration,"_onTickComplete")},_animateCursor:function(t,e,i,n){var r;return r={isAborted:!1,abort:function(){this.isAborted=!0}},t.animate("_currentCursorOpacity",e,{duration:i,onComplete:function(){r.isAborted||t[n]()},onChange:function(){t.canvas&&t.selectionStart===t.selectionEnd&&t.renderCursorOrSelection()},abort:function(){return r.isAborted}}),r},_onTickComplete:function(){var t=this;this._cursorTimeout1&&clearTimeout(this._cursorTimeout1),this._cursorTimeout1=setTimeout((function(){t._currentTickCompleteState=t._animateCursor(t,0,this.cursorDuration/2,"_tick")}),100)},initDelayedCursor:function(t){var e=this,i=t?0:this.cursorDelay;this.abortCursorAnimation(),this._currentCursorOpacity=1,this._cursorTimeout2=setTimeout((function(){e._tick()}),i)},abortCursorAnimation:function(){var t=this._currentTickState||this._currentTickCompleteState,e=this.canvas;this._currentTickState&&this._currentTickState.abort(),this._currentTickCompleteState&&this._currentTickCompleteState.abort(),clearTimeout(this._cursorTimeout1),clearTimeout(this._cursorTimeout2),this._currentCursorOpacity=0,t&&e&&e.clearContext(e.contextTop||e.contextContainer)},selectAll:function(){return this.selectionStart=0,this.selectionEnd=this._text.length,this._fireSelectionChanged(),this._updateTextarea(),this},getSelectedText:function(){return this._text.slice(this.selectionStart,this.selectionEnd).join("")},findWordBoundaryLeft:function(t){var e=0,i=t-1;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)e++,i--;for(;/\S/.test(this._text[i])&&i>-1;)e++,i--;return t-e},findWordBoundaryRight:function(t){var e=0,i=t;if(this._reSpace.test(this._text[i]))for(;this._reSpace.test(this._text[i]);)e++,i++;for(;/\S/.test(this._text[i])&&i-1;)e++,i--;return t-e},findLineBoundaryRight:function(t){for(var e=0,i=t;!/\n/.test(this._text[i])&&i0&&nthis.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=e):(this.selectionStart=e,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===i&&this.selectionEnd===n||(this.restartCursorIfNeeded(),this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},fromStringToGraphemeSelection:function(t,e,i){var n=i.slice(0,t),r=S.util.string.graphemeSplit(n).length;if(t===e)return{selectionStart:r,selectionEnd:r};var s=i.slice(t,e);return{selectionStart:r,selectionEnd:r+S.util.string.graphemeSplit(s).length}},fromGraphemeToStringSelection:function(t,e,i){var n=i.slice(0,t).join("").length;return t===e?{selectionStart:n,selectionEnd:n}:{selectionStart:n,selectionEnd:n+i.slice(t,e).join("").length}},_updateTextarea:function(){if(this.cursorOffsetCache={},this.hiddenTextarea){if(!this.inCompositionMode){var t=this.fromGraphemeToStringSelection(this.selectionStart,this.selectionEnd,this._text);this.hiddenTextarea.selectionStart=t.selectionStart,this.hiddenTextarea.selectionEnd=t.selectionEnd}this.updateTextareaPosition()}},updateFromTextArea:function(){if(this.hiddenTextarea){this.cursorOffsetCache={},this.text=this.hiddenTextarea.value,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords());var t=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value);this.selectionEnd=this.selectionStart=t.selectionEnd,this.inCompositionMode||(this.selectionStart=t.selectionStart),this.updateTextareaPosition()}},updateTextareaPosition:function(){if(this.selectionStart===this.selectionEnd){var t=this._calcTextareaPosition();this.hiddenTextarea.style.left=t.left,this.hiddenTextarea.style.top=t.top}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var t=this.inCompositionMode?this.compositionStart:this.selectionStart,e=this._getCursorBoundaries(t),i=this.get2DCursorLocation(t),n=i.lineIndex,r=i.charIndex,s=this.getValueOfPropertyAt(n,r,"fontSize")*this.lineHeight,o=e.leftOffset,a=this.calcTransformMatrix(),h={x:e.left+o,y:e.top+e.topOffset+s},l=this.canvas.getRetinaScaling(),c=this.canvas.upperCanvasEl,u=c.width/l,d=c.height/l,f=u-s,g=d-s,m=c.clientWidth/u,p=c.clientHeight/d;return h=S.util.transformPoint(h,a),(h=S.util.transformPoint(h,this.canvas.viewportTransform)).x*=m,h.y*=p,h.x<0&&(h.x=0),h.x>f&&(h.x=f),h.y<0&&(h.y=0),h.y>g&&(h.y=g),h.x+=this.canvas._offset.left,h.y+=this.canvas._offset.top,{left:h.x+"px",top:h.y+"px",fontSize:s+"px",charHeight:s}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,selectable:this.selectable,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.hoverCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.selectable=this._savedProps.selectable,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var t=this._textBeforeEdit!==this.text,e=this.hiddenTextarea;return this.selected=!1,this.isEditing=!1,this.selectionEnd=this.selectionStart,e&&(e.blur&&e.blur(),e.parentNode&&e.parentNode.removeChild(e)),this.hiddenTextarea=null,this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this.fire("editing:exited"),t&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),t&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var t in this.styles)this._textLines[t]||delete this.styles[t]},removeStyleFromTo:function(t,e){var i,n,r=this.get2DCursorLocation(t,!0),s=this.get2DCursorLocation(e,!0),o=r.lineIndex,a=r.charIndex,h=s.lineIndex,l=s.charIndex;if(o!==h){if(this.styles[o])for(i=a;i=l&&(n[c-d]=n[u],delete n[u])}},shiftLineStyles:function(t,e){var i=C(this.styles);for(var n in this.styles){var r=parseInt(n,10);r>t&&(this.styles[r+e]=i[r],i[r-e]||delete this.styles[r])}},restartCursorIfNeeded:function(){this._currentTickState&&!this._currentTickState.isAborted&&this._currentTickCompleteState&&!this._currentTickCompleteState.isAborted||this.initDelayedCursor()},insertNewlineStyleObject:function(t,e,i,n){var r,s={},o=!1,a=this._unwrappedTextLines[t].length===e;for(var h in i||(i=1),this.shiftLineStyles(t,i),this.styles[t]&&(r=this.styles[t][0===e?e:e-1]),this.styles[t]){var l=parseInt(h,10);l>=e&&(o=!0,s[l-e]=this.styles[t][h],a&&0===e||delete this.styles[t][h])}var c=!1;for(o&&!a&&(this.styles[t+i]=s,c=!0),c&&i--;i>0;)n&&n[i-1]?this.styles[t+i]={0:C(n[i-1])}:r?this.styles[t+i]={0:C(r)}:delete this.styles[t+i],i--;this._forceClearCache=!0},insertCharStyleObject:function(t,e,i,n){this.styles||(this.styles={});var r=this.styles[t],s=r?C(r):{};for(var o in i||(i=1),s){var a=parseInt(o,10);a>=e&&(r[a+i]=s[a],s[a-i]||delete r[a])}if(this._forceClearCache=!0,n)for(;i--;)Object.keys(n[i]).length&&(this.styles[t]||(this.styles[t]={}),this.styles[t][e+i]=C(n[i]));else if(r)for(var h=r[e?e-1:1];h&&i--;)this.styles[t][e+i]=C(h)},insertNewStyleBlock:function(t,e,i){for(var n=this.get2DCursorLocation(e,!0),r=[0],s=0,o=0;o0&&(this.insertCharStyleObject(n.lineIndex,n.charIndex,r[0],i),i=i&&i.slice(r[0]+1)),s&&this.insertNewlineStyleObject(n.lineIndex,n.charIndex+r[0],s),o=1;o0?this.insertCharStyleObject(n.lineIndex+o,0,r[o],i):i&&this.styles[n.lineIndex+o]&&i[0]&&(this.styles[n.lineIndex+o][0]=i[0]),i=i&&i.slice(r[o]+1);r[o]>0&&this.insertCharStyleObject(n.lineIndex+o,0,r[o],i)},setSelectionStartEndWithShift:function(t,e,i){i<=t?(e===t?this._selectionDirection="left":"right"===this._selectionDirection&&(this._selectionDirection="left",this.selectionEnd=t),this.selectionStart=i):i>t&&it?this.selectionStart=t:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>t?this.selectionEnd=t:this.selectionEnd<0&&(this.selectionEnd=0)}}),S.util.object.extend(S.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown)},onMouseDown:function(t){if(this.canvas){this.__newClickTime=+new Date;var e=t.pointer;this.isTripleClick(e)&&(this.fire("tripleclick",t),this._stopEvent(t.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=e,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected}},isTripleClick:function(t){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===t.x&&this.__lastPointer.y===t.y},_stopEvent:function(t){t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation()},initCursorSelectionHandlers:function(){this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},doubleClickHandler:function(t){this.isEditing&&this.selectWord(this.getSelectionStartFromPointer(t.e))},tripleClickHandler:function(t){this.isEditing&&this.selectLine(this.getSelectionStartFromPointer(t.e))},initClicks:function(){this.on("mousedblclick",this.doubleClickHandler),this.on("tripleclick",this.tripleClickHandler)},_mouseDownHandler:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.__isMousedown=!0,this.selected&&(this.inCompositionMode=!1,this.setCursorByClick(t.e)),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection()))},_mouseDownHandlerBefore:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.selected=this===this.canvas._activeObject)},initMousedownHandler:function(){this.on("mousedown",this._mouseDownHandler),this.on("mousedown:before",this._mouseDownHandlerBefore)},initMouseupHandler:function(){this.on("mouseup",this.mouseUpHandler)},mouseUpHandler:function(t){if(this.__isMousedown=!1,!(!this.editable||this.group||t.transform&&t.transform.actionPerformed||t.e.button&&1!==t.e.button)){if(this.canvas){var e=this.canvas._activeObject;if(e&&e!==this)return}this.__lastSelected&&!this.__corner?(this.selected=!1,this.__lastSelected=!1,this.enterEditing(t.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()):this.selected=!0}},setCursorByClick:function(t){var e=this.getSelectionStartFromPointer(t),i=this.selectionStart,n=this.selectionEnd;t.shiftKey?this.setSelectionStartEndWithShift(i,n,e):(this.selectionStart=e,this.selectionEnd=e),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(t){for(var e,i=this.getLocalPointer(t),n=0,r=0,s=0,o=0,a=0,h=0,l=this._textLines.length;h0&&(o+=this._textLines[h-1].length+this.missingNewlineOffset(h-1));r=this._getLineLeftOffset(a)*this.scaleX,e=this._textLines[a],"rtl"===this.direction&&(i.x=this.width*this.scaleX-i.x+r);for(var c=0,u=e.length;cs||o<0?0:1);return this.flipX&&(a=r-a),a>this._text.length&&(a=this._text.length),a}}),S.util.object.extend(S.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=S.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.setAttribute("autocorrect","off"),this.hiddenTextarea.setAttribute("autocomplete","off"),this.hiddenTextarea.setAttribute("spellcheck","false"),this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea",""),this.hiddenTextarea.setAttribute("wrap","off");var t=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+t.top+"; left: "+t.left+"; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; paddingーtop: "+t.fontSize+";",this.hiddenTextareaContainer?this.hiddenTextareaContainer.appendChild(this.hiddenTextarea):S.document.body.appendChild(this.hiddenTextarea),S.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),S.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),S.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),S.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),S.util.addListener(this.hiddenTextarea,"cut",this.copy.bind(this)),S.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),S.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),S.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),S.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(S.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},keysMap:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown"},keysMapRtl:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorLeft",36:"moveCursorRight",37:"moveCursorRight",38:"moveCursorUp",39:"moveCursorLeft",40:"moveCursorDown"},ctrlKeysMapUp:{67:"copy",88:"cut"},ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(t){if(this.isEditing){var e="rtl"===this.direction?this.keysMapRtl:this.keysMap;if(t.keyCode in e)this[e[t.keyCode]](t);else{if(!(t.keyCode in this.ctrlKeysMapDown)||!t.ctrlKey&&!t.metaKey)return;this[this.ctrlKeysMapDown[t.keyCode]](t)}t.stopImmediatePropagation(),t.preventDefault(),t.keyCode>=33&&t.keyCode<=40?(this.inCompositionMode=!1,this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.requestRenderAll()}},onKeyUp:function(t){!this.isEditing||this._copyDone||this.inCompositionMode?this._copyDone=!1:t.keyCode in this.ctrlKeysMapUp&&(t.ctrlKey||t.metaKey)&&(this[this.ctrlKeysMapUp[t.keyCode]](t),t.stopImmediatePropagation(),t.preventDefault(),this.canvas&&this.canvas.requestRenderAll())},onInput:function(t){var e=this.fromPaste;if(this.fromPaste=!1,t&&t.stopPropagation(),this.isEditing){var i,n,r,s,o,a=this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,h=this._text.length,l=a.length,c=l-h,u=this.selectionStart,d=this.selectionEnd,f=u!==d;if(""===this.hiddenTextarea.value)return this.styles={},this.updateFromTextArea(),this.fire("changed"),void(this.canvas&&(this.canvas.fire("text:changed",{target:this}),this.canvas.requestRenderAll()));var g=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value),m=u>g.selectionStart;f?(i=this._text.slice(u,d),c+=d-u):l0&&(n+=(i=this.__charBounds[t][e-1]).left+i.width),n},getDownCursorOffset:function(t,e){var i=this._getSelectionForOffset(t,e),n=this.get2DCursorLocation(i),r=n.lineIndex;if(r===this._textLines.length-1||t.metaKey||34===t.keyCode)return this._text.length-i;var s=n.charIndex,o=this._getWidthBeforeCursor(r,s),a=this._getIndexOnLine(r+1,o);return this._textLines[r].slice(s).length+a+1+this.missingNewlineOffset(r)},_getSelectionForOffset:function(t,e){return t.shiftKey&&this.selectionStart!==this.selectionEnd&&e?this.selectionEnd:this.selectionStart},getUpCursorOffset:function(t,e){var i=this._getSelectionForOffset(t,e),n=this.get2DCursorLocation(i),r=n.lineIndex;if(0===r||t.metaKey||33===t.keyCode)return-i;var s=n.charIndex,o=this._getWidthBeforeCursor(r,s),a=this._getIndexOnLine(r-1,o),h=this._textLines[r].slice(0,s),l=this.missingNewlineOffset(r-1);return-this._textLines[r-1].length+a-h.length+(1-l)},_getIndexOnLine:function(t,e){for(var i,n,r=this._textLines[t],s=this._getLineLeftOffset(t),o=0,a=0,h=r.length;ae){n=!0;var l=s-i,c=s,u=Math.abs(l-e);o=Math.abs(c-e)=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorUpOrDown("Down",t)},moveCursorUp:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",t)},_moveCursorUpOrDown:function(t,e){var i=this["get"+t+"CursorOffset"](e,"right"===this._selectionDirection);e.shiftKey?this.moveCursorWithShift(i):this.moveCursorWithoutShift(i),0!==i&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(t){var e="left"===this._selectionDirection?this.selectionStart+t:this.selectionEnd+t;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,e),0!==t},moveCursorWithoutShift:function(t){return t<0?(this.selectionStart+=t,this.selectionEnd=this.selectionStart):(this.selectionEnd+=t,this.selectionStart=this.selectionEnd),0!==t},moveCursorLeft:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",t)},_move:function(t,e,i){var n;if(t.altKey)n=this["findWordBoundary"+i](this[e]);else{if(!t.metaKey&&35!==t.keyCode&&36!==t.keyCode)return this[e]+="Left"===i?-1:1,!0;n=this["findLineBoundary"+i](this[e])}if(void 0!==typeof n&&this[e]!==n)return this[e]=n,!0},_moveLeft:function(t,e){return this._move(t,e,"Left")},_moveRight:function(t,e){return this._move(t,e,"Right")},moveCursorLeftWithoutShift:function(t){var e=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(e=this._moveLeft(t,"selectionStart")),this.selectionEnd=this.selectionStart,e},moveCursorLeftWithShift:function(t){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(t,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(t,"selectionStart")):void 0},moveCursorRight:function(t){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorLeftOrRight("Right",t)},_moveCursorLeftOrRight:function(t,e){var i="moveCursor"+t+"With";this._currentCursorOpacity=1,e.shiftKey?i+="Shift":i+="outShift",this[i](e)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(t){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(t,"selectionStart"):this.selectionEnd!==this._text.length?(this._selectionDirection="right",this._moveRight(t,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(t){var e=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(e=this._moveRight(t,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,e},removeChars:function(t,e){void 0===e&&(e=t+1),this.removeStyleFromTo(t,e),this._text.splice(t,e-t),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()},insertChars:function(t,e,i,n){void 0===n&&(n=i),n>i&&this.removeStyleFromTo(i,n);var r=S.util.string.graphemeSplit(t);this.insertNewStyleBlock(r,i,e),this._text=[].concat(this._text.slice(0,i),r,this._text.slice(n)),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()}}),function(){var t=S.util.toFixed,e=/ +/g;S.util.object.extend(S.Text.prototype,{_toSVG:function(){var t=this._getSVGLeftTopOffsets(),e=this._getSVGTextAndBg(t.textTop,t.textLeft);return this._wrapSVGTextAndBg(e)},toSVG:function(t){return this._createBaseSVGMarkup(this._toSVG(),{reviver:t,noStyle:!0,withShadow:!0})},_getSVGLeftTopOffsets:function(){return{textLeft:-this.width/2,textTop:-this.height/2,lineTop:this.getHeightOfLine(0)}},_wrapSVGTextAndBg:function(t){var e=this.getSvgTextDecoration(this);return[t.textBgRects.join(""),'\t\t",t.textSpans.join(""),"\n"]},_getSVGTextAndBg:function(t,e){var i,n=[],r=[],s=t;this._setSVGBg(r);for(var o=0,a=this._textLines.length;o",S.util.string.escapeXml(i),""].join("")},_setSVGTextLineText:function(t,e,i,n){var r,s,o,a,h,l=this.getHeightOfLine(e),c=-1!==this.textAlign.indexOf("justify"),u="",d=0,f=this._textLines[e];n+=l*(1-this._fontSizeFraction)/this.lineHeight;for(var g=0,m=f.length-1;g<=m;g++)h=g===m||this.charSpacing,u+=f[g],o=this.__charBounds[e][g],0===d?(i+=o.kernedWidth-o.width,d+=o.width):d+=o.kernedWidth,c&&!h&&this._reSpaceAndTab.test(f[g])&&(h=!0),h||(r=r||this.getCompleteStyleDeclaration(e,g),s=this.getCompleteStyleDeclaration(e,g+1),h=this._hasStyleChangedForSvg(r,s)),h&&(a=this._getStyleDeclaration(e,g)||{},t.push(this._createTextCharSpan(u,a,i,n)),u="",r=s,i+=d,d=0)},_pushTextBgRect:function(e,i,n,r,s,o){var a=S.Object.NUM_FRACTION_DIGITS;e.push("\t\t\n')},_setSVGTextLineBg:function(t,e,i,n){for(var r,s,o=this._textLines[e],a=this.getHeightOfLine(e)/this.lineHeight,h=0,l=0,c=this.getValueOfPropertyAt(e,0,"textBackgroundColor"),u=0,d=o.length;uthis.width&&this._set("width",this.dynamicMinWidth),-1!==this.textAlign.indexOf("justify")&&this.enlargeSpaces(),this.height=this.calcTextHeight(),this.saveState({propertySet:"_dimensionAffectingProps"}))},_generateStyleMap:function(t){for(var e=0,i=0,n=0,r={},s=0;s0?(i=0,n++,e++):!this.splitByGrapheme&&this._reSpaceAndTab.test(t.graphemeText[n])&&s>0&&(i++,n++),r[s]={line:e,offset:i},n+=t.graphemeLines[s].length,i+=t.graphemeLines[s].length;return r},styleHas:function(t,i){if(this._styleMap&&!this.isWrapping){var n=this._styleMap[i];n&&(i=n.line)}return e.Text.prototype.styleHas.call(this,t,i)},isEmptyStyles:function(t){if(!this.styles)return!0;var e,i,n=0,r=!1,s=this._styleMap[t],o=this._styleMap[t+1];for(var a in s&&(t=s.line,n=s.offset),o&&(r=o.line===t,e=o.offset),i=void 0===t?this.styles:{line:this.styles[t]})for(var h in i[a])if(h>=n&&(!r||hn&&!p?(a.push(h),h=[],s=f,p=!0):s+=v,p||o||h.push(d),h=h.concat(c),g=o?0:this._measureWord([d],i,u),u++,p=!1,f>m&&(m=f);return y&&a.push(h),m+r>this.dynamicMinWidth&&(this.dynamicMinWidth=m-v+r),a},isEndOfWrapping:function(t){return!this._styleMap[t+1]||this._styleMap[t+1].line!==this._styleMap[t].line},missingNewlineOffset:function(t){return this.splitByGrapheme?this.isEndOfWrapping(t)?1:0:1},_splitTextIntoLines:function(t){for(var i=e.Text.prototype._splitTextIntoLines.call(this,t),n=this._wrapText(i.lines,this.width),r=new Array(n.length),s=0;s{},898:()=>{},245:()=>{}},v={};function y(t){var e=v[t];if(void 0!==e)return e.exports;var i=v[t]={exports:{}};return p[t](i,i.exports,y),i.exports}y.d=(t,e)=>{for(var i in e)y.o(e,i)&&!y.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},y.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var _={};(()=>{let t;y.d(_,{R:()=>t}),t="undefined"!=typeof document&&"undefined"!=typeof window?y(653).fabric:{version:"5.2.1"}})();var w,b,x,C,S=_.R;t.EnumDrawingItemMediaType=void 0,(w=t.EnumDrawingItemMediaType||(t.EnumDrawingItemMediaType={}))[w.DIMT_RECTANGLE=1]="DIMT_RECTANGLE",w[w.DIMT_QUADRILATERAL=2]="DIMT_QUADRILATERAL",w[w.DIMT_TEXT=4]="DIMT_TEXT",w[w.DIMT_ARC=8]="DIMT_ARC",w[w.DIMT_IMAGE=16]="DIMT_IMAGE",w[w.DIMT_POLYGON=32]="DIMT_POLYGON",w[w.DIMT_LINE=64]="DIMT_LINE",w[w.DIMT_GROUP=128]="DIMT_GROUP",t.EnumDrawingItemState=void 0,(b=t.EnumDrawingItemState||(t.EnumDrawingItemState={}))[b.DIS_DEFAULT=1]="DIS_DEFAULT",b[b.DIS_SELECTED=2]="DIS_SELECTED",t.EnumEnhancedFeatures=void 0,(x=t.EnumEnhancedFeatures||(t.EnumEnhancedFeatures={}))[x.EF_ENHANCED_FOCUS=4]="EF_ENHANCED_FOCUS",x[x.EF_AUTO_ZOOM=16]="EF_AUTO_ZOOM",x[x.EF_TAP_TO_FOCUS=64]="EF_TAP_TO_FOCUS",function(t){t.GREY="grey",t.GREY32="grey32",t.RGBA="rgba",t.RBGA="rbga",t.GRBA="grba",t.GBRA="gbra",t.BRGA="brga",t.BGRA="bgra"}(C||(C={}));const T=t=>"number"==typeof t&&!Number.isNaN(t),E=t=>"string"==typeof t;var O,I,A,D,L,M,F,P,k,R,B;!function(t){t[t.ARC=0]="ARC",t[t.IMAGE=1]="IMAGE",t[t.LINE=2]="LINE",t[t.POLYGON=3]="POLYGON",t[t.QUAD=4]="QUAD",t[t.RECT=5]="RECT",t[t.TEXT=6]="TEXT",t[t.GROUP=7]="GROUP"}(L||(L={})),function(t){t[t.DEFAULT=0]="DEFAULT",t[t.SELECTED=1]="SELECTED"}(M||(M={}));class j{get mediaType(){return new Map([["rect",t.EnumDrawingItemMediaType.DIMT_RECTANGLE],["quad",t.EnumDrawingItemMediaType.DIMT_QUADRILATERAL],["text",t.EnumDrawingItemMediaType.DIMT_TEXT],["arc",t.EnumDrawingItemMediaType.DIMT_ARC],["image",t.EnumDrawingItemMediaType.DIMT_IMAGE],["polygon",t.EnumDrawingItemMediaType.DIMT_POLYGON],["line",t.EnumDrawingItemMediaType.DIMT_LINE],["group",t.EnumDrawingItemMediaType.DIMT_GROUP]]).get(this._mediaType)}get styleSelector(){switch(s(this,I,"f")){case t.EnumDrawingItemState.DIS_DEFAULT:return"default";case t.EnumDrawingItemState.DIS_SELECTED:return"selected"}}set drawingStyleId(t){this.styleId=t}get drawingStyleId(){return this.styleId}set coordinateBase(t){if(!["view","image"].includes(t))throw new Error("Invalid 'coordinateBase'.");this._drawingLayer&&("image"===s(this,A,"f")&&"view"===t?this.updateCoordinateBaseFromImageToView():"view"===s(this,A,"f")&&"image"===t&&this.updateCoordinateBaseFromViewToImage()),o(this,A,t,"f")}get coordinateBase(){return s(this,A,"f")}get drawingLayerId(){return this._drawingLayerId}constructor(e,i){if(O.add(this),I.set(this,void 0),A.set(this,"image"),this._zIndex=null,this._drawingLayer=null,this._drawingLayerId=null,this._mapState_StyleId=new Map,this.mapEvent_Callbacks=new Map([["selected",new Map],["deselected",new Map],["mousedown",new Map],["mouseup",new Map],["dblclick",new Map],["mouseover",new Map],["mouseout",new Map]]),this.mapNoteName_Content=new Map([]),this.isDrawingItem=!0,null!=i&&!T(i))throw new TypeError("Invalid 'drawingStyleId'.");e&&this._setFabricObject(e),this.setState(t.EnumDrawingItemState.DIS_DEFAULT),this.styleId=i}_setFabricObject(e){this._fabricObject=e,this._fabricObject.on("selected",(()=>{this.setState(t.EnumDrawingItemState.DIS_SELECTED)})),this._fabricObject.on("deselected",(()=>{this._fabricObject.canvas&&this._fabricObject.canvas.getActiveObjects().includes(this._fabricObject)?this.setState(t.EnumDrawingItemState.DIS_SELECTED):this.setState(t.EnumDrawingItemState.DIS_DEFAULT),"textbox"===this._fabricObject.type&&(this._fabricObject.isEditing&&this._fabricObject.exitEditing(),this._fabricObject.selected=!1)})),e.getDrawingItem=()=>this}_getFabricObject(){return this._fabricObject}setState(t){o(this,I,t,"f")}getState(){return s(this,I,"f")}_on(t,e){if(!e)return;const i=t.toLowerCase(),n=this.mapEvent_Callbacks.get(i);if(!n)throw new Error(`Event '${t}' does not exist.`);let r=n.get(e);r||(r=t=>{const i=t.e;if(!i)return void(e&&e.apply(this,[{targetItem:this,itemClientX:null,itemClientY:null,itemPageX:null,itemPageY:null}]));const n={targetItem:this,itemClientX:null,itemClientY:null,itemPageX:null,itemPageY:null};if(this._drawingLayer){let t,e,r,s;const o=i.target.getBoundingClientRect();t=o.left,e=o.top,r=t+window.scrollX,s=e+window.scrollY;const{width:a,height:h}=this._drawingLayer.fabricCanvas.lowerCanvasEl.getBoundingClientRect(),l=this._drawingLayer.width,c=this._drawingLayer.height,u=a/h,d=l/c,f=this._drawingLayer._getObjectFit();let g,m,p,v,y=1;if("contain"===f)u0?i-1:r,U),actionName:"modifyPolygon",pointIndex:i}),t}),{}),o(this,P,JSON.parse(JSON.stringify(t)),"f"),this._mediaType="polygon"}extendSet(t,e){if("vertices"===t){const t=this._fabricObject;if(t.group){const i=t.group;t.points=e.map((t=>({x:t.x-i.left-i.width/2,y:t.y-i.top-i.height/2}))),i.addWithUpdate()}else t.points=e;const i=t.points.length-1;return t.controls=t.points.reduce((function(t,e,n){return t["p"+n]=new S.Control({positionHandler:W,actionHandler:G(n>0?n-1:i,U),actionName:"modifyPolygon",pointIndex:n}),t}),{}),t._setPositionDimensions({}),!0}}extendGet(t){if("vertices"===t){const t=[],e=this._fabricObject;if(e.selectable&&!e.group)for(let i in e.oCoords)t.push({x:e.oCoords[i].x,y:e.oCoords[i].y});else for(let i of e.points){let n=i.x-e.pathOffset.x,r=i.y-e.pathOffset.y;const s=S.util.transformPoint({x:n,y:r},e.calcTransformMatrix());t.push({x:s.x,y:s.y})}return t}}updateCoordinateBaseFromImageToView(){const t=this.get("vertices").map((t=>({x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)})));this.set("vertices",t)}updateCoordinateBaseFromViewToImage(){const t=this.get("vertices").map((t=>({x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)})));this.set("vertices",t)}setPosition(t){this.setPolygon(t)}getPosition(){return this.getPolygon()}updatePosition(){s(this,P,"f")&&this.setPolygon(s(this,P,"f"))}setPolygon(t){if(!e.isPolygon(t))throw new TypeError("Invalid 'polygon'.");if(this._drawingLayer){if("view"===this.coordinateBase){const e=t.points.map((t=>({x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)})));this.set("vertices",e)}else{if("image"!==this.coordinateBase)throw new Error("Invalid 'coordinateBase'.");this.set("vertices",t.points)}this._drawingLayer.renderAll()}else o(this,P,JSON.parse(JSON.stringify(t)),"f")}getPolygon(){if(this._drawingLayer){if("view"===this.coordinateBase){return{points:this.get("vertices").map((t=>({x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)})))}}if("image"===this.coordinateBase)return{points:this.get("vertices")};throw new Error("Invalid 'coordinateBase'.")}return s(this,P,"f")?JSON.parse(JSON.stringify(s(this,P,"f"))):null}}P=new WeakMap;k=new WeakMap,R=new WeakMap;const H=t=>{let e=(t=>t.split("\n").map((t=>t.split("\t"))))(t);return(t=>{for(let e=0;;e++){let i=-1;for(let n=0;ni&&(i=r.length))}if(-1===i)break;for(let n=0;n=t[n].length-1)continue;let r=" ".repeat(i+2-t[n][e].length);t[n][e]=t[n][e].concat(r)}}})(e),(t=>{let e="";for(let i=0;i({x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)})));this.set("vertices",e)}else{if("image"!==this.coordinateBase)throw new Error("Invalid 'coordinateBase'.");this.set("vertices",t.points)}this._drawingLayer.renderAll()}else o(this,q,JSON.parse(JSON.stringify(t)),"f")}getQuad(){if(this._drawingLayer){if("view"===this.coordinateBase){return{points:this.get("vertices").map((t=>({x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)})))}}if("image"===this.coordinateBase)return{points:this.get("vertices")};throw new Error("Invalid 'coordinateBase'.")}return s(this,q,"f")?JSON.parse(JSON.stringify(s(this,q,"f"))):null}}q=new WeakMap;class Z extends j{constructor(e){super(new S.Group(e.map((t=>t._getFabricObject())))),this._fabricObject.on("selected",(()=>{this.setState(t.EnumDrawingItemState.DIS_SELECTED);const e=this._fabricObject._objects;for(let t of e)setTimeout((()=>{t&&t.fire("selected")}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)})),this._fabricObject.on("deselected",(()=>{this.setState(t.EnumDrawingItemState.DIS_DEFAULT);const e=this._fabricObject._objects;for(let t of e)setTimeout((()=>{t&&t.fire("deselected")}),0);setTimeout((()=>{this._fabricObject&&this._fabricObject.canvas&&(this._fabricObject.dirty=!0,this._fabricObject.canvas.renderAll())}),0)})),this._mediaType="group"}extendSet(t,e){return!1}extendGet(t){}updateCoordinateBaseFromImageToView(){}updateCoordinateBaseFromViewToImage(){}setPosition(){}getPosition(){}updatePosition(){}getChildDrawingItems(){return this._fabricObject._objects.map((t=>t.getDrawingItem()))}setChildDrawingItems(t){if(!t||!t.isDrawingItem)throw TypeError("Illegal drawing item.");this._drawingLayer?this._drawingLayer._updateGroupItem(this,t,"add"):this._fabricObject.addWithUpdate(t._getFabricObject())}removeChildItem(t){t&&t.isDrawingItem&&(this._drawingLayer?this._drawingLayer._updateGroupItem(this,t,"remove"):this._fabricObject.removeWithUpdate(t._getFabricObject()))}}const J=t=>null!==t&&"object"==typeof t&&!Array.isArray(t),Q=t=>!!E(t)&&""!==t,$=t=>!!J(t)&&(!("id"in t&&!T(t.id))&&(!("lineWidth"in t&&!T(t.lineWidth))&&(!("fillStyle"in t&&!Q(t.fillStyle))&&(!("strokeStyle"in t&&!Q(t.strokeStyle))&&(!("paintMode"in t&&!["fill","stroke","strokeAndFill"].includes(t.paintMode))&&(!("fontFamily"in t&&!Q(t.fontFamily))&&!("fontSize"in t&&!T(t.fontSize))))))));class tt{static convert(t,i,n){const r={x:0,y:0,width:i,height:n};if(!t)return r;if(e.isRect(t))t.isMeasuredInPercentage?(r.x=t.x/100*i,r.y=t.y/100*n,r.width=t.width/100*i,r.height=t.height/100*n):(r.x=t.x,r.y=t.y,r.width=t.width,r.height=t.height);else{if(!e.isDSRect(t))throw TypeError("Invalid region.");t.isMeasuredInPercentage?(r.x=t.left/100*i,r.y=t.top/100*n,r.width=(t.right-t.left)/100*i,r.height=(t.bottom-t.top)/100*n):(r.x=t.left,r.y=t.top,r.width=t.right-t.left,r.height=t.bottom-t.top)}return r.x=Math.round(r.x),r.y=Math.round(r.y),r.width=Math.round(r.width),r.height=Math.round(r.height),r}}var et,it;class nt{constructor(){et.set(this,new Map),it.set(this,!1)}get disposed(){return s(this,it,"f")}on(t,e){t=t.toLowerCase();const i=s(this,et,"f").get(t);if(i){if(i.includes(e))return;i.push(e)}else s(this,et,"f").set(t,[e])}off(t,e){t=t.toLowerCase();const i=s(this,et,"f").get(t);if(!i)return;const n=i.indexOf(e);-1!==n&&i.splice(n,1)}offAll(t){t=t.toLowerCase();const e=s(this,et,"f").get(t);e&&(e.length=0)}fire(t,e=[],i={async:!1,copy:!0}){e||(e=[]),t=t.toLowerCase();const n=s(this,et,"f").get(t);if(n&&n.length){i=Object.assign({async:!1,copy:!0},i);for(let t of n){if(!t)continue;let r=[];if(i.copy)for(let t of e){try{t=JSON.parse(JSON.stringify(t))}catch(t){}r.push(t)}else r=e;let s=!1;if(i.async)setTimeout((()=>{this.disposed||n.includes(t)&&t.apply(i.target,r)}),0);else try{s=t.apply(i.target,r)}catch(t){}if(!0===s)break}}}dispose(){o(this,it,!0,"f")}}function rt(t,e,i){return(i.x-t.x)*(e.y-t.y)==(e.x-t.x)*(i.y-t.y)&&Math.min(t.x,e.x)<=i.x&&i.x<=Math.max(t.x,e.x)&&Math.min(t.y,e.y)<=i.y&&i.y<=Math.max(t.y,e.y)}function st(t){return Math.abs(t)<1e-6?0:t<0?-1:1}function ot(t,e,i,n){let r=t[0]*(i[1]-e[1])+e[0]*(t[1]-i[1])+i[0]*(e[1]-t[1]),s=t[0]*(n[1]-e[1])+e[0]*(t[1]-n[1])+n[0]*(e[1]-t[1]);return!((r^s)>=0&&0!==r&&0!==s)&&(r=i[0]*(t[1]-n[1])+n[0]*(i[1]-t[1])+t[0]*(n[1]-i[1]),s=i[0]*(e[1]-n[1])+n[0]*(i[1]-e[1])+e[0]*(n[1]-i[1]),!((r^s)>=0&&0!==r&&0!==s))}et=new WeakMap,it=new WeakMap;const at=async t=>{if("string"!=typeof t)throw new TypeError("Invalid url.");const e=await fetch(t);if(!e.ok)throw Error("Network Error: "+e.statusText);const i=await e.text();if(!i.trim().startsWith("<"))throw Error("Unable to get valid HTMLElement.");const n=document.createElement("div");if(n.insertAdjacentHTML("beforeend",i),1===n.childElementCount&&n.firstChild instanceof HTMLTemplateElement)return n.firstChild.content;const r=new DocumentFragment;for(let t of n.children)r.append(t);return r};var ht,lt,ct,ut,dt,ft,gt,mt,pt,vt,yt,_t,wt,bt,xt,Ct,St,Tt,Et,Ot,It,At,Dt,Lt,Mt,Ft,Pt,kt,Rt,Bt,jt,Vt,Wt,Nt;class Ut{static createDrawingStyle(t){if(!$(t))throw new Error("Invalid style definition.");let e,i=Ut.USER_START_STYLE_ID;for(;s(Ut,ht,"f",lt).has(i);)i++;e=i;const n=JSON.parse(JSON.stringify(t));n.id=e;for(let t in s(Ut,ht,"f",ct))n.hasOwnProperty(t)||(n[t]=s(Ut,ht,"f",ct)[t]);return s(Ut,ht,"f",lt).set(e,n),n.id}static _getDrawingStyle(t,e){if("number"!=typeof t)throw new Error("Invalid style id.");const i=s(Ut,ht,"f",lt).get(t);return i?e?JSON.parse(JSON.stringify(i)):i:null}static getDrawingStyle(t){return this._getDrawingStyle(t,!0)}static getAllDrawingStyles(){return JSON.parse(JSON.stringify(Array.from(s(Ut,ht,"f",lt).values())))}static _updateDrawingStyle(t,e){if(!$(e))throw new Error("Invalid style definition.");const i=s(Ut,ht,"f",lt).get(t);if(i)for(let t in e)i.hasOwnProperty(t)&&(i[t]=e[t])}static updateDrawingStyle(t,e){this._updateDrawingStyle(t,e)}}ht=Ut,Ut.STYLE_BLUE_STROKE=1,Ut.STYLE_GREEN_STROKE=2,Ut.STYLE_ORANGE_STROKE=3,Ut.STYLE_YELLOW_STROKE=4,Ut.STYLE_BLUE_STROKE_FILL=5,Ut.STYLE_GREEN_STROKE_FILL=6,Ut.STYLE_ORANGE_STROKE_FILL=7,Ut.STYLE_YELLOW_STROKE_FILL=8,Ut.STYLE_BLUE_STROKE_TRANSPARENT=9,Ut.STYLE_GREEN_STROKE_TRANSPARENT=10,Ut.STYLE_ORANGE_STROKE_TRANSPARENT=11,Ut.USER_START_STYLE_ID=1024,lt={value:new Map([[Ut.STYLE_BLUE_STROKE,{id:Ut.STYLE_BLUE_STROKE,lineWidth:4,fillStyle:"rgba(73, 173, 245, 0.3)",strokeStyle:"rgba(73, 173, 245, 1)",paintMode:"stroke",fontFamily:"consolas",fontSize:40}],[Ut.STYLE_GREEN_STROKE,{id:Ut.STYLE_GREEN_STROKE,lineWidth:2,fillStyle:"rgba(73, 245, 73, 0.3)",strokeStyle:"rgba(73, 245, 73, 0.9)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Ut.STYLE_ORANGE_STROKE,{id:Ut.STYLE_ORANGE_STROKE,lineWidth:2,fillStyle:"rgba(254, 180, 32, 0.3)",strokeStyle:"rgba(254, 180, 32, 0.9)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Ut.STYLE_YELLOW_STROKE,{id:Ut.STYLE_YELLOW_STROKE,lineWidth:2,fillStyle:"rgba(245, 236, 73, 0.3)",strokeStyle:"rgba(245, 236, 73, 1)",paintMode:"stroke",fontFamily:"consolas",fontSize:40}],[Ut.STYLE_BLUE_STROKE_FILL,{id:Ut.STYLE_BLUE_STROKE_FILL,lineWidth:4,fillStyle:"rgba(73, 173, 245, 0.3)",strokeStyle:"rgba(73, 173, 245, 1)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Ut.STYLE_GREEN_STROKE_FILL,{id:Ut.STYLE_GREEN_STROKE_FILL,lineWidth:2,fillStyle:"rgba(73, 245, 73, 0.3)",strokeStyle:"rgba(73, 245, 73, 0.9)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Ut.STYLE_ORANGE_STROKE_FILL,{id:Ut.STYLE_ORANGE_STROKE_FILL,lineWidth:2,fillStyle:"rgba(254, 180, 32, 0.3)",strokeStyle:"rgba(254, 180, 32, 1)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Ut.STYLE_YELLOW_STROKE_FILL,{id:Ut.STYLE_YELLOW_STROKE_FILL,lineWidth:2,fillStyle:"rgba(245, 236, 73, 0.3)",strokeStyle:"rgba(245, 236, 73, 1)",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Ut.STYLE_BLUE_STROKE_TRANSPARENT,{id:Ut.STYLE_BLUE_STROKE_TRANSPARENT,lineWidth:4,fillStyle:"rgba(73, 173, 245, 0.2)",strokeStyle:"transparent",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Ut.STYLE_GREEN_STROKE_TRANSPARENT,{id:Ut.STYLE_GREEN_STROKE_TRANSPARENT,lineWidth:2,fillStyle:"rgba(73, 245, 73, 0.2)",strokeStyle:"transparent",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}],[Ut.STYLE_ORANGE_STROKE_TRANSPARENT,{id:Ut.STYLE_ORANGE_STROKE_TRANSPARENT,lineWidth:2,fillStyle:"rgba(254, 180, 32, 0.2)",strokeStyle:"transparent",paintMode:"strokeAndFill",fontFamily:"consolas",fontSize:40}]])},ct={value:{lineWidth:2,fillStyle:"rgba(245, 236, 73, 0.3)",strokeStyle:"rgba(245, 236, 73, 1)",paintMode:"stroke",fontFamily:"consolas",fontSize:40}},"undefined"!=typeof document&&"undefined"!=typeof window&&(S.StaticCanvas.prototype.dispose=function(){return this.isRendering&&(S.util.cancelAnimFrame(this.isRendering),this.isRendering=0),this.forEachObject((function(t){t.dispose&&t.dispose()})),this._objects=[],this.backgroundImage&&this.backgroundImage.dispose&&this.backgroundImage.dispose(),this.backgroundImage=null,this.overlayImage&&this.overlayImage.dispose&&this.overlayImage.dispose(),this.overlayImage=null,this._iTextInstances=null,this.contextContainer=null,this.lowerCanvasEl.classList.remove("lower-canvas"),delete this._originalCanvasStyle,this.lowerCanvasEl.setAttribute("width",this.width),this.lowerCanvasEl.setAttribute("height",this.height),S.util.cleanUpJsdomNode(this.lowerCanvasEl),this.lowerCanvasEl=void 0,this},S.Object.prototype.transparentCorners=!1,S.Object.prototype.cornerSize=20,S.Object.prototype.touchCornerSize=100,S.Object.prototype.cornerColor="rgb(254,142,20)",S.Object.prototype.cornerStyle="circle",S.Object.prototype.strokeUniform=!0,S.Object.prototype.hasBorders=!1,S.Canvas.prototype.containerClass="",S.Canvas.prototype.getPointer=function(t,e){if(this._absolutePointer&&!e)return this._absolutePointer;if(this._pointer&&e)return this._pointer;var i,n=this.upperCanvasEl,r=S.util.getPointer(t,n),s=n.getBoundingClientRect(),o=s.width||0,a=s.height||0;o&&a||("top"in s&&"bottom"in s&&(a=Math.abs(s.top-s.bottom)),"right"in s&&"left"in s&&(o=Math.abs(s.right-s.left))),this.calcOffset(),r.x=r.x-this._offset.left,r.y=r.y-this._offset.top,e||(r=this.restorePointerVpt(r));var h=this.getRetinaScaling();if(1!==h&&(r.x/=h,r.y/=h),0!==o&&0!==a){var l=window.getComputedStyle(n).objectFit,c=n.width,u=n.height,d=o,f=a;i={width:c/d,height:u/f};var g,m,p=c/u,v=d/f;return"contain"===l?p>v?(g=d,m=d/p,{x:r.x*i.width,y:(r.y-(f-m)/2)*i.width}):(g=f*p,m=f,{x:(r.x-(d-g)/2)*i.height,y:r.y*i.height}):"cover"===l?p>v?{x:(c-i.height*d)/2+r.x*i.height,y:r.y*i.height}:{x:r.x*i.width,y:(u-i.width*f)/2+r.y*i.width}:{x:r.x*i.width,y:r.y*i.height}}return i={width:1,height:1},{x:r.x*i.width,y:r.y*i.height}},S.Canvas.prototype._onTouchStart=function(t){var e=this.findTarget(t);!this.allowTouchScrolling&&t.cancelable&&t.preventDefault&&t.preventDefault(),e&&t.cancelable&&t.preventDefault&&t.preventDefault(),null===this.mainTouchId&&(this.mainTouchId=this.getPointerId(t)),this.__onMouseDown(t),this._resetTransformEventData();var i=this.upperCanvasEl,n=this._getEventPrefix();S.util.addListener(S.document,"touchend",this._onTouchEnd,{passive:!1}),S.util.addListener(S.document,"touchmove",this._onMouseMove,{passive:!1}),S.util.removeListener(i,n+"down",this._onMouseDown)},S.Textbox.prototype._wrapLine=function(t,e,i,n){const r=t.match(/[\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff\uff66-\uff9f]/g),s=!(!r||!r.length);var o=0,a=this.splitByGrapheme||s,h=[],l=[],c=a?S.util.string.graphemeSplit(t):t.split(this._wordJoiners),u="",d=0,f=a?"":" ",g=0,m=0,p=0,v=!0,y=this._getWidthOfCharSpacing();n=n||0;0===c.length&&c.push([]),i-=n;for(var _=0;_i&&!v?(h.push(l),l=[],o=g,v=!0):o+=y,v||a||l.push(f),l=l.concat(u),m=a?0:this._measureWord([f],e,d),d++,v=!1,g>p&&(p=g);return _&&h.push(l),p+n>this.dynamicMinWidth&&(this.dynamicMinWidth=p-y+n),h});class Gt{get width(){return this.fabricCanvas.width}get height(){return this.fabricCanvas.height}set _allowMultiSelect(t){this.fabricCanvas.selection=t,this.fabricCanvas.renderAll()}get _allowMultiSelect(){return this.fabricCanvas.selection}constructor(t,e,i){if(this.mapType_StateAndStyleId=new Map,this.mode="viewer",this.onSelectionChanged=null,this._arrDrwaingItem=[],this._arrFabricObject=[],this._visible=!0,t.hasOwnProperty("getFabricCanvas"))this.fabricCanvas=t.getFabricCanvas();else{let e=this.fabricCanvas=new S.Canvas(t,Object.assign(i,{allowTouchScrolling:!0,selection:!1}));e.setDimensions({width:"100%",height:"100%"},{cssOnly:!0}),e.lowerCanvasEl.className="",e.upperCanvasEl.className="",e.on("selection:created",(function(t){const e=t.selected,i=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!i.includes(e)&&i.push(e)}for(let t of i){const i=[];for(let n of e){const e=n.getDrawingItem();e._drawingLayer===t&&i.push(e)}setTimeout((()=>{t.onSelectionChanged&&t.onSelectionChanged(i,[])}),0)}})),e.on("before:selection:cleared",(function(t){const e=this.getActiveObjects(),i=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!i.includes(e)&&i.push(e)}for(let t of i){const i=[];for(let n of e){const e=n.getDrawingItem();e._drawingLayer===t&&i.push(e)}setTimeout((()=>{const e=[];for(let n of i)t.hasDrawingItem(n)&&e.push(n);e.length>0&&t.onSelectionChanged&&t.onSelectionChanged([],e)}),0)}})),e.on("selection:updated",(function(t){const e=t.selected,i=t.deselected,n=[];for(let t of e){const e=t.getDrawingItem()._drawingLayer;e&&!n.includes(e)&&n.push(e)}for(let t of i){const e=t.getDrawingItem()._drawingLayer;e&&!n.includes(e)&&n.push(e)}for(let t of n){const n=[],r=[];for(let i of e){const e=i.getDrawingItem();e._drawingLayer===t&&n.push(e)}for(let e of i){const i=e.getDrawingItem();i._drawingLayer===t&&r.push(i)}setTimeout((()=>{t.onSelectionChanged&&t.onSelectionChanged(n,r)}),0)}})),e.wrapperEl.style.position="absolute",t.getFabricCanvas=()=>this.fabricCanvas}let n,r;switch(this.id=e,e){case Gt.DDN_LAYER_ID:n=Ut.getDrawingStyle(Ut.STYLE_BLUE_STROKE),r=Ut.getDrawingStyle(Ut.STYLE_BLUE_STROKE_FILL);break;case Gt.DBR_LAYER_ID:n=Ut.getDrawingStyle(Ut.STYLE_ORANGE_STROKE),r=Ut.getDrawingStyle(Ut.STYLE_ORANGE_STROKE_FILL);break;case Gt.DLR_LAYER_ID:n=Ut.getDrawingStyle(Ut.STYLE_GREEN_STROKE),r=Ut.getDrawingStyle(Ut.STYLE_GREEN_STROKE_FILL);break;default:n=Ut.getDrawingStyle(Ut.STYLE_YELLOW_STROKE),r=Ut.getDrawingStyle(Ut.STYLE_YELLOW_STROKE_FILL)}for(let t of j.arrMediaTypes)this.mapType_StateAndStyleId.set(t,{default:n.id,selected:r.id})}getId(){return this.id}setVisible(t){if(t){for(let t of this._arrFabricObject)t.visible=!0,t.hasControls=!0;this._visible=!0}else{for(let t of this._arrFabricObject)t.visible=!1,t.hasControls=!1;this._visible=!1}this.fabricCanvas.renderAll()}isVisible(){return this._visible}_getItemCurrentStyle(t){if(t.styleId)return Ut.getDrawingStyle(t.styleId);const e=Ut.getDrawingStyle(t._mapState_StyleId.get(t.styleSelector));return e||null}_changeMediaTypeCurStyleInStyleSelector(t,e,i,n){const r=this.getDrawingItems((e=>e._mediaType===t));for(let t of r)t.styleSelector===e&&this._changeItemStyle(t,i,!0);n||this.fabricCanvas.renderAll()}_changeItemStyle(t,e,i){if(!t||!e)return;const n=t._getFabricObject();"number"==typeof t.styleId&&(e=Ut.getDrawingStyle(t.styleId)),n.strokeWidth=e.lineWidth,"fill"===e.paintMode?(n.fill=e.fillStyle,n.stroke=e.fillStyle):"stroke"===e.paintMode?(n.fill="transparent",n.stroke=e.strokeStyle):"strokeAndFill"===e.paintMode&&(n.fill=e.fillStyle,n.stroke=e.strokeStyle),n.fontFamily&&(n.fontFamily=e.fontFamily),n.fontSize&&(n.fontSize=e.fontSize),n.group||(n.dirty=!0),i||this.fabricCanvas.renderAll()}_updateGroupItem(t,e,i){if(!t||!e)return;const n=t.getChildDrawingItems();if("add"===i){if(n.includes(e))return;const i=e._getFabricObject();if(this.fabricCanvas.getObjects().includes(i)){if(!this._arrFabricObject.includes(i))throw new Error("Existed in other drawing layers.");e._zIndex=null}else{let i;if(e.styleId)i=Ut.getDrawingStyle(e.styleId);else{const n=this.mapType_StateAndStyleId.get(e._mediaType);i=Ut.getDrawingStyle(n[t.styleSelector]);const r=()=>{this._changeItemStyle(e,Ut.getDrawingStyle(this.mapType_StateAndStyleId.get(e._mediaType).selected),!0)},s=()=>{this._changeItemStyle(e,Ut.getDrawingStyle(this.mapType_StateAndStyleId.get(e._mediaType).default),!0)};e._on("selected",r),e._on("deselected",s),e._funcChangeStyleToSelected=r,e._funcChangeStyleToDefault=s}e._drawingLayer=this,e._drawingLayerId=this.id,this._changeItemStyle(e,i,!0)}t._fabricObject.addWithUpdate(e._getFabricObject())}else{if("remove"!==i)return;if(!n.includes(e))return;e._zIndex=null,e._drawingLayer=null,e._drawingLayerId=null,e._off("selected",e._funcChangeStyleToSelected),e._off("deselected",e._funcChangeStyleToDefault),e._funcChangeStyleToSelected=null,e._funcChangeStyleToDefault=null,t._fabricObject.removeWithUpdate(e._getFabricObject())}this.fabricCanvas.renderAll()}_addDrawingItem(t,e){if(!(t instanceof j))throw new TypeError("Invalid 'drawingItem'.");if(t._drawingLayer){if(t._drawingLayer==this)return;throw new Error("This drawing item has existed in other layer.")}let i=t._getFabricObject();const n=this.fabricCanvas.getObjects();let r,s;if(n.includes(i)){if(this._arrFabricObject.includes(i))return;throw new Error("Existed in other drawing layers.")}if("group"===t._mediaType){r=t.getChildDrawingItems();for(let t of r)if(t._drawingLayer&&t._drawingLayer!==this)throw new Error("The childItems of DT_Group have existed in other drawing layers.")}if(e&&"object"==typeof e&&!Array.isArray(e))for(let t in e)i.set(t,e[t]);if(r){for(let t of r){const e=this.mapType_StateAndStyleId.get(t._mediaType);for(let i of j.arrStyleSelectors)t._mapState_StyleId.set(i,e[i]);if(t.styleId)s=Ut.getDrawingStyle(t.styleId);else{s=Ut.getDrawingStyle(e.default);const i=()=>{this._changeItemStyle(t,Ut.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).selected),!0)},n=()=>{this._changeItemStyle(t,Ut.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).default),!0)};t._on("selected",i),t._on("deselected",n),t._funcChangeStyleToSelected=i,t._funcChangeStyleToDefault=n}t._drawingLayer=this,t._drawingLayerId=this.id,this._changeItemStyle(t,s,!0)}i.dirty=!0,this.fabricCanvas.renderAll()}else{const e=this.mapType_StateAndStyleId.get(t._mediaType);for(let i of j.arrStyleSelectors)t._mapState_StyleId.set(i,e[i]);if(t.styleId)s=Ut.getDrawingStyle(t.styleId);else{s=Ut.getDrawingStyle(e.default);const i=()=>{this._changeItemStyle(t,Ut.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).selected))},n=()=>{this._changeItemStyle(t,Ut.getDrawingStyle(this.mapType_StateAndStyleId.get(t._mediaType).default))};t._on("selected",i),t._on("deselected",n),t._funcChangeStyleToSelected=i,t._funcChangeStyleToDefault=n}this._changeItemStyle(t,s)}t._zIndex=this.id,t._drawingLayer=this,t._drawingLayerId=this.id;const o=this._arrFabricObject.length;let a=n.length;if(o)a=n.indexOf(this._arrFabricObject[o-1])+1;else for(let e=0;et.toLowerCase())):e=j.arrMediaTypes,i?i.forEach((t=>t.toLowerCase())):i=j.arrStyleSelectors;const n=Ut.getDrawingStyle(t);if(!n)throw new Error(`The 'drawingStyle' with id '${t}' doesn't exist.`);let r;for(let s of e)if(r=this.mapType_StateAndStyleId.get(s),r)for(let e of i){this._changeMediaTypeCurStyleInStyleSelector(s,e,n,!0),r[e]=t;for(let i of this._arrDrwaingItem)i._mediaType===s&&i._mapState_StyleId.set(e,t)}this.fabricCanvas.renderAll()}setDefaultStyle(e,i,n){const r=[];n&t.EnumDrawingItemMediaType.DIMT_RECTANGLE&&r.push("rect"),n&t.EnumDrawingItemMediaType.DIMT_QUADRILATERAL&&r.push("quad"),n&t.EnumDrawingItemMediaType.DIMT_TEXT&&r.push("text"),n&t.EnumDrawingItemMediaType.DIMT_ARC&&r.push("arc"),n&t.EnumDrawingItemMediaType.DIMT_IMAGE&&r.push("image"),n&t.EnumDrawingItemMediaType.DIMT_POLYGON&&r.push("polygon"),n&t.EnumDrawingItemMediaType.DIMT_LINE&&r.push("line");const s=[];i&t.EnumDrawingItemState.DIS_DEFAULT&&s.push("default"),i&t.EnumDrawingItemState.DIS_SELECTED&&s.push("selected"),this._setDefaultStyle(e,r.length?r:null,s.length?s:null)}setMode(t){if("viewer"===(t=t.toLowerCase())){for(let t of this._arrDrwaingItem)t._setEditable(!1);this.fabricCanvas.discardActiveObject(),this.fabricCanvas.renderAll(),this.mode="viewer"}else{if("editor"!==t)throw new RangeError("Invalid value.");for(let t of this._arrDrwaingItem)t._setEditable(!0);this.mode="editor"}this._manager._switchPointerEvent()}getMode(){return this.mode}_setDimensions(t,e){this.fabricCanvas.setDimensions(t,e)}_setObjectFit(t){if(t=t.toLowerCase(),!["contain","cover"].includes(t))throw new Error(`Unsupported value '${t}'.`);this.fabricCanvas.lowerCanvasEl.style.objectFit=t,this.fabricCanvas.upperCanvasEl.style.objectFit=t}_getObjectFit(){return this.fabricCanvas.lowerCanvasEl.style.objectFit}renderAll(){for(let t of this._arrDrwaingItem){const e=this._getItemCurrentStyle(t);this._changeItemStyle(t,e,!0)}this.fabricCanvas.renderAll()}dispose(){this.clearDrawingItems(),1===this._manager._arrDrawingLayer.length&&(this.fabricCanvas.wrapperEl.style.pointerEvents="none",this.fabricCanvas.dispose(),this._arrDrwaingItem.length=0,this._arrFabricObject.length=0)}}Gt.DDN_LAYER_ID=1,Gt.DBR_LAYER_ID=2,Gt.DLR_LAYER_ID=3,Gt.USER_DEFINED_LAYER_BASE_ID=100,Gt.TIP_LAYER_ID=999;class Yt{constructor(){this._arrDrawingLayer=[]}createDrawingLayer(t,e){if(this.getDrawingLayer(e))throw new Error("Existed drawing layer id.");const i=new Gt(t,e,{enableRetinaScaling:!1});return i._manager=this,this._arrDrawingLayer.push(i),this._switchPointerEvent(),i}deleteDrawingLayer(t){const e=this.getDrawingLayer(t);if(!e)return;const i=this._arrDrawingLayer;e.dispose(),i.splice(i.indexOf(e),1),this._switchPointerEvent()}clearDrawingLayers(){for(let t of this._arrDrawingLayer)t.dispose();this._arrDrawingLayer.length=0}getDrawingLayer(t){for(let e of this._arrDrawingLayer)if(e.getId()===t)return e;return null}getAllDrawingLayers(){return Array.from(this._arrDrawingLayer)}getSelectedDrawingItems(){if(!this._arrDrawingLayer.length)return;const t=this._getFabricCanvas().getActiveObjects(),e=[];for(let i of t)e.push(i.getDrawingItem());return e}setDimensions(t,e){this._arrDrawingLayer.length&&this._arrDrawingLayer[0]._setDimensions(t,e)}setObjectFit(t){for(let e of this._arrDrawingLayer)e&&e._setObjectFit(t)}getObjectFit(){return this._arrDrawingLayer.length?this._arrDrawingLayer[0]._getObjectFit():null}setVisible(t){if(!this._arrDrawingLayer.length)return;const e=this._getFabricCanvas();e.wrapperEl.style.display=t?"block":"none"}_getFabricCanvas(){return this._arrDrawingLayer.length?this._arrDrawingLayer[0].fabricCanvas:null}_switchPointerEvent(){if(this._arrDrawingLayer.length)for(let t of this._arrDrawingLayer)t.getMode()}}class Ht extends X{constructor(t,e,i,n,r){super(t,{x:e,y:i,width:n,height:0},r),ut.set(this,void 0),dt.set(this,void 0),this._fabricObject.paddingTop=15,this._fabricObject.calcTextHeight=function(){for(var t=0,e=0,i=this._textLines.length;e=0&&o(this,dt,setTimeout((()=>{this.set("visible",!1),this._drawingLayer&&this._drawingLayer.renderAll()}),s(this,ut,"f")),"f")}getDuration(){return s(this,ut,"f")}}ut=new WeakMap,dt=new WeakMap;class Xt{constructor(){ft.add(this),gt.set(this,void 0),mt.set(this,void 0),pt.set(this,void 0),vt.set(this,!0),this._drawingLayerManager=new Yt}createDrawingLayerBaseCvs(t,e,i="contain"){if("number"!=typeof t||t<=1)throw new Error("Invalid 'width'.");if("number"!=typeof e||e<=1)throw new Error("Invalid 'height'.");if(!["contain","cover"].includes(i))throw new Error("Unsupported 'objectFit'.");const n=document.createElement("canvas");return n.width==t&&n.height==e||(n.width=t,n.height=e),n.style.objectFit=i,n}_createDrawingLayer(t,e,i,n){if(!this._layerBaseCvs){let t;try{t=this.getContentDimensions()}catch(t){if("Invalid content dimensions."!==(t.message||t))throw t}e||(e=(null==t?void 0:t.width)||1280),i||(i=(null==t?void 0:t.height)||720),n||(n=(null==t?void 0:t.objectFit)||"contain"),this._layerBaseCvs=this.createDrawingLayerBaseCvs(e,i,n)}const r=this._layerBaseCvs,s=this._drawingLayerManager.createDrawingLayer(r,t);return this._innerComponent.getElement("drawing-layer")||this._innerComponent.setElement("drawing-layer",r.parentElement),s}createDrawingLayer(){let t;for(let e=Gt.USER_DEFINED_LAYER_BASE_ID;;e++)if(!this._drawingLayerManager.getDrawingLayer(e)&&e!==Gt.TIP_LAYER_ID){t=e;break}return this._createDrawingLayer(t)}deleteDrawingLayer(t){var e;this._drawingLayerManager.deleteDrawingLayer(t),this._drawingLayerManager.getAllDrawingLayers().length||(null===(e=this._innerComponent)||void 0===e||e.removeElement("drawing-layer"),this._layerBaseCvs=null)}deleteUserDefinedDrawingLayer(t){if("number"!=typeof t)throw new TypeError("Invalid id.");if(tt.getId()>=0&&t.getId()!==Gt.TIP_LAYER_ID))}updateDrawingLayers(t){((t,e,i)=>{if(!(t<=1||e<=1)){if(!["contain","cover"].includes(i))throw new Error("Unsupported 'objectFit'.");this._drawingLayerManager.setDimensions({width:t,height:e},{backstoreOnly:!0}),this._drawingLayerManager.setObjectFit(i)}})(t.width,t.height,t.objectFit)}getSelectedDrawingItems(){return this._drawingLayerManager.getSelectedDrawingItems()}setTipConfig(t){if(!(J(i=t)&&e.isPoint(i.topLeftPoint)&&T(i.width))||i.width<=0||!T(i.duration)||"coordinateBase"in i&&!["view","image"].includes(i.coordinateBase))throw new Error("Invalid tip config.");var i;o(this,gt,JSON.parse(JSON.stringify(t)),"f"),s(this,gt,"f").coordinateBase||(s(this,gt,"f").coordinateBase="view"),o(this,pt,t.duration,"f"),s(this,ft,"m",bt).call(this)}getTipConfig(){return s(this,gt,"f")?s(this,gt,"f"):null}setTipVisible(t){if("boolean"!=typeof t)throw new TypeError("Invalid value.");this._tip&&(this._tip.set("visible",t),this._drawingLayerOfTip&&this._drawingLayerOfTip.renderAll()),o(this,vt,t,"f")}isTipVisible(){return s(this,vt,"f")}updateTipMessage(t){if(!s(this,gt,"f"))throw new Error("Tip config is not set.");this._tipStyleId||(this._tipStyleId=Ut.createDrawingStyle({fillStyle:"#FFFFFF",paintMode:"fill",fontFamily:"Open Sans",fontSize:40})),this._drawingLayerOfTip||(this._drawingLayerOfTip=this._drawingLayerManager.getDrawingLayer(Gt.TIP_LAYER_ID)||this._createDrawingLayer(Gt.TIP_LAYER_ID)),this._tip?this._tip.set("text",t):this._tip=s(this,ft,"m",yt).call(this,t,s(this,gt,"f").topLeftPoint.x,s(this,gt,"f").topLeftPoint.y,s(this,gt,"f").width,s(this,gt,"f").coordinateBase,this._tipStyleId),s(this,ft,"m",_t).call(this,this._tip,this._drawingLayerOfTip),this._tip.set("visible",s(this,vt,"f")),this._drawingLayerOfTip&&this._drawingLayerOfTip.renderAll(),s(this,mt,"f")&&clearTimeout(s(this,mt,"f")),s(this,pt,"f")>=0&&o(this,mt,setTimeout((()=>{s(this,ft,"m",wt).call(this)}),s(this,pt,"f")),"f")}}gt=new WeakMap,mt=new WeakMap,pt=new WeakMap,vt=new WeakMap,ft=new WeakSet,yt=function(t,e,i,n,r,s){const o=new Ht(t,e,i,n,s);return o.coordinateBase=r,o},_t=function(t,e){e.hasDrawingItem(t)||e.addDrawingItems([t])},wt=function(){this._tip&&this._drawingLayerOfTip.removeDrawingItems([this._tip])},bt=function(){if(!this._tip)return;const t=s(this,gt,"f");this._tip.coordinateBase=t.coordinateBase,this._tip.setTextRect({x:t.topLeftPoint.x,y:t.topLeftPoint.y,width:t.width,height:0}),this._tip.set("width",this._tip.get("width")),this._tip._drawingLayer&&this._tip._drawingLayer.renderAll()};class zt extends HTMLElement{constructor(){super(),xt.set(this,void 0);const t=new DocumentFragment,e=document.createElement("div");e.setAttribute("class","wrapper"),t.appendChild(e),o(this,xt,e,"f");const i=document.createElement("slot");i.setAttribute("name","single-frame-input-container"),e.append(i);const n=document.createElement("slot");n.setAttribute("name","content"),e.append(n);const r=document.createElement("slot");r.setAttribute("name","drawing-layer"),e.append(r);const s=document.createElement("style");s.textContent='\n.wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n}\n::slotted(canvas[slot="content"]) {\n object-fit: contain;\n pointer-events: none;\n}\n::slotted(div[slot="single-frame-input-container"]) {\n width: 1px;\n height: 1px;\n overflow: hidden;\n pointer-events: none;\n}\n::slotted(*) {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n ',t.appendChild(s),this.attachShadow({mode:"open"}).appendChild(t)}getWrapper(){return s(this,xt,"f")}setElement(t,e){if(!(e instanceof HTMLElement))throw new TypeError("Invalid 'el'.");if(!["content","single-frame-input-container","drawing-layer"].includes(t))throw new TypeError("Invalid 'slot'.");this.removeElement(t),e.setAttribute("slot",t),this.appendChild(e)}getElement(t){if(!["content","single-frame-input-container","drawing-layer"].includes(t))throw new TypeError("Invalid 'slot'.");return this.querySelector(`[slot="${t}"]`)}removeElement(t){var e;if(!["content","single-frame-input-container","drawing-layer"].includes(t))throw new TypeError("Invalid 'slot'.");null===(e=this.querySelectorAll(`[slot="${t}"]`))||void 0===e||e.forEach((t=>t.remove()))}}xt=new WeakMap,customElements.get("dce-component")||customElements.define("dce-component",zt);class qt extends Xt{static get engineResourcePath(){return e.handleEngineResourcePaths(e.CoreModule.engineResourcePaths).dce}static set defaultUIElementURL(t){qt._defaultUIElementURL=t}static get defaultUIElementURL(){var t;return null===(t=qt._defaultUIElementURL)||void 0===t?void 0:t.replace("@engineResourcePath/",qt.engineResourcePath)}static async createInstance(t){const e=new qt;return"string"==typeof t&&(t=t.replace("@engineResourcePath/",qt.engineResourcePath)),await e.setUIElement(t||qt.defaultUIElementURL),e}static _transformCoordinates(t,e,i,n,r,s,o){const a=s/n,h=o/r;t.x=Math.round(t.x/a+e),t.y=Math.round(t.y/h+i)}set _singleFrameMode(t){if(!["disabled","image","camera"].includes(t))throw new Error("Invalid value.");if(t!==s(this,Mt,"f")){if(o(this,Mt,t,"f"),s(this,Ct,"m",kt).call(this))o(this,Ot,null,"f"),this._videoContainer=null,this._innerComponent.removeElement("content"),this._innerComponent&&(this._innerComponent.addEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.setAttribute("title","Take a photo")),this._bgCamera&&(this._bgCamera.style.display="block");else if(this._innerComponent&&(this._innerComponent.removeEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.removeAttribute("title")),this._bgCamera&&(this._bgCamera.style.display="none"),!s(this,Ot,"f")){const t=document.createElement("video");t.style.position="absolute",t.style.left="0",t.style.top="0",t.style.width="100%",t.style.height="100%",t.style.objectFit=this.getVideoFit(),t.setAttribute("autoplay","true"),t.setAttribute("playsinline","true"),t.setAttribute("muted","true"),["iPhone","iPad","Mac"].includes(u.OS)&&t.setAttribute("poster","data:image/gif;base64,R0lGODlhAQABAIEAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAgEAAEEBAA7"),o(this,Ot,t,"f");const e=document.createElement("div");e.append(t),e.style.overflow="hidden",this._videoContainer=e,this._innerComponent.setElement("content",e)}s(this,Ct,"m",kt).call(this)||this._hideDefaultSelection?(this._selCam&&(this._selCam.style.display="none"),this._selRsl&&(this._selRsl.style.display="none"),this._selMinLtr&&(this._selMinLtr.style.display="none")):(this._selCam&&(this._selCam.style.display="block"),this._selRsl&&(this._selRsl.style.display="block"),this._selMinLtr&&(this._selMinLtr.style.display="block"),this._stopLoading())}}get _singleFrameMode(){return s(this,Mt,"f")}get disposed(){return s(this,Pt,"f")}constructor(){super(),Ct.add(this),St.set(this,void 0),Tt.set(this,void 0),Et.set(this,void 0),this.containerClassName="dce-video-container",Ot.set(this,void 0),this.videoFit="contain",this._hideDefaultSelection=!1,this._divScanArea=null,this._divScanLight=null,this._bgLoading=null,this._selCam=null,this._bgCamera=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,It.set(this,null),this.regionMaskFillStyle="rgba(0,0,0,0.5)",this.regionMaskStrokeStyle="rgb(254,142,20)",this.regionMaskLineWidth=6,At.set(this,!1),Dt.set(this,!1),Lt.set(this,{width:0,height:0}),this._updateLayersTimeout=500,this._videoResizeListener=()=>{s(this,Ct,"m",Wt).call(this),this._updateLayersTimeoutId&&clearTimeout(this._updateLayersTimeoutId),this._updateLayersTimeoutId=setTimeout((()=>{this.disposed||(this.eventHandler.fire("videoEl:resized",null,{async:!1}),this.eventHandler.fire("content:updated",null,{async:!1}),this.isScanLaserVisible()&&s(this,Ct,"m",Vt).call(this))}),this._updateLayersTimeout)},this._windowResizeListener=()=>{qt._onLog&&qt._onLog("window resize event triggered."),s(this,Lt,"f").width===document.documentElement.clientWidth&&s(this,Lt,"f").height===document.documentElement.clientHeight||(s(this,Lt,"f").width=document.documentElement.clientWidth,s(this,Lt,"f").height=document.documentElement.clientHeight,this._videoResizeListener())},Mt.set(this,"disabled"),this._clickIptSingleFrameMode=()=>{if(!s(this,Ct,"m",kt).call(this))return;let t;if(this._singleFrameInputContainer)t=this._singleFrameInputContainer.firstElementChild;else{t=document.createElement("input"),t.setAttribute("type","file"),"camera"===this._singleFrameMode?(t.setAttribute("capture",""),t.setAttribute("accept","image/*")):"image"===this._singleFrameMode&&(t.removeAttribute("capture"),t.setAttribute("accept",".jpg,.jpeg,.icon,.gif,.svg,.webp,.png,.bmp")),t.addEventListener("change",(async()=>{const e=t.files[0];t.value="";{const t=async t=>{let e=null,i=null;if("undefined"!=typeof createImageBitmap)try{if(e=await createImageBitmap(t),e)return e}catch(t){}var n;return e||(i=await(n=t,new Promise(((t,e)=>{let i=URL.createObjectURL(n),r=new Image;r.src=i,r.onload=()=>{URL.revokeObjectURL(r.src),t(r)},r.onerror=t=>{e(new Error("Can't convert blob to image : "+(t instanceof Event?t.type:t)))}})))),i},i=(t,e,i,n)=>{t.width==i&&t.height==n||(t.width=i,t.height=n);const r=t.getContext("2d");r.clearRect(0,0,t.width,t.height),r.drawImage(e,0,0)},n=await t(e),r=n instanceof HTMLImageElement?n.naturalWidth:n.width,s=n instanceof HTMLImageElement?n.naturalHeight:n.height;let o=this._cvsSingleFrameMode;const a=null==o?void 0:o.width,h=null==o?void 0:o.height;o||(o=document.createElement("canvas"),this._cvsSingleFrameMode=o),i(o,n,r,s),this._innerComponent.setElement("content",o),a===o.width&&h===o.height||this.eventHandler.fire("content:updated",null,{async:!1})}this._onSingleFrameAcquired&&setTimeout((()=>{this._onSingleFrameAcquired(this._cvsSingleFrameMode)}),0)})),t.style.position="absolute",t.style.top="-9999px",t.style.backgroundColor="transparent",t.style.color="transparent";const e=document.createElement("div");e.append(t),this._innerComponent.setElement("single-frame-input-container",e),this._singleFrameInputContainer=e}null==t||t.click()},Ft.set(this,[]),this._capturedResultReceiver={onCapturedResultReceived:(t,i)=>{var n,r,o,a;if(this.disposed)return;if(this.clearAllInnerDrawingItems(),!t)return;const h=t.originalImageTag;if(!h)return;const l=t.items;if(!(null==l?void 0:l.length))return;const c=(null===(n=h.cropRegion)||void 0===n?void 0:n.left)||0,u=(null===(r=h.cropRegion)||void 0===r?void 0:r.top)||0,d=(null===(o=h.cropRegion)||void 0===o?void 0:o.right)?h.cropRegion.right-c:h.originalWidth,f=(null===(a=h.cropRegion)||void 0===a?void 0:a.bottom)?h.cropRegion.bottom-u:h.originalHeight,g=h.currentWidth,m=h.currentHeight,p=(t,e,i,n,r,o,a,h,l=[],c)=>{e.forEach((t=>qt._transformCoordinates(t,i,n,r,o,a,h)));const u=new K({points:[{x:e[0].x,y:e[0].y},{x:e[1].x,y:e[1].y},{x:e[2].x,y:e[2].y},{x:e[3].x,y:e[3].y}]},c);for(let t of l)u.addNote(t);t.addDrawingItems([u]),s(this,Ft,"f").push(u)};let v,y;for(let t of l)switch(t.type){case e.EnumCapturedResultItemType.CRIT_ORIGINAL_IMAGE:break;case e.EnumCapturedResultItemType.CRIT_BARCODE:v=this.getDrawingLayer(Gt.DBR_LAYER_ID),y=[{name:"format",content:t.formatString},{name:"text",content:t.text}],(null==i?void 0:i.isBarcodeVerifyOpen)?t.verified?p(v,t.location.points,c,u,d,f,g,m,y):p(v,t.location.points,c,u,d,f,g,m,y,Ut.STYLE_ORANGE_STROKE_TRANSPARENT):p(v,t.location.points,c,u,d,f,g,m,y);break;case e.EnumCapturedResultItemType.CRIT_TEXT_LINE:v=this.getDrawingLayer(Gt.DLR_LAYER_ID),y=[{name:"text",content:t.text}],i.isLabelVerifyOpen?t.verified?p(v,t.location.points,c,u,d,f,g,m,y):p(v,t.location.points,c,u,d,f,g,m,y,Ut.STYLE_GREEN_STROKE_TRANSPARENT):p(v,t.location.points,c,u,d,f,g,m,y);break;case e.EnumCapturedResultItemType.CRIT_DETECTED_QUAD:v=this.getDrawingLayer(Gt.DDN_LAYER_ID),(null==i?void 0:i.isDetectVerifyOpen)?t.crossVerificationStatus===e.EnumCrossVerificationStatus.CVS_PASSED?p(v,t.location.points,c,u,d,f,g,m,[]):p(v,t.location.points,c,u,d,f,g,m,[],Ut.STYLE_BLUE_STROKE_TRANSPARENT):p(v,t.location.points,c,u,d,f,g,m,[]);break;case e.EnumCapturedResultItemType.CRIT_NORMALIZED_IMAGE:v=this.getDrawingLayer(Gt.DDN_LAYER_ID),(null==i?void 0:i.isNormalizeVerifyOpen)?t.crossVerificationStatus===e.EnumCrossVerificationStatus.CVS_PASSED?p(v,t.location.points,c,u,d,f,g,m,[]):p(v,t.location.points,c,u,d,f,g,m,[],Ut.STYLE_BLUE_STROKE_TRANSPARENT):p(v,t.location.points,c,u,d,f,g,m,[]);break;case e.EnumCapturedResultItemType.CRIT_PARSED_RESULT:break;default:throw new Error("Illegal item type.")}}},Pt.set(this,!1),this.eventHandler=new nt,this.eventHandler.on("content:updated",(()=>{s(this,St,"f")&&clearTimeout(s(this,St,"f")),o(this,St,setTimeout((()=>{if(this.disposed)return;let t;this._updateVideoContainer();try{t=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}this.updateDrawingLayers(t),this.updateConvertedRegion(t)}),0),"f")})),this.eventHandler.on("videoEl:resized",(()=>{s(this,Tt,"f")&&clearTimeout(s(this,Tt,"f")),o(this,Tt,setTimeout((()=>{this.disposed||this._updateVideoContainer()}),0),"f")}))}_setUIElement(t){this.UIElement=t,this._unbindUI(),this._bindUI()}async setUIElement(t){let e;if("string"==typeof t){let i=await at(t);e=document.createElement("div"),Object.assign(e.style,{width:"100%",height:"100%"}),e.attachShadow({mode:"open"}).appendChild(i.cloneNode(!0))}else e=t;this._setUIElement(e)}getUIElement(){return this.UIElement}_bindUI(){var t,e;if(!this.UIElement)throw new Error("Need to set 'UIElement'.");if(this._innerComponent)return;let i=this.UIElement;i=i.shadowRoot||i;let n=(null===(t=i.classList)||void 0===t?void 0:t.contains(this.containerClassName))?i:i.querySelector(`.${this.containerClassName}`);if(!n)throw Error(`Can not find the element with class '${this.containerClassName}'.`);if(this._innerComponent=document.createElement("dce-component"),n.appendChild(this._innerComponent),s(this,Ct,"m",kt).call(this));else{const t=document.createElement("video");Object.assign(t.style,{position:"absolute",left:"0",top:"0",width:"100%",height:"100%",objectFit:this.getVideoFit()}),t.setAttribute("autoplay","true"),t.setAttribute("playsinline","true"),t.setAttribute("muted","true"),["iPhone","iPad","Mac"].includes(u.OS)&&t.setAttribute("poster","data:image/gif;base64,R0lGODlhAQABAIEAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAgEAAEEBAA7"),o(this,Ot,t,"f");const e=document.createElement("div");e.append(t),e.style.overflow="hidden",this._videoContainer=e,this._innerComponent.setElement("content",e)}if(this._selRsl=i.querySelector(".dce-sel-resolution"),this._selMinLtr=i.querySelector(".dlr-sel-minletter"),this._divScanArea=i.querySelector(".dce-scanarea"),this._divScanLight=i.querySelector(".dce-scanlight"),this._bgLoading=i.querySelector(".dce-bg-loading"),this._bgCamera=i.querySelector(".dce-bg-camera"),this._selCam=i.querySelector(".dce-sel-camera"),this._optGotRsl=i.querySelector(".dce-opt-gotResolution"),this._btnClose=i.querySelector(".dce-btn-close"),this._optGotMinLtr=i.querySelector(".dlr-opt-gotMinLtr"),this._selRsl&&(this._hideDefaultSelection||s(this,Ct,"m",kt).call(this)||this._selRsl.options.length||(this._selRsl.innerHTML=['','','',''].join(""),this._optGotRsl=this._selRsl.options[0])),this._selMinLtr&&(this._hideDefaultSelection||s(this,Ct,"m",kt).call(this)||this._selMinLtr.options.length||(this._selMinLtr.innerHTML=['','','','','','','','','','',''].join(""),this._optGotMinLtr=this._selMinLtr.options[0])),this.isScanLaserVisible()||s(this,Ct,"m",Wt).call(this),s(this,Ct,"m",kt).call(this)&&(this._innerComponent&&(this._innerComponent.addEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.setAttribute("title","Take a photo")),this._bgCamera&&(this._bgCamera.style.display="block")),s(this,Ct,"m",kt).call(this)||this._hideDefaultSelection?(this._selCam&&(this._selCam.style.display="none"),this._selRsl&&(this._selRsl.style.display="none"),this._selMinLtr&&(this._selMinLtr.style.display="none")):(this._selCam&&(this._selCam.style.display="block"),this._selRsl&&(this._selRsl.style.display="block"),this._selMinLtr&&(this._selMinLtr.style.display="block"),this._stopLoading()),window.ResizeObserver){this._resizeObserver||(this._resizeObserver=new ResizeObserver((t=>{var e;qt._onLog&&qt._onLog("resize observer triggered.");for(let i of t)i.target===(null===(e=this._innerComponent)||void 0===e?void 0:e.getWrapper())&&this._videoResizeListener()})));const t=null===(e=this._innerComponent)||void 0===e?void 0:e.getWrapper();t&&this._resizeObserver.observe(t)}s(this,Lt,"f").width=document.documentElement.clientWidth,s(this,Lt,"f").height=document.documentElement.clientHeight,window.addEventListener("resize",this._windowResizeListener)}_unbindUI(){var t,e,i,n;s(this,Ct,"m",kt).call(this)?(this._innerComponent&&(this._innerComponent.removeEventListener("click",this._clickIptSingleFrameMode),this._innerComponent.removeAttribute("title")),this._bgCamera&&(this._bgCamera.style.display="none")):this._stopLoading(),s(this,Ct,"m",Wt).call(this),null===(t=this._drawingLayerManager)||void 0===t||t.clearDrawingLayers(),null===(e=this._innerComponent)||void 0===e||e.removeElement("drawing-layer"),this._layerBaseCvs=null,this._drawingLayerOfMask=null,this._drawingLayerOfTip=null,null===(i=this._innerComponent)||void 0===i||i.remove(),this._innerComponent=null,o(this,Ot,null,"f"),null===(n=this._videoContainer)||void 0===n||n.remove(),this._videoContainer=null,this._selCam=null,this._selRsl=null,this._optGotRsl=null,this._btnClose=null,this._selMinLtr=null,this._optGotMinLtr=null,this._divScanArea=null,this._divScanLight=null,this._singleFrameInputContainer&&(this._singleFrameInputContainer.remove(),this._singleFrameInputContainer=null),window.ResizeObserver&&this._resizeObserver&&this._resizeObserver.disconnect(),window.removeEventListener("resize",this._windowResizeListener)}_startLoading(){this._bgLoading&&(this._bgLoading.style.display="",this._bgLoading.style.animationPlayState="")}_stopLoading(){this._bgLoading&&(this._bgLoading.style.display="none",this._bgLoading.style.animationPlayState="paused")}_renderCamerasInfo(t,e){if(this._selCam){let i;this._selCam.textContent="";for(let n of e){const e=document.createElement("option");e.value=n.deviceId,e.innerText=n.label,this._selCam.append(e),n.deviceId&&t&&t.deviceId==n.deviceId&&(i=e)}this._selCam.value=i?i.value:""}let i=this.UIElement;if(i=i.shadowRoot||i,i.querySelector(".dce-macro-use-mobile-native-like-ui")){let t=i.querySelector(".dce-mn-cameras");if(t){t.textContent="";for(let i of e){const e=document.createElement("div");e.classList.add("dce-mn-camera-option"),e.setAttribute("data-davice-id",i.deviceId),e.textContent=i.label,t.append(e)}}}}_renderResolutionInfo(t){this._optGotRsl&&(this._optGotRsl.setAttribute("data-width",t.width),this._optGotRsl.setAttribute("data-height",t.height),this._optGotRsl.innerText="got "+t.width+"x"+t.height,this._selRsl&&this._optGotRsl.parentNode==this._selRsl&&(this._selRsl.value="got"));{let e=this.UIElement;e=(null==e?void 0:e.shadowRoot)||e;let i=null==e?void 0:e.querySelector(".dce-mn-resolution-box");if(i){let e="";if(t&&t.width&&t.height){let i=Math.max(t.width,t.height),n=Math.min(t.width,t.height);e=n<=1080?n+"P":i<3e3?"2K":Math.round(i/1e3)+"K"}i.textContent=e}}}getVideoElement(){return s(this,Ot,"f")}isVideoLoaded(){return!(!s(this,Ot,"f")||!this.cameraEnhancer)&&this.cameraEnhancer.isOpen()}setVideoFit(t){if(t=t.toLowerCase(),!["contain","cover"].includes(t))throw new Error(`Unsupported value '${t}'.`);if(this.videoFit=t,!s(this,Ot,"f"))return;if(s(this,Ot,"f").style.objectFit=t,s(this,Ct,"m",kt).call(this))return;let e;this._updateVideoContainer();try{e=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}s(this,Ct,"m",Nt).call(this,e,this.getConvertedRegion()),this.updateDrawingLayers(e)}getVideoFit(){return this.videoFit}getContentDimensions(){var t,e,i,n;let r,o,a;if(s(this,Ct,"m",kt).call(this)?(r=null===(i=this._cvsSingleFrameMode)||void 0===i?void 0:i.width,o=null===(n=this._cvsSingleFrameMode)||void 0===n?void 0:n.height,a="contain"):(r=null===(t=s(this,Ot,"f"))||void 0===t?void 0:t.videoWidth,o=null===(e=s(this,Ot,"f"))||void 0===e?void 0:e.videoHeight,a=this.getVideoFit()),!r||!o)throw new Error("Invalid content dimensions.");return{width:r,height:o,objectFit:a}}updateConvertedRegion(t){const e=tt.convert(this.scanRegion,t.width,t.height);o(this,It,e,"f"),s(this,Et,"f")&&clearTimeout(s(this,Et,"f")),o(this,Et,setTimeout((()=>{let t;try{t=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}s(this,Ct,"m",Rt).call(this,t,e),s(this,Ct,"m",Nt).call(this,t,e)}),0),"f")}getConvertedRegion(){return s(this,It,"f")}setScanRegion(t){if(null!=t&&!e.isDSRect(t)&&!e.isRect(t))throw TypeError("Invalid 'region'.");let i;this.scanRegion=t?JSON.parse(JSON.stringify(t)):null;try{i=this.getContentDimensions()}catch(t){if("Invalid content dimensions."===(t.message||t))return;throw t}this.updateConvertedRegion(i)}getScanRegion(){return JSON.parse(JSON.stringify(this.scanRegion))}getVisibleRegionOfVideo(t){if(!this.isVideoLoaded())throw new Error("The video is not loaded.");const e=s(this,Ot,"f").videoWidth,i=s(this,Ot,"f").videoHeight,n=this.getVideoFit(),{width:r,height:o}=this._innerComponent.getBoundingClientRect();if(r<=0||o<=0)throw new Error("Unable to get video dimensions. Video may not be rendered on the page.");let a;const h={x:0,y:0,width:e,height:i,isMeasuredInPercentage:!1};if("cover"===n&&(r/o1){const t=s(this,Ot,"f").videoWidth,e=s(this,Ot,"f").videoHeight,{width:n,height:r}=this._innerComponent.getBoundingClientRect(),o=t/e;if(n/rt.remove())),s(this,Ft,"f").length=0}dispose(){this._unbindUI(),o(this,Pt,!0,"f")}}function Kt(t,e,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(t):n?n.value:e.get(t)}function Zt(t,e,i,n,r){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!r:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?r.call(t,i):r?r.value=i:e.set(t,i),i}St=new WeakMap,Tt=new WeakMap,Et=new WeakMap,Ot=new WeakMap,It=new WeakMap,At=new WeakMap,Dt=new WeakMap,Lt=new WeakMap,Mt=new WeakMap,Ft=new WeakMap,Pt=new WeakMap,Ct=new WeakSet,kt=function(){return"disabled"!==this._singleFrameMode},Rt=function(t,e){e&&(0!==e.x||0!==e.y||e.width!==t.width||e.height!==t.height)?this.setScanRegionMask(e.x,e.y,e.width,e.height):this.clearScanRegionMask()},Bt=function(){this._drawingLayerOfMask&&this._drawingLayerOfMask.setVisible(!0)},jt=function(){this._drawingLayerOfMask&&this._drawingLayerOfMask.setVisible(!1)},Vt=function(){this._divScanLight&&"none"==this._divScanLight.style.display&&(this._divScanLight.style.display="block")},Wt=function(){this._divScanLight&&(this._divScanLight.style.display="none")},Nt=function(t,e){if(!this._divScanArea)return;if(!this._innerComponent.getElement("content"))return;const{width:i,height:n,objectFit:r}=t;e||(e={x:0,y:0,width:i,height:n});const{width:s,height:o}=this._innerComponent.getBoundingClientRect();if(s<=0||o<=0)return;const a=s/o,h=i/n;let l,c,u,d,f=1;if("contain"===r)a66||"Safari"===ie.browser&&ie.version>13||"OPR"===ie.browser&&ie.version>43||"Edge"===ie.browser&&ie.version,"function"==typeof SuppressedError&&SuppressedError;class se{static multiply(t,e){const i=[];for(let n=0;n<3;n++){const r=e.slice(3*n,3*n+3);for(let e=0;e<3;e++){const n=[t[e],t[e+3],t[e+6]].reduce(((t,e,i)=>t+e*r[i]),0);i.push(n)}}return i}static identity(){return[1,0,0,0,1,0,0,0,1]}static translate(t,e,i){return se.multiply(t,[1,0,0,0,1,0,e,i,1])}static rotate(t,e){var i=Math.cos(e),n=Math.sin(e);return se.multiply(t,[i,-n,0,n,i,0,0,0,1])}static scale(t,e,i){return se.multiply(t,[e,0,0,0,i,0,0,0,1])}}var oe,ae,he,le,ce,ue,de;!function(t){t.GREY="grey",t.GREY32="grey32",t.RGBA="rgba",t.RBGA="rbga",t.GRBA="grba",t.GBRA="gbra",t.BRGA="brga",t.BGRA="bgra"}(oe||(oe={}));class fe{static get version(){return"1.1.3"}static get webGLSupported(){return void 0===fe._webGLSupported&&(fe._webGLSupported=!!document.createElement("canvas").getContext("webgl")),fe._webGLSupported}get disposed(){return ne(this,de,"f")}constructor(){ae.set(this,oe.RGBA),he.set(this,null),le.set(this,null),ce.set(this,null),this.useWebGLByDefault=!0,this._reusedCvs=null,this._reusedWebGLCvs=null,ue.set(this,null),de.set(this,!1)}drawImage(t,e,i,n,r,s){if(this.disposed)throw Error("The 'ImageDataGetter' instance has been disposed.");if(!i||!n)throw new Error("Invalid 'sourceWidth' or 'sourceHeight'.");if((null==s?void 0:s.bUseWebGL)&&!fe.webGLSupported)throw new Error("Your browser or machine may not support WebGL.");if(e instanceof HTMLVideoElement&&4!==e.readyState||e instanceof HTMLImageElement&&!e.complete)throw new Error("The source is not loaded.");let o;fe._onLog&&(o=Date.now(),fe._onLog("drawImage(), START: "+o));let a=0,h=0,l=i,c=n,u=0,d=0,f=i,g=n;r&&(r.sx&&(a=Math.round(r.sx)),r.sy&&(h=Math.round(r.sy)),r.sWidth&&(l=Math.round(r.sWidth)),r.sHeight&&(c=Math.round(r.sHeight)),r.dx&&(u=Math.round(r.dx)),r.dy&&(d=Math.round(r.dy)),r.dWidth&&(f=Math.round(r.dWidth)),r.dHeight&&(g=Math.round(r.dHeight)));let m,p=oe.RGBA;if((null==s?void 0:s.pixelFormat)&&(p=s.pixelFormat),(null==s?void 0:s.bufferContainer)&&(m=s.bufferContainer,m.length<4*f*g))throw new Error("Unexpected size of the 'bufferContainer'.");const v=t;if(!fe.webGLSupported||!(this.useWebGLByDefault&&null==(null==s?void 0:s.bUseWebGL)||(null==s?void 0:s.bUseWebGL))){fe._onLog&&fe._onLog("drawImage() in context2d."),v.ctx2d||(v.ctx2d=v.getContext("2d",{willReadFrequently:!0}));const t=v.ctx2d;if(!t)throw new Error("Unable to get 'CanvasRenderingContext2D' from canvas.");return(v.width{const e=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,e),t.bufferData(t.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),t.STATIC_DRAW);const i=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,i),t.bufferData(t.ARRAY_BUFFER,new Float32Array([0,0,0,1,1,0,1,0,0,1,1,1]),t.STATIC_DRAW),{positions:e,texCoords:i}},i=t=>{const e=t.createTexture();return t.bindTexture(t.TEXTURE_2D,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),e},n=(t,e)=>{const i=t.createProgram();if(e.forEach((e=>t.attachShader(i,e))),t.linkProgram(i),!t.getProgramParameter(i,t.LINK_STATUS)){const e=new Error(`An error occured linking the program: ${t.getProgramInfoLog(i)}.`);throw e.name="WebGLError",e}return t.useProgram(i),i},r=(t,e,i)=>{const n=t.createShader(e);if(t.shaderSource(n,i),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS)){const e=new Error(`An error occured compiling the shader: ${t.getShaderInfoLog(n)}.`);throw e.name="WebGLError",e}return n},s="\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\n\nuniform mat3 u_matrix;\nuniform mat3 u_textureMatrix;\n\nvarying vec2 v_texCoord;\nvoid main(void) {\ngl_Position = vec4((u_matrix * vec3(a_position, 1)).xy, 0, 1.0);\nv_texCoord = vec4((u_textureMatrix * vec3(a_texCoord, 1)).xy, 0, 1.0).xy;\n}";let o="rgb";["rgba","rbga","grba","gbra","brga","bgra"].includes(p)&&(o=p.slice(0,3));const a=`\nprecision mediump float;\nvarying vec2 v_texCoord;\nuniform sampler2D u_image;\nuniform float uColorFactor;\n\nvoid main() {\nvec4 sample = texture2D(u_image, v_texCoord);\nfloat grey = 0.3 * sample.r + 0.59 * sample.g + 0.11 * sample.b;\ngl_FragColor = vec4(sample.${o} * (1.0 - uColorFactor) + (grey * uColorFactor), sample.a);\n}`,h=n(t,[r(t,t.VERTEX_SHADER,s),r(t,t.FRAGMENT_SHADER,a)]);re(this,le,{program:h,attribLocations:{vertexPosition:t.getAttribLocation(h,"a_position"),texPosition:t.getAttribLocation(h,"a_texCoord")},uniformLocations:{uSampler:t.getUniformLocation(h,"u_image"),uColorFactor:t.getUniformLocation(h,"uColorFactor"),uMatrix:t.getUniformLocation(h,"u_matrix"),uTextureMatrix:t.getUniformLocation(h,"u_textureMatrix")}},"f"),re(this,ce,e(t),"f"),re(this,he,i(t),"f"),re(this,ae,p,"f")}const r=(t,e,i)=>{t.bindBuffer(t.ARRAY_BUFFER,e),t.enableVertexAttribArray(i),t.vertexAttribPointer(i,2,t.FLOAT,!1,0,0)},s=(t,e,i)=>{const n=t.RGBA,r=t.RGBA,s=t.UNSIGNED_BYTE;t.bindTexture(t.TEXTURE_2D,e),t.texImage2D(t.TEXTURE_2D,0,n,r,s,i)},y=(t,e,s,o)=>{t.clearColor(0,0,0,1),t.clearDepth(1),t.enable(t.DEPTH_TEST),t.depthFunc(t.LEQUAL),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT),r(t,s.positions,e.attribLocations.vertexPosition),r(t,s.texCoords,e.attribLocations.texPosition),t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,o),t.uniform1i(e.uniformLocations.uSampler,0),t.uniform1f(e.uniformLocations.uColorFactor,[oe.GREY,oe.GREY32].includes(p)?1:0);let m,v,y=se.translate(se.identity(),-1,-1);y=se.scale(y,2,2),y=se.scale(y,1/t.canvas.width,1/t.canvas.height),m=se.translate(y,u,d),m=se.scale(m,f,g),t.uniformMatrix3fv(e.uniformLocations.uMatrix,!1,m),v=se.translate(se.identity(),a/i,h/n),v=se.scale(v,l/i,c/n),t.uniformMatrix3fv(e.uniformLocations.uTextureMatrix,!1,v),t.drawArrays(t.TRIANGLES,0,6)};s(t,ne(this,he,"f"),e),y(t,ne(this,le,"f"),ne(this,ce,"f"),ne(this,he,"f"));const _=m||new Uint8Array(4*f*g);if(t.readPixels(u,d,f,g,t.RGBA,t.UNSIGNED_BYTE,_),255!==_[3]){fe._onLog&&fe._onLog("Incorrect WebGL drawing .");const t=new Error("WebGL error: incorrect drawing.");throw t.name="WebGLError",t}return fe._onLog&&fe._onLog("drawImage() in WebGL end. Costs: "+(Date.now()-o)),{context:t,pixelFormat:p===oe.GREY?oe.GREY32:p,bUseWebGL:!0}}catch(o){if(this.forceLoseContext(),null==(null==s?void 0:s.bUseWebGL))return fe._onLog&&fe._onLog("'drawImage()' in WebGL failed, try again in context2d."),this.useWebGLByDefault=!1,this.drawImage(t,e,i,n,r,Object.assign({},s,{bUseWebGL:!1}));throw o.name="WebGLError",o}}readCvsData(t,e,i){if(!(t instanceof CanvasRenderingContext2D||t instanceof WebGLRenderingContext))throw new Error("Invalid 'context'.");let n,r=0,s=0,o=t.canvas.width,a=t.canvas.height;if(e&&(e.x&&(r=e.x),e.y&&(s=e.y),e.width&&(o=e.width),e.height&&(a=e.height)),(null==i?void 0:i.length)<4*o*a)throw new Error("Unexpected size of the 'bufferContainer'.");if(t instanceof WebGLRenderingContext){const e=t;i?(e.readPixels(r,s,o,a,e.RGBA,e.UNSIGNED_BYTE,i),n=new Uint8Array(i.buffer,0,4*o*a)):(n=new Uint8Array(4*o*a),e.readPixels(r,s,o,a,e.RGBA,e.UNSIGNED_BYTE,n))}else if(t instanceof CanvasRenderingContext2D){let e;e=t.getImageData(r,s,o,a),n=new Uint8Array(e.data.buffer),null==i||i.set(n)}return n}transformPixelFormat(t,e,i,n){let r,s;if(fe._onLog&&(r=Date.now(),fe._onLog("transformPixelFormat(), START: "+r)),e===i)return fe._onLog&&fe._onLog("transformPixelFormat() end. Costs: "+(Date.now()-r)),n?new Uint8Array(t):t;const o=[oe.RGBA,oe.RBGA,oe.GRBA,oe.GBRA,oe.BRGA,oe.BGRA];if(o.includes(e))if(i===oe.GREY){s=new Uint8Array(t.length/4);for(let e=0;eh||e.sy+e.sHeight>l)throw new Error("Invalid position.");null===(n=fe._onLog)||void 0===n||n.call(fe,"getImageData(), START: "+(c=Date.now()));const d=Math.round(e.sx),f=Math.round(e.sy),g=Math.round(e.sWidth),m=Math.round(e.sHeight),p=Math.round(e.dWidth),v=Math.round(e.dHeight);let y,_=(null==i?void 0:i.pixelFormat)||oe.RGBA,w=null==i?void 0:i.bufferContainer;if(w&&(oe.GREY===_&&w.length{this.disposed||n.includes(t)&&t.apply(i.target,r)}),0);else try{s=t.apply(i.target,r)}catch(t){}if(!0===s)break}}}dispose(){Zt(this,me,!0,"f")}}ge=new WeakMap,me=new WeakMap;const ri=(t,e,i,n)=>{if(!i)return t;let r=e+Math.round((t-e)/i)*i;return n&&(r=Math.min(r,n)),r};class si{static get version(){return"2.0.18"}static isStorageAvailable(t){let e;try{e=window[t];const i="__storage_test__";return e.setItem(i,i),e.removeItem(i),!0}catch(t){return t instanceof DOMException&&(22===t.code||1014===t.code||"QuotaExceededError"===t.name||"NS_ERROR_DOM_QUOTA_REACHED"===t.name)&&e&&0!==e.length}}static findBestRearCameraInIOS(t,e){if(!t||!t.length)return null;let i=!1;if((null==e?void 0:e.getMainCamera)&&(i=!0),i){const e=["후면 카메라","背面カメラ","後置鏡頭","后置相机","กล้องด้านหลัง","बैक कैमरा","الكاميرا الخلفية","מצלמה אחורית","камера на задней панели","задня камера","задна камера","артқы камера","πίσω κάμερα","zadní fotoaparát","zadná kamera","tylny aparat","takakamera","stražnja kamera","rückkamera","kamera på baksidan","kamera belakang","kamera bak","hátsó kamera","fotocamera (posteriore)","câmera traseira","câmara traseira","cámara trasera","càmera posterior","caméra arrière","cameră spate","camera mặt sau","camera aan achterzijde","bagsidekamera","back camera","arka kamera"],i=t.find((t=>e.includes(t.label.toLowerCase())));return null==i?void 0:i.deviceId}{const e=["후면","背面","後置","后置","านหลัง","बैक","خلفية","אחורית","задняя","задней","задна","πίσω","zadní","zadná","tylny","trasera","traseira","taka","stražnja","spate","sau","rück","posteriore","posterior","hátsó","belakang","baksidan","bakre","bak","bagside","back","aртқы","arrière","arka","achterzijde"],i=["트리플","三镜头","三鏡頭","トリプル","สาม","ट्रिपल","ثلاثية","משולשת","үштік","тройная","тройна","потроєна","τριπλή","üçlü","trójobiektywowy","trostruka","trojný","trojitá","trippelt","trippel","triplă","triple","tripla","tiga","kolmois","ba camera"],n=["듀얼 와이드","雙廣角","双广角","デュアル広角","คู่ด้านหลังมุมกว้าง","ड्युअल वाइड","مزدوجة عريضة","כפולה רחבה","қос кең бұрышты","здвоєна ширококутна","двойная широкоугольная","двойна широкоъгълна","διπλή ευρεία","çift geniş","laajakulmainen kaksois","kép rộng mặt sau","kettős, széles látószögű","grande angular dupla","ganda","dwuobiektywowy","dwikamera","dvostruka široka","duální širokoúhlý","duálna širokouhlá","dupla grande-angular","dublă","dubbel vidvinkel","dual-weitwinkel","dual wide","dual con gran angular","dual","double","doppia con grandangolo","doble","dobbelt vidvinkelkamera"],r=t.filter((t=>{const i=t.label.toLowerCase();return e.some((t=>i.includes(t)))}));if(!r.length)return null;const s=r.find((t=>{const e=t.label.toLowerCase();return i.some((t=>e.includes(t)))}));if(s)return s.deviceId;const o=r.find((t=>{const e=t.label.toLowerCase();return n.some((t=>e.includes(t)))}));return o?o.deviceId:r[0].deviceId}}static findBestRearCamera(t,e){if(!t||!t.length)return null;if(["iPhone","iPad","Mac"].includes(ie.OS))return si.findBestRearCameraInIOS(t,{getMainCamera:null==e?void 0:e.getMainCameraInIOS});const i=["후","背面","背置","後面","後置","后面","后置","านหลัง","หลัง","बैक","خلفية","אחורית","задняя","задня","задней","задна","πίσω","zadní","zadná","tylny","trás","trasera","traseira","taka","stražnja","spate","sau","rück","rear","posteriore","posterior","hátsó","darrere","belakang","baksidan","bakre","bak","bagside","back","aртқы","arrière","arka","achterzijde"];for(let e of t){const t=e.label.toLowerCase();if(t&&i.some((e=>t.includes(e)))&&/\b0(\b)?/.test(t))return e.deviceId}return["Android","HarmonyOS"].includes(ie.OS)?t[t.length-1].deviceId:null}static findBestCamera(t,e,i){return t&&t.length?"environment"===e?this.findBestRearCamera(t,i):"user"===e?null:e?void 0:null:null}static async playVideo(t,e,i){if(!t)throw new Error("Invalid 'videoEl'.");if(!e)throw new Error("Invalid 'source'.");return new Promise((async(n,r)=>{let s;const o=()=>{t.removeEventListener("loadstart",c),t.removeEventListener("abort",u),t.removeEventListener("play",d),t.removeEventListener("error",f),t.removeEventListener("loadedmetadata",p)};let a=!1;const h=()=>{a=!0,s&&clearTimeout(s),o(),n(t)},l=t=>{s&&clearTimeout(s),o(),r(t)},c=()=>{t.addEventListener("abort",u,{once:!0})},u=()=>{const t=new Error("Video playing was interrupted.");t.name="AbortError",l(t)},d=()=>{h()},f=()=>{l(new Error(`Video error ${t.error.code}: ${t.error.message}.`))};let g;const m=new Promise((t=>{g=t})),p=()=>{g()};if(t.addEventListener("loadstart",c,{once:!0}),t.addEventListener("play",d,{once:!0}),t.addEventListener("error",f,{once:!0}),t.addEventListener("loadedmetadata",p,{once:!0}),"string"==typeof e||e instanceof String?t.src=e:t.srcObject=e,t.autoplay&&await new Promise((t=>{setTimeout(t,1e3)})),!a){i&&(s=setTimeout((()=>{o(),r(new Error("Failed to play video. Timeout."))}),i)),await m;try{await t.play(),h()}catch(t){console.warn("1st play error: "+((null==t?void 0:t.message)||t))}if(!a)try{await t.play(),h()}catch(t){console.warn("2rd play error: "+((null==t?void 0:t.message)||t)),l(t)}}}))}static async testCameraAccess(t){var e,i;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))return{ok:!1,errorName:"InsecureContext",errorMessage:"Insecure context."};let n;try{n=t?await navigator.mediaDevices.getUserMedia(t):await navigator.mediaDevices.getUserMedia({video:!0})}catch(t){return{ok:!1,errorName:t.name,errorMessage:t.message}}finally{null==n||n.getTracks().forEach((t=>{t.stop()}))}return{ok:!0}}get state(){if(!Kt(this,Ae,"f"))return"closed";if("pending"===Kt(this,Ae,"f"))return"opening";if("fulfilled"===Kt(this,Ae,"f"))return"opened";throw new Error("Unknown state.")}set ifSaveLastUsedCamera(t){t?si.isStorageAvailable("localStorage")?Zt(this,Te,!0,"f"):(Zt(this,Te,!1,"f"),console.warn("Local storage is unavailable")):Zt(this,Te,!1,"f")}get ifSaveLastUsedCamera(){return Kt(this,Te,"f")}get isVideoPlaying(){return!(!Kt(this,ye,"f")||Kt(this,ye,"f").paused)&&"opened"===this.state}set tapFocusEventBoundEl(t){var e,i,n;if(!(t instanceof HTMLElement)&&null!=t)throw new TypeError("Invalid 'element'.");null===(e=Kt(this,ke,"f"))||void 0===e||e.removeEventListener("click",Kt(this,Pe,"f")),null===(i=Kt(this,ke,"f"))||void 0===i||i.removeEventListener("touchend",Kt(this,Pe,"f")),null===(n=Kt(this,ke,"f"))||void 0===n||n.removeEventListener("touchmove",Kt(this,Fe,"f")),Zt(this,ke,t,"f"),t&&(window.TouchEvent&&["Android","HarmonyOS","iPhone","iPad"].includes(ie.OS)?(t.addEventListener("touchend",Kt(this,Pe,"f")),t.addEventListener("touchmove",Kt(this,Fe,"f"))):t.addEventListener("click",Kt(this,Pe,"f")))}get tapFocusEventBoundEl(){return Kt(this,ke,"f")}get disposed(){return Kt(this,Ye,"f")}constructor(t){var e,i;ve.add(this),ye.set(this,null),_e.set(this,void 0),we.set(this,(()=>{"opened"===this.state&&Kt(this,Ve,"f").fire("resumed",null,{target:this,async:!1})})),be.set(this,(()=>{Kt(this,Ve,"f").fire("paused",null,{target:this,async:!1})})),xe.set(this,void 0),Ce.set(this,void 0),this.cameraOpenTimeout=15e3,this._arrCameras=[],Se.set(this,void 0),Te.set(this,!1),this.ifSkipCameraInspection=!1,this.selectIOSRearMainCameraAsDefault=!1,Ee.set(this,void 0),Oe.set(this,!0),Ie.set(this,void 0),Ae.set(this,void 0),De.set(this,!1),this._focusParameters={maxTimeout:400,minTimeout:300,kTimeout:void 0,oldDistance:null,fds:null,isDoingFocus:0,taskBackToContinous:null,curFocusTaskId:0,focusCancelableTime:1500,defaultFocusAreaSizeRatio:6,focusBackToContinousTime:5e3,tapFocusMinDistance:null,tapFocusMaxDistance:null,focusArea:null,tempBufferContainer:null,defaultTempBufferContainerLenRatio:1/4},Le.set(this,!1),this._focusSupported=!0,this.calculateCoordInVideo=(t,e)=>{let i,n;const r=window.getComputedStyle(Kt(this,ye,"f")).objectFit,s=this.getResolution(),o=Kt(this,ye,"f").getBoundingClientRect(),a=o.left,h=o.top,{width:l,height:c}=Kt(this,ye,"f").getBoundingClientRect();if(l<=0||c<=0)throw new Error("Unable to get video dimensions. Video may not be rendered on the page.");const u=l/c,d=s.width/s.height;let f=1;if("contain"===r)d>u?(f=l/s.width,i=(t-a)/f,n=(e-h-(c-l/d)/2)/f):(f=c/s.height,n=(e-h)/f,i=(t-a-(l-c*d)/2)/f);else{if("cover"!==r)throw new Error("Unsupported object-fit.");d>u?(f=c/s.height,n=(e-h)/f,i=(t-a+(c*d-l)/2)/f):(f=l/s.width,i=(t-a)/f,n=(e-h+(l/d-c)/2)/f)}return{x:i,y:n}},Me.set(this,!1),Fe.set(this,(()=>{Zt(this,Me,!0,"f")})),Pe.set(this,(async t=>{var e;if(Kt(this,Me,"f"))return void Zt(this,Me,!1,"f");if(!Kt(this,Le,"f"))return;if(!this.isVideoPlaying)return;if(!Kt(this,_e,"f"))return;if(!this._focusSupported)return;if(!this._focusParameters.fds&&(this._focusParameters.fds=null===(e=this.getCameraCapabilities())||void 0===e?void 0:e.focusDistance,!this._focusParameters.fds))return void(this._focusSupported=!1);if(null==this._focusParameters.kTimeout&&(this._focusParameters.kTimeout=(this._focusParameters.maxTimeout-this._focusParameters.minTimeout)/(1/this._focusParameters.fds.min-1/this._focusParameters.fds.max)),1==this._focusParameters.isDoingFocus)return;let i,n;if(this._focusParameters.taskBackToContinous&&(clearTimeout(this._focusParameters.taskBackToContinous),this._focusParameters.taskBackToContinous=null),t instanceof MouseEvent)i=t.clientX,n=t.clientY;else{if(!(t instanceof TouchEvent))throw new Error("Unknown event type.");if(!t.changedTouches.length)return;i=t.changedTouches[0].clientX,n=t.changedTouches[0].clientY}const r=this.getResolution(),s=2*Math.round(Math.min(r.width,r.height)/this._focusParameters.defaultFocusAreaSizeRatio/2);let o;try{o=this.calculateCoordInVideo(i,n)}catch(t){}if(o.x<0||o.x>r.width||o.y<0||o.y>r.height)return;const a={x:o.x+"px",y:o.y+"px"},h=s+"px",l=h;let c;si._onLog&&(c=Date.now());try{await Kt(this,ve,"m",ti).call(this,a,h,l,this._focusParameters.tapFocusMinDistance,this._focusParameters.tapFocusMaxDistance)}catch(t){if(si._onLog)throw si._onLog(t),t}si._onLog&&si._onLog(`Tap focus costs: ${Date.now()-c} ms`),this._focusParameters.taskBackToContinous=setTimeout((()=>{var t;si._onLog&&si._onLog("Back to continuous focus."),null===(t=Kt(this,_e,"f"))||void 0===t||t.applyConstraints({advanced:[{focusMode:"continuous"}]}).catch((()=>{}))}),this._focusParameters.focusBackToContinousTime),Kt(this,Ve,"f").fire("tapfocus",null,{target:this,async:!1})})),ke.set(this,null),Re.set(this,1),Be.set(this,{x:0,y:0}),this.updateVideoElWhenSoftwareScaled=()=>{if(!Kt(this,ye,"f"))return;const t=Kt(this,Re,"f");if(t<1)throw new RangeError("Invalid scale value.");if(1===t)Kt(this,ye,"f").style.transform="";else{const e=window.getComputedStyle(Kt(this,ye,"f")).objectFit,i=Kt(this,ye,"f").videoWidth,n=Kt(this,ye,"f").videoHeight,{width:r,height:s}=Kt(this,ye,"f").getBoundingClientRect();if(r<=0||s<=0)throw new Error("Unable to get video dimensions. Video may not be rendered on the page.");const o=r/s,a=i/n;let h=1;"contain"===e?h=oo?s/(i/t):r/(n/t));const l=h*(1-1/t)*(i/2-Kt(this,Be,"f").x),c=h*(1-1/t)*(n/2-Kt(this,Be,"f").y);Kt(this,ye,"f").style.transform=`translate(${l}px, ${c}px) scale(${t})`}},je.set(this,(function(){if(!(this.data instanceof Uint8Array||this.data instanceof Uint8ClampedArray))throw new TypeError("Invalid data.");if("number"!=typeof this.width||this.width<=0)throw new Error("Invalid width.");if("number"!=typeof this.height||this.height<=0)throw new Error("Invalid height.");const t=document.createElement("canvas");let e;if(t.width=this.width,t.height=this.height,this.pixelFormat===oe.GREY){e=new Uint8ClampedArray(this.width*this.height*4);for(let t=0;t{var t,e;if("visible"===document.visibilityState){if(si._onLog&&si._onLog("document visible. video paused: "+(null===(t=Kt(this,ye,"f"))||void 0===t?void 0:t.paused)),"opening"==this.state||"opened"==this.state){let t=!1;if(!this.isVideoPlaying){si._onLog&&si._onLog("document visible. Not auto resume. 1st resume start.");try{await this.resume(),t=!0}catch(t){si._onLog&&si._onLog("document visible. 1st resume video failed, try open instead.")}t||await Kt(this,ve,"m",Ke).call(this)}if(await new Promise((t=>setTimeout(t,300))),!this.isVideoPlaying){si._onLog&&si._onLog("document visible. 1st open failed. 2rd resume start."),t=!1;try{await this.resume(),t=!0}catch(t){si._onLog&&si._onLog("document visible. 2rd resume video failed, try open instead.")}t||await Kt(this,ve,"m",Ke).call(this)}}}else"hidden"===document.visibilityState&&(si._onLog&&si._onLog("document hidden. video paused: "+(null===(e=Kt(this,ye,"f"))||void 0===e?void 0:e.paused)),"opening"==this.state||"opened"==this.state&&this.isVideoPlaying&&this.pause())})),Ye.set(this,!1),(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia)||setTimeout((()=>{si.onWarning&&si.onWarning("The browser is too old or the page is loaded from an insecure origin.")}),0),this.defaultConstraints={video:{facingMode:{ideal:"environment"}}},this.resetMediaStreamConstraints(),t instanceof HTMLVideoElement&&this.setVideoEl(t),Zt(this,Ve,new ni,"f"),this.imageDataGetter=new fe,document.addEventListener("visibilitychange",Kt(this,Ge,"f"))}setVideoEl(t){if(!(t&&t instanceof HTMLVideoElement))throw new Error("Invalid 'videoEl'.");t.addEventListener("play",Kt(this,we,"f")),t.addEventListener("pause",Kt(this,be,"f")),Zt(this,ye,t,"f")}getVideoEl(){return Kt(this,ye,"f")}releaseVideoEl(){var t,e;null===(t=Kt(this,ye,"f"))||void 0===t||t.removeEventListener("play",Kt(this,we,"f")),null===(e=Kt(this,ye,"f"))||void 0===e||e.removeEventListener("pause",Kt(this,be,"f")),Zt(this,ye,null,"f")}isVideoLoaded(){return!!Kt(this,ye,"f")&&4==Kt(this,ye,"f").readyState}async open(){if(Kt(this,Ie,"f")&&!Kt(this,Oe,"f")){if("pending"===Kt(this,Ae,"f"))return Kt(this,Ie,"f");if("fulfilled"===Kt(this,Ae,"f"))return}Kt(this,Ve,"f").fire("before:open",null,{target:this}),await Kt(this,ve,"m",Ke).call(this),Kt(this,Ve,"f").fire("played",null,{target:this,async:!1}),Kt(this,Ve,"f").fire("opened",null,{target:this,async:!1})}async close(){if("closed"===this.state)return;Kt(this,Ve,"f").fire("before:close",null,{target:this});const t=Kt(this,Ie,"f");if(Kt(this,ve,"m",Je).call(this),t&&"pending"===Kt(this,Ae,"f")){try{await t}catch(t){}if(!1===Kt(this,Oe,"f")){const t=new Error("'close()' was interrupted.");throw t.name="AbortError",t}}Zt(this,Ie,null,"f"),Zt(this,Ae,null,"f"),Kt(this,Ve,"f").fire("closed",null,{target:this,async:!1})}pause(){if(!this.isVideoLoaded())throw new Error("Video is not loaded.");if("opened"!==this.state)throw new Error("Camera or video is not open.");Kt(this,ye,"f").pause()}async resume(){if(!this.isVideoLoaded())throw new Error("Video is not loaded.");if("opened"!==this.state)throw new Error("Camera or video is not open.");await Kt(this,ye,"f").play()}async setCamera(t){if("string"!=typeof t)throw new TypeError("Invalid 'deviceId'.");if("object"!=typeof Kt(this,xe,"f").video&&(Kt(this,xe,"f").video={}),delete Kt(this,xe,"f").video.facingMode,Kt(this,xe,"f").video.deviceId={exact:t},!("closed"===this.state||this.videoSrc||"opening"===this.state&&Kt(this,Oe,"f"))){Kt(this,Ve,"f").fire("before:camera:change",[],{target:this,async:!1}),await Kt(this,ve,"m",Ze).call(this);try{this.resetSoftwareScale()}catch(t){}return Kt(this,Ce,"f")}}async switchToFrontCamera(t){if("object"!=typeof Kt(this,xe,"f").video&&(Kt(this,xe,"f").video={}),(null==t?void 0:t.resolution)&&(Kt(this,xe,"f").video.width={ideal:t.resolution.width},Kt(this,xe,"f").video.height={ideal:t.resolution.height}),delete Kt(this,xe,"f").video.deviceId,Kt(this,xe,"f").video.facingMode={exact:"user"},Zt(this,Se,null,"f"),!("closed"===this.state||this.videoSrc||"opening"===this.state&&Kt(this,Oe,"f"))){Kt(this,Ve,"f").fire("before:camera:change",[],{target:this,async:!1}),Kt(this,ve,"m",Ze).call(this);try{this.resetSoftwareScale()}catch(t){}return Kt(this,Ce,"f")}}getCamera(){var t;if(Kt(this,Ce,"f"))return Kt(this,Ce,"f");{let e=(null===(t=Kt(this,xe,"f").video)||void 0===t?void 0:t.deviceId)||"";if(e){e=e.exact||e.ideal||e;for(let t of this._arrCameras)if(t.deviceId===e)return JSON.parse(JSON.stringify(t))}return{deviceId:"",label:"",_checked:!1}}}async _getCameras(t){var e,i;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))throw new Error("Failed to access the camera because the browser is too old or the page is loaded from an insecure origin.");let n;if(t){let t=await navigator.mediaDevices.getUserMedia({video:!0});n=(await navigator.mediaDevices.enumerateDevices()).filter((t=>"videoinput"===t.kind)),t.getTracks().forEach((t=>{t.stop()}))}else n=(await navigator.mediaDevices.enumerateDevices()).filter((t=>"videoinput"===t.kind));const r=[],s=[];if(this._arrCameras)for(let t of this._arrCameras)t._checked&&s.push(t);for(let t=0;t"videoinput"===t.kind));return i&&i.length&&!i[0].deviceId?this._getCameras(!0):this._getCameras(!1)}async getAllCameras(){return this.getCameras()}async setResolution(t,e,i){if("number"!=typeof t||t<=0)throw new TypeError("Invalid 'width'.");if("number"!=typeof e||e<=0)throw new TypeError("Invalid 'height'.");if("object"!=typeof Kt(this,xe,"f").video&&(Kt(this,xe,"f").video={}),i?(Kt(this,xe,"f").video.width={exact:t},Kt(this,xe,"f").video.height={exact:e}):(Kt(this,xe,"f").video.width={ideal:t},Kt(this,xe,"f").video.height={ideal:e}),"closed"===this.state||this.videoSrc||"opening"===this.state&&Kt(this,Oe,"f"))return null;Kt(this,Ve,"f").fire("before:resolution:change",[],{target:this,async:!1}),await Kt(this,ve,"m",Ze).call(this);try{this.resetSoftwareScale()}catch(t){}const n=this.getResolution();return{width:n.width,height:n.height}}getResolution(){if("opened"===this.state&&this.videoSrc&&Kt(this,ye,"f"))return{width:Kt(this,ye,"f").videoWidth,height:Kt(this,ye,"f").videoHeight};if(Kt(this,_e,"f")){const t=Kt(this,_e,"f").getSettings();return{width:t.width,height:t.height}}if(this.isVideoLoaded())return{width:Kt(this,ye,"f").videoWidth,height:Kt(this,ye,"f").videoHeight};{const t={width:0,height:0};let e=Kt(this,xe,"f").video.width||0,i=Kt(this,xe,"f").video.height||0;return e&&(t.width=e.exact||e.ideal||e),i&&(t.height=i.exact||i.ideal||i),t}}async getResolutions(t){var e,i,n,r,s,o,a,h,l,c,u;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))throw new Error("Failed to access the camera because the browser is too old or the page is loaded from an insecure origin.");let d="";const f=(t,e)=>{const i=Kt(this,Ne,"f").get(t);if(!i||!i.length)return!1;for(let t of i)if(t.width===e.width&&t.height===e.height)return!0;return!1};if(this._mediaStream){d=null===(u=Kt(this,Ce,"f"))||void 0===u?void 0:u.deviceId;let e=Kt(this,Ne,"f").get(d);if(e&&!t)return JSON.parse(JSON.stringify(e));e=[],Kt(this,Ne,"f").set(d,e),Zt(this,De,!0,"f");try{for(let t of this.detectedResolutions){await Kt(this,_e,"f").applyConstraints({width:{ideal:t.width},height:{ideal:t.height}}),Kt(this,ve,"m",Xe).call(this);const i=Kt(this,_e,"f").getSettings(),n={width:i.width,height:i.height};f(d,n)||e.push({width:n.width,height:n.height})}}catch(t){throw Kt(this,ve,"m",Je).call(this),Zt(this,De,!1,"f"),t}try{await Kt(this,ve,"m",Ke).call(this)}catch(t){if("AbortError"===t.name)return e;throw t}finally{Zt(this,De,!1,"f")}return e}{const e=async(t,e,i)=>{const n={video:{deviceId:{exact:t},width:{ideal:e},height:{ideal:i}}};let r=null;try{r=await navigator.mediaDevices.getUserMedia(n)}catch(t){return null}if(!r)return null;const s=r.getVideoTracks();let o=null;try{const t=s[0].getSettings();o={width:t.width,height:t.height}}catch(t){const e=document.createElement("video");e.srcObject=r,o={width:e.videoWidth,height:e.videoHeight},e.srcObject=null}return s.forEach((t=>{t.stop()})),o};let i=(null===(s=null===(r=null===(n=Kt(this,xe,"f"))||void 0===n?void 0:n.video)||void 0===r?void 0:r.deviceId)||void 0===s?void 0:s.exact)||(null===(h=null===(a=null===(o=Kt(this,xe,"f"))||void 0===o?void 0:o.video)||void 0===a?void 0:a.deviceId)||void 0===h?void 0:h.ideal)||(null===(c=null===(l=Kt(this,xe,"f"))||void 0===l?void 0:l.video)||void 0===c?void 0:c.deviceId);if(!i)return[];let u=Kt(this,Ne,"f").get(i);if(u&&!t)return JSON.parse(JSON.stringify(u));u=[],Kt(this,Ne,"f").set(i,u);for(let t of this.detectedResolutions){const n=await e(i,t.width,t.height);n&&!f(i,n)&&u.push({width:n.width,height:n.height})}return u}}async setMediaStreamConstraints(t,e){if(!(t=>{return null!==t&&"[object Object]"===(e=t,Object.prototype.toString.call(e));var e})(t))throw new TypeError("Invalid 'mediaStreamConstraints'.");Zt(this,xe,JSON.parse(JSON.stringify(t)),"f"),Zt(this,Se,null,"f"),e&&Kt(this,ve,"m",Ze).call(this)}getMediaStreamConstraints(){return JSON.parse(JSON.stringify(Kt(this,xe,"f")))}resetMediaStreamConstraints(){Zt(this,xe,this.defaultConstraints?JSON.parse(JSON.stringify(this.defaultConstraints)):null,"f")}getCameraCapabilities(){if(!Kt(this,_e,"f")||"opened"!==this.state)throw new Error("Camera is not open.");return Kt(this,_e,"f").getCapabilities?Kt(this,_e,"f").getCapabilities():{}}getCameraSettings(){if(!Kt(this,_e,"f")||"opened"!==this.state)throw new Error("Camera is not open.");return Kt(this,_e,"f").getSettings()}async turnOnTorch(){if(!Kt(this,_e,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const t=this.getCameraCapabilities();if(!(null==t?void 0:t.torch))throw Error("Not supported.");await Kt(this,_e,"f").applyConstraints({advanced:[{torch:!0}]})}async turnOffTorch(){if(!Kt(this,_e,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const t=this.getCameraCapabilities();if(!(null==t?void 0:t.torch))throw Error("Not supported.");await Kt(this,_e,"f").applyConstraints({advanced:[{torch:!1}]})}async setColorTemperature(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(!Kt(this,_e,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const n=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.colorTemperature;if(!n)throw Error("Not supported.");return e&&(tn.max&&(t=n.max),t=ri(t,n.min,n.step,n.max)),await Kt(this,_e,"f").applyConstraints({advanced:[{colorTemperature:t,whiteBalanceMode:"manual"}]}),t}getColorTemperature(){return this.getCameraSettings().colorTemperature||0}async setExposureCompensation(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(!Kt(this,_e,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const n=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.exposureCompensation;if(!n)throw Error("Not supported.");return e&&(tn.max&&(t=n.max),t=ri(t,n.min,n.step,n.max)),await Kt(this,_e,"f").applyConstraints({advanced:[{exposureCompensation:t}]}),t}getExposureCompensation(){return this.getCameraSettings().exposureCompensation||0}async setFrameRate(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(!Kt(this,_e,"f")||"opened"!==this.state)throw new Error("Camera is not open.");let n=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.frameRate;if(!n)throw Error("Not supported.");e&&(tn.max&&(t=n.max));const r=this.getResolution();return await Kt(this,_e,"f").applyConstraints({width:{ideal:Math.max(r.width,r.height)},frameRate:t}),t}getFrameRate(){return this.getCameraSettings().frameRate}async setFocus(t,e){if("object"!=typeof t||Array.isArray(t)||null==t)throw new TypeError("Invalid 'settings'.");if(!Kt(this,_e,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const i=this.getCameraCapabilities(),n=null==i?void 0:i.focusMode,r=null==i?void 0:i.focusDistance;if(!n)throw Error("Not supported.");if("string"!=typeof t.mode)throw TypeError("Invalid 'mode'.");const s=t.mode.toLowerCase();if(!n.includes(s))throw Error("Unsupported focus mode.");if("manual"===s){if(!r)throw Error("Manual focus unsupported.");if(t.hasOwnProperty("distance")){let i=t.distance;e&&(ir.max&&(i=r.max),i=ri(i,r.min,r.step,r.max)),this._focusParameters.focusArea=null,await Kt(this,_e,"f").applyConstraints({advanced:[{focusMode:s,focusDistance:i}]})}else{if(!t.area)throw new Error("'distance' or 'area' should be specified in 'manual' mode.");{const e=t.area.centerPoint;let i=t.area.width,n=t.area.height;if(!i||!n){const t=this.getResolution();i||(i=2*Math.round(Math.min(t.width,t.height)/this._focusParameters.defaultFocusAreaSizeRatio/2)+"px"),n||(n=2*Math.round(Math.min(t.width,t.height)/this._focusParameters.defaultFocusAreaSizeRatio/2)+"px")}this._focusParameters.focusArea={centerPoint:{x:e.x,y:e.y},width:i,height:n},await Kt(this,ve,"m",ti).call(this,e,i,n)}}}else this._focusParameters.focusArea=null,await Kt(this,_e,"f").applyConstraints({advanced:[{focusMode:s}]})}getFocus(){const t=this.getCameraSettings(),e=t.focusMode;return e?"manual"===e?this._focusParameters.focusArea?{mode:"manual",area:JSON.parse(JSON.stringify(this._focusParameters.focusArea))}:{mode:"manual",distance:t.focusDistance}:{mode:e}:null}async enableTapToFocus(){Zt(this,Le,!0,"f")}disableTapToFocus(){Zt(this,Le,!1,"f")}isTapToFocusEnabled(){return Kt(this,Le,"f")}async setZoom(t){if("object"!=typeof t||Array.isArray(t)||null==t)throw new TypeError("Invalid 'settings'.");if("number"!=typeof t.factor)throw new TypeError("Illegal type of 'factor'.");if(t.factor<1)throw new RangeError("Invalid 'factor'.");if("opened"!==this.state)throw new Error("Video is not playing.");t.centerPoint?Kt(this,ve,"m",ei).call(this,t.centerPoint):this.resetScaleCenter();try{if(Kt(this,ve,"m",ii).call(this,Kt(this,Be,"f"))){const e=await this.setHardwareScale(t.factor,!0);let i=this.getHardwareScale();1==i&&1!=e&&(i=e),t.factor>i?this.setSoftwareScale(t.factor/i):this.setSoftwareScale(1)}else await this.setHardwareScale(1),this.setSoftwareScale(t.factor)}catch(e){const i=e.message||e;if("Not supported."!==i&&"Camera is not open."!==i)throw e;this.setSoftwareScale(t.factor)}}getZoom(){if("opened"!==this.state)throw new Error("Video is not playing.");let t=1;try{t=this.getHardwareScale()}catch(t){if("Camera is not open."!==(t.message||t))throw t}return{factor:t*Kt(this,Re,"f")}}async resetZoom(){await this.setZoom({factor:1})}async setHardwareScale(t,e){var i;if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(t<1)throw new RangeError("Invalid 'value'.");if(!Kt(this,_e,"f")||"opened"!==this.state)throw new Error("Camera is not open.");const n=null===(i=this.getCameraCapabilities())||void 0===i?void 0:i.zoom;if(!n)throw Error("Not supported.");return e&&(tn.max&&(t=n.max),t=ri(t,n.min,n.step,n.max)),await Kt(this,_e,"f").applyConstraints({advanced:[{zoom:t}]}),t}getHardwareScale(){return this.getCameraSettings().zoom||1}setSoftwareScale(t,e){if("number"!=typeof t)throw new TypeError("Invalid 'value'.");if(t<1)throw new RangeError("Invalid 'value'.");if("opened"!==this.state)throw new Error("Video is not playing.");e&&Kt(this,ve,"m",ei).call(this,e),Zt(this,Re,t,"f"),this.updateVideoElWhenSoftwareScaled()}getSoftwareScale(){return Kt(this,Re,"f")}resetScaleCenter(){if("opened"!==this.state)throw new Error("Video is not playing.");const t=this.getResolution();Zt(this,Be,{x:t.width/2,y:t.height/2},"f")}resetSoftwareScale(){this.setSoftwareScale(1),this.resetScaleCenter()}getFrameData(t){if(this.disposed)throw Error("The 'Camera' instance has been disposed.");if(!this.isVideoLoaded())return null;if(Kt(this,De,"f"))return null;const e=Date.now();si._onLog&&si._onLog("getFrameData() START: "+e);const i=Kt(this,ye,"f").videoWidth,n=Kt(this,ye,"f").videoHeight;let r={sx:0,sy:0,sWidth:i,sHeight:n,dWidth:i,dHeight:n};(null==t?void 0:t.position)&&(r=JSON.parse(JSON.stringify(t.position)));let s=oe.RGBA;(null==t?void 0:t.pixelFormat)&&(s=t.pixelFormat);let o=Kt(this,Re,"f");(null==t?void 0:t.scale)&&(o=t.scale);let a=Kt(this,Be,"f");if(null==t?void 0:t.scaleCenter){if("string"!=typeof t.scaleCenter.x||"string"!=typeof t.scaleCenter.y)throw new Error("Invalid scale center.");let e=0,r=0;if(t.scaleCenter.x.endsWith("px"))e=parseFloat(t.scaleCenter.x);else{if(!t.scaleCenter.x.endsWith("%"))throw new Error("Invalid scale center.");e=parseFloat(t.scaleCenter.x)/100*i}if(t.scaleCenter.y.endsWith("px"))r=parseFloat(t.scaleCenter.y);else{if(!t.scaleCenter.y.endsWith("%"))throw new Error("Invalid scale center.");r=parseFloat(t.scaleCenter.y)/100*n}if(isNaN(e)||isNaN(r))throw new Error("Invalid scale center.");a.x=Math.round(e),a.y=Math.round(r)}let h=null;if((null==t?void 0:t.bufferContainer)&&(h=t.bufferContainer),0==i||0==n)return null;1!==o&&(r.sWidth=Math.round(r.sWidth/o),r.sHeight=Math.round(r.sHeight/o),r.sx=Math.round((1-1/o)*a.x+r.sx/o),r.sy=Math.round((1-1/o)*a.y+r.sy/o));const l=this.imageDataGetter.getImageData(Kt(this,ye,"f"),r,{pixelFormat:s,bufferContainer:h});if(!l)return null;const c=Date.now();return si._onLog&&si._onLog("getFrameData() END: "+c),{data:l.data,width:l.width,height:l.height,pixelFormat:l.pixelFormat,timeSpent:c-e,timeStamp:c,toCanvas:Kt(this,je,"f")}}on(t,e){if(!Kt(this,We,"f").includes(t.toLowerCase()))throw new Error(`Event '${t}' does not exist.`);Kt(this,Ve,"f").on(t,e)}off(t,e){Kt(this,Ve,"f").off(t,e)}async dispose(){this.tapFocusEventBoundEl=null,await this.close(),this.releaseVideoEl(),Kt(this,Ve,"f").dispose(),this.imageDataGetter.dispose(),document.removeEventListener("visibilitychange",Kt(this,Ge,"f")),Zt(this,Ye,!0,"f")}}var oi,ai,hi,li,ci,ui,di,fi,gi,mi,pi,vi,yi,_i,wi,bi,xi,Ci,Si,Ti,Ei,Oi,Ii,Ai,Di,Li,Mi,Fi,Pi,ki,Ri,Bi,ji,Vi,Wi;ye=new WeakMap,_e=new WeakMap,we=new WeakMap,be=new WeakMap,xe=new WeakMap,Ce=new WeakMap,Se=new WeakMap,Te=new WeakMap,Ee=new WeakMap,Oe=new WeakMap,Ie=new WeakMap,Ae=new WeakMap,De=new WeakMap,Le=new WeakMap,Me=new WeakMap,Fe=new WeakMap,Pe=new WeakMap,ke=new WeakMap,Re=new WeakMap,Be=new WeakMap,je=new WeakMap,Ve=new WeakMap,We=new WeakMap,Ne=new WeakMap,Ue=new WeakMap,Ge=new WeakMap,Ye=new WeakMap,ve=new WeakSet,He=async function(){const t=this.getMediaStreamConstraints();if("boolean"==typeof t.video&&(t.video={}),t.video.deviceId);else if(Kt(this,Se,"f"))delete t.video.facingMode,t.video.deviceId={exact:Kt(this,Se,"f")};else if(this.ifSaveLastUsedCamera&&si.isStorageAvailable&&window.localStorage.getItem("dce_last_camera_id")){delete t.video.facingMode,t.video.deviceId={ideal:window.localStorage.getItem("dce_last_camera_id")};const e=JSON.parse(window.localStorage.getItem("dce_last_apply_width")),i=JSON.parse(window.localStorage.getItem("dce_last_apply_height"));e&&i&&(t.video.width=e,t.video.height=i)}else if(this.ifSkipCameraInspection);else{const e=async t=>{let e=null;return"environment"===t&&["Android","HarmonyOS","iPhone","iPad"].includes(ie.OS)?(await this._getCameras(!1),Kt(this,ve,"m",Xe).call(this),e=si.findBestCamera(this._arrCameras,"environment",{getMainCameraInIOS:this.selectIOSRearMainCameraAsDefault})):t||["Android","HarmonyOS","iPhone","iPad"].includes(ie.OS)||(await this._getCameras(!1),Kt(this,ve,"m",Xe).call(this),e=si.findBestCamera(this._arrCameras,null,{getMainCameraInIOS:this.selectIOSRearMainCameraAsDefault})),e};let i=t.video.facingMode;i instanceof Array&&i.length&&(i=i[0]),"object"==typeof i&&(i=i.exact||i.ideal);const n=await e(i);n&&(delete t.video.facingMode,t.video.deviceId={exact:n})}return t},Xe=function(){if(Kt(this,Oe,"f")){const t=new Error("The operation was interrupted.");throw t.name="AbortError",t}},ze=async function(t){var e,i;if(!(null===(i=null===(e=null===window||void 0===window?void 0:window.navigator)||void 0===e?void 0:e.mediaDevices)||void 0===i?void 0:i.getUserMedia))throw new Error("Failed to access the camera because the browser is too old or the page is loaded from an insecure origin.");let n;try{si._onLog&&si._onLog("======try getUserMedia========");let e=[0,500,1e3,2e3],i=null;const r=async t=>{for(let r of e){r&&(await new Promise((t=>setTimeout(t,r))),Kt(this,ve,"m",Xe).call(this));try{si._onLog&&si._onLog("ask "+JSON.stringify(t)),n=await navigator.mediaDevices.getUserMedia(t),Kt(this,ve,"m",Xe).call(this);break}catch(t){if("NotFoundError"===t.name||"NotAllowedError"===t.name||"AbortError"===t.name||"OverconstrainedError"===t.name)throw t;i=t,si._onLog&&si._onLog(t.message||t)}}};if(await r(t),n||"object"!=typeof t.video||(t.video.deviceId&&(delete t.video.deviceId,await r(t)),!n&&t.video.facingMode&&(delete t.video.facingMode,await r(t)),n||!t.video.width&&!t.video.height||(delete t.video.width,delete t.video.height,await r(t))),!n)throw i;return n}catch(t){throw null==n||n.getTracks().forEach((t=>{t.stop()})),"NotFoundError"===t.name&&(DOMException?t=new DOMException("No camera available, please use a device with an accessible camera.",t.name):(t=new Error("No camera available, please use a device with an accessible camera.")).name="NotFoundError"),t}},qe=function(){this._mediaStream&&(this._mediaStream.getTracks().forEach((t=>{t.stop()})),this._mediaStream=null),Zt(this,_e,null,"f")},Ke=async function(){Zt(this,Oe,!1,"f");const t=Zt(this,Ee,Symbol(),"f");if(Kt(this,Ie,"f")&&"pending"===Kt(this,Ae,"f")){try{await Kt(this,Ie,"f")}catch(t){}Kt(this,ve,"m",Xe).call(this)}if(t!==Kt(this,Ee,"f"))return;const e=Zt(this,Ie,(async()=>{Zt(this,Ae,"pending","f");try{if(this.videoSrc){if(!Kt(this,ye,"f"))throw new Error("'videoEl' should be set.");await si.playVideo(Kt(this,ye,"f"),this.videoSrc,this.cameraOpenTimeout),Kt(this,ve,"m",Xe).call(this)}else{let t=await Kt(this,ve,"m",He).call(this);Kt(this,ve,"m",qe).call(this);let e=await Kt(this,ve,"m",ze).call(this,t);await this._getCameras(!1),Kt(this,ve,"m",Xe).call(this);const i=()=>{const t=e.getVideoTracks();let i,n;if(t.length&&(i=t[0]),i){const t=i.getSettings();if(t)for(let e of this._arrCameras)if(t.deviceId===e.deviceId){e._checked=!0,e.label=i.label,n=e;break}}return n},n=Kt(this,xe,"f");if("object"==typeof n.video){let r=n.video.facingMode;if(r instanceof Array&&r.length&&(r=r[0]),"object"==typeof r&&(r=r.exact||r.ideal),!(Kt(this,Se,"f")||this.ifSaveLastUsedCamera&&si.isStorageAvailable&&window.localStorage.getItem("dce_last_camera_id")||this.ifSkipCameraInspection||n.video.deviceId)){const n=i(),s=si.findBestCamera(this._arrCameras,r,{getMainCameraInIOS:this.selectIOSRearMainCameraAsDefault});s&&s!=(null==n?void 0:n.deviceId)&&(e.getTracks().forEach((t=>{t.stop()})),t.video.deviceId={exact:s},e=await Kt(this,ve,"m",ze).call(this,t),Kt(this,ve,"m",Xe).call(this))}}const r=i();(null==r?void 0:r.deviceId)&&(Zt(this,Se,r&&r.deviceId,"f"),this.ifSaveLastUsedCamera&&si.isStorageAvailable&&(window.localStorage.setItem("dce_last_camera_id",Kt(this,Se,"f")),"object"==typeof t.video&&t.video.width&&t.video.height&&(window.localStorage.setItem("dce_last_apply_width",JSON.stringify(t.video.width)),window.localStorage.setItem("dce_last_apply_height",JSON.stringify(t.video.height))))),Kt(this,ye,"f")&&(await si.playVideo(Kt(this,ye,"f"),e,this.cameraOpenTimeout),Kt(this,ve,"m",Xe).call(this)),this._mediaStream=e;const s=e.getVideoTracks();(null==s?void 0:s.length)&&Zt(this,_e,s[0],"f"),Zt(this,Ce,r,"f")}}catch(t){throw Kt(this,ve,"m",Je).call(this),Zt(this,Ae,null,"f"),t}Zt(this,Ae,"fulfilled","f")})(),"f");return e},Ze=async function(){var t;if("closed"===this.state||this.videoSrc)return;const e=null===(t=Kt(this,Ce,"f"))||void 0===t?void 0:t.deviceId,i=this.getResolution();await Kt(this,ve,"m",Ke).call(this);const n=this.getResolution();e&&e!==Kt(this,Ce,"f").deviceId&&Kt(this,Ve,"f").fire("camera:changed",[Kt(this,Ce,"f").deviceId,e],{target:this,async:!1}),i.width==n.width&&i.height==n.height||Kt(this,Ve,"f").fire("resolution:changed",[{width:n.width,height:n.height},{width:i.width,height:i.height}],{target:this,async:!1}),Kt(this,Ve,"f").fire("played",null,{target:this,async:!1})},Je=function(){Kt(this,ve,"m",qe).call(this),Zt(this,Ce,null,"f"),Kt(this,ye,"f")&&(Kt(this,ye,"f").srcObject=null,this.videoSrc&&(Kt(this,ye,"f").pause(),Kt(this,ye,"f").currentTime=0)),Zt(this,Oe,!0,"f");try{this.resetSoftwareScale()}catch(t){}},Qe=async function t(e,i){const n=t=>{if(!Kt(this,_e,"f")||!this.isVideoPlaying||t.focusTaskId!=this._focusParameters.curFocusTaskId){Kt(this,_e,"f")&&this.isVideoPlaying||(this._focusParameters.isDoingFocus=0);const e=new Error(`Focus task ${t.focusTaskId} canceled.`);throw e.name="DeprecatedTaskError",e}1===this._focusParameters.isDoingFocus&&Date.now()-t.timeStart>this._focusParameters.focusCancelableTime&&(this._focusParameters.isDoingFocus=-1)};let r;i=ri(i,this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),await Kt(this,_e,"f").applyConstraints({advanced:[{focusMode:"manual",focusDistance:i}]}),n(e),r=null==this._focusParameters.oldDistance?this._focusParameters.kTimeout*Math.max(Math.abs(1/this._focusParameters.fds.min-1/i),Math.abs(1/this._focusParameters.fds.max-1/i))+this._focusParameters.minTimeout:this._focusParameters.kTimeout*Math.abs(1/this._focusParameters.oldDistance-1/i)+this._focusParameters.minTimeout,this._focusParameters.oldDistance=i,await new Promise((t=>{setTimeout(t,r)})),n(e);let s=e.focusL-e.focusW/2,o=e.focusT-e.focusH/2,a=e.focusW,h=e.focusH;const l=this.getResolution();s=Math.round(s),o=Math.round(o),a=Math.round(a),h=Math.round(h),a>l.width&&(a=l.width),h>l.height&&(h=l.height),s<0?s=0:s+a>l.width&&(s=l.width-a),o<0?o=0:o+h>l.height&&(o=l.height-h);const c=4*l.width*l.height*this._focusParameters.defaultTempBufferContainerLenRatio,u=4*a*h;let d=this._focusParameters.tempBufferContainer;if(d){const t=d.length;c>t&&c>=u?d=new Uint8Array(c):u>t&&u>=c&&(d=new Uint8Array(u))}else d=this._focusParameters.tempBufferContainer=new Uint8Array(Math.max(c,u));if(!this.imageDataGetter.getImageData(Kt(this,ye,"f"),{sx:s,sy:o,sWidth:a,sHeight:h,dWidth:a,dHeight:h},{pixelFormat:oe.RGBA,bufferContainer:d}))return Kt(this,ve,"m",t).call(this,e,i);const f=d;let g=0;for(let t=0,e=u-8;ta&&au)return await Kt(this,ve,"m",t).call(this,e,o,a,r,s,c,u)}else{let h=await Kt(this,ve,"m",Qe).call(this,e,c);if(a>h)return await Kt(this,ve,"m",t).call(this,e,o,a,r,s,c,h);if(a==h)return await Kt(this,ve,"m",t).call(this,e,o,a,c,h);let u=await Kt(this,ve,"m",Qe).call(this,e,l);if(u>a&&ao.width||h<0||h>o.height)throw new Error("Invalid 'centerPoint'.");let l=0;if(e.endsWith("px"))l=parseFloat(e);else{if(!e.endsWith("%"))throw new Error("Invalid 'width'.");l=parseFloat(e)/100*o.width}if(isNaN(l)||l<0)throw new Error("Invalid 'width'.");let c=0;if(i.endsWith("px"))c=parseFloat(i);else{if(!i.endsWith("%"))throw new Error("Invalid 'height'.");c=parseFloat(i)/100*o.height}if(isNaN(c)||c<0)throw new Error("Invalid 'height'.");if(1!==Kt(this,Re,"f")){const t=Kt(this,Re,"f"),e=Kt(this,Be,"f");l/=t,c/=t,a=(1-1/t)*e.x+a/t,h=(1-1/t)*e.y+h/t}if(!this._focusSupported)throw new Error("Manual focus unsupported.");if(!this._focusParameters.fds&&(this._focusParameters.fds=null===(s=this.getCameraCapabilities())||void 0===s?void 0:s.focusDistance,!this._focusParameters.fds))throw this._focusSupported=!1,new Error("Manual focus unsupported.");null==this._focusParameters.kTimeout&&(this._focusParameters.kTimeout=(this._focusParameters.maxTimeout-this._focusParameters.minTimeout)/(1/this._focusParameters.fds.min-1/this._focusParameters.fds.max)),this._focusParameters.isDoingFocus=1;const u={focusL:a,focusT:h,focusW:l,focusH:c,focusTaskId:++this._focusParameters.curFocusTaskId,timeStart:Date.now()},d=async(t,e,i)=>{try{(null==e||ethis._focusParameters.fds.max)&&(i=this._focusParameters.fds.max),this._focusParameters.oldDistance=null;let n=ri(Math.sqrt(i*(e||this._focusParameters.fds.step)),this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),r=ri(Math.sqrt((e||this._focusParameters.fds.step)*n),this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),s=ri(Math.sqrt(n*i),this._focusParameters.fds.min,this._focusParameters.fds.step,this._focusParameters.fds.max),o=await Kt(this,ve,"m",Qe).call(this,t,s),a=await Kt(this,ve,"m",Qe).call(this,t,r),h=await Kt(this,ve,"m",Qe).call(this,t,n);if(a>h&&ho&&a>o){let e=await Kt(this,ve,"m",Qe).call(this,t,i);const r=await Kt(this,ve,"m",$e).call(this,t,n,h,i,e,s,o);return this._focusParameters.isDoingFocus=0,r}if(a==h&&hh){const e=await Kt(this,ve,"m",$e).call(this,t,n,h,s,o);return this._focusParameters.isDoingFocus=0,e}return d(t,e,i)}catch(t){if("DeprecatedTaskError"!==t.name)throw t}};return d(u,n,r)},ei=function(t){if("opened"!==this.state)throw new Error("Video is not playing.");if(!t||"string"!=typeof t.x||"string"!=typeof t.y)throw new Error("Invalid 'center'.");const e=this.getResolution();let i=0,n=0;if(t.x.endsWith("px"))i=parseFloat(t.x);else{if(!t.x.endsWith("%"))throw new Error("Invalid scale center.");i=parseFloat(t.x)/100*e.width}if(t.y.endsWith("px"))n=parseFloat(t.y);else{if(!t.y.endsWith("%"))throw new Error("Invalid scale center.");n=parseFloat(t.y)/100*e.height}if(isNaN(i)||isNaN(n))throw new Error("Invalid scale center.");Zt(this,Be,{x:i,y:n},"f")},ii=function(t){if("opened"!==this.state)throw new Error("Video is not playing.");const e=this.getResolution();return t&&t.x==e.width/2&&t.y==e.height/2},si.browserInfo=ie,si.onWarning=null===(pe=null===window||void 0===window?void 0:window.console)||void 0===pe?void 0:pe.warn;class Ni{constructor(t){oi.add(this),ai.set(this,void 0),hi.set(this,0),li.set(this,void 0),ci.set(this,0),ui.set(this,!1),o(this,ai,t,"f")}startCharging(){s(this,ui,"f")||(Ni._onLog&&Ni._onLog("start charging."),s(this,oi,"m",fi).call(this),o(this,ui,!0,"f"))}stopCharging(){s(this,li,"f")&&clearTimeout(s(this,li,"f")),s(this,ui,"f")&&(Ni._onLog&&Ni._onLog("stop charging."),o(this,hi,Date.now()-s(this,ci,"f"),"f"),o(this,ui,!1,"f"))}}ai=new WeakMap,hi=new WeakMap,li=new WeakMap,ci=new WeakMap,ui=new WeakMap,oi=new WeakSet,di=function(){e.CoreModule.cfd(1),Ni._onLog&&Ni._onLog("charge 1.")},fi=function t(){0==s(this,hi,"f")&&s(this,oi,"m",di).call(this),o(this,ci,Date.now(),"f"),s(this,li,"f")&&clearTimeout(s(this,li,"f")),o(this,li,setTimeout((()=>{o(this,hi,0,"f"),s(this,oi,"m",t).call(this)}),s(this,ai,"f")-s(this,hi,"f")),"f")};class Ui{static beep(){if(!this.allowBeep)return;if(!this.beepSoundSource)return;let t,e=Date.now();if(!(e-s(this,gi,"f",vi)<100)){if(o(this,gi,e,"f",vi),s(this,gi,"f",mi).size&&(t=s(this,gi,"f",mi).values().next().value,this.beepSoundSource==t.src?(s(this,gi,"f",mi).delete(t),t.play()):t=null),!t)if(s(this,gi,"f",pi).size<16){t=new Audio(this.beepSoundSource);let e=null,i=()=>{t.removeEventListener("loadedmetadata",i),t.play(),e=setTimeout((()=>{s(this,gi,"f",pi).delete(t)}),2e3*t.duration)};t.addEventListener("loadedmetadata",i),t.addEventListener("ended",(()=>{null!=e&&(clearTimeout(e),e=null),t.pause(),t.currentTime=0,s(this,gi,"f",pi).delete(t),s(this,gi,"f",mi).add(t)}))}else s(this,gi,"f",yi)||(o(this,gi,!0,"f",yi),console.warn("The requested audio tracks exceed 16 and will not be played."));t&&s(this,gi,"f",pi).add(t)}}static vibrate(){if(this.allowVibrate){if(!navigator||!navigator.vibrate)throw new Error("Not supported.");navigator.vibrate(Ui.vibrateDuration)}}}gi=Ui,mi={value:new Set},pi={value:new Set},vi={value:0},yi={value:!1},Ui.allowBeep=!0,Ui.beepSoundSource="data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA/+M4wAAAAAAAAAAAAEluZm8AAAAPAAAABQAAAkAAgICAgICAgICAgICAgICAgICAgKCgoKCgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4ODg4P//////////////////////////AAAAAExhdmM1OC41NAAAAAAAAAAAAAAAACQEUQAAAAAAAAJAk0uXRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MYxAANQAbGeUEQAAHZYZ3fASqD4P5TKBgocg+Bw/8+CAYBA4XB9/4EBAEP4nB9+UOf/6gfUCAIKyjgQ/Kf//wfswAAAwQA/+MYxAYOqrbdkZGQAMA7DJLCsQxNOij///////////+tv///3RWiZGBEhsf/FO/+LoCSFs1dFVS/g8f/4Mhv0nhqAieHleLy/+MYxAYOOrbMAY2gABf/////////////////usPJ66R0wI4boY9/8jQYg//g2SPx1M0N3Z0kVJLIs///Uw4aMyvHJJYmPBYG/+MYxAgPMALBucAQAoGgaBoFQVBUFQWDv6gZBUFQVBUGgaBr5YSgqCoKhIGg7+IQVBUFQVBoGga//SsFSoKnf/iVTEFNRTMu/+MYxAYAAANIAAAAADEwMFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",Ui.allowVibrate=!0,Ui.vibrateDuration=300;const Gi=new Map([[oe.GREY,e.EnumImagePixelFormat.IPF_GRAYSCALED],[oe.RGBA,e.EnumImagePixelFormat.IPF_ABGR_8888]]),Yi="function"==typeof BigInt?{BF_NULL:BigInt(0),BF_ALL:BigInt(0x10000000000000000),BF_DEFAULT:BigInt(4265345023),BF_ONED:BigInt(3147775),BF_GS1_DATABAR:BigInt(260096),BF_CODE_39:BigInt(1),BF_CODE_128:BigInt(2),BF_CODE_93:BigInt(4),BF_CODABAR:BigInt(8),BF_ITF:BigInt(16),BF_EAN_13:BigInt(32),BF_EAN_8:BigInt(64),BF_UPC_A:BigInt(128),BF_UPC_E:BigInt(256),BF_INDUSTRIAL_25:BigInt(512),BF_CODE_39_EXTENDED:BigInt(1024),BF_GS1_DATABAR_OMNIDIRECTIONAL:BigInt(2048),BF_GS1_DATABAR_TRUNCATED:BigInt(4096),BF_GS1_DATABAR_STACKED:BigInt(8192),BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL:BigInt(16384),BF_GS1_DATABAR_EXPANDED:BigInt(32768),BF_GS1_DATABAR_EXPANDED_STACKED:BigInt(65536),BF_GS1_DATABAR_LIMITED:BigInt(131072),BF_PATCHCODE:BigInt(262144),BF_CODE_32:BigInt(16777216),BF_PDF417:BigInt(33554432),BF_QR_CODE:BigInt(67108864),BF_DATAMATRIX:BigInt(134217728),BF_AZTEC:BigInt(268435456),BF_MAXICODE:BigInt(536870912),BF_MICRO_QR:BigInt(1073741824),BF_MICRO_PDF417:BigInt(524288),BF_GS1_COMPOSITE:BigInt(2147483648),BF_MSI_CODE:BigInt(1048576),BF_CODE_11:BigInt(2097152),BF_TWO_DIGIT_ADD_ON:BigInt(4194304),BF_FIVE_DIGIT_ADD_ON:BigInt(8388608),BF_MATRIX_25:BigInt(68719476736),BF_POSTALCODE:BigInt(0x3f0000000000000),BF_NONSTANDARD_BARCODE:BigInt(4294967296),BF_USPSINTELLIGENTMAIL:BigInt(4503599627370496),BF_POSTNET:BigInt(9007199254740992),BF_PLANET:BigInt(0x40000000000000),BF_AUSTRALIANPOST:BigInt(0x80000000000000),BF_RM4SCC:BigInt(72057594037927940),BF_KIX:BigInt(0x200000000000000),BF_DOTCODE:BigInt(8589934592),BF_PHARMACODE_ONE_TRACK:BigInt(17179869184),BF_PHARMACODE_TWO_TRACK:BigInt(34359738368),BF_PHARMACODE:BigInt(51539607552)}:{BF_NULL:"0x00",BF_ALL:"0xFFFFFFFFFFFFFFFF",BF_DEFAULT:"0xFE3BFFFF",BF_ONED:"0x003007FF",BF_GS1_DATABAR:"0x0003F800",BF_CODE_39:"0x1",BF_CODE_128:"0x2",BF_CODE_93:"0x4",BF_CODABAR:"0x8",BF_ITF:"0x10",BF_EAN_13:"0x20",BF_EAN_8:"0x40",BF_UPC_A:"0x80",BF_UPC_E:"0x100",BF_INDUSTRIAL_25:"0x200",BF_CODE_39_EXTENDED:"0x400",BF_GS1_DATABAR_OMNIDIRECTIONAL:"0x800",BF_GS1_DATABAR_TRUNCATED:"0x1000",BF_GS1_DATABAR_STACKED:"0x2000",BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL:"0x4000",BF_GS1_DATABAR_EXPANDED:"0x8000",BF_GS1_DATABAR_EXPANDED_STACKED:"0x10000",BF_GS1_DATABAR_LIMITED:"0x20000",BF_PATCHCODE:"0x00040000",BF_CODE_32:"0x01000000",BF_PDF417:"0x02000000",BF_QR_CODE:"0x04000000",BF_DATAMATRIX:"0x08000000",BF_AZTEC:"0x10000000",BF_MAXICODE:"0x20000000",BF_MICRO_QR:"0x40000000",BF_MICRO_PDF417:"0x00080000",BF_GS1_COMPOSITE:"0x80000000",BF_MSI_CODE:"0x100000",BF_CODE_11:"0x200000",BF_TWO_DIGIT_ADD_ON:"0x400000",BF_FIVE_DIGIT_ADD_ON:"0x800000",BF_MATRIX_25:"0x1000000000",BF_POSTALCODE:"0x3F0000000000000",BF_NONSTANDARD_BARCODE:"0x100000000",BF_USPSINTELLIGENTMAIL:"0x10000000000000",BF_POSTNET:"0x20000000000000",BF_PLANET:"0x40000000000000",BF_AUSTRALIANPOST:"0x80000000000000",BF_RM4SCC:"0x100000000000000",BF_KIX:"0x200000000000000",BF_DOTCODE:"0x200000000",BF_PHARMACODE_ONE_TRACK:"0x400000000",BF_PHARMACODE_TWO_TRACK:"0x800000000",BF_PHARMACODE:"0xC00000000"};class Hi extends e.ImageSourceAdapter{static set _onLog(t){o(Hi,wi,t,"f",bi),si._onLog=t,Ni._onLog=t}static get _onLog(){return s(Hi,wi,"f",bi)}static async detectEnvironment(){return await(async()=>({wasm:d,worker:f,getUserMedia:g,camera:await m(),browser:u.browser,version:u.version,OS:u.OS}))()}static async testCameraAccess(){const t=await si.testCameraAccess();return t.ok?{ok:!0,message:"Successfully accessed the camera."}:"InsecureContext"===t.errorName?{ok:!1,message:"Insecure context."}:"OverconstrainedError"===t.errorName||"NotFoundError"===t.errorName?{ok:!1,message:"No camera detected."}:"NotAllowedError"===t.errorName?{ok:!1,message:"No permission to access camera."}:"AbortError"===t.errorName?{ok:!1,message:"Some problem occurred which prevented the device from being used."}:"NotReadableError"===t.errorName?{ok:!1,message:"A hardware error occurred."}:"SecurityError"===t.errorName?{ok:!1,message:"User media support is disabled."}:{ok:!1,message:t.errorMessage}}static async createInstance(t){var i,n;if(t&&!(t instanceof qt))throw new TypeError("Invalid view.");if(null===(i=e.mapPackageRegister.license)||void 0===i?void 0:i.LicenseManager){if(!(null===(n=e.mapPackageRegister.license)||void 0===n?void 0:n.LicenseManager.bCallInitLicense))throw new Error("License is not set.");await e.CoreModule.loadWasm(["license"]),await e.mapPackageRegister.license.dynamsoft()}const r=new Hi(t);return Hi.onWarning&&(location&&"file:"===location.protocol?setTimeout((()=>{Hi.onWarning&&Hi.onWarning({id:1,message:"The page is opened over file:// and Dynamsoft Camera Enhancer may not work properly. Please open the page via https://."})}),0):!1!==window.isSecureContext&&navigator&&navigator.mediaDevices&&navigator.mediaDevices.getUserMedia||setTimeout((()=>{Hi.onWarning&&Hi.onWarning({id:2,message:"Dynamsoft Camera Enhancer may not work properly in a non-secure context. Please open the page via https://."})}),0)),r}get video(){return this.cameraManager.getVideoEl()}set videoSrc(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraView&&(this.cameraView._hideDefaultSelection=!0),this.cameraManager.videoSrc=t}get videoSrc(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.videoSrc}set ifSaveLastUsedCamera(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraManager.ifSaveLastUsedCamera=t}get ifSaveLastUsedCamera(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.ifSaveLastUsedCamera}set ifSkipCameraInspection(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraManager.ifSkipCameraInspection=t}get ifSkipCameraInspection(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.ifSkipCameraInspection}set cameraOpenTimeout(t){if(!this.cameraManager)throw new Error("Camera manager is null.");this.cameraManager.cameraOpenTimeout=t}get cameraOpenTimeout(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.cameraOpenTimeout}set singleFrameMode(t){if(!["disabled","image","camera"].includes(t))throw new Error("Invalid value.");if(this.isOpen())throw new Error("It is not allowed to change `singleFrameMode` when the camera is open.");o(this,Si,t,"f")}get singleFrameMode(){return s(this,Si,"f")}get _isFetchingStarted(){return s(this,Di,"f")}get disposed(){return s(this,ki,"f")}constructor(t){if(super(),_i.add(this),xi.set(this,"closed"),Ci.set(this,void 0),this.isTorchOn=void 0,Si.set(this,void 0),this._onCameraSelChange=async()=>{this.isOpen()&&this.cameraView&&!this.cameraView.disposed&&await this.selectCamera(this.cameraView._selCam.value)},this._onResolutionSelChange=async()=>{if(!this.isOpen())return;if(!this.cameraView||this.cameraView.disposed)return;let t,e;if(this.cameraView._selRsl&&-1!=this.cameraView._selRsl.selectedIndex){let i=this.cameraView._selRsl.options[this.cameraView._selRsl.selectedIndex];t=parseInt(i.getAttribute("data-width")),e=parseInt(i.getAttribute("data-height"))}await this.setResolution({width:t,height:e})},this._onCloseBtnClick=async()=>{this.isOpen()&&this.cameraView&&!this.cameraView.disposed&&this.close()},Ti.set(this,((t,i,n,r)=>{const o=Date.now(),a={sx:r.x,sy:r.y,sWidth:r.width,sHeight:r.height,dWidth:r.width,dHeight:r.height},h=Math.max(a.dWidth,a.dHeight);if(this.canvasSizeLimit&&h>this.canvasSizeLimit){const t=this.canvasSizeLimit/h;a.dWidth>a.dHeight?(a.dWidth=this.canvasSizeLimit,a.dHeight=Math.round(a.dHeight*t)):(a.dWidth=Math.round(a.dWidth*t),a.dHeight=this.canvasSizeLimit)}const l=this.cameraManager.imageDataGetter.getImageData(t,a,{pixelFormat:this.getPixelFormat()===e.EnumImagePixelFormat.IPF_GRAYSCALED?oe.GREY:oe.RGBA});let c=null;if(l){const t=Date.now();let h;if(l.pixelFormat===oe.GREY)h=l.width;else h=4*l.width;let u=!0;0===a.sx&&0===a.sy&&a.sWidth===i&&a.sHeight===n&&(u=!1),c={bytes:l.data,width:l.width,height:l.height,stride:h,format:Gi.get(l.pixelFormat),tag:{imageId:this._imageId==Number.MAX_VALUE?this._imageId=0:++this._imageId,type:e.EnumImageTagType.ITT_FILE_IMAGE,isCropped:u,cropRegion:{left:r.x,top:r.y,right:r.x+r.width,bottom:r.y+r.height,isMeasuredInPercentage:!1},originalWidth:i,originalHeight:n,currentWidth:l.width,currentHeight:l.height,timeSpent:t-o,timeStamp:t},toCanvas:s(this,Ei,"f"),isDCEFrame:!0}}return c})),this._onSingleFrameAcquired=t=>{let e;e=this.cameraView?this.cameraView.getConvertedRegion():tt.convert(s(this,Ii,"f"),t.width,t.height),e||(e={x:0,y:0,width:t.width,height:t.height});const i=s(this,Ti,"f").call(this,t,t.width,t.height,e);s(this,Ci,"f").fire("singleFrameAcquired",[i],{async:!1,copy:!1})},Ei.set(this,(function(){if(!(this.bytes instanceof Uint8Array||this.bytes instanceof Uint8ClampedArray))throw new TypeError("Invalid bytes.");if("number"!=typeof this.width||this.width<=0)throw new Error("Invalid width.");if("number"!=typeof this.height||this.height<=0)throw new Error("Invalid height.");const t=document.createElement("canvas");let i;t.width=this.width,t.height=this.height;if(this.format===e.EnumImagePixelFormat.IPF_GRAYSCALED){i=new Uint8ClampedArray(this.width*this.height*4);for(let t=0;t{if(!this.video)return;const t=this.cameraManager.getSoftwareScale();if(t<1)throw new RangeError("Invalid scale value.");this.cameraView&&!this.cameraView.disposed?(this.video.style.transform=1===t?"":`scale(${t})`,this.cameraView._updateVideoContainer()):this.video.style.transform=1===t?"":`scale(${t})`},["iPhone","iPad","Android","HarmonyOS"].includes(u.OS)?this.cameraManager.setResolution(1280,720):this.cameraManager.setResolution(1920,1080),navigator&&navigator.mediaDevices&&navigator.mediaDevices.getUserMedia?this.singleFrameMode="disabled":this.singleFrameMode="image",t&&(this.setCameraView(t),t.cameraEnhancer=this),this._on("before:camera:change",(()=>{s(this,Pi,"f").stopCharging();const t=this.cameraView;t&&!t.disposed&&(t._startLoading(),t.clearAllInnerDrawingItems())})),this._on("camera:changed",(()=>{this.clearBuffer()})),this._on("before:resolution:change",(()=>{const t=this.cameraView;t&&!t.disposed&&(t._startLoading(),t.clearAllInnerDrawingItems())})),this._on("resolution:changed",(()=>{this.clearBuffer(),t.eventHandler.fire("content:updated",null,{async:!1})})),this._on("paused",(()=>{s(this,Pi,"f").stopCharging();const t=this.cameraView;t&&t.disposed})),this._on("resumed",(()=>{const t=this.cameraView;t&&t.disposed})),this._on("tapfocus",(()=>{s(this,Mi,"f").tapToFocus&&s(this,Pi,"f").startCharging()})),this._intermediateResultReceiver={},this._intermediateResultReceiver.onTaskResultsReceived=async(t,i)=>{var n,r,o,a;if(s(this,_i,"m",Ri).call(this)||!this.isOpen()||this.isPaused())return;const h=t.intermediateResultUnits;Hi._onLog&&(Hi._onLog("intermediateResultUnits:"),Hi._onLog(h));let l=!1,c=!1;for(let t of h){if(t.unitType===e.EnumIntermediateResultUnitType.IRUT_DECODED_BARCODES&&t.decodedBarcodes.length){l=!0;break}t.unitType===e.EnumIntermediateResultUnitType.IRUT_LOCALIZED_BARCODES&&t.localizedBarcodes.length&&(c=!0)}if(Hi._onLog&&(Hi._onLog("hasLocalizedBarcodes:"),Hi._onLog(c)),s(this,Mi,"f").autoZoom||s(this,Mi,"f").enhancedFocus)if(l)s(this,Fi,"f").autoZoomInFrameArray.length=0,s(this,Fi,"f").autoZoomOutFrameCount=0,s(this,Fi,"f").frameArrayInIdealZoom.length=0,s(this,Fi,"f").autoFocusFrameArray.length=0;else{const t=async t=>{await this.setZoom(t),s(this,Mi,"f").autoZoom&&s(this,Pi,"f").startCharging()},i=async t=>{await this.setFocus(t),s(this,Mi,"f").enhancedFocus&&s(this,Pi,"f").startCharging()};if(c){const l=h[0].originalImageTag,c=(null===(n=l.cropRegion)||void 0===n?void 0:n.left)||0,u=(null===(r=l.cropRegion)||void 0===r?void 0:r.top)||0,d=(null===(o=l.cropRegion)||void 0===o?void 0:o.right)?l.cropRegion.right-c:l.originalWidth,f=(null===(a=l.cropRegion)||void 0===a?void 0:a.bottom)?l.cropRegion.bottom-u:l.originalHeight,g=l.currentWidth,m=l.currentHeight;let p;{let t,i,n,r,o;{const t=this.video.videoWidth*(1-s(this,Fi,"f").autoZoomDetectionArea)/2,e=this.video.videoWidth*(1+s(this,Fi,"f").autoZoomDetectionArea)/2,i=e,n=t,r=this.video.videoHeight*(1-s(this,Fi,"f").autoZoomDetectionArea)/2,a=r,h=this.video.videoHeight*(1+s(this,Fi,"f").autoZoomDetectionArea)/2;o=[{x:t,y:r},{x:e,y:a},{x:i,y:h},{x:n,y:h}]}Hi._onLog&&(Hi._onLog("detectionArea:"),Hi._onLog(o));const a=[];{const t=(t,e)=>{const i=(t,e)=>{if(!t&&!e)throw new Error("Invalid arguments.");return function(t,e,i){let n=!1;const r=t.length;if(r<=2)return!1;for(let s=0;s0!=st(a.y-i)>0&&st(e-(i-o.y)*(o.x-a.x)/(o.y-a.y)-o.x)<0&&(n=!n)}return n}(e,t.x,t.y)},n=(t,e)=>!!(ot([t[0],t[1]],[t[2],t[3]],[e[0].x,e[0].y],[e[1].x,e[1].y])||ot([t[0],t[1]],[t[2],t[3]],[e[1].x,e[1].y],[e[2].x,e[2].y])||ot([t[0],t[1]],[t[2],t[3]],[e[2].x,e[2].y],[e[3].x,e[3].y])||ot([t[0],t[1]],[t[2],t[3]],[e[3].x,e[3].y],[e[0].x,e[0].y]));return!!(i({x:t[0].x,y:t[0].y},e)||i({x:t[1].x,y:t[1].y},e)||i({x:t[2].x,y:t[2].y},e)||i({x:t[3].x,y:t[3].y},e))||(!!(i({x:e[0].x,y:e[0].y},t)||i({x:e[1].x,y:e[1].y},t)||i({x:e[2].x,y:e[2].y},t)||i({x:e[3].x,y:e[3].y},t))||!!(n([e[0].x,e[0].y,e[1].x,e[1].y],t)||n([e[1].x,e[1].y,e[2].x,e[2].y],t)||n([e[2].x,e[2].y,e[3].x,e[3].y],t)||n([e[3].x,e[3].y,e[0].x,e[0].y],t)))};for(let i of h)if(i.unitType===e.EnumIntermediateResultUnitType.IRUT_LOCALIZED_BARCODES)for(let e of i.localizedBarcodes){if(!e)continue;const i=e.location.points;i.forEach((t=>{qt._transformCoordinates(t,c,u,d,f,g,m)})),t(o,i)&&a.push(e)}if(Hi._debug&&this.cameraView){const t=this.__layer||(this.__layer=this.cameraView._createDrawingLayer(99));t.clearDrawingItems();const i=this.__styleId2||(this.__styleId2=Ut.createDrawingStyle({strokeStyle:"red"}));for(let n of h)if(n.unitType===e.EnumIntermediateResultUnitType.IRUT_LOCALIZED_BARCODES)for(let e of n.localizedBarcodes){if(!e)continue;const n=e.location.points,r=new Y({points:n},i);t.addDrawingItems([r])}}}if(Hi._onLog&&(Hi._onLog("intersectedResults:"),Hi._onLog(a)),!a.length)return;let l;if(a.length){let t=a.filter((t=>t.possibleFormats==Yi.BF_QR_CODE||t.possibleFormats==Yi.BF_DATAMATRIX));if(t.length||(t=a.filter((t=>t.possibleFormats==Yi.BF_ONED)),t.length||(t=a)),t.length){const e=t=>{const e=t.location.points,i=(e[0].x+e[1].x+e[2].x+e[3].x)/4,n=(e[0].y+e[1].y+e[2].y+e[3].y)/4;return(i-g/2)*(i-g/2)+(n-m/2)*(n-m/2)};l=t[0];let i=e(l);if(1!=t.length)for(let n=1;n1.1*l.confidence?(l=t[n],i=r):t[n].confidence>.9*l.confidence&&re&&o>e&&a>e&&h>e&&p.result.moduleSize{})),s(this,Fi,"f").autoZoomInFrameArray.filter((t=>!0===t)).length>=s(this,Fi,"f").autoZoomInFrameLimit[1]){s(this,Fi,"f").autoZoomInFrameArray.length=0;const e=[(.5-n)/(.5-r),(.5-n)/(.5-o),(.5-n)/(.5-a),(.5-n)/(.5-h)].filter((t=>t>0)),i=Math.min(...e,s(this,Fi,"f").autoZoomInIdealModuleSize/p.result.moduleSize),l=this.getZoomSettings().factor;let c=Math.max(Math.pow(l*i,1/s(this,Fi,"f").autoZoomInMaxTimes),s(this,Fi,"f").autoZoomInMinStep);c=Math.min(c,i);let u=l*c;u=Math.max(s(this,Fi,"f").minValue,u),u=Math.min(s(this,Fi,"f").maxValue,u);try{await t({factor:u})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}}else if(s(this,Fi,"f").autoZoomInFrameArray.length=0,s(this,Fi,"f").frameArrayInIdealZoom.push(!0),s(this,Fi,"f").frameArrayInIdealZoom.splice(0,s(this,Fi,"f").frameArrayInIdealZoom.length-s(this,Fi,"f").frameLimitInIdealZoom[0]),s(this,Fi,"f").frameArrayInIdealZoom.filter((t=>!0===t)).length>=s(this,Fi,"f").frameLimitInIdealZoom[1]&&(s(this,Fi,"f").frameArrayInIdealZoom.length=0,s(this,Mi,"f").enhancedFocus)){const t=p.points;try{await i({mode:"manual",area:{centerPoint:{x:(t[0].x+t[2].x)/2+"px",y:(t[0].y+t[2].y)/2+"px"},width:t[2].x-t[0].x+"px",height:t[2].y-t[0].y+"px"}})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}}if(!s(this,Mi,"f").autoZoom&&s(this,Mi,"f").enhancedFocus&&(s(this,Fi,"f").autoFocusFrameArray.push(!0),s(this,Fi,"f").autoFocusFrameArray.splice(0,s(this,Fi,"f").autoFocusFrameArray.length-s(this,Fi,"f").autoFocusFrameLimit[0]),s(this,Fi,"f").autoFocusFrameArray.filter((t=>!0===t)).length>=s(this,Fi,"f").autoFocusFrameLimit[1])){s(this,Fi,"f").autoFocusFrameArray.length=0;try{const t=p.points;await i({mode:"manual",area:{centerPoint:{x:(t[0].x+t[2].x)/2+"px",y:(t[0].y+t[2].y)/2+"px"},width:t[2].x-t[0].x+"px",height:t[2].y-t[0].y+"px"}})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}}else{if(s(this,Mi,"f").autoZoom){if(s(this,Fi,"f").autoZoomInFrameArray.push(!1),s(this,Fi,"f").autoZoomInFrameArray.splice(0,s(this,Fi,"f").autoZoomInFrameArray.length-s(this,Fi,"f").autoZoomInFrameLimit[0]),s(this,Fi,"f").autoZoomOutFrameCount++,s(this,Fi,"f").frameArrayInIdealZoom.push(!1),s(this,Fi,"f").frameArrayInIdealZoom.splice(0,s(this,Fi,"f").frameArrayInIdealZoom.length-s(this,Fi,"f").frameLimitInIdealZoom[0]),s(this,Fi,"f").autoZoomOutFrameCount>=s(this,Fi,"f").autoZoomOutFrameLimit){s(this,Fi,"f").autoZoomOutFrameCount=0;const e=this.getZoomSettings().factor;let i=e-Math.max((e-1)*s(this,Fi,"f").autoZoomOutStepRate,s(this,Fi,"f").autoZoomOutMinStep);i=Math.max(s(this,Fi,"f").minValue,i),i=Math.min(s(this,Fi,"f").maxValue,i);try{await t({factor:i})}catch(t){const e=t.message||t;console.warn(e)}this.clearBuffer()}s(this,Mi,"f").enhancedFocus&&i({mode:"continuous"}).catch((()=>{}))}!s(this,Mi,"f").autoZoom&&s(this,Mi,"f").enhancedFocus&&(s(this,Fi,"f").autoFocusFrameArray.length=0,i({mode:"continuous"}).catch((()=>{})))}}},o(this,Pi,new Ni(1e4),"f")}setCameraView(t){if(!(t instanceof qt))throw new TypeError("Invalid view.");if(t.disposed)throw new Error("The camera view has been disposed.");if(this.isOpen())throw new Error("It is not allowed to change camera view when the camera is open.");this.releaseCameraView(),t._singleFrameMode=this.singleFrameMode,t._onSingleFrameAcquired=this._onSingleFrameAcquired,this.videoSrc&&(this.cameraView._hideDefaultSelection=!0),s(this,_i,"m",Ri).call(this)||this.cameraManager.setVideoEl(t.getVideoElement()),this.cameraView=t,this.addListenerToView()}getCameraView(){return this.cameraView}releaseCameraView(){this.cameraView&&(this.removeListenerFromView(),this.cameraView.disposed||(this.cameraView._singleFrameMode="disabled",this.cameraView._onSingleFrameAcquired=null,this.cameraView._hideDefaultSelection=!1),this.cameraManager.releaseVideoEl(),this.cameraView=null)}addListenerToView(){if(!this.cameraView)return;if(this.cameraView.disposed)throw new Error("'cameraView' has been disposed.");const t=this.cameraView;s(this,_i,"m",Ri).call(this)||this.videoSrc||(t._innerComponent&&(this.cameraManager.tapFocusEventBoundEl=t._innerComponent),t._selCam&&t._selCam.addEventListener("change",this._onCameraSelChange),t._selRsl&&t._selRsl.addEventListener("change",this._onResolutionSelChange)),t._btnClose&&t._btnClose.addEventListener("click",this._onCloseBtnClick)}removeListenerFromView(){if(!this.cameraView||this.cameraView.disposed)return;const t=this.cameraView;this.cameraManager.tapFocusEventBoundEl=null,t._selCam&&t._selCam.removeEventListener("change",this._onCameraSelChange),t._selRsl&&t._selRsl.removeEventListener("change",this._onResolutionSelChange),t._btnClose&&t._btnClose.removeEventListener("click",this._onCloseBtnClick)}getCameraState(){return s(this,_i,"m",Ri).call(this)?s(this,xi,"f"):new Map([["closed","closed"],["opening","opening"],["opened","open"]]).get(this.cameraManager.state)}isOpen(){return"open"===this.getCameraState()}getVideoEl(){return this.video}async open(){const t=this.cameraView;if(null==t?void 0:t.disposed)throw new Error("'cameraView' has been disposed.");t&&(t._singleFrameMode=this.singleFrameMode,s(this,_i,"m",Ri).call(this)?t._clickIptSingleFrameMode():(this.cameraManager.setVideoEl(t.getVideoElement()),t._startLoading()));let e={width:0,height:0,deviceId:""};if(s(this,_i,"m",Ri).call(this));else{try{await this.cameraManager.open()}catch(e){throw t&&t._stopLoading(),"NotFoundError"===e.name?new Error(`No camera devices were detected. Please ensure a camera is connected and recognized by your system. ${null==e?void 0:e.name}: ${null==e?void 0:e.message}`):"NotAllowedError"===e.name?new Error(`Camera access is blocked. Please check your browser settings or grant permission to use the camera. ${null==e?void 0:e.name}: ${null==e?void 0:e.message}`):e}let i,n=t.getUIElement();if(n=n.shadowRoot||n,i=n.querySelector(".dce-macro-use-mobile-native-like-ui")){let t=n.elTorchAuto=n.querySelector(".dce-mn-torch-auto"),e=n.elTorchOn=n.querySelector(".dce-mn-torch-on"),r=n.elTorchOff=n.querySelector(".dce-mn-torch-off");t&&(e.style.display=null==this.isTorchOn?"":"none"),e&&(e.style.display=1==this.isTorchOn?"":"none"),r&&(r.style.display=0==this.isTorchOn?"":"none");let s=n.elBeepOn=n.querySelector(".dce-mn-beep-on"),o=n.elBeepOff=n.querySelector(".dce-mn-beep-off");s&&(s.style.display=Ui.allowBeep?"":"none"),o&&(o.style.display=Ui.allowBeep?"none":"");let a=n.elVibrateOn=n.querySelector(".dce-mn-vibrate-on"),h=n.elVibrateOff=n.querySelector(".dce-mn-vibrate-off");a&&(a.style.display=Ui.allowVibrate?"":"none"),h&&(h.style.display=Ui.allowVibrate?"none":""),n.elResolutionBox=n.querySelector(".dce-mn-resolution-box");let l,c=n.elZoom=n.querySelector(".dce-mn-zoom");c&&(c.style.display="none",l=n.elZoomSpan=c.querySelector("span"));let d=n.elToast=n.querySelector(".dce-mn-toast"),f=n.elCameraClose=n.querySelector(".dce-mn-camera-close"),g=n.elTakePhoto=n.querySelector(".dce-mn-take-photo"),m=n.elCameraSwitch=n.querySelector(".dce-mn-camera-switch"),p=n.elCameraAndResolutionSettings=n.querySelector(".dce-mn-camera-and-resolution-settings");p&&(p.style.display="none");const v=n.dceMnFs={},y=()=>{this.turnOnTorch()};null==t||t.addEventListener("pointerdown",y);const _=()=>{this.turnOffTorch()};null==e||e.addEventListener("pointerdown",_);const w=()=>{this.turnAutoTorch()};null==r||r.addEventListener("pointerdown",w);const b=()=>{Ui.allowBeep=!Ui.allowBeep,s&&(s.style.display=Ui.allowBeep?"":"none"),o&&(o.style.display=Ui.allowBeep?"none":"")};for(let t of[o,s])null==t||t.addEventListener("pointerdown",b);const x=()=>{Ui.allowVibrate=!Ui.allowVibrate,a&&(a.style.display=Ui.allowVibrate?"":"none"),h&&(h.style.display=Ui.allowVibrate?"none":"")};for(let t of[h,a])null==t||t.addEventListener("pointerdown",x);const C=async t=>{let e,i=t.target;if(e=i.closest(".dce-mn-camera-option"))this.selectCamera(e.getAttribute("data-davice-id"));else if(e=i.closest(".dce-mn-resolution-option")){let t,i=parseInt(e.getAttribute("data-width")),n=parseInt(e.getAttribute("data-height")),r=await this.setResolution({width:i,height:n});{let e=Math.max(r.width,r.height),i=Math.min(r.width,r.height);t=i<=1080?i+"P":e<3e3?"2K":Math.round(e/1e3)+"K"}t!=e.textContent&&E(`Fallback to ${t}`)}else i.closest(".dce-mn-camera-and-resolution-settings")||(i.closest(".dce-mn-resolution-box")?p&&(p.style.display=p.style.display?"":"none"):p&&""===p.style.display&&(p.style.display="none"))};n.addEventListener("click",C);let S=null;v.funcInfoZoomChange=(t,e=3e3)=>{c&&l&&(l.textContent=t.toFixed(1),c.style.display="",null!=S&&(clearTimeout(S),S=null),S=setTimeout((()=>{c.style.display="none",S=null}),e))};let T=null,E=v.funcShowToast=(t,e=3e3)=>{d&&(d.textContent=t,d.style.display="",null!=T&&(clearTimeout(T),T=null),T=setTimeout((()=>{d.style.display="none",T=null}),e))};const O=()=>{this.close()};null==f||f.addEventListener("click",O);const I=()=>{};null==g||g.addEventListener("pointerdown",I);const A=()=>{var t,e;let i,n=this.getVideoSettings(),r=n.video.facingMode,s=null===(e=null===(t=this.cameraManager.getCamera())||void 0===t?void 0:t.label)||void 0===e?void 0:e.toLowerCase(),o=null==s?void 0:s.indexOf("front");-1===o&&(o=null==s?void 0:s.indexOf("前"));let a=null==s?void 0:s.indexOf("back");if(-1===a&&(a=null==s?void 0:s.indexOf("后")),"number"==typeof o&&-1!==o?i=!0:"number"==typeof a&&-1!==a&&(i=!1),void 0===i){i="user"===((null==r?void 0:r.ideal)||(null==r?void 0:r.exact)||r)}n.video.facingMode={ideal:i?"environment":"user"},delete n.video.deviceId,this.updateVideoSettings(n)};null==m||m.addEventListener("pointerdown",A);let D=-1/0,L=1;const M=t=>{let e=Date.now();e-D>1e3&&(L=this.getZoomSettings().factor),L-=t.deltaY/200,L>20&&(L=20),L<1&&(L=1),this.setZoom({factor:L}),D=e};i.addEventListener("wheel",M);const F=new Map;let P=!1;const k=async t=>{var e;for(t.touches.length>=2&&"touchmove"==t.type&&t.preventDefault();t.changedTouches.length>1&&2==t.touches.length;){let i=t.touches[0],n=t.touches[1],r=F.get(i.identifier),s=F.get(n.identifier);if(!r||!s)break;let o=Math.pow(Math.pow(r.x-s.x,2)+Math.pow(r.y-s.y,2),.5),a=Math.pow(Math.pow(i.clientX-n.clientX,2)+Math.pow(i.clientY-n.clientY,2),.5),h=Date.now();if(P||h-D<100)return;h-D>1e3&&(L=this.getZoomSettings().factor),L*=a/o,L>20&&(L=20),L<1&&(L=1);let l=!1;"safari"==(null===(e=null==u?void 0:u.browser)||void 0===e?void 0:e.toLocaleLowerCase())&&(a/o>1&&L<2?(L=2,l=!0):a/o<1&&L<2&&(L=1,l=!0)),P=!0,l&&E("zooming..."),await this.setZoom({factor:L}),l&&(d.textContent=""),P=!1,D=Date.now();break}F.clear();for(let e of t.touches)F.set(e.identifier,{x:e.clientX,y:e.clientY})};n.addEventListener("touchstart",k),n.addEventListener("touchmove",k),n.addEventListener("touchend",k),n.addEventListener("touchcancel",k),v.unbind=()=>{null==t||t.removeEventListener("pointerdown",y),null==e||e.removeEventListener("pointerdown",_),null==r||r.removeEventListener("pointerdown",w);for(let t of[o,s])null==t||t.removeEventListener("pointerdown",b);for(let t of[h,a])null==t||t.removeEventListener("pointerdown",x);n.removeEventListener("click",C),null==f||f.removeEventListener("click",O),null==g||g.removeEventListener("pointerdown",I),null==m||m.removeEventListener("pointerdown",A),i.removeEventListener("wheel",M),n.removeEventListener("touchstart",k),n.removeEventListener("touchmove",k),n.removeEventListener("touchend",k),n.removeEventListener("touchcancel",k),delete n.dceMnFs,i.style.display="none"},i.style.display="",t&&null==this.isTorchOn&&setTimeout((()=>{this.turnAutoTorch(1e3)}),0)}this.isTorchOn&&this.turnOnTorch().catch((()=>{}));const r=this.getResolution();e.width=r.width,e.height=r.height,e.deviceId=this.getSelectedCamera().deviceId}return o(this,xi,"open","f"),t&&(t._innerComponent.style.display="",s(this,_i,"m",Ri).call(this)||(t._stopLoading(),t._renderCamerasInfo(this.getSelectedCamera(),this.cameraManager._arrCameras),t._renderResolutionInfo({width:e.width,height:e.height}),t.eventHandler.fire("content:updated",null,{async:!1}),t.eventHandler.fire("videoEl:resized",null,{async:!1}))),s(this,Ci,"f").fire("opened",null,{target:this,async:!1}),e}close(){var t;const e=this.cameraView;if(null==e?void 0:e.disposed)throw new Error("'cameraView' has been disposed.");if(this.stopFetching(),this.clearBuffer(),s(this,_i,"m",Ri).call(this));else{this.cameraManager.close();let i=e.getUIElement();i=i.shadowRoot||i,i.querySelector(".dce-macro-use-mobile-native-like-ui")&&(null===(t=i.dceMnFs)||void 0===t||t.unbind())}o(this,xi,"closed","f"),s(this,Pi,"f").stopCharging(),e&&(e._innerComponent.style.display="none",s(this,_i,"m",Ri).call(this)&&e._innerComponent.removeElement("content"),e._stopLoading()),s(this,Ci,"f").fire("closed",null,{target:this,async:!1})}pause(){if(s(this,_i,"m",Ri).call(this))throw new Error("'pause()' is invalid in 'singleFrameMode'.");this.cameraManager.pause()}isPaused(){var t;return!s(this,_i,"m",Ri).call(this)&&!0===(null===(t=this.video)||void 0===t?void 0:t.paused)}async resume(){if(s(this,_i,"m",Ri).call(this))throw new Error("'resume()' is invalid in 'singleFrameMode'.");await this.cameraManager.resume()}async selectCamera(t){if(!t)throw new Error("Invalid value.");let e;e="string"==typeof t?t:t.deviceId,await this.cameraManager.setCamera(e),this.isTorchOn=!1;const i=this.getResolution(),n=this.cameraView;return n&&!n.disposed&&(n._stopLoading(),n._renderCamerasInfo(this.getSelectedCamera(),this.cameraManager._arrCameras),n._renderResolutionInfo({width:i.width,height:i.height})),{width:i.width,height:i.height,deviceId:this.getSelectedCamera().deviceId}}getSelectedCamera(){return this.cameraManager.getCamera()}async getAllCameras(){return this.cameraManager.getCameras()}async setResolution(t){await this.cameraManager.setResolution(t.width,t.height),this.isTorchOn&&this.turnOnTorch().catch((()=>{}));const e=this.getResolution(),i=this.cameraView;return i&&!i.disposed&&(i._stopLoading(),i._renderResolutionInfo({width:e.width,height:e.height})),{width:e.width,height:e.height,deviceId:this.getSelectedCamera().deviceId}}getResolution(){return this.cameraManager.getResolution()}getAvailableResolutions(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getResolutions()}_on(t,e){["opened","closed","singleframeacquired","frameaddedtobuffer"].includes(t.toLowerCase())?s(this,Ci,"f").on(t,e):this.cameraManager.on(t,e)}_off(t,e){["opened","closed","singleframeacquired","frameaddedtobuffer"].includes(t.toLowerCase())?s(this,Ci,"f").off(t,e):this.cameraManager.off(t,e)}on(t,e){const i=t.toLowerCase(),n=new Map([["cameraopen","opened"],["cameraclose","closed"],["camerachange","camera:changed"],["resolutionchange","resolution:changed"],["played","played"],["singleframeacquired","singleFrameAcquired"],["frameaddedtobuffer","frameAddedToBuffer"]]).get(i);if(!n)throw new Error("Invalid event.");this._on(n,e)}off(t,e){const i=t.toLowerCase(),n=new Map([["cameraopen","opened"],["cameraclose","closed"],["camerachange","camera:changed"],["resolutionchange","resolution:changed"],["played","played"],["singleframeacquired","singleFrameAcquired"],["frameaddedtobuffer","frameAddedToBuffer"]]).get(i);if(!n)throw new Error("Invalid event.");this._off(n,e)}getVideoSettings(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getMediaStreamConstraints()}async updateVideoSettings(t){var e;await(null===(e=this.cameraManager)||void 0===e?void 0:e.setMediaStreamConstraints(t,!0))}getCapabilities(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getCameraCapabilities()}getCameraSettings(){return this.cameraManager.getCameraSettings()}async turnOnTorch(){var t,e;if(s(this,_i,"m",Ri).call(this))throw new Error("'turnOnTorch()' is invalid in 'singleFrameMode'.");try{await(null===(t=this.cameraManager)||void 0===t?void 0:t.turnOnTorch())}catch(t){let i=this.cameraView.getUIElement();throw i=i.shadowRoot||i,null===(e=null==i?void 0:i.dceMnFs)||void 0===e||e.funcShowToast("Torch Not Supported"),t}this.isTorchOn=!0;let i=this.cameraView.getUIElement();i=i.shadowRoot||i,i.elTorchAuto&&(i.elTorchAuto.style.display="none"),i.elTorchOn&&(i.elTorchOn.style.display=""),i.elTorchOff&&(i.elTorchOff.style.display="none")}async turnOffTorch(){var t;if(s(this,_i,"m",Ri).call(this))throw new Error("'turnOffTorch()' is invalid in 'singleFrameMode'.");await(null===(t=this.cameraManager)||void 0===t?void 0:t.turnOffTorch()),this.isTorchOn=!1;let e=this.cameraView.getUIElement();e=e.shadowRoot||e,e.elTorchAuto&&(e.elTorchAuto.style.display="none"),e.elTorchOn&&(e.elTorchOn.style.display="none"),e.elTorchOff&&(e.elTorchOff.style.display="")}async turnAutoTorch(t=250){if(null!=this._taskid4AutoTorch){if(!(t{var t,s,o;if(this.disposed||i||null!=this.isTorchOn||!this.isOpen())return clearInterval(this._taskid4AutoTorch),void(this._taskid4AutoTorch=null);if(this.isPaused())return;if(++r>10&&this._delay4AutoTorch<1e3)return clearInterval(this._taskid4AutoTorch),this._taskid4AutoTorch=null,void this.turnAutoTorch(1e3);let a;try{a=this.fetchImage()}catch(t){}if(!a||!a.width||!a.height)return;let h=0;if(e.EnumImagePixelFormat.IPF_GRAYSCALED===a.format){for(let t=0;t=this.maxDarkCount4AutoTroch){null===(t=Hi._onLog)||void 0===t||t.call(Hi,`darkCount ${n}`);try{await this.turnOnTorch(),this.isTorchOn=!0;let t=this.cameraView.getUIElement();t=t.shadowRoot||t,null===(s=null==t?void 0:t.dceMnFs)||void 0===s||s.funcShowToast("Torch Auto On")}catch(t){console.warn(t),i=!0;let e=this.cameraView.getUIElement();e=e.shadowRoot||e,null===(o=null==e?void 0:e.dceMnFs)||void 0===o||o.funcShowToast("Torch Not Supported")}}}else n=0};this._taskid4AutoTorch=setInterval(s,t),this.isTorchOn=void 0,s();let o=this.cameraView.getUIElement();o=o.shadowRoot||o,o.elTorchAuto&&(o.elTorchAuto.style.display=""),o.elTorchOn&&(o.elTorchOn.style.display="none"),o.elTorchOff&&(o.elTorchOff.style.display="none")}async setColorTemperature(t){if(s(this,_i,"m",Ri).call(this))throw new Error("'setColorTemperature()' is invalid in 'singleFrameMode'.");await this.cameraManager.setColorTemperature(t,!0)}getColorTemperature(){return this.cameraManager.getColorTemperature()}async setExposureCompensation(t){var e;if(s(this,_i,"m",Ri).call(this))throw new Error("'setExposureCompensation()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setExposureCompensation(t,!0))}getExposureCompensation(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getExposureCompensation()}async _setZoom(t){var e,i,n;if(s(this,_i,"m",Ri).call(this))throw new Error("'setZoom()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setZoom(t));{let e=null===(i=this.cameraView)||void 0===i?void 0:i.getUIElement();e=(null==e?void 0:e.shadowRoot)||e,null===(n=null==e?void 0:e.dceMnFs)||void 0===n||n.funcInfoZoomChange(t.factor)}}async setZoom(t){await this._setZoom(t)}getZoomSettings(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getZoom()}async resetZoom(){var t;if(s(this,_i,"m",Ri).call(this))throw new Error("'resetZoom()' is invalid in 'singleFrameMode'.");await(null===(t=this.cameraManager)||void 0===t?void 0:t.resetZoom())}async setFrameRate(t){var e;if(s(this,_i,"m",Ri).call(this))throw new Error("'setFrameRate()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setFrameRate(t,!0))}getFrameRate(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getFrameRate()}async setFocus(t){var e;if(s(this,_i,"m",Ri).call(this))throw new Error("'setFocus()' is invalid in 'singleFrameMode'.");await(null===(e=this.cameraManager)||void 0===e?void 0:e.setFocus(t,!0))}getFocusSettings(){var t;return null===(t=this.cameraManager)||void 0===t?void 0:t.getFocus()}setAutoZoomRange(t){s(this,Fi,"f").minValue=t.min,s(this,Fi,"f").maxValue=t.max}getAutoZoomRange(){return{min:s(this,Fi,"f").minValue,max:s(this,Fi,"f").maxValue}}async enableEnhancedFeatures(i){var n,r;if(!(null===(r=null===(n=e.mapPackageRegister.license)||void 0===n?void 0:n.LicenseManager)||void 0===r?void 0:r.bPassValidation))throw new Error("License is not verified, or license is invalid.");if(0!==e.CoreModule.bSupportDce4Module)throw new Error("Please set a license containing the DCE module.");i&t.EnumEnhancedFeatures.EF_ENHANCED_FOCUS&&(s(this,Mi,"f").enhancedFocus=!0),i&t.EnumEnhancedFeatures.EF_AUTO_ZOOM&&(s(this,Mi,"f").autoZoom=!0),i&t.EnumEnhancedFeatures.EF_TAP_TO_FOCUS&&(s(this,Mi,"f").tapToFocus=!0,this.cameraManager.enableTapToFocus())}disableEnhancedFeatures(e){e&t.EnumEnhancedFeatures.EF_ENHANCED_FOCUS&&(s(this,Mi,"f").enhancedFocus=!1,this.setFocus({mode:"continuous"}).catch((()=>{}))),e&t.EnumEnhancedFeatures.EF_AUTO_ZOOM&&(s(this,Mi,"f").autoZoom=!1,this.resetZoom().catch((()=>{}))),e&t.EnumEnhancedFeatures.EF_TAP_TO_FOCUS&&(s(this,Mi,"f").tapToFocus=!1,this.cameraManager.disableTapToFocus()),s(this,_i,"m",ji).call(this)&&s(this,_i,"m",Bi).call(this)||s(this,Pi,"f").stopCharging()}_setScanRegion(t){if(null!=t&&!e.isDSRect(t)&&!e.isRect(t))throw TypeError("Invalid 'region'.");o(this,Ii,t?JSON.parse(JSON.stringify(t)):null,"f"),this.cameraView&&!this.cameraView.disposed&&this.cameraView.setScanRegion(t)}setScanRegion(t){this._setScanRegion(t),this.cameraView&&!this.cameraView.disposed&&(null===t?this.cameraView.setScanRegionMaskVisible(!1):this.cameraView.setScanRegionMaskVisible(!0))}getScanRegion(){return JSON.parse(JSON.stringify(s(this,Ii,"f")))}setErrorListener(t){if(!t)throw new TypeError("Invalid 'listener'");o(this,Oi,t,"f")}hasNextImageToFetch(){return!("open"!==this.getCameraState()||!this.cameraManager.isVideoLoaded()||s(this,_i,"m",Ri).call(this))}startFetching(){if(s(this,_i,"m",Ri).call(this))throw Error("'startFetching()' is unavailable in 'singleFrameMode'.");s(this,Di,"f")||(o(this,Di,!0,"f"),s(this,_i,"m",Vi).call(this))}stopFetching(){s(this,Di,"f")&&(Hi._onLog&&Hi._onLog("DCE: stop fetching loop: "+Date.now()),s(this,Li,"f")&&clearTimeout(s(this,Li,"f")),o(this,Di,!1,"f"))}fetchImage(){if(s(this,_i,"m",Ri).call(this))throw new Error("'fetchImage()' is unavailable in 'singleFrameMode'.");if(!this.video)throw new Error("The video element does not exist.");if(4!==this.video.readyState)throw new Error("The video is not loaded.");const t=this.getResolution();if(!(null==t?void 0:t.width)||!(null==t?void 0:t.height))throw new Error("The video is not loaded.");let i;if(i=tt.convert(s(this,Ii,"f"),t.width,t.height),i||(i={x:0,y:0,width:t.width,height:t.height}),i.x>t.width||i.y>t.height)throw new Error("Invalid scan region.");i.x+i.width>t.width&&(i.width=t.width-i.x),i.y+i.height>t.height&&(i.height=t.height-i.y);const n={sx:i.x,sy:i.y,sWidth:i.width,sHeight:i.height,dWidth:i.width,dHeight:i.height},r=Math.max(n.dWidth,n.dHeight);if(this.canvasSizeLimit&&r>this.canvasSizeLimit){const t=this.canvasSizeLimit/r;n.dWidth>n.dHeight?(n.dWidth=this.canvasSizeLimit,n.dHeight=Math.round(n.dHeight*t)):(n.dWidth=Math.round(n.dWidth*t),n.dHeight=this.canvasSizeLimit)}const o=this.cameraManager.getFrameData({position:n,pixelFormat:this.getPixelFormat()===e.EnumImagePixelFormat.IPF_GRAYSCALED?oe.GREY:oe.RGBA});if(!o)return null;let a;if(o.pixelFormat===oe.GREY)a=o.width;else a=4*o.width;let h=!0;0===n.sx&&0===n.sy&&n.sWidth===t.width&&n.sHeight===t.height&&(h=!1);return{bytes:o.data,width:o.width,height:o.height,stride:a,format:Gi.get(o.pixelFormat),tag:{imageId:this._imageId==Number.MAX_VALUE?this._imageId=0:++this._imageId,type:e.EnumImageTagType.ITT_VIDEO_FRAME,isCropped:h,cropRegion:{left:i.x,top:i.y,right:i.x+i.width,bottom:i.y+i.height,isMeasuredInPercentage:!1},originalWidth:t.width,originalHeight:t.height,currentWidth:o.width,currentHeight:o.height,timeSpent:o.timeSpent,timeStamp:o.timeStamp},toCanvas:s(this,Ei,"f"),isDCEFrame:!0}}setImageFetchInterval(t){this.fetchInterval=t,s(this,Di,"f")&&(s(this,Li,"f")&&clearTimeout(s(this,Li,"f")),o(this,Li,setTimeout((()=>{this.disposed||s(this,_i,"m",Vi).call(this)}),t),"f"))}getImageFetchInterval(){return this.fetchInterval}setPixelFormat(t){o(this,Ai,t,"f")}getPixelFormat(){return s(this,Ai,"f")}takePhoto(t){if(!this.isOpen())throw new Error("Not open.");if(s(this,_i,"m",Ri).call(this))throw new Error("'takePhoto()' is unavailable in 'singleFrameMode'.");const e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("accept",".jpg,.jpeg,.icon,.gif,.svg,.webp,.png,.bmp"),e.setAttribute("capture",""),e.style.position="absolute",e.style.top="-9999px",e.style.backgroundColor="transparent",e.style.color="transparent",e.addEventListener("click",(()=>{const t=this.isOpen();this.close(),window.addEventListener("focus",(()=>{t&&this.open(),e.remove()}),{once:!0})})),e.addEventListener("change",(async()=>{const i=e.files[0],n=await(async t=>{let e=null,i=null;if("undefined"!=typeof createImageBitmap)try{if(e=await createImageBitmap(t),e)return e}catch(t){}var n;return e||(i=await(n=t,new Promise(((t,e)=>{let i=URL.createObjectURL(n),r=new Image;r.src=i,r.onload=()=>{URL.revokeObjectURL(r.src),t(r)},r.onerror=t=>{e(new Error("Can't convert blob to image : "+(t instanceof Event?t.type:t)))}})))),i})(i),r=n instanceof HTMLImageElement?n.naturalWidth:n.width,o=n instanceof HTMLImageElement?n.naturalHeight:n.height;let a=tt.convert(s(this,Ii,"f"),r,o);a||(a={x:0,y:0,width:r,height:o});const h=s(this,Ti,"f").call(this,n,r,o,a);t&&t(h)})),document.body.appendChild(e),e.click()}convertToPageCoordinates(t){const e=s(this,_i,"m",Wi).call(this,t);return{x:e.pageX,y:e.pageY}}convertToClientCoordinates(t){const e=s(this,_i,"m",Wi).call(this,t);return{x:e.clientX,y:e.clientY}}convertToScanRegionCoordinates(t){if(!s(this,Ii,"f"))return JSON.parse(JSON.stringify(t));let e,i,n=s(this,Ii,"f").left||s(this,Ii,"f").x||0,r=s(this,Ii,"f").top||s(this,Ii,"f").y||0;if(!s(this,Ii,"f").isMeasuredInPercentage)return{x:t.x-n,y:t.y-r};if(!this.cameraView)throw new Error("Camera view is not set.");if(this.cameraView.disposed)throw new Error("'cameraView' has been disposed.");if(!this.isOpen())throw new Error("Not open.");if(!s(this,_i,"m",Ri).call(this)&&!this.cameraManager.isVideoLoaded())throw new Error("Video is not loaded.");if(s(this,_i,"m",Ri).call(this)&&!this.cameraView._cvsSingleFrameMode)throw new Error("No image is selected.");if(s(this,_i,"m",Ri).call(this)){const t=this.cameraView._innerComponent.getElement("content");e=t.width,i=t.height}else{const t=this.getVideoEl();e=t.videoWidth,i=t.videoHeight}return{x:t.x-Math.round(n*e/100),y:t.y-Math.round(r*i/100)}}dispose(){this.close(),this.cameraManager.dispose(),this.releaseCameraView(),o(this,ki,!0,"f")}}var Xi,zi,qi,Ki,Zi,Ji,Qi,$i;wi=Hi,xi=new WeakMap,Ci=new WeakMap,Si=new WeakMap,Ti=new WeakMap,Ei=new WeakMap,Oi=new WeakMap,Ii=new WeakMap,Ai=new WeakMap,Di=new WeakMap,Li=new WeakMap,Mi=new WeakMap,Fi=new WeakMap,Pi=new WeakMap,ki=new WeakMap,_i=new WeakSet,Ri=function(){return"disabled"!==this.singleFrameMode},Bi=function(){return!this.videoSrc&&"opened"===this.cameraManager.state},ji=function(){for(let t in s(this,Mi,"f"))if(1==s(this,Mi,"f")[t])return!0;return!1},Vi=function t(){if(this.disposed)return;if("open"!==this.getCameraState()||!s(this,Di,"f"))return s(this,Li,"f")&&clearTimeout(s(this,Li,"f")),void o(this,Li,setTimeout((()=>{this.disposed||s(this,_i,"m",t).call(this)}),this.fetchInterval),"f");const i=()=>{var t;let i;Hi._onLog&&Hi._onLog("DCE: start fetching a frame into buffer: "+Date.now());try{i=this.fetchImage()}catch(i){const n=i.message||i;if("The video is not loaded."===n)return;if(null===(t=s(this,Oi,"f"))||void 0===t?void 0:t.onErrorReceived)return void setTimeout((()=>{var t;null===(t=s(this,Oi,"f"))||void 0===t||t.onErrorReceived(e.EnumErrorCode.EC_IMAGE_READ_FAILED,n)}),0);console.warn(i)}i?(this.addImageToBuffer(i),Hi._onLog&&Hi._onLog("DCE: finish fetching a frame into buffer: "+Date.now()),s(this,Ci,"f").fire("frameAddedToBuffer",null,{async:!1})):Hi._onLog&&Hi._onLog("DCE: get a invalid frame, abandon it: "+Date.now())};if(this.getImageCount()>=this.getMaxImageCount())switch(this.getBufferOverflowProtectionMode()){case e.EnumBufferOverflowProtectionMode.BOPM_BLOCK:break;case e.EnumBufferOverflowProtectionMode.BOPM_UPDATE:i()}else i();s(this,Li,"f")&&clearTimeout(s(this,Li,"f")),o(this,Li,setTimeout((()=>{this.disposed||s(this,_i,"m",t).call(this)}),this.fetchInterval),"f")},Wi=function(t){if(!this.cameraView)throw new Error("Camera view is not set.");if(this.cameraView.disposed)throw new Error("'cameraView' has been disposed.");if(!this.isOpen())throw new Error("Not open.");if(!s(this,_i,"m",Ri).call(this)&&!this.cameraManager.isVideoLoaded())throw new Error("Video is not loaded.");if(s(this,_i,"m",Ri).call(this)&&!this.cameraView._cvsSingleFrameMode)throw new Error("No image is selected.");const e=this.cameraView._innerComponent.getBoundingClientRect(),i=e.left,n=e.top,r=i+window.scrollX,o=n+window.scrollY,{width:a,height:h}=this.cameraView._innerComponent.getBoundingClientRect();if(a<=0||h<=0)throw new Error("Unable to get content dimensions. Camera view may not be rendered on the page.");let l,c,u;if(s(this,_i,"m",Ri).call(this)){const t=this.cameraView._innerComponent.getElement("content");l=t.width,c=t.height,u="contain"}else{const t=this.getVideoEl();l=t.videoWidth,c=t.videoHeight,u=this.cameraView.getVideoFit()}const d=a/h,f=l/c;let g,m,p,v,y=1;if("contain"===u)d{var e;if(!this.isUseMagnifier)return;if(s(this,Ki,"f")||o(this,Ki,new tn,"f"),!s(this,Ki,"f").magnifierCanvas)return;document.body.contains(s(this,Ki,"f").magnifierCanvas)||(s(this,Ki,"f").magnifierCanvas.style.position="fixed",s(this,Ki,"f").magnifierCanvas.style.boxSizing="content-box",s(this,Ki,"f").magnifierCanvas.style.border="2px solid #FFFFFF",document.body.append(s(this,Ki,"f").magnifierCanvas));const i=this._innerComponent.getElement("content");if(!i)return;if(t.pointer.x<0||t.pointer.x>i.width||t.pointer.y<0||t.pointer.y>i.height)return void s(this,Ji,"f").call(this);const n=null===(e=this._drawingLayerManager._getFabricCanvas())||void 0===e?void 0:e.lowerCanvasEl;if(!n)return;const r=Math.max(i.clientWidth/5/1.5,i.clientHeight/4/1.5),a=1.5*r,h=[{image:i,width:i.width,height:i.height},{image:n,width:n.width,height:n.height}];s(this,Ki,"f").update(a,t.pointer,r,h);{let e=0,i=0;t.e instanceof MouseEvent?(e=t.e.clientX,i=t.e.clientY):t.e instanceof TouchEvent&&t.e.changedTouches.length&&(e=t.e.changedTouches[0].clientX,i=t.e.changedTouches[0].clientY),e<1.5*a&&i<1.5*a?(s(this,Ki,"f").magnifierCanvas.style.left="auto",s(this,Ki,"f").magnifierCanvas.style.top="0",s(this,Ki,"f").magnifierCanvas.style.right="0"):(s(this,Ki,"f").magnifierCanvas.style.left="0",s(this,Ki,"f").magnifierCanvas.style.top="0",s(this,Ki,"f").magnifierCanvas.style.right="auto")}s(this,Ki,"f").show()})),Ji.set(this,(()=>{s(this,Ki,"f")&&s(this,Ki,"f").hide()})),Qi.set(this,!1)}_setUIElement(t){this.UIElement=t,this._unbindUI(),this._bindUI()}async setUIElement(t){let e;if("string"==typeof t){let i=await at(t);e=document.createElement("div"),Object.assign(e.style,{width:"100%",height:"100%"}),e.attachShadow({mode:"open"}).appendChild(i)}else e=t;this._setUIElement(e)}getUIElement(){return this.UIElement}_bindUI(){if(!this.UIElement)throw new Error("Need to set 'UIElement'.");if(this._innerComponent)return;const t=this.UIElement;let e=t.classList.contains(this.containerClassName)?t:t.querySelector(`.${this.containerClassName}`);e||(e=document.createElement("div"),e.style.width="100%",e.style.height="100%",e.className=this.containerClassName,t.append(e)),this._innerComponent=document.createElement("dce-component"),e.appendChild(this._innerComponent)}_unbindUI(){var t,e,i;null===(t=this._drawingLayerManager)||void 0===t||t.clearDrawingLayers(),null===(e=this._innerComponent)||void 0===e||e.removeElement("drawing-layer"),this._layerBaseCvs=null,null===(i=this._innerComponent)||void 0===i||i.remove(),this._innerComponent=null}setImage(t,e,i){if(!this._innerComponent)throw new Error("Need to set 'UIElement'.");let n=this._innerComponent.getElement("content");n||(n=document.createElement("canvas"),n.style.objectFit="contain",this._innerComponent.setElement("content",n)),n.width===e&&n.height===i||(n.width=e,n.height=i);const r=n.getContext("2d");r.clearRect(0,0,n.width,n.height),t instanceof Uint8Array||t instanceof Uint8ClampedArray?(t instanceof Uint8Array&&(t=new Uint8ClampedArray(t.buffer)),r.putImageData(new ImageData(t,e,i),0,0)):(t instanceof HTMLCanvasElement||t instanceof HTMLImageElement)&&r.drawImage(t,0,0)}getImage(){return this._innerComponent.getElement("content")}clearImage(){if(!this._innerComponent)return;let t=this._innerComponent.getElement("content");t&&t.getContext("2d").clearRect(0,0,t.width,t.height)}removeImage(){this._innerComponent&&this._innerComponent.removeElement("content")}setOriginalImage(t){if(e.isDSImageData(t)){o(this,qi,t,"f");const{width:i,height:n,bytes:r,format:s}=Object.assign({},t);let a;if(s===e.EnumImagePixelFormat.IPF_GRAYSCALED){a=new Uint8ClampedArray(i*n*4);for(let t=0;t({x:e.x-t.left-t.width/2,y:e.y-t.top-t.height/2}))),t.addWithUpdate()}else i.points=e;const n=i.points.length-1;return i.controls=i.points.reduce((function(t,e,i){return t["p"+i]=new S.Control({positionHandler:W,actionHandler:G(i>0?i-1:n,U),actionName:"modifyPolygon",pointIndex:i}),t}),{}),i._setPositionDimensions({}),!0}}extendGet(t){if("startPoint"===t||"endPoint"===t){const e=[],i=this._fabricObject;if(i.selectable&&!i.group)for(let t in i.oCoords)e.push({x:i.oCoords[t].x,y:i.oCoords[t].y});else for(let t of i.points){let n=t.x-i.pathOffset.x,r=t.y-i.pathOffset.y;const s=S.util.transformPoint({x:n,y:r},i.calcTransformMatrix());e.push({x:s.x,y:s.y})}return"startPoint"===t?e[0]:e[1]}}updateCoordinateBaseFromImageToView(){const t=this.get("startPoint"),e=this.get("endPoint");this.set("startPoint",{x:this.convertPropFromViewToImage(t.x),y:this.convertPropFromViewToImage(t.y)}),this.set("endPoint",{x:this.convertPropFromViewToImage(e.x),y:this.convertPropFromViewToImage(e.y)})}updateCoordinateBaseFromViewToImage(){const t=this.get("startPoint"),e=this.get("endPoint");this.set("startPoint",{x:this.convertPropFromImageToView(t.x),y:this.convertPropFromImageToView(t.y)}),this.set("endPoint",{x:this.convertPropFromImageToView(e.x),y:this.convertPropFromImageToView(e.y)})}setPosition(t){this.setLine(t)}getPosition(){return this.getLine()}updatePosition(){s(this,z,"f")&&this.setLine(s(this,z,"f"))}setPolygon(){}getPolygon(){return null}setLine(t){if(!e.isLineSegment(t))throw new TypeError("Invalid 'line'.");if(this._drawingLayer){if("view"===this.coordinateBase)this.set("startPoint",{x:this.convertPropFromViewToImage(t.startPoint.x),y:this.convertPropFromViewToImage(t.startPoint.y)}),this.set("endPoint",{x:this.convertPropFromViewToImage(t.endPoint.x),y:this.convertPropFromViewToImage(t.endPoint.y)});else{if("image"!==this.coordinateBase)throw new Error("Invalid 'coordinateBase'.");this.set("startPoint",t.startPoint),this.set("endPoint",t.endPoint)}this._drawingLayer.renderAll()}else o(this,z,JSON.parse(JSON.stringify(t)),"f")}getLine(){if(this._drawingLayer){if("view"===this.coordinateBase)return{startPoint:{x:this.convertPropFromImageToView(this.get("startPoint").x),y:this.convertPropFromImageToView(this.get("startPoint").y)},endPoint:{x:this.convertPropFromImageToView(this.get("endPoint").x),y:this.convertPropFromImageToView(this.get("endPoint").y)}};if("image"===this.coordinateBase)return{startPoint:this.get("startPoint"),endPoint:this.get("endPoint")};throw new Error("Invalid 'coordinateBase'.")}return s(this,z,"f")?JSON.parse(JSON.stringify(s(this,z,"f"))):null}},t.QuadDrawingItem=K,t.RectDrawingItem=V,t.TextDrawingItem=X})); diff --git a/dist/dynamsoft-camera-enhancer@4.1.1/dist/dce.mobile-native.ui.html b/dist/dynamsoft-camera-enhancer@4.1.1/dist/dce.mobile-native.ui.html new file mode 100644 index 0000000..eda6104 --- /dev/null +++ b/dist/dynamsoft-camera-enhancer@4.1.1/dist/dce.mobile-native.ui.html @@ -0,0 +1,222 @@ +
+ + +
+
+ +
+ +
+ + \ No newline at end of file diff --git a/dist/dynamsoft-camera-enhancer@4.1.1/dist/dce.ui.html b/dist/dynamsoft-camera-enhancer@4.1.1/dist/dce.ui.html new file mode 100644 index 0000000..0960c88 --- /dev/null +++ b/dist/dynamsoft-camera-enhancer@4.1.1/dist/dce.ui.html @@ -0,0 +1,115 @@ + diff --git a/dist/dynamsoft-capture-vision-router@2.4.33/dist/cvr.d.ts b/dist/dynamsoft-capture-vision-router@2.4.33/dist/cvr.d.ts new file mode 100644 index 0000000..7c7632e --- /dev/null +++ b/dist/dynamsoft-capture-vision-router@2.4.33/dist/cvr.d.ts @@ -0,0 +1,663 @@ +import { ImageTag, CapturedResultItem, Quadrilateral, DSImageData, OriginalImageResultItem, ObservationParameters, IntermediateResult, IntermediateResultExtraInfo, PredetectedRegionsUnit, ColourImageUnit, ScaledDownColourImageUnit, GrayscaleImageUnit, TransformedGrayscaleImageUnit, EnhancedGrayscaleImageUnit, BinaryImageUnit, TextureDetectionResultUnit, TextureRemovedGrayscaleImageUnit, TextureRemovedBinaryImageUnit, ContoursUnit, LineSegmentsUnit, TextZonesUnit, TextRemovedBinaryImageUnit, ShortLinesUnit, EnumCapturedResultItemType, EnumGrayscaleTransformationMode, EnumGrayscaleEnhancementMode, ImageSourceAdapter } from 'dynamsoft-core'; + +declare const EnumBarcodeFormat: { + /**No barcode format in BarcodeFormat*/ + BF_NULL: bigint; + /**All supported formats in BarcodeFormat*/ + BF_ALL: bigint; + /**Use the default barcode format settings*/ + BF_DEFAULT: bigint; + /**Combined value of BF_CODABAR, BF_CODE_128, BF_CODE_39, BF_CODE_39_Extended, BF_CODE_93, BF_EAN_13, BF_EAN_8, INDUSTRIAL_25, BF_ITF, BF_UPC_A, BF_UPC_E, BF_MSI_CODE; */ + BF_ONED: bigint; + /**Combined value of BF_GS1_DATABAR_OMNIDIRECTIONAL, BF_GS1_DATABAR_TRUNCATED, BF_GS1_DATABAR_STACKED, BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL, BF_GS1_DATABAR_EXPANDED, BF_GS1_DATABAR_EXPANDED_STACKED, BF_GS1_DATABAR_LIMITED*/ + BF_GS1_DATABAR: bigint; + /**Code 39 */ + BF_CODE_39: bigint; + /**Code 128 */ + BF_CODE_128: bigint; + /**Code 93 */ + BF_CODE_93: bigint; + /**Codabar */ + BF_CODABAR: bigint; + /**Interleaved 2 of 5 */ + BF_ITF: bigint; + /**EAN-13 */ + BF_EAN_13: bigint; + /**EAN-8 */ + BF_EAN_8: bigint; + /**UPC-A */ + BF_UPC_A: bigint; + /**UPC-E */ + BF_UPC_E: bigint; + /**Industrial 2 of 5 */ + BF_INDUSTRIAL_25: bigint; + /**CODE39 Extended */ + BF_CODE_39_EXTENDED: bigint; + /**GS1 Databar Omnidirectional*/ + BF_GS1_DATABAR_OMNIDIRECTIONAL: bigint; + /**GS1 Databar Truncated*/ + BF_GS1_DATABAR_TRUNCATED: bigint; + /**GS1 Databar Stacked*/ + BF_GS1_DATABAR_STACKED: bigint; + /**GS1 Databar Stacked Omnidirectional*/ + BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL: bigint; + /**GS1 Databar Expanded*/ + BF_GS1_DATABAR_EXPANDED: bigint; + /**GS1 Databar Expaned Stacked*/ + BF_GS1_DATABAR_EXPANDED_STACKED: bigint; + /**GS1 Databar Limited*/ + BF_GS1_DATABAR_LIMITED: bigint; + /**Patch code. */ + BF_PATCHCODE: bigint; + /**PDF417 */ + BF_CODE_32: bigint; + /**PDF417 */ + BF_PDF417: bigint; + /**QRCode */ + BF_QR_CODE: bigint; + /**DataMatrix */ + BF_DATAMATRIX: bigint; + /**AZTEC */ + BF_AZTEC: bigint; + /**MAXICODE */ + BF_MAXICODE: bigint; + /**Micro QR Code*/ + BF_MICRO_QR: bigint; + /**Micro PDF417*/ + BF_MICRO_PDF417: bigint; + /**GS1 Composite Code*/ + BF_GS1_COMPOSITE: bigint; + /**MSI Code*/ + BF_MSI_CODE: bigint; + BF_CODE_11: bigint; + BF_TWO_DIGIT_ADD_ON: bigint; + BF_FIVE_DIGIT_ADD_ON: bigint; + BF_MATRIX_25: bigint; + /**Combined value of BF2_USPSINTELLIGENTMAIL, BF2_POSTNET, BF2_PLANET, BF2_AUSTRALIANPOST, BF2_RM4SCC.*/ + BF_POSTALCODE: bigint; + /**Nonstandard barcode */ + BF_NONSTANDARD_BARCODE: bigint; + /**USPS Intelligent Mail.*/ + BF_USPSINTELLIGENTMAIL: bigint; + /**Postnet.*/ + BF_POSTNET: bigint; + /**Planet.*/ + BF_PLANET: bigint; + /**Australian Post.*/ + BF_AUSTRALIANPOST: bigint; + /**Royal Mail 4-State Customer Barcode.*/ + BF_RM4SCC: bigint; + /**KIX.*/ + BF_KIX: bigint; + /**DotCode.*/ + BF_DOTCODE: bigint; + /**_PHARMACODE_ONE_TRACK.*/ + BF_PHARMACODE_ONE_TRACK: bigint; + /**PHARMACODE_TWO_TRACK.*/ + BF_PHARMACODE_TWO_TRACK: bigint; + /**PHARMACODE.*/ + BF_PHARMACODE: bigint; +}; +type EnumBarcodeFormat = bigint; +interface BarcodeDetails { +} +interface BarcodeResultItem extends CapturedResultItem { + format: EnumBarcodeFormat; + formatString: string; + text: string; + bytes: Uint8Array; + location: Quadrilateral; + confidence: number; + angle: number; + moduleSize: number; + details: BarcodeDetails; + isMirrored: boolean; + isDPM: boolean; +} +interface CharacterResult { + characterH: string; + characterM: string; + characterL: string; + characterHConfidence: number; + characterMConfidence: number; + characterLConfidence: number; + location: Quadrilateral; +} +interface TextLineResultItem extends CapturedResultItem { + text: string; + location: Quadrilateral; + confidence: number; + /** The following are new as of 2023/09/13 */ + characterResults: Array; +} +interface DetectedQuadResultItem extends CapturedResultItem { + location: Quadrilateral; + confidenceAsDocumentBoundary: number; +} +interface NormalizedImageResultItem extends CapturedResultItem { + imageData: DSImageData; + location: Quadrilateral; + toCanvas: () => HTMLCanvasElement; + toImage: (MIMEType: "image/png" | "image/jpeg") => HTMLImageElement; + toBlob: (MIMEType: "image/png" | "image/jpeg") => Promise; + saveToFile: (name: string, download?: boolean) => Promise; +} +declare enum EnumMappingStatus { + MS_NONE = 0, + MS_SUCCEEDED = 1, + MS_FAILED = 2 +} +declare enum EnumValidationStatus { + VS_NONE = 0, + VS_SUCCEEDED = 1, + VS_FAILED = 2 +} +interface ParsedResultItem extends CapturedResultItem { + codeType: string; + jsonString: string; + parsedFields: Array<{ + FieldName: string; + Value: string; + }>; + getFieldValue(fieldName: string): string; + getFieldMappingStatus: (fieldName: string) => EnumMappingStatus; + getFieldValidationStatus: (fieldName: string) => EnumValidationStatus; +} +interface CapturedResult { + readonly errorCode: number; + readonly errorString: string; + readonly originalImageHashId: string; + readonly originalImageTag: ImageTag; + readonly items: Array; + readonly barcodeResultItems?: Array; + readonly textLineResultItems?: Array; + readonly detectedQuadResultItems?: Array; + readonly normalizedImageResultItems?: Array; + readonly parsedResultItems?: Array; +} + +declare class CapturedResultReceiver { + /** + * Event triggered when a generic captured result is available, occurring each time an image finishes its processing. + * This event can be used for any result that does not fit into the specific categories of the other callback events. + * @param result The captured result, an instance of `CapturedResult`. + */ + onCapturedResultReceived?: (result: CapturedResult) => void; + /** + * Event triggered when the original image result is available. + * This event is used to handle the original image captured by an image source such as Dynamsoft Camera Enhancer. + * @param result The original image result, an instance of `OriginalImageResultItem`. + */ + onOriginalImageResultReceived?: (result: OriginalImageResultItem) => void; + [key: string]: any; +} + +interface BufferedCharacterItem { + character: string; + image: DSImageData; + features: Map; +} +interface BufferedCharacterItemSet { + items: Array; + characterClusters: Array; +} +interface CharacterCluster { + character: string; + mean: BufferedCharacterItem; +} +declare class BufferedItemsManager { + private _cvr; + constructor(cvr: any); + /** + * Gets the maximum number of buffered items. + * @returns Returns the maximum number of buffered items. + */ + getMaxBufferedItems(): Promise; + /** + * Sets the maximum number of buffered items. + * @param count the maximum number of buffered items + */ + setMaxBufferedItems(count: number): Promise; + /** + * Gets the buffered character items. + * @return the buffered character items + */ + getBufferedCharacterItemSet(): Promise>; +} + +declare class IntermediateResultReceiver { + private _observedResultUnitTypes; + private _observedTaskMap; + private _parameters; + /** + * Gets the observed parameters of the intermediate result receiver. Allowing for configuration of intermediate result observation. + * @return The observed parameters, of type ObservationParameters. The default parameters are to observe all intermediate result unit types and all tasks. + */ + getObservationParameters(): ObservationParameters; + onTaskResultsReceived?: (result: IntermediateResult, info: IntermediateResultExtraInfo) => void; + onPredetectedRegionsReceived?: (result: PredetectedRegionsUnit, info: IntermediateResultExtraInfo) => void; + onColourImageUnitReceived?: (result: ColourImageUnit, info: IntermediateResultExtraInfo) => void; + onScaledDownColourImageUnitReceived?: (result: ScaledDownColourImageUnit, info: IntermediateResultExtraInfo) => void; + onGrayscaleImageUnitReceived?: (result: GrayscaleImageUnit, info: IntermediateResultExtraInfo) => void; + onTransformedGrayscaleImageUnitReceived?: (result: TransformedGrayscaleImageUnit, info: IntermediateResultExtraInfo) => void; + onEnhancedGrayscaleImageUnitReceived?: (result: EnhancedGrayscaleImageUnit, info: IntermediateResultExtraInfo) => void; + onBinaryImageUnitReceived?: (result: BinaryImageUnit, info: IntermediateResultExtraInfo) => void; + onTextureDetectionResultUnitReceived?: (result: TextureDetectionResultUnit, info: IntermediateResultExtraInfo) => void; + onTextureRemovedGrayscaleImageUnitReceived?: (result: TextureRemovedGrayscaleImageUnit, info: IntermediateResultExtraInfo) => void; + onTextureRemovedBinaryImageUnitReceived?: (result: TextureRemovedBinaryImageUnit, info: IntermediateResultExtraInfo) => void; + onContoursUnitReceived?: (result: ContoursUnit, info: IntermediateResultExtraInfo) => void; + onLineSegmentsUnitReceived?: (result: LineSegmentsUnit, info: IntermediateResultExtraInfo) => void; + onTextZonesUnitReceived?: (result: TextZonesUnit, info: IntermediateResultExtraInfo) => void; + onTextRemovedBinaryImageUnitReceived?: (result: TextRemovedBinaryImageUnit, info: IntermediateResultExtraInfo) => void; + onShortLinesUnitReceived?: (result: ShortLinesUnit, info: IntermediateResultExtraInfo) => void; +} + +declare class IntermediateResultManager { + private _cvr; + private _irrRegistryState; + _intermediateResultReceiverSet: Set; + constructor(cvr: any); + /** + * Adds a `IntermediateResultReceiver` object as the receiver of intermediate results. + * @param receiver The receiver object, of type `IntermediateResultReceiver`. + */ + addResultReceiver(receiver: IntermediateResultReceiver): Promise; + /** + * Removes the specified `IntermediateResultReceiver` object. + * @param receiver The receiver object, of type `IntermediateResultReceiver`. + */ + removeResultReceiver(receiver: IntermediateResultReceiver): Promise; + /** + * Retrieves the original image data. + * + * @returns A promise that resolves when the operation has successfully completed. It provides the original image upon resolution. + */ + getOriginalImage(): DSImageData; +} + +declare enum EnumImageSourceState { + ISS_BUFFER_EMPTY = 0, + ISS_EXHAUSTED = 1 +} + +interface ImageSourceStateListener { + onImageSourceStateReceived?: (status: EnumImageSourceState) => void; +} + +interface SimplifiedBarcodeReaderSettings { + barcodeFormatIds: bigint; + expectedBarcodesCount: number; + grayscaleTransformationModes: Array; + grayscaleEnhancementModes: Array; + localizationModes: Array; + deblurModes: Array; + minResultConfidence: number; + minBarcodeTextLength: number; + barcodeTextRegExPattern: string; +} +interface SimplifiedLabelRecognizerSettings { + characterModelName: string; + lineStringRegExPattern: string; + grayscaleTransformationModes: Array; + grayscaleEnhancementModes: Array; +} +declare enum EnumImageColourMode { + /** Output image in color mode. */ + ICM_COLOUR = 0, + /** Output image in grayscale mode. */ + ICM_GRAYSCALE = 1, + /** Output image in binary mode. */ + ICM_BINARY = 2 +} +/** + * The `SimplifiedDocumentNormalizerSettings` interface defines simplified settings for document detection and normalization. + */ +interface SimplifiedDocumentNormalizerSettings { + /** Grayscale enhancement modes to apply for improving detection in challenging conditions. */ + grayscaleEnhancementModes: Array; + /** Grayscale transformation modes to apply, enhancing detection capability. */ + grayscaleTransformationModes: Array; + /** Color mode of the anticipated normalized page */ + colourMode: EnumImageColourMode; + /** Width and height of the anticipated normalized page. */ + pageSize: [number, number]; + /** Anticipated brightness level of the normalized image. */ + brightness: number; + /** Anticipated contrast level of the normalized image. */ + contrast: number; + /** + * Threshold for reducing the size of large images to speed up processing. + * If the size of the image's shorter edge exceeds this threshold, the image may be downscaled to decrease processing time. The standard setting is 2300. + */ + scaleDownThreshold: number; + /** The minimum ratio between the target document area and the total image area. Only those exceedingthis value will be output (measured in percentages).*/ + minQuadrilateralAreaRatio: number; + /** The number of documents expected to be detected.*/ + expectedDocumentsCount: number; +} +interface SimplifiedCaptureVisionSettings { + capturedResultItemTypes: EnumCapturedResultItemType; + roi: Quadrilateral; + roiMeasuredInPercentage: boolean; + timeout: number; + /** + * @brief Minimum time interval (in milliseconds) allowed between consecutive image captures. + * + * This property represents the minimum time interval (in milliseconds) that must + * elapse before the next image capture operation can be initiated. + * Setting a larger value for this property will introduce a delay between image + * captures, while setting a smaller value allows for more frequent captures. It + * can be used to reduce the computational frequency, which can effectively lower + * energy consumption. + * + * @note The actual time interval between captures may be longer than the specified + * minimum interval due to various factors, such as image processing time and + * hardware limitations. + * + */ + minImageCaptureInterval: number; + /** + * Specifies the basic settings for the barcode reader module. It is of type `SimplifiedBarcodeReaderSettings`. + */ + barcodeSettings: SimplifiedBarcodeReaderSettings; + /** + * Specifies the basic settings for the document normalizer module. It is of type `SimplifiedDocumentNormalizerSettings`. + */ + documentSettings: SimplifiedDocumentNormalizerSettings; + /** + * Specifies the basic settings for the label recognizer module. It is of type `SimplifiedLabelRecognizerSettings`. + */ + labelSettings: SimplifiedLabelRecognizerSettings; +} + +interface CapturedResultFilter { + onOriginalImageResultReceived?: (result: OriginalImageResultItem) => void; + [key: string]: any; +} + +declare class CaptureVisionRouter { + #private; + static _onLog: (message: string) => void; + static _defaultTemplate: string; + maxImageSideLength: number; + _instanceID: number; + private _dsImage; + private _loopReadVideoTimeoutId; + private _isPauseScan; + private _isOutputOriginalImage; + private _templateName; + private _isOpenDetectVerify; + private _isOpenNormalizeVerify; + private _isOpenBarcodeVerify; + private _isOpenLabelVerify; + private _minImageCaptureInterval; + private _averageProcessintTimeArray; + private _averageFetchImageTimeArray; + private _currentSettings; + private _averageTime; + /** + * Returns whether the `CaptureVisionRouter` instance has been disposed of. + * + * @returns Boolean indicating whether the `CaptureVisionRouter` instance has been disposed of. + */ + get disposed(): boolean; + /** + * Initializes a new instance of the `CaptureVisionRouter` class. + * + * @returns A promise that resolves with the initialized `CaptureVisionRouter` instance. + */ + static createInstance(): Promise; + private _singleFrameModeCallback; + private _singleFrameModeCallbackBind; + /** + * Sets up an image source to provide images for continuous processing. + * @param imageSource The image source which is compliant with the `ImageSourceAdapter` interface. + */ + setInput(imageSource: ImageSourceAdapter): void; + /** + * Returns the image source object. + */ + getInput(): ImageSourceAdapter; + /** + * Adds or removes listeners for image source state change. + */ + addImageSourceStateListener(listener: ImageSourceStateListener): void; + removeImageSourceStateListener(listener: ImageSourceStateListener): boolean; + /** + * Adds a `CapturedResultReceiver` object as the receiver of captured results. + * @param receiver The receiver object, of type `CapturedResultReceiver`. + */ + addResultReceiver(receiver: CapturedResultReceiver): void; + /** + * Removes the specified `CapturedResultReceiver` object. + * @param receiver The receiver object, of type `CapturedResultReceiver`. + */ + removeResultReceiver(receiver: CapturedResultReceiver): void; + private _setCrrRegistry; + /** + * Adds a `MultiFrameResultCrossFilter` object to filter non-essential results. + * @param filter The filter object, of type `MultiFrameResultCrossFilter`. + * + * @returns A promise that resolves when the operation has successfully completed. It does not provide any value upon resolution. + */ + addResultFilter(filter: CapturedResultFilter): Promise; + /** + * Removes the specified `MultiFrameResultCrossFilter` object. + * @param filter The filter object, of type `MultiFrameResultCrossFilter`. + * + * @returns A promise that resolves when the operation has successfully completed. It does not provide any value upon resolution. + */ + removeResultFilter(filter: CapturedResultFilter): Promise; + private _handleFilterUpdate; + /** + * Initiates a capturing process based on a specified template. This process is repeated for each image fetched from the source. + * @param templateName [Optional] Specifies a "CaptureVisionTemplate" to use. + * + * @returns A promise that resolves when the capturing process has successfully started. It does not provide any value upon resolution. + */ + startCapturing(templateName: string): Promise; + /** + * Stops the capturing process. + */ + stopCapturing(): void; + containsTask(templateName: string): Promise; + /** + * Video stream capture, recursive call, loop frame capture + */ + private _loopReadVideo; + private _reRunCurrnetFunc; + /** + * Processes a single image or a file containing a single image to derive important information. + * @param imageOrFile Specifies the image or file to be processed. The following data types are accepted: `Blob`, `HTMLImageElement`, `HTMLCanvasElement`, `HTMLVideoElement`, `DSImageData`, `string`. + * @param templateName [Optional] Specifies a "CaptureVisionTemplate" to use. + * + * @returns A promise that resolves with a `CapturedResult` object which contains the derived information from the image processed. + */ + capture(imageOrFile: Blob | string | DSImageData | HTMLImageElement | HTMLVideoElement | HTMLCanvasElement, templateName?: string): Promise; + private _captureDsimage; + private _captureUrl; + private _captureBase64; + private _captureBlob; + private _captureImage; + private _captureCanvas; + private _captureVideo; + private _captureInWorker; + /** + * Configures runtime settings using a provided JSON string, an object, or a URL pointing to an object, which contains settings for one or more `CaptureVisionTemplates`. + * @param settings A JSON string, an object, or a URL pointing to an object that contains settings for one or more `CaptureVisionTemplates`. + * + * @returns A promise that resolves when the operation has completed. It provides an object that describes the result. + */ + initSettings(settings: string | object): Promise; + /** + * Returns an object that contains settings for the specified `CaptureVisionTemplate`. + * @param templateName Specifies a `CaptureVisionTemplate` by its name. If passed "*", the returned object will contain all templates. + * + * @returns A promise that resolves with the object that contains settings for the specified template or all templates. + */ + outputSettings(templateName?: string): Promise; + /** + * Generates a Blob object or initiates a JSON file download containing the settings for the specified `CaptureVisionTemplate`. + * @param templateName Specifies a `CaptureVisionTemplate` by its name. If passed "*", the returned object will contain all templates. + * @param fileName Specifies the name of the file. + * @param download Boolean that specifies whether to initiates a file download. + * + * @returns A promise that resolves with the Blob object that contains settings for the specified template or all templates. + */ + outputSettingsToFile(templateName: string, fileName: string, download?: boolean): Promise; + getTemplateNames(): Promise>; + /** + * Retrieves a JSON object that contains simplified settings for the specified `CaptureVisionTemplate`. + * @param templateName Specifies a `CaptureVisionTemplate` by its name. + * + * @returns A promise that resolves with a JSON object, of type `SimplifiedCaptureVisionSettings`, which represents the simplified settings for the specified template. + * @remarks If the settings of the specified template are too complex, we cannot create a SimplifiedCaptureVisionSettings, and as a result, it will return an error. + */ + getSimplifiedSettings(templateName: string): Promise; + /** + * Updates the specified `CaptureVisionTemplate` with an updated `SimplifiedCaptureVisionSettings` object. + * @param templateName Specifies a `CaptureVisionTemplate` by its name. + * @param settings The `SimplifiedCaptureVisionSettings` object that contains updated settings. + * + * @returns A promise that resolves when the operation has completed. It provides an object that describes the result. + */ + updateSettings(templateName: string, settings: SimplifiedCaptureVisionSettings): Promise; + /** + * Restores all runtime settings to their original default values. + * + * @returns A promise that resolves when the operation has completed. It provides an object that describes the result. + */ + resetSettings(): Promise; + /** + * Returns an object, of type `BufferedItemsManager`, that manages buffered items. + * @returns The `BufferedItemsManager` object. + */ + getBufferedItemsManager(): BufferedItemsManager; + /** + * Returns an object, of type `IntermediateResultManager`, that manages intermediate results. + * + * @returns The `IntermediateResultManager` object. + */ + getIntermediateResultManager(): IntermediateResultManager; + parseRequiredResources(templateName: string): Promise<{ + models: string[]; + specss: string[]; + }>; + /** + * Releases all resources used by the `CaptureVisionRouter` instance. + * + * @returns A promise that resolves when the resources have been successfully released. It does not provide any value upon resolution. + */ + dispose(): Promise; + /** + * For Debug + */ + private _getInternalData; + private _getWasmFilterState; +} + +declare class CaptureVisionRouterModule { + private static _version; + static getVersion(): string; +} + +interface RawImageResultItem extends CapturedResultItem { + readonly imageData: DSImageData; +} + +declare enum EnumPresetTemplate { + /** + * @brief Versatile function for barcode reading, document detection, or text recognition. + */ + PT_DEFAULT = "Default", + /** + * @brief Scans a single barcode. + */ + PT_READ_BARCODES = "ReadBarcodes_Default", + /** + * @brief Identifies and reads any text present. + */ + PT_RECOGNIZE_TEXT_LINES = "RecognizeTextLines_Default", + /** + * @brief RIdentifies the edges of a document. + */ + PT_DETECT_DOCUMENT_BOUNDARIES = "DetectDocumentBoundaries_Default", + /** + * @brief Detects document edges and standardizes its format. + */ + PT_DETECT_AND_NORMALIZE_DOCUMENT = "DetectAndNormalizeDocument_Default", + /** + * @brief Adjusts a document to a standard format using detected borders. + */ + PT_NORMALIZE_DOCUMENT = "NormalizeDocument_Default", + /** + * @brief Represents a barcode reading mode where speed is prioritized. + * + * In this mode, the barcode reader will optimize for faster barcode detection + * and decoding, sacrificing some level of accuracy and read rate. It is suitable + * for situations where a quick response time is more important than perfect + * barcode recognition. + */ + PT_READ_BARCODES_SPEED_FIRST = "ReadBarcodes_SpeedFirst", + /** + * @brief Represents a barcode reading mode where barcode read rate is prioritized. + * + * In this mode, the barcode reader will optimize for higher barcode read rates, + * even if it may sometimes result in reduced accuracy and speed. It is suitable for + * scenarios where maximizing the number of successfully read barcodes is critical. + */ + PT_READ_BARCODES_READ_RATE_FIRST = "ReadBarcodes_ReadRateFirst", + /** + * @brief Represents a balanced barcode reading mode. + * + * This mode aims for a reasonable balance between speed and read rate in barcode + * recognition. It is suitable for most common use cases where a compromise between + * speed and read rate is acceptable. + */ + PT_READ_BARCODES_BALANCE = "ReadBarcodes_Balance", + /** + * @brief Represents a barcode reading mode for single barcode code detection. + * + * In this mode, the barcode reader will focus on detecting and decoding a single + * barcode code, ignoring any additional codes in the same image. It is efficient + * when the target image has only one barcode. + */ + PT_READ_SINGLE_BARCODE = "ReadBarcodes_Balanced", + /** + * @brief Represents a barcode reading mode optimized for dense barcode codes. + * + * This mode is designed to handle dense or closely packed barcode codes where + * accuracy is paramount. It may operate slower than other modes but is suitable + * for challenging scenarios where code density is high. + */ + PT_READ_DENSE_BARCODES = "ReadDenseBarcodes", + /** + * @brief Represents a barcode reading mode optimized for distant barcode codes. + * + * This mode is designed to scanning a barcode that is placed far from the device. + */ + PT_READ_DISTANT_BARCODES = "ReadDistantBarcodes", + /** + * @brief Represents a text recognition mode focused on recognizing numbers. + */ + PT_RECOGNIZE_NUMBERS = "RecognizeNumbers", + /** + * @brief Represents a text recognition mode focused on recognizing alphabetic characters (letters). + * + */ + PT_RECOGNIZE_LETTERS = "RecognizeLetters", + /** + * @brief Represents a text recognition mode that combines numbers and alphabetic characters (letters) recognition. + */ + PT_RECOGNIZE_NUMBERS_AND_LETTERS = "RecognizeNumbersAndLetters", + /** + * @brief Represents a text recognition mode that combines numbers and uppercase letters recognition. + */ + PT_RECOGNIZE_NUMBERS_AND_UPPERCASE_LETTERS = "RecognizeNumbersAndUppercaseLetters", + /** + * @brief Represents a text recognition mode focused on recognizing uppercase letters. + */ + PT_RECOGNIZE_UPPERCASE_LETTERS = "RecognizeUppercaseLetters" +} + +export { CaptureVisionRouter, CaptureVisionRouterModule, CapturedResult, CapturedResultFilter, CapturedResultReceiver, EnumImageSourceState, EnumPresetTemplate, ImageSourceStateListener, IntermediateResultReceiver, RawImageResultItem, SimplifiedCaptureVisionSettings }; diff --git a/dist/dynamsoft-capture-vision-router@2.4.33/dist/cvr.esm.js b/dist/dynamsoft-capture-vision-router@2.4.33/dist/cvr.esm.js new file mode 100644 index 0000000..e9f6632 --- /dev/null +++ b/dist/dynamsoft-capture-vision-router@2.4.33/dist/cvr.esm.js @@ -0,0 +1,2121 @@ +/*! + * Dynamsoft JavaScript Library + * @product Dynamsoft Capture Vision Router JS Edition + * @website http://www.dynamsoft.com + * @copyright Copyright 2024, Dynamsoft Corporation + * @author Dynamsoft + * @version "2.4.33" + * @fileoverview Dynamsoft JavaScript Library for Capture Vision + * More info on cvr JS: https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/capture-vision-router-module.html + */ +import { getNextTaskID, mapTaskCallBack, worker, CoreModule, workerAutoResources, mapPackageRegister, compareVersion, innerVersions, EnumCapturedResultItemType, loadWasm, handleEngineResourcePaths, EnumImagePixelFormat, EnumColourChannelUsageType, isDSImageData, requestResource, EnumIntermediateResultUnitType } from 'dynamsoft-core'; + +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global Reflect, Promise, SuppressedError, Symbol, Iterator */ + + +function __classPrivateFieldGet(receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +} + +function __classPrivateFieldSet(receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +} + +typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; +}; + +const isPromiseLike = (value) => (value && "object" === typeof value && "function" === typeof value.then); +// get original `Promise`, avoid other js change the `Promise` +const Promise$1 = (async () => { })().constructor; +class MutablePromise extends Promise$1 { + get status() { return this._s; } + get isPending() { return "pending" === this._s; } + get isFulfilled() { return "fulfilled" === this._s; } + get isRejected() { return "rejected" === this._s; } + get task() { return this._task; } + set task(value) { + //if(!this.isPending){ return; } + this._task = value; + let p; + if (isPromiseLike(value)) { + p = value; + } + else if ("function" === typeof value) { + p = new Promise$1(value); + } + if (p) { + (async () => { + try { + const ret = await p; + // make sure task not change + if (value === this._task) { + this.resolve(ret); + } + } + catch (reason) { + // make sure task not change + if (value === this._task) { + this.reject(reason); + } + } + })(); + } + } + get isEmpty() { return null == this._task; } + constructor(executor) { + let rs; + let rj; + const fn = (_rs, _rj) => { rs = _rs; rj = _rj; }; + super(fn); + // walkaround babel which can not extend builtin class + // let _this = this; + // let then = new Promise(fn).then; + // this.then = function(){ then.apply(_this, arguments) } as any; + this._s = "pending"; + this.resolve = (value) => { + if (this.isPending) { + if (isPromiseLike(value)) { + this.task = value; + } + else { + this._s = "fulfilled"; + rs(value); + } + } + }; + this.reject = (reason) => { + if (this.isPending) { + this._s = "rejected"; + rj(reason); + } + }; + this.task = executor; + } +} + +class BufferedItemsManager { + constructor(cvr) { + this._cvr = cvr; + } + /** + * Gets the maximum number of buffered items. + * @returns Returns the maximum number of buffered items. + */ + async getMaxBufferedItems() { + return await new Promise((rs, rj) => { + let taskID = getNextTaskID(); + mapTaskCallBack[taskID] = async (body) => { + if (body.success) { + return rs(body.count); + } + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + return rj(ex); + } + }; + worker.postMessage({ + type: "cvr_getMaxBufferedItems", + id: taskID, + instanceID: this._cvr._instanceID + }); + }); + } + ; + /** + * Sets the maximum number of buffered items. + * @param count the maximum number of buffered items + */ + async setMaxBufferedItems(count) { + return await new Promise((rs, rj) => { + let taskID = getNextTaskID(); + mapTaskCallBack[taskID] = async (body) => { + if (body.success) { + return rs(); + } + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + return rj(ex); + } + }; + worker.postMessage({ + type: "cvr_setMaxBufferedItems", + id: taskID, + instanceID: this._cvr._instanceID, + body: { + count + } + }); + }); + } + ; + /** + * Gets the buffered character items. + * @return the buffered character items + */ + async getBufferedCharacterItemSet() { + return await new Promise((rs, rj) => { + let taskID = getNextTaskID(); + mapTaskCallBack[taskID] = async (body) => { + if (body.success) { + return rs(body.itemSet); + } + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + return rj(ex); + } + }; + worker.postMessage({ + type: "cvr_getBufferedCharacterItemSet", + id: taskID, + instanceID: this._cvr._instanceID + }); + }); + } + ; +} + +var irrRegistryState = { + onTaskResultsReceived: false, + onTaskResultsReceivedForDce: false, + // section + onPredetectedRegionsReceived: false, + onLocalizedBarcodesReceived: false, + onDecodedBarcodesReceived: false, + onLocalizedTextLinesReceived: false, + onRecognizedTextLinesReceived: false, + onDetectedQuadsReceived: false, + onNormalizedImagesReceived: false, + // stage + onColourImageUnitReceived: false, + onScaledDownColourImageUnitReceived: false, + onGrayscaleImageUnitReceived: false, + onTransformedGrayscaleImageUnitReceived: false, + onEnhancedGrayscaleImageUnitReceived: false, + onBinaryImageUnitReceived: false, + onTextureDetectionResultUnitReceived: false, + onTextureRemovedGrayscaleImageUnitReceived: false, + onTextureRemovedBinaryImageUnitReceived: false, + onContoursUnitReceived: false, + onLineSegmentsUnitReceived: false, + onTextZonesUnitReceived: false, + onTextRemovedBinaryImageUnitReceived: false, + onRawTextLinesReceived: false, + onLongLinesUnitReceived: false, + onCornersUnitReceived: false, + onCandidateQuadEdgesUnitReceived: false, + onCandidateBarcodeZonesUnitReceived: false, + onScaledUpBarcodeImageUnitReceived: false, + onDeformationResistedBarcodeImageUnitReceived: false, + onComplementedBarcodeImageUnitReceived: false, + onShortLinesUnitReceived: false, + onLogicLinesReceived: false +}; + +const _handleIntermediateResultReceiver = (irr) => { + for (let irs in irr._irrRegistryState) { + irr._irrRegistryState[irs] = false; + } + for (let receiver of irr._intermediateResultReceiverSet) { + if (receiver.isDce || receiver.isFilter) { + irr._irrRegistryState.onTaskResultsReceivedForDce = true; + continue; + } + for (let r in receiver) { + if (!irr._irrRegistryState[r]) { + irr._irrRegistryState[r] = !!receiver[r]; + } + } + } +}; +class IntermediateResultManager { + constructor(cvr) { + this._irrRegistryState = irrRegistryState; + this._intermediateResultReceiverSet = new Set(); + this._cvr = cvr; + } + /** + * Adds a `IntermediateResultReceiver` object as the receiver of intermediate results. + * @param receiver The receiver object, of type `IntermediateResultReceiver`. + */ + async addResultReceiver(receiver) { + if (typeof receiver !== "object") + throw new Error(`Invalid receiver.`); + this._intermediateResultReceiverSet.add(receiver); + _handleIntermediateResultReceiver(this); + let observedResultUnitTypes = -1; + let observedTaskMap = {}; + if (!receiver.isDce && !receiver.isFilter) { + if (!receiver._observedResultUnitTypes || !receiver._observedTaskMap) { + throw new Error("Invalid Intermediate Result Receiver."); + } + observedResultUnitTypes = receiver._observedResultUnitTypes; + receiver._observedTaskMap.forEach((value, key) => { + observedTaskMap[key] = value; + }); + receiver._observedTaskMap.clear(); + } + return await new Promise((rs, rj) => { + let taskID = getNextTaskID(); + mapTaskCallBack[taskID] = async (body) => { + if (body.success) { + return rs(); + } + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + return rj(ex); + } + }; + worker.postMessage({ + type: "cvr_setIrrRegistry", + id: taskID, + instanceID: this._cvr._instanceID, + body: { + receiverObj: this._irrRegistryState, + observedResultUnitTypes: observedResultUnitTypes.toString(), + observedTaskMap + } + }); + }); + } + ; + /** + * Removes the specified `IntermediateResultReceiver` object. + * @param receiver The receiver object, of type `IntermediateResultReceiver`. + */ + async removeResultReceiver(receiver) { + this._intermediateResultReceiverSet.delete(receiver); + _handleIntermediateResultReceiver(this); + return await new Promise((rs, rj) => { + let taskID = getNextTaskID(); + mapTaskCallBack[taskID] = async (body) => { + if (body.success) { + return rs(); + } + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + return rj(ex); + } + }; + worker.postMessage({ + type: "cvr_setIrrRegistry", + id: taskID, + instanceID: this._cvr._instanceID, + body: { + receiverObj: this._irrRegistryState + } + }); + }); + } + ; + /** + * Retrieves the original image data. + * + * @returns A promise that resolves when the operation has successfully completed. It provides the original image upon resolution. + */ + getOriginalImage() { + return this._cvr._dsImage; + } + ; +} + +const bSSR = "undefined" == typeof self; + +const isWebWorker = "function" == typeof importScripts, curScriptDir = (() => { + if (!isWebWorker) { + if (!bSSR && document.currentScript) { + let src = document.currentScript.src, idxSearch = src.indexOf("?"); + if (-1 != idxSearch) src = src.substring(0, idxSearch); else { + let idxHash = src.indexOf("#"); + -1 != idxHash && (src = src.substring(0, idxHash)); + } + return src.substring(0, src.lastIndexOf("/") + 1); + } + return "./"; + } +})(), getAbsoluteDir = value => { + if (null == value && (value = "./"), bSSR || isWebWorker) ; else { + let a = document.createElement("a"); + a.href = value, value = a.href; + } + return value.endsWith("/") || (value += "/"), value; +}; + +var _a; +CoreModule.engineResourcePaths.cvr = { version: "2.4.33", path: curScriptDir, isInternal: true }; +workerAutoResources.cvr = { js: true, wasm: true, deps: ["license", "dip"] }; +mapPackageRegister.cvr = {}; +const stdVersion = "1.4.21"; +if ('string' != typeof CoreModule.engineResourcePaths.std && compareVersion(CoreModule.engineResourcePaths.std.version, stdVersion) < 0) { + CoreModule.engineResourcePaths.std = { version: stdVersion, path: getAbsoluteDir(curScriptDir + `../../dynamsoft-capture-vision-std@${stdVersion}/dist/`), isInternal: true }; +} +const dipVersion = "2.4.31"; +if (!CoreModule.engineResourcePaths.dip || 'string' != typeof CoreModule.engineResourcePaths.dip && compareVersion(CoreModule.engineResourcePaths.dip.version, dipVersion) < 0) { + CoreModule.engineResourcePaths.dip = { version: dipVersion, path: getAbsoluteDir(curScriptDir + `../../dynamsoft-image-processing@${dipVersion}/dist/`), isInternal: true }; +} +class CaptureVisionRouterModule { + static getVersion() { + return this._version; + } +} +CaptureVisionRouterModule._version = `${"2.4.33"}(Worker: ${(_a = innerVersions.cvr) === null || _a === void 0 ? void 0 : _a.worker}, Wasm: loading...`; + +const resultItemMapConfig = { + "barcodeResultItems": { + type: EnumCapturedResultItemType.CRIT_BARCODE, + reveiver: "onDecodedBarcodesReceived", + isNeedFilter: true + }, + "textLineResultItems": { + type: EnumCapturedResultItemType.CRIT_TEXT_LINE, + reveiver: "onRecognizedTextLinesReceived", + isNeedFilter: true + }, + "detectedQuadResultItems": { + type: EnumCapturedResultItemType.CRIT_DETECTED_QUAD, + reveiver: "onDetectedQuadsReceived", + isNeedFilter: false + }, + "normalizedImageResultItems": { + type: EnumCapturedResultItemType.CRIT_NORMALIZED_IMAGE, + reveiver: "onNormalizedImagesReceived", + isNeedFilter: false + }, + "parsedResultItems": { + type: EnumCapturedResultItemType.CRIT_PARSED_RESULT, + reveiver: "onParsedResultsReceived", + isNeedFilter: false + } +}; + +var EnumImageSourceState; +(function (EnumImageSourceState) { + EnumImageSourceState[EnumImageSourceState["ISS_BUFFER_EMPTY"] = 0] = "ISS_BUFFER_EMPTY"; + EnumImageSourceState[EnumImageSourceState["ISS_EXHAUSTED"] = 1] = "ISS_EXHAUSTED"; +})(EnumImageSourceState || (EnumImageSourceState = {})); + +function convertCoordinates(item, compressRate) { + if (item && item.location) { + const points = item.location.points; + for (let point of points) { + point.x = point.x / compressRate; + point.y = point.y / compressRate; + } + convertCoordinates(item.referencedItem, compressRate); + } +} +function checkIsDisposed(cvr) { + if (cvr.disposed) { + throw new Error(`"CaptureVisionRouter" instance has been disposed`); + } +} + +var _CaptureVisionRouter_isa, _CaptureVisionRouter_canvas, _CaptureVisionRouter_promiseStartScan, _CaptureVisionRouter_intermediateResultManager, _CaptureVisionRouter_bufferdItemsManager, _CaptureVisionRouter_resultReceiverSet, _CaptureVisionRouter_isaStateListenerSet, _CaptureVisionRouter_resultFilterSet, _CaptureVisionRouter_compressRate, _CaptureVisionRouter_isScanner, _CaptureVisionRouter_innerUseTag, _CaptureVisionRouter_isDestroyed; +const _intermediateResultReceiverOfFilter = { + onTaskResultsReceived: () => { }, + isFilter: true +}; +class CaptureVisionRouter { + constructor() { + this.maxImageSideLength = ["iPhone", "Android", "HarmonyOS"].includes(CoreModule.browserInfo.OS) ? 2048 : 4096; + this._instanceID = undefined; + this._dsImage = null; + this._isPauseScan = true; + this._isOutputOriginalImage = false; + this._isOpenDetectVerify = false; + this._isOpenNormalizeVerify = false; + this._isOpenBarcodeVerify = false; + this._isOpenLabelVerify = false; + this._minImageCaptureInterval = 0; + this._averageProcessintTimeArray = []; + this._averageFetchImageTimeArray = []; + this._currentSettings = null; + this._averageTime = 999; + _CaptureVisionRouter_isa.set(this, null); + _CaptureVisionRouter_canvas.set(this, null); + _CaptureVisionRouter_promiseStartScan.set(this, null); + _CaptureVisionRouter_intermediateResultManager.set(this, null); + _CaptureVisionRouter_bufferdItemsManager.set(this, null); + _CaptureVisionRouter_resultReceiverSet.set(this, new Set()); + _CaptureVisionRouter_isaStateListenerSet.set(this, new Set()); + _CaptureVisionRouter_resultFilterSet.set(this, new Set()); + _CaptureVisionRouter_compressRate.set(this, 0); + _CaptureVisionRouter_isScanner.set(this, false); + _CaptureVisionRouter_innerUseTag.set(this, false); + _CaptureVisionRouter_isDestroyed.set(this, false); + this._singleFrameModeCallbackBind = this._singleFrameModeCallback.bind(this); + } + /** + * Returns whether the `CaptureVisionRouter` instance has been disposed of. + * + * @returns Boolean indicating whether the `CaptureVisionRouter` instance has been disposed of. + */ + get disposed() { + return __classPrivateFieldGet(this, _CaptureVisionRouter_isDestroyed, "f"); + } + /** + * Initializes a new instance of the `CaptureVisionRouter` class. + * + * @returns A promise that resolves with the initialized `CaptureVisionRouter` instance. + */ + static async createInstance() { + if (!mapPackageRegister.license) { + throw Error('Module `license` is not existed.'); + } + await mapPackageRegister.license.dynamsoft(); + await loadWasm(["cvr"]); + const captureVisionRouter = new CaptureVisionRouter(); + const p = new MutablePromise(); + let taskID = getNextTaskID(); + mapTaskCallBack[taskID] = async (body) => { + var _a; + if (body.success) { + captureVisionRouter._instanceID = body.instanceID; + captureVisionRouter._currentSettings = JSON.parse(JSON.parse(body.outputSettings).data); + CaptureVisionRouterModule._version = `${"2.4.33"}(Worker: ${(_a = innerVersions.cvr) === null || _a === void 0 ? void 0 : _a.worker}, Wasm: ${body.version})`; + __classPrivateFieldSet(captureVisionRouter, _CaptureVisionRouter_innerUseTag, true, "f"); + __classPrivateFieldSet(captureVisionRouter, _CaptureVisionRouter_intermediateResultManager, captureVisionRouter.getIntermediateResultManager(), "f"); + __classPrivateFieldSet(captureVisionRouter, _CaptureVisionRouter_innerUseTag, false, "f"); + p.resolve(captureVisionRouter); + } + else { + const err = Error(body.message); + if (body.stack) { + err.stack = body.stack; + } + p.reject(err); + } + }; + worker.postMessage({ + type: 'cvr_createInstance', + id: taskID, + }); + return p; + } + ; + async _singleFrameModeCallback(dsImage) { + for (let receiver of __classPrivateFieldGet(this, _CaptureVisionRouter_resultReceiverSet, "f")) { + this._isOutputOriginalImage && receiver.onOriginalImageResultReceived && receiver.onOriginalImageResultReceived({ imageData: dsImage }); + } + const copyDsImageData = { + bytes: new Uint8Array(dsImage.bytes), + width: dsImage.width, + height: dsImage.height, + stride: dsImage.stride, + format: dsImage.format, + tag: dsImage.tag + }; + if (!this._templateName) + this._templateName = this._currentSettings.CaptureVisionTemplates[0].Name; + const result = await this.capture(copyDsImageData, this._templateName); + result.originalImageTag = dsImage.tag; + const resultCommonPart = { + originalImageHashId: result.originalImageHashId, + originalImageTag: result.originalImageTag, + errorCode: result.errorCode, + errorString: result.errorString + }; + for (let receiver of __classPrivateFieldGet(this, _CaptureVisionRouter_resultReceiverSet, "f")) { + if (receiver.isDce) { + receiver.onCapturedResultReceived(result, { + isDetectVerifyOpen: false, + isNormalizeVerifyOpen: false, + isBarcodeVerifyOpen: false, + isLabelVerifyOpen: false, + }); + continue; + } + for (let resultItem in resultItemMapConfig) { + const _itemType = resultItem; + const _itemConfig = resultItemMapConfig[_itemType]; + receiver[_itemConfig.reveiver] && result[_itemType] && receiver[_itemConfig.reveiver](Object.assign(Object.assign({}, resultCommonPart), { [_itemType]: result[_itemType] })); + } + receiver.onCapturedResultReceived && receiver.onCapturedResultReceived(result); + } + } + /** + * Sets up an image source to provide images for continuous processing. + * @param imageSource The image source which is compliant with the `ImageSourceAdapter` interface. + */ + setInput(imageSource) { + checkIsDisposed(this); + if (!imageSource) { + __classPrivateFieldSet(this, _CaptureVisionRouter_isa, null, "f"); + return; + } + __classPrivateFieldSet(this, _CaptureVisionRouter_isa, imageSource, "f"); + if (imageSource.isCameraEnhancer) { + if (__classPrivateFieldGet(this, _CaptureVisionRouter_intermediateResultManager, "f")) { + __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f")._intermediateResultReceiver.isDce = true; + __classPrivateFieldGet(this, _CaptureVisionRouter_intermediateResultManager, "f").addResultReceiver(__classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f")._intermediateResultReceiver); + } + const cameraView = __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").getCameraView(); + if (cameraView) { + const dceCrr = cameraView._capturedResultReceiver; + dceCrr.isDce = true; + __classPrivateFieldGet(this, _CaptureVisionRouter_resultReceiverSet, "f").add(dceCrr); + } + // TODO: think about off. + //(imageSource as any).on("singleFrameAcquired", this._singleFrameModeCallback); + } + } + ; + /** + * Returns the image source object. + */ + getInput() { + return __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f"); + } + ; + /** + * Adds or removes listeners for image source state change. + */ + addImageSourceStateListener(listener) { + checkIsDisposed(this); + if (typeof listener !== "object") + return console.warn(`Invalid ISA state listener.`); + if (!listener || !Object.keys(listener)) + return; + __classPrivateFieldGet(this, _CaptureVisionRouter_isaStateListenerSet, "f").add(listener); + } + ; + removeImageSourceStateListener(listener) { + checkIsDisposed(this); + return __classPrivateFieldGet(this, _CaptureVisionRouter_isaStateListenerSet, "f").delete(listener); + } + /** + * Adds a `CapturedResultReceiver` object as the receiver of captured results. + * @param receiver The receiver object, of type `CapturedResultReceiver`. + */ + addResultReceiver(receiver) { + checkIsDisposed(this); + if (typeof receiver !== "object") + throw new Error(`Invalid receiver.`); + if (!receiver || !Object.keys(receiver).length) + return; + __classPrivateFieldGet(this, _CaptureVisionRouter_resultReceiverSet, "f").add(receiver); + this._setCrrRegistry(); + } + ; + /** + * Removes the specified `CapturedResultReceiver` object. + * @param receiver The receiver object, of type `CapturedResultReceiver`. + */ + removeResultReceiver(receiver) { + checkIsDisposed(this); + __classPrivateFieldGet(this, _CaptureVisionRouter_resultReceiverSet, "f").delete(receiver); + this._setCrrRegistry(); + } + async _setCrrRegistry() { + const receiver = { + onCapturedResultReceived: false, + onDecodedBarcodesReceived: false, + onRecognizedTextLinesReceived: false, + onDetectedQuadsReceived: false, + onNormalizedImagesReceived: false, + onParsedResultsReceived: false + }; + for (let r of __classPrivateFieldGet(this, _CaptureVisionRouter_resultReceiverSet, "f")) { + if (r.isDce) + continue; + receiver.onCapturedResultReceived = !!r["onCapturedResultReceived"]; + receiver.onDecodedBarcodesReceived = !!r["onDecodedBarcodesReceived"]; + receiver.onRecognizedTextLinesReceived = !!r["onRecognizedTextLinesReceived"]; + receiver.onDetectedQuadsReceived = !!r["onDetectedQuadsReceived"]; + receiver.onNormalizedImagesReceived = !!r["onNormalizedImagesReceived"]; + receiver.onParsedResultsReceived = !!r["onParsedResultsReceived"]; + } + const p = new MutablePromise(); + let taskID = getNextTaskID(); + mapTaskCallBack[taskID] = async (body) => { + if (body.success) { + p.resolve(); + } + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + p.reject(); + } + }; + worker.postMessage({ + type: "cvr_setCrrRegistry", + id: taskID, + instanceID: this._instanceID, + body: { + receiver: JSON.stringify(receiver) + } + }); + return p; + } + /** + * Adds a `MultiFrameResultCrossFilter` object to filter non-essential results. + * @param filter The filter object, of type `MultiFrameResultCrossFilter`. + * + * @returns A promise that resolves when the operation has successfully completed. It does not provide any value upon resolution. + */ + async addResultFilter(filter) { + checkIsDisposed(this); + if (!filter || typeof filter !== "object" || !Object.keys(filter).length) { + return console.warn(`Invalid filter.`); + } + __classPrivateFieldGet(this, _CaptureVisionRouter_resultFilterSet, "f").add(filter); + // When cvr.addResultFilter is called, this method will automatically be invoked to batch update the filter statuses that were set before calling addResultFilter. + filter._dynamsoft(); + await this._handleFilterUpdate(); + } + ; + /** + * Removes the specified `MultiFrameResultCrossFilter` object. + * @param filter The filter object, of type `MultiFrameResultCrossFilter`. + * + * @returns A promise that resolves when the operation has successfully completed. It does not provide any value upon resolution. + */ + async removeResultFilter(filter) { + checkIsDisposed(this); + __classPrivateFieldGet(this, _CaptureVisionRouter_resultFilterSet, "f").delete(filter); + await this._handleFilterUpdate(); + } + async _handleFilterUpdate() { + /** + * Each time a "filter" is added or removed, the "filter set" will be re-traversed, + * and _intermediateResultReceiverOfFilter will be added when necessary. + * This ensures that _intermediateResultReceiverOfFilter is not left in the "filter set" when the "filter set" is empty or when no filter in the "filter set" has isLatestOverlappingEnabled set to true. + */ + __classPrivateFieldGet(this, _CaptureVisionRouter_intermediateResultManager, "f").removeResultReceiver(_intermediateResultReceiverOfFilter); + if (__classPrivateFieldGet(this, _CaptureVisionRouter_resultFilterSet, "f").size === 0) { + this._isOpenBarcodeVerify = false; + this._isOpenLabelVerify = false; + this._isOpenDetectVerify = false; + this._isOpenNormalizeVerify = false; + const _verificationEnabled = { + [EnumCapturedResultItemType.CRIT_BARCODE]: false, + [EnumCapturedResultItemType.CRIT_TEXT_LINE]: false, + [EnumCapturedResultItemType.CRIT_DETECTED_QUAD]: false, + [EnumCapturedResultItemType.CRIT_NORMALIZED_IMAGE]: false + }; + const _duplicateFilterEnabled = { + [EnumCapturedResultItemType.CRIT_BARCODE]: false, + [EnumCapturedResultItemType.CRIT_TEXT_LINE]: false, + [EnumCapturedResultItemType.CRIT_DETECTED_QUAD]: false, + [EnumCapturedResultItemType.CRIT_NORMALIZED_IMAGE]: false + }; + await _enableResultCrossVerification(this, _verificationEnabled); + await _enableResultDeduplication(this, _duplicateFilterEnabled); + return; + } + for (let filter of __classPrivateFieldGet(this, _CaptureVisionRouter_resultFilterSet, "f")) { + this._isOpenBarcodeVerify = filter.isResultCrossVerificationEnabled(EnumCapturedResultItemType.CRIT_BARCODE); + this._isOpenLabelVerify = filter.isResultCrossVerificationEnabled(EnumCapturedResultItemType.CRIT_TEXT_LINE); + this._isOpenDetectVerify = filter.isResultCrossVerificationEnabled(EnumCapturedResultItemType.CRIT_DETECTED_QUAD); + this._isOpenNormalizeVerify = filter.isResultCrossVerificationEnabled(EnumCapturedResultItemType.CRIT_NORMALIZED_IMAGE); + if (filter.isLatestOverlappingEnabled(EnumCapturedResultItemType.CRIT_BARCODE)) { + const _isExist = [...__classPrivateFieldGet(this, _CaptureVisionRouter_intermediateResultManager, "f")._intermediateResultReceiverSet.values()].find((receiver) => { return receiver.isFilter; }); + if (!_isExist) { + __classPrivateFieldGet(this, _CaptureVisionRouter_intermediateResultManager, "f").addResultReceiver(_intermediateResultReceiverOfFilter); + } + } + await _enableResultCrossVerification(this, filter.verificationEnabled); + await _enableResultDeduplication(this, filter.duplicateFilterEnabled); + await _setDuplicateForgetTime(this, filter.duplicateForgetTime); + } + } + /** + * Initiates a capturing process based on a specified template. This process is repeated for each image fetched from the source. + * @param templateName [Optional] Specifies a "CaptureVisionTemplate" to use. + * + * @returns A promise that resolves when the capturing process has successfully started. It does not provide any value upon resolution. + */ + async startCapturing(templateName) { + var _a, _b; + checkIsDisposed(this); + if (!this._isPauseScan) + return; + if (!__classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f")) + throw new Error(`'ImageSourceAdapter' is not set. call 'setInput' before 'startCapturing'`); + if (!templateName) + templateName = CaptureVisionRouter._defaultTemplate; + const tasks = await this.containsTask(templateName); + await loadWasm(tasks); + /* + * Why do we need to re-add an existing "filter" when calling "startCapturing"? + * Because there may be a situation where the corresponding wasm module has not been loaded when adding "filter", + * so after checking the required wasm module in "startCapturing", we will add "filter" again to ensure that "filter" takes effect in wasm. + * + * Why not check for the required wasm when adding the "filter"? + * Because each result type has a default value, we cannot know which wasm modules are actually needed through the passed "filter" + * + * This part of the logic has room for optimization. will do. + **/ + for (let filter of __classPrivateFieldGet(this, _CaptureVisionRouter_resultFilterSet, "f")) { + await this.addResultFilter(filter); + } + if (tasks.includes("dlr") && !((_a = mapPackageRegister.dlr) === null || _a === void 0 ? void 0 : _a.bLoadConfusableCharsData)) { + const _engineResourcePaths = handleEngineResourcePaths(CoreModule.engineResourcePaths); + await ((_b = mapPackageRegister.dlr) === null || _b === void 0 ? void 0 : _b.loadRecognitionData("ConfusableChars", _engineResourcePaths.dlr)); + } + if (__classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").isCameraEnhancer) { + if (tasks.includes("ddn")) { + __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").setPixelFormat(EnumImagePixelFormat.IPF_ABGR_8888); + } + else { + __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").setPixelFormat(EnumImagePixelFormat.IPF_GRAYSCALED); + } + } + if (__classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").singleFrameMode !== undefined && __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").singleFrameMode !== "disabled") { + this._templateName = templateName; + __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").on("singleFrameAcquired", this._singleFrameModeCallbackBind); + return; + } + const colourChannelUsageType = __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").getColourChannelUsageType(); + if (colourChannelUsageType === EnumColourChannelUsageType.CCUT_AUTO) { + __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").setColourChannelUsageType(tasks.includes("ddn") ? + EnumColourChannelUsageType.CCUT_FULL_CHANNEL + : + EnumColourChannelUsageType.CCUT_Y_CHANNEL_ONLY); + } + if (__classPrivateFieldGet(this, _CaptureVisionRouter_promiseStartScan, "f") && __classPrivateFieldGet(this, _CaptureVisionRouter_promiseStartScan, "f").isPending) + return __classPrivateFieldGet(this, _CaptureVisionRouter_promiseStartScan, "f"); + __classPrivateFieldSet(this, _CaptureVisionRouter_promiseStartScan, new MutablePromise((rs, rj) => { + if (this.disposed) + return; + let taskID = getNextTaskID(); + mapTaskCallBack[taskID] = async (body) => { + if (!__classPrivateFieldGet(this, _CaptureVisionRouter_promiseStartScan, "f") || __classPrivateFieldGet(this, _CaptureVisionRouter_promiseStartScan, "f").isFulfilled) + return; + if (body.success) { + this._isPauseScan = false; + this._isOutputOriginalImage = body.isOutputOriginalImage; + this._loopReadVideoTimeoutId && clearTimeout(this._loopReadVideoTimeoutId); + this._loopReadVideoTimeoutId = setTimeout(async () => { + if (this._minImageCaptureInterval !== -1) { + __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").startFetching(); + } + this._loopReadVideo(templateName); + // try { + // await this._loopReadVideo(templateName); + // } catch (ex) { + // rj(ex); + // } + rs(); + }, 0); + } + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + return rj(ex); + } + }; + worker.postMessage({ + type: "cvr_startCapturing", + id: taskID, + instanceID: this._instanceID, + body: { templateName } + }); + }), "f"); + return await __classPrivateFieldGet(this, _CaptureVisionRouter_promiseStartScan, "f"); + } + /** + * Stops the capturing process. + */ + stopCapturing() { + checkIsDisposed(this); + if (!__classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f")) + return; + if (__classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").isCameraEnhancer) { + if (__classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").singleFrameMode !== undefined && __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").singleFrameMode !== "disabled") { + __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").off("singleFrameAcquired", this._singleFrameModeCallbackBind); + return; + } + } + _clearVerifyList(this); + __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").stopFetching(); + this._averageProcessintTimeArray = []; + this._averageTime = 999; + this._isPauseScan = true; + __classPrivateFieldSet(this, _CaptureVisionRouter_promiseStartScan, null, "f"); + __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").setColourChannelUsageType(EnumColourChannelUsageType.CCUT_AUTO); + } + async containsTask(templateName) { + checkIsDisposed(this); + return await new Promise((rs, rj) => { + let taskID = getNextTaskID(); + mapTaskCallBack[taskID] = async (body) => { + if (body.success) { + return rs(JSON.parse(body.tasks)); + } + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + return rj(ex); + } + }; + worker.postMessage({ + type: "cvr_containsTask", + id: taskID, + instanceID: this._instanceID, + body: { + templateName + } + }); + }); + } + /** + * Video stream capture, recursive call, loop frame capture + */ + async _loopReadVideo(templateName) { + if ((this.disposed || this._isPauseScan)) { + return; + } + __classPrivateFieldSet(this, _CaptureVisionRouter_isScanner, true, "f"); + if (__classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").isBufferEmpty()) { + if (__classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").hasNextImageToFetch()) { + for (let listener of __classPrivateFieldGet(this, _CaptureVisionRouter_isaStateListenerSet, "f")) { + listener.onImageSourceStateReceived && listener.onImageSourceStateReceived(EnumImageSourceState.ISS_BUFFER_EMPTY); + } + } + else if (!(__classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").hasNextImageToFetch())) { + for (let listener of __classPrivateFieldGet(this, _CaptureVisionRouter_isaStateListenerSet, "f")) { + listener.onImageSourceStateReceived && listener.onImageSourceStateReceived(EnumImageSourceState.ISS_EXHAUSTED); + } + } + } + if (this._minImageCaptureInterval === -1 || __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").isBufferEmpty()) { + try { + if (__classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").isBufferEmpty() && CaptureVisionRouter._onLog) + CaptureVisionRouter._onLog(`buffer is empty so fetch image`); + if (CaptureVisionRouter._onLog) { + CaptureVisionRouter._onLog(`DCE: start fetching a frame: ${Date.now()}`); + } + this._dsImage = __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").fetchImage(); + if (CaptureVisionRouter._onLog) { + CaptureVisionRouter._onLog(`DCE: finish fetching a frame: ${Date.now()}`); + } + __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").setImageFetchInterval(this._averageTime); + } + catch (e) { + this._reRunCurrnetFunc(templateName); + return; + } + } + else { + __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").setImageFetchInterval(this._averageTime - (this._dsImage && this._dsImage.tag ? this._dsImage.tag.timeSpent : 0)); + this._dsImage = __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").getImage(); + if (this._dsImage.tag) { + if (Date.now() - this._dsImage.tag.timeStamp > 200) { + this._reRunCurrnetFunc(templateName); + return; + } + } + } + if (!this._dsImage) { + this._reRunCurrnetFunc(templateName); + return; + } + for (let receiver of __classPrivateFieldGet(this, _CaptureVisionRouter_resultReceiverSet, "f")) { + this._isOutputOriginalImage && receiver.onOriginalImageResultReceived && receiver.onOriginalImageResultReceived({ imageData: this._dsImage }); + } + // capture + // try { + // const captureStartTime = Date.now(); + // const result = await this._captureDsimage(this._dsImage, templateName); + // if (CaptureVisionRouter._onLog) CaptureVisionRouter._onLog(`no js handle time: ${Date.now() - captureStartTime}`); + // if (this._isPauseScan) { + // this._reRunCurrnetFunc(templateName); + // return; + // } + // (result as any).originalImageTag = this._dsImage.tag ? this._dsImage.tag : null; + // const resultCommonPart = { + // originalImageHashId: result.originalImageHashId, + // originalImageTag: result.originalImageTag, + // errorCode: result.errorCode, + // errorString: result.errorString + // } + // for (let receiver of this.#resultReceiverSet) { + // if ((receiver as any).isDce) { + // const drawTime = Date.now(); + // (receiver as any).onCapturedResultReceived(result, { + // isDetectVerifyOpen: this._isOpenDetectVerify, + // isNormalizeVerifyOpen: this._isOpenNormalizeVerify, + // isBarcodeVerifyOpen: this._isOpenBarcodeVerify, + // isLabelVerifyOpen: this._isOpenLabelVerify, + // }); + // if (CaptureVisionRouter._onLog) { + // const time = Date.now() - drawTime; + // if (time > 10) CaptureVisionRouter._onLog(`draw result time: ${time}`) + // }; + // } + // receiver.onDecodedBarcodesReceived && result.barcodeResultItems && receiver.onDecodedBarcodesReceived({ + // ...resultCommonPart, + // barcodeResultItems: result.barcodeResultItems.filter((item: any) => { return !item.isFilter }) + // } as DecodedBarcodesResult); + // receiver.onRecognizedTextLinesReceived && result.textLineResultItems && receiver.onRecognizedTextLinesReceived({ + // ...resultCommonPart, + // textLineResultItems: result.textLineResultItems.filter((item: any) => { return !item.isFilter }) + // } as RecognizedTextLinesResult); + // receiver.onDetectedQuadsReceived && result.detectedQuadResultItems && receiver.onDetectedQuadsReceived({ + // ...resultCommonPart, + // detectedQuadResultItems: result.detectedQuadResultItems.filter((item: any) => { return !item.isFilter }) + // } as DetectedQuadsResult); + // receiver.onNormalizedImagesReceived && result.normalizedImageResultItems && receiver.onNormalizedImagesReceived({ + // ...resultCommonPart, + // normalizedImageResultItems: result.normalizedImageResultItems.filter((item: any) => { return !item.isFilter }) + // } as NormalizedImagesResult); + // receiver.onParsedResultsReceived && result.parsedResultItems && receiver.onParsedResultsReceived({ + // ...resultCommonPart, + // parsedResultItems: result.parsedResultItems.filter((item: any) => { return !item.isFilter }) + // } as ParsedResult); + // if (receiver.onCapturedResultReceived && !(receiver as any).isDce) { + // (result as any).items = result.items.filter((item: any) => { return !item.isFilter }); + // if ((result as any).barcodeResultItems) (result as any).barcodeResultItems = result.barcodeResultItems.filter((item: any) => { return !item.isFilter }); + // if ((result as any).textLineResultItems) (result as any).textLineResultItems = result.textLineResultItems.filter((item: any) => { return !item.isFilter }); + // if ((result as any).detectedQuadResultItems) (result as any).detectedQuadResultItems = result.detectedQuadResultItems.filter((item: any) => { return !item.isFilter }); + // if ((result as any).normalizedImageResultItems) (result as any).normalizedImageResultItems = result.normalizedImageResultItems.filter((item: any) => { return !item.isFilter }); + // if ((result as any).parsedResultItems) (result as any).parsedResultItems = result.parsedResultItems.filter((item: any) => { return !item.isFilter }); + // receiver.onCapturedResultReceived(result); + // } + // } + // const fetchImageCalculateStartTime = Date.now(); + // if (this._minImageCaptureInterval > -1) { + // if (this._averageProcessintTimeArray.length === 5) this._averageProcessintTimeArray.shift(); + // if (this._averageFetchImageTimeArray.length === 5) this._averageFetchImageTimeArray.shift(); + // this._averageProcessintTimeArray.push(Date.now() - captureStartTime); + // //this._averageTime = this._averageProcessintTimeArray.reduce((time, value) => time + value, 0) / this._averageProcessintTimeArray.length; + // this._averageFetchImageTimeArray.push((this._dsImage && this._dsImage.tag ? (this._dsImage.tag as any).timeSpent : 0)); + // this._averageTime = Math.min(...this._averageProcessintTimeArray) - Math.max(...this._averageFetchImageTimeArray); + // this._averageTime = this._averageTime > 0 ? this._averageTime : 0; + // if (CaptureVisionRouter._onLog) { + // CaptureVisionRouter._onLog(`minImageCaptureInterval: ${this._minImageCaptureInterval}`); + // CaptureVisionRouter._onLog(`averageProcessintTimeArray: ${this._averageProcessintTimeArray}`); + // CaptureVisionRouter._onLog(`averageFetchImageTimeArray: ${this._averageFetchImageTimeArray}`); + // CaptureVisionRouter._onLog(`averageTime: ${this._averageTime}`); + // }; + // } + // if (CaptureVisionRouter._onLog) { + // const time = Date.now() - fetchImageCalculateStartTime; + // if (time > 10) CaptureVisionRouter._onLog(`fetch image calculate time: ${time}`) + // }; + // if (CaptureVisionRouter._onLog) CaptureVisionRouter._onLog(`time finish decode: ${Date.now()}`) + // if (CaptureVisionRouter._onLog) CaptureVisionRouter._onLog(`main time: ${Date.now() - captureStartTime}`); + // if (CaptureVisionRouter._onLog) CaptureVisionRouter._onLog("===================================================="); + // this._loopReadVideoTimeoutId && clearTimeout(this._loopReadVideoTimeoutId); + // if (this._minImageCaptureInterval > 0 && this._minImageCaptureInterval >= this._averageTime) { + // this._loopReadVideoTimeoutId = setTimeout(() => { + // this._loopReadVideo(templateName); + // }, this._minImageCaptureInterval - this._averageTime); + // } else { + // this._loopReadVideoTimeoutId = setTimeout(() => { + // this._loopReadVideo(templateName); + // }, Math.max(this._minImageCaptureInterval, 0)); + // } + // } catch (ex) { + // this.#isa.stopFetching(); + // this._loopReadVideoTimeoutId && clearTimeout(this._loopReadVideoTimeoutId); + // this._loopReadVideoTimeoutId = setTimeout(() => { + // this.#isa.startFetching(); + // this._loopReadVideo(templateName); + // }, Math.max(this._minImageCaptureInterval, 1000)); + // if (!(ex.message === 'platform error')) { + // throw ex; + // } + // } + const captureStartTime = Date.now(); + this._captureDsimage(this._dsImage, templateName).then(async (result) => { + if (CaptureVisionRouter._onLog) + CaptureVisionRouter._onLog(`no js handle time: ${Date.now() - captureStartTime}`); + if (this._isPauseScan) { + this._reRunCurrnetFunc(templateName); + return; + } + result.originalImageTag = this._dsImage.tag ? this._dsImage.tag : null; + const resultCommonPart = { + originalImageHashId: result.originalImageHashId, + originalImageTag: result.originalImageTag, + errorCode: result.errorCode, + errorString: result.errorString + }; + for (let receiver of __classPrivateFieldGet(this, _CaptureVisionRouter_resultReceiverSet, "f")) { + if (receiver.isDce) { + const drawTime = Date.now(); + receiver.onCapturedResultReceived(result, { + isDetectVerifyOpen: this._isOpenDetectVerify, + isNormalizeVerifyOpen: this._isOpenNormalizeVerify, + isBarcodeVerifyOpen: this._isOpenBarcodeVerify, + isLabelVerifyOpen: this._isOpenLabelVerify, + }); + if (CaptureVisionRouter._onLog) { + const time = Date.now() - drawTime; + if (time > 10) + CaptureVisionRouter._onLog(`draw result time: ${time}`); + } + continue; + } + for (let resultItem in resultItemMapConfig) { + const _itemType = resultItem; + const _itemConfig = resultItemMapConfig[_itemType]; + receiver[_itemConfig.reveiver]; + receiver[_itemConfig.reveiver] && result[_itemType] && receiver[_itemConfig.reveiver](Object.assign(Object.assign({}, resultCommonPart), { [_itemType]: result[_itemType].filter((item) => { + return !_itemConfig.isNeedFilter || !item.isFilter; + }) })); + if (result[_itemType]) + result[_itemType] = result[_itemType].filter((item) => { + return !_itemConfig.isNeedFilter || !item.isFilter; + }); + } + if (receiver.onCapturedResultReceived) { + result.items = result.items.filter((item) => { + return [EnumCapturedResultItemType.CRIT_DETECTED_QUAD, EnumCapturedResultItemType.CRIT_NORMALIZED_IMAGE].includes(item.type) || !item.isFilter; + }); + receiver.onCapturedResultReceived(result); + } + } + const fetchImageCalculateStartTime = Date.now(); + if (this._minImageCaptureInterval > -1) { + if (this._averageProcessintTimeArray.length === 5) + this._averageProcessintTimeArray.shift(); + if (this._averageFetchImageTimeArray.length === 5) + this._averageFetchImageTimeArray.shift(); + this._averageProcessintTimeArray.push(Date.now() - captureStartTime); + //this._averageTime = this._averageProcessintTimeArray.reduce((time, value) => time + value, 0) / this._averageProcessintTimeArray.length; + this._averageFetchImageTimeArray.push((this._dsImage && this._dsImage.tag ? this._dsImage.tag.timeSpent : 0)); + this._averageTime = Math.min(...this._averageProcessintTimeArray) - Math.max(...this._averageFetchImageTimeArray); + this._averageTime = this._averageTime > 0 ? this._averageTime : 0; + if (CaptureVisionRouter._onLog) { + CaptureVisionRouter._onLog(`minImageCaptureInterval: ${this._minImageCaptureInterval}`); + CaptureVisionRouter._onLog(`averageProcessintTimeArray: ${this._averageProcessintTimeArray}`); + CaptureVisionRouter._onLog(`averageFetchImageTimeArray: ${this._averageFetchImageTimeArray}`); + CaptureVisionRouter._onLog(`averageTime: ${this._averageTime}`); + } + } + if (CaptureVisionRouter._onLog) { + const time = Date.now() - fetchImageCalculateStartTime; + if (time > 10) + CaptureVisionRouter._onLog(`fetch image calculate time: ${time}`); + } + if (CaptureVisionRouter._onLog) + CaptureVisionRouter._onLog(`time finish decode: ${Date.now()}`); + if (CaptureVisionRouter._onLog) + CaptureVisionRouter._onLog(`main time: ${Date.now() - captureStartTime}`); + if (CaptureVisionRouter._onLog) + CaptureVisionRouter._onLog("===================================================="); + this._loopReadVideoTimeoutId && clearTimeout(this._loopReadVideoTimeoutId); + if (this._minImageCaptureInterval > 0 && this._minImageCaptureInterval >= this._averageTime) { + this._loopReadVideoTimeoutId = setTimeout(() => { + this._loopReadVideo(templateName); + }, this._minImageCaptureInterval - this._averageTime); + } + else { + this._loopReadVideoTimeoutId = setTimeout(() => { + this._loopReadVideo(templateName); + }, Math.max(this._minImageCaptureInterval, 0)); + } + }).catch((ex) => { + __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").stopFetching(); + if (ex.errorCode && ex.errorCode === 0) { + this._loopReadVideoTimeoutId && clearTimeout(this._loopReadVideoTimeoutId); + this._loopReadVideoTimeoutId = setTimeout(() => { + __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f").startFetching(); + this._loopReadVideo(templateName); + }, Math.max(this._minImageCaptureInterval, 1000)); + } + if (!(ex.message === 'platform error')) { + setTimeout(() => { throw ex; }, 0); + } + }); + } + _reRunCurrnetFunc(templateName) { + this._loopReadVideoTimeoutId && clearTimeout(this._loopReadVideoTimeoutId); + this._loopReadVideoTimeoutId = setTimeout(() => { + this._loopReadVideo(templateName); + }, 0); + } + /** + * Processes a single image or a file containing a single image to derive important information. + * @param imageOrFile Specifies the image or file to be processed. The following data types are accepted: `Blob`, `HTMLImageElement`, `HTMLCanvasElement`, `HTMLVideoElement`, `DSImageData`, `string`. + * @param templateName [Optional] Specifies a "CaptureVisionTemplate" to use. + * + * @returns A promise that resolves with a `CapturedResult` object which contains the derived information from the image processed. + */ + async capture(imageOrFile, templateName) { + var _a, _b; + checkIsDisposed(this); + if (!templateName) + templateName = CaptureVisionRouter._defaultTemplate; + const tasks = await this.containsTask(templateName); + await loadWasm(tasks); + if (tasks.includes("dlr") && !((_a = mapPackageRegister.dlr) === null || _a === void 0 ? void 0 : _a.bLoadConfusableCharsData)) { + const _engineResourcePaths = handleEngineResourcePaths(CoreModule.engineResourcePaths); + await ((_b = mapPackageRegister.dlr) === null || _b === void 0 ? void 0 : _b.loadRecognitionData("ConfusableChars", _engineResourcePaths.dlr)); + } + let result; + __classPrivateFieldSet(this, _CaptureVisionRouter_isScanner, false, "f"); + if (isDSImageData(imageOrFile)) { + result = await this._captureDsimage(imageOrFile, templateName); + } + else if (typeof imageOrFile === "string") { + if (imageOrFile.substring(0, 11) == "data:image/") { + result = await this._captureBase64(imageOrFile, templateName); + } + else { + result = await this._captureUrl(imageOrFile, templateName); + } + } + else if (imageOrFile instanceof Blob) { + result = await this._captureBlob(imageOrFile, templateName); + } + else if (imageOrFile instanceof HTMLImageElement) { + result = await this._captureImage(imageOrFile, templateName); + } + else if (imageOrFile instanceof HTMLCanvasElement) { + result = await this._captureCanvas(imageOrFile, templateName); + } + else if (imageOrFile instanceof HTMLVideoElement) { + result = await this._captureVideo(imageOrFile, templateName); + } + else { + throw new TypeError("'capture(imageOrFile, templateName)': Type of 'imageOrFile' should be 'DSImageData', 'Url', 'Base64', 'Blob', 'HTMLImageElement', 'HTMLCanvasElement', 'HTMLVideoElement'."); + } + return result; + } + ; + async _captureDsimage(imageOrFile, templateName) { + return await this._captureInWorker(imageOrFile, templateName); + } + async _captureUrl(imageOrFile, templateName) { + let blob = await requestResource(imageOrFile, "blob"); + return await this._captureBlob(blob, templateName); + } + async _captureBase64(base64Str, templateName) { + base64Str = base64Str.substring(base64Str.indexOf(',') + 1); + let binaryStr = atob(base64Str); + let n = binaryStr.length; + let u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = binaryStr.charCodeAt(n); + } + return await this._captureBlob(new Blob([u8arr]), templateName); + } + async _captureBlob(imageOrFile, templateName) { + const useObjurlToDrawBlobToImg = async function (blob) { + return await new Promise((rs, rj) => { + let objUrl = URL.createObjectURL(blob); + let image = new Image(); + image.src = objUrl; + image.onload = () => { + URL.revokeObjectURL(image.dbrObjUrl); // relese memory + rs(image); + }; + image.onerror = ev => { + rj(new Error("Can't convert blob to image : " + (ev instanceof Event ? ev.type : ev))); + }; + }); + }; + let imageBitmap = null; + let img = null; + if (typeof createImageBitmap !== "undefined") { + try { + imageBitmap = await createImageBitmap(imageOrFile); + } + catch (ex) { + // createImageBitmap maybe fail in a lot of sense + // although objurl can pass + } + } + if (!imageBitmap) { + img = await useObjurlToDrawBlobToImg(imageOrFile); + } + let results = await this._captureImage(imageBitmap || img, templateName); + if (imageBitmap) { + imageBitmap.close(); + } // release memory + return results; + } + async _captureImage(image, templateName) { + let imgW = image instanceof HTMLImageElement ? image.naturalWidth : image.width; + let imgH = image instanceof HTMLImageElement ? image.naturalHeight : image.height; + let maxNaturalWH = Math.max(imgW, imgH); + let acceptW, acceptH; + if (maxNaturalWH > this.maxImageSideLength) { + __classPrivateFieldSet(this, _CaptureVisionRouter_compressRate, this.maxImageSideLength / maxNaturalWH, "f"); + acceptW = Math.round(imgW * __classPrivateFieldGet(this, _CaptureVisionRouter_compressRate, "f")); + acceptH = Math.round(imgH * __classPrivateFieldGet(this, _CaptureVisionRouter_compressRate, "f")); + } + else { + acceptW = imgW; + acceptH = imgH; + } + if (!__classPrivateFieldGet(this, _CaptureVisionRouter_canvas, "f")) { + __classPrivateFieldSet(this, _CaptureVisionRouter_canvas, document.createElement('canvas'), "f"); + } + const cvs = __classPrivateFieldGet(this, _CaptureVisionRouter_canvas, "f"); + if (cvs.width !== acceptW || cvs.height !== acceptH) { + cvs.width = acceptW; + cvs.height = acceptH; + } + if (!cvs.ctx2d) { + cvs.ctx2d = cvs.getContext('2d', { willReadFrequently: true }); + } + const ctx = cvs.ctx2d; + ctx.drawImage(image, 0, 0, imgW, imgH, 0, 0, acceptW, acceptH); + if (image.dbrObjUrl) { + URL.revokeObjectURL(image.dbrObjUrl); // relese memory + } + return await this._captureCanvas(cvs, templateName); + } + async _captureCanvas(canvas, templateName) { + if (canvas.crossOrigin && "anonymous" != canvas.crossOrigin) { // canvas has crossOrigin to detect if cors, is native api + throw "cors"; + } + if ([canvas.width, canvas.height].includes(0)) { + throw Error(`The width or height of the 'canvas' is 0.`); + } + const ctx = canvas.ctx2d || canvas.getContext("2d", { willReadFrequently: true }); + const imgData = Uint8Array.from(ctx.getImageData(0, 0, canvas.width, canvas.height).data); + const DsImageData = { + bytes: imgData, + width: canvas.width, + height: canvas.height, + stride: canvas.width * 4, + format: 10, + }; + return await this._captureInWorker(DsImageData, templateName); + } + async _captureVideo(video, templateName) { + if (video.crossOrigin && "anonymous" != video.crossOrigin) { + throw "cors"; + } + let imgW = video.videoWidth; + let imgH = video.videoHeight; + let maxNaturalWH = Math.max(imgW, imgH); + let acceptW, acceptH; + if (maxNaturalWH > this.maxImageSideLength) { + __classPrivateFieldSet(this, _CaptureVisionRouter_compressRate, this.maxImageSideLength / maxNaturalWH, "f"); + acceptW = Math.round(imgW * __classPrivateFieldGet(this, _CaptureVisionRouter_compressRate, "f")); + acceptH = Math.round(imgH * __classPrivateFieldGet(this, _CaptureVisionRouter_compressRate, "f")); + } + else { + acceptW = imgW; + acceptH = imgH; + } + if (!__classPrivateFieldGet(this, _CaptureVisionRouter_canvas, "f")) { + __classPrivateFieldSet(this, _CaptureVisionRouter_canvas, document.createElement('canvas'), "f"); + } + const cvs = __classPrivateFieldGet(this, _CaptureVisionRouter_canvas, "f"); + if (cvs.width !== acceptW || cvs.height !== acceptH) { + cvs.width = acceptW; + cvs.height = acceptH; + } + if (!cvs.ctx2d) { + cvs.ctx2d = cvs.getContext('2d', { willReadFrequently: true }); + } + const ctx = cvs.ctx2d; + ctx.drawImage(video, 0, 0, imgW, imgH, 0, 0, acceptW, acceptH); + return await this._captureCanvas(cvs, templateName); + } + async _captureInWorker(DsImageData, templateName) { + const { bytes, width, height, stride, format } = DsImageData; + let taskID = getNextTaskID(); + const p = new MutablePromise(); + mapTaskCallBack[taskID] = async (body) => { + var _a, _b; + if (body.success) { + const getResultFromWorkerTime = Date.now(); + if (CaptureVisionRouter._onLog) { + CaptureVisionRouter._onLog(`get result time from worker: ${getResultFromWorkerTime}`); + CaptureVisionRouter._onLog(`worker to main time consume: ${getResultFromWorkerTime - body.workerReturnMsgTime}`); + } + try { + const captureResult = body.captureResult; + if (captureResult.errorCode !== 0) { + let error = new Error(captureResult.errorString); + error.errorCode = captureResult.errorCode; + return p.reject(error); + } + DsImageData.bytes = body.bytes; + for (let item of captureResult.items) { + if (__classPrivateFieldGet(this, _CaptureVisionRouter_compressRate, "f") !== 0) { + convertCoordinates(item, __classPrivateFieldGet(this, _CaptureVisionRouter_compressRate, "f")); + } + if (item.type === EnumCapturedResultItemType.CRIT_ORIGINAL_IMAGE) { + item.imageData = DsImageData; + } + else if (item.type === EnumCapturedResultItemType.CRIT_NORMALIZED_IMAGE) { + (_a = mapPackageRegister.ddn) === null || _a === void 0 ? void 0 : _a.handleNormalizedImageResultItem(item); + } + else if (item.type === EnumCapturedResultItemType.CRIT_PARSED_RESULT) { + (_b = mapPackageRegister.dcp) === null || _b === void 0 ? void 0 : _b.handleParsedResultItem(item); + } + } + if (__classPrivateFieldGet(this, _CaptureVisionRouter_isScanner, "f")) { + for (let filter of __classPrivateFieldGet(this, _CaptureVisionRouter_resultFilterSet, "f")) { + filter.onDecodedBarcodesReceived(captureResult); + filter.onRecognizedTextLinesReceived(captureResult); + filter.onDetectedQuadsReceived(captureResult); + filter.onNormalizedImagesReceived(captureResult); + } + } + for (let itemName in resultItemMapConfig) { + const _itemName = itemName; + const filterItems = captureResult.items.filter((item) => { + return item.type === resultItemMapConfig[_itemName].type; + }); + if (filterItems.length) { + captureResult[itemName] = filterItems; + } + } + if (!this._isPauseScan || !__classPrivateFieldGet(this, _CaptureVisionRouter_isScanner, "f")) { + const irs = captureResult.intermediateResult; // irs => intermediateResults + if (irs) { + let irrSetCount = 0; + for (let irr of __classPrivateFieldGet(this, _CaptureVisionRouter_intermediateResultManager, "f")._intermediateResultReceiverSet) { + irrSetCount++; + for (let cb of irs) { + if (cb.info.callbackName === "onTaskResultsReceived") { + for (let unit of cb.intermediateResultUnits) { + unit.originalImageTag = DsImageData.tag ? DsImageData.tag : null; + } + if (irr[cb.info.callbackName]) { + irr[cb.info.callbackName]({ intermediateResultUnits: cb.intermediateResultUnits }, cb.info); + } + } + else { + if (irr[cb.info.callbackName]) { + irr[cb.info.callbackName](cb.result, cb.info); + } + } + if (irrSetCount === __classPrivateFieldGet(this, _CaptureVisionRouter_intermediateResultManager, "f")._intermediateResultReceiverSet.size) { + delete cb.info.callbackName; + } + } + } + } + } + captureResult && captureResult.hasOwnProperty("intermediateResult") && delete captureResult.intermediateResult; + __classPrivateFieldSet(this, _CaptureVisionRouter_compressRate, 0, "f"); + return p.resolve(captureResult); + } + catch (ex) { + return p.reject(ex); + } + } + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + return p.reject(ex); + } + }; + if (CaptureVisionRouter._onLog) { + CaptureVisionRouter._onLog(`send buffer to worker: ${Date.now()}`); + } + worker.postMessage({ + type: "cvr_capture", + id: taskID, + instanceID: this._instanceID, + body: { + bytes, + width, + height, + stride, + format, + templateName: templateName ? templateName : "", + isScanner: __classPrivateFieldGet(this, _CaptureVisionRouter_isScanner, "f") + } + }, [bytes.buffer]); + return p; + } + ; + /** + * Configures runtime settings using a provided JSON string, an object, or a URL pointing to an object, which contains settings for one or more `CaptureVisionTemplates`. + * @param settings A JSON string, an object, or a URL pointing to an object that contains settings for one or more `CaptureVisionTemplates`. + * + * @returns A promise that resolves when the operation has completed. It provides an object that describes the result. + */ + async initSettings(settings) { + checkIsDisposed(this); + if (!settings || !["string", "object"].includes(typeof settings)) { + return console.error("Invalid template."); + } + if (typeof settings === "string") { + if (!settings.trimStart().startsWith("{")) { + settings = await requestResource(settings, "text"); + } + } + else if (typeof settings === "object") { + settings = JSON.stringify(settings); + } + return await new Promise((rs, rj) => { + let taskID = getNextTaskID(); + mapTaskCallBack[taskID] = async (body) => { + if (body.success) { + const response = JSON.parse(body.response); + if (response.errorCode !== 0) { + let error = new Error(response.errorString ? response.errorString : "Init Settings Failed."); + error.errorCode = response.errorCode; + return rj(error); + } + const _parsedSettings = JSON.parse(settings); + this._currentSettings = _parsedSettings; + let modules = []; + let templateNames = _parsedSettings.CaptureVisionTemplates; + for (let i = 0; i < templateNames.length; i++) { + let tasks = await this.containsTask(templateNames[i].Name); + modules = modules.concat(tasks); + } + await loadWasm([...new Set(modules)]); + this._isOutputOriginalImage = (this._currentSettings.CaptureVisionTemplates[0].OutputOriginalImage === 1); + CaptureVisionRouter._defaultTemplate = this._currentSettings.CaptureVisionTemplates[0].Name; + return rs(response); + } + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + return rj(ex); + } + }; + worker.postMessage({ + type: "cvr_initSettings", + id: taskID, + instanceID: this._instanceID, + body: { settings }, + }); + }); + } + ; + /** + * Returns an object that contains settings for the specified `CaptureVisionTemplate`. + * @param templateName Specifies a `CaptureVisionTemplate` by its name. If passed "*", the returned object will contain all templates. + * + * @returns A promise that resolves with the object that contains settings for the specified template or all templates. + */ + async outputSettings(templateName) { + checkIsDisposed(this); + return await new Promise((rs, rj) => { + let taskID = getNextTaskID(); + mapTaskCallBack[taskID] = async (body) => { + if (body.success) { + const response = JSON.parse(body.response); + if (response.errorCode !== 0) { + let error = new Error(response.errorString); + error.errorCode = response.errorCode; + return rj(error); + } + return rs(JSON.parse(response.data)); + } + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + return rj(ex); + } + }; + worker.postMessage({ + type: "cvr_outputSettings", + id: taskID, + instanceID: this._instanceID, + body: { + templateName: templateName ? templateName : "*" + } + }); + }); + } + ; + /** + * Generates a Blob object or initiates a JSON file download containing the settings for the specified `CaptureVisionTemplate`. + * @param templateName Specifies a `CaptureVisionTemplate` by its name. If passed "*", the returned object will contain all templates. + * @param fileName Specifies the name of the file. + * @param download Boolean that specifies whether to initiates a file download. + * + * @returns A promise that resolves with the Blob object that contains settings for the specified template or all templates. + */ + async outputSettingsToFile(templateName, fileName, download) { + const settings = await this.outputSettings(templateName); + const jsonBlob = new Blob([JSON.stringify(settings, null, 2, function (_, value) { + if (value instanceof Array) { + return JSON.stringify(value); + } + else { + return value; + } + }, 2)], { type: "application/json" }); + if (download) { + const downloadLink = document.createElement("a"); + downloadLink.href = URL.createObjectURL(jsonBlob); + if (fileName.endsWith(".json")) { + fileName = fileName.replace(".json", ""); + } + downloadLink.download = `${fileName}.json`; + downloadLink.onclick = () => { + setTimeout(() => { + URL.revokeObjectURL(downloadLink.href); + }, 500); + }; + downloadLink.click(); + } + return jsonBlob; + } + async getTemplateNames() { + checkIsDisposed(this); + return await new Promise((rs, rj) => { + let taskID = getNextTaskID(); + mapTaskCallBack[taskID] = async (body) => { + if (body.success) { + const response = JSON.parse(body.response); + if (response.errorCode !== 0) { + let error = new Error(response.errorString); + error.errorCode = response.errorCode; + return rj(error); + } + return rs(JSON.parse(response.data)); + } + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + return rj(ex); + } + }; + worker.postMessage({ + type: "cvr_getTemplateNames", + id: taskID, + instanceID: this._instanceID + }); + }); + } + /** + * Retrieves a JSON object that contains simplified settings for the specified `CaptureVisionTemplate`. + * @param templateName Specifies a `CaptureVisionTemplate` by its name. + * + * @returns A promise that resolves with a JSON object, of type `SimplifiedCaptureVisionSettings`, which represents the simplified settings for the specified template. + * @remarks If the settings of the specified template are too complex, we cannot create a SimplifiedCaptureVisionSettings, and as a result, it will return an error. + */ + async getSimplifiedSettings(templateName) { + checkIsDisposed(this); + if (!templateName) + templateName = this._currentSettings.CaptureVisionTemplates[0].Name; + const tasks = await this.containsTask(templateName); + await loadWasm(tasks); + return await new Promise((rs, rj) => { + let taskID = getNextTaskID(); + mapTaskCallBack[taskID] = async (body) => { + if (body.success) { + const response = JSON.parse(body.response); + if (response.errorCode !== 0) { + let error = new Error(response.errorString); + error.errorCode = response.errorCode; + return rj(error); + } + const responseData = JSON.parse(response.data, (k, v) => { + if (k === "barcodeFormatIds") { + return BigInt(v); + } + return v; + }); + responseData.minImageCaptureInterval = this._minImageCaptureInterval; + return rs(responseData); + } + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + return rj(ex); + } + }; + worker.postMessage({ + type: "cvr_getSimplifiedSettings", + id: taskID, + instanceID: this._instanceID, + body: { templateName } + }); + }); + } + ; + /** + * Updates the specified `CaptureVisionTemplate` with an updated `SimplifiedCaptureVisionSettings` object. + * @param templateName Specifies a `CaptureVisionTemplate` by its name. + * @param settings The `SimplifiedCaptureVisionSettings` object that contains updated settings. + * + * @returns A promise that resolves when the operation has completed. It provides an object that describes the result. + */ + async updateSettings(templateName, settings) { + checkIsDisposed(this); + const tasks = await this.containsTask(templateName); + await loadWasm(tasks); + return await new Promise((rs, rj) => { + let taskID = getNextTaskID(); + mapTaskCallBack[taskID] = async (body) => { + if (body.success) { + const response = JSON.parse(body.response); + if (settings.minImageCaptureInterval && settings.minImageCaptureInterval >= -1) { + this._minImageCaptureInterval = settings.minImageCaptureInterval; + } + this._isOutputOriginalImage = body.isOutputOriginalImage; + if (response.errorCode !== 0) { + let error = new Error(response.errorString ? response.errorString : "Update Settings Failed."); + error.errorCode = response.errorCode; + return rj(error); + } + this._currentSettings = await this.outputSettings("*"); + return rs(response); + } + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + return rj(ex); + } + }; + worker.postMessage({ + type: "cvr_updateSettings", + id: taskID, + instanceID: this._instanceID, + body: { + settings, + templateName + } + }); + }); + } + /** + * Restores all runtime settings to their original default values. + * + * @returns A promise that resolves when the operation has completed. It provides an object that describes the result. + */ + async resetSettings() { + checkIsDisposed(this); + return await new Promise((rs, rj) => { + let taskID = getNextTaskID(); + mapTaskCallBack[taskID] = async (body) => { + if (body.success) { + const response = JSON.parse(body.response); + if (response.errorCode !== 0) { + let error = new Error(response.errorString ? response.errorString : "Reset Settings Failed."); + error.errorCode = response.errorCode; + return rj(error); + } + this._currentSettings = await this.outputSettings("*"); + return rs(response); + } + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + return rj(ex); + } + }; + worker.postMessage({ + type: "cvr_resetSettings", + id: taskID, + instanceID: this._instanceID + }); + }); + } + ; + /** + * Returns an object, of type `BufferedItemsManager`, that manages buffered items. + * @returns The `BufferedItemsManager` object. + */ + getBufferedItemsManager() { + if (!__classPrivateFieldGet(this, _CaptureVisionRouter_bufferdItemsManager, "f")) { + __classPrivateFieldSet(this, _CaptureVisionRouter_bufferdItemsManager, new BufferedItemsManager(this), "f"); + } + return __classPrivateFieldGet(this, _CaptureVisionRouter_bufferdItemsManager, "f"); + } + /** + * Returns an object, of type `IntermediateResultManager`, that manages intermediate results. + * + * @returns The `IntermediateResultManager` object. + */ + getIntermediateResultManager() { + checkIsDisposed(this); + if (!__classPrivateFieldGet(this, _CaptureVisionRouter_innerUseTag, "f") && CoreModule.bSupportIRTModule !== 0) { + throw new Error("The current license does not support the use of intermediate results."); + } + if (!__classPrivateFieldGet(this, _CaptureVisionRouter_intermediateResultManager, "f")) { + __classPrivateFieldSet(this, _CaptureVisionRouter_intermediateResultManager, new IntermediateResultManager(this), "f"); + } + return __classPrivateFieldGet(this, _CaptureVisionRouter_intermediateResultManager, "f"); + } + ; + async parseRequiredResources(templateName) { + checkIsDisposed(this); + return await new Promise((rs, rj) => { + let taskID = getNextTaskID(); + mapTaskCallBack[taskID] = async (body) => { + if (body.success) { + return rs(JSON.parse(body.resources)); + } + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + return rj(ex); + } + }; + worker.postMessage({ + type: "cvr_parseRequiredResources", + id: taskID, + instanceID: this._instanceID, + body: { + templateName + } + }); + }); + } + /** + * Releases all resources used by the `CaptureVisionRouter` instance. + * + * @returns A promise that resolves when the resources have been successfully released. It does not provide any value upon resolution. + */ + async dispose() { + checkIsDisposed(this); + if (__classPrivateFieldGet(this, _CaptureVisionRouter_promiseStartScan, "f")) { + this.stopCapturing(); + } + __classPrivateFieldSet(this, _CaptureVisionRouter_isa, null, "f"); + __classPrivateFieldGet(this, _CaptureVisionRouter_resultReceiverSet, "f").clear(); + __classPrivateFieldGet(this, _CaptureVisionRouter_isaStateListenerSet, "f").clear(); + __classPrivateFieldGet(this, _CaptureVisionRouter_resultFilterSet, "f").clear(); + __classPrivateFieldGet(this, _CaptureVisionRouter_intermediateResultManager, "f")._intermediateResultReceiverSet.clear(); + __classPrivateFieldSet(this, _CaptureVisionRouter_isDestroyed, true, "f"); + // this._captureStateListenerSet.clear(); + let taskID = getNextTaskID(); + mapTaskCallBack[taskID] = (body) => { + if (body.success) ; + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + throw ex; + } + }; + worker.postMessage({ + type: 'cvr_dispose', + id: taskID, + instanceID: this._instanceID + }); + } + ; + /** + * For Debug + */ + _getInternalData() { + return { + isa: __classPrivateFieldGet(this, _CaptureVisionRouter_isa, "f"), + promiseStartScan: __classPrivateFieldGet(this, _CaptureVisionRouter_promiseStartScan, "f"), + intermediateResultManager: __classPrivateFieldGet(this, _CaptureVisionRouter_intermediateResultManager, "f"), + bufferdItemsManager: __classPrivateFieldGet(this, _CaptureVisionRouter_bufferdItemsManager, "f"), + resultReceiverSet: __classPrivateFieldGet(this, _CaptureVisionRouter_resultReceiverSet, "f"), + isaStateListenerSet: __classPrivateFieldGet(this, _CaptureVisionRouter_isaStateListenerSet, "f"), + resultFilterSet: __classPrivateFieldGet(this, _CaptureVisionRouter_resultFilterSet, "f"), + compressRate: __classPrivateFieldGet(this, _CaptureVisionRouter_compressRate, "f"), + canvas: __classPrivateFieldGet(this, _CaptureVisionRouter_canvas, "f"), + isScanner: __classPrivateFieldGet(this, _CaptureVisionRouter_isScanner, "f"), + innerUseTag: __classPrivateFieldGet(this, _CaptureVisionRouter_innerUseTag, "f"), + isDestroyed: __classPrivateFieldGet(this, _CaptureVisionRouter_isDestroyed, "f") + }; + } + async _getWasmFilterState() { + return await new Promise((rs, rj) => { + let taskID = getNextTaskID(); + mapTaskCallBack[taskID] = async (body) => { + if (body.success) { + const response = JSON.parse(body.response); + return rs(response); + } + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + return rj(ex); + } + }; + worker.postMessage({ + type: "cvr_getWasmFilterState", + id: taskID, + instanceID: this._instanceID + }); + }); + } +} +_CaptureVisionRouter_isa = new WeakMap(), _CaptureVisionRouter_canvas = new WeakMap(), _CaptureVisionRouter_promiseStartScan = new WeakMap(), _CaptureVisionRouter_intermediateResultManager = new WeakMap(), _CaptureVisionRouter_bufferdItemsManager = new WeakMap(), _CaptureVisionRouter_resultReceiverSet = new WeakMap(), _CaptureVisionRouter_isaStateListenerSet = new WeakMap(), _CaptureVisionRouter_resultFilterSet = new WeakMap(), _CaptureVisionRouter_compressRate = new WeakMap(), _CaptureVisionRouter_isScanner = new WeakMap(), _CaptureVisionRouter_innerUseTag = new WeakMap(), _CaptureVisionRouter_isDestroyed = new WeakMap(); +CaptureVisionRouter._defaultTemplate = "Default"; +async function _enableResultCrossVerification(cvr, verificationEnabled) { + checkIsDisposed(cvr); + return await new Promise((rs, rj) => { + let taskID = getNextTaskID(); + mapTaskCallBack[taskID] = async (body) => { + if (body.success) { + return rs(body.result); + } + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + return rj(ex); + } + }; + worker.postMessage({ + type: "cvr_enableResultCrossVerification", + id: taskID, + instanceID: cvr._instanceID, + body: { + verificationEnabled + } + }); + }); +} +async function _enableResultDeduplication(cvr, duplicateFilterEnabled) { + checkIsDisposed(cvr); + return await new Promise((rs, rj) => { + let taskID = getNextTaskID(); + mapTaskCallBack[taskID] = async (body) => { + if (body.success) { + return rs(body.result); + } + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + return rj(ex); + } + }; + worker.postMessage({ + type: "cvr_enableResultDeduplication", + id: taskID, + instanceID: cvr._instanceID, + body: { + duplicateFilterEnabled + } + }); + }); +} +async function _setDuplicateForgetTime(cvr, duplicateForgetTime) { + checkIsDisposed(cvr); + return await new Promise((rs, rj) => { + let taskID = getNextTaskID(); + mapTaskCallBack[taskID] = async (body) => { + if (body.success) { + return rs(body.result); + } + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + return rj(ex); + } + }; + worker.postMessage({ + type: "cvr_setDuplicateForgetTime", + id: taskID, + instanceID: cvr._instanceID, + body: { + duplicateForgetTime + } + }); + }); +} +async function _clearVerifyList(cvr) { + let taskID = getNextTaskID(); + const p = new MutablePromise(); + mapTaskCallBack[taskID] = async (body) => { + if (body.success) { + return p.resolve(); + } + else { + let ex = new Error(body.message); + ex.stack = body.stack + '\n' + ex.stack; + return p.reject(ex); + } + }; + worker.postMessage({ + type: "cvr_clearVerifyList", + id: taskID, + instanceID: cvr._instanceID + }); + return p; +} + +// TODO +class CapturedResultReceiver { + constructor() { + /** + * Event triggered when a generic captured result is available, occurring each time an image finishes its processing. + * This event can be used for any result that does not fit into the specific categories of the other callback events. + * @param result The captured result, an instance of `CapturedResult`. + */ + this.onCapturedResultReceived = null; + /** + * Event triggered when the original image result is available. + * This event is used to handle the original image captured by an image source such as Dynamsoft Camera Enhancer. + * @param result The original image result, an instance of `OriginalImageResultItem`. + */ + this.onOriginalImageResultReceived = null; + } +} + +class IntermediateResultReceiver { + constructor() { + this._observedResultUnitTypes = EnumIntermediateResultUnitType.IRUT_ALL; + this._observedTaskMap = new Map(); + this._parameters = { + setObservedResultUnitTypes: (types) => { + this._observedResultUnitTypes = types; + }, + getObservedResultUnitTypes: () => { + return this._observedResultUnitTypes; + }, + isResultUnitTypeObserved: (type) => { + return !!(type & this._observedResultUnitTypes); + }, + addObservedTask: (taskName) => { + this._observedTaskMap.set(taskName, true); + }, + removeObservedTask: (taskName) => { + this._observedTaskMap.set(taskName, false); + }, + isTaskObserved: (taskName) => { + if (this._observedTaskMap.size === 0) + return true; + return !!(this._observedTaskMap.get(taskName)); + } + }; + this.onTaskResultsReceived = null; + // section + this.onPredetectedRegionsReceived = null; + // The remaining callback definitions will be automatically injected when imported into other modules + // stage + this.onColourImageUnitReceived = null; + this.onScaledDownColourImageUnitReceived = null; + this.onGrayscaleImageUnitReceived = null; + this.onTransformedGrayscaleImageUnitReceived = null; + this.onEnhancedGrayscaleImageUnitReceived = null; + this.onBinaryImageUnitReceived = null; + this.onTextureDetectionResultUnitReceived = null; + this.onTextureRemovedGrayscaleImageUnitReceived = null; + this.onTextureRemovedBinaryImageUnitReceived = null; + this.onContoursUnitReceived = null; + this.onLineSegmentsUnitReceived = null; + this.onTextZonesUnitReceived = null; + this.onTextRemovedBinaryImageUnitReceived = null; + this.onShortLinesUnitReceived = null; + // The remaining callback definitions will be automatically injected when imported into other modules + } + /** + * Gets the observed parameters of the intermediate result receiver. Allowing for configuration of intermediate result observation. + * @return The observed parameters, of type ObservationParameters. The default parameters are to observe all intermediate result unit types and all tasks. + */ + getObservationParameters() { + return this._parameters; + } +} + +var EnumPresetTemplate; +(function (EnumPresetTemplate) { + /** + * @brief Versatile function for barcode reading, document detection, or text recognition. + */ + EnumPresetTemplate["PT_DEFAULT"] = "Default"; + /** + * @brief Scans a single barcode. + */ + EnumPresetTemplate["PT_READ_BARCODES"] = "ReadBarcodes_Default"; + /** + * @brief Identifies and reads any text present. + */ + EnumPresetTemplate["PT_RECOGNIZE_TEXT_LINES"] = "RecognizeTextLines_Default"; + /** + * @brief RIdentifies the edges of a document. + */ + EnumPresetTemplate["PT_DETECT_DOCUMENT_BOUNDARIES"] = "DetectDocumentBoundaries_Default"; + /** + * @brief Detects document edges and standardizes its format. + */ + EnumPresetTemplate["PT_DETECT_AND_NORMALIZE_DOCUMENT"] = "DetectAndNormalizeDocument_Default"; + /** + * @brief Adjusts a document to a standard format using detected borders. + */ + EnumPresetTemplate["PT_NORMALIZE_DOCUMENT"] = "NormalizeDocument_Default"; + /** + * @brief Represents a barcode reading mode where speed is prioritized. + * + * In this mode, the barcode reader will optimize for faster barcode detection + * and decoding, sacrificing some level of accuracy and read rate. It is suitable + * for situations where a quick response time is more important than perfect + * barcode recognition. + */ + EnumPresetTemplate["PT_READ_BARCODES_SPEED_FIRST"] = "ReadBarcodes_SpeedFirst"; + /** + * @brief Represents a barcode reading mode where barcode read rate is prioritized. + * + * In this mode, the barcode reader will optimize for higher barcode read rates, + * even if it may sometimes result in reduced accuracy and speed. It is suitable for + * scenarios where maximizing the number of successfully read barcodes is critical. + */ + EnumPresetTemplate["PT_READ_BARCODES_READ_RATE_FIRST"] = "ReadBarcodes_ReadRateFirst"; + /** + * @brief Represents a balanced barcode reading mode. + * + * This mode aims for a reasonable balance between speed and read rate in barcode + * recognition. It is suitable for most common use cases where a compromise between + * speed and read rate is acceptable. + */ + EnumPresetTemplate["PT_READ_BARCODES_BALANCE"] = "ReadBarcodes_Balance"; + /** + * @brief Represents a barcode reading mode for single barcode code detection. + * + * In this mode, the barcode reader will focus on detecting and decoding a single + * barcode code, ignoring any additional codes in the same image. It is efficient + * when the target image has only one barcode. + */ + EnumPresetTemplate["PT_READ_SINGLE_BARCODE"] = "ReadBarcodes_Balanced"; + /** + * @brief Represents a barcode reading mode optimized for dense barcode codes. + * + * This mode is designed to handle dense or closely packed barcode codes where + * accuracy is paramount. It may operate slower than other modes but is suitable + * for challenging scenarios where code density is high. + */ + EnumPresetTemplate["PT_READ_DENSE_BARCODES"] = "ReadDenseBarcodes"; + /** + * @brief Represents a barcode reading mode optimized for distant barcode codes. + * + * This mode is designed to scanning a barcode that is placed far from the device. + */ + EnumPresetTemplate["PT_READ_DISTANT_BARCODES"] = "ReadDistantBarcodes"; + /** + * @brief Represents a text recognition mode focused on recognizing numbers. + */ + EnumPresetTemplate["PT_RECOGNIZE_NUMBERS"] = "RecognizeNumbers"; + /** + * @brief Represents a text recognition mode focused on recognizing alphabetic characters (letters). + * + */ + EnumPresetTemplate["PT_RECOGNIZE_LETTERS"] = "RecognizeLetters"; + /** + * @brief Represents a text recognition mode that combines numbers and alphabetic characters (letters) recognition. + */ + EnumPresetTemplate["PT_RECOGNIZE_NUMBERS_AND_LETTERS"] = "RecognizeNumbersAndLetters"; + /** + * @brief Represents a text recognition mode that combines numbers and uppercase letters recognition. + */ + EnumPresetTemplate["PT_RECOGNIZE_NUMBERS_AND_UPPERCASE_LETTERS"] = "RecognizeNumbersAndUppercaseLetters"; + /** + * @brief Represents a text recognition mode focused on recognizing uppercase letters. + */ + EnumPresetTemplate["PT_RECOGNIZE_UPPERCASE_LETTERS"] = "RecognizeUppercaseLetters"; +})(EnumPresetTemplate || (EnumPresetTemplate = {})); + +export { CaptureVisionRouter, CaptureVisionRouterModule, CapturedResultReceiver, EnumImageSourceState, EnumPresetTemplate, IntermediateResultReceiver }; diff --git a/dist/dynamsoft-capture-vision-router@2.4.33/dist/cvr.js b/dist/dynamsoft-capture-vision-router@2.4.33/dist/cvr.js new file mode 100644 index 0000000..0e220b4 --- /dev/null +++ b/dist/dynamsoft-capture-vision-router@2.4.33/dist/cvr.js @@ -0,0 +1,11 @@ +/*! + * Dynamsoft JavaScript Library + * @product Dynamsoft Capture Vision Router JS Edition + * @website http://www.dynamsoft.com + * @copyright Copyright 2024, Dynamsoft Corporation + * @author Dynamsoft + * @version "2.4.33" + * @fileoverview Dynamsoft JavaScript Library for Capture Vision + * More info on cvr JS: https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/capture-vision-router-module.html + */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("dynamsoft-core")):"function"==typeof define&&define.amd?define(["exports","dynamsoft-core"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).Dynamsoft=e.Dynamsoft||{},e.Dynamsoft.CVR={}),e.Dynamsoft.Core)}(this,(function(e,t){"use strict";function s(e,t,s,i){if("a"===s&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===s?i:"a"===s?i.call(e):i?i.value:t.get(e)}function i(e,t,s,i,a){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!a:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?a.call(e,s):a?a.value=s:t.set(e,s),s}"function"==typeof SuppressedError&&SuppressedError;const a=e=>e&&"object"==typeof e&&"function"==typeof e.then,r=(async()=>{})().constructor;class n extends r{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(e){let t;this._task=e,a(e)?t=e:"function"==typeof e&&(t=new r(e)),t&&(async()=>{try{const s=await t;e===this._task&&this.resolve(s)}catch(t){e===this._task&&this.reject(t)}})()}get isEmpty(){return null==this._task}constructor(e){let t,s;super(((e,i)=>{t=e,s=i})),this._s="pending",this.resolve=e=>{this.isPending&&(a(e)?this.task=e:(this._s="fulfilled",t(e)))},this.reject=e=>{this.isPending&&(this._s="rejected",s(e))},this.task=e}}class o{constructor(e){this._cvr=e}async getMaxBufferedItems(){return await new Promise(((e,s)=>{let i=t.getNextTaskID();t.mapTaskCallBack[i]=async t=>{if(t.success)return e(t.count);{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,s(e)}},t.worker.postMessage({type:"cvr_getMaxBufferedItems",id:i,instanceID:this._cvr._instanceID})}))}async setMaxBufferedItems(e){return await new Promise(((s,i)=>{let a=t.getNextTaskID();t.mapTaskCallBack[a]=async e=>{if(e.success)return s();{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}},t.worker.postMessage({type:"cvr_setMaxBufferedItems",id:a,instanceID:this._cvr._instanceID,body:{count:e}})}))}async getBufferedCharacterItemSet(){return await new Promise(((e,s)=>{let i=t.getNextTaskID();t.mapTaskCallBack[i]=async t=>{if(t.success)return e(t.itemSet);{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,s(e)}},t.worker.postMessage({type:"cvr_getBufferedCharacterItemSet",id:i,instanceID:this._cvr._instanceID})}))}}var c={onTaskResultsReceived:!1,onTaskResultsReceivedForDce:!1,onPredetectedRegionsReceived:!1,onLocalizedBarcodesReceived:!1,onDecodedBarcodesReceived:!1,onLocalizedTextLinesReceived:!1,onRecognizedTextLinesReceived:!1,onDetectedQuadsReceived:!1,onNormalizedImagesReceived:!1,onColourImageUnitReceived:!1,onScaledDownColourImageUnitReceived:!1,onGrayscaleImageUnitReceived:!1,onTransformedGrayscaleImageUnitReceived:!1,onEnhancedGrayscaleImageUnitReceived:!1,onBinaryImageUnitReceived:!1,onTextureDetectionResultUnitReceived:!1,onTextureRemovedGrayscaleImageUnitReceived:!1,onTextureRemovedBinaryImageUnitReceived:!1,onContoursUnitReceived:!1,onLineSegmentsUnitReceived:!1,onTextZonesUnitReceived:!1,onTextRemovedBinaryImageUnitReceived:!1,onRawTextLinesReceived:!1,onLongLinesUnitReceived:!1,onCornersUnitReceived:!1,onCandidateQuadEdgesUnitReceived:!1,onCandidateBarcodeZonesUnitReceived:!1,onScaledUpBarcodeImageUnitReceived:!1,onDeformationResistedBarcodeImageUnitReceived:!1,onComplementedBarcodeImageUnitReceived:!1,onShortLinesUnitReceived:!1,onLogicLinesReceived:!1};const l=e=>{for(let t in e._irrRegistryState)e._irrRegistryState[t]=!1;for(let t of e._intermediateResultReceiverSet)if(t.isDce||t.isFilter)e._irrRegistryState.onTaskResultsReceivedForDce=!0;else for(let s in t)e._irrRegistryState[s]||(e._irrRegistryState[s]=!!t[s])};class d{constructor(e){this._irrRegistryState=c,this._intermediateResultReceiverSet=new Set,this._cvr=e}async addResultReceiver(e){if("object"!=typeof e)throw new Error("Invalid receiver.");this._intermediateResultReceiverSet.add(e),l(this);let s=-1,i={};if(!e.isDce&&!e.isFilter){if(!e._observedResultUnitTypes||!e._observedTaskMap)throw new Error("Invalid Intermediate Result Receiver.");s=e._observedResultUnitTypes,e._observedTaskMap.forEach(((e,t)=>{i[t]=e})),e._observedTaskMap.clear()}return await new Promise(((e,a)=>{let r=t.getNextTaskID();t.mapTaskCallBack[r]=async t=>{if(t.success)return e();{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,a(e)}},t.worker.postMessage({type:"cvr_setIrrRegistry",id:r,instanceID:this._cvr._instanceID,body:{receiverObj:this._irrRegistryState,observedResultUnitTypes:s.toString(),observedTaskMap:i}})}))}async removeResultReceiver(e){return this._intermediateResultReceiverSet.delete(e),l(this),await new Promise(((e,s)=>{let i=t.getNextTaskID();t.mapTaskCallBack[i]=async t=>{if(t.success)return e();{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,s(e)}},t.worker.postMessage({type:"cvr_setIrrRegistry",id:i,instanceID:this._cvr._instanceID,body:{receiverObj:this._irrRegistryState}})}))}getOriginalImage(){return this._cvr._dsImage}}const u="undefined"==typeof self,m="function"==typeof importScripts,h=(()=>{if(!m){if(!u&&document.currentScript){let e=document.currentScript.src,t=e.indexOf("?");if(-1!=t)e=e.substring(0,t);else{let t=e.indexOf("#");-1!=t&&(e=e.substring(0,t))}return e.substring(0,e.lastIndexOf("/")+1)}return"./"}})(),g=e=>{if(null==e&&(e="./"),u||m);else{let t=document.createElement("a");t.href=e,e=t.href}return e.endsWith("/")||(e+="/"),e};var p;t.CoreModule.engineResourcePaths.cvr={version:"2.4.33",path:h,isInternal:!0},t.workerAutoResources.cvr={js:!0,wasm:!0,deps:["license","dip"]},t.mapPackageRegister.cvr={};const f="1.4.21";"string"!=typeof t.CoreModule.engineResourcePaths.std&&t.compareVersion(t.CoreModule.engineResourcePaths.std.version,f)<0&&(t.CoreModule.engineResourcePaths.std={version:f,path:g(h+`../../dynamsoft-capture-vision-std@${f}/dist/`),isInternal:!0});const R="2.4.31";(!t.CoreModule.engineResourcePaths.dip||"string"!=typeof t.CoreModule.engineResourcePaths.dip&&t.compareVersion(t.CoreModule.engineResourcePaths.dip.version,R)<0)&&(t.CoreModule.engineResourcePaths.dip={version:R,path:g(h+`../../dynamsoft-image-processing@${R}/dist/`),isInternal:!0});class _{static getVersion(){return this._version}}_._version=`2.4.33(Worker: ${null===(p=t.innerVersions.cvr)||void 0===p?void 0:p.worker}, Wasm: loading...`;const I={barcodeResultItems:{type:t.EnumCapturedResultItemType.CRIT_BARCODE,reveiver:"onDecodedBarcodesReceived",isNeedFilter:!0},textLineResultItems:{type:t.EnumCapturedResultItemType.CRIT_TEXT_LINE,reveiver:"onRecognizedTextLinesReceived",isNeedFilter:!0},detectedQuadResultItems:{type:t.EnumCapturedResultItemType.CRIT_DETECTED_QUAD,reveiver:"onDetectedQuadsReceived",isNeedFilter:!1},normalizedImageResultItems:{type:t.EnumCapturedResultItemType.CRIT_NORMALIZED_IMAGE,reveiver:"onNormalizedImagesReceived",isNeedFilter:!1},parsedResultItems:{type:t.EnumCapturedResultItemType.CRIT_PARSED_RESULT,reveiver:"onParsedResultsReceived",isNeedFilter:!1}};var v,T,y,C,w,k,E,D,S,b,O,N,M;function L(e,t){if(e&&e.location){const s=e.location.points;for(let e of s)e.x=e.x/t,e.y=e.y/t;L(e.referencedItem,t)}}function U(e){if(e.disposed)throw new Error('"CaptureVisionRouter" instance has been disposed')}e.EnumImageSourceState=void 0,(v=e.EnumImageSourceState||(e.EnumImageSourceState={}))[v.ISS_BUFFER_EMPTY=0]="ISS_BUFFER_EMPTY",v[v.ISS_EXHAUSTED=1]="ISS_EXHAUSTED";const P={onTaskResultsReceived:()=>{},isFilter:!0};class B{constructor(){this.maxImageSideLength=["iPhone","Android","HarmonyOS"].includes(t.CoreModule.browserInfo.OS)?2048:4096,this._instanceID=void 0,this._dsImage=null,this._isPauseScan=!0,this._isOutputOriginalImage=!1,this._isOpenDetectVerify=!1,this._isOpenNormalizeVerify=!1,this._isOpenBarcodeVerify=!1,this._isOpenLabelVerify=!1,this._minImageCaptureInterval=0,this._averageProcessintTimeArray=[],this._averageFetchImageTimeArray=[],this._currentSettings=null,this._averageTime=999,T.set(this,null),y.set(this,null),C.set(this,null),w.set(this,null),k.set(this,null),E.set(this,new Set),D.set(this,new Set),S.set(this,new Set),b.set(this,0),O.set(this,!1),N.set(this,!1),M.set(this,!1),this._singleFrameModeCallbackBind=this._singleFrameModeCallback.bind(this)}get disposed(){return s(this,M,"f")}static async createInstance(){if(!t.mapPackageRegister.license)throw Error("Module `license` is not existed.");await t.mapPackageRegister.license.dynamsoft(),await t.loadWasm(["cvr"]);const e=new B,s=new n;let a=t.getNextTaskID();return t.mapTaskCallBack[a]=async a=>{var r;if(a.success)e._instanceID=a.instanceID,e._currentSettings=JSON.parse(JSON.parse(a.outputSettings).data),_._version=`2.4.33(Worker: ${null===(r=t.innerVersions.cvr)||void 0===r?void 0:r.worker}, Wasm: ${a.version})`,i(e,N,!0,"f"),i(e,w,e.getIntermediateResultManager(),"f"),i(e,N,!1,"f"),s.resolve(e);else{const e=Error(a.message);a.stack&&(e.stack=a.stack),s.reject(e)}},t.worker.postMessage({type:"cvr_createInstance",id:a}),s}async _singleFrameModeCallback(e){for(let t of s(this,E,"f"))this._isOutputOriginalImage&&t.onOriginalImageResultReceived&&t.onOriginalImageResultReceived({imageData:e});const t={bytes:new Uint8Array(e.bytes),width:e.width,height:e.height,stride:e.stride,format:e.format,tag:e.tag};this._templateName||(this._templateName=this._currentSettings.CaptureVisionTemplates[0].Name);const i=await this.capture(t,this._templateName);i.originalImageTag=e.tag;const a={originalImageHashId:i.originalImageHashId,originalImageTag:i.originalImageTag,errorCode:i.errorCode,errorString:i.errorString};for(let e of s(this,E,"f"))if(e.isDce)e.onCapturedResultReceived(i,{isDetectVerifyOpen:!1,isNormalizeVerifyOpen:!1,isBarcodeVerifyOpen:!1,isLabelVerifyOpen:!1});else{for(let t in I){const s=t,r=I[s];e[r.reveiver]&&i[s]&&e[r.reveiver](Object.assign(Object.assign({},a),{[s]:i[s]}))}e.onCapturedResultReceived&&e.onCapturedResultReceived(i)}}setInput(e){if(U(this),e){if(i(this,T,e,"f"),e.isCameraEnhancer){s(this,w,"f")&&(s(this,T,"f")._intermediateResultReceiver.isDce=!0,s(this,w,"f").addResultReceiver(s(this,T,"f")._intermediateResultReceiver));const e=s(this,T,"f").getCameraView();if(e){const t=e._capturedResultReceiver;t.isDce=!0,s(this,E,"f").add(t)}}}else i(this,T,null,"f")}getInput(){return s(this,T,"f")}addImageSourceStateListener(e){if(U(this),"object"!=typeof e)return console.warn("Invalid ISA state listener.");e&&Object.keys(e)&&s(this,D,"f").add(e)}removeImageSourceStateListener(e){return U(this),s(this,D,"f").delete(e)}addResultReceiver(e){if(U(this),"object"!=typeof e)throw new Error("Invalid receiver.");e&&Object.keys(e).length&&(s(this,E,"f").add(e),this._setCrrRegistry())}removeResultReceiver(e){U(this),s(this,E,"f").delete(e),this._setCrrRegistry()}async _setCrrRegistry(){const e={onCapturedResultReceived:!1,onDecodedBarcodesReceived:!1,onRecognizedTextLinesReceived:!1,onDetectedQuadsReceived:!1,onNormalizedImagesReceived:!1,onParsedResultsReceived:!1};for(let t of s(this,E,"f"))t.isDce||(e.onCapturedResultReceived=!!t.onCapturedResultReceived,e.onDecodedBarcodesReceived=!!t.onDecodedBarcodesReceived,e.onRecognizedTextLinesReceived=!!t.onRecognizedTextLinesReceived,e.onDetectedQuadsReceived=!!t.onDetectedQuadsReceived,e.onNormalizedImagesReceived=!!t.onNormalizedImagesReceived,e.onParsedResultsReceived=!!t.onParsedResultsReceived);const i=new n;let a=t.getNextTaskID();return t.mapTaskCallBack[a]=async e=>{if(e.success)i.resolve();else{let t=new Error(e.message);t.stack=e.stack+"\n"+t.stack,i.reject()}},t.worker.postMessage({type:"cvr_setCrrRegistry",id:a,instanceID:this._instanceID,body:{receiver:JSON.stringify(e)}}),i}async addResultFilter(e){if(U(this),!e||"object"!=typeof e||!Object.keys(e).length)return console.warn("Invalid filter.");s(this,S,"f").add(e),e._dynamsoft(),await this._handleFilterUpdate()}async removeResultFilter(e){U(this),s(this,S,"f").delete(e),await this._handleFilterUpdate()}async _handleFilterUpdate(){if(s(this,w,"f").removeResultReceiver(P),0===s(this,S,"f").size){this._isOpenBarcodeVerify=!1,this._isOpenLabelVerify=!1,this._isOpenDetectVerify=!1,this._isOpenNormalizeVerify=!1;const e={[t.EnumCapturedResultItemType.CRIT_BARCODE]:!1,[t.EnumCapturedResultItemType.CRIT_TEXT_LINE]:!1,[t.EnumCapturedResultItemType.CRIT_DETECTED_QUAD]:!1,[t.EnumCapturedResultItemType.CRIT_NORMALIZED_IMAGE]:!1},s={[t.EnumCapturedResultItemType.CRIT_BARCODE]:!1,[t.EnumCapturedResultItemType.CRIT_TEXT_LINE]:!1,[t.EnumCapturedResultItemType.CRIT_DETECTED_QUAD]:!1,[t.EnumCapturedResultItemType.CRIT_NORMALIZED_IMAGE]:!1};return await A(this,e),void await F(this,s)}for(let e of s(this,S,"f")){if(this._isOpenBarcodeVerify=e.isResultCrossVerificationEnabled(t.EnumCapturedResultItemType.CRIT_BARCODE),this._isOpenLabelVerify=e.isResultCrossVerificationEnabled(t.EnumCapturedResultItemType.CRIT_TEXT_LINE),this._isOpenDetectVerify=e.isResultCrossVerificationEnabled(t.EnumCapturedResultItemType.CRIT_DETECTED_QUAD),this._isOpenNormalizeVerify=e.isResultCrossVerificationEnabled(t.EnumCapturedResultItemType.CRIT_NORMALIZED_IMAGE),e.isLatestOverlappingEnabled(t.EnumCapturedResultItemType.CRIT_BARCODE)){[...s(this,w,"f")._intermediateResultReceiverSet.values()].find((e=>e.isFilter))||s(this,w,"f").addResultReceiver(P)}await A(this,e.verificationEnabled),await F(this,e.duplicateFilterEnabled),await x(this,e.duplicateForgetTime)}}async startCapturing(e){var a,r;if(U(this),!this._isPauseScan)return;if(!s(this,T,"f"))throw new Error("'ImageSourceAdapter' is not set. call 'setInput' before 'startCapturing'");e||(e=B._defaultTemplate);const o=await this.containsTask(e);await t.loadWasm(o);for(let e of s(this,S,"f"))await this.addResultFilter(e);if(o.includes("dlr")&&!(null===(a=t.mapPackageRegister.dlr)||void 0===a?void 0:a.bLoadConfusableCharsData)){const e=t.handleEngineResourcePaths(t.CoreModule.engineResourcePaths);await(null===(r=t.mapPackageRegister.dlr)||void 0===r?void 0:r.loadRecognitionData("ConfusableChars",e.dlr))}if(s(this,T,"f").isCameraEnhancer&&(o.includes("ddn")?s(this,T,"f").setPixelFormat(t.EnumImagePixelFormat.IPF_ABGR_8888):s(this,T,"f").setPixelFormat(t.EnumImagePixelFormat.IPF_GRAYSCALED)),void 0!==s(this,T,"f").singleFrameMode&&"disabled"!==s(this,T,"f").singleFrameMode)return this._templateName=e,void s(this,T,"f").on("singleFrameAcquired",this._singleFrameModeCallbackBind);return s(this,T,"f").getColourChannelUsageType()===t.EnumColourChannelUsageType.CCUT_AUTO&&s(this,T,"f").setColourChannelUsageType(o.includes("ddn")?t.EnumColourChannelUsageType.CCUT_FULL_CHANNEL:t.EnumColourChannelUsageType.CCUT_Y_CHANNEL_ONLY),s(this,C,"f")&&s(this,C,"f").isPending?s(this,C,"f"):(i(this,C,new n(((i,a)=>{if(this.disposed)return;let r=t.getNextTaskID();t.mapTaskCallBack[r]=async t=>{if(s(this,C,"f")&&!s(this,C,"f").isFulfilled){if(!t.success){let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,a(e)}this._isPauseScan=!1,this._isOutputOriginalImage=t.isOutputOriginalImage,this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((async()=>{-1!==this._minImageCaptureInterval&&s(this,T,"f").startFetching(),this._loopReadVideo(e),i()}),0)}},t.worker.postMessage({type:"cvr_startCapturing",id:r,instanceID:this._instanceID,body:{templateName:e}})})),"f"),await s(this,C,"f"))}stopCapturing(){U(this),s(this,T,"f")&&(s(this,T,"f").isCameraEnhancer&&void 0!==s(this,T,"f").singleFrameMode&&"disabled"!==s(this,T,"f").singleFrameMode?s(this,T,"f").off("singleFrameAcquired",this._singleFrameModeCallbackBind):(!async function(e){let s=t.getNextTaskID();const i=new n;t.mapTaskCallBack[s]=async e=>{if(e.success)return i.resolve();{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i.reject(t)}},t.worker.postMessage({type:"cvr_clearVerifyList",id:s,instanceID:e._instanceID})}(this),s(this,T,"f").stopFetching(),this._averageProcessintTimeArray=[],this._averageTime=999,this._isPauseScan=!0,i(this,C,null,"f"),s(this,T,"f").setColourChannelUsageType(t.EnumColourChannelUsageType.CCUT_AUTO)))}async containsTask(e){return U(this),await new Promise(((s,i)=>{let a=t.getNextTaskID();t.mapTaskCallBack[a]=async e=>{if(e.success)return s(JSON.parse(e.tasks));{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}},t.worker.postMessage({type:"cvr_containsTask",id:a,instanceID:this._instanceID,body:{templateName:e}})}))}async _loopReadVideo(a){if(this.disposed||this._isPauseScan)return;if(i(this,O,!0,"f"),s(this,T,"f").isBufferEmpty())if(s(this,T,"f").hasNextImageToFetch())for(let t of s(this,D,"f"))t.onImageSourceStateReceived&&t.onImageSourceStateReceived(e.EnumImageSourceState.ISS_BUFFER_EMPTY);else if(!s(this,T,"f").hasNextImageToFetch())for(let t of s(this,D,"f"))t.onImageSourceStateReceived&&t.onImageSourceStateReceived(e.EnumImageSourceState.ISS_EXHAUSTED);if(-1===this._minImageCaptureInterval||s(this,T,"f").isBufferEmpty())try{s(this,T,"f").isBufferEmpty()&&B._onLog&&B._onLog("buffer is empty so fetch image"),B._onLog&&B._onLog(`DCE: start fetching a frame: ${Date.now()}`),this._dsImage=s(this,T,"f").fetchImage(),B._onLog&&B._onLog(`DCE: finish fetching a frame: ${Date.now()}`),s(this,T,"f").setImageFetchInterval(this._averageTime)}catch(e){return void this._reRunCurrnetFunc(a)}else if(s(this,T,"f").setImageFetchInterval(this._averageTime-(this._dsImage&&this._dsImage.tag?this._dsImage.tag.timeSpent:0)),this._dsImage=s(this,T,"f").getImage(),this._dsImage.tag&&Date.now()-this._dsImage.tag.timeStamp>200)return void this._reRunCurrnetFunc(a);if(!this._dsImage)return void this._reRunCurrnetFunc(a);for(let e of s(this,E,"f"))this._isOutputOriginalImage&&e.onOriginalImageResultReceived&&e.onOriginalImageResultReceived({imageData:this._dsImage});const r=Date.now();this._captureDsimage(this._dsImage,a).then((async e=>{if(B._onLog&&B._onLog("no js handle time: "+(Date.now()-r)),this._isPauseScan)return void this._reRunCurrnetFunc(a);e.originalImageTag=this._dsImage.tag?this._dsImage.tag:null;const i={originalImageHashId:e.originalImageHashId,originalImageTag:e.originalImageTag,errorCode:e.errorCode,errorString:e.errorString};for(let a of s(this,E,"f"))if(a.isDce){const t=Date.now();if(a.onCapturedResultReceived(e,{isDetectVerifyOpen:this._isOpenDetectVerify,isNormalizeVerifyOpen:this._isOpenNormalizeVerify,isBarcodeVerifyOpen:this._isOpenBarcodeVerify,isLabelVerifyOpen:this._isOpenLabelVerify}),B._onLog){const e=Date.now()-t;e>10&&B._onLog(`draw result time: ${e}`)}}else{for(let t in I){const s=t,r=I[s];a[r.reveiver],a[r.reveiver]&&e[s]&&a[r.reveiver](Object.assign(Object.assign({},i),{[s]:e[s].filter((e=>!r.isNeedFilter||!e.isFilter))})),e[s]&&(e[s]=e[s].filter((e=>!r.isNeedFilter||!e.isFilter)))}a.onCapturedResultReceived&&(e.items=e.items.filter((e=>[t.EnumCapturedResultItemType.CRIT_DETECTED_QUAD,t.EnumCapturedResultItemType.CRIT_NORMALIZED_IMAGE].includes(e.type)||!e.isFilter)),a.onCapturedResultReceived(e))}const n=Date.now();if(this._minImageCaptureInterval>-1&&(5===this._averageProcessintTimeArray.length&&this._averageProcessintTimeArray.shift(),5===this._averageFetchImageTimeArray.length&&this._averageFetchImageTimeArray.shift(),this._averageProcessintTimeArray.push(Date.now()-r),this._averageFetchImageTimeArray.push(this._dsImage&&this._dsImage.tag?this._dsImage.tag.timeSpent:0),this._averageTime=Math.min(...this._averageProcessintTimeArray)-Math.max(...this._averageFetchImageTimeArray),this._averageTime=this._averageTime>0?this._averageTime:0,B._onLog&&(B._onLog(`minImageCaptureInterval: ${this._minImageCaptureInterval}`),B._onLog(`averageProcessintTimeArray: ${this._averageProcessintTimeArray}`),B._onLog(`averageFetchImageTimeArray: ${this._averageFetchImageTimeArray}`),B._onLog(`averageTime: ${this._averageTime}`))),B._onLog){const e=Date.now()-n;e>10&&B._onLog(`fetch image calculate time: ${e}`)}B._onLog&&B._onLog(`time finish decode: ${Date.now()}`),B._onLog&&B._onLog("main time: "+(Date.now()-r)),B._onLog&&B._onLog("===================================================="),this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._minImageCaptureInterval>0&&this._minImageCaptureInterval>=this._averageTime?this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo(a)}),this._minImageCaptureInterval-this._averageTime):this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo(a)}),Math.max(this._minImageCaptureInterval,0))})).catch((e=>{s(this,T,"f").stopFetching(),e.errorCode&&0===e.errorCode&&(this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{s(this,T,"f").startFetching(),this._loopReadVideo(a)}),Math.max(this._minImageCaptureInterval,1e3))),"platform error"!==e.message&&setTimeout((()=>{throw e}),0)}))}_reRunCurrnetFunc(e){this._loopReadVideoTimeoutId&&clearTimeout(this._loopReadVideoTimeoutId),this._loopReadVideoTimeoutId=setTimeout((()=>{this._loopReadVideo(e)}),0)}async capture(e,s){var a,r;U(this),s||(s=B._defaultTemplate);const n=await this.containsTask(s);if(await t.loadWasm(n),n.includes("dlr")&&!(null===(a=t.mapPackageRegister.dlr)||void 0===a?void 0:a.bLoadConfusableCharsData)){const e=t.handleEngineResourcePaths(t.CoreModule.engineResourcePaths);await(null===(r=t.mapPackageRegister.dlr)||void 0===r?void 0:r.loadRecognitionData("ConfusableChars",e.dlr))}let o;if(i(this,O,!1,"f"),t.isDSImageData(e))o=await this._captureDsimage(e,s);else if("string"==typeof e)o="data:image/"==e.substring(0,11)?await this._captureBase64(e,s):await this._captureUrl(e,s);else if(e instanceof Blob)o=await this._captureBlob(e,s);else if(e instanceof HTMLImageElement)o=await this._captureImage(e,s);else if(e instanceof HTMLCanvasElement)o=await this._captureCanvas(e,s);else{if(!(e instanceof HTMLVideoElement))throw new TypeError("'capture(imageOrFile, templateName)': Type of 'imageOrFile' should be 'DSImageData', 'Url', 'Base64', 'Blob', 'HTMLImageElement', 'HTMLCanvasElement', 'HTMLVideoElement'.");o=await this._captureVideo(e,s)}return o}async _captureDsimage(e,t){return await this._captureInWorker(e,t)}async _captureUrl(e,s){let i=await t.requestResource(e,"blob");return await this._captureBlob(i,s)}async _captureBase64(e,t){e=e.substring(e.indexOf(",")+1);let s=atob(e),i=s.length,a=new Uint8Array(i);for(;i--;)a[i]=s.charCodeAt(i);return await this._captureBlob(new Blob([a]),t)}async _captureBlob(e,t){let s=null,i=null;if("undefined"!=typeof createImageBitmap)try{s=await createImageBitmap(e)}catch(e){}s||(i=await async function(e){return await new Promise(((t,s)=>{let i=URL.createObjectURL(e),a=new Image;a.src=i,a.onload=()=>{URL.revokeObjectURL(a.dbrObjUrl),t(a)},a.onerror=e=>{s(new Error("Can't convert blob to image : "+(e instanceof Event?e.type:e)))}}))}(e));let a=await this._captureImage(s||i,t);return s&&s.close(),a}async _captureImage(e,t){let a,r,n=e instanceof HTMLImageElement?e.naturalWidth:e.width,o=e instanceof HTMLImageElement?e.naturalHeight:e.height,c=Math.max(n,o);c>this.maxImageSideLength?(i(this,b,this.maxImageSideLength/c,"f"),a=Math.round(n*s(this,b,"f")),r=Math.round(o*s(this,b,"f"))):(a=n,r=o),s(this,y,"f")||i(this,y,document.createElement("canvas"),"f");const l=s(this,y,"f");l.width===a&&l.height===r||(l.width=a,l.height=r),l.ctx2d||(l.ctx2d=l.getContext("2d",{willReadFrequently:!0}));return l.ctx2d.drawImage(e,0,0,n,o,0,0,a,r),e.dbrObjUrl&&URL.revokeObjectURL(e.dbrObjUrl),await this._captureCanvas(l,t)}async _captureCanvas(e,t){if(e.crossOrigin&&"anonymous"!=e.crossOrigin)throw"cors";if([e.width,e.height].includes(0))throw Error("The width or height of the 'canvas' is 0.");const s=e.ctx2d||e.getContext("2d",{willReadFrequently:!0}),i={bytes:Uint8Array.from(s.getImageData(0,0,e.width,e.height).data),width:e.width,height:e.height,stride:4*e.width,format:10};return await this._captureInWorker(i,t)}async _captureVideo(e,t){if(e.crossOrigin&&"anonymous"!=e.crossOrigin)throw"cors";let a,r,n=e.videoWidth,o=e.videoHeight,c=Math.max(n,o);c>this.maxImageSideLength?(i(this,b,this.maxImageSideLength/c,"f"),a=Math.round(n*s(this,b,"f")),r=Math.round(o*s(this,b,"f"))):(a=n,r=o),s(this,y,"f")||i(this,y,document.createElement("canvas"),"f");const l=s(this,y,"f");l.width===a&&l.height===r||(l.width=a,l.height=r),l.ctx2d||(l.ctx2d=l.getContext("2d",{willReadFrequently:!0}));return l.ctx2d.drawImage(e,0,0,n,o,0,0,a,r),await this._captureCanvas(l,t)}async _captureInWorker(e,a){const{bytes:r,width:o,height:c,stride:l,format:d}=e;let u=t.getNextTaskID();const m=new n;return t.mapTaskCallBack[u]=async a=>{var r,n;if(!a.success){let e=new Error(a.message);return e.stack=a.stack+"\n"+e.stack,m.reject(e)}{const o=Date.now();B._onLog&&(B._onLog(`get result time from worker: ${o}`),B._onLog("worker to main time consume: "+(o-a.workerReturnMsgTime)));try{const o=a.captureResult;if(0!==o.errorCode){let e=new Error(o.errorString);return e.errorCode=o.errorCode,m.reject(e)}e.bytes=a.bytes;for(let i of o.items)0!==s(this,b,"f")&&L(i,s(this,b,"f")),i.type===t.EnumCapturedResultItemType.CRIT_ORIGINAL_IMAGE?i.imageData=e:i.type===t.EnumCapturedResultItemType.CRIT_NORMALIZED_IMAGE?null===(r=t.mapPackageRegister.ddn)||void 0===r||r.handleNormalizedImageResultItem(i):i.type===t.EnumCapturedResultItemType.CRIT_PARSED_RESULT&&(null===(n=t.mapPackageRegister.dcp)||void 0===n||n.handleParsedResultItem(i));if(s(this,O,"f"))for(let e of s(this,S,"f"))e.onDecodedBarcodesReceived(o),e.onRecognizedTextLinesReceived(o),e.onDetectedQuadsReceived(o),e.onNormalizedImagesReceived(o);for(let e in I){const t=e,s=o.items.filter((e=>e.type===I[t].type));s.length&&(o[e]=s)}if(!this._isPauseScan||!s(this,O,"f")){const t=o.intermediateResult;if(t){let i=0;for(let a of s(this,w,"f")._intermediateResultReceiverSet){i++;for(let r of t){if("onTaskResultsReceived"===r.info.callbackName){for(let t of r.intermediateResultUnits)t.originalImageTag=e.tag?e.tag:null;a[r.info.callbackName]&&a[r.info.callbackName]({intermediateResultUnits:r.intermediateResultUnits},r.info)}else a[r.info.callbackName]&&a[r.info.callbackName](r.result,r.info);i===s(this,w,"f")._intermediateResultReceiverSet.size&&delete r.info.callbackName}}}}return o&&o.hasOwnProperty("intermediateResult")&&delete o.intermediateResult,i(this,b,0,"f"),m.resolve(o)}catch(e){return m.reject(e)}}},B._onLog&&B._onLog(`send buffer to worker: ${Date.now()}`),t.worker.postMessage({type:"cvr_capture",id:u,instanceID:this._instanceID,body:{bytes:r,width:o,height:c,stride:l,format:d,templateName:a||"",isScanner:s(this,O,"f")}},[r.buffer]),m}async initSettings(e){return U(this),e&&["string","object"].includes(typeof e)?("string"==typeof e?e.trimStart().startsWith("{")||(e=await t.requestResource(e,"text")):"object"==typeof e&&(e=JSON.stringify(e)),await new Promise(((s,i)=>{let a=t.getNextTaskID();t.mapTaskCallBack[a]=async a=>{if(a.success){const r=JSON.parse(a.response);if(0!==r.errorCode){let e=new Error(r.errorString?r.errorString:"Init Settings Failed.");return e.errorCode=r.errorCode,i(e)}const n=JSON.parse(e);this._currentSettings=n;let o=[],c=n.CaptureVisionTemplates;for(let e=0;e{let a=t.getNextTaskID();t.mapTaskCallBack[a]=async e=>{if(e.success){const t=JSON.parse(e.response);if(0!==t.errorCode){let e=new Error(t.errorString);return e.errorCode=t.errorCode,i(e)}return s(JSON.parse(t.data))}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}},t.worker.postMessage({type:"cvr_outputSettings",id:a,instanceID:this._instanceID,body:{templateName:e||"*"}})}))}async outputSettingsToFile(e,t,s){const i=await this.outputSettings(e),a=new Blob([JSON.stringify(i,null,2,(function(e,t){return t instanceof Array?JSON.stringify(t):t}),2)],{type:"application/json"});if(s){const e=document.createElement("a");e.href=URL.createObjectURL(a),t.endsWith(".json")&&(t=t.replace(".json","")),e.download=`${t}.json`,e.onclick=()=>{setTimeout((()=>{URL.revokeObjectURL(e.href)}),500)},e.click()}return a}async getTemplateNames(){return U(this),await new Promise(((e,s)=>{let i=t.getNextTaskID();t.mapTaskCallBack[i]=async t=>{if(t.success){const i=JSON.parse(t.response);if(0!==i.errorCode){let e=new Error(i.errorString);return e.errorCode=i.errorCode,s(e)}return e(JSON.parse(i.data))}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,s(e)}},t.worker.postMessage({type:"cvr_getTemplateNames",id:i,instanceID:this._instanceID})}))}async getSimplifiedSettings(e){U(this),e||(e=this._currentSettings.CaptureVisionTemplates[0].Name);const s=await this.containsTask(e);return await t.loadWasm(s),await new Promise(((s,i)=>{let a=t.getNextTaskID();t.mapTaskCallBack[a]=async e=>{if(e.success){const t=JSON.parse(e.response);if(0!==t.errorCode){let e=new Error(t.errorString);return e.errorCode=t.errorCode,i(e)}const a=JSON.parse(t.data,((e,t)=>"barcodeFormatIds"===e?BigInt(t):t));return a.minImageCaptureInterval=this._minImageCaptureInterval,s(a)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}},t.worker.postMessage({type:"cvr_getSimplifiedSettings",id:a,instanceID:this._instanceID,body:{templateName:e}})}))}async updateSettings(e,s){U(this);const i=await this.containsTask(e);return await t.loadWasm(i),await new Promise(((i,a)=>{let r=t.getNextTaskID();t.mapTaskCallBack[r]=async e=>{if(e.success){const t=JSON.parse(e.response);if(s.minImageCaptureInterval&&s.minImageCaptureInterval>=-1&&(this._minImageCaptureInterval=s.minImageCaptureInterval),this._isOutputOriginalImage=e.isOutputOriginalImage,0!==t.errorCode){let e=new Error(t.errorString?t.errorString:"Update Settings Failed.");return e.errorCode=t.errorCode,a(e)}return this._currentSettings=await this.outputSettings("*"),i(t)}{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,a(t)}},t.worker.postMessage({type:"cvr_updateSettings",id:r,instanceID:this._instanceID,body:{settings:s,templateName:e}})}))}async resetSettings(){return U(this),await new Promise(((e,s)=>{let i=t.getNextTaskID();t.mapTaskCallBack[i]=async t=>{if(t.success){const i=JSON.parse(t.response);if(0!==i.errorCode){let e=new Error(i.errorString?i.errorString:"Reset Settings Failed.");return e.errorCode=i.errorCode,s(e)}return this._currentSettings=await this.outputSettings("*"),e(i)}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,s(e)}},t.worker.postMessage({type:"cvr_resetSettings",id:i,instanceID:this._instanceID})}))}getBufferedItemsManager(){return s(this,k,"f")||i(this,k,new o(this),"f"),s(this,k,"f")}getIntermediateResultManager(){if(U(this),!s(this,N,"f")&&0!==t.CoreModule.bSupportIRTModule)throw new Error("The current license does not support the use of intermediate results.");return s(this,w,"f")||i(this,w,new d(this),"f"),s(this,w,"f")}async parseRequiredResources(e){return U(this),await new Promise(((s,i)=>{let a=t.getNextTaskID();t.mapTaskCallBack[a]=async e=>{if(e.success)return s(JSON.parse(e.resources));{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}},t.worker.postMessage({type:"cvr_parseRequiredResources",id:a,instanceID:this._instanceID,body:{templateName:e}})}))}async dispose(){U(this),s(this,C,"f")&&this.stopCapturing(),i(this,T,null,"f"),s(this,E,"f").clear(),s(this,D,"f").clear(),s(this,S,"f").clear(),s(this,w,"f")._intermediateResultReceiverSet.clear(),i(this,M,!0,"f");let e=t.getNextTaskID();t.mapTaskCallBack[e]=e=>{if(!e.success){let t=new Error(e.message);throw t.stack=e.stack+"\n"+t.stack,t}},t.worker.postMessage({type:"cvr_dispose",id:e,instanceID:this._instanceID})}_getInternalData(){return{isa:s(this,T,"f"),promiseStartScan:s(this,C,"f"),intermediateResultManager:s(this,w,"f"),bufferdItemsManager:s(this,k,"f"),resultReceiverSet:s(this,E,"f"),isaStateListenerSet:s(this,D,"f"),resultFilterSet:s(this,S,"f"),compressRate:s(this,b,"f"),canvas:s(this,y,"f"),isScanner:s(this,O,"f"),innerUseTag:s(this,N,"f"),isDestroyed:s(this,M,"f")}}async _getWasmFilterState(){return await new Promise(((e,s)=>{let i=t.getNextTaskID();t.mapTaskCallBack[i]=async t=>{if(t.success){const s=JSON.parse(t.response);return e(s)}{let e=new Error(t.message);return e.stack=t.stack+"\n"+e.stack,s(e)}},t.worker.postMessage({type:"cvr_getWasmFilterState",id:i,instanceID:this._instanceID})}))}}async function A(e,s){return U(e),await new Promise(((i,a)=>{let r=t.getNextTaskID();t.mapTaskCallBack[r]=async e=>{if(e.success)return i(e.result);{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,a(t)}},t.worker.postMessage({type:"cvr_enableResultCrossVerification",id:r,instanceID:e._instanceID,body:{verificationEnabled:s}})}))}async function F(e,s){return U(e),await new Promise(((i,a)=>{let r=t.getNextTaskID();t.mapTaskCallBack[r]=async e=>{if(e.success)return i(e.result);{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,a(t)}},t.worker.postMessage({type:"cvr_enableResultDeduplication",id:r,instanceID:e._instanceID,body:{duplicateFilterEnabled:s}})}))}async function x(e,s){return U(e),await new Promise(((i,a)=>{let r=t.getNextTaskID();t.mapTaskCallBack[r]=async e=>{if(e.success)return i(e.result);{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,a(t)}},t.worker.postMessage({type:"cvr_setDuplicateForgetTime",id:r,instanceID:e._instanceID,body:{duplicateForgetTime:s}})}))}T=new WeakMap,y=new WeakMap,C=new WeakMap,w=new WeakMap,k=new WeakMap,E=new WeakMap,D=new WeakMap,S=new WeakMap,b=new WeakMap,O=new WeakMap,N=new WeakMap,M=new WeakMap,B._defaultTemplate="Default";var V;e.EnumPresetTemplate=void 0,(V=e.EnumPresetTemplate||(e.EnumPresetTemplate={})).PT_DEFAULT="Default",V.PT_READ_BARCODES="ReadBarcodes_Default",V.PT_RECOGNIZE_TEXT_LINES="RecognizeTextLines_Default",V.PT_DETECT_DOCUMENT_BOUNDARIES="DetectDocumentBoundaries_Default",V.PT_DETECT_AND_NORMALIZE_DOCUMENT="DetectAndNormalizeDocument_Default",V.PT_NORMALIZE_DOCUMENT="NormalizeDocument_Default",V.PT_READ_BARCODES_SPEED_FIRST="ReadBarcodes_SpeedFirst",V.PT_READ_BARCODES_READ_RATE_FIRST="ReadBarcodes_ReadRateFirst",V.PT_READ_BARCODES_BALANCE="ReadBarcodes_Balance",V.PT_READ_SINGLE_BARCODE="ReadBarcodes_Balanced",V.PT_READ_DENSE_BARCODES="ReadDenseBarcodes",V.PT_READ_DISTANT_BARCODES="ReadDistantBarcodes",V.PT_RECOGNIZE_NUMBERS="RecognizeNumbers",V.PT_RECOGNIZE_LETTERS="RecognizeLetters",V.PT_RECOGNIZE_NUMBERS_AND_LETTERS="RecognizeNumbersAndLetters",V.PT_RECOGNIZE_NUMBERS_AND_UPPERCASE_LETTERS="RecognizeNumbersAndUppercaseLetters",V.PT_RECOGNIZE_UPPERCASE_LETTERS="RecognizeUppercaseLetters",e.CaptureVisionRouter=B,e.CaptureVisionRouterModule=_,e.CapturedResultReceiver=class{constructor(){this.onCapturedResultReceived=null,this.onOriginalImageResultReceived=null}},e.IntermediateResultReceiver=class{constructor(){this._observedResultUnitTypes=t.EnumIntermediateResultUnitType.IRUT_ALL,this._observedTaskMap=new Map,this._parameters={setObservedResultUnitTypes:e=>{this._observedResultUnitTypes=e},getObservedResultUnitTypes:()=>this._observedResultUnitTypes,isResultUnitTypeObserved:e=>!!(e&this._observedResultUnitTypes),addObservedTask:e=>{this._observedTaskMap.set(e,!0)},removeObservedTask:e=>{this._observedTaskMap.set(e,!1)},isTaskObserved:e=>0===this._observedTaskMap.size||!!this._observedTaskMap.get(e)},this.onTaskResultsReceived=null,this.onPredetectedRegionsReceived=null,this.onColourImageUnitReceived=null,this.onScaledDownColourImageUnitReceived=null,this.onGrayscaleImageUnitReceived=null,this.onTransformedGrayscaleImageUnitReceived=null,this.onEnhancedGrayscaleImageUnitReceived=null,this.onBinaryImageUnitReceived=null,this.onTextureDetectionResultUnitReceived=null,this.onTextureRemovedGrayscaleImageUnitReceived=null,this.onTextureRemovedBinaryImageUnitReceived=null,this.onContoursUnitReceived=null,this.onLineSegmentsUnitReceived=null,this.onTextZonesUnitReceived=null,this.onTextRemovedBinaryImageUnitReceived=null,this.onShortLinesUnitReceived=null}getObservationParameters(){return this._parameters}}})); diff --git a/dist/dynamsoft-capture-vision-router@2.4.33/dist/cvr.worker.js b/dist/dynamsoft-capture-vision-router@2.4.33/dist/cvr.worker.js new file mode 100644 index 0000000..d1e4e30 --- /dev/null +++ b/dist/dynamsoft-capture-vision-router@2.4.33/dist/cvr.worker.js @@ -0,0 +1,21 @@ +/*! + * Dynamsoft JavaScript Library + * @product Dynamsoft Capture Vision Router JS Edition + * @website http://www.dynamsoft.com + * @copyright Copyright 2024, Dynamsoft Corporation + * @author Dynamsoft + * @version "2.4.33" + * @fileoverview Dynamsoft JavaScript Library for Capture Vision + * More info on cvr JS: https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/capture-vision-router-module.html + */ +!function(){"use strict"; +/*! + * Dynamsoft JavaScript Library + * @product Dynamsoft Core JS Edition + * @website https://www.dynamsoft.com + * @copyright Copyright 2024, Dynamsoft Corporation + * @author Dynamsoft + * @version 3.4.30 + * @fileoverview Dynamsoft JavaScript Library for Core + * More info on Dynamsoft Core JS: https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/core-module.html + */var _,e,E,t;"function"==typeof SuppressedError&&SuppressedError,(t=_||(_={}))[t.BOPM_BLOCK=0]="BOPM_BLOCK",t[t.BOPM_UPDATE=1]="BOPM_UPDATE",function(_){_[_.CCUT_AUTO=0]="CCUT_AUTO",_[_.CCUT_FULL_CHANNEL=1]="CCUT_FULL_CHANNEL",_[_.CCUT_Y_CHANNEL_ONLY=2]="CCUT_Y_CHANNEL_ONLY",_[_.CCUT_RGB_R_CHANNEL_ONLY=3]="CCUT_RGB_R_CHANNEL_ONLY",_[_.CCUT_RGB_G_CHANNEL_ONLY=4]="CCUT_RGB_G_CHANNEL_ONLY",_[_.CCUT_RGB_B_CHANNEL_ONLY=5]="CCUT_RGB_B_CHANNEL_ONLY"}(e||(e={})),function(_){_[_.IPF_BINARY=0]="IPF_BINARY",_[_.IPF_BINARYINVERTED=1]="IPF_BINARYINVERTED",_[_.IPF_GRAYSCALED=2]="IPF_GRAYSCALED",_[_.IPF_NV21=3]="IPF_NV21",_[_.IPF_RGB_565=4]="IPF_RGB_565",_[_.IPF_RGB_555=5]="IPF_RGB_555",_[_.IPF_RGB_888=6]="IPF_RGB_888",_[_.IPF_ARGB_8888=7]="IPF_ARGB_8888",_[_.IPF_RGB_161616=8]="IPF_RGB_161616",_[_.IPF_ARGB_16161616=9]="IPF_ARGB_16161616",_[_.IPF_ABGR_8888=10]="IPF_ABGR_8888",_[_.IPF_ABGR_16161616=11]="IPF_ABGR_16161616",_[_.IPF_BGR_888=12]="IPF_BGR_888",_[_.IPF_BINARY_8=13]="IPF_BINARY_8",_[_.IPF_NV12=14]="IPF_NV12",_[_.IPF_BINARY_8_INVERTED=15]="IPF_BINARY_8_INVERTED"}(E||(E={}));const s=_=>"number"==typeof _&&!Number.isNaN(_),I=_=>null!==_&&"object"==typeof _&&!Array.isArray(_),r=_=>!(!(_=>!(!I(_)||!s(_.width)||_.width<=0||!s(_.height)||_.height<=0||!s(_.stride)||_.stride<=0||!("format"in _)||"tag"in _&&!n(_.tag)))(_)||!s(_.bytes.length)&&!s(_.bytes.ptr)),n=_=>null===_||!!I(_)&&!!s(_.imageId)&&"type"in _,C="undefined"==typeof self,T="function"==typeof importScripts,a=(()=>{if(!T){if(!C&&document.currentScript){let _=document.currentScript.src,e=_.indexOf("?");if(-1!=e)_=_.substring(0,e);else{let e=_.indexOf("#");-1!=e&&(_=_.substring(0,e))}return _.substring(0,_.lastIndexOf("/")+1)}return"./"}})();let A,i,R,N,D;async function O(_,e){return await new Promise(((E,t)=>{let s=new XMLHttpRequest;s.open("GET",_,!0),s.responseType=e,s.send(),s.onloadend=async()=>{s.status<200||s.status>=300?t(_+" "+s.status):E(s.response)},s.onerror=()=>{t(new Error("Network Error: "+s.statusText))}}))}var L,o,S,c,l,m,p,u,d;"undefined"!=typeof navigator&&(A=navigator,i=A.userAgent,R=A.platform,N=A.mediaDevices),function(){if(!C){const _={Edge:{search:"Edg",verSearch:"Edg"},OPR:null,Chrome:null,Safari:{str:A.vendor,search:"Apple",verSearch:["Version","iPhone OS","CPU OS"]},Firefox:null,Explorer:{search:"MSIE",verSearch:"MSIE"}},e={HarmonyOS:null,Android:null,iPhone:null,iPad:null,Windows:{str:R,search:"Win"},Mac:{str:R},Linux:{str:R}};let E="unknownBrowser",t=0,s="unknownOS";for(let e in _){const s=_[e]||{};let I=s.str||i,r=s.search||e,n=s.verStr||i,C=s.verSearch||e;if(C instanceof Array||(C=[C]),-1!=I.indexOf(r)){E=e;for(let _ of C){let e=n.indexOf(_);if(-1!=e){t=parseFloat(n.substring(e+_.length+1));break}}break}}for(let _ in e){const E=e[_]||{};let t=E.str||i,I=E.search||_;if(-1!=t.indexOf(I)){s=_;break}}"Linux"==s&&-1!=i.indexOf("Windows NT")&&(s="HarmonyOS"),D={browser:E,version:t,OS:s}}C&&(D={browser:"ssr",version:0,OS:"ssr"})}(),N&&N.getUserMedia,"Chrome"===D.browser&&D.version>66||"Safari"===D.browser&&D.version>13||"OPR"===D.browser&&D.version>43||"Edge"===D.browser&&D.version,(_=>{if(null==_&&(_="./"),C||T);else{let e=document.createElement("a");e.href=_,_=e.href}_.endsWith("/")||(_+="/")})(a+"../../dynamsoft-capture-vision-std@1.4.10/dist/"),function(_){_[_.CRIT_ORIGINAL_IMAGE=1]="CRIT_ORIGINAL_IMAGE",_[_.CRIT_BARCODE=2]="CRIT_BARCODE",_[_.CRIT_TEXT_LINE=4]="CRIT_TEXT_LINE",_[_.CRIT_DETECTED_QUAD=8]="CRIT_DETECTED_QUAD",_[_.CRIT_NORMALIZED_IMAGE=16]="CRIT_NORMALIZED_IMAGE",_[_.CRIT_PARSED_RESULT=32]="CRIT_PARSED_RESULT"}(L||(L={})),function(_){_[_.CT_NORMAL_INTERSECTED=0]="CT_NORMAL_INTERSECTED",_[_.CT_T_INTERSECTED=1]="CT_T_INTERSECTED",_[_.CT_CROSS_INTERSECTED=2]="CT_CROSS_INTERSECTED",_[_.CT_NOT_INTERSECTED=3]="CT_NOT_INTERSECTED"}(o||(o={})),function(_){_[_.EC_OK=0]="EC_OK",_[_.EC_UNKNOWN=-1e4]="EC_UNKNOWN",_[_.EC_NO_MEMORY=-10001]="EC_NO_MEMORY",_[_.EC_NULL_POINTER=-10002]="EC_NULL_POINTER",_[_.EC_LICENSE_INVALID=-10003]="EC_LICENSE_INVALID",_[_.EC_LICENSE_EXPIRED=-10004]="EC_LICENSE_EXPIRED",_[_.EC_FILE_NOT_FOUND=-10005]="EC_FILE_NOT_FOUND",_[_.EC_FILE_TYPE_NOT_SUPPORTED=-10006]="EC_FILE_TYPE_NOT_SUPPORTED",_[_.EC_BPP_NOT_SUPPORTED=-10007]="EC_BPP_NOT_SUPPORTED",_[_.EC_INDEX_INVALID=-10008]="EC_INDEX_INVALID",_[_.EC_CUSTOM_REGION_INVALID=-10010]="EC_CUSTOM_REGION_INVALID",_[_.EC_IMAGE_READ_FAILED=-10012]="EC_IMAGE_READ_FAILED",_[_.EC_TIFF_READ_FAILED=-10013]="EC_TIFF_READ_FAILED",_[_.EC_DIB_BUFFER_INVALID=-10018]="EC_DIB_BUFFER_INVALID",_[_.EC_PDF_READ_FAILED=-10021]="EC_PDF_READ_FAILED",_[_.EC_PDF_DLL_MISSING=-10022]="EC_PDF_DLL_MISSING",_[_.EC_PAGE_NUMBER_INVALID=-10023]="EC_PAGE_NUMBER_INVALID",_[_.EC_CUSTOM_SIZE_INVALID=-10024]="EC_CUSTOM_SIZE_INVALID",_[_.EC_TIMEOUT=-10026]="EC_TIMEOUT",_[_.EC_JSON_PARSE_FAILED=-10030]="EC_JSON_PARSE_FAILED",_[_.EC_JSON_TYPE_INVALID=-10031]="EC_JSON_TYPE_INVALID",_[_.EC_JSON_KEY_INVALID=-10032]="EC_JSON_KEY_INVALID",_[_.EC_JSON_VALUE_INVALID=-10033]="EC_JSON_VALUE_INVALID",_[_.EC_JSON_NAME_KEY_MISSING=-10034]="EC_JSON_NAME_KEY_MISSING",_[_.EC_JSON_NAME_VALUE_DUPLICATED=-10035]="EC_JSON_NAME_VALUE_DUPLICATED",_[_.EC_TEMPLATE_NAME_INVALID=-10036]="EC_TEMPLATE_NAME_INVALID",_[_.EC_JSON_NAME_REFERENCE_INVALID=-10037]="EC_JSON_NAME_REFERENCE_INVALID",_[_.EC_PARAMETER_VALUE_INVALID=-10038]="EC_PARAMETER_VALUE_INVALID",_[_.EC_DOMAIN_NOT_MATCH=-10039]="EC_DOMAIN_NOT_MATCH",_[_.EC_RESERVED_INFO_NOT_MATCH=-10040]="EC_RESERVED_INFO_NOT_MATCH",_[_.EC_LICENSE_KEY_NOT_MATCH=-10043]="EC_LICENSE_KEY_NOT_MATCH",_[_.EC_REQUEST_FAILED=-10044]="EC_REQUEST_FAILED",_[_.EC_LICENSE_INIT_FAILED=-10045]="EC_LICENSE_INIT_FAILED",_[_.EC_SET_MODE_ARGUMENT_ERROR=-10051]="EC_SET_MODE_ARGUMENT_ERROR",_[_.EC_LICENSE_CONTENT_INVALID=-10052]="EC_LICENSE_CONTENT_INVALID",_[_.EC_LICENSE_KEY_INVALID=-10053]="EC_LICENSE_KEY_INVALID",_[_.EC_LICENSE_DEVICE_RUNS_OUT=-10054]="EC_LICENSE_DEVICE_RUNS_OUT",_[_.EC_GET_MODE_ARGUMENT_ERROR=-10055]="EC_GET_MODE_ARGUMENT_ERROR",_[_.EC_IRT_LICENSE_INVALID=-10056]="EC_IRT_LICENSE_INVALID",_[_.EC_FILE_SAVE_FAILED=-10058]="EC_FILE_SAVE_FAILED",_[_.EC_STAGE_TYPE_INVALID=-10059]="EC_STAGE_TYPE_INVALID",_[_.EC_IMAGE_ORIENTATION_INVALID=-10060]="EC_IMAGE_ORIENTATION_INVALID",_[_.EC_CONVERT_COMPLEX_TEMPLATE_ERROR=-10061]="EC_CONVERT_COMPLEX_TEMPLATE_ERROR",_[_.EC_CALL_REJECTED_WHEN_CAPTURING=-10062]="EC_CALL_REJECTED_WHEN_CAPTURING",_[_.EC_NO_IMAGE_SOURCE=-10063]="EC_NO_IMAGE_SOURCE",_[_.EC_READ_DIRECTORY_FAILED=-10064]="EC_READ_DIRECTORY_FAILED",_[_.EC_MODULE_NOT_FOUND=-10065]="EC_MODULE_NOT_FOUND",_[_.EC_MULTI_PAGES_NOT_SUPPORTED=-10066]="EC_MULTI_PAGES_NOT_SUPPORTED",_[_.EC_FILE_ALREADY_EXISTS=-10067]="EC_FILE_ALREADY_EXISTS",_[_.EC_CREATE_FILE_FAILED=-10068]="EC_CREATE_FILE_FAILED",_[_.EC_IMGAE_DATA_INVALID=-10069]="EC_IMGAE_DATA_INVALID",_[_.EC_IMAGE_SIZE_NOT_MATCH=-10070]="EC_IMAGE_SIZE_NOT_MATCH",_[_.EC_IMAGE_PIXEL_FORMAT_NOT_MATCH=-10071]="EC_IMAGE_PIXEL_FORMAT_NOT_MATCH",_[_.EC_SECTION_LEVEL_RESULT_IRREPLACEABLE=-10072]="EC_SECTION_LEVEL_RESULT_IRREPLACEABLE",_[_.EC_AXIS_DEFINITION_INCORRECT=-10073]="EC_AXIS_DEFINITION_INCORRECT",_[_.EC_RESULT_TYPE_MISMATCH_IRREPLACEABLE=-10074]="EC_RESULT_TYPE_MISMATCH_IRREPLACEABLE",_[_.EC_PDF_LIBRARY_LOAD_FAILED=-10075]="EC_PDF_LIBRARY_LOAD_FAILED",_[_.EC_NO_LICENSE=-2e4]="EC_NO_LICENSE",_[_.EC_HANDSHAKE_CODE_INVALID=-20001]="EC_HANDSHAKE_CODE_INVALID",_[_.EC_LICENSE_BUFFER_FAILED=-20002]="EC_LICENSE_BUFFER_FAILED",_[_.EC_LICENSE_SYNC_FAILED=-20003]="EC_LICENSE_SYNC_FAILED",_[_.EC_DEVICE_NOT_MATCH=-20004]="EC_DEVICE_NOT_MATCH",_[_.EC_BIND_DEVICE_FAILED=-20005]="EC_BIND_DEVICE_FAILED",_[_.EC_INSTANCE_COUNT_OVER_LIMIT=-20008]="EC_INSTANCE_COUNT_OVER_LIMIT",_[_.EC_LICENSE_INIT_SEQUENCE_FAILED=-20009]="EC_LICENSE_INIT_SEQUENCE_FAILED",_[_.EC_TRIAL_LICENSE=-20010]="EC_TRIAL_LICENSE",_[_.EC_FAILED_TO_REACH_DLS=-20200]="EC_FAILED_TO_REACH_DLS",_[_.EC_LICENSE_CACHE_USED=-20012]="EC_LICENSE_CACHE_USED",_[_.EC_BARCODE_FORMAT_INVALID=-30009]="EC_BARCODE_FORMAT_INVALID",_[_.EC_QR_LICENSE_INVALID=-30016]="EC_QR_LICENSE_INVALID",_[_.EC_1D_LICENSE_INVALID=-30017]="EC_1D_LICENSE_INVALID",_[_.EC_PDF417_LICENSE_INVALID=-30019]="EC_PDF417_LICENSE_INVALID",_[_.EC_DATAMATRIX_LICENSE_INVALID=-30020]="EC_DATAMATRIX_LICENSE_INVALID",_[_.EC_CUSTOM_MODULESIZE_INVALID=-30025]="EC_CUSTOM_MODULESIZE_INVALID",_[_.EC_AZTEC_LICENSE_INVALID=-30041]="EC_AZTEC_LICENSE_INVALID",_[_.EC_PATCHCODE_LICENSE_INVALID=-30046]="EC_PATCHCODE_LICENSE_INVALID",_[_.EC_POSTALCODE_LICENSE_INVALID=-30047]="EC_POSTALCODE_LICENSE_INVALID",_[_.EC_DPM_LICENSE_INVALID=-30048]="EC_DPM_LICENSE_INVALID",_[_.EC_FRAME_DECODING_THREAD_EXISTS=-30049]="EC_FRAME_DECODING_THREAD_EXISTS",_[_.EC_STOP_DECODING_THREAD_FAILED=-30050]="EC_STOP_DECODING_THREAD_FAILED",_[_.EC_MAXICODE_LICENSE_INVALID=-30057]="EC_MAXICODE_LICENSE_INVALID",_[_.EC_GS1_DATABAR_LICENSE_INVALID=-30058]="EC_GS1_DATABAR_LICENSE_INVALID",_[_.EC_GS1_COMPOSITE_LICENSE_INVALID=-30059]="EC_GS1_COMPOSITE_LICENSE_INVALID",_[_.EC_DOTCODE_LICENSE_INVALID=-30061]="EC_DOTCODE_LICENSE_INVALID",_[_.EC_PHARMACODE_LICENSE_INVALID=-30062]="EC_PHARMACODE_LICENSE_INVALID",_[_.EC_CHARACTER_MODEL_FILE_NOT_FOUND=-40100]="EC_CHARACTER_MODEL_FILE_NOT_FOUND",_[_.EC_TEXT_LINE_GROUP_LAYOUT_CONFLICT=-40101]="EC_TEXT_LINE_GROUP_LAYOUT_CONFLICT",_[_.EC_TEXT_LINE_GROUP_REGEX_CONFLICT=-40102]="EC_TEXT_LINE_GROUP_REGEX_CONFLICT",_[_.EC_QUADRILATERAL_INVALID=-50057]="EC_QUADRILATERAL_INVALID",_[_.EC_PANORAMA_LICENSE_INVALID=-70060]="EC_PANORAMA_LICENSE_INVALID",_[_.EC_RESOURCE_PATH_NOT_EXIST=-90001]="EC_RESOURCE_PATH_NOT_EXIST",_[_.EC_RESOURCE_LOAD_FAILED=-90002]="EC_RESOURCE_LOAD_FAILED",_[_.EC_CODE_SPECIFICATION_NOT_FOUND=-90003]="EC_CODE_SPECIFICATION_NOT_FOUND",_[_.EC_FULL_CODE_EMPTY=-90004]="EC_FULL_CODE_EMPTY",_[_.EC_FULL_CODE_PREPROCESS_FAILED=-90005]="EC_FULL_CODE_PREPROCESS_FAILED",_[_.EC_ZA_DL_LICENSE_INVALID=-90006]="EC_ZA_DL_LICENSE_INVALID",_[_.EC_AAMVA_DL_ID_LICENSE_INVALID=-90007]="EC_AAMVA_DL_ID_LICENSE_INVALID",_[_.EC_AADHAAR_LICENSE_INVALID=-90008]="EC_AADHAAR_LICENSE_INVALID",_[_.EC_MRTD_LICENSE_INVALID=-90009]="EC_MRTD_LICENSE_INVALID",_[_.EC_VIN_LICENSE_INVALID=-90010]="EC_VIN_LICENSE_INVALID",_[_.EC_CUSTOMIZED_CODE_TYPE_LICENSE_INVALID=-90011]="EC_CUSTOMIZED_CODE_TYPE_LICENSE_INVALID",_[_.EC_LICENSE_WARNING=-10076]="EC_LICENSE_WARNING",_[_.EC_BARCODE_READER_LICENSE_NOT_FOUND=-30063]="EC_BARCODE_READER_LICENSE_NOT_FOUND",_[_.EC_LABEL_RECOGNIZER_LICENSE_NOT_FOUND=-40103]="EC_LABEL_RECOGNIZER_LICENSE_NOT_FOUND",_[_.EC_DOCUMENT_NORMALIZER_LICENSE_NOT_FOUND=-50058]="EC_DOCUMENT_NORMALIZER_LICENSE_NOT_FOUND",_[_.EC_CODE_PARSER_LICENSE_NOT_FOUND=-90012]="EC_CODE_PARSER_LICENSE_NOT_FOUND"}(S||(S={})),function(_){_[_.GEM_SKIP=0]="GEM_SKIP",_[_.GEM_AUTO=1]="GEM_AUTO",_[_.GEM_GENERAL=2]="GEM_GENERAL",_[_.GEM_GRAY_EQUALIZE=4]="GEM_GRAY_EQUALIZE",_[_.GEM_GRAY_SMOOTH=8]="GEM_GRAY_SMOOTH",_[_.GEM_SHARPEN_SMOOTH=16]="GEM_SHARPEN_SMOOTH",_[_.GEM_REV=-2147483648]="GEM_REV"}(c||(c={})),function(_){_[_.GTM_SKIP=0]="GTM_SKIP",_[_.GTM_INVERTED=1]="GTM_INVERTED",_[_.GTM_ORIGINAL=2]="GTM_ORIGINAL",_[_.GTM_AUTO=4]="GTM_AUTO",_[_.GTM_REV=-2147483648]="GTM_REV"}(l||(l={})),function(_){_[_.ITT_FILE_IMAGE=0]="ITT_FILE_IMAGE",_[_.ITT_VIDEO_FRAME=1]="ITT_VIDEO_FRAME"}(m||(m={})),function(_){_[_.PDFRM_VECTOR=1]="PDFRM_VECTOR",_[_.PDFRM_RASTER=2]="PDFRM_RASTER",_[_.PDFRM_REV=-2147483648]="PDFRM_REV"}(p||(p={})),function(_){_[_.RDS_RASTERIZED_PAGES=0]="RDS_RASTERIZED_PAGES",_[_.RDS_EXTRACTED_IMAGES=1]="RDS_EXTRACTED_IMAGES"}(u||(u={})),function(_){_[_.CVS_NOT_VERIFIED=0]="CVS_NOT_VERIFIED",_[_.CVS_PASSED=1]="CVS_PASSED",_[_.CVS_FAILED=2]="CVS_FAILED"}(d||(d={}));const U={IRUT_NULL:BigInt(0),IRUT_COLOUR_IMAGE:BigInt(1),IRUT_SCALED_DOWN_COLOUR_IMAGE:BigInt(2),IRUT_GRAYSCALE_IMAGE:BigInt(4),IRUT_TRANSOFORMED_GRAYSCALE_IMAGE:BigInt(8),IRUT_ENHANCED_GRAYSCALE_IMAGE:BigInt(16),IRUT_PREDETECTED_REGIONS:BigInt(32),IRUT_BINARY_IMAGE:BigInt(64),IRUT_TEXTURE_DETECTION_RESULT:BigInt(128),IRUT_TEXTURE_REMOVED_GRAYSCALE_IMAGE:BigInt(256),IRUT_TEXTURE_REMOVED_BINARY_IMAGE:BigInt(512),IRUT_CONTOURS:BigInt(1024),IRUT_LINE_SEGMENTS:BigInt(2048),IRUT_TEXT_ZONES:BigInt(4096),IRUT_TEXT_REMOVED_BINARY_IMAGE:BigInt(8192),IRUT_CANDIDATE_BARCODE_ZONES:BigInt(16384),IRUT_LOCALIZED_BARCODES:BigInt(32768),IRUT_SCALED_UP_BARCODE_IMAGE:BigInt(65536),IRUT_DEFORMATION_RESISTED_BARCODE_IMAGE:BigInt(1<<17),IRUT_COMPLEMENTED_BARCODE_IMAGE:BigInt(1<<18),IRUT_DECODED_BARCODES:BigInt(1<<19),IRUT_LONG_LINES:BigInt(1<<20),IRUT_CORNERS:BigInt(1<<21),IRUT_CANDIDATE_QUAD_EDGES:BigInt(1<<22),IRUT_DETECTED_QUADS:BigInt(1<<23),IRUT_LOCALIZED_TEXT_LINES:BigInt(1<<24),IRUT_RECOGNIZED_TEXT_LINES:BigInt(1<<25),IRUT_NORMALIZED_IMAGES:BigInt(1<<26),IRUT_SHORT_LINES:BigInt(1<<27),IRUT_RAW_TEXT_LINES:BigInt(1<<28),IRUT_LOGIC_LINES:BigInt(1<<29),IRUT_ALL:BigInt("0xFFFFFFFFFFFFFFFF")};var M,g;function F(_,e){for(let E of _)if(E.result){if([U.IRUT_BINARY_IMAGE,U.IRUT_COLOUR_IMAGE,U.IRUT_COMPLEMENTED_BARCODE_IMAGE,U.IRUT_ENHANCED_GRAYSCALE_IMAGE,U.IRUT_GRAYSCALE_IMAGE,U.IRUT_SCALED_DOWN_COLOUR_IMAGE,U.IRUT_SCALED_UP_BARCODE_IMAGE,U.IRUT_TEXTURE_REMOVED_BINARY_IMAGE,U.IRUT_TEXTURE_REMOVED_GRAYSCALE_IMAGE,U.IRUT_TEXT_REMOVED_BINARY_IMAGE,U.IRUT_TRANSOFORMED_GRAYSCALE_IMAGE].includes(BigInt(E.result.unitType))){let _=E.result.imageData.bytes;_&&(_=new Uint8Array(new Uint8Array(e.buffer,_.ptr,_.length)),E.result.imageData.bytes=_)}else if([U.IRUT_DEFORMATION_RESISTED_BARCODE_IMAGE].includes(BigInt(E.result.unitType))){let _=E.result.deformationResistedBarcode.imageData.bytes;_&&(_=new Uint8Array(new Uint8Array(e.buffer,_.ptr,_.length)),E.result.deformationResistedBarcode.imageData.bytes=_)}else if([U.IRUT_CONTOURS].includes(BigInt(E.result.unitType))){let _=E.result.contours,t=E.result.contoursOffset;if(_&&t){_=new Uint8Array(new Uint8Array(e.buffer,_.ptr,_.length)),t=new Uint8Array(new Uint8Array(e.buffer,t.ptr,t.length));const s=new DataView(_.buffer),I=[];for(let e=0;e<_.length;e+=4)I.push(s.getInt32(e,!0));const r=new DataView(t.buffer),n=[0];for(let _=0;_{ep();const E=JSON.parse(UTF8ToString(wasmImports.emscripten_bind_CvrWasm_ParseRequiredResources_1(_,es(e.templateName))));for(let _=0;_{try{let _=wasmImports.emscripten_bind_CvrWasm_CvrWasm_0();engineResourcePaths.dbr&&(P=await O(engineResourcePaths.dbr+"DBR-PresetTemplates.json","text"),ep(),wasmImports.emscripten_bind_CvrWasm_AppendParameterContent_1(_,es(P))),engineResourcePaths.dlr&&(f=await O(engineResourcePaths.dlr+"DLR-PresetTemplates.json","text"),ep(),wasmImports.emscripten_bind_CvrWasm_AppendParameterContent_1(_,es(f))),engineResourcePaths.ddn&&(G=await O(engineResourcePaths.ddn+"DDN-PresetTemplates.json","text"),ep(),wasmImports.emscripten_bind_CvrWasm_AppendParameterContent_1(_,es(G))),wasmImports.emscripten_bind_CvrWasm_InitParameter_0(_),ep();const E=UTF8ToString(wasmImports.emscripten_bind_CvrWasm_OutputSettings_1(_,es("*")));let t=JSON.parse(UTF8ToString(wasmImports.emscripten_bind_CoreWasm_GetModuleVersion_0())).CVR;h.add(_),handleTaskRes(e,{instanceID:_,version:t,outputSettings:E})}catch(_){console.log(_),handleTaskErr(e,_)}},cvr_initSettings:async(_,e,E)=>{let t;try{const s=_.settings;ep(),t=UTF8ToString(wasmImports.emscripten_bind_CvrWasm_InitSettings_1(E,es(s))),handleTaskRes(e,{success:!0,response:t})}catch(_){handleTaskErr(e,_)}},cvr_setCrrRegistry:async(_,e,E)=>{try{h.has(E)&&(ep(),wasmImports.emscripten_bind_CvrWasm_SetCrrRegistry_1(E,es(_.receiver))),handleTaskRes(e,{success:!0})}catch(_){handleTaskErr(e,_)}},cvr_startCapturing:async(_,e,E)=>{let t=!1;try{ep();const s=JSON.parse(UTF8ToString(wasmImports.emscripten_bind_CvrWasm_OutputSettings_1(E,es(_.templateName))));if(s&&0!==s.errorCode)throw new Error(s.errorString);t=1===JSON.parse(s.data).CaptureVisionTemplates[0].OutputOriginalImage,await V(E,_),handleTaskRes(e,{success:!0,isOutputOriginalImage:t})}catch(_){handleTaskErr(e,_)}},cvr_parseRequiredResources:async(_,e,E)=>{let t;try{ep(),t=UTF8ToString(wasmImports.emscripten_bind_CvrWasm_ParseRequiredResources_1(E,es(_.templateName))),handleTaskRes(e,{success:!0,resources:t})}catch(_){handleTaskErr(e,_)}},cvr_clearVerifyList:(_,e,E)=>{try{wasmImports.emscripten_bind_CvrWasm_ClearVerifyList_0(E),handleTaskRes(e,{success:!0})}catch(_){handleTaskErr(e,_)}},cvr_getIntermediateResult:(_,e,E)=>{let t={};try{t=JSON.parse(UTF8ToString(wasmImports.emscripten_bind_CvrWasm_GetIntermediateResult_0(E)),((_,e)=>["format","possibleFormats","unitType"].includes(_)?BigInt(e):e)),t&&F(t,HEAP8)}catch(_){handleTaskErr(e,_)}handleTaskRes(e,{success:!0,result:t})},cvr_setObservedResultUnitTypes:(_,e,E)=>{try{ep(),wasmImports.emscripten_bind_CvrWasm_SetObservedResultUnitTypes_1(E,es(_.types))}catch(_){handleTaskErr(e,_)}handleTaskRes(e,{success:!0})},cvr_getObservedResultUnitTypes:(_,e,E)=>{let t;try{ep(),t=UTF8ToString(wasmImports.emscripten_bind_CvrWasm_GetObservedResultUnitTypes_0(E))}catch(_){handleTaskErr(e,_)}handleTaskRes(e,{success:!0,result:t})},cvr_isResultUnitTypeObserved:(_,e,E)=>{let t;try{ep(),t=wasmImports.emscripten_bind_CvrWasm_IsResultUnitTypeObserved_1(E,es(_.type))}catch(_){handleTaskErr(e,_)}handleTaskRes(e,{success:!0,result:t})},cvr_capture:async(_,e,E)=>{let t,s,I;await checkAndReauth(),log(`time worker get msg: ${Date.now()}`);try{let e=Date.now();await V(E,_),log("appendResourceTime: "+(Date.now()-e)),y&&(wasmImports.emscripten_bind_Destory_CImageData(y),y=null),y=wasmImports.emscripten_bind_Create_CImageData(_.bytes.length,setBufferIntoWasm(_.bytes,0),_.width,_.height,_.stride,_.format,0);let n=Date.now();log(`start worker capture: ${n}`),ep(),s=UTF8ToString(wasmImports.emscripten_bind_CvrWasm_Capture_3(E,y,es(_.templateName),_.isScanner));let C=Date.now();log("worker time: "+(C-n)),log(`end worker capture: ${C}`),s=JSON.parse(s,(function(_,e){return"format"!==_||r(this)?e:BigInt(e)}));let T=Date.now();log("capture result parsed: "+(T-C));for(let _=0;_["format","possibleFormats","unitType"].includes(_)?BigInt(e):e)),t&&F(t,HEAP8),s.intermediateResult=t;let A=Date.now();log("get intermediate result: "+(A-a)),log("after capture handle time: "+(Date.now()-C))}catch(_){return void handleTaskErr(e,_)}const n=Date.now();log(`time worker return msg: ${n}`),postMessage({type:"task",id:e,body:{success:!0,bytes:_.bytes,captureResult:s,workerReturnMsgTime:n}},[_.bytes.buffer])},cvr_outputSettings:async(_,e,E)=>{let t;try{ep(),t=UTF8ToString(wasmImports.emscripten_bind_CvrWasm_OutputSettings_1(E,es(_.templateName))),handleTaskRes(e,{success:!0,response:t})}catch(_){handleTaskErr(e,_)}},cvr_getTemplateNames:async(_,e,E)=>{let t;try{ep(),t=UTF8ToString(wasmImports.emscripten_bind_CvrWasm_GetTemplateNames_0(E)),handleTaskRes(e,{success:!0,response:t})}catch(_){console.log(_),handleTaskErr(e,_)}},cvr_getSimplifiedSettings:async(_,e,E)=>{let t;try{ep(),t=UTF8ToString(wasmImports.emscripten_bind_CvrWasm_GetSimplifiedSettings_1(E,es(_.templateName))),handleTaskRes(e,{success:!0,response:t})}catch(_){handleTaskErr(e,_)}},cvr_updateSettings:async(_,e,E)=>{let t,s=!1;try{let I=_.settings,r=_.templateName;"object"==typeof I&&I.hasOwnProperty("barcodeSettings")&&(I.barcodeSettings.barcodeFormatIds=I.barcodeSettings.barcodeFormatIds.toString()),ep(),t=UTF8ToString(wasmImports.emscripten_bind_CvrWasm_UpdateSettings_2(E,es(r),es(JSON.stringify(I)))),ep();const n=JSON.parse(UTF8ToString(wasmImports.emscripten_bind_CvrWasm_OutputSettings_1(E,es(r))));if(!n.errorCode){s=1===JSON.parse(n.data).CaptureVisionTemplates[0].OutputOriginalImage}handleTaskRes(e,{success:!0,response:t,isOutputOriginalImage:s})}catch(_){handleTaskErr(e,_)}},cvr_resetSettings:async(_,e,E)=>{let t;try{wasmImports.emscripten_bind_CvrWasm_ResetSettings_0(E),ep(),P&&wasmImports.emscripten_bind_CvrWasm_AppendParameterContent_1(E,es(P)),ep(),f&&wasmImports.emscripten_bind_CvrWasm_AppendParameterContent_1(E,es(f)),ep(),G&&wasmImports.emscripten_bind_CvrWasm_AppendParameterContent_1(E,es(G)),ep(),t=UTF8ToString(wasmImports.emscripten_bind_CvrWasm_InitParameter_0(E)),handleTaskRes(e,{success:!0,response:t})}catch(_){handleTaskErr(e,_)}},cvr_getMaxBufferedItems:async(_,e,E)=>{let t;try{t=wasmImports.emscripten_bind_CvrWasm_GetMaxBufferedItems_0(E),handleTaskRes(e,{success:!0,count:t})}catch(_){handleTaskErr(e,_)}},cvr_setMaxBufferedItems:async(_,e,E)=>{let t;try{t=wasmImports.emscripten_bind_CvrWasm_SetMaxBufferedItems_1(E,_.count),handleTaskRes(e,{success:!0})}catch(_){handleTaskErr(e,_)}},cvr_getBufferedCharacterItemSet:async(_,e,E)=>{let t;try{t=JSON.parse(UTF8ToString(wasmImports.emscripten_bind_CvrWasm_GetBufferedCharacterItemSet_0(E)));for(let _ of t.items){let e=_.image.bytes;e&&(e=new Uint8Array(new Uint8Array(HEAP8.buffer,e.ptr,e.length)),_.image.bytes=e)}for(let _ of t.characterClusters){let e=_.mean.image.bytes;e&&(e=new Uint8Array(new Uint8Array(HEAP8.buffer,e.ptr,e.length)),_.mean.image.bytes=e)}handleTaskRes(e,{success:!0,itemSet:t})}catch(_){handleTaskErr(e,_)}},cvr_setIrrRegistry:async(_,e,E)=>{try{if(h.has(E)){ep(),wasmImports.emscripten_bind_CvrWasm_SetIrrRegistry_1(E,es(JSON.stringify(_.receiverObj))),_.observedResultUnitTypes&&"-1"!==_.observedResultUnitTypes&&(ep(),wasmImports.emscripten_bind_CvrWasm_SetObservedResultUnitTypes_1(E,es(_.observedResultUnitTypes)));for(let e in _.observedTaskMap)_.observedTaskMap[e]?(ep(),wasmImports.emscripten_bind_CvrWasm_AddObservedTask_1(E,es(e))):(ep(),wasmImports.emscripten_bind_CvrWasm_RemoveObservedTask_1(E,es(e)))}handleTaskRes(e,{success:!0})}catch(_){handleTaskErr(e,_)}},cvr_enableResultCrossVerification:async(_,e,E)=>{let t;try{for(let e in _.verificationEnabled)t=wasmImports.emscripten_bind_CvrWasm_EnableResultCrossVerification_2(E,Number(e),_.verificationEnabled[e]);handleTaskRes(e,{success:!0,result:t})}catch(_){handleTaskErr(e,_)}},cvr_enableResultDeduplication:async(_,e,E)=>{let t;try{for(let e in _.duplicateFilterEnabled)t=wasmImports.emscripten_bind_CvrWasm_EnableResultDeduplication_2(E,Number(e),_.duplicateFilterEnabled[e]);handleTaskRes(e,{success:!0,result:t})}catch(_){handleTaskErr(e,_)}},cvr_setDuplicateForgetTime:async(_,e,E)=>{let t;try{for(let e in _.duplicateForgetTime)t=wasmImports.emscripten_bind_CvrWasm_SetDuplicateForgetTime_2(E,Number(e),_.duplicateForgetTime[e]);handleTaskRes(e,{success:!0,result:t})}catch(_){handleTaskErr(e,_)}},cvr_getDuplicateForgetTime:async(_,e,E)=>{let t;try{t=wasmImports.emscripten_bind_CvrWasm_GetDuplicateForgetTime_1(E,_.type),handleTaskRes(e,{success:!0,time:t})}catch(_){handleTaskErr(e,_)}},cvr_containsTask:async(_,e,E)=>{try{ep();const t=UTF8ToString(wasmImports.emscripten_bind_CvrWasm_ContainsTask_1(E,es(_.templateName)));handleTaskRes(e,{success:!0,tasks:t})}catch(_){handleTaskErr(e,_)}},cvr_dispose:async(_,e,E)=>{try{h.delete(E),wasmImports.emscripten_bind_Destory_CImageData(y),y=null,wasmImports.emscripten_bind_CvrWasm___destroy___0(E),handleTaskRes(e,{success:!0})}catch(_){handleTaskErr(e,_)}},cvr_getWasmFilterState:async(_,e,E)=>{let t;try{t=UTF8ToString(wasmImports.emscripten_bind_CvrWasm_GetFilterState_0(E)),handleTaskRes(e,{success:!0,response:t})}catch(_){handleTaskErr(e,_)}}})}(); diff --git a/dist/dynamsoft-capture-vision-std@1.4.21/dist/dynamsoft-barcode-reader-bundle.js b/dist/dynamsoft-capture-vision-std@1.4.21/dist/dynamsoft-barcode-reader-bundle.js new file mode 100644 index 0000000..60ecac5 --- /dev/null +++ b/dist/dynamsoft-capture-vision-std@1.4.21/dist/dynamsoft-barcode-reader-bundle.js @@ -0,0 +1 @@ +"use strict"; var readAsync, readBinary, Module = void 0 !== Module ? Module : {}, ENVIRONMENT_IS_WEB = !1, ENVIRONMENT_IS_WORKER = !0, ENVIRONMENT_IS_NODE = !1, moduleOverrides = Object.assign({}, Module), thisProgram = "./this.program", quit_ = (e, r) => { throw r }, scriptDirectory = ""; function locateFile(e) { return Module.locateFile ? Module.locateFile(e, scriptDirectory) : scriptDirectory + e } (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && (ENVIRONMENT_IS_WORKER ? scriptDirectory = self.location.href : "undefined" != typeof document && document.currentScript && (scriptDirectory = document.currentScript.src), scriptDirectory = scriptDirectory.startsWith("blob:") ? "" : scriptDirectory.slice(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1), ENVIRONMENT_IS_WORKER && (readBinary = e => { var r = new XMLHttpRequest; return r.open("GET", e, !1), r.responseType = "arraybuffer", r.send(null), new Uint8Array(r.response) }), readAsync = async e => { var r = await fetch(e, { credentials: "same-origin" }); if (r.ok) return r.arrayBuffer(); throw new Error(r.status + " : " + r.url) }); var wasmBinary, wasmMemory, out = Module.print || console.log.bind(console), err = Module.printErr || console.error.bind(console); Object.assign(Module, moduleOverrides), moduleOverrides = null; var EXITSTATUS, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAP64, HEAPU64, HEAPF64, ABORT = !1, runtimeInitialized = !1, dataURIPrefix = "data:application/octet-stream;base64,", isDataURI = e => e.startsWith(dataURIPrefix); function updateMemoryViews() { var e = wasmMemory.buffer; Module.HEAP8 = HEAP8 = new Int8Array(e), HEAP16 = new Int16Array(e), Module.HEAPU8 = HEAPU8 = new Uint8Array(e), HEAPU16 = new Uint16Array(e), HEAP32 = new Int32Array(e), HEAPU32 = new Uint32Array(e), HEAPF32 = new Float32Array(e), HEAPF64 = new Float64Array(e), HEAP64 = new BigInt64Array(e), HEAPU64 = new BigUint64Array(e) } var __ATPRERUN__ = [], __ATINIT__ = [], __ATPOSTRUN__ = []; function preRun() { callRuntimeCallbacks(__ATPRERUN__) } function initRuntime() { runtimeInitialized = !0, Module.noFSInit || FS.initialized || FS.init(), FS.ignorePermissions = !1, TTY.init(), SOCKFS.root = FS.mount(SOCKFS, {}, null), callRuntimeCallbacks(__ATINIT__) } function postRun() { callRuntimeCallbacks(__ATPOSTRUN__) } function addOnInit(e) { __ATINIT__.unshift(e) } var wasmBinaryFile, runDependencies = 0, dependenciesFulfilled = null; function getUniqueRunDependency(e) { return e } function addRunDependency(e) { runDependencies++ } function removeRunDependency(e) { if (0 == --runDependencies && dependenciesFulfilled) { var r = dependenciesFulfilled; dependenciesFulfilled = null, r() } } function abort(e) { throw err(e = "Aborted(" + e + ")"), ABORT = !0, e += ". Build with -sASSERTIONS for more info.", new WebAssembly.RuntimeError(e) } function findWasmBinary() { var e = "dynamsoft-barcode-reader-bundle.wasm"; return isDataURI(e) ? e : locateFile(e) } function getBinarySync(e) { if (e == wasmBinaryFile && wasmBinary) return new Uint8Array(wasmBinary); if (readBinary) return readBinary(e); throw "both async and sync fetching of the wasm failed" } async function getWasmBinary(e) { if (!wasmBinary) try { var r = await readAsync(e); return new Uint8Array(r) } catch { } return getBinarySync(e) } async function instantiateArrayBuffer(e, r) { try { var t = await getWasmBinary(e); return await WebAssembly.instantiate(t, r) } catch (e) { err(`failed to asynchronously prepare wasm: ${e}`), abort(e) } } async function instantiateAsync(e, r, t) { if (!e && "function" == typeof WebAssembly.instantiateStreaming && !isDataURI(r)) try { var n = fetch(r, { credentials: "same-origin" }); return await WebAssembly.instantiateStreaming(n, t) } catch (e) { err(`wasm streaming compile failed: ${e}`), err("falling back to ArrayBuffer instantiation") } return instantiateArrayBuffer(r, t) } function getWasmImports() { return { env: wasmImports, wasi_snapshot_preview1: wasmImports } } async function createWasm() { addRunDependency("wasm-instantiate"); var e = getWasmImports(); wasmBinaryFile ??= findWasmBinary(); var r = function (e) { return r = e.instance, wasmExports = r.exports, wasmMemory = wasmExports.memory, updateMemoryViews(), wasmTable = wasmExports.__indirect_function_table, addOnInit(wasmExports.__wasm_call_ctors), exportWasmSymbols(wasmExports), removeRunDependency("wasm-instantiate"), wasmExports; var r }(await instantiateAsync(wasmBinary, wasmBinaryFile, e)); return r } class ExitStatus { name = "ExitStatus"; constructor(e) { this.message = `Program terminated with exit(${e})`, this.status = e } } var wasmTable, callRuntimeCallbacks = e => { for (; e.length > 0;)e.shift()(Module) }, asmjsMangle = e => ("__main_argc_argv" == e && (e = "main"), e.startsWith("dynCall_") ? e : "_" + e), exportWasmSymbols = e => { for (var r in e) { var t = asmjsMangle(r); this[t] = Module[t] = e[r] } }, UTF8Decoder = "undefined" != typeof TextDecoder ? new TextDecoder : void 0, UTF8ArrayToString = (e, r = 0, t = NaN) => { for (var n = r + t, o = r; e[o] && !(o >= n);)++o; if (o - r > 16 && e.buffer && UTF8Decoder) return UTF8Decoder.decode(e.subarray(r, o)); for (var a = ""; r < o;) { var s = e[r++]; if (128 & s) { var i = 63 & e[r++]; if (192 != (224 & s)) { var l = 63 & e[r++]; if ((s = 224 == (240 & s) ? (15 & s) << 12 | i << 6 | l : (7 & s) << 18 | i << 12 | l << 6 | 63 & e[r++]) < 65536) a += String.fromCharCode(s); else { var c = s - 65536; a += String.fromCharCode(55296 | c >> 10, 56320 | 1023 & c) } } else a += String.fromCharCode((31 & s) << 6 | i) } else a += String.fromCharCode(s) } return a }, UTF8ToString = (e, r) => e ? UTF8ArrayToString(HEAPU8, e, r) : "", ___assert_fail = (e, r, t, n) => abort(`Assertion failed: ${UTF8ToString(e)}, at: ` + [r ? UTF8ToString(r) : "unknown filename", t, n ? UTF8ToString(n) : "unknown function"]), getWasmTableEntry = e => wasmTable.get(e), ___call_sighandler = (e, r) => getWasmTableEntry(e)(r); class ExceptionInfo { constructor(e) { this.excPtr = e, this.ptr = e - 24 } set_type(e) { HEAPU32[this.ptr + 4 >> 2] = e } get_type() { return HEAPU32[this.ptr + 4 >> 2] } set_destructor(e) { HEAPU32[this.ptr + 8 >> 2] = e } get_destructor() { return HEAPU32[this.ptr + 8 >> 2] } set_caught(e) { e = e ? 1 : 0, HEAP8[this.ptr + 12] = e } get_caught() { return 0 != HEAP8[this.ptr + 12] } set_rethrown(e) { e = e ? 1 : 0, HEAP8[this.ptr + 13] = e } get_rethrown() { return 0 != HEAP8[this.ptr + 13] } init(e, r) { this.set_adjusted_ptr(0), this.set_type(e), this.set_destructor(r) } set_adjusted_ptr(e) { HEAPU32[this.ptr + 16 >> 2] = e } get_adjusted_ptr() { return HEAPU32[this.ptr + 16 >> 2] } } var exceptionLast = 0, uncaughtExceptionCount = 0, ___cxa_throw = (e, r, t) => { throw new ExceptionInfo(e).init(r, t), uncaughtExceptionCount++, exceptionLast = e }, PATH = { isAbs: e => "/" === e.charAt(0), splitPath: e => /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1), normalizeArray: (e, r) => { for (var t = 0, n = e.length - 1; n >= 0; n--) { var o = e[n]; "." === o ? e.splice(n, 1) : ".." === o ? (e.splice(n, 1), t++) : t && (e.splice(n, 1), t--) } if (r) for (; t; t--)e.unshift(".."); return e }, normalize: e => { var r = PATH.isAbs(e), t = "/" === e.slice(-1); return (e = PATH.normalizeArray(e.split("/").filter((e => !!e)), !r).join("/")) || r || (e = "."), e && t && (e += "/"), (r ? "/" : "") + e }, dirname: e => { var r = PATH.splitPath(e), t = r[0], n = r[1]; return t || n ? (n && (n = n.slice(0, -1)), t + n) : "." }, basename: e => e && e.match(/([^\/]+|\/)\/*$/)[1], join: (...e) => PATH.normalize(e.join("/")), join2: (e, r) => PATH.normalize(e + "/" + r) }, initRandomFill = () => e => crypto.getRandomValues(e), randomFill = e => { (randomFill = initRandomFill())(e) }, PATH_FS = { resolve: (...e) => { for (var r = "", t = !1, n = e.length - 1; n >= -1 && !t; n--) { var o = n >= 0 ? e[n] : FS.cwd(); if ("string" != typeof o) throw new TypeError("Arguments to path.resolve must be strings"); if (!o) return ""; r = o + "/" + r, t = PATH.isAbs(o) } return (t ? "/" : "") + (r = PATH.normalizeArray(r.split("/").filter((e => !!e)), !t).join("/")) || "." }, relative: (e, r) => { function t(e) { for (var r = 0; r < e.length && "" === e[r]; r++); for (var t = e.length - 1; t >= 0 && "" === e[t]; t--); return r > t ? [] : e.slice(r, t - r + 1) } e = PATH_FS.resolve(e).slice(1), r = PATH_FS.resolve(r).slice(1); for (var n = t(e.split("/")), o = t(r.split("/")), a = Math.min(n.length, o.length), s = a, i = 0; i < a; i++)if (n[i] !== o[i]) { s = i; break } var l = []; for (i = s; i < n.length; i++)l.push(".."); return (l = l.concat(o.slice(s))).join("/") } }, FS_stdin_getChar_buffer = [], lengthBytesUTF8 = e => { for (var r = 0, t = 0; t < e.length; ++t) { var n = e.charCodeAt(t); n <= 127 ? r++ : n <= 2047 ? r += 2 : n >= 55296 && n <= 57343 ? (r += 4, ++t) : r += 3 } return r }, stringToUTF8Array = (e, r, t, n) => { if (!(n > 0)) return 0; for (var o = t, a = t + n - 1, s = 0; s < e.length; ++s) { var i = e.charCodeAt(s); if (i >= 55296 && i <= 57343) i = 65536 + ((1023 & i) << 10) | 1023 & e.charCodeAt(++s); if (i <= 127) { if (t >= a) break; r[t++] = i } else if (i <= 2047) { if (t + 1 >= a) break; r[t++] = 192 | i >> 6, r[t++] = 128 | 63 & i } else if (i <= 65535) { if (t + 2 >= a) break; r[t++] = 224 | i >> 12, r[t++] = 128 | i >> 6 & 63, r[t++] = 128 | 63 & i } else { if (t + 3 >= a) break; r[t++] = 240 | i >> 18, r[t++] = 128 | i >> 12 & 63, r[t++] = 128 | i >> 6 & 63, r[t++] = 128 | 63 & i } } return r[t] = 0, t - o }, intArrayFromString = (e, r, t) => { var n = t > 0 ? t : lengthBytesUTF8(e) + 1, o = new Array(n), a = stringToUTF8Array(e, o, 0, o.length); return r && (o.length = a), o }, FS_stdin_getChar = () => { if (!FS_stdin_getChar_buffer.length) { return null } return FS_stdin_getChar_buffer.shift() }, TTY = { ttys: [], init() { }, shutdown() { }, register(e, r) { TTY.ttys[e] = { input: [], output: [], ops: r }, FS.registerDevice(e, TTY.stream_ops) }, stream_ops: { open(e) { var r = TTY.ttys[e.node.rdev]; if (!r) throw new FS.ErrnoError(43); e.tty = r, e.seekable = !1 }, close(e) { e.tty.ops.fsync(e.tty) }, fsync(e) { e.tty.ops.fsync(e.tty) }, read(e, r, t, n, o) { if (!e.tty || !e.tty.ops.get_char) throw new FS.ErrnoError(60); for (var a = 0, s = 0; s < n; s++) { var i; try { i = e.tty.ops.get_char(e.tty) } catch (e) { throw new FS.ErrnoError(29) } if (void 0 === i && 0 === a) throw new FS.ErrnoError(6); if (null == i) break; a++, r[t + s] = i } return a && (e.node.atime = Date.now()), a }, write(e, r, t, n, o) { if (!e.tty || !e.tty.ops.put_char) throw new FS.ErrnoError(60); try { for (var a = 0; a < n; a++)e.tty.ops.put_char(e.tty, r[t + a]) } catch (e) { throw new FS.ErrnoError(29) } return n && (e.node.mtime = e.node.ctime = Date.now()), a } }, default_tty_ops: { get_char: e => FS_stdin_getChar(), put_char(e, r) { null === r || 10 === r ? (out(UTF8ArrayToString(e.output)), e.output = []) : 0 != r && e.output.push(r) }, fsync(e) { e.output?.length > 0 && (out(UTF8ArrayToString(e.output)), e.output = []) }, ioctl_tcgets: e => ({ c_iflag: 25856, c_oflag: 5, c_cflag: 191, c_lflag: 35387, c_cc: [3, 28, 127, 21, 4, 0, 1, 0, 17, 19, 26, 0, 18, 15, 23, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] }), ioctl_tcsets: (e, r, t) => 0, ioctl_tiocgwinsz: e => [24, 80] }, default_tty1_ops: { put_char(e, r) { null === r || 10 === r ? (err(UTF8ArrayToString(e.output)), e.output = []) : 0 != r && e.output.push(r) }, fsync(e) { e.output?.length > 0 && (err(UTF8ArrayToString(e.output)), e.output = []) } } }, alignMemory = (e, r) => Math.ceil(e / r) * r, mmapAlloc = e => { abort() }, MEMFS = { ops_table: null, mount: e => MEMFS.createNode(null, "/", 16895, 0), createNode(e, r, t, n) { if (FS.isBlkdev(t) || FS.isFIFO(t)) throw new FS.ErrnoError(63); MEMFS.ops_table ||= { dir: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, lookup: MEMFS.node_ops.lookup, mknod: MEMFS.node_ops.mknod, rename: MEMFS.node_ops.rename, unlink: MEMFS.node_ops.unlink, rmdir: MEMFS.node_ops.rmdir, readdir: MEMFS.node_ops.readdir, symlink: MEMFS.node_ops.symlink }, stream: { llseek: MEMFS.stream_ops.llseek } }, file: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, stream: { llseek: MEMFS.stream_ops.llseek, read: MEMFS.stream_ops.read, write: MEMFS.stream_ops.write, allocate: MEMFS.stream_ops.allocate, mmap: MEMFS.stream_ops.mmap, msync: MEMFS.stream_ops.msync } }, link: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr, readlink: MEMFS.node_ops.readlink }, stream: {} }, chrdev: { node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, stream: FS.chrdev_stream_ops } }; var o = FS.createNode(e, r, t, n); return FS.isDir(o.mode) ? (o.node_ops = MEMFS.ops_table.dir.node, o.stream_ops = MEMFS.ops_table.dir.stream, o.contents = {}) : FS.isFile(o.mode) ? (o.node_ops = MEMFS.ops_table.file.node, o.stream_ops = MEMFS.ops_table.file.stream, o.usedBytes = 0, o.contents = null) : FS.isLink(o.mode) ? (o.node_ops = MEMFS.ops_table.link.node, o.stream_ops = MEMFS.ops_table.link.stream) : FS.isChrdev(o.mode) && (o.node_ops = MEMFS.ops_table.chrdev.node, o.stream_ops = MEMFS.ops_table.chrdev.stream), o.atime = o.mtime = o.ctime = Date.now(), e && (e.contents[r] = o, e.atime = e.mtime = e.ctime = o.atime), o }, getFileDataAsTypedArray: e => e.contents ? e.contents.subarray ? e.contents.subarray(0, e.usedBytes) : new Uint8Array(e.contents) : new Uint8Array(0), expandFileStorage(e, r) { var t = e.contents ? e.contents.length : 0; if (!(t >= r)) { r = Math.max(r, t * (t < 1048576 ? 2 : 1.125) >>> 0), 0 != t && (r = Math.max(r, 256)); var n = e.contents; e.contents = new Uint8Array(r), e.usedBytes > 0 && e.contents.set(n.subarray(0, e.usedBytes), 0) } }, resizeFileStorage(e, r) { if (e.usedBytes != r) if (0 == r) e.contents = null, e.usedBytes = 0; else { var t = e.contents; e.contents = new Uint8Array(r), t && e.contents.set(t.subarray(0, Math.min(r, e.usedBytes))), e.usedBytes = r } }, node_ops: { getattr(e) { var r = {}; return r.dev = FS.isChrdev(e.mode) ? e.id : 1, r.ino = e.id, r.mode = e.mode, r.nlink = 1, r.uid = 0, r.gid = 0, r.rdev = e.rdev, FS.isDir(e.mode) ? r.size = 4096 : FS.isFile(e.mode) ? r.size = e.usedBytes : FS.isLink(e.mode) ? r.size = e.link.length : r.size = 0, r.atime = new Date(e.atime), r.mtime = new Date(e.mtime), r.ctime = new Date(e.ctime), r.blksize = 4096, r.blocks = Math.ceil(r.size / r.blksize), r }, setattr(e, r) { for (const t of ["mode", "atime", "mtime", "ctime"]) null != r[t] && (e[t] = r[t]); void 0 !== r.size && MEMFS.resizeFileStorage(e, r.size) }, lookup(e, r) { throw MEMFS.doesNotExistError }, mknod: (e, r, t, n) => MEMFS.createNode(e, r, t, n), rename(e, r, t) { var n; try { n = FS.lookupNode(r, t) } catch (e) { } if (n) { if (FS.isDir(e.mode)) for (var o in n.contents) throw new FS.ErrnoError(55); FS.hashRemoveNode(n) } delete e.parent.contents[e.name], r.contents[t] = e, e.name = t, r.ctime = r.mtime = e.parent.ctime = e.parent.mtime = Date.now() }, unlink(e, r) { delete e.contents[r], e.ctime = e.mtime = Date.now() }, rmdir(e, r) { var t = FS.lookupNode(e, r); for (var n in t.contents) throw new FS.ErrnoError(55); delete e.contents[r], e.ctime = e.mtime = Date.now() }, readdir: e => [".", "..", ...Object.keys(e.contents)], symlink(e, r, t) { var n = MEMFS.createNode(e, r, 41471, 0); return n.link = t, n }, readlink(e) { if (!FS.isLink(e.mode)) throw new FS.ErrnoError(28); return e.link } }, stream_ops: { read(e, r, t, n, o) { var a = e.node.contents; if (o >= e.node.usedBytes) return 0; var s = Math.min(e.node.usedBytes - o, n); if (s > 8 && a.subarray) r.set(a.subarray(o, o + s), t); else for (var i = 0; i < s; i++)r[t + i] = a[o + i]; return s }, write(e, r, t, n, o, a) { if (r.buffer === HEAP8.buffer && (a = !1), !n) return 0; var s = e.node; if (s.mtime = s.ctime = Date.now(), r.subarray && (!s.contents || s.contents.subarray)) { if (a) return s.contents = r.subarray(t, t + n), s.usedBytes = n, n; if (0 === s.usedBytes && 0 === o) return s.contents = r.slice(t, t + n), s.usedBytes = n, n; if (o + n <= s.usedBytes) return s.contents.set(r.subarray(t, t + n), o), n } if (MEMFS.expandFileStorage(s, o + n), s.contents.subarray && r.subarray) s.contents.set(r.subarray(t, t + n), o); else for (var i = 0; i < n; i++)s.contents[o + i] = r[t + i]; return s.usedBytes = Math.max(s.usedBytes, o + n), n }, llseek(e, r, t) { var n = r; if (1 === t ? n += e.position : 2 === t && FS.isFile(e.node.mode) && (n += e.node.usedBytes), n < 0) throw new FS.ErrnoError(28); return n }, allocate(e, r, t) { MEMFS.expandFileStorage(e.node, r + t), e.node.usedBytes = Math.max(e.node.usedBytes, r + t) }, mmap(e, r, t, n, o) { if (!FS.isFile(e.node.mode)) throw new FS.ErrnoError(43); var a, s, i = e.node.contents; if (2 & o || !i || i.buffer !== HEAP8.buffer) { if (s = !0, !(a = mmapAlloc(r))) throw new FS.ErrnoError(48); i && ((t > 0 || t + r < i.length) && (i = i.subarray ? i.subarray(t, t + r) : Array.prototype.slice.call(i, t, t + r)), HEAP8.set(i, a)) } else s = !1, a = i.byteOffset; return { ptr: a, allocated: s } }, msync: (e, r, t, n, o) => (MEMFS.stream_ops.write(e, r, 0, n, t, !1), 0) } }, asyncLoad = async e => { var r = await readAsync(e); return new Uint8Array(r) }, FS_createDataFile = (e, r, t, n, o, a) => { FS.createDataFile(e, r, t, n, o, a) }, preloadPlugins = [], FS_handledByPreloadPlugin = (e, r, t, n) => { "undefined" != typeof Browser && Browser.init(); var o = !1; return preloadPlugins.forEach((a => { o || a.canHandle(r) && (a.handle(e, r, t, n), o = !0) })), o }, FS_createPreloadedFile = (e, r, t, n, o, a, s, i, l, c) => { var d = r ? PATH_FS.resolve(PATH.join2(e, r)) : e, u = getUniqueRunDependency(`cp ${d}`); function m(t) { function m(t) { c?.(), i || FS_createDataFile(e, r, t, n, o, l), a?.(), removeRunDependency(u) } FS_handledByPreloadPlugin(t, d, m, (() => { s?.(), removeRunDependency(u) })) || m(t) } addRunDependency(u), "string" == typeof t ? asyncLoad(t).then(m, s) : m(t) }, FS_modeStringToFlags = e => { var r = { r: 0, "r+": 2, w: 577, "w+": 578, a: 1089, "a+": 1090 }[e]; if (void 0 === r) throw new Error(`Unknown file open mode: ${e}`); return r }, FS_getMode = (e, r) => { var t = 0; return e && (t |= 365), r && (t |= 146), t }, FS = { root: null, mounts: [], devices: {}, streams: [], nextInode: 1, nameTable: null, currentPath: "/", initialized: !1, ignorePermissions: !0, ErrnoError: class { name = "ErrnoError"; constructor(e) { this.errno = e } }, filesystems: null, syncFSRequests: 0, FSStream: class { shared = {}; get object() { return this.node } set object(e) { this.node = e } get isRead() { return 1 != (2097155 & this.flags) } get isWrite() { return !!(2097155 & this.flags) } get isAppend() { return 1024 & this.flags } get flags() { return this.shared.flags } set flags(e) { this.shared.flags = e } get position() { return this.shared.position } set position(e) { this.shared.position = e } }, FSNode: class { node_ops = {}; stream_ops = {}; readMode = 365; writeMode = 146; mounted = null; constructor(e, r, t, n) { e || (e = this), this.parent = e, this.mount = e.mount, this.id = FS.nextInode++, this.name = r, this.mode = t, this.rdev = n, this.atime = this.mtime = this.ctime = Date.now() } get read() { return (this.mode & this.readMode) === this.readMode } set read(e) { e ? this.mode |= this.readMode : this.mode &= ~this.readMode } get write() { return (this.mode & this.writeMode) === this.writeMode } set write(e) { e ? this.mode |= this.writeMode : this.mode &= ~this.writeMode } get isFolder() { return FS.isDir(this.mode) } get isDevice() { return FS.isChrdev(this.mode) } }, lookupPath(e, r = {}) { if (!e) throw new FS.ErrnoError(44); r.follow_mount ??= !0, PATH.isAbs(e) || (e = FS.cwd() + "/" + e); e: for (var t = 0; t < 40; t++) { for (var n = e.split("/").filter((e => !!e)), o = FS.root, a = "/", s = 0; s < n.length; s++) { var i = s === n.length - 1; if (i && r.parent) break; if ("." !== n[s]) if (".." !== n[s]) { a = PATH.join2(a, n[s]); try { o = FS.lookupNode(o, n[s]) } catch (e) { if (44 === e?.errno && i && r.noent_okay) return { path: a }; throw e } if (!FS.isMountpoint(o) || i && !r.follow_mount || (o = o.mounted.root), FS.isLink(o.mode) && (!i || r.follow)) { if (!o.node_ops.readlink) throw new FS.ErrnoError(52); var l = o.node_ops.readlink(o); PATH.isAbs(l) || (l = PATH.dirname(a) + "/" + l), e = l + "/" + n.slice(s + 1).join("/"); continue e } } else a = PATH.dirname(a), o = o.parent } return { path: a, node: o } } throw new FS.ErrnoError(32) }, getPath(e) { for (var r; ;) { if (FS.isRoot(e)) { var t = e.mount.mountpoint; return r ? "/" !== t[t.length - 1] ? `${t}/${r}` : t + r : t } r = r ? `${e.name}/${r}` : e.name, e = e.parent } }, hashName(e, r) { for (var t = 0, n = 0; n < r.length; n++)t = (t << 5) - t + r.charCodeAt(n) | 0; return (e + t >>> 0) % FS.nameTable.length }, hashAddNode(e) { var r = FS.hashName(e.parent.id, e.name); e.name_next = FS.nameTable[r], FS.nameTable[r] = e }, hashRemoveNode(e) { var r = FS.hashName(e.parent.id, e.name); if (FS.nameTable[r] === e) FS.nameTable[r] = e.name_next; else for (var t = FS.nameTable[r]; t;) { if (t.name_next === e) { t.name_next = e.name_next; break } t = t.name_next } }, lookupNode(e, r) { var t = FS.mayLookup(e); if (t) throw new FS.ErrnoError(t); for (var n = FS.hashName(e.id, r), o = FS.nameTable[n]; o; o = o.name_next) { var a = o.name; if (o.parent.id === e.id && a === r) return o } return FS.lookup(e, r) }, createNode(e, r, t, n) { var o = new FS.FSNode(e, r, t, n); return FS.hashAddNode(o), o }, destroyNode(e) { FS.hashRemoveNode(e) }, isRoot: e => e === e.parent, isMountpoint: e => !!e.mounted, isFile: e => 32768 == (61440 & e), isDir: e => 16384 == (61440 & e), isLink: e => 40960 == (61440 & e), isChrdev: e => 8192 == (61440 & e), isBlkdev: e => 24576 == (61440 & e), isFIFO: e => 4096 == (61440 & e), isSocket: e => !(49152 & ~e), flagsToPermissionString(e) { var r = ["r", "w", "rw"][3 & e]; return 512 & e && (r += "w"), r }, nodePermissions: (e, r) => FS.ignorePermissions || (!r.includes("r") || 292 & e.mode) && (!r.includes("w") || 146 & e.mode) && (!r.includes("x") || 73 & e.mode) ? 0 : 2, mayLookup(e) { if (!FS.isDir(e.mode)) return 54; var r = FS.nodePermissions(e, "x"); return r || (e.node_ops.lookup ? 0 : 2) }, mayCreate(e, r) { if (!FS.isDir(e.mode)) return 54; try { FS.lookupNode(e, r); return 20 } catch (e) { } return FS.nodePermissions(e, "wx") }, mayDelete(e, r, t) { var n; try { n = FS.lookupNode(e, r) } catch (e) { return e.errno } var o = FS.nodePermissions(e, "wx"); if (o) return o; if (t) { if (!FS.isDir(n.mode)) return 54; if (FS.isRoot(n) || FS.getPath(n) === FS.cwd()) return 10 } else if (FS.isDir(n.mode)) return 31; return 0 }, mayOpen: (e, r) => e ? FS.isLink(e.mode) ? 32 : FS.isDir(e.mode) && ("r" !== FS.flagsToPermissionString(r) || 576 & r) ? 31 : FS.nodePermissions(e, FS.flagsToPermissionString(r)) : 44, checkOpExists(e, r) { if (!e) throw new FS.ErrnoError(r); return e }, MAX_OPEN_FDS: 4096, nextfd() { for (var e = 0; e <= FS.MAX_OPEN_FDS; e++)if (!FS.streams[e]) return e; throw new FS.ErrnoError(33) }, getStreamChecked(e) { var r = FS.getStream(e); if (!r) throw new FS.ErrnoError(8); return r }, getStream: e => FS.streams[e], createStream: (e, r = -1) => (e = Object.assign(new FS.FSStream, e), -1 == r && (r = FS.nextfd()), e.fd = r, FS.streams[r] = e, e), closeStream(e) { FS.streams[e] = null }, dupStream(e, r = -1) { var t = FS.createStream(e, r); return t.stream_ops?.dup?.(t), t }, doSetAttr(e, r, t) { var n = e?.stream_ops.setattr, o = n ? e : r; n ??= r.node_ops.setattr, FS.checkOpExists(n, 63), n(o, t) }, chrdev_stream_ops: { open(e) { var r = FS.getDevice(e.node.rdev); e.stream_ops = r.stream_ops, e.stream_ops.open?.(e) }, llseek() { throw new FS.ErrnoError(70) } }, major: e => e >> 8, minor: e => 255 & e, makedev: (e, r) => e << 8 | r, registerDevice(e, r) { FS.devices[e] = { stream_ops: r } }, getDevice: e => FS.devices[e], getMounts(e) { for (var r = [], t = [e]; t.length;) { var n = t.pop(); r.push(n), t.push(...n.mounts) } return r }, syncfs(e, r) { "function" == typeof e && (r = e, e = !1), FS.syncFSRequests++, FS.syncFSRequests > 1 && err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`); var t = FS.getMounts(FS.root.mount), n = 0; function o(e) { return FS.syncFSRequests--, r(e) } function a(e) { if (e) return a.errored ? void 0 : (a.errored = !0, o(e)); ++n >= t.length && o(null) } t.forEach((r => { if (!r.type.syncfs) return a(null); r.type.syncfs(r, e, a) })) }, mount(e, r, t) { var n, o = "/" === t, a = !t; if (o && FS.root) throw new FS.ErrnoError(10); if (!o && !a) { var s = FS.lookupPath(t, { follow_mount: !1 }); if (t = s.path, n = s.node, FS.isMountpoint(n)) throw new FS.ErrnoError(10); if (!FS.isDir(n.mode)) throw new FS.ErrnoError(54) } var i = { type: e, opts: r, mountpoint: t, mounts: [] }, l = e.mount(i); return l.mount = i, i.root = l, o ? FS.root = l : n && (n.mounted = i, n.mount && n.mount.mounts.push(i)), l }, unmount(e) { var r = FS.lookupPath(e, { follow_mount: !1 }); if (!FS.isMountpoint(r.node)) throw new FS.ErrnoError(28); var t = r.node, n = t.mounted, o = FS.getMounts(n); Object.keys(FS.nameTable).forEach((e => { for (var r = FS.nameTable[e]; r;) { var t = r.name_next; o.includes(r.mount) && FS.destroyNode(r), r = t } })), t.mounted = null; var a = t.mount.mounts.indexOf(n); t.mount.mounts.splice(a, 1) }, lookup: (e, r) => e.node_ops.lookup(e, r), mknod(e, r, t) { var n = FS.lookupPath(e, { parent: !0 }).node, o = PATH.basename(e); if (!o) throw new FS.ErrnoError(28); if ("." === o || ".." === o) throw new FS.ErrnoError(20); var a = FS.mayCreate(n, o); if (a) throw new FS.ErrnoError(a); if (!n.node_ops.mknod) throw new FS.ErrnoError(63); return n.node_ops.mknod(n, o, r, t) }, statfs: e => FS.statfsNode(FS.lookupPath(e, { follow: !0 }).node), statfsStream: e => FS.statfsNode(e.node), statfsNode(e) { var r = { bsize: 4096, frsize: 4096, blocks: 1e6, bfree: 5e5, bavail: 5e5, files: FS.nextInode, ffree: FS.nextInode - 1, fsid: 42, flags: 2, namelen: 255 }; return e.node_ops.statfs && Object.assign(r, e.node_ops.statfs(e.mount.opts.root)), r }, create: (e, r = 438) => (r &= 4095, r |= 32768, FS.mknod(e, r, 0)), mkdir: (e, r = 511) => (r &= 1023, r |= 16384, FS.mknod(e, r, 0)), mkdirTree(e, r) { for (var t = e.split("/"), n = "", o = 0; o < t.length; ++o)if (t[o]) { n += "/" + t[o]; try { FS.mkdir(n, r) } catch (e) { if (20 != e.errno) throw e } } }, mkdev: (e, r, t) => (void 0 === t && (t = r, r = 438), r |= 8192, FS.mknod(e, r, t)), symlink(e, r) { if (!PATH_FS.resolve(e)) throw new FS.ErrnoError(44); var t = FS.lookupPath(r, { parent: !0 }).node; if (!t) throw new FS.ErrnoError(44); var n = PATH.basename(r), o = FS.mayCreate(t, n); if (o) throw new FS.ErrnoError(o); if (!t.node_ops.symlink) throw new FS.ErrnoError(63); return t.node_ops.symlink(t, n, e) }, rename(e, r) { var t, n, o = PATH.dirname(e), a = PATH.dirname(r), s = PATH.basename(e), i = PATH.basename(r); if (t = FS.lookupPath(e, { parent: !0 }).node, n = FS.lookupPath(r, { parent: !0 }).node, !t || !n) throw new FS.ErrnoError(44); if (t.mount !== n.mount) throw new FS.ErrnoError(75); var l, c = FS.lookupNode(t, s), d = PATH_FS.relative(e, a); if ("." !== d.charAt(0)) throw new FS.ErrnoError(28); if ("." !== (d = PATH_FS.relative(r, o)).charAt(0)) throw new FS.ErrnoError(55); try { l = FS.lookupNode(n, i) } catch (e) { } if (c !== l) { var u = FS.isDir(c.mode), m = FS.mayDelete(t, s, u); if (m) throw new FS.ErrnoError(m); if (m = l ? FS.mayDelete(n, i, u) : FS.mayCreate(n, i)) throw new FS.ErrnoError(m); if (!t.node_ops.rename) throw new FS.ErrnoError(63); if (FS.isMountpoint(c) || l && FS.isMountpoint(l)) throw new FS.ErrnoError(10); if (n !== t && (m = FS.nodePermissions(t, "w"))) throw new FS.ErrnoError(m); FS.hashRemoveNode(c); try { t.node_ops.rename(c, n, i), c.parent = n } catch (e) { throw e } finally { FS.hashAddNode(c) } } }, rmdir(e) { var r = FS.lookupPath(e, { parent: !0 }).node, t = PATH.basename(e), n = FS.lookupNode(r, t), o = FS.mayDelete(r, t, !0); if (o) throw new FS.ErrnoError(o); if (!r.node_ops.rmdir) throw new FS.ErrnoError(63); if (FS.isMountpoint(n)) throw new FS.ErrnoError(10); r.node_ops.rmdir(r, t), FS.destroyNode(n) }, readdir(e) { var r = FS.lookupPath(e, { follow: !0 }).node; return FS.checkOpExists(r.node_ops.readdir, 54)(r) }, unlink(e) { var r = FS.lookupPath(e, { parent: !0 }).node; if (!r) throw new FS.ErrnoError(44); var t = PATH.basename(e), n = FS.lookupNode(r, t), o = FS.mayDelete(r, t, !1); if (o) throw new FS.ErrnoError(o); if (!r.node_ops.unlink) throw new FS.ErrnoError(63); if (FS.isMountpoint(n)) throw new FS.ErrnoError(10); r.node_ops.unlink(r, t), FS.destroyNode(n) }, readlink(e) { var r = FS.lookupPath(e).node; if (!r) throw new FS.ErrnoError(44); if (!r.node_ops.readlink) throw new FS.ErrnoError(28); return r.node_ops.readlink(r) }, stat(e, r) { var t = FS.lookupPath(e, { follow: !r }).node; return FS.checkOpExists(t.node_ops.getattr, 63)(t) }, fstat(e) { var r = FS.getStreamChecked(e), t = r.node, n = r.stream_ops.getattr, o = n ? r : t; return n ??= t.node_ops.getattr, FS.checkOpExists(n, 63), n(o) }, lstat: e => FS.stat(e, !0), doChmod(e, r, t, n) { FS.doSetAttr(e, r, { mode: 4095 & t | -4096 & r.mode, ctime: Date.now(), dontFollow: n }) }, chmod(e, r, t) { var n; "string" == typeof e ? n = FS.lookupPath(e, { follow: !t }).node : n = e; FS.doChmod(null, n, r, t) }, lchmod(e, r) { FS.chmod(e, r, !0) }, fchmod(e, r) { var t = FS.getStreamChecked(e); FS.doChmod(t, t.node, r, !1) }, doChown(e, r, t) { FS.doSetAttr(e, r, { timestamp: Date.now(), dontFollow: t }) }, chown(e, r, t, n) { var o; "string" == typeof e ? o = FS.lookupPath(e, { follow: !n }).node : o = e; FS.doChown(null, o, n) }, lchown(e, r, t) { FS.chown(e, r, t, !0) }, fchown(e, r, t) { var n = FS.getStreamChecked(e); FS.doChown(n, n.node, !1) }, doTruncate(e, r, t) { if (FS.isDir(r.mode)) throw new FS.ErrnoError(31); if (!FS.isFile(r.mode)) throw new FS.ErrnoError(28); var n = FS.nodePermissions(r, "w"); if (n) throw new FS.ErrnoError(n); FS.doSetAttr(e, r, { size: t, timestamp: Date.now() }) }, truncate(e, r) { if (r < 0) throw new FS.ErrnoError(28); var t; "string" == typeof e ? t = FS.lookupPath(e, { follow: !0 }).node : t = e; FS.doTruncate(null, t, r) }, ftruncate(e, r) { var t = FS.getStreamChecked(e); if (r < 0 || !(2097155 & t.flags)) throw new FS.ErrnoError(28); FS.doTruncate(t, t.node, r) }, utime(e, r, t) { var n = FS.lookupPath(e, { follow: !0 }).node; FS.checkOpExists(n.node_ops.setattr, 63)(n, { atime: r, mtime: t }) }, open(e, r, t = 438) { if ("" === e) throw new FS.ErrnoError(44); var n, o; if (t = 64 & (r = "string" == typeof r ? FS_modeStringToFlags(r) : r) ? 4095 & t | 32768 : 0, "object" == typeof e) n = e; else { o = e.endsWith("/"); var a = FS.lookupPath(e, { follow: !(131072 & r), noent_okay: !0 }); n = a.node, e = a.path } var s = !1; if (64 & r) if (n) { if (128 & r) throw new FS.ErrnoError(20) } else { if (o) throw new FS.ErrnoError(31); n = FS.mknod(e, 511 | t, 0), s = !0 } if (!n) throw new FS.ErrnoError(44); if (FS.isChrdev(n.mode) && (r &= -513), 65536 & r && !FS.isDir(n.mode)) throw new FS.ErrnoError(54); if (!s) { var i = FS.mayOpen(n, r); if (i) throw new FS.ErrnoError(i) } 512 & r && !s && FS.truncate(n, 0), r &= -131713; var l = FS.createStream({ node: n, path: FS.getPath(n), flags: r, seekable: !0, position: 0, stream_ops: n.stream_ops, ungotten: [], error: !1 }); return l.stream_ops.open && l.stream_ops.open(l), s && FS.chmod(n, 511 & t), l }, close(e) { if (FS.isClosed(e)) throw new FS.ErrnoError(8); e.getdents && (e.getdents = null); try { e.stream_ops.close && e.stream_ops.close(e) } catch (e) { throw e } finally { FS.closeStream(e.fd) } e.fd = null }, isClosed: e => null === e.fd, llseek(e, r, t) { if (FS.isClosed(e)) throw new FS.ErrnoError(8); if (!e.seekable || !e.stream_ops.llseek) throw new FS.ErrnoError(70); if (0 != t && 1 != t && 2 != t) throw new FS.ErrnoError(28); return e.position = e.stream_ops.llseek(e, r, t), e.ungotten = [], e.position }, read(e, r, t, n, o) { if (n < 0 || o < 0) throw new FS.ErrnoError(28); if (FS.isClosed(e)) throw new FS.ErrnoError(8); if (1 == (2097155 & e.flags)) throw new FS.ErrnoError(8); if (FS.isDir(e.node.mode)) throw new FS.ErrnoError(31); if (!e.stream_ops.read) throw new FS.ErrnoError(28); var a = void 0 !== o; if (a) { if (!e.seekable) throw new FS.ErrnoError(70) } else o = e.position; var s = e.stream_ops.read(e, r, t, n, o); return a || (e.position += s), s }, write(e, r, t, n, o, a) { if (n < 0 || o < 0) throw new FS.ErrnoError(28); if (FS.isClosed(e)) throw new FS.ErrnoError(8); if (!(2097155 & e.flags)) throw new FS.ErrnoError(8); if (FS.isDir(e.node.mode)) throw new FS.ErrnoError(31); if (!e.stream_ops.write) throw new FS.ErrnoError(28); e.seekable && 1024 & e.flags && FS.llseek(e, 0, 2); var s = void 0 !== o; if (s) { if (!e.seekable) throw new FS.ErrnoError(70) } else o = e.position; var i = e.stream_ops.write(e, r, t, n, o, a); return s || (e.position += i), i }, allocate(e, r, t) { if (FS.isClosed(e)) throw new FS.ErrnoError(8); if (r < 0 || t <= 0) throw new FS.ErrnoError(28); if (!(2097155 & e.flags)) throw new FS.ErrnoError(8); if (!FS.isFile(e.node.mode) && !FS.isDir(e.node.mode)) throw new FS.ErrnoError(43); if (!e.stream_ops.allocate) throw new FS.ErrnoError(138); e.stream_ops.allocate(e, r, t) }, mmap(e, r, t, n, o) { if (2 & n && !(2 & o) && 2 != (2097155 & e.flags)) throw new FS.ErrnoError(2); if (1 == (2097155 & e.flags)) throw new FS.ErrnoError(2); if (!e.stream_ops.mmap) throw new FS.ErrnoError(43); if (!r) throw new FS.ErrnoError(28); return e.stream_ops.mmap(e, r, t, n, o) }, msync: (e, r, t, n, o) => e.stream_ops.msync ? e.stream_ops.msync(e, r, t, n, o) : 0, ioctl(e, r, t) { if (!e.stream_ops.ioctl) throw new FS.ErrnoError(59); return e.stream_ops.ioctl(e, r, t) }, readFile(e, r = {}) { if (r.flags = r.flags || 0, r.encoding = r.encoding || "binary", "utf8" !== r.encoding && "binary" !== r.encoding) throw new Error(`Invalid encoding type "${r.encoding}"`); var t, n = FS.open(e, r.flags), o = FS.stat(e).size, a = new Uint8Array(o); return FS.read(n, a, 0, o, 0), "utf8" === r.encoding ? t = UTF8ArrayToString(a) : "binary" === r.encoding && (t = a), FS.close(n), t }, writeFile(e, r, t = {}) { t.flags = t.flags || 577; var n = FS.open(e, t.flags, t.mode); if ("string" == typeof r) { var o = new Uint8Array(lengthBytesUTF8(r) + 1), a = stringToUTF8Array(r, o, 0, o.length); FS.write(n, o, 0, a, void 0, t.canOwn) } else { if (!ArrayBuffer.isView(r)) throw new Error("Unsupported data type"); FS.write(n, r, 0, r.byteLength, void 0, t.canOwn) } FS.close(n) }, cwd: () => FS.currentPath, chdir(e) { var r = FS.lookupPath(e, { follow: !0 }); if (null === r.node) throw new FS.ErrnoError(44); if (!FS.isDir(r.node.mode)) throw new FS.ErrnoError(54); var t = FS.nodePermissions(r.node, "x"); if (t) throw new FS.ErrnoError(t); FS.currentPath = r.path }, createDefaultDirectories() { FS.mkdir("/tmp"), FS.mkdir("/home"), FS.mkdir("/home/web_user") }, createDefaultDevices() { FS.mkdir("/dev"), FS.registerDevice(FS.makedev(1, 3), { read: () => 0, write: (e, r, t, n, o) => n, llseek: () => 0 }), FS.mkdev("/dev/null", FS.makedev(1, 3)), TTY.register(FS.makedev(5, 0), TTY.default_tty_ops), TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops), FS.mkdev("/dev/tty", FS.makedev(5, 0)), FS.mkdev("/dev/tty1", FS.makedev(6, 0)); var e = new Uint8Array(1024), r = 0, t = () => (0 === r && (randomFill(e), r = e.byteLength), e[--r]); FS.createDevice("/dev", "random", t), FS.createDevice("/dev", "urandom", t), FS.mkdir("/dev/shm"), FS.mkdir("/dev/shm/tmp") }, createSpecialDirectories() { FS.mkdir("/proc"); var e = FS.mkdir("/proc/self"); FS.mkdir("/proc/self/fd"), FS.mount({ mount() { var r = FS.createNode(e, "fd", 16895, 73); return r.stream_ops = { llseek: MEMFS.stream_ops.llseek }, r.node_ops = { lookup(e, r) { var t = +r, n = FS.getStreamChecked(t), o = { parent: null, mount: { mountpoint: "fake" }, node_ops: { readlink: () => n.path }, id: t + 1 }; return o.parent = o, o }, readdir: () => Array.from(FS.streams.entries()).filter((([e, r]) => r)).map((([e, r]) => e.toString())) }, r } }, {}, "/proc/self/fd") }, createStandardStreams(e, r, t) { e ? FS.createDevice("/dev", "stdin", e) : FS.symlink("/dev/tty", "/dev/stdin"), r ? FS.createDevice("/dev", "stdout", null, r) : FS.symlink("/dev/tty", "/dev/stdout"), t ? FS.createDevice("/dev", "stderr", null, t) : FS.symlink("/dev/tty1", "/dev/stderr"); FS.open("/dev/stdin", 0), FS.open("/dev/stdout", 1), FS.open("/dev/stderr", 1) }, staticInit() { FS.nameTable = new Array(4096), FS.mount(MEMFS, {}, "/"), FS.createDefaultDirectories(), FS.createDefaultDevices(), FS.createSpecialDirectories(), FS.filesystems = { MEMFS: MEMFS } }, init(e, r, t) { FS.initialized = !0, FS.createStandardStreams(e, r, t) }, quit() { FS.initialized = !1; for (var e = 0; e < FS.streams.length; e++) { var r = FS.streams[e]; r && FS.close(r) } }, findObject(e, r) { var t = FS.analyzePath(e, r); return t.exists ? t.object : null }, analyzePath(e, r) { try { e = (n = FS.lookupPath(e, { follow: !r })).path } catch (e) { } var t = { isRoot: !1, exists: !1, error: 0, name: null, path: null, object: null, parentExists: !1, parentPath: null, parentObject: null }; try { var n = FS.lookupPath(e, { parent: !0 }); t.parentExists = !0, t.parentPath = n.path, t.parentObject = n.node, t.name = PATH.basename(e), n = FS.lookupPath(e, { follow: !r }), t.exists = !0, t.path = n.path, t.object = n.node, t.name = n.node.name, t.isRoot = "/" === n.path } catch (e) { t.error = e.errno } return t }, createPath(e, r, t, n) { e = "string" == typeof e ? e : FS.getPath(e); for (var o = r.split("/").reverse(); o.length;) { var a = o.pop(); if (a) { var s = PATH.join2(e, a); try { FS.mkdir(s) } catch (e) { } e = s } } return s }, createFile(e, r, t, n, o) { var a = PATH.join2("string" == typeof e ? e : FS.getPath(e), r), s = FS_getMode(n, o); return FS.create(a, s) }, createDataFile(e, r, t, n, o, a) { var s = r; e && (e = "string" == typeof e ? e : FS.getPath(e), s = r ? PATH.join2(e, r) : e); var i = FS_getMode(n, o), l = FS.create(s, i); if (t) { if ("string" == typeof t) { for (var c = new Array(t.length), d = 0, u = t.length; d < u; ++d)c[d] = t.charCodeAt(d); t = c } FS.chmod(l, 146 | i); var m = FS.open(l, 577); FS.write(m, t, 0, t.length, 0, a), FS.close(m), FS.chmod(l, i) } }, createDevice(e, r, t, n) { var o = PATH.join2("string" == typeof e ? e : FS.getPath(e), r), a = FS_getMode(!!t, !!n); FS.createDevice.major ??= 64; var s = FS.makedev(FS.createDevice.major++, 0); return FS.registerDevice(s, { open(e) { e.seekable = !1 }, close(e) { n?.buffer?.length && n(10) }, read(e, r, n, o, a) { for (var s = 0, i = 0; i < o; i++) { var l; try { l = t() } catch (e) { throw new FS.ErrnoError(29) } if (void 0 === l && 0 === s) throw new FS.ErrnoError(6); if (null == l) break; s++, r[n + i] = l } return s && (e.node.atime = Date.now()), s }, write(e, r, t, o, a) { for (var s = 0; s < o; s++)try { n(r[t + s]) } catch (e) { throw new FS.ErrnoError(29) } return o && (e.node.mtime = e.node.ctime = Date.now()), s } }), FS.mkdev(o, a, s) }, forceLoadFile(e) { if (e.isDevice || e.isFolder || e.link || e.contents) return !0; if ("undefined" != typeof XMLHttpRequest) throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); try { e.contents = readBinary(e.url), e.usedBytes = e.contents.length } catch (e) { throw new FS.ErrnoError(29) } }, createLazyFile(e, r, t, n, o) { class a { lengthKnown = !1; chunks = []; get(e) { if (!(e > this.length - 1 || e < 0)) { var r = e % this.chunkSize, t = e / this.chunkSize | 0; return this.getter(t)[r] } } setDataGetter(e) { this.getter = e } cacheLength() { var e = new XMLHttpRequest; if (e.open("HEAD", t, !1), e.send(null), !(e.status >= 200 && e.status < 300 || 304 === e.status)) throw new Error("Couldn't load " + t + ". Status: " + e.status); var r, n = Number(e.getResponseHeader("Content-length")), o = (r = e.getResponseHeader("Accept-Ranges")) && "bytes" === r, a = (r = e.getResponseHeader("Content-Encoding")) && "gzip" === r, s = 1048576; o || (s = n); var i = this; i.setDataGetter((e => { var r = e * s, o = (e + 1) * s - 1; if (o = Math.min(o, n - 1), void 0 === i.chunks[e] && (i.chunks[e] = ((e, r) => { if (e > r) throw new Error("invalid range (" + e + ", " + r + ") or no bytes requested!"); if (r > n - 1) throw new Error("only " + n + " bytes available! programmer error!"); var o = new XMLHttpRequest; if (o.open("GET", t, !1), n !== s && o.setRequestHeader("Range", "bytes=" + e + "-" + r), o.responseType = "arraybuffer", o.overrideMimeType && o.overrideMimeType("text/plain; charset=x-user-defined"), o.send(null), !(o.status >= 200 && o.status < 300 || 304 === o.status)) throw new Error("Couldn't load " + t + ". Status: " + o.status); return void 0 !== o.response ? new Uint8Array(o.response || []) : intArrayFromString(o.responseText || "", !0) })(r, o)), void 0 === i.chunks[e]) throw new Error("doXHR failed!"); return i.chunks[e] })), !a && n || (s = n = 1, n = this.getter(0).length, s = n, out("LazyFiles on gzip forces download of the whole file when length is accessed")), this._length = n, this._chunkSize = s, this.lengthKnown = !0 } get length() { return this.lengthKnown || this.cacheLength(), this._length } get chunkSize() { return this.lengthKnown || this.cacheLength(), this._chunkSize } } if ("undefined" != typeof XMLHttpRequest) { if (!ENVIRONMENT_IS_WORKER) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"; var s = { isDevice: !1, contents: new a } } else s = { isDevice: !1, url: t }; var i = FS.createFile(e, r, s, n, o); s.contents ? i.contents = s.contents : s.url && (i.contents = null, i.url = s.url), Object.defineProperties(i, { usedBytes: { get: function () { return this.contents.length } } }); var l = {}; function c(e, r, t, n, o) { var a = e.node.contents; if (o >= a.length) return 0; var s = Math.min(a.length - o, n); if (a.slice) for (var i = 0; i < s; i++)r[t + i] = a[o + i]; else for (i = 0; i < s; i++)r[t + i] = a.get(o + i); return s } return Object.keys(i.stream_ops).forEach((e => { var r = i.stream_ops[e]; l[e] = (...e) => (FS.forceLoadFile(i), r(...e)) })), l.read = (e, r, t, n, o) => (FS.forceLoadFile(i), c(e, r, t, n, o)), l.mmap = (e, r, t, n, o) => { FS.forceLoadFile(i); var a = mmapAlloc(r); if (!a) throw new FS.ErrnoError(48); return c(e, HEAP8, a, r, t), { ptr: a, allocated: !0 } }, i.stream_ops = l, i } }, SYSCALLS = { DEFAULT_POLLMASK: 5, calculateAt(e, r, t) { if (PATH.isAbs(r)) return r; var n; -100 === e ? n = FS.cwd() : n = SYSCALLS.getStreamFromFD(e).path; if (0 == r.length) { if (!t) throw new FS.ErrnoError(44); return n } return n + "/" + r }, writeStat(e, r) { HEAP32[e >> 2] = r.dev, HEAP32[e + 4 >> 2] = r.mode, HEAPU32[e + 8 >> 2] = r.nlink, HEAP32[e + 12 >> 2] = r.uid, HEAP32[e + 16 >> 2] = r.gid, HEAP32[e + 20 >> 2] = r.rdev, HEAP64[e + 24 >> 3] = BigInt(r.size), HEAP32[e + 32 >> 2] = 4096, HEAP32[e + 36 >> 2] = r.blocks; var t = r.atime.getTime(), n = r.mtime.getTime(), o = r.ctime.getTime(); return HEAP64[e + 40 >> 3] = BigInt(Math.floor(t / 1e3)), HEAPU32[e + 48 >> 2] = t % 1e3 * 1e3 * 1e3, HEAP64[e + 56 >> 3] = BigInt(Math.floor(n / 1e3)), HEAPU32[e + 64 >> 2] = n % 1e3 * 1e3 * 1e3, HEAP64[e + 72 >> 3] = BigInt(Math.floor(o / 1e3)), HEAPU32[e + 80 >> 2] = o % 1e3 * 1e3 * 1e3, HEAP64[e + 88 >> 3] = BigInt(r.ino), 0 }, writeStatFs(e, r) { HEAP32[e + 4 >> 2] = r.bsize, HEAP32[e + 40 >> 2] = r.bsize, HEAP32[e + 8 >> 2] = r.blocks, HEAP32[e + 12 >> 2] = r.bfree, HEAP32[e + 16 >> 2] = r.bavail, HEAP32[e + 20 >> 2] = r.files, HEAP32[e + 24 >> 2] = r.ffree, HEAP32[e + 28 >> 2] = r.fsid, HEAP32[e + 44 >> 2] = r.flags, HEAP32[e + 36 >> 2] = r.namelen }, doMsync(e, r, t, n, o) { if (!FS.isFile(r.node.mode)) throw new FS.ErrnoError(43); if (2 & n) return 0; var a = HEAPU8.slice(e, e + t); FS.msync(r, a, o, t, n) }, getStreamFromFD: e => FS.getStreamChecked(e), varargs: void 0, getStr: e => UTF8ToString(e) }, ___syscall__newselect = function (e, r, t, n, o) { try { for (var a = 0, s = r ? HEAP32[r >> 2] : 0, i = r ? HEAP32[r + 4 >> 2] : 0, l = t ? HEAP32[t >> 2] : 0, c = t ? HEAP32[t + 4 >> 2] : 0, d = n ? HEAP32[n >> 2] : 0, u = n ? HEAP32[n + 4 >> 2] : 0, m = 0, S = 0, f = 0, _ = 0, F = 0, p = 0, h = (r ? HEAP32[r >> 2] : 0) | (t ? HEAP32[t >> 2] : 0) | (n ? HEAP32[n >> 2] : 0), E = (r ? HEAP32[r + 4 >> 2] : 0) | (t ? HEAP32[t + 4 >> 2] : 0) | (n ? HEAP32[n + 4 >> 2] : 0), g = (e, r, t, n) => e < 32 ? r & n : t & n, w = 0; w < e; w++) { var v = 1 << w % 32; if (g(w, h, E, v)) { var y = SYSCALLS.getStreamFromFD(w), A = SYSCALLS.DEFAULT_POLLMASK; if (y.stream_ops.poll) { var k = -1; if (o) k = 1e3 * ((r ? HEAP32[o >> 2] : 0) + (r ? HEAP32[o + 4 >> 2] : 0) / 1e6); A = y.stream_ops.poll(y, k) } 1 & A && g(w, s, i, v) && (w < 32 ? m |= v : S |= v, a++), 4 & A && g(w, l, c, v) && (w < 32 ? f |= v : _ |= v, a++), 2 & A && g(w, d, u, v) && (w < 32 ? F |= v : p |= v, a++) } } return r && (HEAP32[r >> 2] = m, HEAP32[r + 4 >> 2] = S), t && (HEAP32[t >> 2] = f, HEAP32[t + 4 >> 2] = _), n && (HEAP32[n >> 2] = F, HEAP32[n + 4 >> 2] = p), a } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return -e.errno } }; function ___syscall_chmod(e, r) { try { return e = SYSCALLS.getStr(e), FS.chmod(e, r), 0 } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return -e.errno } } var SOCKFS = { callbacks: {}, on(e, r) { SOCKFS.callbacks[e] = r }, emit(e, r) { SOCKFS.callbacks[e]?.(r) }, mount: e => FS.createNode(null, "/", 16895, 0), createSocket(e, r, t) { if (1 == (r &= -526337) && t && 6 != t) throw new FS.ErrnoError(66); var n = { family: e, type: r, protocol: t, server: null, error: null, peers: {}, pending: [], recv_queue: [], sock_ops: SOCKFS.websocket_sock_ops }, o = SOCKFS.nextname(), a = FS.createNode(SOCKFS.root, o, 49152, 0); a.sock = n; var s = FS.createStream({ path: o, node: a, flags: 2, seekable: !1, stream_ops: SOCKFS.stream_ops }); return n.stream = s, n }, getSocket(e) { var r = FS.getStream(e); return r && FS.isSocket(r.node.mode) ? r.node.sock : null }, stream_ops: { poll(e) { var r = e.node.sock; return r.sock_ops.poll(r) }, ioctl(e, r, t) { var n = e.node.sock; return n.sock_ops.ioctl(n, r, t) }, read(e, r, t, n, o) { var a = e.node.sock, s = a.sock_ops.recvmsg(a, n); return s ? (r.set(s.buffer, t), s.buffer.length) : 0 }, write(e, r, t, n, o) { var a = e.node.sock; return a.sock_ops.sendmsg(a, r, t, n) }, close(e) { var r = e.node.sock; r.sock_ops.close(r) } }, nextname: () => (SOCKFS.nextname.current || (SOCKFS.nextname.current = 0), `socket[${SOCKFS.nextname.current++}]`), websocket_sock_ops: { createPeer(e, r, t) { var n; if ("object" == typeof r && (n = r, r = null, t = null), n) if (n._socket) r = n._socket.remoteAddress, t = n._socket.remotePort; else { var o = /ws[s]?:\/\/([^:]+):(\d+)/.exec(n.url); if (!o) throw new Error("WebSocket URL must be in the format ws(s)://address:port"); r = o[1], t = parseInt(o[2], 10) } else try { var a = "ws:#".replace("#", "//"), s = "binary", i = void 0; if ("ws://" === a || "wss://" === a) { var l = r.split("/"); a = a + l[0] + ":" + t + "/" + l.slice(1).join("/") } "null" !== s && (i = s = s.replace(/^ +| +$/g, "").split(/ *, */)), (n = new WebSocket(a, i)).binaryType = "arraybuffer" } catch (e) { throw new FS.ErrnoError(23) } var c = { addr: r, port: t, socket: n, msg_send_queue: [] }; return SOCKFS.websocket_sock_ops.addPeer(e, c), SOCKFS.websocket_sock_ops.handlePeerEvents(e, c), 2 === e.type && void 0 !== e.sport && c.msg_send_queue.push(new Uint8Array([255, 255, 255, 255, "p".charCodeAt(0), "o".charCodeAt(0), "r".charCodeAt(0), "t".charCodeAt(0), (65280 & e.sport) >> 8, 255 & e.sport])), c }, getPeer: (e, r, t) => e.peers[r + ":" + t], addPeer(e, r) { e.peers[r.addr + ":" + r.port] = r }, removePeer(e, r) { delete e.peers[r.addr + ":" + r.port] }, handlePeerEvents(e, r) { var t = !0, n = function () { e.connecting = !1, SOCKFS.emit("open", e.stream.fd); try { for (var t = r.msg_send_queue.shift(); t;)r.socket.send(t), t = r.msg_send_queue.shift() } catch (e) { r.socket.close() } }; function o(n) { if ("string" == typeof n) { n = (new TextEncoder).encode(n) } else { if (assert(void 0 !== n.byteLength), 0 == n.byteLength) return; n = new Uint8Array(n) } var o = t; if (t = !1, o && 10 === n.length && 255 === n[0] && 255 === n[1] && 255 === n[2] && 255 === n[3] && n[4] === "p".charCodeAt(0) && n[5] === "o".charCodeAt(0) && n[6] === "r".charCodeAt(0) && n[7] === "t".charCodeAt(0)) { var a = n[8] << 8 | n[9]; return SOCKFS.websocket_sock_ops.removePeer(e, r), r.port = a, void SOCKFS.websocket_sock_ops.addPeer(e, r) } e.recv_queue.push({ addr: r.addr, port: r.port, data: n }), SOCKFS.emit("message", e.stream.fd) } ENVIRONMENT_IS_NODE ? (r.socket.on("open", n), r.socket.on("message", (function (e, r) { r && o(new Uint8Array(e).buffer) })), r.socket.on("close", (function () { SOCKFS.emit("close", e.stream.fd) })), r.socket.on("error", (function (r) { e.error = 14, SOCKFS.emit("error", [e.stream.fd, e.error, "ECONNREFUSED: Connection refused"]) }))) : (r.socket.onopen = n, r.socket.onclose = function () { SOCKFS.emit("close", e.stream.fd) }, r.socket.onmessage = function (e) { o(e.data) }, r.socket.onerror = function (r) { e.error = 14, SOCKFS.emit("error", [e.stream.fd, e.error, "ECONNREFUSED: Connection refused"]) }) }, poll(e) { if (1 === e.type && e.server) return e.pending.length ? 65 : 0; var r = 0, t = 1 === e.type ? SOCKFS.websocket_sock_ops.getPeer(e, e.daddr, e.dport) : null; return (e.recv_queue.length || !t || t && t.socket.readyState === t.socket.CLOSING || t && t.socket.readyState === t.socket.CLOSED) && (r |= 65), (!t || t && t.socket.readyState === t.socket.OPEN) && (r |= 4), (t && t.socket.readyState === t.socket.CLOSING || t && t.socket.readyState === t.socket.CLOSED) && (e.connecting ? r |= 4 : r |= 16), r }, ioctl(e, r, t) { if (21531 === r) { var n = 0; return e.recv_queue.length && (n = e.recv_queue[0].data.length), HEAP32[t >> 2] = n, 0 } return 28 }, close(e) { if (e.server) { try { e.server.close() } catch (e) { } e.server = null } for (var r = Object.keys(e.peers), t = 0; t < r.length; t++) { var n = e.peers[r[t]]; try { n.socket.close() } catch (e) { } SOCKFS.websocket_sock_ops.removePeer(e, n) } return 0 }, bind(e, r, t) { if (void 0 !== e.saddr || void 0 !== e.sport) throw new FS.ErrnoError(28); if (e.saddr = r, e.sport = t, 2 === e.type) { e.server && (e.server.close(), e.server = null); try { e.sock_ops.listen(e, 0) } catch (e) { if ("ErrnoError" !== e.name) throw e; if (138 !== e.errno) throw e } } }, connect(e, r, t) { if (e.server) throw new FS.ErrnoError(138); if (void 0 !== e.daddr && void 0 !== e.dport) { var n = SOCKFS.websocket_sock_ops.getPeer(e, e.daddr, e.dport); if (n) throw n.socket.readyState === n.socket.CONNECTING ? new FS.ErrnoError(7) : new FS.ErrnoError(30) } var o = SOCKFS.websocket_sock_ops.createPeer(e, r, t); e.daddr = o.addr, e.dport = o.port, e.connecting = !0 }, listen(e, r) { if (!ENVIRONMENT_IS_NODE) throw new FS.ErrnoError(138) }, accept(e) { if (!e.server || !e.pending.length) throw new FS.ErrnoError(28); var r = e.pending.shift(); return r.stream.flags = e.stream.flags, r }, getname(e, r) { var t, n; if (r) { if (void 0 === e.daddr || void 0 === e.dport) throw new FS.ErrnoError(53); t = e.daddr, n = e.dport } else t = e.saddr || 0, n = e.sport || 0; return { addr: t, port: n } }, sendmsg(e, r, t, n, o, a) { if (2 === e.type) { if (void 0 !== o && void 0 !== a || (o = e.daddr, a = e.dport), void 0 === o || void 0 === a) throw new FS.ErrnoError(17) } else o = e.daddr, a = e.dport; var s = SOCKFS.websocket_sock_ops.getPeer(e, o, a); if (1 === e.type && (!s || s.socket.readyState === s.socket.CLOSING || s.socket.readyState === s.socket.CLOSED)) throw new FS.ErrnoError(53); ArrayBuffer.isView(r) && (t += r.byteOffset, r = r.buffer); var i = r.slice(t, t + n); if (!s || s.socket.readyState !== s.socket.OPEN) return 2 === e.type && (s && s.socket.readyState !== s.socket.CLOSING && s.socket.readyState !== s.socket.CLOSED || (s = SOCKFS.websocket_sock_ops.createPeer(e, o, a))), s.msg_send_queue.push(i), n; try { return s.socket.send(i), n } catch (e) { throw new FS.ErrnoError(28) } }, recvmsg(e, r) { if (1 === e.type && e.server) throw new FS.ErrnoError(53); var t = e.recv_queue.shift(); if (!t) { if (1 === e.type) { var n = SOCKFS.websocket_sock_ops.getPeer(e, e.daddr, e.dport); if (!n) throw new FS.ErrnoError(53); if (n.socket.readyState === n.socket.CLOSING || n.socket.readyState === n.socket.CLOSED) return null; throw new FS.ErrnoError(6) } throw new FS.ErrnoError(6) } var o = t.data.byteLength || t.data.length, a = t.data.byteOffset || 0, s = t.data.buffer || t.data, i = Math.min(r, o), l = { buffer: new Uint8Array(s, a, i), addr: t.addr, port: t.port }; if (1 === e.type && i < o) { var c = o - i; t.data = new Uint8Array(s, a + i, c), e.recv_queue.unshift(t) } return l } } }, getSocketFromFD = e => { var r = SOCKFS.getSocket(e); if (!r) throw new FS.ErrnoError(8); return r }, inetNtop4 = e => (255 & e) + "." + (e >> 8 & 255) + "." + (e >> 16 & 255) + "." + (e >> 24 & 255), inetNtop6 = e => { var r = "", t = 0, n = 0, o = 0, a = 0, s = 0, i = 0, l = [65535 & e[0], e[0] >> 16, 65535 & e[1], e[1] >> 16, 65535 & e[2], e[2] >> 16, 65535 & e[3], e[3] >> 16], c = !0, d = ""; for (i = 0; i < 5; i++)if (0 !== l[i]) { c = !1; break } if (c) { if (d = inetNtop4(l[6] | l[7] << 16), -1 === l[5]) return r = "::ffff:", r += d; if (0 === l[5]) return r = "::", "0.0.0.0" === d && (d = ""), "0.0.0.1" === d && (d = "1"), r += d } for (t = 0; t < 8; t++)0 === l[t] && (t - o > 1 && (s = 0), o = t, s++), s > n && (a = t - (n = s) + 1); for (t = 0; t < 8; t++)n > 1 && 0 === l[t] && t >= a && t < a + n ? t === a && (r += ":", 0 === a && (r += ":")) : (r += Number(_ntohs(65535 & l[t])).toString(16), r += t < 7 ? ":" : ""); return r }, readSockaddr = (e, r) => { var t, n = HEAP16[e >> 1], o = _ntohs(HEAPU16[e + 2 >> 1]); switch (n) { case 2: if (16 !== r) return { errno: 28 }; t = HEAP32[e + 4 >> 2], t = inetNtop4(t); break; case 10: if (28 !== r) return { errno: 28 }; t = [HEAP32[e + 8 >> 2], HEAP32[e + 12 >> 2], HEAP32[e + 16 >> 2], HEAP32[e + 20 >> 2]], t = inetNtop6(t); break; default: return { errno: 5 } }return { family: n, addr: t, port: o } }, inetPton4 = e => { for (var r = e.split("."), t = 0; t < 4; t++) { var n = Number(r[t]); if (isNaN(n)) return null; r[t] = n } return (r[0] | r[1] << 8 | r[2] << 16 | r[3] << 24) >>> 0 }, jstoi_q = e => parseInt(e), inetPton6 = e => { var r, t, n, o, a = []; if (!/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i.test(e)) return null; if ("::" === e) return [0, 0, 0, 0, 0, 0, 0, 0]; for ((e = e.startsWith("::") ? e.replace("::", "Z:") : e.replace("::", ":Z:")).indexOf(".") > 0 ? ((r = (e = e.replace(new RegExp("[.]", "g"), ":")).split(":"))[r.length - 4] = jstoi_q(r[r.length - 4]) + 256 * jstoi_q(r[r.length - 3]), r[r.length - 3] = jstoi_q(r[r.length - 2]) + 256 * jstoi_q(r[r.length - 1]), r = r.slice(0, r.length - 2)) : r = e.split(":"), n = 0, o = 0, t = 0; t < r.length; t++)if ("string" == typeof r[t]) if ("Z" === r[t]) { for (o = 0; o < 8 - r.length + 1; o++)a[t + o] = 0; n = o - 1 } else a[t + n] = _htons(parseInt(r[t], 16)); else a[t + n] = r[t]; return [a[1] << 16 | a[0], a[3] << 16 | a[2], a[5] << 16 | a[4], a[7] << 16 | a[6]] }, DNS = { address_map: { id: 1, addrs: {}, names: {} }, lookup_name(e) { var r, t = inetPton4(e); if (null !== t) return e; if (null !== (t = inetPton6(e))) return e; if (DNS.address_map.addrs[e]) r = DNS.address_map.addrs[e]; else { var n = DNS.address_map.id++; assert(n < 65535, "exceeded max address mappings of 65535"), r = "172.29." + (255 & n) + "." + (65280 & n), DNS.address_map.names[r] = e, DNS.address_map.addrs[e] = r } return r }, lookup_addr: e => DNS.address_map.names[e] ? DNS.address_map.names[e] : null }, getSocketAddress = (e, r) => { var t = readSockaddr(e, r); if (t.errno) throw new FS.ErrnoError(t.errno); return t.addr = DNS.lookup_addr(t.addr) || t.addr, t }; function ___syscall_connect(e, r, t, n, o, a) { try { var s = getSocketFromFD(e), i = getSocketAddress(r, t); return s.sock_ops.connect(s, i.addr, i.port), 0 } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return -e.errno } } function ___syscall_fchmod(e, r) { try { return FS.fchmod(e, r), 0 } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return -e.errno } } var syscallGetVarargI = () => { var e = HEAP32[+SYSCALLS.varargs >> 2]; return SYSCALLS.varargs += 4, e }, syscallGetVarargP = syscallGetVarargI; function ___syscall_fcntl64(e, r, t) { SYSCALLS.varargs = t; try { var n = SYSCALLS.getStreamFromFD(e); switch (r) { case 0: if ((o = syscallGetVarargI()) < 0) return -28; for (; FS.streams[o];)o++; return FS.dupStream(n, o).fd; case 1: case 2: case 13: case 14: return 0; case 3: return n.flags; case 4: var o = syscallGetVarargI(); return n.flags |= o, 0; case 12: o = syscallGetVarargP(); return HEAP16[o + 0 >> 1] = 2, 0 }return -28 } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return -e.errno } } function ___syscall_fstat64(e, r) { try { return SYSCALLS.writeStat(r, FS.fstat(e)) } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return -e.errno } } var INT53_MAX = 9007199254740992, INT53_MIN = -9007199254740992, bigintToI53Checked = e => e < INT53_MIN || e > INT53_MAX ? NaN : Number(e); function ___syscall_ftruncate64(e, r) { r = bigintToI53Checked(r); try { return isNaN(r) ? 61 : (FS.ftruncate(e, r), 0) } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return -e.errno } } var stringToUTF8 = (e, r, t) => stringToUTF8Array(e, HEAPU8, r, t); function ___syscall_getdents64(e, r, t) { try { var n = SYSCALLS.getStreamFromFD(e); n.getdents ||= FS.readdir(n.path); for (var o = 280, a = 0, s = FS.llseek(n, 0, 1), i = Math.floor(s / o), l = Math.min(n.getdents.length, i + Math.floor(t / o)), c = i; c < l; c++) { var d, u, m = n.getdents[c]; if ("." === m) d = n.node.id, u = 4; else if (".." === m) { d = FS.lookupPath(n.path, { parent: !0 }).node.id, u = 4 } else { var S; try { S = FS.lookupNode(n.node, m) } catch (e) { if (28 === e?.errno) continue; throw e } d = S.id, u = FS.isChrdev(S.mode) ? 2 : FS.isDir(S.mode) ? 4 : FS.isLink(S.mode) ? 10 : 8 } HEAP64[r + a >> 3] = BigInt(d), HEAP64[r + a + 8 >> 3] = BigInt((c + 1) * o), HEAP16[r + a + 16 >> 1] = 280, HEAP8[r + a + 18] = u, stringToUTF8(m, r + a + 19, 256), a += o } return FS.llseek(n, c * o, 0), a } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return -e.errno } } function ___syscall_getuid32() { abort("missing function: __syscall_getuid32") } function ___syscall_ioctl(e, r, t) { SYSCALLS.varargs = t; try { var n = SYSCALLS.getStreamFromFD(e); switch (r) { case 21509: case 21510: case 21511: case 21512: case 21524: case 21515: return n.tty ? 0 : -59; case 21505: if (!n.tty) return -59; if (n.tty.ops.ioctl_tcgets) { var o = n.tty.ops.ioctl_tcgets(n), a = syscallGetVarargP(); HEAP32[a >> 2] = o.c_iflag || 0, HEAP32[a + 4 >> 2] = o.c_oflag || 0, HEAP32[a + 8 >> 2] = o.c_cflag || 0, HEAP32[a + 12 >> 2] = o.c_lflag || 0; for (var s = 0; s < 32; s++)HEAP8[a + s + 17] = o.c_cc[s] || 0; return 0 } return 0; case 21506: case 21507: case 21508: if (!n.tty) return -59; if (n.tty.ops.ioctl_tcsets) { a = syscallGetVarargP(); var i = HEAP32[a >> 2], l = HEAP32[a + 4 >> 2], c = HEAP32[a + 8 >> 2], d = HEAP32[a + 12 >> 2], u = []; for (s = 0; s < 32; s++)u.push(HEAP8[a + s + 17]); return n.tty.ops.ioctl_tcsets(n.tty, r, { c_iflag: i, c_oflag: l, c_cflag: c, c_lflag: d, c_cc: u }) } return 0; case 21519: if (!n.tty) return -59; a = syscallGetVarargP(); return HEAP32[a >> 2] = 0, 0; case 21520: return n.tty ? -28 : -59; case 21531: a = syscallGetVarargP(); return FS.ioctl(n, r, a); case 21523: if (!n.tty) return -59; if (n.tty.ops.ioctl_tiocgwinsz) { var m = n.tty.ops.ioctl_tiocgwinsz(n.tty); a = syscallGetVarargP(); HEAP16[a >> 1] = m[0], HEAP16[a + 2 >> 1] = m[1] } return 0; default: return -28 } } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return -e.errno } } function ___syscall_linkat() { abort("missing function: __syscall_linkat") } function ___syscall_lstat64(e, r) { try { return e = SYSCALLS.getStr(e), SYSCALLS.writeStat(r, FS.lstat(e)) } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return -e.errno } } function ___syscall_mkdirat(e, r, t) { try { return r = SYSCALLS.getStr(r), r = SYSCALLS.calculateAt(e, r), FS.mkdir(r, t, 0), 0 } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return -e.errno } } function ___syscall_newfstatat(e, r, t, n) { try { r = SYSCALLS.getStr(r); var o = 256 & n, a = 4096 & n; return n &= -6401, r = SYSCALLS.calculateAt(e, r, a), SYSCALLS.writeStat(t, o ? FS.lstat(r) : FS.stat(r)) } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return -e.errno } } function ___syscall_openat(e, r, t, n) { SYSCALLS.varargs = n; try { r = SYSCALLS.getStr(r), r = SYSCALLS.calculateAt(e, r); var o = n ? syscallGetVarargI() : 0; return FS.open(r, t, o).fd } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return -e.errno } } function ___syscall_readlinkat(e, r, t, n) { try { if (r = SYSCALLS.getStr(r), r = SYSCALLS.calculateAt(e, r), n <= 0) return -28; var o = FS.readlink(r), a = Math.min(n, lengthBytesUTF8(o)), s = HEAP8[t + a]; return stringToUTF8(o, t, n + 1), HEAP8[t + a] = s, a } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return -e.errno } } function ___syscall_socket(e, r, t) { try { return SOCKFS.createSocket(e, r, t).stream.fd } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return -e.errno } } function ___syscall_stat64(e, r) { try { return e = SYSCALLS.getStr(e), SYSCALLS.writeStat(r, FS.stat(e)) } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return -e.errno } } function ___syscall_symlinkat(e, r, t) { try { return e = SYSCALLS.getStr(e), t = SYSCALLS.getStr(t), t = SYSCALLS.calculateAt(r, t), FS.symlink(e, t), 0 } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return -e.errno } } ___syscall_getuid32.stub = !0, ___syscall_linkat.stub = !0; var __abort_js = () => abort(""), runtimeKeepaliveCounter = 0, __emscripten_runtime_keepalive_clear = () => { runtimeKeepaliveCounter = 0 }; function __gmtime_js(e, r) { e = bigintToI53Checked(e); var t = new Date(1e3 * e); HEAP32[r >> 2] = t.getUTCSeconds(), HEAP32[r + 4 >> 2] = t.getUTCMinutes(), HEAP32[r + 8 >> 2] = t.getUTCHours(), HEAP32[r + 12 >> 2] = t.getUTCDate(), HEAP32[r + 16 >> 2] = t.getUTCMonth(), HEAP32[r + 20 >> 2] = t.getUTCFullYear() - 1900, HEAP32[r + 24 >> 2] = t.getUTCDay(); var n = Date.UTC(t.getUTCFullYear(), 0, 1, 0, 0, 0, 0), o = (t.getTime() - n) / 864e5 | 0; HEAP32[r + 28 >> 2] = o } var isLeapYear = e => e % 4 == 0 && (e % 100 != 0 || e % 400 == 0), MONTH_DAYS_LEAP_CUMULATIVE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335], MONTH_DAYS_REGULAR_CUMULATIVE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334], ydayFromDate = e => (isLeapYear(e.getFullYear()) ? MONTH_DAYS_LEAP_CUMULATIVE : MONTH_DAYS_REGULAR_CUMULATIVE)[e.getMonth()] + e.getDate() - 1; function __localtime_js(e, r) { e = bigintToI53Checked(e); var t = new Date(1e3 * e); HEAP32[r >> 2] = t.getSeconds(), HEAP32[r + 4 >> 2] = t.getMinutes(), HEAP32[r + 8 >> 2] = t.getHours(), HEAP32[r + 12 >> 2] = t.getDate(), HEAP32[r + 16 >> 2] = t.getMonth(), HEAP32[r + 20 >> 2] = t.getFullYear() - 1900, HEAP32[r + 24 >> 2] = t.getDay(); var n = 0 | ydayFromDate(t); HEAP32[r + 28 >> 2] = n, HEAP32[r + 36 >> 2] = -60 * t.getTimezoneOffset(); var o = new Date(t.getFullYear(), 0, 1), a = new Date(t.getFullYear(), 6, 1).getTimezoneOffset(), s = o.getTimezoneOffset(), i = 0 | (a != s && t.getTimezoneOffset() == Math.min(s, a)); HEAP32[r + 32 >> 2] = i } var timers = {}, handleException = e => { if (e instanceof ExitStatus || "unwind" == e) return EXITSTATUS; quit_(1, e) }, keepRuntimeAlive = () => !0, _proc_exit = e => { EXITSTATUS = e, keepRuntimeAlive() || (ABORT = !0), quit_(e, new ExitStatus(e)) }, exitJS = (e, r) => { EXITSTATUS = e, _proc_exit(e) }, _exit = exitJS, maybeExit = () => { if (!keepRuntimeAlive()) try { _exit(EXITSTATUS) } catch (e) { handleException(e) } }, callUserCallback = e => { if (!ABORT) try { e(), maybeExit() } catch (e) { handleException(e) } }, _emscripten_get_now = () => performance.now(), __setitimer_js = (e, r) => { if (timers[e] && (clearTimeout(timers[e].id), delete timers[e]), !r) return 0; var t = setTimeout((() => { delete timers[e], callUserCallback((() => __emscripten_timeout(e, _emscripten_get_now()))) }), r); return timers[e] = { id: t, timeout_ms: r }, 0 }, __tzset_js = (e, r, t, n) => { var o = (new Date).getFullYear(), a = new Date(o, 0, 1), s = new Date(o, 6, 1), i = a.getTimezoneOffset(), l = s.getTimezoneOffset(), c = Math.max(i, l); HEAPU32[e >> 2] = 60 * c, HEAP32[r >> 2] = Number(i != l); var d = e => { var r = e >= 0 ? "-" : "+", t = Math.abs(e); return `UTC${r}${String(Math.floor(t / 60)).padStart(2, "0")}${String(t % 60).padStart(2, "0")}` }, u = d(i), m = d(l); l < i ? (stringToUTF8(u, t, 17), stringToUTF8(m, n, 17)) : (stringToUTF8(u, n, 17), stringToUTF8(m, t, 17)) }, _emscripten_date_now = () => Date.now(), nowIsMonotonic = 1, checkWasiClock = e => e >= 0 && e <= 3; function _clock_time_get(e, r, t) { if (r = bigintToI53Checked(r), !checkWasiClock(e)) return 28; var n; if (0 === e) n = _emscripten_date_now(); else { if (!nowIsMonotonic) return 52; n = _emscripten_get_now() } var o = Math.round(1e3 * n * 1e3); return HEAP64[t >> 3] = BigInt(o), 0 } var reallyNegative = e => e < 0 || 0 === e && 1 / e == -1 / 0, convertI32PairToI53 = (e, r) => (e >>> 0) + 4294967296 * r, convertU32PairToI53 = (e, r) => (e >>> 0) + 4294967296 * (r >>> 0), reSign = (e, r) => { if (e <= 0) return e; var t = r <= 32 ? Math.abs(1 << r - 1) : Math.pow(2, r - 1); return e >= t && (r <= 32 || e > t) && (e = -2 * t + e), e }, unSign = (e, r) => e >= 0 ? e : r <= 32 ? 2 * Math.abs(1 << r - 1) + e : Math.pow(2, r) + e, strLen = e => { for (var r = e; HEAPU8[r];)++r; return r - e }, formatString = (e, r) => { var t = e, n = r; function o(e) { var r; return n = function (e, r) { return "double" !== r && "i64" !== r || 7 & e && (e += 4), e }(n, e), "double" === e ? (r = HEAPF64[n >> 3], n += 8) : "i64" == e ? (r = [HEAP32[n >> 2], HEAP32[n + 4 >> 2]], n += 8) : (e = "i32", r = HEAP32[n >> 2], n += 4), r } for (var a, s, i, l = []; ;) { var c = t; if (0 === (a = HEAP8[t])) break; if (s = HEAP8[t + 1], 37 == a) { var d = !1, u = !1, m = !1, S = !1, f = !1; e: for (; ;) { switch (s) { case 43: d = !0; break; case 45: u = !0; break; case 35: m = !0; break; case 48: if (S) break e; S = !0; break; case 32: f = !0; break; default: break e }t++, s = HEAP8[t + 1] } var _ = 0; if (42 == s) _ = o("i32"), t++, s = HEAP8[t + 1]; else for (; s >= 48 && s <= 57;)_ = 10 * _ + (s - 48), t++, s = HEAP8[t + 1]; var F, p = !1, h = -1; if (46 == s) { if (h = 0, p = !0, t++, 42 == (s = HEAP8[t + 1])) h = o("i32"), t++; else for (; ;) { var E = HEAP8[t + 1]; if (E < 48 || E > 57) break; h = 10 * h + (E - 48), t++ } s = HEAP8[t + 1] } switch (h < 0 && (h = 6, p = !1), String.fromCharCode(s)) { case "h": 104 == HEAP8[t + 2] ? (t++, F = 1) : F = 2; break; case "l": 108 == HEAP8[t + 2] ? (t++, F = 8) : F = 4; break; case "L": case "q": case "j": F = 8; break; case "z": case "t": case "I": F = 4; break; default: F = null }switch (F && t++, s = HEAP8[t + 1], String.fromCharCode(s)) { case "d": case "i": case "u": case "o": case "x": case "X": case "p": var g = 100 == s || 105 == s; if (i = o("i" + 8 * (F = F || 4)), 8 == F && (i = 117 == s ? convertU32PairToI53(i[0], i[1]) : convertI32PairToI53(i[0], i[1])), F <= 4) { var w = Math.pow(256, F) - 1; i = (g ? reSign : unSign)(i & w, 8 * F) } var v = Math.abs(i), y = ""; if (100 == s || 105 == s) T = reSign(i, 8 * F).toString(10); else if (117 == s) T = unSign(i, 8 * F).toString(10), i = Math.abs(i); else if (111 == s) T = (m ? "0" : "") + v.toString(8); else if (120 == s || 88 == s) { if (y = m && 0 != i ? "0x" : "", i < 0) { i = -i, T = (v - 1).toString(16); for (var A = [], k = 0; k < T.length; k++)A.push((15 - parseInt(T[k], 16)).toString(16)); for (T = A.join(""); T.length < 2 * F;)T = "f" + T } else T = v.toString(16); 88 == s && (y = y.toUpperCase(), T = T.toUpperCase()) } else 112 == s && (0 === v ? T = "(nil)" : (y = "0x", T = v.toString(16))); if (p) for (; T.length < h;)T = "0" + T; for (i >= 0 && (d ? y = "+" + y : f && (y = " " + y)), "-" == T.charAt(0) && (y = "-" + y, T = T.slice(1)); y.length + T.length < _;)u ? T += " " : S ? T = "0" + T : y = " " + y; (T = y + T).split("").forEach((e => l.push(e.charCodeAt(0)))); break; case "f": case "F": case "e": case "E": case "g": case "G": var T; if (i = o("double"), isNaN(i)) T = "nan", S = !1; else if (isFinite(i)) { var P = !1, b = Math.min(h, 20); if (103 == s || 71 == s) { P = !0, h = h || 1; var M = parseInt(i.toExponential(b).split("e")[1], 10); h > M && M >= -4 ? (s = (103 == s ? "f" : "F").charCodeAt(0), h -= M + 1) : (s = (103 == s ? "e" : "E").charCodeAt(0), h--), b = Math.min(h, 20) } 101 == s || 69 == s ? (T = i.toExponential(b), /[eE][-+]\d$/.test(T) && (T = T.slice(0, -1) + "0" + T.slice(-1))) : 102 != s && 70 != s || (T = i.toFixed(b), 0 === i && reallyNegative(i) && (T = "-" + T)); var C = T.split("e"); if (P && !m) for (; C[0].length > 1 && C[0].includes(".") && ("0" == C[0].slice(-1) || "." == C[0].slice(-1));)C[0] = C[0].slice(0, -1); else for (m && -1 == T.indexOf(".") && (C[0] += "."); h > b++;)C[0] += "0"; T = C[0] + (C.length > 1 ? "e" + C[1] : ""), 69 == s && (T = T.toUpperCase()), i >= 0 && (d ? T = "+" + T : f && (T = " " + T)) } else T = (i < 0 ? "-" : "") + "inf", S = !1; for (; T.length < _;)u ? T += " " : T = !S || "-" != T[0] && "+" != T[0] ? (S ? "0" : " ") + T : T[0] + "0" + T.slice(1); s < 97 && (T = T.toUpperCase()), T.split("").forEach((e => l.push(e.charCodeAt(0)))); break; case "s": var D = o("i8*"), H = D ? strLen(D) : 6; if (p && (H = Math.min(H, h)), !u) for (; H < _--;)l.push(32); if (D) for (k = 0; k < H; k++)l.push(HEAPU8[D++]); else l = l.concat(intArrayFromString("(null)".slice(0, H), !0)); if (u) for (; H < _--;)l.push(32); break; case "c": for (u && l.push(o("i8")); --_ > 0;)l.push(32); u || l.push(o("i8")); break; case "n": var N = o("i32*"); HEAP32[N >> 2] = l.length; break; case "%": l.push(a); break; default: for (k = c; k < t + 2; k++)l.push(HEAP8[k]) }t += 2 } else l.push(a), t += 1 } return l }, jsStackTrace = () => (new Error).stack.toString(), warnOnce = e => { warnOnce.shown ||= {}, warnOnce.shown[e] || (warnOnce.shown[e] = 1, err(e)) }, getCallstack = e => { var r = jsStackTrace(), t = r.lastIndexOf("_emscripten_log"), n = r.lastIndexOf("_emscripten_get_callstack"), o = r.indexOf("\n", Math.max(t, n)) + 1; r = r.slice(o), 8 & e && "undefined" == typeof emscripten_source_map && (warnOnce('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with "--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js" linker flag to add source map loading to code.'), e ^= 8, e |= 16); var a = r.split("\n"); r = ""; var s = new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)"), i = new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?"), l = new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)"); for (var c in a) { var d = a[c], u = "", m = "", S = 0, f = 0, _ = l.exec(d); if (5 == _?.length) u = _[1], m = _[2], S = _[3], f = _[4]; else { if (_ = s.exec(d) || i.exec(d), !(_?.length >= 4)) { r += d + "\n"; continue } u = _[1], m = _[2], S = _[3], f = 0 | _[4] } var F = !1; if (8 & e) { var p = emscripten_source_map.originalPositionFor({ line: S, column: f }); F = p?.source, F && (64 & e && (p.source = p.source.substring(p.source.replace(/\\/g, "/").lastIndexOf("/") + 1)), r += ` at ${u} (${p.source}:${p.line}:${p.column})\n`) } (16 & e || !F) && (64 & e && (m = m.substring(m.replace(/\\/g, "/").lastIndexOf("/") + 1)), r += (F ? ` = ${u}` : ` at ${u}`) + ` (${m}:${S}:${f})\n`) } return r = r.replace(/\s+$/, "") }, emscriptenLog = (e, r) => { 24 & e && (r = r.replace(/\s+$/, ""), r += (r.length > 0 ? "\n" : "") + getCallstack(e)), 1 & e ? 4 & e || 2 & e ? err(r) : out(r) : 6 & e ? err(r) : out(r) }, _emscripten_log = (e, r, t) => { var n = formatString(r, t), o = UTF8ArrayToString(n); emscriptenLog(e, o) }, getHeapMax = () => 2147483648, growMemory = e => { var r = (e - wasmMemory.buffer.byteLength + 65535) / 65536 | 0; try { return wasmMemory.grow(r), updateMemoryViews(), 1 } catch (e) { } }, _emscripten_resize_heap = e => { var r = HEAPU8.length; e >>>= 0; var t = getHeapMax(); if (e > t) return !1; for (var n = 1; n <= 4; n *= 2) { var o = r * (1 + .2 / n); o = Math.min(o, e + 100663296); var a = Math.min(t, alignMemory(Math.max(e, o), 65536)); if (growMemory(a)) return !0 } return !1 }, ENV = {}, getExecutableName = () => thisProgram || "./this.program", getEnvStrings = () => { if (!getEnvStrings.strings) { var e = { 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", _: getExecutableName() }; for (var r in ENV) void 0 === ENV[r] ? delete e[r] : e[r] = ENV[r]; var t = []; for (var r in e) t.push(`${r}=${e[r]}`); getEnvStrings.strings = t } return getEnvStrings.strings }, stringToAscii = (e, r) => { for (var t = 0; t < e.length; ++t)HEAP8[r++] = e.charCodeAt(t); HEAP8[r] = 0 }, _environ_get = (e, r) => { var t = 0; return getEnvStrings().forEach(((n, o) => { var a = r + t; HEAPU32[e + 4 * o >> 2] = a, stringToAscii(n, a), t += n.length + 1 })), 0 }, _environ_sizes_get = (e, r) => { var t = getEnvStrings(); HEAPU32[e >> 2] = t.length; var n = 0; return t.forEach((e => n += e.length + 1)), HEAPU32[r >> 2] = n, 0 }; function _fd_close(e) { try { var r = SYSCALLS.getStreamFromFD(e); return FS.close(r), 0 } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return e.errno } } function _fd_fdstat_get(e, r) { try { var t = SYSCALLS.getStreamFromFD(e), n = t.tty ? 2 : FS.isDir(t.mode) ? 3 : FS.isLink(t.mode) ? 7 : 4; return HEAP8[r] = n, HEAP16[r + 2 >> 1] = 0, HEAP64[r + 8 >> 3] = BigInt(0), HEAP64[r + 16 >> 3] = BigInt(0), 0 } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return e.errno } } var doReadv = (e, r, t, n) => { for (var o = 0, a = 0; a < t; a++) { var s = HEAPU32[r >> 2], i = HEAPU32[r + 4 >> 2]; r += 8; var l = FS.read(e, HEAP8, s, i, n); if (l < 0) return -1; if (o += l, l < i) break; void 0 !== n && (n += l) } return o }; function _fd_read(e, r, t, n) { try { var o = SYSCALLS.getStreamFromFD(e), a = doReadv(o, r, t); return HEAPU32[n >> 2] = a, 0 } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return e.errno } } function _fd_seek(e, r, t, n) { r = bigintToI53Checked(r); try { if (isNaN(r)) return 61; var o = SYSCALLS.getStreamFromFD(e); return FS.llseek(o, r, t), HEAP64[n >> 3] = BigInt(o.position), o.getdents && 0 === r && 0 === t && (o.getdents = null), 0 } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return e.errno } } var doWritev = (e, r, t, n) => { for (var o = 0, a = 0; a < t; a++) { var s = HEAPU32[r >> 2], i = HEAPU32[r + 4 >> 2]; r += 8; var l = FS.write(e, HEAP8, s, i, n); if (l < 0) return -1; if (o += l, l < i) break; void 0 !== n && (n += l) } return o }; function _fd_write(e, r, t, n) { try { var o = SYSCALLS.getStreamFromFD(e), a = doWritev(o, r, t); return HEAPU32[n >> 2] = a, 0 } catch (e) { if (void 0 === FS || "ErrnoError" !== e.name) throw e; return e.errno } } var functionsInTableMap, uleb128Encode = (e, r) => { e < 128 ? r.push(e) : r.push(e % 128 | 128, e >> 7) }, sigToWasmTypes = e => { for (var r = { i: "i32", j: "i64", f: "f32", d: "f64", e: "externref", p: "i32" }, t = { parameters: [], results: "v" == e[0] ? [] : [r[e[0]]] }, n = 1; n < e.length; ++n)t.parameters.push(r[e[n]]); return t }, generateFuncType = (e, r) => { var t = e.slice(0, 1), n = e.slice(1), o = { i: 127, p: 127, j: 126, f: 125, d: 124, e: 111 }; r.push(96), uleb128Encode(n.length, r); for (var a = 0; a < n.length; ++a)r.push(o[n[a]]); "v" == t ? r.push(0) : r.push(1, o[t]) }, convertJsFunctionToWasm = (e, r) => { if ("function" == typeof WebAssembly.Function) return new WebAssembly.Function(sigToWasmTypes(r), e); var t = [1]; generateFuncType(r, t); var n = [0, 97, 115, 109, 1, 0, 0, 0, 1]; uleb128Encode(t.length, n), n.push(...t), n.push(2, 7, 1, 1, 101, 1, 102, 0, 0, 7, 5, 1, 1, 102, 0, 0); var o = new WebAssembly.Module(new Uint8Array(n)); return new WebAssembly.Instance(o, { e: { f: e } }).exports.f }, updateTableMap = (e, r) => { if (functionsInTableMap) for (var t = e; t < e + r; t++) { var n = getWasmTableEntry(t); n && functionsInTableMap.set(n, t) } }, getFunctionAddress = e => (functionsInTableMap || (functionsInTableMap = new WeakMap, updateTableMap(0, wasmTable.length)), functionsInTableMap.get(e) || 0), freeTableIndexes = [], getEmptyTableSlot = () => { if (freeTableIndexes.length) return freeTableIndexes.pop(); try { wasmTable.grow(1) } catch (e) { if (!(e instanceof RangeError)) throw e; throw "Unable to grow wasm table. Set ALLOW_TABLE_GROWTH." } return wasmTable.length - 1 }, setWasmTableEntry = (e, r) => wasmTable.set(e, r), addFunction = (e, r) => { var t = getFunctionAddress(e); if (t) return t; var n = getEmptyTableSlot(); try { setWasmTableEntry(n, e) } catch (t) { if (!(t instanceof TypeError)) throw t; var o = convertJsFunctionToWasm(e, r); setWasmTableEntry(n, o) } return functionsInTableMap.set(e, n), n }; FS.createPreloadedFile = FS_createPreloadedFile, FS.staticInit(), MEMFS.doesNotExistError = new FS.ErrnoError(44), MEMFS.doesNotExistError.stack = ""; var wasmExports, a = () => { }, wasmImports = { CreateDirectoryFetcher: a, DDN_ConvertElement: a, DDN_CreateDDNResult: a, DDN_CreateDDNResultItem: a, DDN_CreateParameters: a, DDN_CreateTargetRoiDefConditionFilter: a, DDN_CreateTaskAlgEntity: a, DDN_HasSection: a, DDN_ReadTaskSetting: a, DLR_ConvertElement: a, DLR_CreateBufferedCharacterItemSet: a, DLR_CreateParameters: a, DLR_CreateRecognizedTextLinesResult: a, DLR_CreateTargetRoiDefConditionFilter: a, DLR_CreateTaskAlgEntity: a, DLR_CreateTextLineResultItem: a, DLR_ReadTaskSetting: a, DMImage_GetDIB: a, DMImage_GetFormatFromHandle: a, DMImage_GetFormatFromStream: a, DMImage_GetOrientation: a, DeleteDirectoryFetcher: a, _Z22DM_GetNodeFromFormatID15DM_IMAGE_FORMAT: a, _ZN11DMImageNode9SetHandleEPvj: a, _ZN19LabelRecognizerWasm10getVersionEv: a, _ZN19LabelRecognizerWasm12DlrWasmClass15clearVerifyListEv: a, _ZN19LabelRecognizerWasm12DlrWasmClass22getDuplicateForgetTimeEv: a, _ZN19LabelRecognizerWasm12DlrWasmClass22setDuplicateForgetTimeEi: a, _ZN19LabelRecognizerWasm12DlrWasmClass25enableResultDeduplicationEb: a, _ZN19LabelRecognizerWasm12DlrWasmClass27getJvFromTextLineResultItemEPKN9dynamsoft3dlr19CTextLineResultItemEPKcb: a, _ZN19LabelRecognizerWasm12DlrWasmClass29enableResultCrossVerificationEb: a, _ZN19LabelRecognizerWasm12DlrWasmClassC1Ev: a, _ZN19LabelRecognizerWasm24getJvFromCharacterResultEPKN9dynamsoft3dlr16CCharacterResultE: a, _ZN19LabelRecognizerWasm26getJvBufferedCharacterItemEPKN9dynamsoft3dlr22CBufferedCharacterItemE: a, _ZN19LabelRecognizerWasm29getJvLocalizedTextLineElementEPKN9dynamsoft3dlr20intermediate_results25CLocalizedTextLineElementE: a, _ZN19LabelRecognizerWasm30getJvRecognizedTextLineElementEPKN9dynamsoft3dlr20intermediate_results26CRecognizedTextLineElementE: a, _ZN19LabelRecognizerWasm32getJvFromTextLineResultItem_JustEPKN9dynamsoft3dlr19CTextLineResultItemE: a, _ZN22DocumentNormalizerWasm10getVersionEv: a, _ZN22DocumentNormalizerWasm12DdnWasmClass15clearVerifyListEv: a, _ZN22DocumentNormalizerWasm12DdnWasmClass22getDuplicateForgetTimeEi: a, _ZN22DocumentNormalizerWasm12DdnWasmClass22setDuplicateForgetTimeEii: a, _ZN22DocumentNormalizerWasm12DdnWasmClass25enableResultDeduplicationEib: a, _ZN22DocumentNormalizerWasm12DdnWasmClass29enableResultCrossVerificationEib: a, _ZN22DocumentNormalizerWasm12DdnWasmClass31getJvFromDetectedQuadResultItemEPKN9dynamsoft3ddn23CDetectedQuadResultItemEPKcb: a, _ZN22DocumentNormalizerWasm12DdnWasmClass34getJvFromNormalizedImageResultItemEPKN9dynamsoft3ddn26CNormalizedImageResultItemEPKcb: a, _ZN22DocumentNormalizerWasm12DdnWasmClassC1Ev: a, _ZN22DocumentNormalizerWasm36getJvFromDetectedQuadResultItem_JustEPKN9dynamsoft3ddn23CDetectedQuadResultItemE: a, _ZN22DocumentNormalizerWasm39getJvFromNormalizedImageResultItem_JustEPKN9dynamsoft3ddn26CNormalizedImageResultItemE: a, _ZN9dynamsoft3dnn20CNeuralNetworkModule10GetVersionEv: a, _ZN9dynamsoft7utility14CUtilityModule10GetVersionEv: a, __assert_fail: ___assert_fail, __call_sighandler: ___call_sighandler, __cxa_throw: ___cxa_throw, __syscall__newselect: ___syscall__newselect, __syscall_chmod: ___syscall_chmod, __syscall_connect: ___syscall_connect, __syscall_fchmod: ___syscall_fchmod, __syscall_fcntl64: ___syscall_fcntl64, __syscall_fstat64: ___syscall_fstat64, __syscall_ftruncate64: ___syscall_ftruncate64, __syscall_getdents64: ___syscall_getdents64, __syscall_getuid32: ___syscall_getuid32, __syscall_ioctl: ___syscall_ioctl, __syscall_linkat: ___syscall_linkat, __syscall_lstat64: ___syscall_lstat64, __syscall_mkdirat: ___syscall_mkdirat, __syscall_newfstatat: ___syscall_newfstatat, __syscall_openat: ___syscall_openat, __syscall_readlinkat: ___syscall_readlinkat, __syscall_socket: ___syscall_socket, __syscall_stat64: ___syscall_stat64, __syscall_symlinkat: ___syscall_symlinkat, _abort_js: __abort_js, _emscripten_runtime_keepalive_clear: __emscripten_runtime_keepalive_clear, _gmtime_js: __gmtime_js, _localtime_js: __localtime_js, _setitimer_js: __setitimer_js, _tzset_js: __tzset_js, clock_time_get: _clock_time_get, emscripten_date_now: _emscripten_date_now, emscripten_log: _emscripten_log, emscripten_resize_heap: _emscripten_resize_heap, environ_get: _environ_get, environ_sizes_get: _environ_sizes_get, fd_close: _fd_close, fd_fdstat_get: _fd_fdstat_get, fd_read: _fd_read, fd_seek: _fd_seek, fd_write: _fd_write, proc_exit: _proc_exit }; createWasm(), Module.addFunction = addFunction; var stringToUTF8OnStack = e => { var r = lengthBytesUTF8(e) + 1, t = __emscripten_stack_alloc(r); return stringToUTF8(e, t, r), t }, loadDynamicLibrary = () => { }; function run() { runDependencies > 0 ? dependenciesFulfilled = run : (preRun(), runDependencies > 0 ? dependenciesFulfilled = run : (Module.calledRun = !0, ABORT || (initRuntime(), Module.UTF8ToString = UTF8ToString, wasmImports = wasmExports, _emscripten_bind_funcs(addFunction(((e, r, t) => stringToUTF8OnStack(self[UTF8ToString(e)][UTF8ToString(r)]()[UTF8ToString(t)]())), "iiii")), _emscripten_bind_funcs(addFunction(((e, r, t) => stringToUTF8OnStack((new (self[UTF8ToString(e)]))[UTF8ToString(r)](UTF8ToString(t)))), "iiii")), _emscripten_bind_funcs(addFunction(((e, r, t, n) => { self[UTF8ToString(e)](null, UTF8ToString(r).trim(), UTF8ToString(t), n) }), "viiii")), _emscripten_bind_funcs(addFunction(((e, r, t, n) => stringToUTF8OnStack(self[UTF8ToString(e)][UTF8ToString(r)][UTF8ToString(t)](UTF8ToString(n)) ? "" : self[UTF8ToString(e)][UTF8ToString(r)])), "iiiii")), Module.onRuntimeInitialized?.(), postRun()))) } run(); \ No newline at end of file diff --git a/dist/dynamsoft-capture-vision-std@1.4.21/dist/dynamsoft-barcode-reader-bundle.wasm b/dist/dynamsoft-capture-vision-std@1.4.21/dist/dynamsoft-barcode-reader-bundle.wasm new file mode 100644 index 0000000000000000000000000000000000000000..c0288ab8715b1f4e8ca692d1535296753c369d12 GIT binary patch literal 5340440 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%0AQn5!NAk|@h@c$T4h+eZG97 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Ⓢ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 z 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

DY4?DQivPrc2;K_1hwsiPHd&F(- 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 z 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

r8UypsJMQcX*3)1U={d zq>@6Yp>$4DjD)Er{DB+lg-D$zwP8j-w3~YKNdmpGzvBVznVn{br^^s$zW&8 zyE1}&_a9U8@}LU%ww4T}D4*sfi)Vb=qcFi89Raym^KHu3w`f!MOzZrfA)^JX`;P~j zVPggzRA&gpPB(0*z<)3d?dO_`qK%|95{DB?}mheb{wHS;7TeWOz=~uuD z?_wuKObB(sI9=M0nnPg%a1+iGRPLSeY;9AvOEsP(YCI9T0|5!+S?~)QPujG>_4}}* zQKT6=c*xIKrW<5K88$liP-kGjqXFaHM*nUT#K~4ugDxMGqQPJ|=!fe^He}2hQ-vG9<`{{!{BoZzzBpxG@P=t2iehx_(!sit$lm%4R4iQPp}uM%f8d6n!6I>d zKrd0wg)xPfAJB@~X{okwfxcqQJ!>wpSAd~4oIULk8n)TM1O>4;A|A_`TR*wt z&nGU&(Xd6TrgfzT$D{&B2oT;YATun{5zD|qW&?U3rCA?@Fb?N_A z53LIgX%wDaAtwxg8%XM4rH-ZSprIZD>Vf$@fcWf$)_M>oka!?!H!~!j&TOyayz)z~ z&upKdS+1FJ>K!9ts|S7}T7YZ(an`u2T_L3)*hOW0UAk+i20$VV#AKVIn~MP> zw)w27B0UDuU5%zu93ru2Q5i6pRQz&EH*v7H!+UVbm2N5s0=gp(R)c&{7O3plm0+%`zU&|%7ecj^f2J6#%S!E%ZKyx7IQ}C8F71=VY;=&9N}va^ zilc^5L!b~4=6<}LF^1wGBn2U9+tS{4*_DhZD6v(M7xFt$2hPw^`s`=PD-3kf*~h<( z)sd$8!|CycDN1g~rAaDBTLs9_h=uWV<`#rKw8?^P_$3?yAHak5M@jeGUmHb9yB3hR zs@VjNVaoDEJ|;7E3fnKkxiZqb@)}qPgHL(cK_qEm;7Jw76MfLfx47SQ?VZ7@EL4z{ zmf%B-Ar)yUPA=~UgDkE+Bt|*FWD#Mk)<>k2&%F*|A3tlFqs z4jfZ$hRd3ZGQ>yfM7_!jGf42Fs*s%cWXUlQI~=hi+FRncx7)zVh)iyxFVrFc!r=hZ zGrs`JgPOX2CDz0(I8_e(whia#+zZSfoBVKKV@*S>sV_-|xu`}!f8h@sVj7GTa!{9# z<|u;i13E%gQI9S4S&rI6T^?2>)*(Fpx)Y+RXEYafRV0;vCWud+4N5*mOU6}f+UYo! z%+Y3mD|kqWgAYut(6S#3&j@r+1WhDZnA}t}Hqr+8Yk-I~)7C}Y^ z)$>bVv|LGFE@ER3G?52Z1A@QYqp2XTF&KHOSQxiStCp^k=vdI8G{>thKd02$Hs>s{sXApap!>E!FIZ9TEm^Fd>cF zITc<+L95*cR(dUVDS34_q(D5@aDLU70u~~hO?^ZF8IjID0_brg%~cP%W%y}qEVsJ; z<|4^I_*Zc5BV6N_SUwj~^HWJ&LzvJ%4N@8U!=;{;G`%1@>0gcJ$FVKS8=7a{5#^D9 z1teNv+$4Yhm-jD_J-w3O&Yei;lwLCTQl%c<$Rj0ayMGa61@OBg}b_|e?4yk&nvy17c-5p%3A06qRC%$@uAB7aPROC_{6zUaX4@y%qtyP((dNr(fVw5aReXMl-sMLQhjtAYV-IRmuns{|*q(44 z(p|AX3zY-cWAG(f7nz$pZea3qiE}n&k;;Hz0p$1`jB;W>L_#N`ruw)ot1!yqt#AMt zN$*D|!+haO+(uX>v1N~@|3{Xj1l34?QQeU6f}zVr6VVdTPDN;kVx*lvxTuxL1?9xf zi-!7O;#;>Nv<5 zdR`67F|2q=<%FLm#;iUO@}_U`tu;NjV=0d(qO}@D>n+_H0|LIcyaP1qCFOV?LrUq*DM%-vLv27S&#)o3#B~~HIKg2$ky9L3)Ku_N`E+`5 ze_bU{J19=AsoNQ>BDhKGR*4n6n}!Ooz*yFV+mdeeI`L^`ZexGTcPC119E+G3)}`ie zCH~|ukf|(G&kq#`c!@kRA^sqN;bZ1}(PmC5-&aiSM+r^p>1Tepd;3`T_VMoR6W!Y* z-P_~qnC!w))%*0i?cr9Jqw7fGyqFWZp0rPnv#i4TrJq>|v%wI@+L)H^!A(%id?o!) z9D9?#jd>)jImCG&kOA3gj*7DphW)T&rxfr1e~F!oVYho ziF=_Ycl3iD2kOn26D25N{y+u6;X|d&R8HLPjXSrySu*rKl*(YSPBdSpGVi@7l=&!S z9;7Q#4owp^1LWKo^&$qYrKH~(MU>{v?t2!e4>$b%eUC0q|EAKsO|w7$)~8E9@!`ZU zmo)oGoW-aI_s6Kqcw`%!O}9G}$P(Lk<9weV@i^a0tKO*-=-?buric93_Gtp|`a|mz z)aHVSc^>EA`;STbF)c&as8=N|VcZ$CVp39O-Rns^ggY`F_^HlIDe1hFW;FuU!wmke zX0Sm`kosn&xc~^J&&a)E=c69@&7}e=Lr(LfqWMvJJV5*D16^o8_639X?;5o4|IEKS zw0FKBw2yvt4zxdZTL;>n>rT@DqN)7?kf$?01IVA{r-L8dd8Wc>8y+bPQ0htSfA0*C zfIDk|?)t)f0~C79>2agYWg58|4}wT>l+)koXYOcb+L#~vyp7kBV&U>z{dnC10o&=1 z#Fixq-N%bQj|bk$=14oq?+Y_zri6E-0FC3so#xEyr;TxFk3v;hxoqM*?Xhj1i32lo zfO#TU#r?YC;{qne`Js=f`#JQ2hhj28d^~++qWO_7Gn*`aZ49p>Dz~4%lO?Hl<_@|@ zwx4b#rdu-E3x`=iIQ^MK5HA5z9E{Di3pu9}i#Tx^#1qN$K_HqbVu*wUmVySS&&KJS`7WcNX_hV(cnost;bpDj#rLTXM>0cjG=^39cK>u-%ym{DQ;WJX1`sR2Ts72`m;k}r&ZUgjxL-6Q%xb`V`yISbJb zeLf)iHWh#3bN(rR6mim40M2f;EAovk4HF@qz;*WQ!ZVwP^_;$~`Ga3bR&n3}BeM@f zntT=b2Y@^)m`v)yGIPp(tY1Vp;>^Ph`+Mwv#4!9=8D=OCMg#1JUtR zkRIwfM9v;C$EZwJ4wDVh2V_!`5(*egiy}ZJolt;EbMyf3%iyb&JVRJ(Pnms(E`Pu_y zUZ#IS)w7eR%nKl6>CA98nto+=ju>&4FUDNO!UR*mDV2h`?v(GO$B*$+vI;%s$u5FdCM)z0A;MnS@(Bhfpz4pR_KdOOZ=?m%**$gK!EGvDC^n zfw&&>Qy~O%OFI9hPEK_aXrUc&syrx&Iw*ODTPeYto#eyW5=}!*37*mnmCZ$}YCOaJ z%|`(=$EPZ7U@M18*Vc=2zH~>HnKdC|GdsFQ`lC_Bo1LR~wH)a8kp04sp)|p_oY0!T zhaqB3az*=WX^v<~i}^qo3B8Bk2rdQu4f8jMlwi}cdiDnrs4Rz^=K7gvDspo+uK3KF< zuym637v{+gfD_%=l>b5?9B@wZI@YnpWaVaonH>aF%{kg`edq$TXNVWi(SpmVIh0L9n{g!nX47*^=08{)Q#X^ znNsUe`lVrJ?=nWE4?C(yCGC|Xs!QcYco#pOy(!z9?Fz7Lpt)e$t0)~++bPOJun#n( z2#aa$d(oR>8f|oyZFFZu(L{%jcOtWAn@&$y!U!BBTOQ3x&BB(gM9;IZ8j$XViuSQKyQLq_F8uR0d2CsqutJWLOl< zf6cOymDBIU($Sggt~rUyAzbhEM%rjP*k0DEXcLu<9VwtwB-3y`e~0(Ong;@B6MQn8 zD8MiwFc{4)8Y?quRHy3J66dCUwy&z$`N}+u*%Tv%ZiT(8 zba4u5=8ZfN%U{Lzu0CoD(K!9kz5}!h!8KWV3#P&|Pc^{^bx9yIzK@FUqJ}JGcB4F{ z5zKsl{>~Zc|JgpnTtVcK$dSfFVvy9n&O*wl&9`1L(+9P7kejUqwie0l;MBDUYA~qP z#~j_q86!~}tvzZzVQ=}?0V5ohD6--41S8+Ppy_VwEkN`6wV+r}A&ISLhHMnlsS91W z_HN^3_!^jHISbqFV`YeBPJppeUbsa=C^X!*9D_8<&^tkG1=d;wsKHORu8I4WtGpT= zRwZIl`gMv=`;e5LtdU&-Dp|gHpgbt|)K3e{7LZ8Fdxr`-ZX>$?RY!!)P1 zYDS-?uU1Dx>N^3r-Rg9j^Zl$(*6I0rE0q(}#ZCngjS3a;5k@}&DNIo_Eqd=x#-Qez z0d>=ufrY9C{FT`e+agqgwVdA;ixu&F%+J)Q$Rbxc*d9OVTAbLn+9*cNEfU4(097bY zL=|hbAx$&?IJQCs?p%OxrHZ#vhY+)sHc$y?>ykn26|Py#C;(_P>T_X62}d-FHum&_ zrZan}shBx}IXb1XcbDQ`Gpj>7pd!p}zb6%pdAp|{?rb-HyVzcsy53$8SfU^hqBfFg zAP~L?2xBjS2=0W?CH|?5&U8#by&gHj{S4&@Hi;E-1pI&m2v{RkK9+T*2oOnHs^^m; zHUcH>Tho`o=f{#Fgr_D&m|!tminykD_lr(aL|v0qq4Zvq7=eP2x%Yx{#3`^ws$e~# zEBx=}i1aZ-p3aDf=?~1Vq)5b0Y< z51bn_A2p@{L3&UF+AEk7E2+Rs5Gy4?EEA^6#YPguN?KzQ1nBep5=1sfg3y)==8Pl= zH(P>m9SMTKfjtrgo0V+a;YK*F7m^^(3KGOXkRTZ1(+Ch=e83II3lOdL&sc!aZn7Tk z@21PCe=2R>JTP~`d33lQ$7 z7a-<9^Z5mcAs7@yfw{0mfS{d%<*K;?gnc2-eaNjc0b&TQxGO+Nc%Daqm?PE9D?p@f zv6d8r{d@uh!0c&FSAg)%=oKJ_x&nl}cArmxSc3SF0fE#lJ4Jw?`@P(VAJ5*D*#d-$ z;_St4Q67T5;sT(e7riNRW?;|q`~pPE2+R^7hJL03#K36<2;=1E6CfZkrw9-mAvI8{ z7a>51ph-ZmrDPrff&iXf0b-dKAXfft1qe0P3lL`&{K1P5AndDox#Uv?h%eZpQhf2R zCqS(DDFg`PWL{8!*x19=cLfNs8HE60cp_e$fx|U`OOI@IssJ(55g>daiLsJJAz}<| znS1d9gdx;VAV3f&;3pIy5TCjNgfHgD5g<;}*I5F@*y#j_`FcB7fCv?6BJ~ImYA8wn zx&lN2ji0#y@!2q={-+2KMK6A40))uRY$l$k6xI?G31))RaG2<4#G8(#-#m}+#hdBj z$&zPn$6P}S88ND6bU~?2;0$9+rN)O*Pye!l%1<95=P%UQ6KR?)0EPl(*ivb3y}XLH z01*UbE)u&KR|Gr~A~&52%DK(J>> z%p(-IbSUz>=Mcd{*b%?b&xQ$8Nywj8`er$vOTXGwfGunw*UI@EE}wRa^KE*eM@UX! zK!3isHc}oW^pqn2j{G{8PN9mIvTWte9Q}E{ZQa4Mne6SMP*%g2g-|H(SEMKvIHYC4 zEmCPjMxr#%|73yYu&RrZf>n!c(hvxFL1W;Zu7lm?4F|5VLy^{L%dB~_(%v9lZzN2H z$<{Qiw+xD=4D^G53o}}6$~CT&od{82gEFc>LJ3izZI%mh*aTY&oS*KVx+MMQwXH^v z&W!@`+(jk$78@iA0%wARTowjMZ8cj>M}s&==!HMg$XEd;OZVO{#Dqk%JCYnWuz7TU zCV}XDc?(-DHR#!<1||B!qcJiYCAd5xV9SmSO~K)iG!~M`^;ql@vo2%VWQ+>yG9t7Y z56d$25h_Ddg>W1^EOHprG-I+-k7<#5#^$pw;;)DkrL5O#%9w9Yrbez|Ayq&hum!&hn zO!%a^wkswZbp(y0@(~1vX)M%bw%gPaz7eBS=o58ntuW2z*0YiMDICP}1(t*OFFu4d~lKGaMW<&%y{fVMtr8y?iE7F4>Td^|v* zYTBX4`f}~+><>2kaw5Ft|;)B_^^io%ioQ#@n?W)1trlUBeQ5T_rEEENi z|EP|93@ssVr@%&0;885Vvx*c^Hu?$v8d;wd$S7xlphjZK5nS{HNHD_uv1z|`e}tZjr_XPQt69fEvObf9MW}IMf4%hX4b6F=4(gA4R4=YD@r_{)~UnK zUcw~0Md@E)ZI-P?t|3fo6j9i&Z)EsH(6chQeG<$9_53CEmtl;fKSBwnSxcM&VioX} z{3^ziivTcYqS7R~$sz5+BaPFeEf4{}(^kR}TVdqR%YYaZnL;_UR+gZSwUxqDr&O;7FwoH9n|R>D3Zn}uf4jb27c0)__iiOKPj}jDee6Jx z9r}JceDOBSC#)QUr>-9O;FuYUU(X)#c{)_Z0?4Pfoc%sGYEL`DMF*y9|2n-oxGCAU zE{|KdQwtpdh^5sA*Mw+1s9E-ctNIR z7Pq3$1H)pB54*ldI+ay1I`fmUD#Yu5L00AHkHe~{z!%G^JhHY`KP{`Gf*9@}hgCWK zC#PpsyaPyKg{VsFZ*xJ~TrtPszE<284pR8gG8(7)ganqm3A*ScJ7#aDabgM9X`23@ zt4UY9h+V_HLCtGcXvR&UY#_gWHcZJmoKFdjOa`WAOHprJjW5Zt5$2xDIIJj_F=nMP z%l)>7oc^`738r@-?61lORW=lKn|9MdNl>j~j>yG^b0~*q$pV(V0WHqNm7*%vI5QuW z-D14h3C$~L%J8^7CKwXCWqV&?gft7nN1iX*qOSilFo01(}7Yc8wq)kFiwKuEbv5E{bD!l#rvC~gKv z8_hqNwc%y#L>qj{e9e3mN-Gl)Sdw*zm7N0=LBl9O)j)zO7-%ubK&t?b)i0MH#%ux7 zO&3Nw^;$5(-9<2B!>z%nDj2aF++d^te}zX4w=WE%fdHd{E{sB1fS@`*j5vNoadiwp z1GH~3%@K?=bOA<~+Wk>f9T;^=I|W84KW&q%r>ZtFw59+M7mlOBM}j?ddBlQhR6A^u zlP|)9H4$WQ(G&~V*(&X&MoDU6IIyT|9s+U;LMFnl)-qJG*e;a^7FCY>K;w1%TWm@Y z+!!F3cLQ$;fZ=N5u;Furwu;dqwv3-BYidAT#Sh1zhC|w-1)zB0tYp~k5qP_I`6H@+ zgt`}r6V%F@_7QTRuH784UST&k<56S^ zEr7?885Tyt>l6_FF#P?71+gu-?b6MFgAGG>5F}bnB23bcSBW{L;B1L4A^k3URMUT9 zarU^voJZ4ex#%t^Vc1K1L`k=Q6L zffdCVs3?sus{!_rVC;~4X!d1qqBmP?!1g71AC-kAWR+C6|jgoq<(p_lS!-~U}5R_>FL8!1XHyg_Gm&?W_tyTa$wF-hn8b4G-p5sY zpXDKjb9N+Whg%_aGfF2PLF}yld-cqYP;%MkOB5_cE$j#Nsir2O45>;T#V3fNrd3IA zjkTjx`zVOj7HSefeV9_42b;;_TPpI1pF~_5i;_uk6qDvy_C`C@JX#ms$}(;$x^>ZS za(gjYt>Ys~oBU;izu>E_L@LkkDxrjdiiBg*5cP0m#$Vo1C8bNaKr&(aOxMyKLQ;`0 zL|FT=oqy=HZ09Na7nu;vj2MA z69JyfMU|(ZN(bG*{n^MJu5>V4b_ctziTmM`(KRf;!;!X($f2VgV$9XPwA#j5KaANk{!HGH3)|i zA>Q=cwBQZoD}I$$^P&~*@ZHt0ctxP@*$!+dg)xG z)@w$xMfcBb@4*Z$PZ zZC)TO00_&AAzrQ_KA0`v6zSVheOhxosiG0pGk+Ns%2-j9vBH&N_1SFqfO7YeMfpQkvX42-*Y(B94w}ShYo-iHf$- zxe%F0K{xCPI;*dBf`d;dml70riCijVR;hfgQqd1C$`-emgrY}%>QcVJqJTmeH66pH zf~I8&iJqS=n`xo|TlnC3*;7af=rf%Ap*XM8C}&$EN9d?#V@((ATr$*#i2e zAIda~^xsjAyUTx`+q^fkM_y z&Z9eaNghSuSd$!1H2NMGR$7~VwBl+Mth^T$ z6=PpZp)kQf0w!JqCbF+`p&Po}8ol!`-ko2oBOTSOZb8hexmgr>;gm!KxT5uKugq;H z^ozi0);C11twdQWdPDD7SVn2P$cbzbQZk_qhp@<25(e0WK7&Kf!fsuVRzH7k<@Inl z+AAxRo=%vwT#un`mmshIPHaBEB>lQ4)R@(KUx@Rh2KKD_%$7SPG5vsc$+E}FuIShl zo+C`6N09u13>L~iO%#md4h1Y=1+l~hcQM$*`hkzWlM%lW^gAN^n>}ZUAnZP)$>Oie zIi~}RvK3rqFj7WX2<6p)@1w*C)81zx`c&&F@M&h223B!dy*cpuwnY_*>XGT zen#LZSoPVMY&9qgund@tqrgvv$e=)lCYmJ|5eiDChH=M$%YLCj<`(u21nSTQ`^viI zF|5>?m&MIz8CT*z2Zqkjupczc78$jL9bY7dLo3L9-;$N3eNNWd_4h27%H3HISp)~2 zs(Oe(saiCLZPDyqOowf`9A@d9wOsn8MZ=|~rI^p2(lb0Zrz7Tc0)>$}owOqmLuL%& zQz9GZ`3ZqOLhS}>7F8Gu)KYLB6HEF}pssM$7O|tSh@rrMOrv?nebO1rpV8}m|i52qy zx$fLxE{3nWw|qVL?{toqpzR5-(asEOKQtT? zY92BPFe#`YO%1J6NX;OBbnioe;{+8QPh zvCIk(!48ZBO0`Bbm{&qtG0!4K_E>(1LEv!?K?o}{IxAr8NIRt&ZS(yKu$N8 z-CpNUqfTq(jl7+|@9&cQJ>~R2qk=Lel=y0tQFahI86`wNvq&p4w-zUj>!^15bEVkX zIiFhuHui;5_xMt!+pq8eaYC;54a8Z#Oan_|emKT!5*!k;=84XG;*Md_hD+{RE(v#N zfmUAcbgH}3Q_(6Dp5^932c;E7$0y;wl>V)`23cehCSjxrzK`Jxfmpav|Tq(2yK zzNG^+waKJudBYgctOhy72xxgF^y{BXf)<8E03m2`#Q{fv;3qX`wTOV?LHjR0v$`Us z6hK%*g}%qTAWd4`=+Kc;j`A(hMgX36mVJDk22bfdLqtA$e~CyXL@xuiR+o&iiquzy zT_en#V!3foK(`wx86LuAoEVErl{-xdX~PsaJxOm@lo@+RHI5EgZe2r2Pb$EWCXIsK zjVsa|ck7~w3!({sx9);y9c993Dg0V`Y|KK4Db8eU5j3A^s!o;j08o@lm_{e}5{6M~ zVcqZNet)=sn0qO9mHsIAkJ|k>E`R3sM=5wdF&?YomQg&|XdYFb%K4;l1(TnOJrV&L zLXIh<+q#@-*ts8-Z|QK6EJ+9nW#u7WLHo6bo{O>SQSm7-Bx%l zp~F$clBFGV=B?OM8p}dC-0WlAgh7v$o4@2oJAM^}CXyi@=tF(c!JAxnjhJS_-PmJy zh@c4(M3cF8YRlzb<;B$hfQ8d|h1X#tBMjqS{7>e8eDi zBmK7)El31;ln|Jf#kC_v41!#7{+`w=9)0W}H2RCJHHS4Bq_pOQTYYNLyog-JjI@qL z6VV@+0pUn^ai3nOSG;)0zfiYU(`oBXy3c&*c9xs(7F{Isu9*;zr`$-!PZ-i$s zQkZBg(m&h)=viG%U31zFLk?}te9QU1kKnlV+c#c{b5++oiyun5*JVK8Kt~()G3s9; z2DRP1Z-{J1V$rL2uo_JhL)BWEKG`?VH)er3fw(Lo@OZdB9j-@Z2p||%IX_yG%?U!B zJ`%`0Apt!-c(z2JVROtL#Ugj4b=bUp+SqQczy;7Uhx40`2QKKz0(UtPU-!dIviJpRMa%Dg3*d*Nwj9kP2@2l-LB^@GYhnZupo1-a>TD*IDa`jd^81dlGm> zIU{zXf|lEzN?O64XmXKXg*yM1QrrHHVi);4id*dOC~t|sQ-Rn&sl(cavy$CXP=U6T z`#*R} zzjyq-eox$5|# zBbM^y=XL*COZl|D{lDI?lq28KSAX$W`u*ZT{r=$D3cvR}to!@kt2~dtOKtd?<@tcH zGJn#(z4M34v-1mjd#C;WskP+2mgoN8QqBW2YR~u2<>yEG`E$q5ZY%aZ|EP+N+^%e& z{h}3KFGyLS8Mf&oA_g46;1mO{lzReV ziWpc6sI}2j$dAr@j4aBiKVZ*G6s$MfvOX!g5OA(g017zl`~b^RpI>Y(TT>FD*Ym)_ zK&;9bUgC)e8IiS65l7Ifu~x%^$27%4?&9ge9wSIuWkduJWqOqU4`bI$$DKC(T%eTeEGu(kdM?q;+;S`+e(T9~1UMkj404m}u82)e*wnDZ%z$bUtaN5H*(dm+*e6ZKxFn(dn7(2; zKB_C@hx(jq)+CSNQGj8>?w{cP*>L|9_t-!z{c-LIf^7FkxIYo@k8(e)p+x;I7OhVc z*m?f2B+C`Ugi}NMjLu5*Zv$6JQLB^P35+bCi<7yFCOu*ItCPK?Kc-@5D&1lWzSF+k zPmZU;mk;peGvUj7Nk679kMw*QI8*!ZVKO`$K75o9Pb%~A%67myjV&&=kjr5eL+H09 zl}<=$&7y(wFvFnA!7!Nhv{?cr18uJlHE^w$>JaAuof=cO*Cr|Qx)ol72A&s%w`^`P zZfpM4o_e%EYpsWm(BOf1AiSXt*Pn}pQa(=ap7)NZ;>h;BDQsf;xtU_S*^(#7~S zGw=?_{So>=FQkKjbzs88usr|qCC#TQ9dI%~@k&at zB3HPj&bqZEP7nL71y;mf^ypTus)g!UwI=S{==4-;FI9H>Rn5(!pE^_9x2NTyLPd&1 zm+nn^N-nysH^rAF|E2O5C8YPqJsCpLOOayJTVV}CE{9BBq7-Cq1FUX?dQap27xXB*H zGv8aIi|0}4WqgWRPbh_F+B7B!$WSo-7--r>N=pN43_nqdc%fjBGV()l{+mzkX{Mhm znb^s5`UsmFZ4zoKi#4XuIK367$R>59NXqkM_#?!jZibY?*KwGy;E;ZDL$mo(73nL( zeZ?Hugw3DW5Y7`2>E#x^u}ybT%q%5fj@T*M}|zBG{LYndQi!l7dkz;t1nV0oOMXt$s{-Zw>l?LZPA?7z>{C+QclydgRw$4l`nCt>O}Q{M*eP5Dbj zKc^*FR8EC%RQr8JDpO75^`Cu7cEDNHmeVgIpOU+t-o!fzy)?wufp9E=MdJSzv)k!g zifJfzzZDthKcvV+WmrQ>6s3Z?-;+_NlNl&Z(?YA2Tw?+RR>Ro%4w?-Pg?AI z9&Bcmg?vWjl>#<#SqeAAWw^~s1Z{xfkl#BEug0~LI80C($oVi=d9pTI1luKbNTXm}l6P$DUl>w%ZX7Q-vhHE#f8qIC+ zdQWs1z%bJu9??E3&eDjO&*-BptM@WUs63s4XsI={I5gJZs}mw{sN=%IjB|o84ZKi- zr5ng$9DF)V25i2^B(O9Tka&n*CN!le9H*7vXuT7Q5U0O0)KN29CLmy-0$r$pj>Put z(S<~s+FY)j%=Y|09r&v%uk(L+{Neum8Gh2=C^zp*yte5@q5Px&l&PW@h4Mm@9_6>8 zdioLLN6P76vk*qfq!Oci>03D(gYMY_x_oBmyW_2Nd{@lgCpa%&^x|UDOz-baJbL1k zR@o=QgR)0oSR)mppVPHzZXJAK-<*Q*8SqTMg0)e82<&IDtH?)w;yvEoy7_qAp(Da` z8$!lMT&(akrF&CQQMC0cHmlv1^pfcqIRF2cX zZFTTpj@edBEFbN*Kl{hyKZpTt@9pzA2jgeS5WDn|Mcj+^0Eui8!$7>)Nqm?|tfl^^ zp2Sa8JDouHUQA-C;r-T?7o5b(+B1oFEeA&bYbWt1Hk>kv4OGn6ViN0l{z?4#dkIoJ&tH{VtKr7Yz{oHevVhzF`lXNbqlekc`TuaC!U{K`1ajF<(qvWQo& za4O%p=NtFL=veS>C$1^}MmMRU{A+TCS0m@`HzE%4s-e{Be5V~St>O@`0c@bYP8=?1 z+_QieXKorqXyp8+>tuyT&(oxJ_yxG8KQqrCpvo&h9*XR02(Pbo78irlkgV2#J(kpc z9_1EJxxT(ThcvXj)PUP~l%5XPqj7%ZZ=?KMcfp)#lP9e2#qA~eQN|iut*&`lL8DnN zS%t@wO*k`h*{I+t_@1000u2YB{#(51#8g>-UWHbU@5APgKSvH;Dm+7Sb9!r% zep{QI7|Zm37@kj16j0cZ)pWWW9-8S#bO0W{%!rHlCGTcg&W|WM2;}?#JL9&@03@OB zNQ#_N%MbiOVa>n|dX828DNZO?bsU3SGy#`|^hXLME$+4iV_OqrYv*8ra+)Ix5h zR-ngZxH>DPUxZr$O6sy?kqS&vK0!lj>49-FtVrK80Ig4d0cF4cwx$*}^25GG4QtWT z^w78m4F)AUl4%+M=&tijlVMOA9PxK`KVt@JbjalB$vL6oUOe673oLY6muk&~wHf^J;YtY>sy60-m|f z!>B44VF&OqG8uz_7Y~fH9I&wn6{tp~e11uzlRp4T_lp1>LROfFJ{xEFQWgO79cCv& za63c5^LhyRppoXgZWC-l(RBhuTh|Gf-P83{NM5(Dmu7XnpRU*GItmt6Afdg9NOQVw zo;6pK5wx#+wBKihr=W!xQY(zi67vtP=ZAgY=L|IcSS(F|B_9aXXrHJglz@Kwah)}y zoo*4U+PdXIVx8MtjH~aQb*rDQ)YX-Kb;VN?dF;*U50;TSL)oG~%Ed}lPv6H%Te9D( z{r1^!(|#NLx)tOTH=~RL@ID+AU`w&BALCm133X(wMzvryq(AYj1{?H@)u@Tp(E7tl zV@L89tVRP?qtX3N8^gnqyv=~9EKF?e2UR8@d|X)lrUIvtwLq>~2=s4mg#@Dx3z@=F z+j=IpLEdHJOsY_M;(d$C*U~>(R`5-7erM&9Vu#2OP)hAJQdN?^6$*gOv*J%`;!i9q zOSYycWdIwoGdj+L)hc}spK#ol`6q3m9VTjO!-^PJLA(OxMDl1pTZsq6**;ESG*ijg zuGNCEMVy;t*Cg$XI(#j7!s>;QPjrO+R$^<3ohF+MY1q2q$BC?RnpS0 zFG-?f+jGqeRR;WTvtn^u_rivS8Kr71esZ;C$6Gkbr3uTb;OU4A{dFmVyu4CJ%H9w)MQ4zQ+niMdJIz zT4AoQr-F%s;hY|e@%!d_IJVujB{vlOnT(~fWi$0?35fu- z*#=*xT?|N&XiGwKRvzW*62vg|_k*%^%+3{IMef5Z@n+CbM)uqq`<(9kxIK9+Du#lA zmwIto@&|fTV2?C4^VtXGX!`XOPk}m#kMY&_rQgcK!=ciox`%$QEpdN@utEr>X}#|94(ED zXTl94pm>0gNs8ax)cd;JK~`Yw&xv7vtlQ(WL`XoynM|$%evv9wLauycaF2;p^vp;? zzCWGtDt_z3Mk&cWYV@krES6^hSbT5Cs0dW6`EVNHK^8Cvy->CYebE2iTSFf7Rlk`0 zzXZ8d?%3u)!^)`1!Hl{~SUjCejr@tU1v!QIuy|li?-q*H!lxrRpC`eK!E>-KfY;#; zSp_2G>H@?Z?mz?n=uPoA=M?)lJlj`{_^*Kom_VWxoq_kWS?17JK_bt#yEg;7-*dtr z4cW$kKn$JqkvU{aD5AkP0&Gz)-VR4gTtWPtLp20+&<=-cef%p6UgIz>!G_QKJZ9i3 zCCnaB6!YS=z!{Es#k(e!(EFZ_q(pQP)0|Hy6*5UEQ2$p_g=GF@tJzE%X~xtND9IU% z4D5drhASs?T0D?*z%M1AB8{h1PMz_Y;=wgSh0)uIY(PKz<|Z!$FMcv;6u*LZj~Dux zQ4J2K98O>zPI9%yI7J+cSc~M8%soun*a@%=2^!vKy@CKv-b;`q;k|?~I7)JK%XgJo z6nV)?Ul~V1BF3eb@a2M1MqyRqQs+FXaLGP#VIEGIj@?BtFS;6xZM-Y=zidM>X1HXLFAz=GemN~(2^&Z zH92TQ6YP>F*dlBv*Ew5U+HrKuR9z+)!} zpJM15bVL%8r5z%J#At`8D>kiT;X;Qfi0d=4^oFT5_5`Y}L5I^sAO>gzbxkeE7!Dc>!TpCOi~Jl!PUp$A^0 zfl{#))}!I#{3pU52 z!&sB=j+;W=aZ_lZyfFC~^~1@h^@#E+1(dh(l>srO!A*_2bt7>uBLjZTsl?qqLozBe zS?yy>-*1d=XWOCk+sBokM2R)J5-Mg|w4rk|Cc+IE7&iz>L<8pyfjjXNXd7M!M457b zE$xD)B#1zt8wQht5OtY7ni_;9GM>b=ggAn;N*XSx)KB=-blwGqN=rUuM-GXUWJ4Av zQm{;d%%$D9=2-#k67_UGxqR_+oijEF6zQDakf*n*i%cKLkJpGAa6d*rWvF7+hK<+u zV5AX~KprqD;*owhBcurl{5In7Jkl9h#B==+W{Mq171E zGH73>{f?#*q2VFJhJJ#*j<78jL+bZN0C&s-MuoU2+x@x-HMF- z{{)-fYr+Q1>IC#`7SC;h7ck!xKv;#afi7}SG$dNv6M)c~3qJX8Z8A{l(op6Kx#b4* z28*wyX%o(aY@!$pmWji8VC20vk@VnwP!5e3|bb?~#kZ|>#$=p^nf6?k8XyIXv2O%Ix+3i7|D zLG`>288K7&rnA6(Yg2EFe-#g(4C2%q#|{wYUp=$$G-2O@FTu*gq$>WH@cy_l_$VN2ZXK~R;9ol}7$P7DoUIU{Y@L9F}LRul?eTATe; z!BVFb51%>+)s9cROU{#zfIOY;f`jWC~-`H zF$&)F+-8sGTN3_9f@i+O)fbW#vS??qf>_s5V0H^DAZWZk8*a9tbN51?JYuKx27CQ) zVF^(V!DToEyVWb~_-M2C*kyp-ipb;ek+%3phu|_TVW=6t8RxdnM%6;2L}OfNT*jvv z$xCTM#36TGTZslmwaU(u)1}(6(WxHc<|>B!>;^3rb}AN0`ka);IF%)ql+4^$V9isc zK3)Sjyu~~KF9moUH>_ZKoywH-#|1~gHLiTQB)!)}=30A$2Sp&uEwZp#x-e-%p(u@E zr{9Aog01;fp@mfLRIhLV{j)6T`00f=$^mEpG_yOsd@=zS?$BmGsEapPb7vy*VC^vD z^-JER0B+%9GjQ7Q-b~UV(4ED#E$5dLU2C?>CEC3GJ$F>$PDQ zj3446Wm5r%G*`D3U+YyX`L0^Vd~tS^`bi%4VLw6lwb^rdwM;3z<8v?G#Bs#u+El*e zTXm@9wC3O$l&cHWK9^uih^fLUXNO_94TTY3|LLsKiIb!n04u{U#W75H(*tk?%visQ zWz^riV)ZqnqGhsgFq$7(KR6lO(UPnt5ADuPF4nE|4F-YMWQ$+TI3*;<>`|({HKc~z z-4GG<=+k4@maoQsI->|LV4BPrL4o{ zieiRE+L?PqrQ7x#xPS})d&l;NV`=5~hrZJ5Zv<&E>lm`>dj*9Tl+<9d_yqijX-GDa zM(Ny8+`?|YbE$7`d%00Sx?!q+4%h6a{)to**aQH`!9#mvPlU+xDOV_J8k|&4R^LvF z-)UF5JU%BeHfE&wYWlJA98NkJ5~idl)elpd8=kmf=M{I>*Z_n=4i=VUbQ6&CKI=VA z`@E@=uc2mk1Il;HLVu&eV^gl?hLTnj9dM#NE?xa$HADYM<3;mj`$o9QN`Ocb6=DLW zZtSlV27I}xRkOv}C*W1xQ`r3Qu_pgwn8T9ShWw{d!HDJ7anfey8K|BU82;=zVHnKd zY(oZbLua}_3izq<$I?e!KwQqLfCHAlxH601L>mYo5!|v@`4Bn!n%|{2_{iwIDpi5H zdz{w$$E`%T`tZ1vwc~tJ9_JHbB`F}mV&ycc)94&CR$P4UGL$nMsy;nVEA^|RP%$yi zBOXz7u@-k$j7~~3+MrA(zLj~UeyOhD_U1(* z3b2&)1pQcx%X(tC%7Sbb`#Mqz+C$Ltv8z`W%fCqk4Ap&VI>NijQ<$ zsb0nIhPA7gdA2qPqkt=QS3PY`1+I0=(eE^rOQ=rX_%EMWd_eLOjrOjM^~&aFmP?gV z(pZ6WUHCIZr4M}8Lc?H8Q z`Q2oNW?=*GhpCwZB=%%3Lv3S4wV`MxYyQR0^!t>w1O@X;ir>>}77EOI|0J4CDmqY4 z6bF#3EIx5Q6ru1ZU?G;tMc-*&%-X^U4dU9;OX$hNHIM9}%!WdPva&X+zCweHPC6N|uH3Y)AsBvr58InZ)4hA1I*5*3GIFulQZaten zxu{}%MR)GX86(%ba}k)Exf{m2m!zL+ayR8yHuesfU!%TgWuGyxO{Piww5igS-Y`|%WYyp$9vJ?A z&EYi~wHCECWVxLUV8V7j+pPW|xlB3qHY7)w@rx%KyaEj|CBTiNh#5|gsd`*pD;~dB zr$=2T`=U`Dp@EiE-@75p>c!X`#C}v~RxqK|wUrLQ^XTIt;#XgvClQ24w*8!xeaBYJ z;{Hl@zCQ1aJY%lWJP8d2eUEHBn`Ec`jkI@o<4yw8$SX=3>7SP^Qf@?BE30cRgaxEG zmCYL%jm-!n%E-G$MkYqpRk#{y65Sj<6~%LI3~iSi&V=O}7q$=e$pz)BlBrAX8^DA* zzaKqT2Y`t)uLv*>BHwYgu#EPNQeYXLpeLQ($WIv-6j2z&X%);-04TkhOIhs`J-AA# zOlL}O^7PpEC*w{tc8Q3z)$Ge#7*VI%;i%u;-0+V7gm1Z;=lOc_H26yLh03L zO1R4qN5O5rUvI44TyB0yzcx|%lLP&ldyvbfa`Vqky^=jiCPxdzFvSB+X0rXAzA08B za;Z>NtGwJ;>-P)W9%4SQ5>c_IbS?gbSOHBeAl!vSK;?BtGeAf<4Y$m&`FjXt9Y;f! z?ko17c+cWHZQ>&|o4g?ARTRH=Vt=6OUfL*+M)A=Iw(1}&%pXmwJHC+?f1768t2;kI z4ImIQy}B!u?N=!7mS`x7Pd2EN!;H=;{s$+$#p3fBaj)Fne-5danW;hh$qV+M_Tj(& z7yG}k?V&#Te^DJaNnx$4C(ZWK>Lm=dvt+FL_P1F6!^2g~raJ44R66b6&i=Y`(<@p3 z3|r=XA0*k((*@!|tJ}b0&UtD&?SD?D=#|CQWPKwy&7c*Q{aaz#UmOFpKn6-lK-H3u zl4eUT$_mNNgMYrpE($$mYn3g2;^+F)1OQ*%UwNELU#&tGu#TxPvVzfM9`ZYbahFZi zZ20AE4}T?~jIw%cJTM3R@D}MG#tvqz949s|p|yAR&!qeahNd#{G>gAoUhK&SuVV(G z2D~FSUzoN3bgEB)$;(slt^x*~8pHCRaE5=>dvltGUZ10@%bh zwP#>%rp9g;cngV}j5j|onBFOSr+Njcm=Q?ar;oKXNTPs-yBE_V?5eCA!f0y`|3A1Upk=#KRrHmTSnFGxzAU1KE4bH)O-iXCZ zm@aG^Od?3vdZx7~nUs7h$A!&fCJaZQ@C~5oZ8}!vH|SR($Ul)5?}tQx?v!f74A%AK zGKOJHiz9%)ysLb@P7BmL&S8eWTdV8bzIJfp!n2&Smcxr!)ZxiVqfhW?vuU3|Ja5?NMD51lbTSUFE>9;NH;K%J0;d`IPvb_r zJRNwp%G1Hc7U!2M=(+*7r2ED0+n;IQUJP8c!(7+0_tknuPGgjbxAvt&|)p#gQ7 z^j5X(5-%@^5&%~zM0##B5MI=u1*S&v5R34kWwl#2A1_;9y7vb%Fsb`!|7`oLjvQ1N z!))4n3-j}4+$07it)@SGt0zl2ex0IV&(xo3{zyC@=Qd+IO3@@;#Rny5qN<68FkY^! z8rO4PO7+gLB8lJR2CZYwgL-n5^~yoFj6B&avSrJ4E>Jl=2oK4#& zmM86E@&MUSA$&=_PrzK1)rerQ-jmJaw?q9W#>W=z!^iSLwE#}9TrI1GqX^p^Lip+X zPu>P)W=m*7P7A6(WXWI!tL*L4VOPz#%yFV>fNyZvowmQL2Pf^^kPOcXj8mF2rJh!n z5p}{1F#5?V(CAsr=s)!_55s3_ptQ# z>K;3W_i&XtIeQN5ZT8J}6$T$)E;=SXKJ2G#UIJ{|m)$tQ3Vu`lL51p>AHw5;fA4!~ zsXMdVd`EsT?ttOza4epWPau>Z-NGhibwPTDl@h$9AM+5O$PhGCy+7-Z7kAnDDq6NK zI{W5(V4@iPGu3*9AG4rf$_2kYGmQ$RUy9=-D5rU6Ro+?;w)^*nj<44&5@K1(X07^H^l4^jF-%TZny>q=kpN*fMYeG(+(mQFP4U ze;mnTM!GB5Zh*%_Hw~%XX_Tn4R zg}L6fMLc+d)wZ1h(?aHMLQIUCa6m{OD$Q*_95DzB^o`Oys4Z#j_m^*t8E{UVAS^E`}H=AZ2Rzw)ab8j z`{XihkF|SXI3VM3>>f>+>>jSNd(4k)_h=@xJ}2}Jeq|gY&?qPA8l|ywI9o+50P2PR zjAQ3e)Z!_#^Hf@V?Hot-P+Xf`Ad`jYdOgsu=QA(YLF6n{z}Lh?p9ddiP*Sf~1N2I| z@p66g3b>8r*-Sv03NQKRi~N)VkNVzUK{wmt2<39=CtgU&rSAGjKM+LBw{9C0`zX@0 zx2Vm!OWc-1%lzJ%h7aI-Li3=Vpv{K0N$G5gK90bT+`k0dw6KWD|Xf5+Hv0! z-y5XslBXNz^RG;}kGs?^(`EWvN4(h~%hF7NH<-rcE?}&UYGDg|07&QP7e^QRhWli` zn1&4kb1{P^6G1e2iwTf33^(|4NezjLSI?hW{oTvAqRmTnqe+rzvXNqq#WU-&xl(8n z2pgQmS%IgRaRM` z_FJkCpZ4E*jG& z>Q>1_u20};ud-QTwc5FJK~XIf@JK#KKZ=iyIfrcZ!pMV%mWK!Tr5eIk+!GE2nubXL zKe$17*Nzo&H{g*L-$lJ|Xg|iv^8t%X1b@v+T=gc&CIl62644TDabI`+XI3CGotHXdZKRvaqFc0N{l+|GOZh+w78 z%bsIw$FC)}|3lSMjSnGc^B!#QwhN+pt4IH{$ALjAZ~mKh4-j^;L9)co zLoUBGCU8Qw1FI`wQrTFaEMwGcTg^iTJ0uz{z&gVck2ZU@Jr9yq37F2eBCA0qTYrO#O^N)`dRfiNl5ZTbp|e~7>kdX|G&1HUDx0LQ8D^)Y(G#Kf0nsG@jri5 z;mu45YU6D;X*W7Qg%0SSaT`?e*{m;EX4PF^9td)bmye6TPL0iMEou}`G|1`=W>>HL z#j&{R2hacIu@8Pc!jtelzz8ff#fBw~08O1;L+mg>4T&2(S2B_e($6=5X||o7`6Czg z^XUJSgk1-U|JP(@vX`f6+DMz7RyyV&=SKBc+-|hNJ}8kbj~9{Zw^4m3xoCo&XEX@U zng?YTlHxJ40*;OMdNimtS76JqjVqMC+~|!y>JA@u{iwV6)x_`-ks*9Fw)kjl_-M?J zy!;y4>J1Yfv4AA3%TK2TM*QyG$Djd0Qp2??}|!{g|Gge2*?rp9Hlvf-n}kMhNj0QPMc`6E8j z`Rr7e`5SskgTmU4qtofMXsO9+wLE%FRuc2jWfW`_JN1yA0ASPF?8<6Bx$(U0O8K^Y1oumgaeoyqI zltuQ+w~BwgX3!L?l(3Xq{ok}(x|e{W(( z^nc~g?OABIPR#|Ew2l`9hTLRCy-K(z0){hNtxrxDtCt+erfeX?3z0HB<-~gSn-quP zy7cRP{L}Wtq4Wq}O~LSvQ_~=?vdeh{$_=HIR&B5;GQ^EwHY%2m-$DwOGUNfC@r#A9 z7kiNtKXP&7s60XxSRVOAjO&4b+GIN@BanyNJ+LyuUBHJ5!=u$I0dd44@|X)}>Ev)x zjs*#mVQ)Ne(UO$Kb(Gqg2TZs`@<4>s7UAq`4rNbUyS*|qU~kQ* zfVNqcsu%*u)GU6Tyj9>wKNAUoJMs1d%ZX?I!L{JrIjR;2kC89d@-Y$z!XJ1y;uftV?{-%Hw~=QThLWPOFM z={Rcv6Gr|jz?6#zm0=MQc@59eCk81l2|~XVQpKJ_XeiDaJl_l-Tn^1%JV98HXaXOW z_zwZKStbA9(bKBMw9q?!nlinE7HWxjP8SE5I|V5KJ8O)tY;pV%sKwukH$1vV9ADqI zg91YuTwbjn`M*vp9{5poIG-ZJ0fNZLE)oukb#Xc09=SfYyAm&$DvKqipMU6 z-919BPd3=H>KBO4;l1hp*eI4uJSMskW;AC9B!X}X&cN(9Zmz!hOS44WQFS9k3RA;s z4kzG{mTFyyA<2=~aJ)+q7=Nye4%KOIHR|y3?YQ7uH%x*5`XFEs02|2XF=z{QazM@} zGBND^p1JX5D1dO%kmzd`V4yP)$0icqDBkm9=IZ z9vOJ|g*9SMU=<_>HWvS5)6~x10D%t@BlqY9d$1YsMw4stJ@~yCiWh5>5^O0x&yIS? z0jR+yg+RH8TsOEC$22WToacE^(f*tfqOKQ@uc<2&o)ljk{t!pH_I=G_KcJTwB#>y-eddf)>xyXg*(uz!1-^*KNJ zmlc1vX&|m0*tc{t-|@jubP`P6NB6$b9B!_TEIQ+hYvJ?kRk?N$z_?58Fu66UYRG)#8`Q_9gMbI1ejSQN< z?`?{VP?DjUW?7bsa;s^kLI6z-V9sFPX_JaO^j-L(mT46skzkL(Y&@eE4Vn`;)cC3S zw5=U~rPW&7+Pwi*jz|Svo>>+`G^rI?SN!89fl@lFb!u>au^JasVTjb0rZB{^#?hm+ zx%eiKq;Gs!V>ymXyuh68emjOskl#e(~-YI&)rV!7~cxS zq0!U=)c#>PG|by2Iu_+9C@U1D)zC-~GJuF7{{=(VF6bytwDa5T1`$QKBaaU)57|5o z_*0PstKF~#&?xZu;45Z)!vTmnuvOwRLyp2o3kHj3ddR0+Ag^f49NfHoZ#V78%H0I_ zlBN++*mTR!@{Nk44^*YB3o;1lXf*K(1b6 zN=KRntRh8T{7xb)O0fjYiQt0^Vr)iKDu6|g+|Z8USE*4flCOk#su`(g)~6pC&GbVn zKdwd`7Wkb_Fmq-MpgS&zuhA^C;wk0#CKPUUz-M6~$X)#TCc*#z)t71gr3et>pc=R* zsb+*jw&Tnyk;es&KcNP6!{KsRGITl-w)4#*&_<_-*O9sK17@Z-j$zdrZ#EkZh(6mM zSj=RDE$}RZ^XnfqTR0W69=6lf3=b4@Uf611@G!u5rRS2Z!RoFq(*`s20?37hfmzt7 zlE$gNm4T_4si)|MSnl6wSH0rkWOdh92GuV&3bA56Hb0Oc;+LnWCUk3_nxX2A7HS&s zP{{DIXXJ@B;rqyqqI3ywTC7CMmgF!qT2hNRQ!tS*)MHI_U3`t2nBC*ZsaRo@Pc_^l z>J7pcTXA-hPewK)CXR4!R-1#vpmRBR7Cc(K#4cw(4l}F|GT=&Y&8oUQw*EAxPsXbI zzx3T_**mNRS>0WP*2j!K!T47F+C_`XM10kuP2f^PDlX=xoZ!Qr5;zBTq|xrK2^aXM z!Ng8mtroP*&!;2#9fJIz2FUOKM2nMMGqkLO{(kKJppB2*4|cYu0is>3Cft@@v848B zb*HkAvATs(OFmorJWw}qqn=!oR%X=pqC^caxM(WK2KcDj5s87#N9zwXVFL4_774j9 zg!8D5E*B!C)t2hfYpXv@ibJJONE9Lke;O5fyKPo&nJGTs!8TGQd?L3i##|A-A>+D+ zv*Z#B#}92*CHAq6s}2A7pPOWHH=@sZG$T0?d(2WfiCV?pOQ{wo$%?P6 z!NVj)K4n*h(3^g`>Y1{k0KDQqc{}Q$rR6uD#0oddZK&cZFe@yxxXXf}(T1Ia+FlVn zu7J3%a$t=NYPm*HjD(Jy5~ z+c#$_)F1{vmjb@_hsk>(FIHvxOc}Gu?GCYpRbs~gP++DA!XvNME}bqTTgwhkI$rz} z0)*G`#L5c-c;u_q;4_0Yl5F(Z2O?GVr933J46-V}6iSpjS^RXEF`s;-sfM45YQO-p zc7b~G-Og0cpDu-$GIfELD6vM5>a2d6(I%~Cm_;$6VR@1Ei)6Pzop=-;VE1|W5WgI~5fDLA+%xKy z#Kbq1&zbwQLOdJ3eTHozf<+>=p!7m0hn8#4-8q zNpRhn5%LHK7eiGYDv>Xz6Sf$sUkYhu$(-(~>ZY>!f$Dr3UIEE zBW0)f1RW03NHY;42o6Dn`^H_ZF0k_xEmrpF3rf1Y%K|SRAx??kM zt@fRj#n;yGqcKx9-^7)J0yHTF^>k#@&u*ri;?@ynQx8kK8agQpBA1F& zR0a@{+X`=O%=)PI%zBmdV*L7$LuGsy988skRZLJK$S#Opp1h8hj$2Gboewb#`S#5W z)kzM^PVcT&*s+pvd)Ql8;Va7Sx@Q(rU!KB_ds~2lMe&JBN5(TPJr+*NVPrEtYpJ`2S*R6 z>1M%~wSy3c;4owQe-uGjX7XB16s>Nzo3`?-<)yzus|`FwU`v4)c#F?1muaG#C^{2B zsX-SnhiN0G9Rcw|dR)f6@M2c$aUB#W7L0UrOh%=_DSgUR+jf>#v2__>{ z6WPr0B$8WP1vDO)@DF+n+Bb{+YpA>f8x@uEYbJuR^s zuS;Q^P{V8oreA|eV9b!aGh_rHTLnRqXft4O#knEK`V&Z>te$A|@onWY-ks#7WkJSk z06giHC&0QoJXt1t%+ms;15XZ8u&n2btOv;|1U+A^l%RKi!k{JS)f>hMkPI%UPvcAs zrF#57Whm+XPiY(UcwcL26s}dO(^g4{&$Y}80$l@E*b{JxwJ`=u>2ZQ{Q9+dv!2;b( ziHJ%VzI{w<2iQf>Y7j+c?Nm0)4lhu`Z-_BU4j2)eVq8rzE}5*6ETksZML|Qz?9r-n zQNFXj4AeEkQ@erbpfm4MOdfBSP^G{%sqI2^SCj)Dve1khVap7?l|o^RSPOqNiRrub z%$s;sY}+lbAG9TWBydn9f<84Wb$Wb(0&K+~Py)CLFr|V(Q)1bXVS`5uJ?bMM{u>if z1Kjt@aJjV&kCiJHGFH)5@ow1-+rd#IJP8D!w#Z9F(?Rp>6PMlI19 zBtxbyO)aP;tPMrA1fS%nTC##q$v@jy6{M`~6ISnCTnXfQjDFHHyH@*Q$JmTFWe+C6 zdje0rSqYp!N@5@nZJa%Dvpt z2VISFj9W410f@E}3OMR5Yq2BsDldXq#boj27Mw%9)1UWI=lJ!Q?ZrKom$ZFUMaOFn z6L*)uMI2937K@-*X;9FrAVMw!Q`fCQ0lF$|T0n7UOnGWrBloCp!Ln7cqjN=ME8)@Iwy6DOA3T}teM5eAgE zSa8vN2_B&N#y>~DV7cDCVwD(gKnMr=vNOCQH>m5G(+g|w1_Fap?57e75|A7 zLl;m|jF#9>)Ni{O4zQf0TP3&Py~Jbaf|^}2U?N+mRoalOd}Fe{3@3x?`4(XkVBOUF z{jqdH3mw6i0tck7wc$d#0x9rhcHolWsL(HD5f_At-4<^OZ-yhLa(ax`;BBA8Ai<>p zFwJA*SO0K23wm7HmNbP8N-`FNUhnS?rbQ66BWr}mEmtBU|{r}td zhCo92BvlPN138h-I-ETf!ST-vF3p3d0L+61e7Zr&qFWcvC#xe^9ugem07$l%{2(X+ znk8}&Oz7^IG)j6Y$-@IhWDNbYD8q7aIzuvLE%aE^fVzZ;XoGUH#>D-cJFoM@Qnj8{K{D zgb<&WyjG`gWQ;)`AeF&|4grdUI`fbBkEXSPYvnD{%!| zWgH7di5qU(omDPdhQ6&S)Q)$Y62KNI52MFY=E$}|N7NkZM&r?AQEyR>+=pjy7rdY3 z?uI1dgq;^bVIOY2IF}XqO58G~n|U=~7QeI^o_b2f?+pp6Fp?#nScq6{R8Y=Yyk2~H z&47z|_ZKm`)C>Kn?tFY>@eCXnp3wUQfxD4M`qW7EnwPZ8Kmp#k5wpNHec`lUF-j(Y z3vAQBfNfx#ydsaC-^AOfH)(=7Pc9iGPJ98;(F?-KGscZmI^|S!{IuGOk_9(mTm61| zjpR26xQ0Czi6XYy29|&&-UXvH{9jG896wG5p}NC^Ow*PCU4v(_2~w2Xu_-1!QJ0yF;a#8Z}J(mtpYf9qcg z>nI~VL^?1LFuXUL=IL$et&LwqHj$`5MIfd-2n%{87r;`%EqP1A|NMtZ=h$Jgy`N3X z{830k$43$Sp7vAdE;GdieLub!qO_WyIxxWR{1AQ3V{z`muk=2WhbYf^+z>g&o8;upcihHKWKXSIlQ~-&8c{zV(QCT#Vv+tuyucDGJjB80#cgvs1 zE+wj&Z%PYFdjGx%DgMz=I@1Xl%bM5>BAXc|vp<)Hj58Qvwmsi2RImRlk;-19YL6uO z7a#9Sx#Aq0F^-T)B@0j)D1wK}lLU-pvzLy6xe(tl>Ui-tsa;$!GU*m#MyyX4f4a(^ zu93TvRetn!j0Kq=tCTE~okQ$xQC}3b(hB?Zae|8mm0drG7I*1Q0@2UFC_Bov+oXtk zuP*6y8x|VWC3Ss^-$TQIh&5yow>c1b39)F0=30)NwbTMnJ397J2j)oftw$%5{;B#A zHmcu;QmEk9Zw^my^=h1>OCruMl=K{y%!Ym+|<2?KvcUr&cH@` z&wC7*^vu+zz7yH(Q&BWG`kvk<9=&@@YoWJ9W2!!PRQ-~vKpS!3!;a?2RD)aFZMC@c z{(eG32`tvpYuvoVZvXI1=Ehq0J*-v4e&Gwa866ev&`xf-ggtILjuay>W6)LNdvXUD z0^`&I1k`OTctb$!dy?PF%5l042UsRR__!igjI`SYdl4#Wk{{nZKMsTm!{r)N;S0S% z(ir+E*Ftfv>}1$scpW<|ekW|lZONi6aU)8@;*M!}ni?p|<7E&UN@H=V)aP#56KK2Y z;gYH1p-?shejExBVeMp?!`hiGdDBusdZczNW8s=G8h^ZM_mORCBBGe=Gf+0{Ck?Yo zEx{y{;;yI!@dx@_d}}KO9wrPv;XfXj9z}}ZZP~D7w$q!dTW{FePv~yDx;?einU05- z!UqBO0ldBoYCOc*=Z2{RTIjz&EuDO+Rv)5NQv_Ye0)K;SKa^h9RSm zQ>!Url!&$I)-)Wbg{dCW4Sff0j3S}}UHYK~t6ydkBJF)zQrRl5+7x*#f;hIQ2xi!(r7 zFwSfCp;#}AjAW<(o3tK^>d|(QSkI~EQ(-7a*TYa$&#-wczxp$ojjz!>lL_(og%FWx z`w%pgb2#!LF)TD|SPQ0y-VYQ6C4hFe7=|!o(%OT7KXhB{mAUIt#0ne|lu%o|iq#P& zFK}pjkA+Bf?L`D&8pqTzO}(a-xePU#i<&fr10&PuZV2yw_)i(l7~G~ESmJT#L4?bE zdQ>$(V^Y-@ywe)hB;D|&j!c8TV)jO0-_dg0@xIdRz2-dh0%NdP5|kv+n4YZolU4F~ zl^`ue?l$`{`ablED_cCEt$-%K3SS*B?%Awqj8o_p_TP%Cd^r2bJd|7pKG*B0#P>PU z92o~nDD%Cn7fQ-ZLGpW-5j|$XBn!XY?hgF-(}0#OSEzX)OZY@+MR$Lj{BVLAJWubr z2CcX9I&6a1A=!U}Vx)I;L@oCn>$2S&718^nsLzFMNcgG|Bs@$}8D(gTFw z=a4yJwM{8Sgpwl<_bqvd2v%ZKBuVuc5BwwOKUzp2`2`;X9Hof={wGP-e&wJ&%4I{AE_>=61$nw7NuyHk)NScOmX^|76ubxxRnsz)n>{QcovLu0(aM~@#weA*KqSmV1NOXUrOpwpeaXzhx_lpp&@O1kDetFz zIF=VEABp9|l*up<096*dHzPzmI5ZKJXKTF7m-&{vx+ zpzSO9h~2_WzA^c{gfqzQhfD}SCd+^yJ*G!^8y?k_S0C{elfu^@OAmsuI}Tw}Jgb6? z0oE}d6&4F)KD{T?iL;(1`oe7bpkGeApl>F+Ys=(<#Qz)3C5Xg(e9vI~EqXxi!0`j* z_{0{RQG(SxXTt z7hF{C9oG2Z2(lhC+gywo8Yh6~zykDk$3-5=y0_s8Eh z?2)0dx~_w(G~Vtdi?uCj95B`0RnlpyT4})j!1k4ao3{h()tLYfGB@I18fl$(POY05 z4yf(|4+*B!XaQGjKTPBg-9DhFmT`4wu?O5?B`SiED{jr2z2enU(nEwox-UWHs7+rZhXVgVr30}5As3WxV3*Zo|V zaeacTg1z=}U9R7_8CP(9jOz(p?>sqh&f@QTi|My30;p8kqbOi3O$m#DoD&{`Opq>t z1KAD!-7T({(XJkFl8O*6E55$wKuopyyW8Fchiq5RuG(3iK$gAhIpuk#e5l^8mY0pG zwc!9VZL{ZChmu2T!Y$6d;uZ_a<+A#gOfzH~w@55hzqPWMquPn$k67~~aV3e0_zV0c zf^8(j{rH*RtWaWYY2hN6>vSYXHu%7y_`VfORb_D>ydHr63|J6wO672b7Gc1_iwiTg zLm1|?>B8Pu&upA|TmFmL2h&@5Z}*wt6V4JKGTk3!vP_;ENVVWFiNP5pi&C4um) za^294>d11fir^%^aj+b`8AA_3mcin$*J;)1%`jD&ypQ+SNsDr_#SChx|AT_40WJC#ep3&{dN9( zwoWzazkUaY-wf94_?x_3SDszI{!@snvfA^`3q9Bk$z$@bq~uP3RIMVN!mg60k{ekbbzM^o6wA9+*j1cl!C+e#(~GByBu0O_Nfjkd80b z_noxy5WjSHL01Iv3wj!pHXhVHRv@3#J(4y)!&SA3x%!^_cvrl8r>^vIR!?Ie zU*>D|@g>zlA76|$tB;5D>}lDZ)$?b>KC*J8KDOy2?mBWSX8OC^f1l?t7Z~x$&fCq5 z&%T+os8_tX%J}B%jp`2)`3hNY4+CK;Zc)5a+gT$)-%H|B6m#JjfGXMNZ*WnZ&}%*O zB#@a|3}&m)h*}%fLK($^NJj~}5DWaR#e$St-U4YQ8uV*`GyXj3X4rIid9@AK6i^@B zBTB4%#=^0;)0;84gz-yQvJw-XpmL(ixf6J#45wfQnDU5ZyjL(UqV-DI8K3wMk%1 zX*_e8sxpQWvR~^(6<0$$E<#$YeP2~QN|*<{oe!rZAChUsO!?Kd=Vezh#S!_%*-Qfb zMK17Hr!~XkC<*m6Q;1{5OgAJF3GdJyL?WxTVZvBE=hoUROqivjzJe15d!Xx5wJ(QX zO%)$UNp_`D3V99xCkI`{Dmu%XV2SwMF}Ia;)=&JEga~-Fc!Pv+8_wgOFjNAxC8^ib zpE1eL4l9Nc(J_1(z9h`M!{yr8qC$7Ab~MRQ9Wy+O>5$5BfNjHd|DfL$;vMz1>Uw*) z35+Af3e(Z5bvPO@F8(AZaBvBSkCG;^(Nlp@@mcmSSJ`oF4vf6Zh>m?+wuZ>&=EtGv zZ_18>cQI7t!U}$XPT|K%B>}>s{oiK)7Vn)@rHj8}{RzfmorL_4w>>l3$aJ0RIBe?8iR=&F-{RNF`fr3Sx5)V zrMDCOCDuTYnUq+m#QtP_aDqNTk2>Ls8>L#k4GBe4vQywVa-ZV!5_vQJ&rH|`yISGh z*`@5hW&@MBTYdBt`qvpdH8o&VH9sus&i+7NIn+Zq*)C45Td4$;qRrw?a^Y*_{KF~d z(RL{d8Yft~jbGS56Cp>EWc?#4{+1b{uYz^_fH--HcJl%etK&+=1Y|SnRrAxMEmxR(4TQfFpsFqDy zvvZ04CuG;u7guhD;$6CGYj#yAy?tx;cKAXRWma+~)NS`}uu7N4V0E0f)lzMlu~Rfj ztMr2zTdg1JcX)ezu+}qnO1bt5X%nl;)t6{1DhBQqTH2DZDLXU53_j|h>$nL|GtWyNp$YV3O}UbEwuXo?SofChpPun1 z)SY!o4F2QSg!2J~IZ~2OP^fjYTtmcpcS`EW@@lOxdpUKFYsKwM)b@36dBYpN^yYVx zHtfcDCWo+q=%I;>*9eXv_x%Y_gU8iB&Ex8mU!8vUOZU6q=L=Cvm&!=B{pM@RaYD|# zqpQAgmSWHpDof3Rn~&u-#<*mRamg6tk}-x-#2DW*#<*mR@l#`rOU4+Nj4^)C7~_&L z#!rngE*WE762{OyJg*M3hQt~rORvvL*qnY|_KdEG@27R`ljU4j`KO|2qR1F5nkX^| zk)B>)6i=NY{UXXCWDo3;1;gJ05u8I3Pqvg3nLsCrg|E<`7JoojhlVhjwV|PUB)1;M zHM`P&m{a|i2+#(PV8Fp-eRbUgwmOT5#s!H8c3sD+DX4CHiExWOmUQe$GzO6<+(Kt4 zK`onkbncxTKK_{%$aJr*s9wZ=@zcV&{bK?e|TMh9RX^hTyP zkUMHHyn`q+|0d!cP}jpnp0PdQdMLPutitka1!pjtAAtXzv})ZD4s(Fssn(8SPTlb{ zW|Sis^ny%zgO|TDkC$Pg5p*s+U{vobenk=PB#35>Ti?ph944DM5%n@u;`wGH#zd6& zUcL&+c7s}PKgIDU-8vPpdt>q&*nY7-=6s2amKE0D5cPv*wHMbQt?zFXdz*kfsAbiM zQc$Pduw(YfvOCK4cMjHH$rcX~sipTTw4CB!`hy8w}kVjAlBhFZ2Y~J-0zQ zvT?sh(3l;fVcBc_&=*^GT#0j@O^nBOcE|i|=Z-63OUNz(6=FIsdrZTVq9;gzB!hMN zqcF?j-W5`7?765djCT$SJhXZrWD&08SJ-CNhV=v{jwQ3x20Qhu;krd51SCqI($*7Ku&+1Y3V)#86Y0e!&m1}Os@l4mf8E^3G<3_oC9 zt+^}+6^Bv^xUeCUp`yT~{&e|mb+vjKMcRtgCQ$`|-4xF1P>qJ8z0^!hN_OW>;TCcF z@TqWXi@c3!8L~}ZNgiJcV(Dy;OYPXEqeHiE-*XMM)~E^l<^W(0#MQAGPje*@MUHJ0 zzo6vRIG|(Q#*hnmT%|+R|CPw^4yj4Nd^1;ulUxnwEl_vA*!RmFM`&R&wMlAwsCt$RZB6$cAu zgOs7B#V<1vN%3pTdzUIz9dUA@b}04KLB<R5bt!6VxGxEOJbIBSV zQMiCGrTfI+sAZsHKqmUZVzj#9)&L!CN}EZ*yMNadMKSXlc=#Sq_h*!PZ+JH`Xk0hX zzPUzA*Yy|S8D9g*`i%!R%d%ba1|nItsu?od=b&v)r-;Y`ZG}?mt)|sLQ_>05*HPEu z0GbH-sf11(1d&Q@Q?ge+Val4q1cXzJ`$0ZNY{0iIPR+OKj++q|(>O8dQ`R|Iw=lrm z5LT366z039W?+tx6EAC~+%S<;MALUG9pfq9LtXT&>HWmT!D_ID~ zon>vP#T}pyNeKbI$xc!Y9(^m2ka{I;NK+XJKz$Ow_TW2l@IH3}kTH9q25AUGs!?@< zC8^s~okQmQWdI>og4!Q`%K!~+zpjb|RHIM;eFS_%ZR=ZlKm3-Z?0`3Fii%)i6kr*G zq`#=K&Ew`f__BBhxPDdw7EoPCy~3B@@Z4y<*>F|p6w}t*LP$ZrJ=+d?ouplye1e8q z9r?sbJMk*(SoRcaj1;!qM;4@B*_h8m6lMw2oKC8=-&v$0RV6ygZW$q?9FGkZz+{Qc z>8BtDI=Q0BV71H<-q92!6B4Ni2oNcXx-45)n35Wbyo!{hRbMgXy+bPEj+dT&`&&Z- zs&8v+O!(xXA?d_ts62Z`HpJX#z>9$AKs9*<1J2yPT!LA#j6x=Nlz6bZh*Ga!s=tgI zL=yi~un5y*?M&73gqa-ZBgbTFeW4^kKy>5y5P~m3LdSks5UI7W^baf~t__r7q@z?U zrp~xYh3>%;%8~FF(~6#7>jKaX(bPFnIS@&w_sN(*h8b)wQcdwKXhu_|-b3`7C57zO zeSkO1)G-v0OrD@HbSw!ibBb#I2EAF}<3q$-Q{V%Vwvjvz6zMP^FLfynMqi3%{3Wmx z;Gy6cI^%#)e<=YSs!+>{6x5eO7k??l;7b4_)Ur7D+x2Yu3(u84<3m0ZTX7ECgV``u zVL)kgzQzA&#QVvN(hWp|$br>hZWrIrYHt7SA&xSLM8MNa#UHP!*?oOGsixzzM>f~& zK0bp$J}ZnQg+RbaN7iP>p@!QMlo^se4wST$4bK^Br!fs498)|X%ZKmrd<5yFqADJn z0jSD|PDK7=A9yBW?Fzz2QR$%hz*p!XNYo5F07Womi*Tx>mjq#?#~STt+43!#0jrw5 zs|;sP?jNsV42Xo`7#hX5VFb*F0O)3Q1BMW9XkNKdgE-9Cw?X~SwkHhEOkDr6$`aESc;{LJo@SuP=s>k1rAPz#>^@Q*Ad9Qb%0m9}V1YzfAMsBcCqN6RmTAlfq5S*KjKV>Z15w<9Z(H}~a(8mlHzkoahjO&~3w<()^*VeZ6+@Kc6W#0?G~B zE~a%gcD$QML_QLH0}%2G2=ACJ=yqCli@!P7L6)Ef)qFQpbL5AuhCqr?%U_=>F(?G1 zmjAd)ojJA-*pR=y+5H>o4Y;9QcI|2p%fjl=zkP#N9gtPyNJW{VFy~p4#xQlrAz;fc z?`kV+-&pjCEP6)8PW2Q*N~*0|_=XP3N%?Hlxt;x>BjK@Dc(i7n3)SycP7;LZWq6NZ zep*u#12e2y7|^-}K7P4gF5uT~+PveNT0Us6V@l7@OQ>99E`Cor3s_(OU1#SL0fqw@ z1(LaGDRNf_i^15w z=1>P)tE5cz{*^hY5EK5;odzhL_rc_jx%7@J8PgCgwefI08xQmC!X+%gNhM`d9>mUt z{AzpuYzGX*V&&(h9K0sIx{~j!H^rt}U_J)Kbvl^Clg6qxVg=?RKqOixnfM9smd8-2 z*6-S>IU55Q0t7$_u2PZ#?D)WgkUMIF!HzxB2gn46f7lkf(z&w974+;nxS=%$ANeoyA+Om(s`~h1$bdT*F z>+$i5)i*99n~uN$Z6T6f>Tp<{Y~np{Mz-?N1-!7Dqi3?-{K?VM%j_k z4u_=Nhb&3K{ph{XHWN?dCf)F&U&`cLh?2{afwryB$y3aLAZp&!8Xok@4ZJ!7eK>&4 z$wF_DC^Uvr$r}L%vHs6{Y)lW^=fexyKP#EzM!j(s5DNPYuHH6&H9n}&)y^F|?rYq+ zeddq+Z7(kPB8os)Kc zEEQ7_p`y0Eq6)vbShEI-{NQDYtQi7Gdv>8Ji!{~T=H_6 zEu>5kG$FQOeeI4_7bKFzSx?h>s`8nDtE@~Y`ngL zJ|I5&lGTdpC1RGd>TUv^vg$7Xz0-eZ$97hy6(3rqiNAY{xIr@&WDZA#GEAmSCr2hX zp=g*7c$5b6F91~7N&_J=}g{yp<^Jyh4c_N|Nq&d9$2h)j>L*cse!{Iv}`B-_@?$(!nYSYXr^H0R|&X+F3lEOZKG#=t+Gv`kf0>P8;1IIWV+H0 zfQzyg&{d1jVbxZ#sh!Q#GR|CDjTRr&X8;#APc}o>0E4@Gbk~~0u2Dj(U@bfD@NW;h zMakxYJJH4~izHv{28c=jVlP};>_ylaNl%FN4u0x>l5b}qac3kqwKEcVS~sDRO@{h? zh=TDqy$cF|@NkQyd}Intq&G+$q{osik}YO+AUzrWThE1#*}##@^t9Lj3FHNDx8;(D zC>bvvfFC{+^J1iFy%&-(`fWp6Z+mh^nQ9zFDscE!mqNutWE46UshxrU}xCH~lv@bcH^@>ls#B)Mw|AFW3@ z=yCj-W&`c54?$v|)sGkqT6P?pO9H3IFXuyTk>X;g$6t;+2p^;XMNsE%9O(x8Zwc~! z?QVchu^YKj0Qp(Zg#;H{2;!8wq$#bnDu4y(hTB9V17Rqb-%=r2#+TjnzPL?vtP0yi z0kXy`8{K@!#LZ$weG9H6;f#JoSM-*!8S&x|#PT2ti(T_dn8t#dBDzOrN`YbBI?lXHVdjaJhz!pqkq~T(j>Uz{!dWPM0wbi*YT z%Hm=@dEaKi-ILa_Qr`R0WXRPWY#jQVlAsO`l@3|#17`e(0Edrcoo6He(I#sLWCwMJ&iNX_yfS4>3}# zGT?w!tx;QmrxHOghJm(3obXUvpi>QirPvEPgazhKj&w*CSm+Q@;BaG{MUIKrx9@_8EVJj)3<7Pm|IpWa87#-6~)-fshUd730GT===yENgNoZ8p@y!mgi7CV0>w< z9xyzE!JyTg)apTi4mcev!McyHdgY~_KC&)>3DtzeDJDQQ{@y5R!x+#9hR6}RBjj)w z^I9|L4Bhf(cCNW8%^+iB@Uy5H)D>!)YSbW5BTf&cfEr7bf}jeZy;BcsSpXG+aH6OT zoIFZ7K*ZOhU@|gEW4DR#$m&Hbf(;a4(bWWWr(|D&DHNb6Gz0Zcb5bJ~r7-oT z1mbx#l{^$;5Z1apdHh=WNK(U^GtUPaw!08&yADjjk;<{-XX6+ zEL8v^BOnml;vYSTG!=qaKN0m-w~vRIeT0>kVazpvs2nQ2a6{{s>K%MvH>4?y`3Wch z1F~aB%t*^10Cy%FEh|Wn#s*OyDY3fBzBd)uDa_J>rvL&l{rW*tnTy=gv{6_H!2dKS&dcy z>bLM16tii3*l#U<(z_6KBe_CO+v4u@$qN$xH+$#C>S33X?VsGPP0eqzNwJpg74&d* z|72kMOn2uFiwNR!hDF`kk2Rs|zHX`a_K_Zr^Ize4)e(XwuzQM+;gF@n+6c*bar-MN zxDzqZ?Q{m1cX1d^RH>ei4^~vf!LsYcE~VA%ir{Wz(DiqTz9UYajR-SD$R*{9OQzWC zm{q{oZYRtf%KW3o6<#iwELU8CK;*ka{yQrbv0MT7KzkFR`>l-K5WI!+MJ^?rgk+q9 z3+>doLKXWT!0VG0Iof~6TL9R${x!@V%Dxs^eP=tNiabfS_pkAdWIOxrQoYL^F&Mp- zRPO}w1EiB9+rqtVd%}~(twbSapfk;j#m}Z!lhH@(Rt>MD+`oU?)wm z?Vza*Z^R>VN6DfL96=tpJ8Bw4ATU_)s#zR{8Bx^NmDfF_A20gWq52kC*~)ilL|b+M z3igzi1g-Dgz!h`rz6~JFqeJAX=7vR$jZ;xQ#@zwWc6U9dc6HbAEk*d~O}MmyLa>8@ zqHw&!WA&qIVOZ4D=i^(?aV7SUM%eGCsPK9Ogqm<`Pkn3d!Txmtx3%d=YZ#g{BIR-$ zYue!=N@fQub9lt@hozQ7=_9E{bisd7e56ALLlwU;FGD=ZDWL12xJy@Z=1}nTzKu?a0 zdA`8mB|yjl!coJ19*_2dJbn!O1xdgkHzw%l*ylBa6Cr&33*@Q zfD;Wk84mclFyNC3q3*vP0K7E0lkLUV9O%DC(BPc20eG{la)^g{Wu(WjYZ(*}N-2C5 zj3D&|uI4I-MJ}5n;F)tiaCaN1x*<~;Mn-+O*d^uBxlPJuyYPEX&V|dG~xj7cML`>*lpIuLVFv+6yf0aw|KiC0>3%8-G6? zf6vF?`{VD&;_pW$%M+?YS@oC(xU)aSuZ667H2gZ9UoT|UBjML6{CYmC=EAS_{5qIb zd&93)jNC_A_s=K?l(L(=Q=(t`KHNNHGU&en&iamfUP<~}0#N$r2D#Gz5i#4Oe>Edg zR{3fEv2D4368{K@0Kg|PVVt`gHq9L-6YT~KGjg1T$tvyJbjY@sMb*>Ry`pMJJ4I@y zq$}|H06NUf+3?t(L^>8KeM;L0f7}c)!L`nv@+TMX5jl?93gRplz+!v8ruH%Q^+oj@S8 zxrJI3tq-u3HDkdWp9Hwv^reHbefMY@gTl^b3tc)wUMLi`xcm|9H-^Vv(VhL1id|FzSp7&Xj|O`j70TWWNuKlM3lSOOHyvIymXk z`R{)JePnVc)n>)lPLjG-Zj>P=x_c?Ij~BVF&7Pm69j*r_2VN;fC-fRT8Z`gIU8;%O zO@;K3tq%VM3q!B(@yAE}_r*yLRNyEkrUFw=nrVIRA5kD^Gt_*ZKajqnR@urw*?%tr zf&2HlikBuekL7zwtH5u)x0l$C7;ID=h8B%V48vWH9cFQ!Bj=oCirYsfL)Tt(UDYRX z$?g_E5*OFd8ASDFN=g@b%XR3BGmMCz7f-QeWZ&lUD5ivZ#+HAAL|y9onA3tmA()b+XX{km3{qw7oD7Az7S8I<7Hu@;g4u`h&>d@M+{Q zh>(&H5(Uo;QiGPoAIL!8F1}rc0HoNg4-TNkXFN?$PYyN;BLek{mW)iv59@D*Ei}09D}$fhnmvV@E}~QxtMc%8d0zzh{+XNR-gPsqzwD|6N6wK z{Q!4(bjd{S=ePB{ezIDTTN_7ktxRlosS!ZO{{I9i&@9(3zH%n4YtS$ITDb4uRQB~l zdolZ$5Bi{Qc_sj+umrNi^_XIA~}Bfn3umbpfb$k!t$wHvg`$~BhKCnLCeD3;W^EY^w* ztyEC_>MeQ#2HDVgkjQy(A-Hq0v-W5wWD3s)W0@4^M{nuD{)R-8(u%x2KuX)*d4XZF zxr^PexE@~qGcj3h7RLQBbX0&L!B3%}3wa5mMVehGB&od--t_YVLXG6x?DZyjS}d=x zZEumm%NcXcbpdNxSKJkrn};&>4nCI!$$2=FQc7ybjF<(kFJ>YplttG+*gO=SyMjo~ zBy^tR>7q#eafwvc4{OP{dMHKb9%R_Hcmx?Ijw=zbIWV}+QWfOnh4&z1c~_RCiqt{I zhx$GW)A0VNR1FnKh*n97Zvnk^&nuKAV0E|n)g0wUJuP;X>#bW+uxTJk927IAav=?p zcW_qm2YG*$ z`S^Q3sDOi=eg20S?|Z-0e+SR+!|E9;lgF)6OZ}93ndRHdjKw|ej|uIK2jNU@v$E>g zzJ6D{?&hji6uZah(=W+g^30BV%c}tc0!9)@431as)+=1^)OERDh6n~nf5F6&R$}Rw zd*YXSxmr=T@nzSQNBu-Z3qund@AonkF3inD`$KR?CDn-vUbMATC6PTJ`E6)2`4Zhd zQr$~mwLX$v!6{(K>;2K+mMmh zxC?YWBDaD3xIyg7O~?UnjBSE{(sHP`KP{e}Z7-)qx(Dr>d2UQ+WD--kQsIRb>bnuo z7U@|zT}vetv4hT0AL^hy^!vVKR!Z`+%hSDZ6!#ekyI<>P!5D zd{20?VJ(5-aGVPvytp?fE@G}GiK@kQUgG+ZO%uOld%YSv?w9=u&8(OcP?NSHC`q~0 z@5Ax;Lj1kN!WQVhIyNBK{Kzu=UJ+*0RBN@nQCI~tK@0;wG2pUtHNYBlf=congP_6u zuqK`c7r3g^UFPS7Zn+w~4nWe1qj>jopi;Yf5!+Wth@NBje^A=@fs)J0oN<0{iv-GP z5<|jSY!y5|A3dLe(>QPpKt!*#Xay)scpoqS3jm1@>!V+kY@xy-nGw-C0N&=#Qzi$ zp#Bsa!A)Ai?VATqv*`3U)jsBkh|_P2ep#UWI7?NOP%%gWlN3KYIH~vsPRo;2jmhfZ zWT~%1AV~O5A9XRN^*Y-Uc|FnV5EF`9t!6AMzAw~~j-sI_ z9iWF5*cDch423}=4lDi+#RqL!%qX@5x)zTUn^@d_x*J9Tx&8d|RP875zI&>GXZE~{ zU8?5Fa{8?knZgXF)!4KfN_sWx-Uip6-BzCU_yB>c@|*VzbUjk}=aK52Q#?5fFY%)L zVep=>l1cl-a zh$-F<9u*+`1X_1PFQY3`?1bV|6vsnxo?;P-Pg7i3o*pC|9+^c6hZ$k+5Az^~Au00> zNr#L21rD&pg;xYl+UswDgJ9j1r%g>H6yY_pf3zG?ZmE9kvKwIw@`6>Z;;6%x&JIa zCQTeAqg8#LAb?b#ETo`tYd;qHZRNE_Pr0w^Ihrvh2{2W5F=>zS>UnIM;-xCebK4@e z9p0vwFPbWM1+-fHs7Fi8=X^J4*-v%*a4gMl(5|28qFsB&!-SILDok;lbbN3^1H5iR z3}mxhaiJ5|Z6c_C-qr?+s{j#uS-y^ap+aQwa*zzYfq;)!a{YZdCt+XJyoJu-$s4CH zTojzlr2*@Zd#^t!?9b5vIJ-?-M8FZ9d`sv#t6Ty+=TM_#VWRbJDtj|kemOw*@z#Vb z9s2}Lhc=G)WL!^JY(DmzWJ9vLTu$pln@?sYZ(2B3c<=%YMM)?M1euZ029*@kF8-3Y;jwo4 zO+%xG+miQ+;d0U_dg>(d>oMV**U$E3El9lP4E(g;G&*YkYjW8bP@U&y&$&q&gPM+@ zSqd6sp3j_w$U4C-`l95|7PwI5T!BOyui|QaAfaBW~X4ZfxT4`xsvW`h5MLcSo?TdALD650adft znc|^b8e$om+CekA);pSotHN09H6?~1Ox;_t-EZk#Lh%g5jMH3JXDa47GygEP2m?oa zt;a~kJ;)&HL{UR76o^PrB+?;Zhw;b_79yfWHO1mC zQ3`=FHWdIi6x=g44QErVH}%|h3x@;42bVID?tP$4Q< zFAhemN#x~f5M&>s6=y>zPq7L~Vp(mEY5M(zPNNwDbcNUt< z#$+=!;QX{9)U&yut`@ng)LqSYS6bZ|(gQ)1OT!0~Nm)(`V z_omTwlZWKGvClu7uX`w6XXz3vAL2tcd#C6n+H-}~aq%Ek!ngHvY4Ytk+K1sh2BSGF zu?c}XOBuN0uuxS>12~_P4&f(>5ZM0_!QjGzsS*bj)TNag2r#mfBSpp!MObmAZ$*d$ zk>tL+Fxud{daFC!O#6mmLJrep1vHcYIbh#*Dnff1*z`VY6!X4@t~T(T79p#3kf1KV zT#`{1owL2ZSnb-nS0ow% zPhgJYT(sWFTYz<(Eo{Mw5VL^^7vuZ#n?dFas~*nZ&yoEgWVKp7zw7Gh^yCqGB*NQ8 zJ4EHKx;)oxf0MfsdbrvkT?~?`H;=TZC(DeA6QCdojbTl0wV<$K zy}B38y!ZIC_pgXRyn#}PPX1mtbt?uTMJ&~2=+}kKv0-IA+%VNl&kfP0@~D4;1ye&* ze`9HIGknP5R`e!^ZBPN={xDR^VUy4Zq)f#1BijbC8*5rcmC$`NZz~@ZDX4r5tR8Is zQ4}`Rt7BW^SF&GkdTEdt^I)YOc_@oiQxb~E&=g)Ub3g+ zSOAo`gSBcGwq(BP(R|!<@3EB|saYI!Ra)Nr^|6gCksk5cEl+e_41y0Lsx{62mPc`} zg!UlN*CYD0yitBS8;A_?ZUUUzfUGP!2yT|aubJljA=YXgIl`mLm@hYA00k`{2uHT* zo*d{IFk!?r-Lz48w7f|7Iq5-{RE00BM(M4P2tmMOF9E=q z*hVe{uvljW_Pb~n-9*7gkS$};*oh*w+!iBVCuyj{o_;u6r?TubSA6+Z^ieBPZ<-ka z!)Uyg?34WT3P0FFGOm?#S`Smk!#^>aj|~$6xG^%bN~x;YI$0{u?H1Q z;Z4Nht=it0l_WQKUL;>mEBJ#bz_WV?mi)J|AC95zoUq55lWbWW9S<3{<9IC0ZXi%I zn6QD*>6T=X5*eGmyCA7V8g*O`sGI4cq#>X-N!@4ol}^Y6LXEx4WrS#{M+XplK@x2|^skQ19DMfuTKd}2>v6pm0BM2%{51Nsn)zE?tD@;y7* z&5(h+;jD`NJ`M1%NMeb-8R5jc8YUA>DwY$q3py?@G2M(aQBwioW@vr#8w#?KwBt~h zH-SoS)&w@5Ce5JYJUYN7XWQ?9425>&8%>82$yryzg8C6AJNjkt(pZ`J8w52$!QpLF z8a?g0J)_fk?P=vR{krzUi1rhvkcfQb(MSKw$|p9um7*JDcBznOjKWYTuIApBmDHbn zjPCSMj2dbJW53^ahQ-w#$dCr&^>2Q4;6vb0+1|1ov>apMKsBE z+K>&)dK>5#K19hDsvOj*uJSHO_5C?{(IBr+yi%N9`z($PgNe$%~UTX`%Vi z$lEd&7WLe3)0$x)AW3_+jazs!Ej|r*mJAtJshC`*Tag2f$&qRAw#`Xs=!txtTg?cZ zTb|9<^?+V1jzpuV1txN6!2p6;2QUe7?1VHO$f0ck&Rj7-ZpqrR3)8lr{2m-y`2^~6 z0Z1;M`eC9q>$2N`=zx_B%=iR?6! zTb%Jgm@{^GGenY@$PtY*1++Y$*q46b;rs^aiS!1AaH)o6W)Ya^4XBiV!(%j!>IP|# zvNJIwjE?B0b;@~0d)O)l9~IooiQ!cUJs_$=MHt&X-P~w8l(}XTc@7fL6)72xB^sKB zhB+WXip_Wx3Uh4QBXW7}*wnl-`aJn=YC_ z`0?G~Xjv!>v98%X=01= zv;gVgXgXw3A6i8$hp-KcKG>!*DkPVsLy2By;bfSC;a#60VX6zt*@;2rD2Qwq`ehe8 zEuw66l_nO&n=S1=+f4Nyy2^lf55+Y!fW1Tf0A)@B(i7?K2Iwv*9?I6IIvX4NboRdV z29gE58mK~pn;Zfl7spG3Mq5r0;ou~?4Hep$spE>s7zmM6+zlEAM&X!26G{W4`69!G z+>-1pa6B-Py;a<{Eg$jVF_JKo5mDraGsDBMR&?&?l*<#u&4WXiWBgxfPlbTPSpE;HJ__NHwcUrCFfAPIMZX`g2esTW= zBQMLrpg0por{KmFIlH2QLNF02-9nnyS(Zx!tP;M$j4zdCt@z{M%Klm;eHE^u6>qyj zYpa>ACk`N$@4TOQ17hfEMKjrHLYu zYzk^0V`xNJvJyLRoAUQz9-ivX7O{|dpO!g=hZV2;ea zUM83npG(pN6*s#4Yw3Bp4et?e00SHnyZ&EvO>4cYca`;-5R55n+9Str1#Dv~ah-&Z zOQe1s-Hc1_&8z>xl}ro3yWC;`*@_N~%+`?l+}Lr<(VmQ9UIaC+L#9!C9*= zYjKYc&!)Y!iU9-+d{PrxFOu#fxPf+|{e5V?L|lZMUh8HQGk!>d%;zpBq5{umX>jdm z_8XL+s-&az!k0%eO5oy>XfwaZLPpa*lKzI>q|{V001B4`dC5hhm6dm*bmRt7@`%0g zB<3S&b&&Gr>|(F%wDTY4RvDLcn8YU+y^o{O+T9p}0(di}Yvly#T1w3s^7Hx5aQ@Ag zZ6zxCR`C>c)A5rr-~uO1FLuIo1QFK}pdHl&2O&pTS_gz5k@ex6D7m?sVYunpUhi2$ zU08cy%?vu6x!-i3@%y(Z;YPtSVWtxpq}h3f=FN>*%kr#L3fYZ-CWsM@00m@5#oZFf zv^H{@l-AlxrLM%l)~d4Ei#Mt)07!&@FUIq?OKNyM@ZkNWRm=ndx>P#y*2IyiulIgY%86t?Os^Caps3Dtj1kl%g@0IcE577=L_FO?`s4lrXqRl#Xn<v&=BjIwhn4bb z!x#3H4HImP*Og9H-eISFQta#%7nLoUQ*#_hl&2lQn##&Vc~d*b5D>&^_)G;!glS6# zi8eJ`#p%8)YEn73_SJ6gP3jq{YPTE|>tc-&KS^-=KqeMq^!!~Pn%V7vm( zCRgJ2a|NW!E5UYYa37&N7a-)~_o7^ja6pO*a=KmA^jdKrz-)`c(f8c;K0q`+UZNnd z7R2fcEx|0~Bi5eNwT@iBPlB0Et8yj~Np98B6)F19xit9@^ez~V5S1o-VC0T;Wa4Ry z(qXt1N0^*rZiW*}valV=APBS%mXF_J*_SpQKKCtYik5Y>&QLjy6aMS3+T?gs^UU{<& z*{;b#i$glr)?KDm#3?8mOGl70nx#w#iIgVYTdjLzS8MKm4bln%2u((YZCwL#R$LJ! zAqIh7qR3JIUP+U|n0@UY%-9#t6n!Z+QQpKkj8?@!&K8jI%dB#Z7-Nw62jq!<$-29=wq#)SR9*bGm}48L$k4PRKd=%mrqnA!g=HFtaHRAl-B#9TI^AtOn#})oHO+ zMDPt3dIG9bri}G<$L_KTpXxioAAOgBc~oT2xKR}!InDKI^=;2J}$y#v2(BOF6;ex>;7=I2m!0xs&gY}Jj<(LEQ zDM40P}p3jM;SX~;Fa3)J3!gH9B+0v=M zLlw{BKI}Y$MjC1yPEMlHvU03UUpba0g*i1go)4AX!ncN`pl%0YB%UK_i_Pv~sJcsO za`Iewmr+Vto^v1^SbCJE34rJU)H=k$dn3X~SqGrw4MLz+C;$X)iu?G{0F8)f;$z7~ z5Ke91r>R0*Y&BZw#@h`+YHm0cn|qG4y^iKYW9erhQ<>3yqiayGIq zzG&-Xm~qoXC91>1@PNnV%L5MbnbJiU;>&lrnm7TpG&^0S!y*v0!by}Dk>xjOCU(Q@ z8Gu1oWa9AxKRgCNSwQ>D>cO>2o7^cu11LJf1^ECYDg+oo#^4?4;KcrXb2`q@I$iZ9 zkieX55-Dv;HmnwJhgA>~0zQYK!@19@%Z->8f`H%n2GZ++7cmXpLHkGLLqS+8@(HtPGb-Dlv z#pfzmk!6Z+`#W;c4fHbPVXVTs2;^2d7O}81 zzQ4w-n4&0-l~`aeA@Y$d4v%LEa2Qd!Wh3y@*aiMrVB5&EiSBKZ1r<7p|C*= zAlQduHGI&IHtVez_6KG1w$vx5ZHX9~mfh=*3`TN&t)|8*7>A@$SW4N2L>>Fv1DINw zvl-14G0Tu-IA96iZOsR+q^)h>sun4e;Ku9*>`HFdbiPg$uiP?wjA4AEqPGu1w_{^B z$=LCyTV;CF%ZrI<@`VgvijaY*+3Mi!N+%;~Ia}pIu>RFf|C}|^+k-XzbtWsBW)o^9+sE@nAahhqdJ6a8Ss-7Mv+k71GS#f{UG&zzwKDAq*onbT3Qci9p*^j$+PPIz#X z6`1j=bvt$c8D_-7cUmQ`RK+fEMMZjIh8MYScpgYiC_rLC0|%5 z){9e?5g^NLakRmiXE*1hfu`?WpU>7zn_HeG7G)uN!b~yZfzGHwfRTW}#JjhuFm^(- zz?U2I(0C#p9(tFCkksmO-n#D=qeqHw{rgAtPoq$`h`Q1mlQfC;UCCb9pn^Ujt|wr< z+4e9UkVse9ggsX~VG~)MWj4?t;I;4xY@D(#Eo(QUF(&f%Whr;on7xkR@`*%pO?!rs zsPdO6pTQ@>GnkMnpE!=J@rvatsg8bEN1M}{t$!fhgQgkJHCYnE%QV=+Q?j8)Ns2Hi z4VFniVrDl6CXfxzWJytdr@etmQt35sLRbvTDdj?$gN&i`hseqSj+6bJJkB6}KMNu8 z_&n(qTZ3OovNoBkQKU{XFX0f4rRPEQXEU>^MF>442Cz|^h9jjghYQ7}KGebCMhgn0 zANu^WpFEEH0$AcJ2yUoiEx{LSf= zozJ?KzlJzm0W~p|)P&O()Cu~m(}*~5Zi5+xn3gHZF69}zC*p>6%9o~aEr+S*a+oB- zl*6QK6$KP0vVw5CgDC9!LI%9JEE20wUm~iK|0upimLPuh ziS!ZHV?LX46ey27PMXh7{^@*0OeI;Qx@iJvqz8B`lH87hOy-mtmEGlOh!v+n8F@JR zzzH1Wkz(Ag@L{!On2Ad$d(t6w*Z_-xE_zVMhT?$soluy=K#M>Glxd(~D&yMvyltmI z$u01q*UX!8bgsnW9&WSMSKNzyKJN4fZ+d35V5NIZ2gYeB-HnK@4a;~TTARF2OA%=v z)3D-}0RgtOEkM*hlH7L&NJhk^@5W9TW~0pi?E+0eVKmD{&p3ceV64vr)?R#rTA8H6 z5IY*es|g%S4Sa}+z#)ZntbJ!cXz}#1coU&MCgt7*x_Bk{~X_*{QrHrrrd(By8+}g&~C_;&E?46k_Ho(plJb&cD_d(Mlpd zX~``sa>Mf*M=_8(O_aotM`O!69fXJInVr9cR1(coUUaGy}O935j5eR5!fch`#xh`{!x#PJnHMBt%#4Ag@-4uT*KK}{F_xnc|$P-uO0Ywg3-M|-|GY0j9g~fDS zPR?(}2BN(NqCLdtv|3aeAnkjm;&<1zjf!$zTXV62eq9zX*_y~xq*8rJ@INZpFwDk( zh)s)ZI(}WQrRL-NHD`L33TRyhPG`==xAG=kc}u#pK zdp)w(BfaiLUg)eYV`W1j_eI<@5tY3Snq<37ev|iMV}jwfg<)kB;EtRXugGt^M%EJF zotL4_D3ECf+7|&c4w<)}!BQt}B$DYJffHLZyD6)7F zh&wNsdP9`FUCBd&^ zDZ&R#h`*5RB1e!+sKsm$0dIpJzWKUpXVWg|my<(XKE#XxU?O2uxP(4yEIYxbu4AJX z4=9qs131ZCKi?+zJ^6j|y}am!3s2V{Pq zRF0QMx6Czl9dQLq`P7U3ahI>~4nC>HC;%$36jz;!O`!Q62nM|n1R^#fsWO%XKl1Fp z0cic<-wRs!K*sGx*Dv{*xi4}Q9~|)4`*rw&K0*P}REPe^0SWo*^Ce<$qp7TA?I$Ynfp7?dR-dqkE zvmCVgUyM~TE0a^gUt*QjnUrdvs1X|LH>o95aACmbD2XVGy6#6NavS-Uc0vb%v^icF zvOo$*6O?uWr8yw2XVDP@i+v~{z3EQx zz$Y+0Y)g`ze6YY~|;TR|0{|R_YY8s8v9*!h<8@$sY3P)y97j`U5$Rk>L zfElP=NhJm=x^am!K{;EIUC^>cXC+Y0>eTXZbcGULQ@Dse6_h|)A!fnC2~NR9R4lSH zUUTD^?kGiv*BW%W8QnRS2Tt`mhm8p&vAuhIS?H22AJw_V*zD}1VMO#VqB!~>^M!iaZ9I~mb|zJXul-O z4jpeHNsuab>ik2TbAQr5mm*j7^iQ^CaS2jeN)uIS^uFD0d!)R)z^=~1^JMLZ!*TLA z3-UJX5&LzgO~LdmcS1o;YnHGR6z>0a9g}@F`TTkSu4=nbg{7wvmrPH?au?9V9%`U0 z3+Wq-f9B=;n=k1|tp6ZKS(%QC_=WM4%{)`RHX|M}cNS}jFPB=cD=az5zCEvUu3-Bs z<-N)O+*qzO47+PaE=2^H>`lI*5j~DmY#_Sm`9dpVk13JneZYLnHVTCQA0Ug zNIDit!HCId-p~!!KwvTlizBP6c&nBIXOpee&;aQdqzlwQO+hBwV*Ss>8V78hSH8YV zVk%l}6Tv2J38!xmeF?4_{d8_A9|N87*{zrP!Qq=&1zY2-Ute{TJK4{`tL(eWw{G1+ zYNIXZ0160*S$Lo)GEt&Lo*MB$+Ne9kHAw2At(F{}qB5O*+3I{L)9 z4aGMD(3$o#Tg_5hS$Ixe?F`L{5rHV|b(dT4wL1^uA!HX;B`t%L?vjjjwqb%hfi@gw z9FjvjkFKV#{Z}j1p2*jDarb5%92u*{0tNIGfU^M!&Y0Im%%nrD0HiCdart4~yNX=H z^TrN}l$UI^o_ri*I5D1_4p@4`#0VPb%Jd4GIf}Wz-5LGmuh1jer{iQ?uA(!N{N;k4 zHH>+7Of%Pr>s7kT=Vh@?>Eh({X^8B>9iSBoZ@3Hi4;h1b2jcLHv&`Bf?1_HLnvE=v&i|z(cbk z-mKM&w4=}RWbZOKcae70%SAqfb6IiqY=w1MiPdCF+CX10*cg5^zkOBT^>98Tj`feO zir#~l6K6xh54RHXA&Lqz<+fGnwfrzPxm9n5*KVa|PA0kIKCWB~HnFr-Y^bPby)u>vn25?CqqZD<$DvsdOqQON2 z)2^s-QRAXdA>p_s!6YFseJPrgJ)r9ujxX0;kCf*)!VEExDiJVIm}{A%{uCQWKzacu zQxkm6;vY)qjFUBYTYeU!)ybbp?h2?*IZ7;8T80tuo)A<(g(ws!Zrr8Y6A~RH(&Ux` z+bO6nKI={;b^WOxE0k}HH=t&wXA`oAMLij6bdDA<5HOLQ*^zHGI9_y7v$h*+ZN(H3^*+c~>vlOUa}Nh{0tUoneUU?XGZ^rKS=L=G3=jDIiGF6{fz-ST_)18(@}2ccyZuU>Vw1xBZR`~^$Gu=^@tJ7Iv z^xWo>M!pi`RS#aCpR0>k5jtF;e7JaxCCrN9HRzvaF?=}~8fF`XnjTxCS3O+{uaoY! zn0yXWm`#DAnJ2NWVf@stF?^23RPNy1PA_tBR+2Q3Hsa2wEtE(ll_;QD$0|9#8%$hb%)%AM0+Mf`2GNkSojVkv1tgl6f5dWiBi*&kYYdnmJ&&Ht zPf#w1#=05peqVmB<~Cp=rkt?-l9LU*=zU1*ji$~}k=z41$)CQ|I)D9_lU;tIN}UNI zv@?_T&r=?nha$*tv0{v6TDUDU%2{buAPDI}x?AJ)fRia6`*X(5o3LKk&84PPAHFL^RMm?y~fVFb~Fr)Qi>W3ZUaC zJ-OH_6=+D1i9#)RSJDj=h3#uG68N3>_-f(Fb~t z1fdd0^y`XM0xn(R)R3c?HcS^tk>o>&(dar>Frgz5OWKcMZxojli)8$<1_s8zOqo7J zo;!+cF)z`+{Z4?DMw8nuCT*0ufF%;h*CGoIBD`%?vsN$us zKct<2I`32eKI6yt_C8gtNBvaHNP9xwevQt8VsL`yBGlH7a)e0NkUpuNQF(YBzv*>i z^-_s*icr!gUXlBBvF6#aJRVUg&(3zF%a+qxAaQRr!TL;|dRYqT3D%eOh2Srh^$p_Y z05<7rTT@_x=}!esjc}R$+O4}*{F-YnUWZO;u_I!OxhQt8_@2dJlp}SMHNU_YP=Bu) zb$wnAO4YzcsAo>gWAPB(z~4RNboo93LWk&(g>9T~ z0SOa%4qW6J=YKL(OxkTSAz=W+y$Zw0{F;uT)=2Su8L%)jXt)~7n<8F`!6wJ)7`p1= zan9jU1!(lN9AmKM&i=5UAo4T#F!Z*`pLm7{4V*-$)BbmkB3De%mBIr0q@A{{N83u& z7KUoNOe)1KCPO3UmV7KPP$5^QROpRiXLMQo-$v|N{t$ytOC{T&9Z9;3Tl%#IB-RKn zLiS2}5!q3q*4q%B$!rI+^r!S}@LrlGd*ne^&^&?@e?csWw_O&6gs|I_#DyhmVna4Z z!hh-wL(*bb1C@@Zmr@sT37UA2#%hIUs?~@x-x?O6VOwGoP?axe@k%YsTrZAsa?kSg zQiUjZp*Bux0>z#qc$_0vPJcxU%T6ka_)cCT>S1eDQusnSojXIr#X{(Hp?dx+w8pAF zUlbCWzsS13)p0fyQCVZYwPTdk()yh&L~hmCnvp?D{0hs3-`5y#F-S=UMnDPNDmw;# z7L06Jjj8v^m4hV9x{nK^-iiYNj$#8H!h3 ztS$=e_O6Ss>z!;uAPS$1X^U--kh*<=G%!JAXnhvA5B<)Yk#^oZKRS9g168(rfxQzJ zhmSIQ6^#i1we5>rzuDF^43F-F2fm26Xpz z^5tcmXaV~FSU(-Jjg`lB1@PW-EAp2_Y0w2eS@_*8`>q?zJ^MEiOnTT8gQY0TL(W6)3B(x-8Q~1q^X|*Da9c+HfP#3Lfs3C`c}3y>MN#r z(B^@*JvxA&XE5bgZ1IPZX$-4;Hp~PwaEks=_AEDSFKp28EqIHeAjFZ*w9D))e@4!e z&eTc|8TGg_CbHFX*|_$y*?9xzF|#n^54I_1`_58dsg++w2f{mI*s|!$ij*JW3y{( zXML!lDRAm{rys5dZ9UQI$^wIH9O=uV38a9n7@fZNcz|CZ|Hu=idYYb=d?Ge3g?G}^ zv{bQCTrxeBgUT0ni4}PM#a#btAs9BEGShv(sv2l!!nNesK;X+04Nbg&pu0te-8J z*^RXK`6#%(w(4U9tj=Q#+3G1V92jMY(4k>|jRiW?#76Q^lfy$vO~BSu6HnienrLv( z?!+_pVCd`%)E&FcqBq*HxK<{6fVSu|fJc%C0;3Nmx`ZTb4QT%Gy8?|L(0qr~i*13m zL}zDMj2$i>L@l+h4WsR>*h@&Oxe(MknOi*a-%Osikf%*{FM&J!;`?5MjS;qz?v{O$>Bt@YyYDDJB`ysxX zrV<4-$x#DMA}&m;IB~RUO;Xd(FF&bgXu61c=&mS9I)}Qbvd=ak=iT#QT#82~7E8u4 z3s|6CbyR)P_zs=ws^SQ%s>1tit*)kxy44B_w(&`0ZtIRzY@h2&pSq%i2D$=B|G8ap zpY*9K))BRb`Z`Tl$uwPIENeQZlY@$SY~ZP@;T3)`)wL)4NiAl!yF-FJ%4nhp@66lI zV8MDe6~Jxn(d?h1Uuwl7*Be=ZaIaZ`;B#BfKAT(VV*qyLp%GLbM_oa^MB(zrRanxf zbOT1k10K9KAsa@T-fw#!*_@sJ4&b#wS_kw^Ag&DHJRYS~763@&(H0E|QjcKe(Zy*M z(_R{0^eZsU*P@`omTu2!Um;&WezPFaYZy;<{6%&3Z(e)qMI{ zLb*eYq6D*Ta94Q~YSf#7Q6d_*q{LWuhhec#j9^gj)**TqR{4@nmUR%&btrA94pmfA zp_)N2#Fxw(*HZ=+C$hR_)J9{#sVzsX50MU5=z`9`7E}7S=2opCi8%@&=?b9L!H|%p z-U1x()ATLK*tDlSW#m8=8hR7DZZ=FG!8; zK%i={1I4-TChX^W)1kPYJ{Y0-)jl9n0iSsa#llV>u=x#&h{>`AC5>7AP5NLo)^L5G zKtN`FNW0~sv>}ELKsrS^V5lIR2P8ybfC4vy4?09>(SVA{3NIns$!-f!C|4o0)oHT; zq}7XiLfhk)LiCCgvBv3@bimy}+-Gc)BblLf;aXppbyF~4+ma6%i1{AD zJs}DONRr^3n(^RZR5!*lIU*5a6qeQ_)4;~=r5ZM3FswE>t#*l_ z(*Xm5NCTM(AhQa1h2)U9bOOQ8Zb;Mt$D493$pqQv3M{FkBTk$g5s@H2O9cOm3y_MY z*>%ZZnpO4asg~$LK$JMi$ej_w)h+^ho@x~#FivnvNRmz+Epb~Fbx0}bV-WlcKc-Wy zE{d?A9Et=^p@^^+5|Lb7A+e(5={~+D2_pH! zWrkbmK-e9dz)bvJ6!v+`vu`1>q^#O&5uybNRJ1p<+XO?GQH-byH3sX9zq>pK-*pvM zj9Ty~RT*~yfNRV9YfmIoO<8sRj<)7-w|}reZR@=q2*CEqbIY7;vO@F;5@f1LnG12= zfo=pxYA#WPv@#6bU0n_J<|_MJXxC zVm!*MONetch5d9WaTF=~(-yq#Iq0$H^Tv}?K8H8$In(4$_1qrfTjKmkn^Cfrt5G>~ zNfvn66hC|E(YQDe6)!#dbglSPev*$>S|fT2Lt%j>-w$~#_qcU7y|TN8d%&>9wfjIc zk$gQgT#As?%hr!ZD{4CZYE-Vxok=r8FL)(6AY1W!J>z^reiE*j*KX4kv?ciEh(4k0~fYb-(Q@g zcL-_PyGP&j-9JA^jgfy?*`LqvtbF%GHk!`w%&F94FGi9c-&d~M5ZUd3Z3E>x}Js&7rvD+Wo-a#LD{8@tg25o zpuxL{FE;hz^+acMG2(APf|gmQ{xxW(i0>?pGXxiI5s^r}6wuJNt;D7}5RwVX|0>%z zvDktLA~;x+-=P|+3QLygoN+6r@Vm^@MAE@%;T=$G z)N@y)e$qM>qNeSiN*Mi61oQmj{O}Y#nd28L=e%tY0sbtKg zdPo9$b~=myvrEY8ARlzgkv-&@m%aJ={`*fN}C;gU3#j}3;{N}CduOET7(!?%L19H({y4& zPO0>cM5~mgZf%7+i1(_Uf*+qqS%%xV9d6TR*fMD;1x0VAJwyLCW0G)f_Ydd;yTe() z95(g^L73a7qFfU&a=T5!E#=*W2*AhZrop8_5R6gn%K+jTrAAcZF#(<_bk;r>OZ#0QYynFpd_FotH9KMg!)&k z2<^{vVTJ8-iKqzg@;z#_2OiTUoaTvCZ2%b^niR|kfp}5YEeEOQw6wlN5mWKLd=9F3 z?oFd^9K_$Q%(!h-@5x=Qwf;6JAChou?o7vJ8z7)rOcbP&u+^6mSRl z51De$#`VQf%^rPaV5tc;Ggq}KfORyGFXxj>;hz!{Tl+UxadoRXr(q+=~DlKgAL5x)Gr5#a7 zr)i)qP7WbodAWn<9w|C(7!tYm9@nRFDQp_ZAahYZ`T=7lT^* zAlb+|X9g}ILu#oDIm&mP>j9xDT;FM4hQvJU*^$&T0J}x3Y~#Zo9Th7;un4FV~vXm*jIHF%_C<=DE`h zCPAxa0|GA=FEXi#MApRtlPh-W?)NgN6y8*Q94D@?wWj0VhFphoZ_yASP89JeprTV8 z*YXq}wLIlj2{rRUk@rEdq?iXUPhHe{DvHAG;oYK|@;~k!S>w^FzTconL76p<3*Gyl z2g$Xt@2*$gn$Z+xj|ZzPdz>#qT}+chzLg{ETy5=d=!6V%>RvUO=<%fGm?Mxmi`01X|#eVxeY`;hC z_ko}3{$BfiQNL;AvePR;H3$O6`ozZ2Id4tc7q7gcFAm!8ldrtBHHSVRrUaX0nq)gE zl=rn-i{HRaCj|79zRXP%0BiEncMgPY1u9Y->on?FsHKELR(iGZNrovI@9PD((3j%j zNa43P=e3@pNf&ax%LfUGmEh7qhD4&UZ#h>as;anCop_9*Q@!`93OdyjB2M^KmEy5z z#@Hh(LoiI?hSyZ_xC=a4s1wJc6LymEO+qyi&caSNjyc3g!fz{736qny%687$TackJM} zqTYcED#N5eKO1m0Vy8j~kN~QgC6qnzqr$O$5ewFmx{5K9>BN#+<$xS}vdCUl9t91d zdpZM(u?FM}f&foD2F3zjERq!$s-GA!cCNt@3(mGRYzpvfOq6C3o?=)O;!x^6K)jnzebVrnG5{Z;EGTH#|l-$EvP-Pzgwy z7$cV%m>6f*6=0_0BE;}cgO>=aQry$l@E9nekg2A7nf}9TWE|QJM1lZ<71P!Y00-mg z3EY76pitpJUqe5tJECAZz9kPuF7wgQAT8TFOs8z`iB5@?MbgCbZQVBiMqa10f_@Rv6D6^X}M-kA@Uv?hVN~#$aP$ub|a^E(XXo2S`$B*lUd3uKt)HgKHvo; z-FOhK(e!m_ej=A0EXu6(faIhHvRMSXEC8Yy6TO`-o1mVF^bFIPmDy6|!a)z{(w1QR zW*u%oiB#5b>`GIOxGKrB%j7&GU7pq03!xeM3}pS-OHE@h=6WzD`>md_mnMUMjJ+%k z?AtFjgzK}|v2nR}ZM5@;IDg2WKfw6|Ve6hgH&SyR09q(oqd!=;IzVYkvQ;dRLx8pU zN6Qq%svtB7l;;i+0E;mreVA%f2!LRUMQ$fALDKeW@}KCbX#osRSmG;n?vEqBnf0nz zfq^N6B@RRdHCZd($>co>i{8abvshO)11z*G1$M$tZbd9>Tpw?Q!S1kNAUNPB*~%xu zS>e^o!>jEqUaRHBbWaP7sdb!PzdXKPXXl0+-X7}fSIJ%s^qYKpnI0&hVH+uMeij=m z*yajhu^XeCXS*X+sk15Gnv(In*FD)AsbPBZ0#C3}IX?^Abh%>xcK#&iPs(%wWR|_e zyG-9PDNCmIfoL&ag&5c4a9#i6ZvbR2~(X@k591G{2iCeuZ( zFy^jOh#bA-v1MAb7a?sQ;?03EnnFY76VQZtQDF8F0SmHwM=6@^BH3)G+0nS zPYnC9;jkssbr-8^4lE2rqs4(fZQB_ZlT~NL!bBMqBmG(ar*SM0NLnPZEN8ohHk2yO zO9KarLw(~6B7a}G1_Q+|Joi8skl|1uX8yWhq+jjzhVD+jW7cf|u>mvGXOw)VS&qEw zPC#qi{Xbh!j=y&A^Ofr3tIwH~=qrByc3Baqb_FyU5~7O-ki%^gGp2F0hyZO>k4>iF zQ(8R13|YX(l7s}$HE@S@+O`T}T@WHuANs5hRo4enR;+y?^oKu5Fk8SvlrVIJ^f}c? zE!vVo=~-QcHZ`S;OJ!eJg?*~SN+-ewoXpgc{h-q7y5r1R%4mZ}frQwJ?`7Th65GpLVf?NM9mXX zkD9Iv4AokXtW0u9Pk@>KZ6yKLuy+M=B?cZ~4ep9V zImHeVM^WLVRe*L-0+4vkF^EA$VkWK2Q_w8PIthR%C`u3=DF2V?OH%bvn^4@70NAfr zBwqm)r+mf$lzm3~C26JDzG>r3);PH?Y8*tv!_swd;KKGZBK0kH_%(#~kf?}+BCyCK zV}p2%Mmc-i8ms4>n#5Z|hI21YtVN_~e1RhPg^a)$j8Q6aC*+i)BCE%m13enJ=^hft zfE=hu2V$df2@0Nlr$Z!Ahn#0aq$`h(4~xy9N{k^H=0dhIOAw^@9MFdFJgAxo`V8!$ zZ@u{epHrFL6a&d7k%`WnJl#|tOU*xr-w}gg%tWHygksgJn0h43@_t}wGFGekAEFM` zG~w`}l?j}fJr%P-w9^=@k#t!i$QxzZ_YSI0Lmrrn_Z0{gka`cwX;w`= zH>=p%#Sl_)V2&?E^bXvdokcL$Xs9aaJJL2e23g2Z^@W&826!-?L)R`V5xTT?S&1;s zo0KIb+=uNb1{KrU_Yh_Gdq_{33;lKK7SSN*K&Tj%23ls626c8z1E;>xr!GzXoAEVR zE5H7Q?T~b`;%RKEb&*qP9@q&5PATFmNBlrt26&3|VBg@2NEwWFunjT|+a;h4HcgMM z8e+`IQeChO7{HpTZ`K78z6?{imC{5eY)Lh*#tEo zyY`&?p(kf;Dj*Vrl^xcq4r_=AP9RD)A&1B>4p_SpcPIhH(b0hkE51R{LMobR##grDf-{RT%$l+R zKNE%(AHIycZkYK&^}OQdI)=#)LQG)DNBQn=>7>yPB4wmTINmFnMsf+F&;XYM_B>AgvC_89M+C zp}OL5&?f|7py5)h3pMKJeS;nl@p$D-HMy`hZncm@O$HF8?ei(EQW@^XOt;0L=NuPa zQAiTUW$or-1?EtwPt_DNTg(lCVgxFHL3su=-SBP;HCix9H|#|&<-N4g;v$ZQql$Mh zFlS9MJCyQmgxzr(!y=?7fI6jmf6$Eu8I%IBXrcY@hhY_?P;Ipbm^{LJl@)|)g1I+t zeH;gQO>>ITvmPaQt*$FpjPI7pmAeHP>>-z~^S--wzsF0{Fpss@xo4p@i~@|e zfSk%wf+H9Lw_h6Kf(8H_9SmV)N{W!faiJ1%eCZ-Kp*=sTAd1O|AZHRb?@6nVai%O50f4C{R`e3tdtt&83$^>b-!iEa6b8 zzCr6#6*t;NtfvYuA{Q@=7I6T#3poI)lmk(m`5b`XJTd5n(Xcxt(U|_rfnS(>mEmNu zt}Xzs<70QB1}L{HY_Tlb{~i|qS5SQJcvSpRnEaM2Xo(nycjw8ss3zLzOc`_59I7lI zsOlvMQ}=H24=}7fOzsgax`wb2o3&w4agYFx>Q@SB&pn{@bVCma5-d{pctt<+l24G! z9Jo>z8OU~pxu}zez=WUTbyuW)$pQvLH7&mA+unU@6}k>BvORnF7WmDq#|k`kE!yVC zs`DphO|Hmx5hs6E_dT+fSXYz(GrBBuJr@#*@8JW1DG#fkaZSX=^(IN~l}6H?VIXR+ zEa82NJ^Z*;8QLD+6@4_kTP~h*W1x&k*`pM%!}acPjXSJ$2k464JL;O5aSTmSe z*q!743f>cyT@Qb7xF)k2$1==;MQk91@yZ&0q+D=VON@iVd&v3Wa1|rgiojojTKa8{ zlVS2+ZM1wocR8%Es-q9P!zSJ272dsMbzuLdSC%K=Kwvc|p3}ajPau{X{&eawoP)vg zev%G#?oX9pvT<8J=Ta57ew1v?DJ{j*c~+i$1J9vT{7`T4_?%_&Eb8)06)%T4UiI_G z{&r{wM@C{N>-SzWO7>Y*;YcQ_{UkKDs~4HY%M}T%h}#jztWqg1h5arLkk#TCRD>R; zTs?K)=}vBOdl-n+i=UrCCfIy?G5A&CYCc}TpPhkR|7{rs)wAMFc`VGw*AO+QHAe@p zB_DJ8OLK72AtKuO`v*d9K_Nf?{evH$BrXb>5O#$W!s5^u=OmvTO6OTGl6!4kZcGhk z@VYxY^tN7{eo`;C{F?`Yd#}OQ?|Jh;V6RGwE0hDNDVa%Ku)$NcoHQ(THe4DUMka3& zsnZO8kk72oEMe^f&K{}&_E>CfDyE+F{W)a?=$hUN&WaBK3fGx8tireb=Rf~`Xe~bx zB-ZIKsnaGu)KWqn1_SqLI`3WwdGXcaXlf}mI5qYV**)!|xp`l%bmO_}$#KdV69to6 zhhdO=EcG_yX_Ke?@zhufo*_{uADVFU4ABnuY&dQ0OWXS%wiR?jAj_^R5Es&L2<(uT zCHNxkWUmqaJ{0BiKoMUP@D9nN<~6U zvE@M;u42W3sMxCQ7jKZh=jtT%K%F)EN(tl%&*D%^XR%mJYweb@c3z_9KCLbyvp%_k zr^<*nmD8|oWUS(sBi1>j;v-T1&#M?l?N;1Axnj0tP{o5(+&-yd_QxcZKi&r&99;GA zdI144d=Z4qdvO&zb$ns;cOAtLcoQ_`6d-7!ED~!ZJLQSSEdADc^ubEy&h4}AuHDu5 zQDpq|H;LIXcf0seBl*X$J0(4@T;`{q6F(z`k(gPfnmiD`(M0vD%8BYxw~W?hSVV5R zyP8jie+6+RZepZz;ZW$NMKkJCSrWAHp=!nc5yExuT{Os&<6_D zYsl#--99Tm5GQ|143a5U&@3a4Kr%=UMA>p)**h{`Oe_1+`T^O+$#<8rWXYvGqtWhm zad_!?a)(Xy!Mvh-F{w?tuD`fjUn96KY5=Eiay`fu36Nh=ZCOu;L-kneyjE)WJA;v6VbV zTCa+?k02AwErmIfTj3U!6IqSC0Ru^j>A%B_@XA_y{2n985zQqEg*hgp%Vqdq&h!Pf z-pu;-BG_Vjc8S!N454c)6&cYopui$e)^C#ZyiSPD4G%@dbS!-f z6kn)HF8P(9oPT_T@J33TUtuMBa!zm+AyRk?DIFIq@(Djf>kTBI8%|#fNkIrtk_}mQ zPyITm4*=CMw1fkgCJd%kO;3#3gTR5yT1mGg{H>qJc6q#!45IU`{W3r5`R~X8sa=ax zlIpZ#CJbP*6lBKi!A3rWCt?xLa*S4O#}abyHO>vMFCN8!xmy58Q~r!2 z@Fe$>z)s_<>F>0XgQ*NRfeoS|4YHW}L?SKC1>0jhb$`O@i&$dGkLMN(uISV{$=qoM$e4VkKdeHkhCKcLQkIO7cobMA8m6v3!WU zbcoj)fC|EPa4$ygMLTH411VKHsX+mCneL&MjLPI53FusUgxFd&GQ{~n@jZRuB?@ia zi%rBn2(~Rzt=Ki}6a)hW#etLLhRK2CYYi4aG({!LnNuxQ&(PY7Jmfbu%%TssJ7rb2^YXLDM`W5PaY#?Hh`T&LGoUstD)q-jc`X)+T`ga zQa~($B@8h?Ehx@A-U{eEYIrpVtAvDr00=A!6wKFv`D#+}X1>TIo0M;Yh5A{fpC#@^SDZu@^|FE-4t+jrqFAyyi|CpS4cO2j z^hWP4mUUU}70;)$k}``=ftn@A2k2^k;pT^NN^qGZ29M?rCA+A<04B-K@nvx)N6=^@ z*Ql3k+ylElSgQ4iv8m*b@C(!G=6u$^Y*$DV#Y^h4QYg$cZ_AoovYGT22-(uk%qV~q zXC+^Ln|gt!l1@Xaqon?Oo3Lr1|0)JTXb*vnD#o6c`g4q9i|rvatdEG-`4Wq2GTMR5 zdWK-4cC#HPUJ-sIZSp05%;6bMXOCh7G)Hr0Y)x^mu!Z2Q`IIx&H0O=FF58kf z;j9MBaaJ#5N)%smwIv_fx>b9G(W?S5<3BVhZ!{f2@E+1W3z~r?ohTJ~SVzqWV{tn& zDAA4Dc^a&wjXNgB_ochSht0ZXDJwM-42v~nm>JNMX?BUE5{Z-mMpmWPXlo~;Q0#*X z-esTv>e*+ina}QFAIEEseE^}@XSOJKiU_sXhaV|ldGKN%BKw|wdfrO(3@2Xf!_Rz) z#?_8@bSA123!=t|Krh*xqf73TRAb~4DTtiBa?~u8Ns{eLXAMeICW6Q%Yx%#pnwnS79s6t70fomuL+%-*8a%!`tgU|^)= zvbfy(v@-TY_6e0L%iM?<{(?K~g9biS292r&V^QcPyfd4{(v`8VLXd+Bxzwlxxu}(V zu`S%dEv>W|6Bf>gWql2&i%n7KZ7w3WKWDdfy%lIZOnf{dTIkaTgvFpUm9n!QG+f1~ zQFKnD-0b36*2_5?x7nCVqSu3Tm}P~w;fGyjieJGDUujR_Eks7jdT(oOQAJo)Xwa;# zn7>vk^F)0Me7%KGBD~MtfM0hFMU&$B=6|4Q$5pPJ{4o#(iUSl10 zFL=&&3h_21e5UbyC&Ti^Grs|r-0&a7VoYV+I0kjPR-HBB2dQ<0AM)BLk7h^)R%sdp zI8E2oGGxC{jScFBUXMV_5hhcJGzk^dD*sKmDVrQCpes_qPCDyEkwUtiWFHk2gk#vb zh0ndXl#z2v;quzBv%*h!^L zfd4(am|iNNNr97?!xzW`a`oVQ4im*L0yr|sEBr+e8bZV<8+(T(3LD6`U93KBk&@X( zx+aa4az7iTu!h;GDofxmO&t|!rnuV2xFqJj)ka2@RfHmi)P|jQI6Ms5vVM(m2KSG^ z9TWL14IGzFDQ>Ao8KdOo5dmDrn@zSTpCj1x$iShZUl>XL{0yaG*&QmyBqWRx11dc} zJj@QbhWsupi=dj$Mn5Dw<|a=xse>-77HoK^`+$s2YqR@a!WD=WebU*6&tbUrAWcyF zjkG2k1g#lKAw+>8re-suC7aEzi^&Ebyr^^Ty}(hR;@9FJ$^Fae(V;VBgV>Z!*AMAp zdk)x>PgP;VLlrvp6$WyFKoOmA4}y4!t}_N|k5Bx>J+81BpFOUh@@uBGyT_GNKGs%# z_I2{+k5fIasJUc?k}d~SU6*7ksY|i%QdRF%txHHi*QK6&P?>q0<)dzq7NK+9l{^>S zb-{JYu2W}2>njU%C$vwz^b%yxd?ny>a(QnED=`z!#~T5|JvLZ%TQ28=RUgRFjcs4j3#8x_|y0c3kO!DvO8Ox*N(ha!T59sFh<V^VLW9|ul%#_sh^Bh_4tVuXmbvBt(Ms|i z67fRJ*=*Uf+5al0cwl&(Wncj(#~U~vpFPg1w5)#0^^F{NaFk23pX2%ze+7t2-;;(y zyzL!@78sLHS)uFXuKwo*J9bb0l(H?8YH{KgZ)-e}Lm&t~YW#z!c+~IUZ%>g=_HzCRb)mkD%pTe~{x-9DfVV zh?|1_7iPcaGO*KMcLHC(s4+rjCr{*)0wg4x3UyEQM|w+mC!mUsEym){qM*oXz=*c7A(y0Z$f6Tjv*Quzd;aV+%BB z3m1?Jh4>gfsNW*C3mk+dZaz(-boFy;BxC#|9i64Py{}jzQO8!P+ zZ^)=!{NStG73aj*dOg;K3Yjklg&|v;XHi`e+@ZL=UfISy8)sh<03>&BQlr`OetGeJ zd}r=b1b3w^@QKU2$#*Rc$XcVI3*@ZEXtE#x4wJuC6KPT{NX^r6d?dV+&pF*YfoRFmdlKf&acFBa^$L zBJN^Me);M6{|jxWS7|Ij;*1K%*byKNt;&Q2jyvIfzU3v~EGd56@4_v7RO zgHEX57DLrQ3?fURetik~DcbJ{_>aQ$0zE!k5r3SW@@^|#hHHDP@k^>yKi5lwYDBRk_T!% zFDVGxN-yva7bUmKI_tvUi)jBiJ^9m-RvwXD3~_t++43U|LwzuiToRZK&PPSW0mqSR;%qEYi#KwW8)?va*Fe zm~<<;JYSRkS`prnFX-4=vL~5Mmj+9N7g2*cR~Htt`6r18$bD+Rzz@Vd$@$r~;G)C_ zwuO0%wc^!_#!D+{x^t>KM=o-f%^{9n&ygU*DRDfwF}WYy!#}1%6d%JolDL@;bNYx! z#2ED`3#tJHpwfh&32_h_C_+|Kw{gG2O|Ikam#jQPA&ji0!+fdSH1V}^04R%d{x~O$ z0C5kc!R8-FrR+E-dASBwE5%DJ1Vc(-KG?$+?0A^`f$(X& z?TN3{Cup&sdu+sRAEXjn0A3Bq36-^#`>^k!{8Q*lTl0)QX#xxv&kzDj#rpR&F8!*y=3xe9%z09dIZ0^xo-YNpB#T*RR|^cQP81EMg>v5N_Yc8qG>TBKWP z=hl=0ecaYKLU2B}?+?@aWs7SS8*Z)W+?skU;~6bHY-p;$5yCSxvEA0xBW)a0i&!IZ z6B!f4&sZuc12UfoAEV4EFSMsuT5z$V4Z^e2=)h5uHS1fmU!|N8d*|*Q=M>Zht+nDY zk?0FHGPIv505%NPQh0&X1_k-5oUlHa?WhXyQF#+!Za4nR#7#WrQ=A zEzTZdv9L$zfnrxIjmDilooBmww#Pr)ZO`_0o=x#=uYWeBW0mQvtySsAnZc?Vi+`z8O8)LGl28FfxI zKnQG7{WF?|l7v&H3JoaDV$|$~iuQ(gHQ>?N;O^4klgv9<1M`k1FDxVZ)IAmx^8&U{ zMk^Tcf7+%SRF?*R$8aNn{f5|QTH{I~VyibK=2BJ&1U4|04wLjp$73EuM>Ptp#dzjJ zm<_+3nwD+T=o)!-BL3bB2SI+JZ(97TECZx?A$!WeAH1LYA1>A-un`ha>%!cIDd*=B zDG!9{0|*LkFJh%e#w^qPtj=vxNqMj&XBm3LO8(Z)1KmC^e~WIffSt=?rXK4N4;20Q zqpFfB?Dyu;PEVe=nbshj=BGVv;5tobRL-4+mSE~z$@QXiUT<|OWJ!8@=a!RrZ|Pjq zBHcPa?P)vLWDNGcA}E-|q^&n=k$o;;#+0)Wzutk^pTnLm_ih zC6hOh47OHOK93PEsm8e}XPSz^dxVfRypBHMUHfVto(wO@KAy*`ynIDIZ}4!eGj{!oWn3k0^c7Buc8J4>AZ2#u)>9N)&aqw#0sK{2!&yM!WSW z9HMQ&y#mUO%49QTAQUROre^io2SBo;>`yDB-0JN1y1Aa@u}qG_^%I++CD*EqfmB%?XGQ>oZbB3cZx%mzK4&gKQ7!KMzRY-} z+$8cM2a^Q5^%Aiv_Y!+Ax|folSQsFe9fX~%ROY6j%5ZR{VEcNhbV~p<@g&1b2APJL zWHLQZaIUjr@XeROkAB7Ae^|NkGOgn%t3PiUa7~T~xC$2Fc=WN_6ecmMaI&(7k!p-+TBVQZ>bKk8mI7Ko=}Yw zeFCZ%mM^89mr|DLV>nOxRY`qpnC-b@uje%5c^B?+-Lge8ggqH*z3p{aG1m)Y0+U5O zJsy-p#8`1G%PcdGyks4dA5_KD#7Sb$x4*EL?6}^J%G)u%j#=}PVGEV4qUJziS_lPBA z*(XB59`W43ltCesoSQ@52zcyZuT5BW9S&8>g4h(rb-%OjxzAW6Kb>1skLj6_H41Ix zD0QMGOoV~cBQ;RW@lY+-#14Dy3EgZ6D)ykJrufsgtmt^DEh-Yzs zbssYM;hAD>hEyY$hDa}x0+Eg;l@E{LS9lG}E4MhPDJlg-QAj+NDkDrdQQN2EeOa0TQc;o#9jTU%r-9!rN)Qnc zZo@|K(KS@xNe+jMkyW@K`X?8Jq_y5lWLS?-GbaJXGSe?dp(w;f4jW#GbdxzEY5`H_ zsRr&jPxlk#P#oOxmFb}3May9}Nhy|A#8aQkQF@tq6~eyPK7W7{iHB%b>2wH{jVS(u zC6cAGFzKZwkvX@DBwkVt6vKgyn*5<~ZB-s9Ojf(--k19w6Ki!?00L~=764)~#g zo6mJLp}DY)^7^>#NzQUiwpw4E&B$OVG@@mCJwpZ=P9svzC%EMJ%#O zaQf%cDoqektJFI4C9G9^uca5*ZkAtIp!M8Fo&CSOy$hUNS9#!Bb*uW_E#21JYCUe1 zWm|SEkg>33!C+tEhin|M2}#%_CS<~5(=B2o43T++CKe#TfMUd~l2H$O3(%+(SWjX7G=kiab}!l|NrmYs;-t=h77xFx$C~p^E==9UgtaC z87?L?f06Z)Nl!tib;Z2N_KJ12TII1fQt(i}MT^z2(jI)iD-1fHYi7ZjZD1w~6{Re0 zwkHdrNM~iK=5QF;AqBHZ0CPA<0Hok~NC1>$ZV~|HxF`vLt_>G6whEZ6NfSNjkO0N; zE(wrA%t->Em6+eqj4Cx~Oe@q3ZpE^bh;tfB>%Pq(+D9r4@KALJJLF|*P+e@W z<)DG1?k``@tybx4s4ms{{$ANG^y)?OLi*Y}P3E z$nM~5dar1hQc4Vu!({DEwgL=6?29-#FEtOTs)lu-0!b7As8SJd%G=b|sXaT4TwU%O zz%1H9e~&lS87!$f9i2JKdx8T2M8?DQ>i}rn9^tmDB#GY=mtz>>04jIKL1m|L(jR^& z_NQXx#g0BQL!pf@Gl#(a06h(X`z>Ww{#wxIbJ!Q9&mn8Sq4WLq-S4OQ4qaBjrXl4% z!sdW1`PWwy5@W}5C6OO!L5RSvYz`TT(gAt|>0QDTBZM{lIH!WoEX|1FP4*XrT^Ac~ ze~As?IJ*j6KiGTz`ax{V$y^*1SL5h*T9as{P*1O{r6Ru#H<@wm;n|T>T2eNbL9?~{b|D3t; z2+_GZBu`@1ne9>r;8GHUrQDgAf}+YxIT^%E(fP>4Aq1r1xP|j70W$iFo?U2>Iw0D; zmMe%Hnv>jo*jGyB=%wt%c-B(!6ptFCwCHZSi@G_9fHW>embG$v&|Mt!@rc*o6Ep^6 zbhGR;Rv(u8P+YIo^;*rIcF)zOC{J?`U1~!u2F_Ay&Km>IN9vYfLS5GMV*c8$%E_E_7?$D4% zkeu72XaH9<6(%VWywmGB=A@X>EitCUmlvh^OS>ESKd|Y@_BnxKe$Zg%M>PCY-2oK@ z#~>%iB`09w77A>{anIFg-p&#(B#?nJD72L^7)A4eqJa!22h$6K&L6Y$`8#5&ma(BE z-r?O9?}7wPeGVCob%5E1Jq&uWPE84vqleFZWhOz8nVuN7HX7B(#%(qef^#%KBxvRM zX7YmXR^<#Hk_^V~3-+84ddI=6%64xDpP0SK3>Mx2ALM$ZYya-t{BAKk%b+=db;fWE zZLFDep1wm;V)5Uld`?D5YvackA*=^j+r$~K(MsejM*+Iha9NG>oVEhRgilGURD^8MocK6)Ltae3%q3)Q zUSFmcug6Tehv&;)&d=b>aTkmH)35sd+gL#93|mhKj#y%G<(TvlP9qIqs{w*JW1Ut3 zq6DBAq`v%XaFAYfM}dBTNf!w3$RIUqdkT++Vu1t$aG>zg>2)=AZqITOXR}vK1#G9F z`b`A1`OF%&kN}1)6C**EGYDw%d0?ML;BBDlg8bjInztaohX5mK=qV4>i0x6752tEU z|F-sgcYB8YG1lL@_1|QJYylC+L5^si-7o@sJ(OTIwS~p}IPO=Ri_sS$oC?s_^T86d z>&~j#>go%b{MA1kBfwQ8pl$6X&b{(Da9xZz#<~UiB`C?Wo4S#c;A;V-7E=ZTIQj62 zd22DQb2W8BzLImPh->Tu$&)UJ>$Dbuj`?Zd{f2r#-W?-c*Lk|50{aE8eIQTcZyLhbOCBFZ+k>#8cy7&sAxE zH#N(@;JxgS+~U~=J`PpXD+$K*u2Ed26APn5LJukkcmkD&g^6^`r|0Fep zaLk6fP-)S$?HPO0)RKrN<7Ew9qPcop<1ND;JbEdISBuU6FKHuRA^KDXC)jy zhz*c19^WN zW6T4)_L&2`r*%q!!8iAPb`@JfByf~)imN3Mp^JWl2B+i0rkWe(OhCvk;DtEqH3Ifj zS!>_njakq7Wg0+9ykWUKu|*M-M1m^6`4#l>uNJ^&M|k|956ca!#wDSYRz>49G-wVa zTePvWpYF-lzek{)Ct(rD%c|d0mSDVHnbZXk(_^_$At4grbD>kovUZZJM*4n3e zW7hqCIj?CLm;Y%^lV~#s)`2PQm1BxyK@n0Hriay5H{t;9Na^J#72LSB-Iye>AE-gT zlf&g{x3DDI$>&BIhzb@U9Etz%n&R&K_v@p5GLOas<^J7ECfQN0x~8Pf#H2X)*gl9& z3*j*!Ih6k|*A#Cc8+nu?k^s>cCCz%JwUjy1$~tXOKsX%=+9|w-Qx7y}rOoXPA`cYr zc<3&;DTKndQNA2CR@hT0|7wDT34#fBT8)M)#a&`?tt*%|S#gQPraRz3Ygv4}l6D|U znqhYzCQ{kQav(cYT$wa|_86yN4$Lf6C=gdQfje18RxF=vO>mhnb!$P6D+S?-$ZW+C z_krVQQ-9|9xZ~Buj^e?G?h0+514v)NkTqWZwc~f*=+DatjDXSLuJ&c&a9(?SPrQxq z1@F+qRy@AvkvL~gQ9B9<=dv0Rfqq(@v(#y-i%5uWfG>V<==}*Lj9QkmQs~XdsKotV0^YvSQtjI5xMvLgdZgV!h*G|SaLjMlCA zS3Wd7J-uVw1fLcb*U^kJjI|3rxfRcWTWJZG2MjdbS;)O$ILasflC$X;PnCI0xA{L$ zyFHcVdjCb`^9G0NgW2HVpiV1T_N-oyl{NaWG>WD8uv~}Z%8FaY2FkBI!p>NinE%}o zZw5H1>kkIF=^rVN$0z(o|1@qO0N?r!jbN0@zx-`)5OJsf(8LJ0zwxWcz8Z}Ba%i=~ zYjX<>E*rQ&J`CIRjT(8=+Z$_d!mOa#h^rwWyL#_9A?s@-<>3%;2v>xibZ$8w5d8G99 zhg$Ee?ukX$dVh6KF(0UIcas&KL-KPUvzQNhPqeoW?xOtn&=k)wU24;yu!G{nwi$bW zF+Yes!EBV(poGtiJCVwNPzweW$kuZ9G^j7*4t7FF{d+-%sZu$u87E>BJ(#@D;;L*3 zkz~el)LMufE{8{($SBg?>gedm zt*aqjhfb54WD|t1O$e!!jedkur3p;^{Lfgzw<`5>5X*DxM`qcg5!$OgS6SGi(LtpO zZc1l1dEFM=Y`%4j0ZfyzQ+ z6NiM!Ly};9*+YbjgN0+?U%)e%H&N`^+1k@szsjqZQDcPsx!tx`88;O6(D6rq@gGnDc5PJ z2r8Y16EgG7l|WmK3*2{}aYwvVUL|}ShTLWOpRWV~VzEySwgdTT6IXPYXSH?njD#Y3 zoQIL3;XiY5*?fwS4v$KRGMgzCN$+L}rn@2o?;c?%;NSzTH&w%gi7${R%t0L-4h&9m zU(g>Ymmt{Jsq>@Y?}4Oee5;Fu65yL@V$XOp9w6{DaIW zS5(z@yC}GK9iqq)=}uNodw(e1KXWzrMC0=PZr^imQ8W7GKB!H#pP@icL3+6bzMj@y zXPs={(i<}F2u>L*%$T2eQBeg###BCw(H++}rWb8lq_`G-;hx{7 z@9{W__k;1OzAc4-i48UQyx(XS{FN7|M!)& z0071TQrM1AWCY@(;!VJ_5N6K9n}MKsN}Gu)r^IkGWpBmK$tKj1VvA{_9VU#i!=kpQ z{)vs*?y!-AF^PKh#9u2AQCq|og{Gi+lwbI0W{k&L>(w(dg@ZF|E%@S_Pg}1J9sB8V za0z5PJFc1l&28OIALyaejkwzKedy2+vhdrQDsC@p{;^Z(M;P(iovp2&9aH=W?(b20 zS19_YbO2!m7*NcsV_`XFlE`9bkW0LjMHrbq{@^Y|FJTwa0AdbcD#E(Oc%ni*{X>XGJZ@=?2%6X6US$33`r@)T zW8r$RJocAiXMCN0*3l4H8-iv1A$TIpaC(}4ZjYO3&)SWEg45F+!;9Zp_ioT9vA^T2D7H%U48?#zt^}ZQ;0e#*y=s5nkdvWlHiq<)zDcLu^PWG1qF4Nr0ZjGfCp&fy#tr z?jFg;}Ji0gzR30Tf zD(5GI(j^BgkCKFwm5K0HaKB1BlO+_Y65OCH5g-i|6N)%_>MEtpT4PUC1F z!8B+4rnFEvXY!j`Y**iOqOv5iun<(2PSzst%+OwFh-@2)`{&~Bb;=q^PAX1;HJ&p+jI^*wrh{23O?e;n1RDF*=?1v&Jss;5LEYAf2MHynT^~RW%NkVGiD=}}N-t22On|%<2hWjQOv2Vf) zdJP39eGB<+1ej#y!I>T1i5_NXTW&n)OHrTo^^J%f(Wj%=koyq5 zPnq{$Ec0M_^cofi4N7Aqf^HGm)K3czt|tT&*ZqQn>mILr)Yekj2j(st8?cQZWEsrg z{ojsgj5mZHTZ zhBbhG25Hone$0VH9Iq)HpkisNq&soX*=Gt2aqs?1EQl+);P0~pzBf=T#drumT@rnT zH?!Vir=hBxym=c~vN9r}^Zb@#*o6-6e#+Ry6l!~ydB?jqsGD9%gGMQqBiFQ{U8zsZ z1MO_Gg+pEpJ8fIRs_3lNJ`JZycKuJ=W zd#(DXeV*O#!R{})3N_q4WtW5zpvAa72cC4DX75Kf>29P$24ZtvB4zH?87%jSi>PM_ z-Om1XJRM2+rqtvZi_FGLs8Flsb%IUbvMtIqqst_H{Ab%{nE`;X;Cr*4;c~Y{nfSb*~ci%HtH1h**qjgr`^uq zPc0uEKq9d(NTnpH?42tO0Kl9453jX*tikG2G=rIv-?faT^uBQnn0q~1UD@Ih&usBf z{fD};53l^#zpJq;$KS9zC#!bs@CSk5usGbJo!vpbeE08;3Fv|YC#9hcBS__4sxj*e ziSXh@qoA16ZvB{NF>C?yFBRj0L#G(#jZaf;WoHo3G?X`!gxeupWEDC`ypkwL6}}a8 z4ffOWPw(KFFDLyXsOW`C>G8z8g!^XIz(Qbvw? z7d#y0PL_V#SgiaW8NsRqCqF!bMlo32$RM)3#oYws>mh5LZ~bT*xzo%ENAzTM#d9Q$G}rPht}dEC)^Sgb2dKO} zNCm#TlKaQ1`xlW1&i~wpQC4rfK6{$HBK#Vu_-QQLdjcd5JT^=3=?fpdT&*3ZXs}I- zhZQ_<*}!;!ky|FFkVN9mM*7W%^;lrI6iO`0^;dH-X(X1~@Q>jn+y2mE)zHRRtkEZO zqVg{b=vmyl+JAMiGv;jc2rW2KvCwiMT8U9Zgh8QgFv12yIW&GFLp599WrKaU^Z?ZE z7Y7g_oFF{&=McLwou&LhJcC(^iW19E_pZ!V;2$r=20+MENt#ItZvN}=--r+cL?3>! z2p~lUAv{D#-r2ZG2;LrS6o98{m=6^vWnE%L#Wz7{pcfBOZy62)F3Z8GI+`XRl}L2* ze~-4|e?Td%dBL?r-j^{NbaAw2fw2*S-ESg)*#pKsdJx{*gU0rZo+CzG*z=U51!rcs z{-HmxKPv~N$SFAu5BkhP!ekm*N3<(-V(PlckTx9B1Yt%NDsbVrrePq+G(i)BX~pP>1CVou04NgNymddXpZkwtM!CQBV>}2tF3<8# z;ICnC>W>$E(4hK%jFson&vA8GG11aYydnXMQpAHpF~xSe8f9fmQJ$$S^N_0K@qK zNadPIjtU$H65%}6XZ4&W#^3-Wmg(TaoT!EoKPdoMZx~Lt!`h{tja2({SxBlMsoz|S z|A>z7Mr7~Lz3EwZ<9F}bH~-P(*_%}?ytOL9ZTcpTQ3#iVo0w9ol-jBG0QBAK{w(c@ zq7V5|s*gAE?kY<)y5DxX8Cz9#`Cu5=~8hnCY~hm&82@v!^FYx(CX z5D?r1S2@Lj&H{LYKUW9D{aGa%03DrMwBgX zKvlf0#><@ze~+^>{mn=lhwGdqj4Nb1J zrJGEE2GnF+NR`-t0O(*4VK+o-4!u0;c#VnDZeu`DQMzg`C75%c4Zm7MDtJ83fz%Mm zQ3LL{?`dgDbu3b?@1#0mDoQ=+m7+APh+p7YY!r*vK#{9M;Mhgq0eatL{`opc83-Ma zU7vqDD{(;E@3th+Vb-U=$d=o^X$CBg>|=}@Z)=az1OAW?SA$YVnL^(z3B)jS|KU2k za;#V#=;H#a1%QAzIL#`IE>9xFp5yWSX*fUs5Dp_SWA=p0GMRu6vl1%MI9(9v%6ltl zC+@liZP5r^#W%k~cBSC3u({H@#(VI8^^$TC~-&#WuqYu~fKkKuD9c+9GstqA^g0|=9Q(wCI zhQr6+{yV?^_l7CRKbc{_h>!wMw9bb|rD&apPXWkJC9WjQDE_+*o?%(T<-dplA1535OC~WKxQlz7$9%G+r>q26cQGxb^PpTFt zASloXVlrUC*i?gd#Ej-7fg@Hdr*i&3+3)Qdka3_0uFBdQuHG3(;~bT6@_0Hu60k7( zbEN9ep>)+P+5R>5>qxx3ScU+@mPN=CDvyqh_5fmdmh)QByUtcb(}--rkt-c(eVx60>o7wE^EiKxOHi*<0g&nG{2dnFTuBP9Yp0hpG^X}?-7uRAFu2_MJY(GeIVYl1~A;qsD zEDHMR^yEAN*w3YuNBf~2!bCdn^g&J=f%3 zK2zKf7G&S;!@X~qsgqLd<%xxrV?H@wyz=#^SKfa)rQ)ap^TgCbu4_>0;q+yXH9VH? zzwY~k-cu5ayS1IN#rxC!ANw8UI%?RP-hIw@=<23D>^;hZ_kZI3!|DFGb?ovUcq!tE zmec9mNxvcPG0dm>m2u*RnaH&Bk@MD`uD34N(z||b_GDcF`~CG>l;y&+^(7rV>p{2= z&4F;O7eX=DHYAnIlWKNK&v@DpBq_~^=bfjH{sw&>vf^^x>IY=}hRgr)oyK_upyB(jnpat^JXn0vM?fs?hDl-C*#y3%g2P|OAkO`7=> zvPr(P9_}NvnsJFI+#sPEDA zIu1PNYleA2y2rNNY|rELO+*JC4)z6;O~vIiGFVVagv_{3v*c-Fn8+U0o07Ox`R~=) z?HOwwS!YPtINM2g3PqU+eF*iW^Sq(xO*M3+LxKivID`p#4%PH%)BM3wintw+iX%Bi(&wl<`>V)az2ZL<%mvKQ7i618FfW;Nyjb)kOHsbZDE zJq4wRpq}HH*yz;Z(WxgA5N9A}`$z#u(1=(Gpba+0npKffE*g-XFim3%%+Q&j2{Uxd zNI_7fP?Hs@f~HBUF#K)rd^pvlq^X{d1LYz1xmMX`eNE)>$jnzx)S}Si(2G${Np0LD zMwa249j|$CfrJInWOfKx1QRWTSWBIu&G{1$X9-;Xx7UFuWZg?xR#0SbGxR%NoHT+x z*QfeLCFBOI_E8?9tmG2F%i_hr6FS*009a1Kivw}>tn&7uhy;$f#T#jDvF^rgq*(k!vK_;L{}j!O<7 z7^?#an4MM<2#C{tRn)WA`6#(YTJ!WQp4sHneUA8e$g(*fi~Nb7ZLf7?RxuFVFdE4- zFTqOOK;jt2_=a658FgZ(!7o`RGKnL%d8Aw0ftIOtFL8aanW%#_Rq4 zl9ISR!0lkVJ;?27x_yk>oZFT3hX2w3h)7jchEX6YOVw0QQBA5L-lQ7hHq{WfsfM^s zH4r3wriP0Nstix?(_~8#ZCB=O*kksp9qvxEv$3nXPIFbl!+0J?KLeAVhx5b(ONw@><}nF=`Wv6I9;9 zz&={j-+k>PW(Ix_%)H$H>lK?japR||yTO}26`Va}6Lb-!&^fdYCL2Y8ht!IcIPNaux-0bS6n4g6q0(mqQ_{{t4tZKLCZzF#-g#H7<^9i0^YE z8`NQVc1)Zj!agQNzz+Fs$rGOv=S00F6GhSlpLi4$gnM8tmHA|PFA*^s215%uS{c^B za$RdxH4-&L8pnVwY+c@XSEO&g%kEn0@*|I8rqm`A8ZForGA>`Jwu8*T$Sw!l+zFs% zo6jv}Y!HalFSrc0bJYtIJ-2i+|FaiCovKA*UU~XW2v75rt{|j{0WhchaOA}y1#%H? zQLFM_YNmOBDq%G>%7MZULh~&!R;he3Ed$JRCWmc+iRSqyk5_4_Re zt|?q_pAWeH1USUMGJ782G0DFN@Ejr_egW{ZG$H}M{odotgVBleedUSa%WMeJ(`Qa6nTy(Aq$$;1)5e`=ro_7YP#(kXGkhtSY zI7EC>azmn@`BaW>=RlU~>vVkGndQ%3lal#Ml;mfxL7+0^3Xv!@&MrscZ*|IEF57Lb zCPnB54J97DWSjof+y{z=3meL@yYYoIp~KgwZky0tJX;iFm)bFiR}i^7CvZj%F)k}2 z-)-CV!Ig<2U9xh^jaEe*WJ1TX%EZQ^%0fe*NGud8Vma(C_l$wcqlGBywlV48G)Q?Y z80|>t(lhd6tZ_${q-2*^z68Rp`F|!d07ZCCOd`3Iz!V99 zFYHaL3)FKx*`Qg5vSeMT6HRTTvW9Rt>@dgOAj4MDlG z@rEDB9AeUN(Wppu4DG72ze?1*xCO&S3surS^5~p~`(V_oGy>4X&>~stZsz|pMmSzP z{_*pf_6V5MD^55Kc+P<-7srRoAfV;qFmc%su5>`b1mLY-+MeTxfBlT$K{#4I47S;x z$_J>JD;ZSQ74=>^NB4&3c*ig~UNKf5s}~Ov?HGZ^s<8%L2n9sxD6m*_=JkjQy&1xb#002Qm=cedv-le;B#Zhlwdf%1@HcDrDq zQG1NCY)D21=4Ze*baM8r8Q~%aCZE>`eSSMf%0(ldul}Tr&)Ej1gKqCt0RO9wcM!HaG(A#yLfwvzXV{ObH@y=69R+Sz%mcN8mkM zGP*cRBx9OiXEP#RbQ=~-1M-e#x!qV-!`dyUP_rrPcgQm|GxHsjSH-Sm36T6av@uvJ zE8mfO%hiLYnBK#{E8tB~t{~;mw1ynt4)eb?vcNy4`5b0~MitYl>II&K zzx5^bYy|aIHV0iG`G@LrQ1%&1tr#KC$#5~$V3=y1qbMMi9hrmtxznJhjoN2fpQ+Xm zVig~`YmV|RTtV0ZFG>nlT8s(yAH#^5IHZm)CH9Lr&bLB<#Z`tX?k-PDn-mse9yDha zeui{|`DpK@eK&D1_we@Lw#J~aZbtS@Da05{n zN*Q!$XYIPrw`wOK7i}U~T~2 zSH3lEs_HA>J8i^6IO_yf#0P*G(3>%4@{HXQH+~MC;g>+qxsdGi+iL8cnB)2k7$U*l z$u7|s+7o92y#deP0y)W~Iie{fTb7z{0L^Q?(Z4(p26^%NFSW<=~YCX)(fC1Ct?Yde9p~cQNBhK<$$~hb>;HsEo9h)9MKMUD@)?nVWO8 zO&b)oXiO@UPT150!1dIThEvKYBDa^Ao^>X%#XbfNLPxg<$W28wEaJR6T9+%~6swb^ z{qozP96jkXp>z2K?UFtOcPNRI2%;~ zRI3V|!sP`r@2pdaiE&oKUzGKQUyKL>yNHkISKqSG^oh)c01FO(hdaT$Zs|*+Lr9LG z)F5=?PFO^qe`h$gjW*`_KN=I3v5Yk{-BPL!Ko#N@Th;j*6WFhS#6f2nz3N{FfYEsd z{2~BM6FT*3HE7MSf3IFu-8sKZ)Uj?~miP8$xqSg^sv!xF>={t5wqxJB(k0^gouI{R zOz5q2NpGb~s1%~4ipaQRGF5a{FKJgG6kQQaU8fC>Z1rSvB{B}n;$dX6WXmAm7|Kp8 z2nHjz4E~pE$VEA0%p7?w`oAgJTX67c;lE&$J z#Yx-o2n{9>5bk%&l2gfZOQHTFWp+PJ$?jJ;87McnH)BTkW^x2)j1c^A4(12}7$nS~ zZ5C=|GTbr3AjwuIeJUIm`q__ey3i=cn&w1`8 zCdg7T<8oV$_Baw%uyp{4;KeH2hrGC?niRwJSJi6Ip&G(KZ7z?^^how&{bW};r32b5 z7?|)n0$_McgifX#3xBwzh&JJ#!h6SHW5t~~g#;iYqauatHKOzb+|CfPQ^Fl`5`~hTv{R7w6 z=zSUw$#tw!B8E^b!`>wzQM&~^w=@XI3n3ut*@Nw@ryRMx1cQajXniC9&G2CXWgwG* z^Q>UHZaGqZIpY`uab}H&Vf>r%mX(94MZ#2ICdA3d^|-r^b*o+$e%v?HypY)3g^IC^ zXi}Zc7%MOd5+w-7Ax0K$zZgr0Z|N*EOv_eS3vO%r^0}a-OE~f#KgbNfRhK3@Pq0zh zmPK5Qec)m;+c^f)TTzpbuT4qs;_2M`SUiXDn{`9Fyfj^IM%t@PQ4QQS*pvx~bTlJI z1sW+RWUvZkwqrFnLpI7oI&_#U>evU^EOZZ7>%PeAercq$DcqCO z1c`{Djq(g4!btv|5kpb{(-lc5Tc-69LPQu}9B#dy!%bmIDU|zXd>7`(AsG?i6w&4h z;GuYC7jOb_ByO>-+cDvIP=b{td(N;yNMlIi5NL|)W+CMmWAcpnNuwAc(+*ksaB_&` zRaLy%Qd+RoFgM^@9E_0VKb>I1VF&@6b9D#+4H*I}fHO!wT@N;0o&#VmU+PkZXvLi8 z-#iWm94pVcs`;u3xAdf*7=!ZrYmhvA)utLJE*OSj66WY>HPMtc>GE(jYFCru45LVp zS5B(UUq{k=z`SL8LXG72K!++9YMlo@-VY}eEAJ6yeRI#~$VmRS8Yqth>2wKGQmlET zqhyS%q5+DgEB*r{7Xq9R9o=EeSP;wMCwksJfw29_pA90B(qHUjZ$X#}pg>Tj->y`$ zM79Y`4=tvBX`53`)l0sGjLfMpK(^YDhsM>TauVb`*ihB#P$DFfC`DntOL`%SDw<)p zD;g_EVgo8>5b%J!nJm?$+Kz7LJgeCIaPk67jbSO+(PnkHYk**;la>GPRIm$8uviul zV!Pq;umiMK0bf#irrB81_Em`cpnUl=#OcAG24S!df0|m7fP)lDQc2W9QfWN(1T}4x zoVbESHb%+xB8W8CT^*y<^fE+?h?}#_3PFAT;4f8a zBJM(V{l{4T-^pjOE5Ho{wn-!j282pGPjKh|X(c$StVMac9t3+0?k^Anp^{6Oh^2j` zGK?6vStR2B=u2|D3Uu$qHVU-2qByh#EFYU?)lF(;LxWJPk|k`m-l}MkEuC7#7V3t$ zoP@yCToJ6oWv0UgxQzCI_=W131gQ$cktx(SLif;|kxcd$cv24`u1?b4ETE zFzAT>JtG8>bw`+L|C5(CJZdT>9WqNyZ@3QcS zIGLI|g4PTspSPbCb%Xt^{NB+X!9)anku-buv+~8~w4XJ0Nzg>eB^xS&q~b4Kz0ptl zKy!JqDgT<)==d(pbxVa;cAIgXZ^Llp=J3Q+4%^vyz0}t${kbfEl=!tbc<4p!eABVE z4>+(vB4p-}ngH#V}y;H3yR+hqy&z{HWUvVkRtR7hi-{0$`5?;)QD%R zF9bXF%d(j~cmqeC!Sn_1Vn9Z?8D@F|nr|$_CnF-Mw1E&Bzl5iWAx)HdzRWeGuVdaI zejSNxge_rL%ck1t>itQs!eR}(0)2HRN-WnZP(^H+eN$ZPFRA~^6bF_Ymx;@!+BZz= z&7Ybd;5_9Ou$=Hi#5>ON-9?PZ#|mEU`WuL-f#Imjw3q}Zx8{#D2}&6C??T00(O$`Z zK=h?K3=RbNSoWoxuZ{oy!;N#Sgb1AyGjKR~AQ4HYfYKP6hC|(eD1md_GK|4_@;PdW zu`Cv==d_9H)x2OySXYOLh_j}R)6Xf)&>;X8oCl805=P8q%N42>+ti(SoTDDfu3cC* z`(K9iCE`?bimfmN1qi>CSmdUI7CB5kL-eH&+nXXvB_b~iYoId%w{R$C%nh)N0?*X_ zod&&V)>gD(LVvR%9E3BGWY`JBeB!(~qN1&wRJ+C>W)obYiY!IFdRxIGiUImM0FcPK zxJO?OG7deJrsD*=srJiYj!}^Jia`+*4)Egk!|ybf`|NG`GYvG3o|n~$bjZQ96wvYM zT)ic-XY?0Fq1-dLjvzDflBi6|^~VVGBhE*_MV=4bm!9|CN2WkDW{nwHz?wqz! zV1~>RcIiyf16iqN{ZC#4x^g{wO&g^?UhSvVcvj!%BSbs@_c1LDjEVR3eeqc3h@6xF zTueEYpYCr1=D#DpUMeD$z5hPy_dD2F#}ZODevWSTnR@Z2+86F6wNe@w;j5udwJ&yG z!B$2Y&b}X>@YBeq+LwAip^y9=*qy#^s(txhU^JqJGgwecBqhri?-dQe6J#fL$8V~g zvwd76re_KYSXLndjj@?OKA#K`Nf7Q4K{4ZM%KY$rzy~1Kr!Bng5!Yz1EKeA3nAcKf z=Xm}t0(dh3^eW;l#!EtsRGTDujDf#W>~aRBtTFOwZ6+B*8V)sSD%Y>8p-ifUYneOp zB?i1PvyUn~XKKoav5%_5lsZ!@O|0Q=SJ*K6x%sR%j}1qYjjJ_Sp1NjI1O^YhJOw_B z*PPZ716r^p+gAch^_Gc22e}Rx_C(E~XfIZ(CYt6X(IS}Vgn`$O3f(su&!vVTlTjbm zJ&`OMQ%xgRQ!AMT5rZa9iDcc_`GT&W!b4UwTQ!p%CQ}9J2JtBNR) zJlqB$b~vE{Qfg=T-S;#!C02S&cF5mj99l-Mv0|;8B!axSVvz*|TPrBnC3sU_ z&SL%Ag0QqWb_r%I3$%%@vW4BUOF2rYR;(akji|wOZILI`SlWXcfV5cpc0j6(fpi>+ zxvnk7=D?%0^dt>7L+QW+K}d)d}pIQlz$P5oqx9OzJ?@jSl#iA*qn!zP0>5QR}F}~ekRjXy_rr_nR-$iUUgQ6Q@t5Z&XEBF^sEeLdNZ8v%@Cp>-Z?Ph{PoVe zZl9sCo}b~O-u`>(B;7EeFMzy1B*KcYMsQ#{Ydp0fhJ@RQr{>uZ#^@#V5%N-upiVF} z%*uw*|Cnwg`G?0yx6^dP%wSlcZ+T@*SOosJLNNv-o-j5v@W+3=c+B{$R}xwk%8~zh ze?qVUu`Eu!o1c!o`-8#d^a^EQ)E^qQ|K1kZ_@Wrqauf9=%rfk51ZjE0)Yf9)&5ytQ z`0?W}+w<~Tt#%`a7Sgcca?>j(%BxV+-v$1I0W=}HZxetLm`_F2ZqZTby4nX3S-%FY z7Ddn*`E~7;>E4k|*Gk=C^yU}TO(1)$4%SN{`6m5mOgiK}Nlx@smKCfD>OML|AFOz= zJbBF|kx-dsgX#1t?N3-6hGH=n((P_Uxj0}rG3mY|)KBPfdJT|6I2rH*w+~N|a$swC zX+vSJ(X0Tj(Qig)h{%Baik%v@t>l ze9;K@%K#BBtcE-TZbIS-O$m;&@rrxR1$-o00XKd`{pAyX$gL2SP89$-=+-nr5OE(5 zL1K-}^fXF!$o4g{JAbCm)LKd1&#`gdghVst4XPp2%k-z}a%A&~CbENC{$J{GjeU~k zV*WA7XwJ~q^1X*YxNuAPp8Uvwwq(kvWEzLKN?)pal z3GfzOZ-aXs-`ZNs{bQZ!|B?pf#W=A&bSLS;ff_6BIfA3tx-+(!)8Hkf47w3d25j9$ zF-RW`n=w6e?<*xYug`KdB$Ll+rmZbrVizPW?K`})LBSoQ_4#`V)QSjSWj|Y8Prs2v z;99Q${P1%PuKr^N#{o=`=&Rr(C`aC$ePjEP`Xe#t_pr;pc%+_wUpK*N?mYRW_PPm< zbmx8b(EbD=Xbm=P0cScTJ^e;<^pq4i$VW-+M2e%~qa+??O8Ph@oq1#NiF(0n{{KXs zbH^vBXS#e{cnOBrf{;Cp1PgB_&N!2MyV_k<VV=AwsJiuFM+JE9@he71XXa|jYrnw z(&F1A;r-E_a7wB4;*{~b*Me6;mkrygTmh4BYzunRz<9}eA{Rrv`IYwFplzD>Fnq?` z*aa8_NZ}Ib-urmK@VLk83kdMz6(goG%y_TQ-5YT>m`8&lE9BQ_&)f@wY@$&Z zFV3NU#QW*L9O4LRo_u@8w=PNi{Po#M-$C1-;%Y_5yi(DVUTMftuQUW@CCn5mA)D*h zXUFdixG@BCXz5)X!4Rrw1DlGsgtlvd!(D=nUI;ED zFHd{rm?6MM295a@y{}FMsA7x1c{vB3k`j14{U)x!gM$_Nip%u4VPfvRk8oyO_uLn& z!_Y}_geNDP0_Lv@lxzbFP?G!Xo7_zofadAxHyO_Hn1cuV=mdtZ zRF@CaQ0!;41)JKN+MEY^HC6_I${#>|Tk%qAZrwy)1uV8MKSK}1?cG6*%vKwZJ`8e7B`QqnETkx^@_#;k?WGC+B1)VZgUQ9dh zbDw|&k#;0a($`VqQid+a{hB|5)C@U0o*`zh`~Rs z5Vag3N)cHhi%SSr+hYb5oAZCX1_?#ss65n3E3d@5G0d%S|PyZu^Cn_a$R+U(@Yxslm3qRE3q)b@_3K`rP(vT_~0(c>STMpfXOZ(+h?@Y06Jh&GK~$YE=+X5TV! zj{7GnuTBEalt zB!4C`7k388*c>##K3M9FdoHxsMPH{14=9!Yd+?jw)3JnPQ((24U{E$c#3>2r-#HU= zKm`-)3~0-`hvG{9xSZ&b`aN>9kJs-}#T?`G2nueG&GF4u6Xr1?HYOiWEu@Q&0Ms75 zhOX1JYI3j!hG_XXyn=*L3zbE{AVod?ws0u83pO!@5Ts@oBygv16!H{6OM?-@GmRKD zm`)n07@ce`+EImrcMfpIN#Ofa*9w~@bSnQxgV_TW4y?fKgEwd&zC^s?6{2H$na4{d zt4PB_U8E71q4h8+g1%Y^DI!MAg7Y|p3oUd_MJ znbSSC2xG4+c~x0v8zVR@=S5JFt}(*nZ=9&#(-_e=hcO}y1S@2l$qX0fk*+a9P>9N* zeHu$Sj1herBl`YH#)v+R5!l#)Bj&8{WsK-atqMOY!<@#5-VAE`y*12fjED?riBtPP zpT>yyBx8hq?kkUEddJdrWu2IgiZ=m=jZU4)?BH5em>qP8ws#B!jz^Rj#cFoY9yMcj zKyxFzMu%at26tQx$Mj*3kbtzd#=GWVmiiEJUf5={IC4H$#owUOtXb_7)i60RZ z=p(9%F4Qg$3RF!@i@AUuDh!uF}x)y85!i% zJIrbvQy3b?3M*L2kDVYYzkL|bKi}t>WYWnW_xq3ebHDAmA_j>ry~u=D`tx&kW1V+D z8mjO{66?Xsp%)y&Xt6VA8thJI8Vtnb90rx*#2-Y9InVqFoE;cnj{J?P6i6!EsS1Ko zv>p_QQF_pBkr}Jj&j5`d>=Yr91u=nN=v$wrK1W{VGGRJHn$9Bd=oQGnhdA^BdwD$! zd2sV5zU1~)&Wkv(F8Uv5Q3QD!mSQG3I%pm)@RO`&GEUJ1q#KQ_+t&{_Q;ODO!YPGaS%ScSwU* zx`wVV>pDX`H(&%i)O5C7 zktWQrY}KI=@?m^c#Y`Bcw3hCsT~`dcr?lu@oVR?1G;+_q(#k+;U=0D1D%~j92f#yU zN;%D$wT+ST%$duW`{gk%tSLNp=CYBH!Z=?Q@ku}iW++ht-aEtf5)nGCAu)$+Ua+Qk z`@}}iSj7$a(m4J)1QE^?4f^!p^^MmuK%3u_|MHTshjB!9oDw@2hh{QVp!`XFUDDaR zyq4r=XlId;Dv{8%_0b+cE<|}ZKET{sS9@)F+7rR8JSE%RV6AUfGLM1;8#pbOs?4*Y zJ&qCw4FMdjfuJMA+hwmAkJRMy-EGDAHcmNi+$7mbv#{lj3+2?Gws}Q|!=-p^U2SkI zyj2@%dorJB*;ks|it*4xz?!SFs{>$rfE7!6Rl4)vXEdG6^l*y@yTY#qJA_Kn zLhoDL6gnvjVKL;;hkzU6fk19ONb4mv65R(kPoJAFXw6zxv0}VdOTIM~*t4DZ6d#ZJy8uhAZ z$VaH|bm@E4LA$ygO(2PxAxfm0m6)pjoCk<>1bHw8S_g{n{3t7xwQ`7+iE>xE&teS| z3mWjczJd7eCf~xEN>DCuHr1582K2@=+X$FAmR6W>iRKR0m`$kp5tX zS3qSzt+m;^jQce&q71>D|9tRM2CkaIz%<^wH+N1ezG{SjO zIR&C$EgTOf170U9u~X97WHboGAkI{BjYpJ19f+kLI0oK&3;nE5oESW$w-6H~e_zHN z;X^ue%ssZwz5xb$Apcz!@oFRO#Yrw}b@H3KJwAo1Z3Kw~$YbVPh_l)-SNdw4`jhFN z6&Re^4BxV_7^;j&&EH^zXmi;ugO#%CT2W$^${tU~>XV#ct{CPb`;-b!vcY8vClh z1VTNDTjE^6`2VW`9Zv(gc-DZ9rU8us>eg1&nFnd53f4>9jV0B?U_oxm#(&*g)I%q^figmU9xCv@9jqlx0 z3~me=6a}XCuGT`b4PDvT;)(OHw#~Iyw+9&321HA5QwR)`9v>AMTEoxU9ie8Q!I-y= zTMD57g1m98)$M-L;DrXbq8nVvS8IJ$bYBr~38kdpMMHxmnJCP0!)0(-ru9A-w* zP(QQweM5?_@nPZt@pvj;J~i`_xIjtMIC}i}(-C>+rfaYLs~f9M)4R?2-4mbUIIk%4 z?6`Oe)$2?E>*RFb=mx#6p@2xxpg-e7>{xTA1++M@K0Y%~;`3*TUP&oXp2RkIW_z`5d=t5Q=%~B+l zqIk2cf;Khp2BYvIc&(#PGr@vQHMnmt!HCWSz{9jMR7{~s)5D@lH|;750MX5Ov}-3C zceF>1Rn4;eE#g?bYoS$V#lkJI%CoR!gX-8TiUB`UWMW9ke=7B%)2E^-aitTtN5k6T z!bg9f9XG`@$*t*>zU*JK23O(`Q z$h;=B4(8uvi;W?JXmCw zGmAXIoN0fC>Aibhxq8c3AKD(05XJ_p1N7jO9y!2H@+tu&BO+cVwUoS+`#wv|Ul`3@ z_H(efE19@~AAIO6-E^%@s^(|AT^@Qr8yw|K<)tjd-cY=XFSUW1|DuOvgU61Z6Uj+45-hKxIueyu}txAnXbYUF3!ufdO6Y#Qbtl$zAyjqX{MUm#5G~W>T!hZE1kF>L=IWtphSx6z3H)L9#aFk=>C|hj)?#GUPP(y>}2`IKbJhLc;zeXcH z24BhMKu1{fU2+cawprorU9mEOI3T+TO~f6sBl#!m@Teayeu(id(a_b+nZ&(%b+fBi zXO&*v{J!++Y?fY~&FIxHQ`J$azLzdQV(nCicL&phvLewO`eO)Q=-Jm6w{B})n~;rh z4Je$2oY%@#+PD)UrxB$a?WRD6hHqipU6?L<%CBUD7AiC*aH-XMfa;Jk>8kQYN(9>` z^kQrV_g|acTxPf8y2W_T%sj=GE+3I~J7gq4Ml0vF06VO_UpBtL3OM)&*Pg!eJz5SI z2>k`Fhrq_lClOLdn2JuzqujTgmh@)}qs?V_T@C5H6Hk;Z<+h=rVr`qV@K;V58wUH-_4JwLB{66)()~YBoIIoRMJGTXBT01B_Y=5_o;8*%!>s=&omM;paoL)C!3gw9}uAJ0JyrZg{obpQkd$w`+cAw78 zzncrhp?>%FcmXGkH_@Q#4QfdBwSIT;uFb_mC>z@pD5ALR?snsrVn^|=hwfrfdT^vQ z-W4qqnm8%YX5NGZ5SB6e@$UA!H?RJ&&Gq8l@8A64_x|EE2I=h}U1&#H8Q663RIJ!# z<#bb&t2##ex?LPhJxu-0dp;E1uKEojVkXZt9qoC_NIB-jqn@l=O@6mf%v(D;p9Z_1 ziuhE_e41$-^_cBwZRTU%%}2d4GWD5{M{6@*v-CBa`O3uT_PUwAHhaE?nO;algSzcW zut8F9Ms2(ofH{Prsi|kj<_Z`U6taL!vjW#(Jmm>Mh+q^(^6eGcRFDT^0lz?^>1oCw zJ$IojCZW3)4eW!_oK!53nHjI{U`6>U+4M9;r_c%CPcyrv&8~Q+tWM>f;qEqr4tCx} z^__NR=r<7vs~O>Hs!fJcW+!T+SU>;+<{hR+t#-1Hg)gk1$jZ}=pt}gdU+#mS2>5;` zFJ(2P;ng;9KvBHfdGxN$(|OD<8))Nsfua^Oj{C3&@MZAsZJi$Q_Pv8C0dsP5-SmDV zj><%PM^#LFsJa)&zB=#G}R3yKMv(5BkECwLf2 zy`Mo8v-!6-7X9mLe>+T}Vef+J>@b`Ey%(xYx9Lc>ZDJ=Qn0R^E{0S%k_PM+Uz^GC? z43nGo-wiypuz<&0nv5Y7HUU8%-wDnR>!g7dqoWMPild8=`^)3}E)q=Ke>vV9>%37i z&WJcin=tVtw72DM;nw=5wHYOLk#bZ>XNMMH8w>UN460s#Flj)gcF#cR|*4S zrhTVbfK0%14=T!dkw1bnymRyF*Mh9??C=j~3SX*u-(g%`QkF)~UnhFZ^ch;_Ye;ci zr2TO-L(1Z@D%f=7uSi9I%G0Gfu!rhR(5>x>-9>&`0BG#ORfu8}X=Z><4md^%=0$@) zRbaS&beVa^-D&JKzfgdRF^3k$j9I9QKbSac#>}2GcPC5XFNEm-PD^2^r9Yin#JE?p zD3%pM39gnU5UvA@BYbuy7L%{4jg&NTw>W{}eytV`mYfBCimSS7OgC7CiBWTehjz zKzPH7*3+3C#iby85GE=Hmj)HtE{WRT%l*Mkyizjlk5BO!58_<^m3(LVgLH#Ci+84J z2&G-N>(diFQmm-hiDN@W7LF8c?_TWB51}_O=FM^*C*NdE6|tuEyv&?03po)14236IbJ3s;Ugvrk zdh+PKD9TeMwvS>c!q@%YHBS0Up-1g3k5%_9)d$6PS&r3$R>-yu2u_fT1>01)w;>jf zzADgthz1#AJGNL=_HEV%6w)Ean9hPAJzSqE2T?94&vMCTpB1a!qh^qU?JGuNQ<)gJQ0>95{rbHvby}kf6CIV3cQ|U<+vK zf~m>;E7xeAHjZil2{O#}>>>@T73gIyw#{i0H7CN|U+zTWccZG^ToCHNI%PS{>jgOu zCu(=c8u^nWIKYHEYt!LMS`;uwm%@oEa=ToFXQH`}@tQ?K78<&_S+xqAP0D>_c+#a1 z(5yVvz4gsO79YLt=UVRVekyl&Z~eNfN;N&K3!4<4RoZqle-y$UldYM5zTU#UJ$;;> z`G}gC_P8;6gRIuFE3{xxT(WfpnngVQj^+iQ7_h;dr({fuQm;ZyogOW?cmz1=m2p<& z*rB(ECt0HW2d>4M)Z#Vf&y!^$jVHL4C%%G9MiUJeLsqj`TK73W6M#y91g=~`KMnR%HK&_i0jJ$(}DCpSHsnQT%}{Yw*y1H zv_QrkTD{*xDGAHjW=X`8*Rj(l%^6J(GpRgLrnaR$7WQvew5?zRXT>>C$qq+BR=bu{ zrIS$qG_2%?=zKfgk?D%9(Xp1nwc(V``TbTb6V7Mj!*C0=6bFcR2 zm5G2pwU9U=V`SJ(%(t)NF$^K)?jEiPxN$|qjq6ifKQUI^92tX$5)=XQ5geo@@1P-P z7Ue&Up$^vN;lSYAJ!u*Zr}$e~i z8>w@IjgFVnoaqIfr3z&0$}O_ta_mX^V{l005jF74!kXGB@o;Qi#TAFhRtu3&S@5CO zyTXqVzTdI78KJ*CdT>El+a9!OjK?qyZ>*zS6m1+LLUsTt8*Ghhyf%?8-7(_sK}})r z*gWuKZAF+@YVmdTeN<+=rVgE~`&|>oQHwM|i^Ae2}MD%zOvN$EkS(Szn{C zudjwx^P*m@u1~Cx1Tp?ASP5k&w8E9tA>@_rlK|zl<>|0dnF?xnRk)GPBvIU2#FSW6 zdKR)}J$Grl32c!6bpDj{F)9=lrG~HKfD4;3l8`>Wv8vIa2#Df24D*memIak~i#{T& z%AicL9}Nd%K?puJ6HGm#x0n+&l%JCs=bE3SV5>R?3eOa0VLxXrWS5vjoM~|V)^4-b z*xB$UIYGn@CMz@Fb>?D&DEt z`8WDP3?p&$vKSAU+g#Gw);K`mHWr$kK@ccj%UEXlD4}L)w1CzA&AiloIz)jxV~-8G z*ZA7n;B~c|Eo*IU^g2S=#2u^9clxG@jN25o=_nrEwY&6u&ChtIL|lTK7DVj>Hxj(8 zty$G}0)p1bd|stgP*qBx%c@cua%Z<8bJf(9-BD?w1k4jGRF$8?c5ojMu!)z65^_rgHig63hd__WRe33ZvCSBW zna=_iNv&@JJx7Qi<5Tz|aAk1V8hL>)LhwM?Vs!#aYTX88cykAjVBJ;^b=~Zti4tti z28JXoh_obGDCu?#LN1}=kV~p-bmU%PW55oV*d!cGLe66qa7_hF~Mo(3C-)=g*#ug}K#Eg5>@BmAfKj)ABf}|ygeXf1bmkdB z*sW;q>fQ zECX3N)_OQO-7@7RB@r7l&25aDq-3<+cSjGa7`dK;5GACqzD1-U=58Rz$s3r8wlOr@ zC@_qN^PTdga z#C7bJ!{L{XpM+6s!>Dxtcl)lP#z|PwFvZBBm|roCrZM7`PM<-p;CR{G9%kN?NDtV6 zTi`~VM-yxiD6&mV(A~s#>tjsVP;qS&)w5p;Ez)Qo|D_MN=hWY&u13I_1=qP05PQCa~4t|G)P+ z_v1Z)kSM!$r=sxAzWeO6Kh|1%eeJdP7Rkv)k$WIDA&==bdYoY30T7z&%Up&oBvWT(8uYWI^$t$&ESW+ zQT_0-*?rN^pD02-puL~J2>mFVn9VHZ-=GgAsd%i4wjPp@Ly-41T|}4h`XqC;m5BO1D5)g$va`LTT+B*l7I0!h?{}x*p8>=Xx&Nf4UI=QrH@32&U}4Rvb5b=OQ@L0 zoe{@faL#!XANdc{=EqsekwPp1h(EAdZ}mayR{9xAR;8cS#j347<6?0NpyNZY$PMD3q(cpg|^U!)S?c; z4#L+?Zan76u+T&Ijv_t9H@yS6Uli7eTD3ORSEaDn!y~TMZlcWdNQPI?7)dEZeHb@F zLdKJ-QS5fOS4>hMs6jGAD$zw}bn!%oZLCsA_!^x@3W-xzNSs15x{W+^jrU0x%5mkO z1nD4b9(LnJB}o02D1%1PxM)iEf>obIc^Mlm>PAV$MoGm+Nx9J+v&>ETArlSWC^4aV zCxwV{N+qEiG(FaKJ@a{i(H50m|2Si1H=t##>IycCZ21oewuUPxp;&lqE#@MWXQlUf zS*;6FdYfjE(wf*s{mqUR5gO`PSp0;O(<`K)T%L+dl^946RUhXR5v_Qx{-~x{&3{FB zl6tb&VNgCVdP=>)X~aABZSFwXkl-H>^-Acjnp~D!GKBW?8V9-Y8P*rVF4wX5n96DxG0dlXZ9FA2(8!!h)XhRNSbvr@LJNsP#H87&6=EX?X zv)?tXJ?h)A)HVUS1kt5vtzz(0vHRpF-~RW0>ZiWv4(5X8iIz{E!(vlwk~Ni=Xv-F^ zvRD4PxXPx*{j}Rl+9aGuj|rz&sNc?JTS~#%EI`^VEH}Sem3vE}ojF^dcmd&c{MgG`lC_48MV(MsVIojiX<7+aK{CUQEqZz*MB z+~#j2J=OJ7w4&#e@fjs%;{@_F=epA zNuf_DCCx2B7xx}%fLuqkF^xY`UZ>-bSWbhoR1PY~qsaFURhq_yok^P%shmmYaVAYK zdrW&#r=3amBkeGgdb|JP9K*N2mJCj2De86t{Ij_t36atXiEs@}qR8kjKh4ejSmqZd zTAH8DNuBt#Z-Pk(c4kQTg3_csu%YDT;j3Fi-8b>;Iqk?U->PHEG4FJd9WEaZ=PQx? zCAh}qAuC}M?eQb9$-1zqayG0+HAHaH}~JE-J= z(f?k#Q8Q$MF{cv6UPb`tUERLiER?64NA7nD6*$$Au-|NOZ{XnpdX2|@dqF)S-DL1D z8(H^g`mrGU8*FJjeX5cFQTke(y{yL(GyHwg$Jf)WdA2dMGx}TudCG5mepqmqcq$g@43N%sAxB(X{qgDA5-G z1y1Xym368r`~}wl4)G}1(U+EA!sngQsOtKi-%0ZSu_dzQ_eJ62uuFClw>u7>BwH-x9$8Dmo0et?B6D;GJMl`QE1^K=Cxk0 zhsVC~c$t^V<*uPH#mjwR`o7}1{E{zmO3F=asU-hsobsqeu5rJ=%`~B*xeqdNJo8_E zbXWen#o)#o&?$iC69%aHH)pW^w}4z}0kBF7R7!{8f2NoAgegujXs;#U2C~RU@E`7+ zpf`GU(MWj6%))%j9vt<`f1YtchxJJGw)S~BWVJ?43N{&gI-tOfND;VYw!whZPXP{ROPRW#GTJ3 zO;I{+*OV><$TF1@81N)8SLz*#PLlt;x26=7ge75*YWk7#O;ApmCYb4P9yA8A(l+r7 zQm$4iMd1X#*w$Kt=8~3c8`#q+mmLqamOQtCSWkxS>_Fo{Sbz$D3#2Osv!aH23++xP zX{H&AW+K_4^wBO5Co~><*U6IbXck`ZurWhDk{A8UFV2xHU-rpe=OkN~5-+P#*i}3x z)v4{0kC2EJ3zDuE+GV>tCy&C-bczJ#;v+3ih|{4MDD2Wl+Fa?z8?=KZg>O&hw#&8f z>XBWFCGC`-_P$TdONCT3L~ZYD4|@Qnr@`tFLAE#GL#oE9xB`!8Ki%xPoBK%NNnrTv zN;$7!j2t`B!v7IRC?KKrQ_3R@pEAOpe0-V_MQ4=gThC6A7tz=@haM(Tnrm9xMi2nF z8#Dr-fv*9<#tL-kiH-yaJ%JEVgJqkO)dbjR_$=PmfKxJpGaRvHC^UfpcY+84Z9xED zS3#i0>4&K>AnHD~<{sZww|j^-b&qwcRKP{RvS6?+mZP6@I|#Vli7~&AIs(!gw~?F} z^TE39198k}-Tr}%Fm6oWiws*q=^i?+k5Yp0L&F3hBrMZ34~QPh>>z|t4dB?AOgBMd z{DQMq5GHL8r=v}1tk>M{i4Q38%L|~xB%?NbPOO9Ub!7|=sv5as&;j?)A=uErHI>dP z34Gx+XPneUoO6D4now=nUaLHd2FF2F{2hSfQBxP}%rRaPj2oFfCasEsHP4~CqKle3 zpii3o(uzfJ2Gph|mXh3$qUokyq8r7UNR4ZvTUR$id6Ka_h1+|EMDaSXFh126tP;&2-Kbm5kYnn|JU&-FBN1-mKpN76@)7q+L1f)(mVuba zo`j<~%MeQFeBnSlwXJPMSXTD4|KgP-c&XVge@(@_#Ld3e^tz0`{*VfrjymPX=e&3W ztV5x|1H-f^V9H1mTR6dAQIzLUa6bM<5(RhOrC=;Db>0iRnQh`R^)1Y!#v@7x@E>#1UEU;FKH|=9#?C^?@beV4 zDPi3PMm1Y2F(`GdXO)HtRVX;)-vQDjbzmQVPseVnX0gDc^Iln%^k<4rs(GdY)eCq^ zKq-vF=j;SIO)^e|Z90hATX*nDr2}N2aMF-HF#*{p-Nh4Q$f}F8V}5L+%14x*81pgz z4&WrIFdzPIj>il&!{-Df2t?W`%9@HZBvOHc$g>zQMJ~z6@nHWLD8sg^n4susLJbOr z`z+h7HwpuO1$~*}Rt!fh_eIn}F`Sq6jFfSXVj?reMiZLE-*f!!i08mC(xI##dI}c@ zFkJTXy&>c}8EX2mqZ-vY%nz(ThBevT6S27`Cz?A!x_r{@oZxR1El3J;tZH4M&?E?>6bILBYrsrfvnK$M98OtZ~#z4(xj*5m^L-Zl$y)Ga-9e`5N~;+C7a>D zOL55J*C;kdxE4iP!A#_VKO;l|r1`%?cQ`y$ETbelRI-k*6m^q&IY-6&^>a=-(YJo* zg+6hU{L!}DhFyGc|4#mL&1CKRmvW!bYh;8zqT5;iGbr9(-=L|>ao&57K99pu zGYo|MnQU~qddeSs^*WTENy2GzvXJ(ay$3l2{0(nUlKaZzqpO}7UJcAJX=N~h*m>q% zcA(@?aNQBWWs)nLDbB8)?7`ucD#*Wux*&}{Mx&Rj#n;hT!JlUNZyWh9>fGX$d-2{} zeG}_6{O?z8)OmA7vG(K7+|>Wd&))YR^?&)sA9x2-8;x;;5nja!LbB=;*3N=bl3owwI{^Tiv^Cntwj0Rql7lR?S8BJTy; z3yk@+;4{@Q%-xE&3yP6q4a3y6Fq6U1MbfOe^54pRv^yfeg7oTpSNY36M(y9@(y7q) zyc(vP^TiH2shi#SrxbXf6>M9?Q1Le0aOeN48{!Hm=HlgE^~Ce1UZ@0fd>g8;~%a z-HCSjG^WMw{NJ}ie>qvH0if46)CKVY+oQ z%o9L?=RAu9s@b6_f{{9sMpHomJmm#P4iWjM$=$`Cdqyk- zK&Uu4m?V@SmH_UP=s&19e%UP+^ra7rk6*I8!-jSIk`m05_~qn>G|7?U!SNWrr;QP} zIpdNoV!LLP9CY?Rgud9$kLN$zXWZAn{rJS8Fw9!GgEV1*bq+U_B7{uGKu%BeJ3lw$ z^A&D>5cm!p5Af$ECLbFFLX^b)Q$C09nIs@D&*PFN*{6*)zT!Fsn$amSL|!aw1m#cQ z4revzXEFtU+Ie?brN&T@JUi%|GN4IalkMNnf|&E(`W6-^ojULq8u8nk_GdSR)WQAP z!H~Lje|Bpqw@-Ux{KfTe$*vD?Z`+^U7E-tGXUWC2yl;O-FpAFUULrJZuDn*V^*3?l zPxqGCQY$Q7idDUJ%Dp8Od+R*+)+zVaZ{1s`+*_yITbFZhopNve*1dJgy>)8b+m3s? zrrvT;|4eUjPR8CkW!O69-ja&Fb)I|clzZ#9?yXbqtyAu;%el8sxwn4n-a6&pIyLTX z-@PS*z-xMADv+?Q>12+5LV#W~a2ohVqi2j$e_2Rn?J#7$wYNs2d+U^Y>(u|7q{1B( z+jP}9bXT4F%R(pD9)_m309L`A6K7+&^6OZ9x8!%&%zlSU7*WLn z1k#;<$oUW}vsUILhazouc&+VlXC8Q3h9|JbOpgF0; zE7K*aIyhtMl?JT6RSe{hoI`P(M_X)SI}8w3%fq>17uwmPT+hCqo7$+=VB%ZD0kF9h z;DY?}@`guG|2#&Z;gK+A`nyaMyJ%ujR_w4Vg;k2{YE)dWh>Gj57+F`OZ|r&A7;!(k zkJeLqF{H0TQRVQ4pyUyZsP}sdj)V>hor0g+1)XwdY22NyP(vi8Iww)7lg#8;2_$om zh{sDfx@VHqy0i_au9afo6f`TXqO|5tfKb*${Lx(PD$Oh5|QlC;wY%egZ`kA&UPn|H-V7 zhCB>$e$d36v{GfE<>|kIuard@F7a8ViZ|rHAjN_(o}@sVcA+_`kPK>ti4wF&?QygA zC<5ip@@U@5Bh5zTaqechiZBYSx^Z5LfaGwisDKSPj&eeEqeM{Mq|-V`Y#C(8AcEgm z;hft}-&{s(bkC->&1Y+EQycN-tgRPB3rgvvTRWlT1507>gdvwofQ|ZN!o}tUv6D2f7oH|G8^-^J9e`!Q2%>NZ3 zQVtxSB2tv}nn*E%wEvf`>@hk2cuA9s6^u~0ET?R|jxnKQ%u%$X}r4D;KJ%uibv zkemFKguF+xGBQ7>%>0}(^K;6~k5puS&NK6K%FNGi&HS7)^K;6~&*jYgoHFzCTQfhW z%>0}hGrw87+EMf)UG){lxE)>X*h*KZje3Fk$x&kFw_xT+ zvkstWaSjwrX3WNRh>cZt^99%#;}L^>{q|G>8R$@8na(?EW(KV+z{Y~~+=YOCeUV>; zXEn44t{TMMFIdSO;VeX=n`>j8&zjA>S+jZ4;O2w?95)0c@K{HcBDey*BQ0>Qm3;+m zl#l$_F0GoMJU)_T`*NvExX--plW@`<*#9MVhtwK|#YenKCJOA@7;+Obs@KWk8`Qvl z2Fzoh7wK`c-HN<{1ux(UGWT7mJx+L`Mpw}Z{^^82d|BN8S--^}HM&Y|B}I7LsWPqd zV@2byrO5`t;&vLwdrcQP98eb<;?3c2@a8PsEt@JOc75l6kR~kk1{tF*5v=YWy?OPo zrwNc3e{Y4Q^>Ayb-3HR&(7%9Fuh^yNcdh&mxL+C=@IC*4N7^`0Fhr4nJWM+d15}0Q zQjQdFbRRWkxOtH!`T&J{Uj+)R(R~Y0z2K)mVzFxrt_VdB9&P$LV21Cpr0*8HYc;f|^kPss*QJI|abk`d3gUjujwSAKBg^-8 zNo-j==wZtv_T-8&k9PbeX3dc20zB%klvpoEw^epHtCAhPZDmLAFGO}+ zOuM+a#3=s}p~)PD_iZqI?=w&g;aj2M9g3Q7>u87TdEjf^#{=#DS{@jFSSYd+*LYwi z7KPSbAY~NtpN78;*+w#6IH~TJ6N`Lm_=aLHhF|5-RImo2eeW7&^9|-Twz|V+;GY>M z@QLqfv4lb#Ih}ttEv_1^-O>DLv8L0ql`%lh$Vu#%Zy2rJ8D54Ay%aBP!As{WZWowI zIFM>yrx46Ay+Or9ia8j^6ptThf_nvzt}4tBZYV>We{l57ncbV`JM_96dfn$#-Kk!O zjL>T?v(?LSuS3RUubb1omO#Kz-=^2yy4Qo*UUP>terca6OvjoPIGfWQ!v$D_6SvxI z$EueVI5F#k@Ce|Xr(?*tZ93MhJ2pStG5qFXe~Z{~3+-0)1Hjob2ERAv_5#dZZzvLcyz!^pXi@Jkl+MQ;$>#WL-~$ zQ)>y4a5(KqZ8VT=rFPuDoD4h5JjOII z+i4@7bHqiXQV*pM29Ck3Atd*b_*{P$z9Hix@RhRkYVhsOPRt13i1@5GDuS?xz?7T5W(ji1L~vosH4%7U z2K#U6;#h1n!|abd3xD`DtV2eC^|#KQgT{Pu?!1Kv#?Td8x)gavxasul4;hoxdC6j9 zEYG$OL6m1Lkydh!rkDUTL!v{tcl@2Dq_=PpEBtJw7}pLO3Vh(ISSfed9HT-CAtR1sqw z)`o-?RBqfYQ4I=SVA{NT@Iqb{+WG$nF96Ti61*T)`gmi?2eUPBAu7$^Mpyz$vuTSJ zY=txI(wvmajrzpf1-FZ*64g8VT@>+$wb``5!(7_~9+zu`wh3YJu zb_n0WMY!mwm&G#S1`(|su?N1$RcOye3aR)dMZM4#E&TaLy@WO{67>=a{1u3L$zCPu z1&i#p5ZB4#4WAgj(Jrk!ATaZ;eSvrFA89#s>0PTQc{9noy5e2615S((FAp20^>`O- z%f7Zqrx55x*j7z_OBW%mn)*5yDfItc>hqekgQfP^bF7HKz_zXop5t#Z=IUEvTYEtB z1)`~zE)Y#s+xnl^iZ1I1Pw0v5|G1v4BM_Hu>;F@FvYsGWCT{?&)FwZXdb?mXUCG4} z(I)a=I;yb;h4Bv!d?8#e?ck{BA0XOJ=QuP)nu`S0@sEN{e2UBZhsKsRqzW$_r2ZM7WihGI#PBh60SrmlY-@vOD|lKN03v*W zD|~HouH4I$G4Rh_8+S9C=_Z%Wgs^<|*H)-3()o7nXC}_oMl$>U-FIvTUEQN_3%bnT z(B-kdINfDyuC;PgRW$_-)i?!>nW}3)_O{TdJ6hSe6_8`KXrofF0rHHab$c_X2J+zK zXwA-kRs)2Y_m8?KM^{PnS}WcdeDN@Fas3?g45X*nm2N=3H8fNZK2lf^6^V-F%8xAvgM<7lpSn9mi`xTh93)Gp_m zxJlU(fc`z)_gIa)T1cqKe0tnOq0bQIc-&rAn44TynA>jL^d@YjM%UNQ+1Ihub-9s{Og@;5KhTB&Hnoa$7B#cDX&2FANb`gyld}SXmiZz#O_w2%^|UC0VsQf;du&` z&#ulmtB(BxPO?Rh{Q@erva!w)QQ70+*K+vvMEI3&coT^ZDy3vMyd!j1znbCKDg9y( z2z9@x{rHdyEwW+2xioVwF?Wq{8&|fTuzGupq_-|KIC}MP z+>(Ubkf8d<8rld;XtJU&eJF|ts|^EJ_>|wtHyj?#=K==rf9pE!Aej7;t)f}}c%LsQ zHf%x!O-&HFK!6=P3m6B>p$zG?y4mtT+4AQkqhrgT3TSj+ib+OyCKh0H&&FIv_vM&m zbk8ZtMpU47%t<%F9zEw$?`FtVy~kscdLN4gsFx!xD7&6e@8dB^y-%c=gAMOCY;Xcp z1-HbV)F?izl-s>8q-g6d4PaeiO;k7R>-}DNB-fJ_Sce8j3`$GDp>merIkV_=gOe(P zqZk;8i5Xh+)X9YX@LRHj^ny*ST#9p_j*lVx>c(9+G&rzE!uAl4zK$Gf6bm;HE#%{l zZ{vXn{#G7M(QW__*8(w2b$vxC?}5^m{bohDd;KHQZQ&o0Y}foFQth?=5s7vmz1y$L zT#4S9*QOY`T|u?_$UG$FK`08yBOs6pr^Z{7bsqhV-nzILFnpJAVn=kj{&-0HpI$%!PEm5tES4 zD@rz88MB|Hn|LzjQZHOYxvCcy;3V}j|NR;DDz;w*sP{`TNxf$>sD^{5vcvqLFYTAZJI7!>^2p6F3hhr{nACF1eeoV>0_?VI; zJ*Klxnv$5*%GH>dola6Ov(ukZ@AEO2dQoj$fO_F{ZSR5N9*Bua2Ft2P1g*yAPQ=<6 z5%bp-Ga}}?Yolf6uamU=L@YqdpO3k;{B%sx@+l?R&P-)@Ddhp(7xJj}kn=PgE;Hb5 zLY-X4pf9NMBO#9(A96K;(USB=U=Flm?|CC)2W_Mt3sBT#4vk@E#|~&6%{!|bT0^5T zn!PEcX!c-uOS89zJes{dq!`EhNCm0URm#K2LmtCW8;R>%4k_we32&*71r@!eJ}uLc zqCVE`N)9goj|F=Aw!?dF-$7{Zc2J+x@_5gB=v80_Yur*OI~O|-5p(_%|`A7+i29?F6Nk+dME>f z#-XLv?v6T3B$NJdw=7%cRx|)Dw9FGsLukz|KsH>IwuNG_ll5MfRZ$uRMxu6Ex)W6_ z1(fg6V=a)%Is$Vm7!(7?)ou4lv1b#RJf`2P^MB?QP(x&#eWQDi7fZ&Oc8V=RGA=2b z4V1C9ttxc+1q!LS@v$U)EL{K}+I1y4QWr8lFdx7Ne<$!UlV^O)u#SXV_W?K-y@8qi+8B6k)=ARidlUsYlxGaySeazBC61 zg3~tGkNE2Y*v?Vk9VDJvC~});jtj{iEVcv4(Zw%?8z`hRKaQP5SPj!8{~@2)B4ns- z8q~>K#Dr>a;>^S!Y;f)paD~-<2M56RL$)YyH-I&5ba+hz$Y%zC5xp#l@8RbfJ_FN$ z*({OdzkkJktL!@NEdOfCu~dpL^(j-omIaJ+5H(h|I;$NM4WSz2UpVeqUl^ubY25@- ziSZ1A!!4@mo05GD2AEze#g-5F3T*$~#?ZONs9kat4-=t0dJE7Hy$BEN6qP>0F9di} zekoC~t{FQP#I3rXm@0Ej2bSLO6M@7uE(?pekVbUn)!JUup*_-=p$xSC)tN!rv#(~nlOTE{DFS_eidO)}IrF;NhL<@+dC@U6{aOf7HQLs<`uR`F>xeVh%ZY)iRf>qfi7BmDLxyDp(Eq z?qnZR{fDZsT@*{uDZb^@^{9{tx0L{{VyXf$C?CdPR;5$7kgv;-FVzN)C2e-OTsu74 zBSy8GUry{Xcz4kkHMUahR%(y1oNb`0uw`95Yj@yTyT#nhvv#WUw4jT~*;XYdd{V4P ztgCzL+}_H>l}lk6WO4xaU1(h5VPSOeeQ>r?Hlz&1Ztbku88TKgmup+;gBY7C#G$hc z(!~zEyBJO|x^h2E{7M#{4!-S>j>)DbCa+vvbcVhcmx0sY=5j7RCHU{FDbU+Z8q$LT zMS8#$@Hi5@OE1Mxp`e&zWANRFIj(o3&Y5|a|6{Ga8*I5gGcrK-k zPCOP^+#%e(G>wmCS9ScB<%i*hYGt@Bi&7>VH$-M~zB|#CPZD%=a=-puKk|`{#ctoV z1d~^^16%jN`QG6Q1;IVQ9C7&t!{S;P0IK7V1R0Jj5Cl7MsM;Fg#f#Vr=Np9jltVXx z2!`cSp?MIdi{!vgnY;Lsl#kV(>@8YDZe+pFFX#DGT_TE!x>zJFR#X?bGGIZP>f(L~ zvQ(E`Pb+Nr625j@fUxqxoZsy;zSSX?T=`m)P=>avzdj&OoMkUKpUiW~5RgPaVnNS) z)Z_^Mm}>%3-Ih8twV>1k_8$V~1w74o2#x0d73W~q8GM}oYhV%kA27$-ppa1P($|`a zX!kH+p~D0n(J?3H@0ud$wYdd&Om!%}Vgy?{6km-yq>QRVVFDNzXd-~(+Toty;iE

PmNC4V3`!(}@OXsjXBoud(raeY?P)ob7GpWIedXebuU2MO z4guEJDu>WRQFtVgz5{Y7NAuZU4q5el&2ng4DI}c~r&TS5m{6B0g);LS6YI1jN~R={ z5WJlfnvx?X$4YuYuh37BQMn}(&gm*+_7&?OuPTTH*|6Q}B0^`xL5h=Nhy5eslNJfw z#~H-K2x}(@m^QOT0w#yqT!Mg^5(QLZyUC&;%8EGYFCc*;7&a>2aPeY>2;l^;O~e3? z?7>RJNW36sBwmE}OA;~M+F&(fR>U}eEMmgXNfG1GO2n+aCCP(`S$|7{mb6vGgpX?x z6Mo_-3L-`;F*aMg@|5U!6H?Tr1){AYhKt3=BF5YKU!#c8!8l`)W8#s$Y~fNiHr_ca ze$?HLG{x_Te8C2*<%gwsj!(*D-P3u~G?FhVK; zu#Kqkdl@Mb52$%}@VGua?DFU(n4d-d>F*lsQEF57aB@ax{xe!JPs-K@^Y0t{YBL?k zEpmeM;+vRc&A0iU=^L`g3hbm4+(3$Zv;1aSZgzFTJz1#U{gT?k@2dF2EUT5rIhklM zS@^ilhaDH@qr(%wVkPBKtTNan7xkjb%rj}i>18;W&{~fd%%r3YF)196m z3T(?8f;daDk!eZCXR}4ri%6C z$6gP|UGT?v5j59aC0YZ|a0)P97S%odIz%(qO{M5N$>60MvixYKYd=nh)4c6iS1bXG z5DG9Lx)dM4hIf=MZ{S|_A>YKYuspxPQcEhEibWPJo#OYh(@o3L;lBdog;i5L`SHN- zRyup&H?CpU*ie7Hgmxk(S#n}&j?K{P3WY!pVTd{Tq>>8`f?yG@RV+I93rfyAd0I&h zI%GZWKBeFYT5)q8wch1CEsT96q*%z>jGwTQ^^lWZ%6d2^vDsM~Y?Y5ekgby2*z42A z(E(Y}(xKrf>sns!$U1`mIPL-7G?m=}V&Nr04^VEq{B+k_(5iF8aUapkcy74;kz39U z_h3%QQ03@vEnmhY1LG8MZ75F;uzVSlHvw8Fug(s#d>M0ZWBD>BZ)f>37ND{hnLMH= z;PtYTUXVQ(as{z(#3Uf|8SSk71G4imSBsdjUO=Y9O3O!D0@*p7Z%JGPq~mVj9Lvmc z49~?RV>s&oira^N+=iEp77ijt8P-iWbu~Kt{5@^VWtQMq#fhlE2M(VUXXy+R*}e{Z zK>SH_J;yytr`18uJ$8~XiF6U zaZJAhoHz)Eq~Wv~O2yzEJRABZ20=U)e#Iz=PlaDG4C3+dE5<=QAj8N_uE=CNdf#B49O&h)6UR9O8&S3MQXE zoIT8$6GCQ~NG3BM9{N{?%)%H8_voMB=%%q_vw~5*&$PA(rnQ;k-_kWAXx+XG{ zRUepK3R%IlOjeNB6j?!LCM!a2Ojf}E63D7sh1Qs?SUC%kUM8z9+}Z5VWW{<;cxST0 z>l%JRR+A(ZkDX-(K|6t>NLCc(TqX+?1x<;f2=5U^VW5bj2)z+SVgJ??)sSEcWQE2t zb?`m9o>Y_=Ji`IgmTag8Uf*qG?4&F0iI3m0-Jl`IdMvjE*ot)u6zPDnN+Q zol#cI+;*6ww=*U@JYY+!twdF!pbfWj#`RgZjBh`hC5&SkQOf?5cYcCKS3Z1 zB9MieK(vs?LJQ-2LX8FjIT4ezkCI^s0Ya1vCmAYAhRZTkNBRU1qGY%LLp>b}Kp^)y zQ}m&*osv*e>K5;KEr0gf*%hdIyTi)gH>U~ zr>a*xUuYC&<48UQ^dYGf&}U}jNInJh&BJV@G;wHqQ1>@1?d3Bz1F^I+rk|8T5t#lH zF$p+MjIZQi;ahYC4-%F2RaP{|FHs;5qD5q$L=k{~{Xt@;xr2lIp(6iMq^s_?fh8@9 z;ufXJH74{AqBWzAa6&yp!f5WsB;B#P#!_SC)_RecPOPyJh*fE9TM)9K?#Z*9C%836Armb z6o7~_NTBgT20`_Lb8#3lE5}*|a)>i5RoWPy!>fV1@NFmJlgL7SPwo>IE+QF(i|7b^ zn~oGnW_1OwB;kTK2V+g-S?Pl{gt%k=3Fq@sc71RjX3@h6qWiS>w`E&8jz$6dyKDts-0XCRcno zVp@DSQUiqXqLB6HqiNq_8LJ-~nRjPbAi{ zM}b$+;*Y7OsIOQBhv`_|;=MHcO}&SfpU|_3bkq|nu!;opvf>2yk~+1Wrfnh(dXY(2 zRzxJ-pcg4f!=!6XdzN&iX=A3~Z5sAq3L!!Oc}32LtjQz-WBKuGb?FKk5j5_QciWJ` z(7dl)jY!J} z89QPlP_xJ*5c7VQie}8M{t?y9+x#PHo45N%R5su5A5qslq#s5&E*H3|=FLjT1M?`C z;;i{64m z!!uhqS+MUyxxu0F4JCs^;}s=?L&KJIaA??)4h{_%GFMtz*i2f~+ukvA3a^-F924Qm zY;5j6LE3YU@pz&z9_H0nbGNcfpapar&oek5%8jQPxhTJ$T}(;T8%>}nw>+mPfZPfO zuH}|z9%YeROh!vh&^IyXW^T5zJqnASz1ikFIWYKbH85~h4GaW%V6y(=z(}IFd0?^- z1C4)8SW~(Wk<%IHkW3e#JTcrSL0G>N7;% zc#LNonu;i4#ggY@yxga)OFR&$a3d75IQ{C8ZmO<0(pNN5<47^jJkrPXUi?^3Mv7JD zksi~Nkz%`h;_Ly_Q9QK%#U=Dk%CP|rO+*-un zNRrYlJ&*~MVdB&S*^FtS4BN;9!A|o)KBXrEVdsMff~Dqxuqk2+WmrN8DDw>LBa%iL zMv+QIlszAQMUF5D7*3l!GN=Fa4lZ&a=vAB38>R8->9Ca)?yn>FENXNoIkf2A)rKQX16gv^bfx#G< zt)VD(Yam+pwhF$6^+$Hp%U6*8k{WoUJHvj37zwn#q#69_1b7jyA(2WmgD!%Wy+Sp15c0Q0C>EDEp$%o54wd#8~x_mpxuldoy5GI zEzYoe(;42Q37=>XW?~Utb9Y2IdNYIT7JbD~bU6~Kas^1{p;i&+ZelsDhJy?ER7?Uu zbNJd;@~%xX7EqwiCmdd zvKYMiCWA*t^aRuirXRh*Tkd~qU(yKcnc)#~AZf6nJVN4ngE!10!~zZP7-2j3!v5Sw zI4uC;2%-5NE%t{AXoWp)<&vVdK*1IVfr2d!NJ7CD20_@G-vXM~h)$E(UIC^GCkN0L99}6`P1=0u!j> zmbOF9Ep405a7)}8xbwv=7nQ=psj07>AX)yK*D-HUhMXj~jdj);VlL?7ErnL;;w={~ zw6Wxc@x@zl;VIY^TJk&Xd$@k_vc^ufT=}Z2v+O<6c1DHNYOS$TKF=lAgloPj*(=_Q zgC>*GTt1sA1QW*yezcY05)8c|rrtP;osr+nwaJRJ9PyHES-Vu|T*_);TOlzxp58_P z;!V`@g;0y!txI8>7&cX*X3k{ZKuPXfc}cDuSNyu32aBWo!Y?_R__bc9#Gg+~xK>i|>qaM^qi8HX9fzAA2ZIIJJV0y}qh16j_JKmwL5 zmz3Jf!`52cw+%*}`y|PtVY!tlax*V3yITkEG>Sc}OBZ|Y9pP*Mc5DKY>!%+UUOj4@ z7#el8Cu^RD2n7Hl1gAE%C8Xgvci;oDsHAq!Vn`F?YQKuMLp8J|gL0f+fLmZ?#NpcO z9F)&};95#8b6Jjf$b>mXR$orsY?2IDfx#mG*ntu+!__%({OH9Ojbing(Umv-&E;RX z2 zFK!DT;gDlxd+H+@zlY2G-eFH#hHEQdK~rJw_)hg|$0Kc)oJqwJ{9OLKJ4btq)jRPr zfY(I=b5?~B+qYT`5Jcpt5Lxc9ezE$@@Jd|=F(}4k{D77wKu?)y%AoL=+96XpIU40= z%YC4CM^un}#o*eFSrcHReAzu!oAPhgbUHu8&gXVs?M7IjZq6nFyCN{i3*us;(1cF+ z;P9}yM(aBQT>On&fQxt1z$F4gpe>q*r+|Aoxr>mFFqoVyuK1*g;0OJ`Kfdw%-vPA# zL;vr0Z~VYJbiVKeGH`FgvGU(us8BJB1^}P%A1H$m_JYh&V*_whIEFZzH8o1V0S1%R zYqM0q^)oeDet<3rV}NWRd9V!~GI<1AATRF+d%sKu68GXoH4a1~nl}@Oi1;e;nS`^< z39KA2;i*bTv-NL*#j+QE*zua{5}1S8iLaPBG{?-L>82UZl9>b8rrAB5=|Y&jB82;X zPb2ho3riq2pMhTrOQ0m>wqXg2lPqD!7M8GU%n~&F;Xsik=zMv8aK<*{oM8taX)p!w z|NiA?2RkAia_vjQWH7}J79%@o6;}?%WW@w$&@3|qP7vIbvz%Z@#R;lOFFDVomxmff zq6jP^aso*uB-T2c;7o*O0a3;fsXi%Rh$>9gHl6)Wae`N2v)ge31oXGf2_U2GI6;kp ziW4AB#+*RQI_ikU)R+_KXv!H*AQ`z0CkRk`jhuifw1pFl@i7o%M>->xo0HrCHgF3P z2c!)f<_5&-kwLt9nZ4`CC}EPLdTJW`G-@%FFR?p9o7lKX9o;Gs_tKT#L5eO1NQgys z#lHj_Os|8Zu1=rjE7MZtsLPs1KAE>3lTAItIhQrQ8g9UD-xr99}C=$PmI)t#{bS#SRV+SXdb&jARNk+E$QEM%9 z35l|CbI~h1x7^RBu5SL-Id*C_Ks;V_F4=%YXw=PvI@wC?bRE`k(vtP84+ zPCx_?=5#SLw=;SD@G{~!8-Z$mo`v=I-%wU#VOg0ytZO$a2^le!W*RF6dCpmRE> zWNQnr5Y^c^f^3^=NN7Z6g;QyNY$-&7p4R1JfKKL^74aUn1yIC{5ELOf{bC{8+wh-G znSyBGI3570v^i(r7fOAY2ehl`Aaql-QRXNAI4DvF%KAuIO1zwK9-EZauC6g;Q_}BX zqcHe1?(KFJ{i+HfVO+Sc!hP=#Qn&67&3_;?e<=KVpLWJQor2MaFi#fs>r~2?dm*0l z5)_d*Pr!-ok`zGGLn|EUS`KAYII4GLw#v4hDxQxH5@j3?vz*jwTcsn(h;0cz+Rt07 zH6XAnL{w8B$<{brcJI~UJkT8h&kL<2P16J_=$1#{lHIOukOYvBn>5UBc}6jUf|iI* zn9`tFX%W$N%P#}azUVH?@9;jj@&(HGwdsz%D@UNgR{10454-C{?{N8;4J!o(i1bth z2&DS5RsPMAAV=wglsleEH=F$iul0HBi^0IcTJ;~&KFzZDYcihXi# z7lUVW`FQYi9=w1DR`!<3ExL>*^^wa&%7Bq9G_O~OMTs;R>lC z9laZ-jFju=gJvYZX~)E)h+5RTd96l3x#MxCv2shcKtBS#Nufgh)^Tf(M}_x(95>gt zm2Kg@9y$|ZX6WoE)8y=c4Av9lSP>cW4h9odZUEM~#$ebOHpO-{!P$yl0ccr)_srf< z4vmJx)qo(RL+O--%60|45dX|n4n>)rFbRQ9j$G;cDlRjSWvpAEvCcd155!&3ypcXh z^~J>CE23Z1m#;$fEsTjs_#G3zy0ksvo9LO6&3myxwgU;BYKWS}$RPSm5aM44qBr(M z^c|CeNL~ZpfJjJe#e5_=*~6EBc|^<>%&$PY7e%`+9H=PXF=5e*K7;C-;see=wxb&A z`BqC~;=Mp(TjKxLK)~wl77!@T{*sA*a-xg);Q@G# zAjhqko~B~pu^kl;m?Go(#11h9l}%5M%yXy`+-k~XFV-kX!nW^%J@ELzh%@@-qi^K@ z6h20N$n^%J33p6%@MH9fzVKa`#_+wtt6&JD#z8V0?9zId%s+P2pqlgPm)Sc zeXfI^$_z!fqI*?AJ<$`R7E0-;g+4!1+T~qXe*jY!=Xk zD5FrOOmWVrO(sG@7bx1@$p7$)E%`Wun|(mouoSqAR%N${q{~81ik=`vst4HAEV|nrQl6r2yJ~T(qUu057P4) zeco)Nl=x#*LaEfF^T2+t&s-V&LCV>ACEWuGQsz(gk1ZGZb}Im#Q`L4W=+q@@tgY zrOo27T5ISt;HA%uXY&2M%2PpjsMf*YA4U`AoHiEubWrP|(`5C05{?H=vj!X}EuW`w ziV3obJ|@hh`InpWPzapQqsh2L{zPBmzRF9=Q)t`a&C6F*XK1Q)c*Es)S@r%8t`m-@ zzJ!jR5FJryl91BufZ#_@q;BZYlt%vFr^9yR0542F`QPDIuLm< zg(FrPQNqP}=wYN75t)DMP)2xpr#vTXsb~#ur>g=ijlXP)AtBg^RGPqsM;0?wh74{; zi5YyRj0&8tiHyPE%URmpW{S^Ep42MB1>-_{oZKn5HRk7`{y2B%1Yb{2^1n8oyH$RI z*g&O)gHMu9(5V7~|7^~*wKY8+4T=dX`(T;-4X z^B;|I9AARt&k4she`b^s$FWoJ=tk_QaeWPZs2As#y9!B6d0iage;G1PCv1l_pi*9 zRyouJ;h#Se1yMmbw4LDoGi1s~g-UaXubb=y(H5vTY}!J-m_XAckCt zufwOn9Dx)*h3556Xh0-^k@%^r6#wz3{z9#$6Q5#s>r=AyDSeEex=PJAf9fyvscAK~ z3h&dWWa-mThkEKN_0Xq-!7neS^G6Z>Lf=sGV{L==T5rqLmQCh;U-UHjAKx-aEq2a% zBWAmuG?6~+h84K+VZwJvA(0t$ z^=4#PD+-l1)nGz+cNyNb9Cd|Nr@aFwnkx*Z_Pj_#M476NVPlJCHNkJ9l;tw&9bO zMKBldTj&ki0dS6eVO!6}LQPUv(aY&v5Fi7A#HfYiEj70RGt z6GEoFE*+hNLx&`pT);jE>6^sn zODv)7X_~OqLbn+;yNbc}0E_{ngAiAWNQ&Ts{5cG}D-=neBbG)3kspiD43SiUVEZ7u z*x9=w4-Ob7(xCy~hY7%Cm02Bbi-6H`f+mcDD1SA7_8uH@l)nru<^j`@4G<8#dVOK~ zWK=8@;b9n1zl5+fJCSTnkyfi&-xL|7A`j`B{2-M3jkwP z9ac${c z8RVv=jMOwbuCidK9=M@b%u^vR>d=~Q*w#XxZ}k)X@#{l@a%r_$etb?L3}SPAsYPZu zP%J#Em=75Ox(3%F5`Yo_9^bKwqAH))y^LgtWub{M;NYo&3yl_3ugIZopL-y9Y!`6{ zS+}i`-Ft!ewV6GT2@`-d549#{(gsvs$KVaKjm!{`3>0&?4dDSoFszr(#@JrXc=Ro* z!1E^KoW?*2g=zwYGPUNyr1Pm?JQ;>ETr15C(Zf_Rc^9fqGeJ<%VslGQsbENnG60Ll z7>GwdLKtYG1_uB- z;qXP+zTwCo5Qi^?$VGf=8v-Cvi$gCn$lj{}t05X*ycGYDGg9#4SJ53N7lKq^Y=%|Q zfrVAjilDD68bb5Gb~p|KWA&1vbYYUIz-ALud-z zb+Fz*@p;93H^dD-JWN~bV4|X zR-<$Vn$f-st+v!EBp=iaUWOKNZ;V@jJQ2m=P2E7o{C6YTsv0D2FN8%nW<%qZkP)x* zTL(^Q(H?c#jUr;)D1wgz=E9yp22HbfBl!d=`X#R(a;0;tR#E7?5Fu8v0Y8if|UW`#m}1#HR9 z%6cRTtdQjQ8$i}wIKfj8>PmM}E8_A3Pe-?|0UP7CBsn+_L2V5JD%f)x+v<|bIs%Lc518xLDCMePn3~8Y)M_^MNW|7=6W$1zu@XW12Fvgnf=jA>FQ)KO&T_iNw+;M$Jdr15JG|3-xU` z!W5hy>P$AhX>TiNJe~?Js-qGyq3f|$U(J2N@pKp%mHU2B^~!Y6%)fe_j1{KuS0}{= z3YNu2dn`8Q^M5-Q8^GeUo$KcovN`S^0=BiS7tiHE_0T0zB8wrcLz8;^Uy(9Pd@|#x zv(WBzl4dH)kJI6k5k#X09!~V-0zFe1Nz=17cuJx^f!93foAQE2b5JZ%e(X8?x-(g} z99hSeh1e-~&&n2NPgr4+%gF%-Tudz6s~ZeNyf-r7F%jqJ3MxiqQ`ULWu11wvLU+X- zp?uF2U@l5TiKZ?p3Cd{_T(pUYFd=6|xH1CifyE4SSUs>2IN1Xlu_=LCA{fwqRFWwP zmziiSm1tuh(c#x)>gslQZ(}h#e86!IAfxj*W_qE2@}HCl?p>zz?&|A z9=x+5sLB@c&?TT?Y8rN5kM5{vGmuf!W9&hM81@d~<=i6+-woicTu%_Gh6Z)gOl5P& z9+{(NfqRD@T}mgo-$9+|&vs&wZuE;qcj8vFS)G)gNM&B23wR{NXFa_D5a5z9PDKTk zKn@hjW?)Ej$OUGMjB9)-?2a-AWa=sMM?eETf??ZWW5FzfO|ugkGU&7jV7O^Plrzwz zxvSrpdnPB_eXN#N{f>Z&V3MUdmf4x8f$Dj^&~-Xh8D(?gpf8-5#X`)HdRNo-=?OB zrYtz<1nOnW7VC`VhmVBg4m#z>(;(N_y|1;Xuq{{PCa^waz!N;HI2J$|!foO=SA#L_ z35Lc3uc@a}yU1?{P!c0j#g(`#2Abf)b!EXB9mXV>Sk(&C?peUYr>eT zAXD3KXh7)KMk+*O`^{1^>h#Qefh(B0Ns|bvinqFPdttf=&1kRdZfI>CDuxSvP zJ@tXm8Yaqwfi|5>S7n)Xh92Bl0jMA#5`^;zB++MwKS!=R(PM;%jK>HOE{3fHYlL;M z|Hd$xFx$3+2~<_X#Fm=IB2q!m{ryVN{{D=hZOPhco9$4J88^uPcr0lLKf2iH9c_Me zEMw(eMaIf7L&oB!FDzsG+sasCrkS&oGPZY3l8ol@@-~%NkZ)PsVqRWevYKpaWcG^{ zBovUVmy3+-0(Kd>S53wIVNUh(uS?EOW^v`3^8aW%Ijei#3$FkdT`k>8bHapU?p%Xd z<)j(;$gWAcqeX5OKuwQ*g#gS*hf1`*G6pfeMJlM| zExnPvu9u-qurW;hP=JA!?k7g3YErhM+d$M18Tbu96MTwD7HD9&qn=_fUY;O}} zIAee|E3T?(20FHpukcNEl-(@!-J6LZS>J3>_YC8b#V7_(gU zPsvqLAVjK>^O6ZVC07k8A<8OJ6tQ7k6>ZUeSdR&a8xvzaDeNCL+M;h%V5vSYYWZp$ zm`K6Fq@b*pPtqdCB@<_gV8%fa24ETGm;?_v+XxmgRv!ONCVT5or+U; zDau#ns^W?g0-hI&KGX#)LZGsM!dzgMQIp6Q=lQ5TR0qY=Kxr!o+BOVCh%^}lJbDGK za`L&K(Y~ag{Sj5D9rY>p@A~$eHD3qZEQ!|W>pOgydB;~QOSul!Rbq2+g z&WNKFFgCSCEn8X`iy3e)?;xsPtQep{ME=o~=ncdp(W^;YiQdSC1xbls_ZJ1Swp8hY zclL_G1_ppE@r6Vnpc1~eSEXPv`i@5ry;Y!_&1WiifNN<8oRuL}(5UwcR1mZ;>K{;Z>$QxE^xkO%dxXNApBfW#odELKL?j-Wa05TFL- z`RDz7icgrR0M{!sgt$E|w~8zni2{hpB+QQ3T>18K!Q9M3Ug2opEC%dR;~E}0`tjXK zq3&pZn19hZhe3oue;ULatxY3TXdf~IR0tpVN%(J2B!j2N_ate9h+{_DmGLjc*t`}F zVYbvKTR#;kwz30)04?fen!lLosB9ej@jYe{Z*}<%NYY-1miC!8MC?#7D*^DFpKiHZ z(of$rPuH~IZEq@J2uBQ2!~i$oxbL(V18KcFl81JHso;YWq{`)s#!L^!R{;c&eJf)_xdROesk1HqTN@}E@g2qoea{}ZCp!uVM) zQ~L%KwgQk9)^7Ri&JTmnRNZSZ8j z**luC<=TfVKhg-Bu92zx!`YLnTUW9&f`m{@!;tjQzaljUDiyb%k z_{#D;%LVQ7Om>)KwtqYwL9LIas4qN^v&5sl7Q+GXVsf^WH_JM20S5E!j2kBpneCiCB^ z5jGAmN{(yLxI^c3TgsZoyUd=id%`8I{Nm0L_6db7j(seBDs=t;HMVu379eVu4>xd- z<=?!5{<}itB+tjRIlhzsfFk3hRI+n*UI6Bxe8>yX@@l}idyIRgLp?!jwnKN*-%%AOp;XPVn|rhtjpZ=_kK$M`CVCLK{ME}CJ+?LjX_=Q?m@!8hJsI>g0J}BHlnBC@k_$xPBPT+P5@hR`n z**8vpa@0Itq$fvDm|wPC)uIm9&Zm60O$Yn=G1jrzDd~HG{|WJ3SP+u_ zL@S9L#Q>1Opp;+lCX|GGI=DYayLK|Tb=aPvLPU2UNRVaPc9@A%aB!q#3T#jsq0iyR zJ9s|^ph%)HG*TN7CH3vc9cF)q)-_BoNfl|9a%tuHae{LQd4F&z#TDd+1vJ(3_DbpVnC%fg(qY z0;%91U0q*rEdH3&uF~^bL$stPuoI!dWY{Y~S;-S5MpKdli4pQFPmmeTMP{JWSW1M; zB#|;%ZFfx z&GLM9nCUC)kVVG)>vN+yar}e}Acyl5?<0(B5LAgT3UkcN(LzOX3nIB;rz$Wp3yE{u zrlceSm1wSE;>g_8Tq8+v1ZnN)2-_=DS$9rr%E9eyy?d=RzQOS$dB`x zkctCJZ&7#cn9Kb@lKy9fp#pV zia!Xxdk*J666yy)Jwy$b6SM-T?`Gy`D=2(fKkwqlU9c|ACvC+%1o^H0=N4ol#0^!f4UXbE*O&Tv_(KIbr! zI)D1}g@dCV^1QHu$Z;2CAGqv>Bpb!*IS|K@dYwH;Ex zIUNjO8$kKzP}Ef)*n;SrBlaxI_qC!-9nrzc!{H6-UQ#f`c$Xev>`y&9;!JwzNBlamkpgT13lE3sS;l-c2_KFw^)>j1kIO0n5yO9?W3O-9ry2`*0x0w`5llC=Z#na z)8z8jvv%)=qu&>S6S zi!3#+(C$NwH~;FDA&|p0s7r!Ii0F_!Y?W_C-ShU;`TXzm0jx)}xS7AWb3aGnbWz<^ zYM)B6;eE8UwG^;dscW*gGOwhFUp$P{sp7_Yr$z z`V^*Ss8S@jg)V2PGQSX2<`q=}JrUhDbg7L5AP4{M1YNR|ae^*&6Df4L{6MjMQM!bC zfWk|q%j4eQF-w=)=QB;0+sVZX&?Q0`28-%>ak^}X?TRiRGhIrAZlTLWwt}hBR4qg&y0xh9jxWtyuj z@;+TXY1Yk^xo}*&cd$H|Jw}+Xd+SJm!O0Koz4>^t`;+IBlOyr<0|$=tCA{!a?s)ZG zhg=;TZnRP-7(a)=;Qp6ZTFi%-4i&T3AeN5~A&!soAVI5jj{Fa}o!Xk`dUjC$K(_hQ ztrX6i%A94OX#vBb!a1E_fwhZnDPg*(?$T!tHDeAJi+BhTT8o5I^1}N`aXLYA3*yg6 z=j9Q`CI8JIT!o{K?-th)kNyz%%3_!?0VahG@1lJcoTM*{|3Cs$7V%Tutt!BrzVY}S zqs}{Ilh)cbej>Ok4FAZe{|+#O%X>eH1*`N>b>;%N;Es{Q0h z1iAS|TRVxl=H`ueuKJ7|yRV3*#DS!f;rjTi#KeSm)}Rps=~JWKcgh2^yIA?e=<;Gk zJomt(#qLiW;u{$WY1z1S73=mXE?322b@^D;{{DI1&6IHcolt-0)#|72Yy%pT^q8tQ zsooIPK{q|&4$w{d&gnBx-Dzeb`41Hw1e7L|{2y!9pxY39Ze>%1CfYYqh+eQh^nv8k z+&y=f=PrLY3$}4Ki;e;Ds9_*Oyof-7^~Ohmbg_bdn+r&Dy1#rl$30aE|Jgnlz2N;I z>O_J0ZG3c!erJ+f9Q`SG9ZyoMBn}yqePeD$(j9dlfDD2be~$3S9)&H^wGA1a;B1nA zAGFiX|4o+PX|HO2NWhzXjaz&2H4-BKPvsy%(709nyJ0VHfEq|&~o%Yr-= zK-@(*8brV53bY4GGDAeO;X(pf7S37`M3`AR41qAHYf)14T&G@9HIrb+>fK^8e2#ju zimYjTs63CnNsk-`aPzcKax}sR?`LjPnV?tT-1k~18FVDie-3lO!2F+S0g- z0zh-Y>E}39%`{}ja)Jo~7fXyz*G}YQbu;bo!FMlPQ;Z;TFz+WXaxn{?h)39j`l%61 zu#eeJFnG29gMR?9Pn|vfiRow;3fw^A0mRrDb&wZcJ~}|@`y5I zlIt`Qb;)c{@*#eS-oq?Gptc`?|Arzxb@W0--piVzoZ#F}s2dQuosg5I+N&(7CPKQ} zfK9e^%A|}g@Ge5?Xinlj_yftL5!`U0SWv4A51>y!Rjk}0s1raXKm}E@p3Z_ja~bS) z#o;u$3|rYnu;5Y0K8c(q!XtRpbwZAP6f+FBXmIj}&iJsd=M6iaL-fc9bsTq%H_pJB z)1g7}wha-OWRLr#?tE=d<;`8X%t#frzMH1xn;qs^>7#gV<(4s-pc=s zGgCd<0Do2BfFVtx?kd<2eQRqohwKOk0Ve`N_`OVQKC=L{_a8taK4qLF!er1!pggFo4J%EDAYlTQ1(;qWP9#G}<~qyAfTYva1Y!UTPUROvdAwtA zjPN5L;szsTP6V&%6556aouey_sw{X0j08F@IsykCStdbMFqn=S+x8@=sm({zIEa9Y znfiDuU;$veYKem}(<9@Ss=`*^0v}b4d~w0njE;+-5sBm8(}Q$d|;y0a{6% z0`Ed4HPlqCvuaXCBFE>%L=6)hMpD;H8JbR>P;H8{fy=!3$*!8W;&~S(ZG{& zDhnDPO0f8xLHK*wp3K0ODJz@M_N-Jn1<7amui>PkSuAwr$>_<{*NJRf=+&!yyH~CW z&xgOlxwKd72%K7+%F}c%9VSedw&X6S|As>~NNO#(GWX=U=-#TMS!A6PT`HMH8Gs@_ zq{CA{My6H4rWuq_in*OX-lX@&{Qu232HH2#!cV2O$m5II($Vyz+82c1s*T@@)fV3kn`C zxSY#DgdB+6#YXc_XrMl#v@N{^ajA#G99WT+f_>xh(M}v+3-W2~w3ZnkcdnvcqOu7h z^aKYH%RTfIQ^X#i<&e8KKwcu-H{x*?wE$M z*w~OEp<*Qq53lkmz$DP=ib6jBmkU^jM6#0nl?HugpnFI5Q!qd=MfD&5MW3>AxT{KP z1}Yq??RL}vznM+A1#CC+OP3Aj8;6OzK_}K*_ev_}2v@RtqAECHc21wfDwwv)<~!Qp zGcEo8`#<^SH^2BzaCUoi?7tj;-#YXArqCPhcLeQkaXES6z$}VXzYmBLY$rSw@`Unv^So4W0(C7san~m3-N{&ZlG7Yv zEJ=9k#1aS%Z*UZzmYb+7GKnET=J5dV$U8BS+1W0WO?+ER;{R7Bp%t=)IO7*lOfM0j z8~Jaw6_~)}wG?eiD*IAar1F3fm!JRm4#3OD7~V5*rpz9I5t2DKRMZZRtLY3rERTz>wKd#nNH?> z8X)v|o90h1ad0PrxM76`MFkK~{s*Me!wbzc$r>no1S;Wy|(g(N^TC&GGt6=_;VxpHcPrv(%rV zA6J8tTd=M)llL-XT;-VI{1k+<>W?y z-N4(M9S~JM-3Zc5%a94z+qvchgcIQxQ5nZN<^S=gKa=IZ+8F$Nb*!9vhPtQ+ zTikruGAR9}B?^aSO*jqjv`-HM{a6RHUWYoU9*!Q(4wV0j6lB59AYRfhV#HhY8JNG5 zI}yr1{If^W_pXjw@|ofnmnzZ9kG&ZupcO>LuYC9(D#RexW`Iob z6adH(pQy7{|47#TR7EX+;=-&37=`&C&AEso6SZb!frHVkOi7>6;!u=m%fgt<^8YNB zZ7vS-2b00s)Z|}gZx`R;PjX|CyeZkY>fc!JL=60II+9eTKlBC|xN8#AF#F!s@?!)P z5CVcN_n{5me1v0)g}znPsW!fzM%*%-0<*3s7roS+fm)$66wANAB%cnRD{y*C(f4f- zJ$9mDyy2G*9T~#Lq6e|)-Cw3!%HspAn)50>g1;!`Y-s@j`aClDR3}~XiPmiKXrS3Q z%5!7QzR99;X10u&k)}?DPT3VBRt_qB%#pQ2j$hX+v+^PMqC-v!2Fdv1y&mfh4zF2SVN>RK~9_WiuT);f7h=@c;-a@$bj|_fs+V3`l5{>*~V8?#-7J zMk2K0q1brlCP;<N8~4!H9d61E1R9R5Aa{ zG0g8bZv4y-Dp(mH-6C%cJt0D6h#nxg;<2~|me)Q4?8-!2MkMcu&DH2xQfy%dvz#vx z-qW8<7dZun20k|O?*~Ge#XP67H?g~m_TV>KY^ZL?@>ax1lRWdOy^NEnS!um!!H~$g zn1ppPGUsC3F=b>vfZJvjTcy=e#a12X={(0)ap#|NkLgKl)kAtKlZ)7@^ZJ@tDc#j4 zuK5yA#ag|RLXzI~%xQD3YB6&|4)A)W$mj>Z!)NOr307g#~e8&JUMA zr0IrY!5D5K5+cjL`8pSYK*XFVS+ry+e+(}^toD3A<`tOEKk;V%+#yF01j#i3j(ww={>`frI0~cO zypc+)Bh*h8J3cweKglEvukKuZRLgkvypgWqRVT$vHlq{iAI5V>iF@Vv|I#ciJ5c>c zYXnm^!)dl@Jav?!WSd5o5(539eMHQkTFFb$W7uWn%d@lm^YzK2-g#vH#Ep+x{?L`e zXDpnEaV3%y@w1&T{Dt~sMwI^Poad52S zvn`!F+K~K8f`$X}5oxYU!*>?Dif2<%T|v;37R4@BT97}EkN{i}cC>__wC$VBd1HQX zn7#rkD_V@ry`u3@yL3-J2S7Z~yT-YcSFT8WBA0rUn^NUOZUFIM@bmL&Pl`dYF&eBT z;=b4;2-cJw=9M7GVh-NOpzc?Qq)X7LP&u{FRGShb5Z4)~+Va=sX$f*~DxUT^oCVY#>BuV&iyn1B~=qUyD_L zsQ#K6Ffr$t5iZPib?C}WJWB^Jhtm~4rpaLwYNz|XwS)!?Q6LjLWq+&8t>%OFr!%q9 zRuXi~Xu2qy8$Tn?O5Gme@BBAkRXUnidvYj}aC=OmiYG|_|9@C}`)JFqs=#;e zea^XG=iXbpl3SsYx(WLnF5MTbG-Xj1Ma+BDh8W5aAo}*d4?B{pMQxoO5s80<@*b zJ^N$rwdR^@uDRydnhP^ov;jW!90iLJjWGuj2TzmJ$p?ppkxF8{v+c`CwUCgMQZ0bN zn4xgan74W6u)4@hV{Xf>5uMcec_eX>BqZKKNU(z7!?1;TsQd^VJ;uR#J|+gzinnNg zim|x>AqYb{hhirEi#Y*>+Gf#x0-ex>*ld|!#1Y;uDigFQp_P(;+V<%**~SBS@3cdw zmB}N}{-gG!U0Sl(E??74)|*tPJNg`0$3T%I4LA!ilb0HEz`~?|uwHy^RJ#C;(=UXN z4sIPR-Of$f7=_&Bh)6SUQ-Sqv;3qiPJDM3C zj@$GeTPmOoxrblsh~Xxdsn{Y^kP@>3KQhoVSvq{4EFJZamc{TgZ~);*>-GOlOMYFNn@lzzG~|KzORM!U+=z|Gy^`>ip<|3fM6W*d$ZqC29G%y4a&2TA*ZnQ#`SYHu4`IVn<7reyjqe^3el{mz3@6 z?`JToU+7j<&BolhA85wAyg$nWjWqwm=7I8*FGJp$`$QF4XMD{s~9+#x)Rk%kcGsbSl_87Q5Xu_sy|Sk>LNwhStKSp_#k9bFV2FtGF2tR;#K|Bcd$UCL~zpMP@)+3xP^j!hriZ74=3T^A2$Nrb5h_$U;RA z(lhk$keK*1@e2e)>j+rW;7z_wWq1foC3}V`ME9aO2O0LFfeDIpQ=Ya1)fB9j;%Cwk zmy>`P91h%A46#eADFA= z&keL397;sV8kgh^wm90?JD7QHKLm!;VKju8pp(2moY?5O`iG!Nr`$*)ZlK}%=M2N` zOZy&)w|=tK!N7doZ2AX_ry+UwkVp^IukY8llef$B4SP8eyksAFTwa1^mcL zA&m7)=qV;Jd-Rg9-qa_bU0heh|7N#Z+UQfO`>x)xiEEdVOU>~0YvxV2Um3}CDs+4!eU4jaLJd9?W2AuOGWUk z)z@zi69JLu2P^pi%GqB&v;*Mp?{pcPsFN|dE)RW5xmao#RfMy zIno~w7RLQ%4{@%$&}RRgY%Pdr?4aWPQZalFlf-EhGn6TIEjgHr94#Ia2AM20hz0i0 zqJ${Sua^iB2?6$j4>9X8=kSP8(M!->>h6e3z!`=yt+VTbr}?!eQkfsU09(!44JfQD zH=tSIBxRR?77@^lq7h;qYjH#kkgbA`_oDe+PrS#np(V}Yb5}fMtLyLT4QT%WV*>#Z z9e{&%um{iyd}GPLIRUjlX$-%c0H7#s478ih?MjhT0m9(wVs%sm%DLQ=Vk7~P$a2=E z7Gcu$L7>w)-610Q1VZB-R${z|%sH-E%LSOqpQqU^WXrR-mZXj9IK%Efc4z>+Yfy-x zG<3T=qRO%39eEJ^LWkJ~n znOGm}wGWi_+nzc6K(^Jfbj)AOR=2tRSQ;~z0IcxL*y8kU>Ef#=JUZNtkD?g{)P}Y zmgz7~1dl?6>d{<6tZ+jF3=!&yMMJwMHd;q*UobVs3AHzJV+?h%=4L1}~Q#e1zEU(fx!%QQ{BEL_vN~Z zN65k~6E3|a^s4_~$MVbYVuuDWc`#CE82a;{qmPp!f$esXykqop?kJOXNX=(SY&Yl-F&{6DX7ST-}=;?_&RYU^8A>Nr#4f3;l1O^~{DZ~UF)9n~N8!*ID_a6^vXJjm zv&b0DR^j#pME#`$FN_#v^+D8~r2|c&(1scF;PsSfuBW2v1u3u{N#bV3JSyKh*(|XP zi!1#jZpVQ$xNrrxod7X`U`Okz1LH+nFJ0$Ty~tGwjKvHFO>D1M$D3jN$G4ITZo!{p zP5d09mrE5=q{b4W)8#mL+}6f>+{p`b*ev!N4SOWL?9<0^yN%huLlyKk9B<=G3}@x* z{h&OmAwV~my!0sbvC>HhZ`_G;}ml4kVOfrST;A#kt6le1V3VCop;KcZCZb^>8BcgE4wU zP!vj|R_x*r>y+b!c6m7ulXi)0khMz)Bx{$UfgNjq?CP*<^y?oz%($&2EfZrkN-=+! z6R0<+&hRkeL0*STLle>uLmp50uetdaX>hg>0mSudx`D);H3UU-yMIeEqZ4+7n&Cm7bN zlMfLaPKUyZA`cVq6xJ-C%Nej-3mB@D*3SA?e&HHv-(PHqR2M~_gM%?hbX|2cZ{v&z zjZjS;y3k6~z=F6{v9|zA4Sm%2(NNevg6fJ;ip~CJC`%ulg;Ly8DekH6X7+_}IlQEx z_3yn3@_XbvnabP^|8lWfBx^og8(*tTTSBV8gUKCeXC^9!)MDoNQ+kAQ#r{YzoBjpb znURX#?v%u*HfVp(>n z02e`cQJ8($Q=-S`39mhO{TL0~D03>&O$N@W`1*KthR0CruNDN%fg^B*RMg>WuKvEO zpdayp8k>+W^JY)3-a39YZ*-W!FN|jn))cEyLW@hu1TPP=)*Ncf5j{`ZXH>~7bW-Ib zs%FPCP{E|7)3GI2Y`A@v4)h#&x-|AEXLu(|1-&1%Pfkk!og1`A=n{H%d+xdTSHi2# zRM8b01Di3&OiDe;NGqufM2R$9in8%VeTylXosX>$wH({@1%x$4R#sZANMzxs-ia*9 z2TJr5nzA8-I#=2Kwsw0GCDi#4nH@(zGd zk59=XJ6eq~K@16mGW3{^sY-?d)G!w#VG~J(#7n-f>uvGIGt|r_;rg(;(~#R4aB?9^ z-nVxL{TSz&P!jdd(vK)f^fN_?W`_y=Xf`}#a9_t!*PuNhZJ{w{($xi?Yz-AxTm+7= zEe*P!pRbYWnuA9<3njcQY&KV-dlEGzUZ;SkZUwZ(@!nvdh zW&TcO1!415uOQ0&TxyB8Uec=|$Z04O?OrUD$-dYw13d|4vQ5Sh>+`lY;Hy|DrcL~_ z!8WOdw!<(vq%>j{{prQ30++*i5&$R;7>d-zF{Q6B zjANp3$O!rTlRF%7)bknsy>YRl31VKW`l5s1qnZ_=4yka(XiIy}LOb~(c zp0m#Hj9sD`Ma*1srvLLou>F;CGZS+m>G?Z4nDI5KiXbKWmwPvPN&{W&(ykqp)Mx@b zsDc8bF$D0IY24CV4)b&{f{l(Kj@{#yequIm3GReQ^wzR8a$MD!g+6b=;<%Ho_U7AS zHj}{|U|9@fy@MY>EQ~)h)`c)Hd#t~)hsiqlI9*$*Dkdvp-r&?%!L~6r3TRK|xn`wm zp?e-X!sEF%&0IlB8}7Q=Yd71!_|OkOz5c_6;TtMF1g~hY{}=H;T%fG00YJY!ViE>B zma8OD8IL%It^^8wHVeAzK zXUii7`dydt-jJ#G{@=r5=LN#>H^Lw88tzYWFJ9zQaS`Mqn_`9<-ocA@X;f9m)4!%z z?G?y+!}f6dmF-e{2$=~PrM%w1)%6Ex2$Afo+9SMs`i1Wh_>Z;E;N8&+-VNJlMwffn z9~ce=?o%Jw=YG)}(hkLkek;LDcZoZL;4s3alg3K#Xnh&BSu%1S;9kGs3G^hktHA6c zc#K~DR#h(K@VML?dTVZ+)w#i-P=sZ&w_)~+5xy~n^jqJ5p^prcaACtK!fE95*IjkN z^Fj+u0P*g_J741E`>7>9-(W-ll~Y5*f692mMf&gz4KytB-Yy_h$Xg)Vs>|}w^u{Sq zKRhzZq@cM-YY5%S<~=go$rr4kO1;S&gWWnvohjo#hgL}h8ljN0vlmhO)b)}hy=2by z6TMCP9liRgC6v+OEueyFp?v$g@EbapI_Qyp!C2fz$D&7+Y1o8_cDWni&=kVHC znlk~NMAg*=ep3xBOsM*gm#)wOKB>{G4G@y+4LVEpIuKpG!ty05WUaJPK5~v>eT~nr zJ4$Mau(*}EKx#0eL2@k6q~y)pOM;@=s@Pxk;;sNKy%>dqpBKrO>7;tq(driP8;@@$ z@RG;9^!TN8I77!d492YRr_sDgqTqzHy$CFD$bBKV5F)Z5!9IZ>ykOY-p#IV2{PfR^ zRGkl=939{XT(9%foE%-r&)UfmSy553M^EHu`OK){XW`6f#Luylqj7uR{AjIr+3Lw$jeDcurq-uGh?WMEy-9=`2d1oo<+nB%ab#mmf*U1 zaA4vI=lYH@JxtLVM^ny8B7xDB!VA%fgPt1TRE%v#f^@t&UQBqkJ0p11r~(WH$RM7L z8-S&}!PGUlWvF0+!RaJOM1z$U#4SZI5Lgw#sujQq2O=55+ll34yg?;PBpRFec=TIy1cS7Ha=<6r+MUK`EeM~{oSKM%Nw8{dMafb&!ssA&iwgm2C zew@__oc@9RRT3`B;ujfMdijY;67 z2`0z|MIo->X}FK6l@U*VQLM(acq1+57M>WbrbfCVh6PZD{G17jt7dASmci^Kf4Xwg zK*(m%KxLP51M9O5J2V-ePS!F!~A`IyEM`^6Ut4WCRqk zw83U#h3z#@GQ9O)In6Y)q_zz!Z4k)8im{h|r(AIYC(m-M#yw5Z6IkFRSGN`W$GP}7 zt*~(Mw19<+LjemHUzuRJL|6{H7Hy2@U}e2AYII;+j}WU+UrTNbiJKZSL~@AWJ`6RX z3x2%xT&7fitGOgmxmrLfENV3&;f9DD*MsIOp9@Dn^xV_TA428oT|a5AJ}D&(+Bpk9 zjlz_>kw1rDfWrv^Ww!q2-;jL~1Yw?88j*hIQVj;1iS>gijyhw|)h!uMh-Jk%M|*5` z1CS{e=_|)rM}Gm88xEyY0MZmgQaqRFZB0f5EnU(`icIkpq%3Kk3Y5E-ZvJ)jX35?x zHBU+9Zlv(R-FmZ0ZwU5I-~g#A*QWFU>}e-N0jK^NB7{R$qBE{oono@LQ%rg+hYn%0 zM#%kWjp?T<7O%A_9^b-1bNxhh?_ptNu|R#NR}f~z>|qjqU)n|<>JfTf{a;y=@$VO> zn(8)Titye)TP;`f-lwIF0`gH29x)l)jpT;dZyIzJz$9063vW<;*+k+Uw8q=U3#)T; zb4607VH1VRIw~zLCXAu~rF8qW?j|(NIOBd1^)Wd=r_Tmz(2MoE52t9>w^TvL%pGun zCCOO3K_YP$Di=7FXoeA|8qy>`p+fWPaV7jLt4U9s5Od=qj=C!#UUj;pLdOQAK^SKn zbbJ%BGPA*F0Uqc^QlX1iWdVp$m6Y}`v3yn_;ejK`h@k9j!vnkzBUE4nWt zUx>(^qd1FiGQl&y+*N~p1tyGLpr~9q7PZEQj00+&=n9|+%aJc-{f03NN}-DAT7YG9 zHcLg*A)YJZT)=AJ9#rE1nz%MNkqmlDu8k!EN}d4?5&e;1wxNO`A;6BuX86qYlucKf ztLeC6-%$i2VxMXl1}H>EyxjRgpddQNl<0d-o&*8W@DpK!^b|6g*j%{I6{kaMM^Ja8 zr(JAMD{43r*{K?q7Dz8qOES1PZ;6Rm=^3>R6qDT^67`D)j!T zGjbu*R@^co&Z+t6h?GWXjAgBt+XZGZKZpXo0Bu7;apN0=TLY3dr&$3NSWFAQ*4~mcHs9N((-q$JAfMH0JOcCxsV8 zbDoseZ(q5r`Ba~VMN(m>C}R9-dLWTG%$#fE17Jc*wkXC;SWeK4><818YcNU$6~l~A zkM~$JxXNJ@A`d+-O}IeFs87-0V{`CRr-dZW5aE!Z^Rvgjr-w~)dswO~piBd>-L7qF z$ACd;cf+z^F*agY97MKnS1v6-jo z2w8kv+KJCBRd(nI9DwLj*ElKtW~h#|fXwq^fBv zozEobB_pCgK}4Rd34olyxsqfO8(jUQaN3>7w7g06m zE^sy73iUOK_7qDiMG zcu>njEM^-%y@r7Mc*$^E<{&>G{ktb?Pa3qJebp0m3^-M3GDSc|vg;r9^rO43*aqfo z&pdd8z7aEIMr$k>geEt0&*OSAnN8-2f(KMWleXRtR}ThH|LHSy|J&hgDaPd2DaHIY zd?D++n1_<+(dwmv2No-_!UUr*H6HaKQdUjmR4{>sGq^#ZQ%vZV9eyh=28IRiM{K+g z5ek%J$)px-p276iM?e%F2C55Z7t@g)3V0o0Gyg}34om~QWe@;Znvt{0+rX!+Cq%8k zD%nbv+LH{3?GYzXA{z;tFrtGf}xBul|Cg`s8@2$bShOsuF~-R|Ig)2k9N~wNI!6| zj34ahmk*#aOTu>32T{h|BoF(YUE{5xUULjP`*EQB1t&Tb{>P-e1z!00LNfEZvCntb z3#BUBr<4zD;{-yfi|u;Op-loULB65AbM^OL<}hr4f;@6qju^BTpn+2x>^FVzZbJE8 z^gU7o{mUj`3*ELq(Y+wL!6xJ$nPi)B3_q4Gvwy&uXs`bMt0d!)&*JSmCQby5K_q-A z&E4=|@j}$lNMZdfMw-{C>YN5k4Y&`;_fWMD=X?+03GTi@z-JBA$P zhSmtwU`}%6mqeNl8ihe+z+_dxm-aHkRj4sJ@qj3h>nxz6VsFXGCjG82!6F=RcnHrN zs3xe&sn{&J{d+cTgs&YA@bM4(OlFdzG3I7cNxY>`=a`f4aOc;C!)em_Kl1n_M~AGj zX=5w~LjA#jvvMn^^nm88Sc^{Tv(e8 z%)h--!;Gf(X7FI($+C$Z!;gitYY0s-!3z)N7&HzTjy|wb90=Z30by)?m0QmXDFD7B z4jK4xFD21nk&r$lir~J;-2^fv;^?JKz|yO3gP;(86OZF!V=Lu%m{LfuMOxiKA-(of z^X7+y3Axht(9~~>v7y(p0Us^hHePI(UN(K~0vdTBdT@KFD9Y+m5zv-NojG?ebM8)n z0L`maSx6j0eG$5zo1vqiYYgVjrp%;Rexaj3M~cl*8@d39tTY`cE+ReiRItr!@-Ru} zU!>jMOuIq9IFBT&3H_2Jv0X&j3S?yxPH1xE8Jif^flE>>B`#OecC1amw^Xh;=kYK{ zv~RbDV0;kRWc#Xbsg4K39*497;e^iW+7ioftUN47J_w_4gV2EOcY{f+VnYsERCTxg zL_m_Nba*D~zZ6%ncETClEQC(#RxCeh*fWI0#nrW39g3@CTpeW6O{(dUe8xBIuMF$I zb@aGOA}8On_8j4dwdW&f^ww@zv5#Ff5fA>;6Qg`yL%Q2&|8VOxP$!&&UST?Pt! zNYJ$$F}NIS$N9c{*r*(25!&z#9vms;d`qyLUqv7x_bYO9s;<9j21d^VJjif(mu37?VeLN%q1~Opr7&%Z?L^)#)*LgU!W(e*+qBTzb$VNxZ3W zL?>uk{T1t|Vhj>Y*o1RQwhTR&e)KSKk?9!4!vS2!&;|cODa;>wU=9YA z1>nY{HSKHaCSJ;+hEiZmB4M*6lx!kzR$l-a22kVWM&E!CyBlD^GzGH3nT|M`la4G~ zGVrucxOi^;i}oUIiVX3v*fv{W(HZzO7cO{Pqyr-32l*i>q}#}ExsQ4!uyM+o7nq@@ zz!I)G9oKb_2uuymz&k;A;kF7AGa?x*;|+0joSE8sD9DNH^m$yWMB`B+It@g!L{mld|d$FAxM+ZBp5++_ueiB05;u4Xqo1jvwu|jz{XUP{lzzJOU%U(xQ|>G;0f(Z> zJ8VzIBtQEFD{52+yFmi>CCn(-#;Ru*7L>}1c422@yiSnN0C`%s*UL-L-{@$Dy8=_V zeU+?67!Z1J_Ox-)LcC=J)9k@|Jd*WQQHT`_E)wPjv*R~Jt0-52I(RE~t)KI%o$%w?bzjghXVq9+}b?jyKcc=n=+>K-XS+enGb~x^!Icz-8()Yii4h z%_EnJfT`aO69#+j-1gc!Bu&vPzU6Ch8gDvmfpZu)(;nPA z3CWtMLE|L_JD@`QWpit2zmSttho5j2?e0uGCbmbB1j((S6lnO_$gu_B<(lHD zwsKAJ6klIcY_cizPqMzmPAS|@6=Xr5CAL9347({fA{e7JFe$J)Glw56&319rFmb>!eaq?*2($tdm=-{i5s{u-R+Z+(p6iP2ZzNchA<3?gM31 zy2j*=%unv56_Hi_`F%nQuK?cqf9#uSGgn8M$Mz+dIGJkZJ?Qq!`g8keDD2HP%i?ZF zwl%vC4SFuUhciLLv1unp$;H~@FOLnDHhU}FenFEJYXlDn}{|Jvah zFuz1Ec`X3{v|e^lPBDA2E(Rx?;rim2&0bchd;Ql{^@59ztdB4Sfjz6YcyTiYS+?!99WFgm!I%yA#ZpqfLI%$ zKlA&p;hC{tFe-SOVzmkea}Cjj@ws8#mpejYbgYkCD6!aOsWq|%$KqSn9}D*<(+n)Z zKM zbEt@rf+HHZ&fgWj=6LXcsv~OS@Xw!6?h|eIVSq`e4D#Ve*-!zi?LAbspHXCq&G0A` zneVbiUcMVU2tl^Oz#VzQ-6z52eZ@g6N>iJ5&0v8~l_ z@l9mx#FYTw2T|98C;-&Vh@tefFmlXUxLYwW(tVKw(sK8g+E>NSM!(KV1a?F938p27 z(r9_P-brW{kEQl;O`xYi+MDLh4fAIHE&%rRXSlhKpEKhjnefmhRGZHXM+9`VdtUZ6 zy!~$O9Sap_<8Dzp9N>3ky18FQH`m@zhZ89E53gIC6ReZXA|WG6)V~gka6iD%=#up4 z#d&)q+9xQxVTIgByjw_t$Zc#4*wJ44kf4~k)-z)&8XT{9%vA)%V&lGFb0E2P-i0bj zw#;AAbUIx^YkVGF4#e_)qJs_^0&lyAc7M} z!gcUincE5sp#EjLvjeQ}!aboloC1%QkOep(V|e#r0-V2QdAU{cdoIg{Uxo~x$ay-9 zpUPzOFuxv!q${oc45`u_MjGwLkoUYfSp0v}F$7idiHJarj?cg%GXG3x6IWsiK=#gr ziIYCic1W}Zp4~(bPQP)P0f|=(hAgS#%Lr|tAk>xXpYoU4DYmWtA_+Cl_V#u29FPz* z7fr>qZreEkv2sP?0Q0->i#b>dd5J{!6N513xDu)DzWGxk3GAm32}Ug( zPmKo_C+3AMu(9S`ho2McYgHUj>xVd!8P@R?%@tB0VRt9T)=j{3eFq=MBV?K0X|7{Z zWWxpX1E@tGktL#UnM6vh2dpl)H3`2lx^ZMKi};e5*(X|Qi!ARK8Abd;PIOj>_BD?oQ#`)VTnb3d{GFl;nNW{w zkP1Y`d>SudX;pDt(T>UYF90SgJ{eKDBqkC4r`tVu(vv+9HX{wJe3;O6#!NG_1zcq?*mhI3%QmqcdW0M&Bi_yBex|ZlAdBas`3bD#Qu!zu&l3BUX#qyqz z81;p%o&{UQFnW%iH_ZE=*R_Ue(aOWv^%8h#sfbBPxT8zxLKaeE%z5ckZ4@7UUr491 zp>9E|0BV*4%rMs{y~BdmuV2Uh&h|rvaK%HU(X%w5^!)N?AgxAqr13MQM4+C_$EKIe zz`M%^RRhVDRZ=4)`dUh|%6`O?gt@+C>^g`h9a*q^+pJwv@Rfc#wEEBLpR5036|Ira z&Hax4q0*<<97|{Ng2nWo&hw0W=tp%kb&A^N5bMgrD z3?=3s*bOHH!%Wsr)@|^H=wDyEZ9KO+H$PttN^KOe7XWPzeMGO&eEsRZ898+E zpoeQ^=Go)>y4cw6Sy+kZ>mP^!*?#-+aEJAn`HVFU8S|P#HRo(n_b56iE?$%{|InJ^ z2PT#|l`RNMVqwZ-Q5+Yc5us^GID_z(f*JaxdWw0Em;>&&g}x$?!)-XDCNboIpbvh` zt3m77V1($x)(5suOF^o(os>O3vbAWb>RN(zp^hflx`x6klv-n$LNOf`w96zq;bhWE zJrMX)C+iOqF62TG%Nk`UZ_I1=nIfFxA>#9Z)S3cxks6YP zBE`D)x>(n6@->d^5mVJr>!QPmrW~=ZlTLt3HbYHP|?0SaL!V8B_0^+8I|EJSdC&Gtu(!M6B9^;2!H z`YK_!%nf}wcpKo?JRTRs%UB65r%E6ntFU?t`L5|dUs9tp^dSHUN1(*cH_|`Dmzs_8 z7pcny%+gz9daBh(q%ct8WEi6`tUX|d@Rw{BpY6Z>Mv$GxVA3iq$S&aoXX=z=a^6&e zo1-uZB=MXb_~{mZm~VEfF^vqS(AkJdAmY>Rr3)GTnNQPfCJMFdyMkUIeJPL*zK}m4 zRr{V}FrD0!`l8>NOu87%)NdvS7c@r4nQ0L;3KOaSai3$s#Q4X3;(f&YrxhYCBOlyM zq~%Kep-H4A=nR5P#Fdh+41coENpa`{a0S>lATe?&=8lK!5H{;*JOaHr*<(aaHYD82 zv3WYLC^_z>6_TH8iv8f(9cW{zmeqlZ@j65)=O!yrEo)`5Qb0h5*46=fa$WVW#c8=9 z(QwF_ua|^^Kg(m}4N^|(??SxU6ZA;tePKNgsc|TuzB5FB&AF677eUlV#tWrY4o28A zc%=m^BKR_e!lnaJVx_n79{xV0=x`@9~~T5pW_TF{#7z>?b({H$L=v6M_6uS=1v6nrd1Fv_L8Kny;$* z2LGo{XXPNfg`=WG-cU4dsjpX|@)`v#TaB8u2w!)Y1z9Q#|fzJ>QjB~2Hv za&z>H7K(S)}Wu2s!yQqgr}@{Ra7uS5{2C%FOHZ4aeMfPyJo1es+5A2&L-!U7---$sqR5ZmY4%@1<&q!^cHC0Zd@y)B$+86`m7;GC3s)Yz+0s$WI6Ndb6#(+B0 zM@uZXi*42Z>g#_5Urmeuk0k?(&p69s=H7wtkjU;q7z)CQFH){ZR?$x4$x`e8qc z-sE1b!MtvH_~-k3 zS8-@Tm2>Hm@XuD*I+w%6=oP^Rqf4mA6KyW3zw46vZxKk-9Sb;8=-^cS>Ub)D;Dd4a zF}zC1Gv%X;hAM-$TK`OntY>#Hu(L`myVqMTsa3W=#&pym zZ1A&@ax*`{2MY~9#I`{;Lp6&h@CQ9jzPnjnM+`b+H+0iiWHe4r(Rg<(!b*03cio7A z4joU2XIJ&K28Ns3PwZNIYWdnxm@0O(oZg)n$@WzC77>D)5c2dncJ0{P)Qbz-nZ8SP z9gA$TsTVunolxDk9an9ZYkyW?dAqgb61BZY)7lag*QT)7=+Vx1CyaKr;_PBZ>_I%b zflzIwi)Qh}0kjOrlmA$-ujGoykpl%e(T#amxeT}~?}>bP$!+6H-#Hp%Swli<++Vvj z8pY_k^5EDJhPb>8uY^f_;q56QQLIFJn=4&^_BKy6u&#)m>1<0c*#j>*jn^cZ#&0VTG~E-WQJ^4uMTQv^`PZ$+~qni^CmXz~&5 zEor5nmPdlYW{330S)msS>9hv?7QLfq#=5FB)&_-tB%b9H3U}Q=yrhTAxh3pH2@KFNiY7S+? zF=%umZap^3hqyyu>m&wHE67~eQkZa{iHwK)qLr>w9z)N@1JSdwKi;alT?&<(=(Hdm!Mejv@8%{7h(`O8T&`Cm3m{*}zN(O5VtgPfVK^3Oeq znQ3Z*;xIaQguvv=B>&QinfSpT68X%l?z<<$d{}~it z&QLsB`ZkKko1fn9p!lwfUxMNWVfBgo7if`V&t$xoFG&FALWPGigVU9V6+yZ4K4H6ovl~mQ z6{P(#1rys~Yv0E*f*A%^I$Km(+F&hzu~CLhKd^A(}&1BIQJ!k+(P4_n={0 zlqG485W_7w=pfvI@Pm`Vbnu}d2y%o23MRPdk(5HEQF&2Y{3(21S;Ry3($6kPLydK zUiCW30-&9}9AChFHB9=@(V{617Fccc=s5%t0oTl=Oh6q||ARQM(PpUjQw+ajqDJ*L z3drM80$zF;JQ#th{>UZP#l_D@CgBKqtm@xFRK()G!W+yG9OYQQ4@J@I<@!z7B`N;^ z)HtFMr$JT!T+TGb0zpaRH8%=OAaCp!!y2e5Q`UdFTK^%6$?yq0Xz%%9!$rABv4O_4 ztyz$6F*EA_PC610*&n{WV)q^t5XJ&d8F4{;(||mdSY&~bBg3dgg=uVX5f&gX=h|mE z-&sO=)|`A$AD|R5*M2;149N-;#~WQC=%VW5w;re6?444?<(0@Fw?pA zlUi^h2k2b;mluBViTL8z_s)FrSMfy!=yUDgq%S}x1ZgPYT>X}-V0Q$X2??;wwg0tX z|5j1*5a?2|`bQ=p%sl)*I2wiIWcEpnj{8c4mQS$xMHx7bIms6VKVDk@+3JWHL6tBdp5fBqi3YE}3~BNNJ90om zEI5Y|SO%4dGAupbKv1xS-VK}ugu>8!8Hx^x(s+s-%^3+50uWmq048=t83)iJV;Mh2 zpoP^mL?)0?7XjA4ME&Alf>mMB;~8oji8Cp-Ao=oE#-+OeNz74*ZZ$*|0!p*zj9XWM z##un6&0d{{@>Do8=w&r9(-O0`8N7YGPqwo!*pBliLfRKugrQLBgS`%7Z-I$hBra_frEphiJt)LMUlU&QC^Phk*pZH>?7wp~yzEy&<;boRL5)hHL)7nPz!% zS8-RK0lfZJ7!eiL%Wd#TzM;Qi^af?vmT7q96%WCqn z#<%RoPu6sRFpI>e2_g7QaT_#0*Zv7{F&{5e%8c{;kL`%iv9kvkgu%ED>VWzeVyKxD zp?Bbt4dtEL8ru=mwtdQBBi7x)WR%8QttX2h4}}#ajUNeA7Z)}bDljm6ynUZVj5A1@ z-D@HA92__$B@nWfJPRA?=b(&Rm^rr|7Rq?B!$`zqFo{FIK*_R8S58SfhjhVU&nv1R z)5p~c1iS%|RL;D1BV7Z6^u^-Cp>^0o^e4n9+^F<|adkRZj$I}9P+Cu8ofwHB?F?`; zf69x_VUvcso56sFjX>ca< z$H}k~=;VWSqtXB*w$LUX*YpD@Y7$1(f&}?aD8t80|3EPrT}?;hViplHkN03}Xb<^D zZiLK+aONXz%gH_SBzyJ#*JnO(4`KHIfV5S#=ec?>%%ncQF#NyfllTPDR}ekke^XAd zC@|E}J>L3szE5^K{MF=)pm&rw9V+KYI3039KQObkL{_(y{zP(7y!*n^Q8W+ZOeO96 zIrZ(tivM%guca-{niz)y3+YK%JX$y ze?cE@S1C2sX$xfZs)tD|G)BLoQ(b($5`B8|K;&w$C4=W^U(Z6k3||YLg_(C9Y<)(t zdpxP9{^O(Dz-O!{*x%7^v}INqMptiybvXsafRs)g4=35*m-SoAnZda>s$vuRHoSKaQ$aq) zKA)RE9@*OE`n|`N3RQy(zwC;#<8q3r?EuACrN+hjaiEMw7!yo9U-X?>KrrSFOsmK*?Hw|40zuU z@V_4a&GoD(Li~C}!Lrn^ys-U)r#1xUu*>cYYhDGB;H6i)=k15?2@&2KP6T^AY^4a7 z{r0|m-M3PJX-)!2**@~`Q~9#~{zVqN`FQxoTuI@>G9XwDJ|o@VNQzmxBLPEkD6zM&cZz>cHI z&1s|HwY1gVg%4l74RU2s8va2=JWKL;vJ0uj1cG!m`PY>0=Bn<9BQ46Rhu(nY0GgpS zMgBx~>n})0ThyN}byC0s-H2$x`W;J=x+Xm-WJ2-yt!kcK!FX))we;>2DZ%LU6LLYk zV~JaG#8psEKIWo?B$62j={JEBQODN9RzN7!r`ffGh=ufnv!X!u0$=0VGcK0wi6*Sr zhs{aH)q1jw6L;cQI$%_c@QV;81HUwD2r_`@S%^w+QE)Y@7-6fJI=l-cfINt&e(O~i zLaITOK?7kO>~a}V>Knh}O@0y+I=|teZ!SQ8w8op^@T&??M6rk*VGdI(edr0XGdiq3 z0!{l#0oQRod}uW#FG2n84vr(A;0hn$;51QdpYT*!(Cj~&F;T0++H9Iu?OS3LNh@`T zFe<`2pbZdYNEO(M2;_NCBfZQ%i;NxfH8g;@u+Tn1rL>n+{2a46jZsA(ju=(+cqWrg zW_l2Z;h8qMIpYK%a)ZwQWcyv7E2^7|6N75Z*l$sR3%7y&`SV7K{KVSlc$>0}sm24$c zlLx*>KUq2fMyn}|Ao9&ufT<-Y#k5YVOx=?=%rb*T2A^pzOV9$4T$!*;EW#0B>Orpn z1r>P(ek-?~My(^Z_$JjXIoT!%b-9ZX2i9Pzgknu`8N4*36OA3bV$_Zt^?W0NBvPNJ zx1imQL0AA3YjTh}Za25pI!MVf7v25mg662_VV(tzStV#`o{9DKXwcANhD45oxfaxW zK&rMMaHoeo=22z<^R5;Un1oxNZC`O3N~9wT?JGkmAH?9X5(EcH^Aj6OJbDZ2b`Nq+P$eur`nY7NUtRSXlPPki--rd>W0|I|c}T5!qT30_c29a2Lkl zT>4fPg5|+M1wzbeW1~Y6%mYf{sgxo>CPfU>GbeNuoIwp~Jh#7)PQ>A;;OiZop90~A zC)>?kx7KBw=kY8OiKpe^#XBA|f-oESQl`uR*wp~O{79Fb^^q@`o%Js!F~hjLlD+Rh zEdLsYn7awsvVPms>sO+XJ*fcjSO2#)WwN6Ev0ZHdkCbGHYZtK9u?ADHEkO$uYZ7fN z)Jwc_0l^Kc!OESWupO|e@PP3~^2PHAQuvYHT>_%~qGYJSS>8$ej7r!mxlCYIIzfEj z+2D)^vN#4M_W3IBGH4NB%ZvEs*1p8clT=7Ca?I$4(*DA~Ic#5Y9qWWqU;+!#Y51R( zt3EMo$e;IOTQ|}Y#{Z0-`+SP_91f88E}1m%9@imW*%i3R8!zKMdx*%#24tJnJxpo- z@iCO}Y)}RH_o!g0{zwG4rZN(713y0Jpm4px+Q*6D@&-+J;jN*9_x8r}h>s2kd1gt| zBY*+!qoM%iD|nN3dLSiyi!IE^z6WbqK;Mq$GG&)9<4qVavog= zIX2I7b4_s`KMTgPUZXS~?J>iaS)_>A(RKl&;rAUS@BqjH;4WaCqwM?*2kN%~>RKw7 zN-^-2YcW4mhz;%FZD8wpspJNhBwlkWb9FnTO|x{xHUG`{+#dH>U1(yndOyM-JuKVz zBkjUM0=2khZ#7@YXPyLTVQ~HIla59b#D-)pIG&oO)Rw7RPk=J@fj2aCrO*Z zTzOKiS*QbfCJ5&jVxupHJOy{CpWgSL8wU!qCZzG6*pd`#<>?I$RhKu8^BVWsIA*aU zh(HB2lg5c)LRWwAY{N_khBe+Wer&jweKObBQzEX@8AjoAbIyTGrm@3rQ=rs_yKSi% zGKAtlKqDWIL4Zdv2yy~CAJjljB6i$_8kM?JNk)OSZODNrm@`5Pxo6a%&(LVs*ES5d zq?Mo-%&rd_p(AV3!3rJ(s7K4-RugijEb*m=GYHdeZA3uK~E$B)j)DmTgFd-tTO|`g zffCij{BN7`{?zKetH-O)@x?bCXjXszzQ-yU z8=_PDC~gMjQkk38jZNVO350Pj#Mx+ef9j3CCJWO6u%`q997};Tu&q#4)UQ$3S*qWT zjd{^ck&~T~09-!R4&VuT=NlfQGt5YIXO$Q(*og@Ppcf3q{=NMInteBeNNE%GMEt8O z$GB+vR~OGR1rM|8y_8spz5I~{t_uH`$gJN)`%x+Gpun^^3dp&b5*ZX+|HT~gVX%CK zY?3_1M#{hHr9^P|VPj*NfD~2Wl+hc!yK(Lu*Bn`su7S-Q$*ewf0blF&2V#1L_mU^1 zIoD2zu(!b13nwCmGeUV?VT6ZQ%f3>@q+$r2zYm}z1Xpzlr6j54#QJA3j>AKPuh<@E z8nSLNZnhM|3C#uRC5piS4o$gy&_IMvCdg9G2?o0nm%(2f zF5w1{f`sUvg!#l+-Iu@OmMcv81IIIJ={}JQOc*>fo}LguK(TwUlckBX88XV@ez(Tp?BkSvASQs-lFw@|F|%T)#CT;`@YOEkFu>s!N^s z8;Sn3O{VvfN#1;yj6*rLpBdV(Kk)S7XI87;|D*&2Ue{T{Y5ktemy|#p><>6t3Pu=` zLn?};7C|D(M$9%wF!~uEr|Gnmx=5!s#sq@wDj_W+<|?s_5KUOo<8mn~QXnE(`uY0n zL6iKt{5mki#i6fv+dKpjehjRN&ZIlXe9lyR9)(eB30Pp$(L^BQikE~p@JAbsC8Jna z;bhApwJ~@WYa@%0wJ>dWHnhd50F!#TvZ}CscI^b(CZPqzA^grrXv}hpO(ZnL(tomq zmKn)z5*m|H3B!@zHrmar8Q`yDh!8X|jUoUoAOK;1O2RJF{N;%v5n`ZLx)s~_VGD>c z1`>2aoBJrLB*sz@9v+0*310H+MQs_Av1b~AIE6gG(qc&SE|{!|vFKpV6idI}^lt2uU>8~h@8sp1dD;M6ujPrPG$AMnJ*a7&BYElYHf(OgSQBt-e_0qy zo#JMT8mBU#@J*1>R|bpv-e0nQAp{};3rrwbSug~Pn9u~)x`wQb&ICSBW**yDv5Z~9kg31v_FnZCL2<~4(IE1zS zPY8$e2xZoggv0rXa5%rKa5x{r;YueQu1ti(#odKNYu0m{h)x`LjEO z!;lN-l@LKMR{e_zhw6#D2#14N;c#BL&07B1@*qp;wvmS3;yy9I2^+^lkomxL$(S&C zCQ~O>U_F=>B@aO;P)?;V0iwfpm1w-4*9ItA7I2ZnmBZrsvXwgHzqCH&yCyg5{ASAvk&v10gxXML*g7t*cd-%j_ z|MU{II0L`BTyN)3w{zs{X{$TWj99ZqB{W$^fM=_#&paR;N zgrf^o|7=^I9%Eh-BmrvscQ)0T36$|@4@U~^fbtAqZiBnWhaKF}wf=Uvsbe7A^lm5I zPX=xW;>(8{b!lO^PB?U8qGj~8tUsT&#u7O{{10Uc_aw3l%C2H;$Y5i6BHqmi0CMZk z9EPXIRANNoN|_}y({zTdBR8L{e-Qp5+wq;x7ziSJKCv1Le$@4hTP z8o>(cPjW6cxYb76LxO~CzFw+fJfn2zigGH!oWoz&=lAyJSxyCI^nHFoehl8d|b?9FJm{$IJH3e-QyC zp>y-;J>6}p`ms;uw`%K{OuJj!=k{aWt(rSgH{I<5a~r#pz;c3zR&)ZO{By)@KoG;T z5(o%uuZAfb*sB(JewA?2C4LzE^E}5=#87d5642je3mSZ^6YB-T31yT)5}Ip9ONs%0)o!$?q&QX6HF5YaU`4hb-Iwa`w5|GcUn^|=ExoJH2 z!Z3hG_iHEyT4@b^29=xDi=@rX>PFHZhTOuuWT9$sfq-|8@K!e*C@(;vOjb67IP)qa z(*UEBVj}zX625F4DDy$>oD{2O6NYgqPq^$ckh&mMDpq2~rWK4me(o zA~aG^IVGRQ{nyFlDh;^v2(i=cC!oI>qHgvhjVQN-nHvO?Uj*TM^9mOWP~ynYgyY0h ztSE$)r)O-r`T}@CHd$s|SL$y>g0#&3v(1{)AeZYA8WIDCHN+utK=?2ISz-e=XL9_i z$7v-We&PtR1RO!E?Qhqo>mOJoi)Y(Eqql-bKfc&Ks=7yy%*P`HfcAAC`7j5haAZOH z{(~R6XK+FBM?d)8z4QS?`$O;UQ68|O@<09ED!nO(?Z-a{s8dMZUvw2sK>5cHO`c6) z`NPkpXG6qsr(3kt%(L*TZ!F${F?VTJ1`dA0I6+}dv!j*nzQUNl0V75IHmty@7;tH*{+T#IH8d8A zRy#``p~6W?Aez&CFN{17!jebNx6i@|(-t7>963Qk;gDn~A7Q0~6lRjT!A>EjMYD>{ zJTjQfkKnWws*ETlr#3sLrodW9bUmO3dvpzk%z_>LxJyr9h6eraXLPE?Ny4)b#zYk{ z30`FQu8hm$7V8yP@Jc>;x=Jm7)yr}-h#P> z)CCYcQ#|cK5u_Qy+Y^_vls)OPrLeX|Hy!XI+ z%&7@Qg2dI_!$gxwWSJdmlGvu9=3+9`%B%e^CZng!K@kS>%-I%uUiX4jak3PqK-JeK7R7H8FUEuf zBiXTpxQxJ(x>?$zTm=Tf1EbD5TT+F=S0<&Slbrj83D11h)U|#JGcHP$zEKv{XU{*Q zdJ*44USNDlLxhFt(ZM2CLzf;auV|7%M5?k!1Sywl4pQ5zwIZCEpJj?8k=OoWdmdNzAoit;u5pnh-?H7mCCe*9h(&6lg(mXL-v9)OU%_x9$0o{mm zeVfYp!DQr?2x}%OcuvhDRq?Psi?yl%yj+AB9nc7PAQr3ELl3Vh$ldNxO)xne{$-ET zLaO5~R_b8r6&zuO{`UN5Gqv9S-Ov7sKj7cKSKV}4KFN@REFcCk?A5&g6KV5-%$V4B zzGL5(@*e5~gvlv^?2ofhzYv=CLO-3h%h=K9t+FH~|8W{nN_z*z5|g@5GE!kqzXH6}*(zU98>uwF`WxFxjm zas&j8ss}Jjk$!i%6x7n7|oX z<04Aef4Pb;lVDYNOv#_=tYQ&>d3Gk$4s2Pyt%UJ3pDcS{aE{1y@Mt>5FESly(kIiw zz4OWZavZwTrmFen7(cMiBmBSy4uKRN;_>lkLlkM~h`Tx%40L`Be(B8QW&3x3UA4bf z)^DX4rO_35!3M+EmhG<;@$%Q%VCXFJUD6@BI%Ks@E)dG?kr?E3HSYmCsfPEb8h+Or znEo^uMF^#1oV{FU9Mw_dW;3fq0YK;923b1pdx8{-|ps3e-Ohcx;{W z#;hUHk%zxnFF&#E``I+)N$yegA6o*wKIVi6m#V>32uA~=A#o_rp`fbxjI zHynxy91jwjsE9tt`*`J_{q#8s?x;z=9q`9Tn11g7l7+|xnI3!B4XEmzRd1QMkBg`< zg6O>gf}QBPo5Ysx+L*TBe*1$NOuce^7%lG)kuu+`bF*z|-;nAF>S&_nQwc-RlDEk_ zC@Zf{HerBBEz+I9t7V`C%L717W-eTL49W$Dbj~#5n z5Vn>3kCv1CqKTjjsTaR1ZEVIofV6A#0Xt>V<3wr9CJ4yzmi+lfZ0y%|*Tckyx%Dw^ z!R`5T3_vUj{Mm%9u&hO56ZR6)ZomG7$s{m_ok1*_ma_;8vXVORFS0y9chZgK$?DPb363J)#ft3=M! zd&loRnTi}FoJcI{sK~x)e=I#mJUSaKu@p6I=7)s2+6cRmSCKFQTUvZh-?{{bt|Dvc zDfKDgZuo}~17ia~|7ukgm`yyAm8A+0o`Tp*l0@x7+OnY;j7Ga3o6tPbeg0+p`yYq{ zNLd!^TXIdd0UQ43SB4i?%XrIiiaT*YZ(~|vXJ({&13!Eqh`v{fC{x zCQj9#r1z01hSZUvS@3YQuPK{LPqmQ1Wz4ogk2ye2KwwX@mPE{ZqwBv=dqXP{azKb|p2{##Rf!RHZT~ZCgBQfC| zK67?-C2f=T%sLV9*nSl$1DgE=1I0q;VOC4vO4{ak6C`oq-R&nsYHzL-rOg4BIzir6 z?ut}Gy<%3NUr@G;>}*6tN3HyBHkYT;6-PvkXFnNV)m%jrbZ_D88P|mA#3@4D^e+@c zBnPX;IusU1fI?ajga?_zk_vrXX;kcmWbCNif?(ki6E3`FIQ(t*jU+c)a8%3q@s=u>%XFcboLx^mg~&%1&S4oYT;n(v90X%I+lzr~*%TyQdGouT0tO6C5@$?xp23Wju;hN9M=rxtdDLzyBv!+TFNc zQk#d5Uvh!kVY+$^|eWVz`RfIUl zv%a#zxppJ8h}V?$_l4V$B8c6bu@Qw46UUNksY+Hj$pUXhJS^%DXx#7-WXO94Fqu{P ztR|g?&BgD`aDL|J^Kg>OgXkL7KSru(@9UlukuPt-pB%sSPh2(p{z18#r`o(7W8jR2 z{umqj)O#N`H=;+ah7h!3Kd&yD&JVV6k}&HTUs>{b*u4`+;1VWJYk115 zz~X?v=`gH1*}eTJ8#~wQoon zkAx{ah9`Q_w-;X$e1`cX@;^qw$r_mXQGtunlgC#=qDs{K-3HUJn7Qjiszl9*oo6gg zM=Ro*F$%@5GbHhFy}`xZN5*p|`m6nAzMbb+T6snKxhwsgO+Tm7&#md_rRnEI{LsKn z>CVGJ`TRusxi0-EXYi0@F8+|r#h-)eXEXh5Kp~9&8yyZW-rxlb78>Tymn}J%w4Zzm z4Ko#gv+H2`l8KQ2);GXcZ;XN4J1*3f_`R>k{T}(xRB)r8Gj*yR`my zv#m1$V&B&-LGHJ(JfXWLfX>IM67wAOFs7Rz(s2;4%un{NFweQVx3u{LKz+AP^pI+Aa@UlNEJtw`KgCcdU?LAzw0UsN?5%yqw>1^dm{fHN_HM7^H2WUOMbkdC=Y<$W<{(Ay?wj*& zknbL-ydyz=y!(y9yB;e@8nmWed*K03+>uoWzOGF#rcFRE4lDSlKOo3IQo9o*u=J(7 zG3f({Nq~=Ojedk&8<*FSK=<${E^`a=Xa`}Y(KIE=Q0OzpHzNTEQ+>x1aq`viOg!DR zbp5CJt^GWp2bIHkuo)qqX{u$i{KyWnTu-A&mMMyN(=wO+xMf)}c@+q|2TN2+g~wDe ztz*LJy)mdWC1MVmZ}AIw#&nm-$7IT}T+>Wg%A zW>QR6l^~v=m_u2pY2xng(pys_uEge5nwk;;Z}`8>-xVbipPN<{+`BD+A&CGc_f`eX&EHAp*IWi)pQUaMosN>ho8|83*3Y48ZOq zkU)-AEyjV*Klzmjz0l!JX&8^w5|I#zLddG;aVAuLQ(iz)9ZJ>8su_srFKzA|C3%)b zrro}-ga78dbon|axED98!91uphZ`MqL0D)$Csg8iw&1h2h}S^r$?ZJ!&xUBp z#eNX?#t88EMr{TBUYBmK%eN=I^*O_#4$2iOUT11*uM2o6pchKg+a6hHi$HVt*^Hw1p4CUPMtc%4;pwgXTo|a#CM;9iF#C-lHLqv zzW06p@`4Z9e(dflKGfU?(%DiqZ5cfu<43aq4*bN)rO(hlkvq1>qt~eC2XLG2P%sOGf51CZcsDYyj4uuTo0 z#vPx(@#!g<^(OD``MGS5I&`va>fdqWk;ZJ>DTX)tbv`4!@JR1unqq%&x*#ow7SqC% z6k*M351x!ux`8J@z|57cmdB|qnFq;`jS9;4Ap;K>GT}6j0zY^U+WS9zd4ik!H34=p z|K7`nZ!5oK4HH8O>CZ^lWh$0Xt7&5>AfA4eex$iwWAzfX~OyNZDoO{kbd#}Cr+H0-7 z*4k?e!cwswoL-&)B9=vtG&j^`%MWFXkWj%iaT_oA`e3-cm5aAS+k!ql)!b#^TU^8G z=KAJspzKd%6xD*RdgKpYs;Q>sx$Z}q|B6~PU}cK;hy96Z@jF_ZXCa4K8r&Sz%VY8W z3==#O5kp&RjKx8Q8D)zcFjn6QnL#M5j@b=R;=jamN!k&iSi=T95MS-6qJ*Q#?B9e^ zWuzf1u0f0pLBFhU3?k^D?muPK$v=3h{!z%91|X=?!BuMGxlcvn5h2K$IVA+ln0~<4 zTC(ZmZ>z1HKPdzWa7KJL$ASE7TMwDUN%3!$J~Ur(?59KWivO%6Y@}+@RK_|5L|@n> zuc7XFR6Nbe*YvDnqoF;#=jR8a#LvNM1Qq>E*!2(|^P<6Pc1qPPqc_GWfNS z3~i11Rs1V4u%!4u#0@lV>T2*h!DAsuaew*^A=cpK0?YmS=-Ojc*^XdiXZ>YORSUCDMyef3DXb~eQZR1@0EOyC&^ z*GO-I^Ju0Zp+&Y+a?2$@gOK-tft$vFd7vaGUtF{ut2rgp9GMmb(>uj6>0ZeNH%(G} zKMw{2Did84&n^t^OPTcA$RX;&rbb#+ghFms22|~ASu_FUrH@eodQ&g(kJ5Y@KEi%b zd_-hPrC;1Avk4sUiN$d)1`DAh0DqZ#MO(O=nuaCn71?EYok)LbU%#E?LxaH{04qLm zrJ#ccT14v(lP+9FcZed1oFI8DhX#L?5@$LQN_rMW6a^&$RFm?3aNx(B=JGN%$<10H zyUl$|`*h&jIJwTReqI{nQP`XUY;wGCz5r^(h)3!b7JJ&v_Ok=7hYOhnMn9HF-fgU4z@L~-H zpM6O_f4F^D`X0P6r%;N`BZSc#oJc<__9yOjT9@6HrXW8l0@vX|MfuYb`8bZesYfCZ&lC1<=9GgOV~hokm2nGpmw;<2vScf3}kalIPI2MdKhXF#qt3> z2^~=314}T>w&o`H+fJ1ECqMXt_C4~e7%)Mn1BQZNPcP=jL*(WSFuo(e@HS>e8yMQg z!qWgOX-hwE-(LIxt+uQ8-oZ1@DDwKQh0|9GFpSpJFj6;B-=Pd5q1iB^?(gTqW?p;V z=?2?3cO^LY;SsRY;{D{srXOl_?Mqf~W!s%sHTwdD*Tll4^3|LL={M7H6vP$6n@Frj zOu`BgPPx-5tvJZ(b0q0l84-ZT82;9x)fMI611v!w)BkC^F}Z*F`HBNXd=Ul5?KKDX zCi@cq*G%lEMxDOpA|``#`(32;EgO_vEH}S@yjYi7R4Gm>+o0f>7(v9CpmDgABvkX%tWE^95pNMDf;KdHg(h2=}o9Mpy zP#OjxJR&cqCxehb7aaSP+^OO_V6TS|#)?SN@9;2uz$8%cqpjc}lt{xWo=-i3JYhY70eBdIt%zxaDn_BBY8 z&gcB=&^Gs4)VHeRV5cKGZB-w~d~5n-7O1LYdWiXu0IU%q&>m5(g@n3cL4$H(FYN~|~_y(dTfJ_;qUeG48TD22#1%|iUn z2hE#f(3^HktJHA;tIlX{NVU+eo4|+SjHE{xRE(UX@SQN7|L&6o3k@UoHineUAz`+t zS?^m4_=`?DnYmLxtVM}t4?(|*ucYv*KY7oZ=@XxZPh{XR z+VLV?;?gL#)zdh^Fft%lLn?D-n4(ex>@1%ZM;nI9 z$wE!~;w*|(<2i#I77ap)a(FIbR$z`krayc+N%}-Zf5lO?K0{Otg~H02&ldz6DGg~z z;XtKM|6^twY8H>WX~?k!0i99CGA|~bL2uMs$SIWZ)D+jHi1aVTPD;j?Oyo0)WXuJh zyE$8j@>qg1GS9(2*5NER12dG>kJ-Ed4A%$*aPbX;z|ilX&R`}XnXNn60Wgif=myokTbMwzjVtCVzIUOo!+x?6qqQ6&8$1+)>cpDj;>0L+`A zILH@s0U69rNY4sV*|il{KM9St$0m#cA0gB1mk_-bI^aOxi<^^qkmXRfc<552>_BmRErz5HbT{DX+J& zQ!S_LNI0=A>xEq>$FRG%cO=k3TJ0d?4Hx$7%J9g+H!SURjzPYhHU3vJy$D0AhPRIA z7CPN-(n_;nHcdtvVpI(lr_Zy%D0?!L=I3?G?v=n`p7k%kILB>u9`j+B+k^Bww z@FY!Ns(1i$DLXECgqv6~2R4R!AtBDK!A*%FnWWui`(^o&HuhL~*JX`B5_Aa2;0?CP zMTI9cpLV3=>D7^~+QrqaKAHtp$eYjT;`KUCJsc;a&axEIsWz;7p|ywn9(v+Ie$dc3n3xmpk;Rl`BmfC2?%2H$ zpb#b_0=DVa2nZ%kMo(F6{bdbF!e~mGu%!j@0kXXY1Dc39nyAs~?Y0_d&hg1}3 z40s<&z`$fo@1(*oP`7ax+C^SP4BSkc=MlM#GJmHy*l?6K96}6nz>rMq5EDF1BsEGh<-mYbv+2gv$A%3!s5=Uqh-3eh{Bb4- z9jRdamOh_=TL^qSG@YG-=fR}fTJ-amd0q|}<8e!7l_6ux4gH3oRGi7fT}{E7=Kw~A z9o!zkq{)w3;{%~gAFG;J)B%0mtLY{vld_RKa#|A*zAO*rxsBy1Oj0K%QC`i_1j=2&-&Owh z>RHCX)a1r(WLlH+f2?W2S|Emw==k7);ukLE1~DP~g%zL3yu`Bp+?h~x8aA8LDQr6G zR_`0i>O%$QYk!Ww5)Ta1qLjDBkKl+pLJoG;50AQhz+QB{1p)Oyu4TS88>0FN4(onU zLEXDR7;tD;=rtbh-b~V$teL|a*BU3FtLN)eYC5pXvolZ-^j~w9Q`}Z(Ei6t&Vd3Ep zTx50E*wqLubtB?Yd&>kf9WAV_^{EEnXLSz~s)yi=f4k~a+~PGh7l~l2W`SIGz3K*@ z89J%wnF`b|B(XfCFb=1E4RV^>I1x4g&}S9IZa*x50%ni<)|frk!0f{Y@z@lz0h zAJDfoCUxKF^S%BZ(8+Ce#1*bi`wTV1=Y%8(L~1TJ5f!IPwh>CaqEyBDdCG0%c(8vg z^}&WgtCM*(OQ=D?FwC-n&y7QeIokx34r_)ZmisJgFfp9-y2k#TqnOA{J1sb1hQH_d z+ZE4&)2E|erXiEs0Akp`sT@{rOVh8XZiSg}lI<9DtJ&P~*xbX7=8kb+J?wUl@iz+c znw&SP_^I_3pNSQpZB%?p6`ys*r=}Hy`W~WdE(qWM9+cMy4FTZ~tVj605zr$IKvyHe zHLp33gTJf%?FWR{#HU&tME3lw@bFkh;c-3+52R&&j{EAo1;;u5s!q-4DFvcT1PZJt z70aa{!_Z!*6zHjD8SN1_&El9Z{>uVn0=MxkPrD;joDrO#I6iGdnA3R!R9WJkVu|$8 zJtAPYj(ly)L%J`<62zcXmL8*&K2xLM($Sa>nu*@7;wS91p-EyPm)sbgWz}l(a+D(d_o? zXuJ0YHpDY$NP}M9wf9v&GM?Yt{l|OLa{h<*-k08eqhHEJfF4BLD@H&02slF+Cp7-J zeTn~T+OT_{EITJYxb}1!eSMN-e46EKQzj~sl@ga-V=@VOF-@)wwgqQG3#LIzh3xaJ za+jpNw{|Cww6#cfXo)wBgF@De;UibCVU3@$rd}dKI3#P;r^L47-R;6!FqD%fs_Mv! z#{Hq{^v`bA0!!y_@L4bJLE?7!dU-d1lJzrx(WWxzr)SNiGXgR#4-E<2izo=iCM)ix z8`c0iWH78%N9;%K4_=l4Fmz;_8`FU%Wu#UqO%5&&e=4)Ve`uLtuz@|cX-uTi2e#Uc zX?HAtLVyr4SE(FNjuyhTkm6qmK}4K7lydY?_<@-zmEr6jVo+$DahA`_cQ;;{-x%)p zUzzU*1T8XB{SB4kMdBxaL-0|$Gx_243jT#}R?{o<)p&pBmHC}~kKs_kMtfoN_ouQr z9!WI@3fLcq+`kn@T_gfC#Rkql#k;7{F8&tWE2)hdAkrFtG_$fk7}fK72TM~!+5H(^i}y#lKkECP*+-bFAJHh@`!6VcESC5^k-BpLL$Gkf7O`8mdIn5JguieFnW(K_Z;qDR3e$4n58bk=}O{YEfI!SM{r4Hbb(S#{unS9 zbNxL2CogqSovi6Tyf1fBVVEEDqb^%6b|rm*-%#;J2wDpvjkkp`?p4gA2T&fAJ5isc2WawbEBKT&^8jGyBQIA zG(;c#hM@1Dkn#dR{G@8ym0V2u#1u_70X*GrC*%Z*;$MK?SQ8NdPs%PZsaJp`{EF2(oAyThNv&YC`68rhs_ z9zvy1sdnW{9QUf-8mX+7n1(>k3nusq<-D6W(Ob(v%|tXhH8RH^3_4V;hp3L|Q=jkW z1t(r*3MpBI>2Ssu%>wieOyFF~v0V6?&{*s2x@BQk9WMTJK3Woda5^xhr3Djc$YD7M zEUo#q8UzoD!a>UL_aQ7AyKXJJWFC1po@~TBE3!&a?gVQCe~LSnL177@(6Hnp;L)$Heqr)86W8ca-42GdaFizB0&HJi*jw?f9% zdv7HTH_DSGD%p9-dQ2Fku6_N3CZPw7^8%P8BFF?$+#(ZwWB8#gvP@eAg`=u+qez$W zOsazT4a;~CuOWxJ(6(u8e&x~Vm;1$Q9~^JREq775^&Q&@KuL>-=f;#Teshsi2g(GxC z9R!3 z4odnj9vE+;dIpXx5G*G~^Mg>7&<~0#=MlVz99Rc23DyO<*)if=48}sHkCuc?>z%Ly zpcLvb9!?K%lZpXS7zWZ%22WG?@dkcqF##N1$XV)CU%D3Pt2HgHDg4yhblH8U5R@V$ z(S2~ZE4$X0yX9uznjY|sYq44mUJvJsRVSW6vbXL?%HiONR=#jJd#_bQqItVK%$R5V zgSyB-2vM@~Vm?EcBLLG0-J`E#dGk9wgV*C!Nm;KHH=yy$1%eLH^SKJn|JaIabtn_JqOzKK7py*J&Vi~h^}V3qR#@3@0_nzS$iOD$o}9wdT&G!UlwcBSkete#2m z_N{#ni*ge*8Y`m_7m}XBusec>z7a~Pg{Gi^46+lWi-Fu4da^rtGA}PKw=z|NoBU6& zeFqL)DF$T6coN4V%HoOg;tyU$)fyZ5K&L=cuZIsLG4D9?C_6!2aN{$3eV8k9(SU?u z#Vm86IBK)TpjivqPT)HYkh_&*jenw@%^l9~ieguU`}}1ry3+$EK1eT)DxZluq8B^N z6+)ob8^?2WKt?Slty3$>GI9-?4f$IcLE=~fAKsZQ6O52C98`nF&McR|$nCI3Z=JYF zs{u6`eAR1iteh#`J#l|II68*uO67aMz8%iA zAIrJGQYb)(;QESOU`HshV_g9%M{{GR=-Mx#=nK8r5nhDJy&+P9;X)mRALYS#@tS1$ zlIvl*A7miu6Ub(oz=>`AXto{^ixFq-(|w8mYnp*r2%R`O9!k3FjN+jp6tVd-hG^kN z@HNr=)xZoxz```zSelK5XDrH~>gIESBsYH%MsG59ArijUl{9tc26LJjMe*-nIrueg z21IuxB~)(*vqhfz>Ho@FG42xXU>yo0PcUKeXPm6SV{*pu#8Frc6Lj$C zd^#7$dk_OQh}0k|0SZ6?(+I#>E)=k#sQ+#wTti_L6FR`Rh|Gl!V(0`Tp`+*!;~5C4 zLnrE|lc)+t8^Y;U7jG0f5eC~wM>EwFIU%iR(j=RtG~l@hyv)T9jrjJM6t$scp~$L6 z;+SO(3XkxL%7AuV!w9nQB~5(!Vb*Jr$7(~p&>UqJa?4j~c*Yla=&>_ECy77@FCg3< z*r1zM>B>k;s!+%+fy6X52E=cn?B|n1@iY9gQYKK*yxXc{e#< z*E^n9lkyUA<0hGAHCsuoCVP~O6Igy=Q$nWA3PIategc~2C!89FY(hI!-O0f`0a5Qu zo528ZV1E#25NTh;9Qu6?G?Rq_ zQ>@`u;=Rd3)DGQDI%rQMbgDL!`V**yF2o&)eqoywC`=w~x6+xX%Um#LOHOqEfsopcZ$+zIDAL+Ze((!?r$e(E_ShrJA4QDyneD+e)|X4qq? z*`#%sFKoxverPQsb&#)gA>D1`PD?hVs#p6+lH#+t1bD|D%K0iyX)qCuN}r*Nhpuam$ghM1Zo+ z;7uEX$V8|z;_zqJn9W%1%}@qJI$&aIu}Vd8Cif|wU>z}mfCP!?&adTw7%hI3FR>>F zEZ@mGW(Fb+8v8Q4lMa^xak~Pq&@8aFzwr(&C{$~0$BXBBFENanm|W-+kXV9yt;~;k zL_IIpeK=P8rPt8{3?y9u5RUAh>96`6m8oX@4EpQ^}ie zcZO?5_+*M)I;?T(g2P^YmO2OZ80khlRJ25?*2+S=m1UXI6l*Mip!@ne@Y17eA=|9g zGPxOH@n)5v!<6x%5$R|s(&JPT;l$Mfm0jXnaf!>kgb}a@uv>oyPQK8|(j-mOWKa>R z2&DpGPOz}BJnHRD%dNqIE-(+n#us-doTEU-XC1Ypu4ZrM3;KseP?JE|1-I1?f2(@N z2kjLB3D}3Yg&GFvRx&)vK%isT{0*-5OhP|ug`Q@UaD`}6iT-KgK1;Kg4oXuZ3y{>>M^rNx{M zPl`q2Bg~XbB%|i?S6M0~p+qoy16pKcZ0E?$4{sd2oq7 z+MS%g?CNBvZg*y1yiBP$=XtMmwI$6-!-6Gj-VRfOI~0$%G>n8zhz)K)yXtU>%H)3M z*MsR?e2TLHWT6Snkxec&YoZVIWjS!dYdAg)qc0fY*~xUYnU;n^%w`;q;6eVC*Ly=O zcS}{q@l4V*7O~11rS%knbEPO@a19dU>WVc+J2H*2xhD5Sqqm zZLK|OWgIn|+tf-EE8>VH+m)%)nLG_O)Oy&yUeOKRQwNv`yu(Qo=5xRT2Jm{csY^8P z=d8R47Bn8JbPge)3(W#FDQpamo(lm4+;8)#5fL|PYyM1sKGn-2Y$*?&x|k^vUc zgtdC4-ARv3g3Jp|c6zk75;icH;NnC>O);~OMv4xpsU~p`MkX^6`!TREZowa;%mE6g zewPJ;(#6A>MKWjrmCV0cj^Jf~I2aG(=FD2?Ahy(L!EU?=StKnyC2g47k^ zx?TJ_&_{`z$ow4V5G)@AFqhs;3w&9k5!%i!cE%&|$k^-965L^>x?1qCUp?`E=dOKF z8&}koX$^__3PZDT4KEjwuB`!fUVNbw&rN{2cTjzTGW6SdFeRXf^|i1P4ujydRSdnm zwh1H5FPB8$H6Cc@E8he_5vM6yY-%NVN0z{Mz%OQ4RhP;*LdQ)e;WQ8hyRyFE)3Nu1 zSb8x?T7%8SEnJ(t>w@5WwauSh!6(M2hBUNKZjG7t@u8@Fd1-FemEXSd`=EXtRMrk0 zAP6dc^(3g!+vyn(DB}lm#I%^QT$T_gecg~E61{^R--i)W@5P73vK${)!BhoemG?z1 zF!sN@JVz_Ie9z@sf7<7z2}S$_dMSU%hMp8BF9jLe+BBLIHlv9bO+$r>4{RMXq-upj zCn!>VD$!Z9?RnYE}KppwI=8U?C zy{GbepA=SBd6E)2iG~Q_4YO+L%lr%+Zpn<5lTZTsY=8qvkxRBz%jAlZtWuyQpQm(~F?B=nIO?+tgPAo8>68foyMemImb zjO&!Ku-%UcBB)R2YV^i3lZrM_70eUmBaJITRK_0LcE;M|M_D{g{K4I#y0T?GLaSL> z$dfF!W@G0Qs56l;u1~c5*mkcPwIJVl&E4_AgYMj zV=3S^+HL{YysMLNW>B>NO)L-tvGhzVA`p5ksMhv4bQPosO4_K=>po8jO8uqz$!k&G z1WLfeufL|p?Ee?9?WxCFWFcVsk^%p}8mh?v#gQq)VWrTCMt|+tco@y|n?n@la~vX> z1=bD`mL17!=I{C;YR-9647NiNR_emUO|2Ui7H|w!XEH1^(}w}taQe)WdV<0ra)%yd z)h5U(cDN?)mSM;|EewbaBknYo%>Q=cZdAgWjqU_|M@rjZ`hWfKdp5lY{9kLt@fD=- z$T%CXQibRpRM^|!;pPi+7eUPw&H@y4(B`rf8bC@(dlqX64N!<1@%vkN1~}p5=fRjNf-fPLK~TH_Xd%}x zT+A;UD*FgNsK5A?Ipxyoszn&rnG~78^)%t%_)pP-k$$;DZo-ZOf;u|U41xtf#-s2d z98ZIhM;ig%(#%3E*eFCgsFj6QlBTlru;hwEcE){K8L=e9LM*IyWr(W39aiW67b(^P zgP1lZLQ~(1`4%8D1s{Xo}(DAdBGCxR=SeD9NP=t&X;G~#{CbBhxZ}ym2s+n)AkRlnpcxx zBRp`9gk#G$+0tp>{k2ESMBy5c5}Qc`gD*A>4`jHW#K0g{mL*%RS*hj-%Mh+|=uVFa zWQ040ep-)}F+-|Oh$v75m*0l6eriK+OWLTc)n8@vhLtLmKi3z_lqtgmOpG(UM3Ih} zITwT!mVg?sX>iKmcRT64NcnPyzYEDST9Z&24J@yAfM13mO%Dx&cc^ppsY>^jRal6T zqI~gE%>X5Ar32G4$(k~e6$9&zUguYb2PKI%IbS}IPA)1T)>pr9 zRO(j?oVN4jP&deKqamd^b0ETU+{oD>4DIAY(i=e+Ca~e+Vqz=EOv#Yxgpw^tr&&_y zWD?kzOPf&fC{eqr*+=9SV{0>IU%rmK`g0ary98V*Qq0kjt5z`r5T%iHp zy%v3o4N|#BUuPLfF=~6)?oml1H)>(Sps-XXz>P^c-XtDr7GOI+I1nV(p$WG2Byl<~ z#f^>>egUX;1$9vEcs@vHX4nu8O8y5_)RmI6%~1dpFU=DS*eyQwSuq#{pUGvgg@KgU z%V^gkluKb)YMUd|%(r_Khu_F`25O~;5;Ue265JRC8am`IVF3gt01h7bc@8JXNhhzP z&MD{Ph$qNY2e~n1<=}POp<10|p1hI#kj#Qk{T*60=qkPwb#^f3z_yKArG{>G=vMD< zMnrh7A%Ma;2$~N=R`4{-3oUfZmezxsMkBy&41$){%&MEXknr=S(i<)OMULHc2dQd{ zcaa+RV`(z@%S&3998TYp-sSUHPho$;IszQt%#rRrTzqINL-{!C3T-LDKp?U{iC!tX zei*FDJS-s2XF9ntfm|>xFuyL*rjK-Y@>XKdb$0QjASOR7vdv;z(O*T}FwN2lh2lK0 z72{l=S&Ie0hmEEz`N<{njOT?KWbw=Zgr=@pyo{!3a)gnB#^spce;|MFvFvW8SZA#f z+T4qfKr0r3&J~|WEz&@1wbrj5#sG0@k6L}C$8maGAMTB{NzHYRDMZ!Ems08jxW0_m ztQR=7N|rI7NR)=pcNIoVVgMrP@u=i_4l}`s>pcWXjG3&9x$?VguOXw;i^8ukaGK@j8OTuZ?UMHZfP~rw zElC1$#!Q!MMDJXeaXKIywSL9dBX)&1<3PE<%2nOri$%rlVCE4r4#@9CK&3E1@rVJ9 z+QK>v5b#_h!6P!z%m%0uZiG>T<9XmBM0oz4#0JA4z`Ft**bngusOrEN zPaC8>-m-r*PtRdImXtaJEL4Awz`<>M+<7IKC*oORX?^7Nr}wbYWk9YJ!NB$C1jL9; zi21NWDKvbtZ*0X%v;b*{j!$>(V%kQto#+PZ;0BwlGCFpGb<;e_^E^X0>hNjm&{y1K z;WqVChE~oM+!+8Bd@HBA+;6%%d0bZxTRf>NTj3tj^_#B99?}(|a$Hw7KYm4~ha-H1Oh-T=^kv;ZhXH0#m_A(-LSvxk zMP=xNdV7>Ow##($KyL(7@u7jL(=Z?D9H4Eb z3<9?4UTJDwMGfp){mTX6btkxkaWH%L32GV9jLEl@a1B-<$YSr$#NaF27u2MZ{ZJCF zu-`=dEc*}9icJ0cnSlN371~(xvAn#f_%J#zhu5&rvR#f454TVZ<3F zmT={zX!7QZ%~}y>f?Jd=1|>Qtup;=76#DY8EI@gYykU74Nly(w zwZ_Mxn420+F1Ri@j<`fxiF9Z$P{?evqfMq5>Z|B+tbMH_O!0O$_R+EUN&5w^en}hlc0Y=L zpZ#wPU7EeOuJwIAEtxxe(>Kp&dyz+w;8TQD)<-hGaG7@6>`lwz%kqRx6ucQwY{0f} zll9HKKD;mSf6ajHp%c%3D+@vgY=5f)w$Y=sqe6RJ#lE!yHC*3qaflsY3#n9b&#K=I zp2xi98Qaj=<;4wj4fhmIV9)X_Bq5jPCTDY8PCqpnT6F%vd z!TIiF&(+C~fI4UITu|mt;a-*u{l$*K4xUZ2V{EN*t$m`%*Y~3#keFk}(Qn-~-nqB+ zk3CjwV__0`%pA3sE=fBHjVfheF9xSPYK;kT zxMPLa%=AliJ@DxGfBNZ9U6nnlCKuEj2eatILce+k9xYvfjq55v<+H%gHsPXAf33RC zWnyFIQd_lz7*dV&#S7zz zQ==?L3!^Dfs8ml8QpH9H3Wfi!IBGPp4ow%TaTZhQ*N3UK4K9 z&qEfGfyJ@0*R1bt-&83Mt=uMeI}?+*6Wr~KQb87j2rz#q%$e_4S>43yjrrQIPW4!T z4r;UGWAlUGOgV)@lhkGz?ZHJ>B-kCR<3Dh#=g7DtD^IjaX@fA-!wN1&N5bOu0m6lZ z*p!#`Q&uGAiWUn=sE#cxx>qxjGU+5m3r^zj9NDhbzxKN5lV1HC6$VzV=i*AS0+=Do z)W)dxAS95X9d zp6JXSmJC=DaS$o=$q?Wor6dl?r1(`NXz`gn^wZw(!8P{lil5V-RM^m2JXnC7j5$7F znUDD;AzqNb!$>IZ_Te=DYm)JHS0X*ylvbV*rwsW8x)?S0U%;o21#XJX!TAOJ$lD81 zMfKSQzb^Q~R%$y7a_n;EE-{<9+?&_#B zNmP(N%CAU#l+zW7$fi=`qfW=6*71Wzws}uo{zt8So3=yb<;)K6t#2kVW`#FBb>`lDg;llfZYn?XjR8D zX+Nkyc1J5YhMqo6nu1>>xeOcTtLIrW>mEdb7)^ffHpikbGq#qZTndy`E<^A_kpfLh z-fxJGi?b7wX%;2$9(i$CxNINK7eAU(gD29{4A2WSt7K}YJ6C3_H0xd#SEA-35(Ngc z>XG{S>VKLe?@WApTvylt%hHx`_0@lVW%dz0!-9ZP+}fL7DW%x8KS}NP>YdX1kxv_+ za8lfdwVcbBh%hStu#HL>4t2nEc{`ygy^3%$CDWLI`kX9e5mfU1O+Y=)Q-S$$t_I&= zek496g`dI1Bs>B0emw)sd-V)3SGlTYf%!Z&dvrMXB9CAKlECZ$Ccb)9H;{%J=f96o z-sWXQnEfcPe$8i}yy4YVM%RA1RsFg%`?C%Tolzi+sH;=l%g_?Vw4YrJ$sqA47TUp} zQN%8*Q6yeZ!%k_9w>Q1XbmY+oITRUqg3Nh#XfkLj^}^Jc4>M{onIW23%p=JYCS3vu z`DX49`4n`X2?Zo?bPz6=n1ile?K{OPy2kW9bIm!g*cW)jhfBwq`bKc#)b>Pa|lbjx4MLy$^vtKL}ru=YbVTwv6m%9U(i8YL&g0ezJ0$)Xo6Z zwR1}?uKi{$5TDJ8caJ;vL7BQEmRRf&<1Q)Cb`ec*usR^5kOkDK_T8gx9Brn4f6A@3 zUZ?(Hnf-RT%b0si4RxXePg;Q=u#xI@r86g_l#Lqzzu$M46Wea>b1hQUq~nj~O9FP+P+Vkg>q!cR;N6WA7Lj!P?4w z2{W+el{mgIq=Z;9-h8AnEBuTnf`)*>>lJ~?*3td9m)qDhf}u?TY1?j;5h$++iZ170 zyB#w}kk1ZSr;kBui;vKu8zT49dK_z;SQWRZT=&FVv@Dnw&kC{ZDQBe87v+jC$_ihv}sU6*Dd7;ixmER)xT#6^vyug#NdB#9SKcrcp53)Cy*h+o${ zdM!W3tPDS{a=0pCj|G-z=uLUob0KLnwtwWwR!Fsnn$vg87RrGlPC`&Ru8Ph?v_J+@ z_H35%QBO4)JQJVN!)M`{fiX{dNUBPc0ZH4!GfN%Px%uh6dK!h|3sNPKGUrtv z5ARV~q|o#Fjf!dUPtTBxTiihwJ5k^e^p4ENjG2y>U>dMycLb(Kiah=jk4K^kS>6() z&yzDENL+-#RSNPq7L>hsUBN*VRylqyqX$m=E+RICM`j_vv;nAlT{*ae_F+;0rOH{A zMkVU{mKH%^3Li7{Qd5~9;eBpWSx&|bQ<=Fsb&pWvw@3<6W#F#bNbl`g9myQ1i#;}R z{0Ih=7x6R5Dj1J=Q%LW(&CkRMw2eby4C~8;?*eb-t9A9VFl^LI%d!RhM0&|QE(ae!xeaDtZ<_IHX_Z9%v zeuYD@MBK~UZbTe7#?}E6EK#LA?5YKsSSDr#0<04US>2$QBkcMwpAV3uhf8M?;)a__n_xmPoj7-IH&S zCE{}WI#?n*3e}NegC)|mS>ggLaXxkgYKPPD7f!c;79i%dj?-!Kv!{T9{EY?K*tovn zlqKSP7kc_)iG8s|DJJ}iEOCCq5}h#&L*+NZ617tV!K*M8_NUsGHJo9IVsqa0s$Hv7 zc8K%xLR=~ELJCAK1w$~uoZ)LTHLYQ+E*Kf9@P<8O9b*k;0%H}Cd2J)!7nV6pp+918&v!w;#(xB9-%mxL}r{|6Q48>i?l^5(D&Ha_dYgmFFnT3tOC>CIl7) zHa_5OnhB;XGR^`o#juS%I?1M@r>p_k(N@3vl}SRC>AR#lE%qP3{`E;xl}QOA(Nrr{ zQBeF(aW7Jvb7B>>MHC`IIjW&!&^T`D$VD<_Sq0E}DGGtCf&)??O80@w@~|ZF%JdyI zB{K+L!*w#2j<5o_*f1?^{Tp}{82yX{`YKOlsA)V!Q`1uoRpV(Gs=?rIi?lBTF!%*L%3FR|4qYrv6uCGi61oqN6HmV7Um<(o9vZ#4ZA~vlnmqBdHw7`1J zR#VlJM_LH>2GFGyT!1_QY8@^ks7<(D1k^QoAJ-bFA&@52P!d(Jh*oO>YMO+8W3K{) zU5`%_Mj1XL#RGpR9N_a=pb^M9t&FF~zYq`#t%yx@p%r4!fE%R-dNzM>*d3oJP&$4& zX0NAyYQaTd9K2O|Li82UqPXsro20KqA>p)BDNrODtouJ6D5WJ!R}5$}-Y`AuS5k=U z8Ew-a3W03l7-pwq24?cuNsWWd#NcL7;|42`C`xO5U_+42z&0<~=BKccrIY_H)BubZ z1e-je+!!_)8SA%l{!bW!+#UhL3Na6}94@_dS=?`DVnk5KV!ZX^KcrK-1x&M4yEtT&f=)YE0(h zd;Bo&}g1^1P9g zM%)RBp}niIa9sf$3Oa8jrU~ygY)$D%A&ty5JIx2Q1iMhf!DJxLy1pKZO(QiP2N4Js zkdVJQxK+zgYGp{rU0vmlUT4 zx?TiT>Qb0A5a<)rOgK-h%Y>s$Xi8xqhl;#g^TluM(KrM}Cr*c&qI+l@a{azE0eh$@ zb)-2;#M(gf-`F$wl`ZVg$d$Y1VRoRjcL+Z|rmxS18=uw3u`gpzl_3K^ z7}Adgr{?!jGbiWe04?z`GtT-4%$=r!62!M4#BP?L zQ7~{)cj!;lcD}y;Toqa&;j`kAe4b$49}SvDA?C1~9&t9QxrU!+*TcUv)Lc^OPSson zOlfi>-6zmDlHJvE*pt*Qayn&^EvXRnCHzPR3;IV5HfRJS#xw9_t?4?UoDgBQTx&v7 zM{*|%HiLz*L3_k_7-)vl=iQAr#nA@&w@`|oHzQ9N743EA?>YYZ{JXq9|Bf5?YBJo6 z7(7i9J=1&wJ5iDoT&12{3e{)arG6$FSpjMS*^$`R^d@v7$?fhlz)qJZz-tPvdr?!U z&MpM>8-bM2cK+&sLJ^L1UKN&=1h5jcwi;j}O=%w7;V?mbPg}u_Vkja_nl`E2RLgZg zZ2^ZECC9k)cX_4EXKA!4-lc-qC(+T5;&Cz#)Y_U!Sql~Bu`G9R%$8)MSw@Ft*i*>tx-VDb?2L7A}5^MUaJ`l!Ow*3wS6v*0MTYs z?siH)G%S(39TRsuZtf-%mgZGmjVzO9iuEY!l&mJ7!SLi^Jc1Y8gxszka7{WKYW?|f zR1-LfcozdxGm+<|TJjr1y$~Y)Ry~iN6b^)1cWfLei`s}gD<~T^8^F3|+ySn6Rh_)o zpshyGBp{`_fb=z|#ZlS4BBdFIu^NdBkA!PHCw==_19^_W0#X%1WvonmNSvv7K|jHo z_$&JtxKN@A_Va>}qDBbue(uXtv5~V4gh+8@n#8sQ{hFGd)yFe1pNrLKu4Ym~k(wN#AhUpPn7MvkiL+7SA9htO)wfzbK0$to$s`w$uR{MhG z4(K`Gw}a`1(pzTVa-g2D6M|@(pXtSj?K~2Z?4atr6aAu``wk3bm@f!GAh@S@VD`L) zZ|9{Ngk2fExM8mm8RL~u1lUZ=)UFjzVaMh>LXQ=Gc3LhsW1u-~t>S#pBqU!nm_$s- zaeRx&zw!HCHV`@?q#D!KU}HC%VpqrFHL%M*kd?IvR*dZbNCab0x-f!+nN6`h*c?E0 zM6ak49K!;*Bg|zjsc8B4TuL7T;kevHD*#BLn3^=W8gJ z?;OX}AYlsqok`dsX+)~C=|*yNdSZx(St;8b{~=Od{}NDZ(xhpV=DL};A!)KNYKAoV z9Z3_VRJI~1%nZ^s_UN||DYu8c_>&pf@x0`86hhRP_Vi+)Qi`f-4sI;wTve}B8pQLW+&Ov(LG%XI=(TX% z*^(>GlEFR0KB)L5wBSaNm7+pr<<+_=Xpsu|4%@&4XhN#axPc{53RI{gWE zd#m@;lGc`-xFXv(2OK98Nl6x3OAXxE~Xmdb}Eb2(y+{jl&kO0>j*{k(5gfk;rjiZ^YaA+tpl+^lJu zDIpHw!L&t~BXLA>S>XS{gTG%{;e|JboRr!TOhf!5Znk7yML9N|qmFLaW0Vfj|7fYH1Ze(Z z5DvQ~&2k}e?G}y5SceBQ=1uGzwSp&h%qUFeRe&%ts;xDsuCU#rp0wiC_-2LcFpF&( z-S9&ZGsHq7ltzs_2+Uo5m(>BHz~>#TYi;km0R1uOv-CerV=yc=%Yfp14v@#7TNugp95A+^ryJ$_p_N4 zwyfF)HKo$sU$_tb{?lapWB0<$ZvdY8jiqD)v2a6$@G?AwxzZq5J7hzHK3R1jA#nll zJ~{&HynDGDp_(}Q>76lMB-IVvPem4b|x?y=74*v2HrTx+!Pfv|QcuW4oxK znnR9M_lA2;goYVlFLu?dX*E~<+8NenT1ytI=^(Ba=-^wcA3VQ_xHSQP^BC&E+NS-Z zuSt?*`DT8>R-=-Q)sFx=vGt69GU~rbmHO`Y8d-ogYaIZRp9Src4ryu-Dd-Nh$>9m(10<4Yxf%fP%k(mkOAtPw$oTsWxE z?}b@=ck%%0yQCtwABwkTq9o|Fa=09J0G2ZGF^{haKiTjMAPU#hA<bV;RnW(5J#*A^BlUd5^}56Z`Y#a#wDKD6?525gD_jxm*I@4~V{zPfRa za_vcjmVhD?)X8yQ{KHEiP|0cQS~h4JQIttzTY{2I7=+W zGq4h9zmv53pHyY~=R}}FPLf>vc0^&VeadVpQ9Wh{NcQG(fDuV269`2o&AHE{VTC@$ zgZ8jOJCjZ@b~y3*oC69w2X6q&b8oy|@^G-1tU}`Vt_aMouMlDS=)Ujue}8rDgQ4JQ zs;>9K-1+D~y)M=zqZI@0Badb(WGI0)qG$?MV+%s4Hx4CbO)I^XN5AK~+XsVBwXz%% zLv)lOc&DpOxg=ypO~K_XV6=c%@}I8coO2}cMBc-_=*ku2Euq;)J3Q`d9Z`W`Zzq1G2^O!V6NDNWX5lIfE<+wkEIuZ?Q z%DFOV9;|y!xni zA_I`~dE^zchabO`F*vUGZP*o@(qTafJrw=j-l6nc=hy7BhdM?Zv=?$<96n$s7@oYh_* zEtZQ9B2M*@ZuJqq*ZKvle){4V2iqo$@?9Qhp~PBdu`ls|;kW`)y3PDXqnE&0Q0f-) z*K2*z!Tu6f8kv5&+Y^$JJX0d;?E3BUjFRMqZ@y^ngHb2796Jk0s+L6Uq=ocJ^3!qg z`i(!3UU4QZ-ac*>k0IlgXd#RTyn|s-nwg;fvgqlBbTWK_lIYWBlq81gp)mfkOF9ty zcSCN9og~EkyD>Nz2K8^!<@)B+by=hhCMN=_orGI zi8k?rdqQ)1-fy$a#99GOz_$}7TgGPLR0FMaFgX#HT2wRIl02|$C4xzu2!_v;2qsg1 z4Bp0kgb;al+t zixTpWm{j4zQJZ#}%VXB6Kh;k=4s9nEk6jHkKuY8KmHk-*5Ydm8}x|4z-2thh;_0~b$TxJ(NJ?7qbhr9jbAGz^b#Qx;=3nDL~{UX~RS zQ@(>oTpsQaT|0HRGdrlXkAC|OX_3Brn`|+@d&`x%%yNu%^*Ll|0OTzIvLOHlX`G2- zb|*b#g-XSblqJk)XNZa~E*Q-YY~Oa0Li3MnQ1>n(hLv4<;xj`i{D;kw>k))z%Pjx7F$%s)NjJF z9(Stliwj-`29UxhFMMJDfxyVn*R{hVr%AI@Br*4<#`@V+jE3@)Wy@2* zrE(!YzB05-ob=7+V6nZO^2$Ui1B$OrV6remHQ@jwP%^2h7i-d>QH|&?H=T<9xPwkb zf80T*J@=X!2t@o}#J3KC6=OCXjhdQ}bhG&4ypOL8HE``fXrYfl`E^hmVyy8|3|^d_ z6M(gbxX`}WJfd~Q@~(XxhzX+0nE?npO&-m2VQ4bL)k$+B?G-KgWrW;FLSD#7j6`2( zrHtAOm&^w5AZ3wC!P$3_omiBJF3VB7*sWoIIy8k9OpAw@}>OgCGe{!fr9U9R_>wNgbg zKt5O=8B>QU!lROLAN@sxtb0=9-N-$U(5Op(l~Ad;uvDZFLq?ZE9UfscNv_f?Oa?Lc z6Ea!yke8H}884B0ixNU#^C0lkm&(7@e9=4z{P*@qOK7}B3&@IJ>Qe7TIxV|2?MTmYr8mosTR);oKN@r+J$29V2 zTWF4q02*({jOVd;(tQz1AT0KdhSeO;Lmn}nyE#9P&B>zSCa8Nq_ntE#5cH|JUT7|% zC59cyVq2atC=^z>-H7Le8H9Z)YBV@7m@CYbj@AwsHGg{P?`6!sP)8@D-$jvb9x&9_ zmY>TI=)XOU#i z6Q7%r`ne6g=2H{d+1vv74}ty`Ul_{%UIhAUXr(P`nJ*cMSyUHBTH@c&J+yu<-7l(q zj#&SP4FJ+GWqTgYWy@eIZl?VI+y($q0s4J|3i=Z&h|ePx@O(lAylHHmSe0)Ivc9*z z%GSwtht<>z5LA@EM;im4+Jke&ihJ>twu63+jRC*Eeq%tb_}AM%^LPC-w#ltjUJv+~ zq2J##XeERP{!tc=FXPN7Ef-*;gKU)m!(G=&PAFrqSt>6=H}ia*(-^@J;tDo(nkXDH9-%x#yDn^-OA z50&${_+=dJy4x{gql7#hws{t)?EG39wOICW>Shu;FUY*k6e@vV{G#R_!G&u+VzJ>r z7zeS-E_M=X*Lu|001eC_wO%DkS-@Qc=3fRoY;oAHi{jTWwcct@wM*sr!_o$jMkPGkFh>xcpT~^(Rk$=x+f3 z@&Q)V)oaW42NWnF8AMa*N~_UY zot(e6%pUvLgM3QN&|}9)-Z)Mk9c%5c-~04&!v2W|SwgoOzqFofzhnEyUdRStN&~&% z?w-(#XaYouCZHFFQ}~81gm17VdhwW20BR`y%}aE}Pwk&!5LsV+tt&OM)BuU z>^D>#T5nizIHgeM0`r{VQr14kWt1R{64DSuGT@qUk8yHfcOvTz*v8VVAd#=8w^#kw z;r7V!ALZz3z(V4`gZ67DSmpSb3iaJM=SzPu_Xb5{QlSdVNObv%9saQSs*k;hpwCU1 zo(8XBn5smD?A5S$qZu2)P89hz{d^`$Lw<(V^{Qv^(Tw;;hJ~?~p`V4g*Z?y@Y@j7q zA%;PD%#z{<^5qS1v%U1eV=6P|d)dZs0jM?|;1d}U$gx;qE<;Aiy~DdKUk(islTv+~ z{2jqeZ<|m+vCL=k>2VM%sG-=8JU*v86^?la8CrroGfXPj#bhXFfp1YwNk2~AQC@GEu(omK{LRZeSpA;h&Sd)R7t;m4@1*xnjQ1B$c5u3Ar zR@L>Q(W?ndD9YBMjbJM#jVb_HjWSu3f;3dN9=5vJ3~bvPu!ZK>G_x^=yupZm&tT}1 z2^8fNiWsCb+z3N;u^A|K&}KbOHHJ9(D5Tc4O^{B-7#yRoh9!W!M2Jc#T*H-5+;4hu|%cl@wue<^NR;R)=mfZ(~*@}(-*c8vI%tr zci17p#VbUXQ3^W{lVmqNf9@D7cM{ozM03RZ6KgK<2RMp=k2$}dfy0X#Jge(-N3wGNmND&6suL2`63Y{v5FWgkLJ0=R?XARJ zT-lRMph?TAI~U+mxw?hulwGe)%~Y>MAx`Q;Zt@#I7dor(32&dlCzgA{q$l`fe_hD9 z#1SFJ72afa{I194IY|u~eI`|Yq-M4%?RaZdPihBtbq<$+jLTyuD2RB>8+e?wcPLbM zXUQI_^{r``X>7dW+qGk& zmn~2KC-PsL4bRIt_;EnbJ@V@T(Y?BA_)(T4%Y4K;wJn ze_lNVvFFt(NTv-YAXbj`fN~~vbk`+7!}~E)2UA8O7wICF?y=JOtOgGcm0G?H;&Hue zAcGs}wQ`WD!O0+MUyEGx5?nd=a+E9p9xP6TGnJAvYMKhrIp08R7k`Pq@^3IW z!gWb>LtA=%Z}1u7ZbgjeNU=BTCV67&CJ9~nB0-I68BW$wqJQ9+V3H^9E+pwPaHdXm z#5C4m2jII?eUYa`xAS-6Od*Jf41%>&Ce#Gox+eHnr~0_KQ;oXV6a(%8r0MUNV`YHD z$kZIQ`UoF&v_X8*5M(fENb59%3{kkAGr9)OF{#1@oX7G8^EOW_NN78kiH(IO|lnY!RQ`C7hXX?N?mztHJ)k~GWV1d;c|PQaQC zCal@Xo2jcowz1H;h%xwc$0;nDyeA+zU^4UwHJJDt_zoTqdgtCM{|G#%!HEb(Vp{4s z{3bd^g_rQ$Y{YNjHRyuf*=&w5x9eFibgENu6XnEzh^-$a^^qio%Yb371YC~#psNoR zQS-R3k5Kj{>oK5)QAE}o0mypE4@R;{3LZ&M5QY*_FL~LVB$DtQOZb}j>uD0HsqdXi zkttZDhNOa#+L%GGjKFOius;hNLf*iUq+Ok30#2#apb?Gk0*}K^Oo0=QBQCQd?az}f z%qVBh5btQh)2z03#M;dqkSimGkSin$xq?H;9fDYC@86g||Z{ z!{YRn_?wR3j466hoy~Y7WPqeKDU=XbmxJmo!k#nXs>dblxq@!^6wq-k7&p49t_{q8 zCk@q|CxbM7$ZapMqKP0387qVGKHd}>18;2{rzo9s(n|5vOJKXZI#$wyij;GInZ%s) zCNi9M%LNc|E`W&JOaZjax&ZuuSCVh+e~R*r7;Qk?WZs2V%X(S{3iEl15uZVgSfuh_aUW~G@sJDCU1y)v z23=Pa%rs4A#G^p2D~lh^pkvaJCK_Uj99q#Lqb|arh8`LPP`Sl-{np2k&q9ZsH{M}k zgt^1uYoDHX0B-;p0^J`VvP4=mJ_Q}6l1HeRPT*s$DncU!Pm3z*gt^m(R+2DJLBE7< z2)-fRY)sNQ$3S(f_k|>#^2r4O=D|~^HH2LVChEKrWqK$fvlt$dRDg*a-gC-8NYcsR z#+t-9fF!3K;-hXKw^^pnGSEY?DNj_SC_SBU_Q+qQ@bG%b@vinEZmO{n)DdePArTO> zNhajgfm0!Zfd~2rAmK<}u~GKbDBbl#B@ z?hjaRV_tVzcC@X~wkCb7AP7j}A=5n{b zX;cLlcuug*Bv-ah4u9b6CC-{7-52UXoka;9rks17aUrEe3th=o$-tDc0|dg5cHXdPk0 zEQDvNvwUG<>xm+!#HL)cCU%x(uAXHXn_C(PsSB_ya{<^j$rGCGi`bRkz2}u#&nvTF zGzr0{JxhIkB&jbt$9nYb^@4u_0Rq|$AfPvf0Ey%R2DKm5(8$oOYvR#~QqMq?i299V^^)dRFjZ7LL zf=gz}UP;1hcC9iKviFPG>Sf35fBV%5ERXe(sjvstYbM}bdWL+*kXmOq@52@$CI}+$ zzw80G=7m~w`2qNqx0hTaP64N!BVa#@UA{pBXcy1z315wvqBg#0O&pADGUAdHM26b^ zuOIaJMc)bzfc>xO>;bSWKH=u$e5E>i_*TlWZIXPdWgawY`~)$+p7x}MduNfpP^da0 zSp%kp*Z>tFj6c?(fO*?znkuswKh)h+eOV!kxfoh+Ah#h7kA*ySpu#WZz`%Q^&X6n& zznPxf|JSRZbCi{i0pxk(+}OcI)T^fkw0huUf4#Z*-Cli?YF7Qm*;q4E$ z2EW%1hjrkg>xM-L&1=gCjgNB)Br4PjG~1WN|6ZA^9d#Axq#1FmwIpVHo{c+Fpt6vH zqilt}EOtb;v-&|I45jac~bM zgGaS31$Sc)D}E3t{6Y`RbBhmV+KUqNyA9=F=O@cS3)XR4lbcFpe`C0{P1iM5@4b}` zpw%E$-vq8XT_E|k*Y zqAmq3A+dw+x?TJY!wp~~OfjwIs8CiE9?pUV@sK5}6o6#qP_`mE{Hd_7x1a=~m51C$ z7141RFcvRpwq@#%c^p30yAefVH^O)Bk0$}c>iPs5E*U=Pjl`pmh%>5<~Rco%d{?ZqdyDp7>yxk~BcIt~gwgIA|)BNja7KLT+~ zt5!o?3RJ0+DWFZxQ%lAPKqbX@4F)&yIeJDN{ZaL*C;lp{{vatH)Mpu`sL?w{#G`Z+ zy`Sg@knk?Bu5eEQzeepv6~xf^p)BlpE3rht(Sch7D`?q#z{PCzBTSQLQrIZb4wq1d z3ugj*;)UVS#ui0KXxGLz?w~ca0_O`Cog2e=af-)#Y(3MkULp*S31*bfT}aoA5|iPG zy(NZ)*%yWdr1-rVviVW*7kd~r$6dHjKp0Rj$kk`eC4L}`i;AW!mgkYh#^;g6^1Q)f zX~j_y-$C`NiX?HW$JjMNYrK`l!EarNPmCW%U(+E_kVYRoizLA4;Qx-8W+2-a+PgBG zJuhhpX{Z8*!7|-~r1<@`wxJSm#9`hmNY}eN!)QO{S=>|N7r(a{mbHmC=K4ia?U;P_ zvs+CryohhT~bhE;b%`?VM-2bwh(^HJ$p`Tv5YkkAUU4M}mKh$MAr#vAjbO0lN31>IKucISG zKLK+@O2?4*h!c_ia8ugT#DTJV5_+2K)sApD(YBEPe;AG?YB#OsCA0-F)o|^}L`aBw z99aCZvyyQjo3_@VH14GNQhY$TGW0Z_wuNxL0^4xhPW92urYe^F;F0EZC=okMjctYQ z$U>;Ih(Ou2O&JZ)x1d-Z9?4yyN$5LH2UI8z7$*uz7{|w^MJ-sz#yw5~)}{8)jJF!g zw$`iI6wbh}#k|zaB@DX$N|+Bu62sX7M)`w*kq8IF{f)y2i=a9nR7;^vpe1EU6CxNa zrpz_4#N&oQ94S?zwKSnF<|u(hfmzCH0#AA?r@=Y%qvkK-ZReoMi}4U`8t*26`OIQruJ@SW#}?=CPu z&;!_g4<^vIbxxhqa{sqO)LD1FklXa~D3OQ!OGXpJ5>*eKeTEW3FIdXx zj$Vi_Ml%SHJkx8mq9}&Zb{p*Wk7qu~*oz{J_(-U3PqzuH@%513VO zFyl!?r-y3|l2WOtc!k0>)Iv(oM#Y8#NeC%{Brc)28Gj@P*bU&i+q4karxst~kzs2h z98u*A_3=eKJVJAGT) z8q$riMfUiEFj-p~Bjy2;IUdjVcSDakAmMrpQsl@JM9aW5m#G6`!O9rL?Dl{p0s$|v zFj%QkHz$DCy`?8}nm?mt1H?pZH!B3o6pUzXz7YPWh=Ga%V#LDXBLOje&49jTwm>%K zn9{{prY8Y?MWNp);w1#4w4{zt=_=rlNrQ$6mo5If5&9j-yC%|J(9aGL<}f=6t-P|X zMdOp+ifi(7DXEk|B2@}f;u(MSb6^p60dx4FS4i`=QWdmz7CF+`c_}*{P*7FzH;Ubc z5;hH_?*G5+y$_IG*Inm%-+iy&d;MN_>$cRAWwqSC?^=>&VS^zWOZh|8H?|YyA7QFe zTT~G_uC-@zspSFLPBt~;U;zqv#ts-;UJPZhY&3%b!+2z`tyyb81TAA0k#PoPVg@ZJ zg@zG>sS-P8QFc9KKi}^;_rCX9Ehj9qyH&eux!*na-gD2N-}#;2zwfOznL>O(z~u_?h89nt;(K9o-%sb}nuMTAjD( zv=ZI7*nBUTbaq;n?s6#`t3*x-VQX7x*0Fp8}6G z2$pGzU>WOWRySi?pzTeX&H%U>biS~Gf<;Y{EO117F00(EBT9M5)mBgikYfCm4Zz24 zHr`JwmBO%sMi9iA*c*4`iwklve5R46pOto(H`EB|qb|@)AT#k+vb*Tat9a-MNE*_N zVaV!+T#{AtTb0$;h3uEtY23p%u4Uw#mW#)DBtjFb;wyc_NITL0N^B!KlnP;(LRqvA z{hT(ot7Tc4g3emBlv&n{zd@011hQ*Yd*T|=4^_;3C=!@g09}?Z zRPAs27gNHN`gjM_BW70FQ26oTKUxOvj&1G74h04<9yJjRZHIZ%Yx*2|PoPK!&2xt5 zMtG^UVcttyuaqfU?+GiUa-mlLy7ow^UPQIZZ+~QarB=na;0tGx_P}qp>IYH2BMDjf zjV?26Bm-5&n=pp+vS_l6Tl?f`x1|`HA3gmMJn3cqc~p&BY@%4cuinNoR3IyYx{<^M zPm-yFg5$JxxzL0c+p3`O;X+9rp$%dzGXF^^<6!bED1z0qF z5i`UikUMOSuZ&jlb0G?!Q+_=z{+yv(akD#gceHk)E}zrD_&J6y)h>;nZt^_VP6cX2 zgWgC;iM0!(`JDXmb0*n1R>aRKNVK#6pQoB#u+gy(!AI0b5%3bNvBzb2cpT!QJU29s z!++Fn^I|c2cpU42Llj_!t3^5ov=dvz;*VM+c?yn*&?@pKHWs@hJdMgG2qzuaA{$5= zmCfpDt%ri4aINKA%9rVyvh`g?*ECKlvcsq*S>x%Y%B1IkLPJ#jG_E2p23%c1iKOz& zDUpg!q4)x|iWn=FRBRn_tRm}(WA%ii*XZo<2viMWf;WxDPir?mfyWzkZ-KGRG?d?yU-D^HRvun=_v^03c8>PP86>|7r-c1{e}mq zNnZ`_?TX?m;cklR!d@umuM#8YXdeC((!?-G!hLUq@Fp<+A@&TDQ8Eo zAQ6>D(;1mP7$FI2zvfNR_RYEPl2gtq#RY=t51>xM94Rh-1bT~LMa6|jmExke)!fmv z_B0-uJ7S(9_L??uYAykwLBkQ@L(d;^xd<8#RI#3(R{Mtdm!#4ULZ1RfiTX>xcR9Y* z{HGSe-F8MV9Db^tBboZk^cP-(SfdjsZt2O};YhI1UwRY!i_1Yxz1+*#U#tuC7c_T! zV;hEz3!2VKwMBuRHVieLfG$>c!USHfgcu>Iyn;m3d5s zS?Mic8&hGvF>GMQvXdDXI8GzLCW2*II{{i8gV7fw%8tjUQg$lXpzlORJf`RT@OI|7 z=5Ct(@b=|;j{I21^_+v-1zL|mH`wI=Mr#_US<^Vxs@62L4+}-YYEJeW&Hf+6Nc(3S zW@F`wViih~Lnbxs94tj-MZ5FCb|osIslcJgMi+m*-bJ9NN%?GZ`0h*fE`s5^q)B6{VRB!z(DPSxK= zIjZBl9pJY?1{UZ|ZC<81NEZ0&dtjtU(rBbB`4pU0u$sKx-z$lYVYbxtrIn;68h223 zT(7}Z;t2Wmbh(TJEP2|X$WhS+1@vGWiDbGlDPy+Ivc-=Sd~E<88HyS}d|D0F-?O>A!3m2 z%65&6X)IqZ7{lj=16m0jG(t47?f#2V+iWd9F(i$#0c|yafsKdg5c<=YG+{f!Xk`#K z2yb{TR0b3nfCHK6-8FXjD{;lf4#3DmbOf$zyPrAlRgXd zXdAX>8BIBZ-bPan8f;365+c?e3g@%SSRKx1ubV2XY(6PZRKQzL^Jq6!Z!{N?o=MU& z?56G^&|mV{CFPeJvYWz-xvvbTO4C3UeF;D()Gw4FszW6tRI3515my<(Hd=qrEC~$O zlM?~QxtoG7lg@Kg4x%{tN)ll%h^9?yBDy_pgIgNx{Dw9Fi((Ss2yKV|v*0f~e*mr2 zB<3_g?FK`?&{QU8c{axu6+Kz{5l3?p%!6@DKPIlW z^Y^e)xxmW9s;YEal_KxtBwVSN^aB-Xzz(rP8bpST#I!({#w9YQwFb}A6jBZQ5e8yQ z)~F2cf z;83yTu7;Z@Zb+a4nhRi4-B*iSps=e=s*gs*h3bu^Ey+W%TybxSTC^~jio;|YpT`o4 zm^#5wJVEohU#T+XTj_gqhYC*dU`(UAESW72PfMs9rKhlMYuHifHxr+-y9iK%t4?65 z;Ue*=!w3N&CMmf<)Q=MUuOk44A*hwy%Kp33JHUV?Any(m%2?jp3VfsWl1-CCpsF7W zoNwFPNqS2ylVPUPQju(+kY+zN6o`II0@1_(hBRPqMo%ycM9!*7m;IxmK-8B%bLt|mf36rlHr~1ZNsO6 zIH6sfY1`)5{A$yF9!<58Xr-2o~gHb zC&gc{XcJWk%RpY)I1NLGj%?FDeN%C?(Qm|eM6Eg6jCzGL@Gzgi6}};_Pg*o6A;7U> z7E5VikFy*X z%T?XQ_4Ta;Hszi*JxuNyDzliEs2)RzJw(iFtY+_>@2ym`hmFNsZAoJ*o@y4WAVJM3 zq9u7~qZ)(hT6w2aGz;y|=rc7z5bFd=Kpr6#OXM*C znSp_kiOkTy2_VC~1kf$|?^SorXk#}szoOV~BzP%ff#)pWYH54SOaSaOQ8j4H2)(6b zW`G%&8p-4sF%W0~l_6BE8kjCs#rpJ;@*-)c4$xmqWk@lUYm^0lxH74+wnt61B62QT z#!XeFDFVufZP_o)d#I@lwxwga<>W#6UH5^hQ~_Z5b9&wdPMyfEs#V<3nmFlK?wl%L z-Z_zlVdt1sp>u+yI~T1fYNLDI&c6N*(N4tRuUD&-w#i0jH4(y+NPp{R|5&Wbu4(NhGSLz?;KtbwEoXG>?bG!s0E7P zo+}SlS-DlbEs@*m`O1FA zzcAZe56f-bkEDGdUDBeAxNB&QEYpSEq|PL4EiO}qcAChZN{iJ50GBFL{)Gbswd4-K zu`YH5dk~cZ3gWOh6CS6Yxt;QC4O#NC;l24RCp^rqA}uRC$ZEehx#R5sZhSu!OP`;- zm^O=_0G|92C|VZWQ1Xo32ercnlBL$lPlp|WyF&mDl&PTEV+6iAA^22wvNw<~VjcqF zaF99yaXK&L8y|n=mVY?+s~`C4KX`H19n%w<@i_`xC|8G6GVQ=>uCm|_&!Z*;kQO3C zE&57FvkPoIK7&Vk-iGOEU^z-S@#kY-K=A~Xw<6@;u2xX}_m$8>}n*56^5)8R(J zpcr>8=kr6fq`R5_bZe7lol{#it(>}EGvBEjgHJ4651n7+RFgw7jx>h_x$22$J7 zJ9nnHgw$O-)7>GpZ)f_Ekng*7cCEko_)Y2d@b(9Grr#Y>_w7tS9#Ws#nSPG|iU7Mc zJ&zZ_8^RiPc)_O-!W-FPCO_SW(PlqIc_IQQB~2k*-Tb?!PJJhVtDa)H^c>Q;P#0RM zapD&T-R#fp4&7%wE-7BKfpLkB7kjBnSya2)p=H~>s@o%&g85YoLjCpQ*a{T?rzQjD zfKQ&kLe(VSm|vy8+vW#X@wl2>G%up649c9BIjxG2?83APwN66(izUEG`79E3mLxb(IKzH6mBSU}*G)6NC;X)u6m>ofj zNt*4!8phDh@%Accj=KQ6DTLdh_^*N6>WvWp0*HT)c>ln1PHIrXL&0}rI^;YD=)zsa zEp!T!4Z$?l-$XDzQCDp7zQmbaPuRStNh;D!liK-OiEDHuPRjC+o7s;TVp0W!AF1Yc zAW`5xKt!~_OeM?N^xnZb(&W&2A*;x|iqnTo&3JW%iap>#zrR?oQ6F3h;5tx%-#d`HY!H`3g<@>PG&FHF=FC=nfr0q?y`t;L z6AU}2`gQNkyGwcY{RO7_c`|hK`47$KvsP)KRP2bizNC_4P%hIer04tgGB|^cI8f76 z>hh?nGc-&jfD{drW=@JRkQ7adF<}2;&UyD@*Rvq#r87gaXP9`}kQpalKzm8zVcJE6 zpJJB@=gMIFqjULQYylK2ZkJDC@M8NLQ}D66Q{P0J;Hsl-LVBa@mD_}97id2R0g8LbY#fNp#^b+|w}0h* z`HvpVo}o(`uy#;zV~5locL)~+* zgk+v~K>#jdARVzbVI>z1G1Mgs7vy!u771r!sX8w4PYE5#mf4p%9D62TbqB%*<_8vp z+h7fZ2dn|w^(Lo9GR@qQg#Q-rn1`B7LSOj%(7ZY~9pAloF`pHO-bIMYnr%~0_3eB4 z_N75}PS`sa^X%<%ztg!DU4c++OdVj1-c;h$G|!Za5&sGwz9?K5g7ugwIxaq!qb;Ey z_F?>-+RGvyL{ZWS46jq-YN*{#*_l~+EUeG7J=$mpSOIs=;6nZZOQhLqE(5R!!kNV~DN(F}gV8OA zIw}`=n4(<^lHGjDVKCJ@Ii{&qilE1Aop^;&M70#|vB3+h0SdfUJ&O5UJP*%DKiOuv59XE)W@f%<r>bnQd&RP0PIcLWlQul*+z)C|@Cmxbgpw~%L)*#>N#qDENh@|Lq)D+;X`2*P zo#HB>r~xr~$E}03O3G6N1jW!?lq@K|Z2d7BKYq+#uh z6S7xaB>h~yNJ;>Nq+G3~&dDX@uP@jBWYvqLoUh+LTKkj5x0cy{qel@$w+sGcY!SPh zKN;ezSO99`*2KJu)D21ZT?xw`f&Bw~{LGXuF?J|l0-=rh&Hqssk~^QP%xJnKa_SP&q;fvz+9ejUK`8$+M8 z&iKOWmoKxh`neSsR(ZO@!YWT0LKD2oCk*}mb1bahRJqhjdKE4@;tbP5QUGWISn0jw zE1?tQ-qXB)bT+KV2JbLaibgpfOwy~va_r>WY%ZGohMSAPqv-Di2q%O`$eltW3~1uX z)zb+fkzRp8nm*-M8e?m)V-8;(K9fNqY%b!fFsfpdknybvySugWLTXx*o74@->^Ks! z!J$SXQW1#~Bb$(D+%Zgq9wcI*wO%obMARq=1SE3GNJJ_iQDxcI1|RV$s2B}rVuu|^ zbxGg2;n;>L0QyrmnpA8wonwYbe58pTESzJFgu~GK*hZ(^MpC0~{AP9{vE`Z}0|scW z%t8^8m3AUARc(f5%3*Ki=N=3ze8Z|O$1lmq>#&*}oX(ykrn*$s2+^X?Nn6apUQR+2 ziKbV;hIt^)1^VEW=>w@iADWA);Dep1hES`95OdlPLL!hUnB~vf6g+I2t-y|;dikbd zl#NX@VG%#8-GqYNz$$EnwNsI(Fhn9MVylLi4nafIa)e+6X=Y6L-8(=u%clk8X{|&s=Nrs9x#sZ?Y7iz$ff&Ww3-E2Q03r7F zwvz!G+Q|EHUBZNv@&aAy2=Ne$mc<(q&I?sg z0DZxLQ;gIOicvd-T3|`ptMF*DTBK+G&{52{RZqgqaqB(hJ(WG>!&D|zN4iLM_N3J< zs_=puBVMq8#|RLMTuWbE~gn>(e%$$g{6e*5j0X91*;(o_sS)cKkJwNfVF8zs$m>_0mX0x)M5A~g}kQV zC3;geTy#-56zHOmD$qq?ndsugKn)B8r25E4|BCEg&OeZ5GT6aCPz1927=R)~j_q&a zwMo;+lpeGG<2~{@q4vsEN~iUkOUeKkV4R2^hJ>(e)8v0RhfTGPZ_KebydNpBE zJ-XyAT^;ittagSOa;}}B9w{&^Bt)2vzR&;-AqP1RkPGL`Ya(10azk!%S;)DE$Q@WH zK--@jE}Q@4C4PkP`Y}Jkes*ZMY#s%KFj>&Y!vX{7t;wA?`1xReQiC>`{Z^;{KQvYh zp8`ewZ|^qUz%MBeu|5!?ZCAITX;IQCGgMNMEQk+?AL$bI?L#Uxg+TLgLI0MN4FIIk zoNk~kW=}NUzFrss5DxXSyd(rnL!+yTe|ozr7HFtLJKC5$RnD5lAn!&-Pb!XFsv(mg z%*FQJIApP97h(v58@(J<+B+p(to~62TGI97TGI8GXh~KplJa^*1fh69=#*^LC}+Nr zBrEj1UKIUxOweSK4)uDiL)CAR@}L%0!uy}AwW#Vn0#}-Sp+_-ft2_}aJ<8K;C<41- z6QKnFjNM!CQnx2vq&eeTbD%xE9QE23IRy>sPB87zgzzVpCPcAAO-MHgEn}x%>UHSE z7pw{0DEn5YznwW+rsWrYvRVFiBm0+)^6X=qX))FprOG2;Eg0v1*^7BjDNp~;8(}Sy zVH%JB{Q3&2l-8xy6%T^iA5yZx$(y8p!7{-JsKB_85Bp7>#a~pnVA1Fons4C?CPDqJ zzo>3OpV2QcPsDtqNTM&oV<|g=QvW?;@l_~3%n0_uij8xCiKbdJdzqyZ?g^<9=y%vB zIVBvF0XO@Dg&5sMx2;0P1W%i&35rljDntNNdw3ldMAn7RsU*n`Zx2NgwdL)DzC175 zVLFgKw{E4NFTc5rCPO>jm!Bmnu$3j&-`(yvHLGJQ3UWB)Vs(OAlz3PFE zY`GU$be>=m(CD)bjICVHGzKi}$$;|)=qRhuIWK74l%9?Eug7~1jraR1Vj+>+e19Uo zKOXO2jQ7vS`)7qIhqsqKf@8Mt=I09u2c~pMtlrI9P%od+0-GGE9;3b zZ$?U*hvaaSYzwJMC(3Gx`uP^>K0b(Wb;~9^?-r~_`iysmG)<3EKCpPet|LLzxcR{qwB^}!?`ZF{~lB)WPb(k0;0oS!gnlBav?C}Q9<7#2{yIMthk;ERZC*qYLfWCh{UeCqr1uZVDlH@$i z!WH9#H#RZ+1bgh7=LliPLYHVsPCy1$#R{~Tr2M*6JKBN7EDW6s2!~cr#(`23AtP z#5V&yaMKv~(WcQb3>&XvI1vw;k}C1_1g%g`ZC>S}XW}3NeGI~+_F-C;f!|-$=g>&s zMxo64Z$Eq0iy?5(f9x#^xv-t$yCcSgfh%CcDSISiXjF;O#A5F z)IDw8FOf6QU(?Obei$cBkXTOlm@b0jUf}|0DG0D;{|E#2R{|a@7v=T)2$0W?kR{fR zyJZt?^uvRzc*nBtU^SiUc}R)UuaiC#)2B!iG_{{!p}INlJfETNwR$jG zFD8hv?YX(gpihDi?R-HCwl0n@xt>XjHcLQwtl(dk-?9vm+|&> zZM%=9aJWub^K9i_6^@H;bakR+Dwtb>FW|TlPR7xK+o2Cp{oY6)J&6b6wt6B`bqQz@Ni(M#bH??Z0)_n(b(LQ{GLarFe;2PTAE&HO&S4qx#pxm7g z9?FY{ia|bj^tSmTV<{O@0OiRCbi^MQ*M5?lNv-m4xqUwo!a;VHZs&Pe=*=}e#QPDm z+pT%)Rz*i-HTVHuYtr-d=dVGKC=+3)7SK1&q)9__QC=2fSa2(0WR2@0VfMU+0rmk=^}9h<^X#Ob9!77S|Lk{~9)Q&#*EiZyKl^ zdLBT7_e&V4Ca12{*hc6@haL+auxy`Rr`#^_z)hdU3}Mrlh*rXl15!020nxL z${Kw7+%EGj0TTwuessQch(@2&# zXq|w0SzceQ6VO81sg;T4kc~hRD7;xI6g;6x4B77oH10NYXq4_L-jGl3e{)lvZ@;j)u;8c z3280N0ui#Rf%Ip@1VRU)Z~!NEFdTO0KK`xi9JeC}dy$@ny2Ms&^?`nlY=nptRx|hu z^*QsbjsUDd0+86gcm3$@J&awR;c;rQMkxDNAOk$BmPdFdl+*GENzV`M2?)LRU_|>I zAXduLmQf1rSiW>JB}4)h$uI<~a1Lp+F4WD{`f|(?Z2Dx<&|hw$#4o&1;s7_Jh>0LL zvb)c(Y3wLHskTXYf1mqU&vyDAdj=e$m5Z?tl`LEUG#IH#ZTUmIqI3?ra<|HGu9aLHRLofk$ofcCpr;TNZ0=F&ZH8iK5|1EUn6k zL<(o4+_;39p;5kPsTMba4G!joHIllf)N;N{vR~fbA2lfc+R&i*Pdm+CwI8E)b5vbo z9ek=y5|bY^L7$Mam)?^2zq7ll#IL()m;>S_obZ|U;mHj-F(tPP9d@p}k4haV;Z*;o z!D+<3a&Gth(dPA9Jy?d>7YfnA*1jijTpNlc0_23bdx zS_*B$3S0KSD3r4-k)+H#5qjkV+>vc>=#i;Aj0K^UEO#F*T8D6`b8{B=%!5;QPz13s z24uepJ>wX5{md0|5axtoTp^i#p~ovhMs0ADioQIT*?*tbj-UTx*E26I@A@QyE>h*B zje}g}5RIs=X~!J`vMiu^O8@i8qs1)XKy2wFJ3@bt%7}@~%pcM-r-Cqg1I%CGe{fP@ z2WAkKCeXx~B|4}Diw%VpY*n~jZh^P45e}u&h*O`rM8deEtI3r{n_6=w(z+>z*8Nh>g0?I zAQe#UE!>D$1={ppzJ-kB{yCg0SLdtiH+ZhT{m|&#N?d0@6|LCz9ijp}nPt6XF-fn4 z7jC~_2XrZM@}@zM)G%l%M8*4&Zso~DefmHZ!XKgnz#b_1qCks@YhlI@w$ zXJb~eC9R*;zSQUz-ynmiy8Tg)&8AZiOv->Q4M3s|V&P5cC-Sba_~YU3yTje?oVAaA zI-oGMv?D_X*l@BV4^d3q{GLyXDZwG1{OEK7C^}d<5s2)DDnpE2nvoy-LSTLX+DXjK zebAFX@XNdl)MMxoyl~Q#EsGOH&dr?F~wi}BL4;5=nN&H41Y%kV3{fT+}``6@{J4QdE9F+xay7F3~xajFne5NeiOU| zdECEAA;$~y{6xt2D3U)Qze?T_9|!7Fh-!>6vuBltL3#CqC{*s`ydE?#1V66XSqsN; zjCx^wX7(!k$oTYE7#|g0dfm%aI)ZiFoJKuj2laTe^CG|EQGssPp~0H;v-uQF!fGc{ zu8)O!oLn#5vx_{n7a%vq6g{!CK4eHIk%qH{u+Zclb1(te+5i@Tyc0U!i`FrnTpH|T zaV$jG#=jlOF6-J#<*RgMi)AU>Xc=Z5#tG5h2;Fr;oyCB1w;12nU~yZU^9$Z7eTCDv zLOcVFtpGta44k0|RmZN*_FfI&<*OWhV^EAVwhzpJ&`!X`^iz{CR&PshF>=c8=(Yfz z#~!-PQ8Z08t`Br#6Bq&w$-^DtmUYK05=EIR*Jt00ryyY`+rn3)f-T(y5{KI;D}t7? z3XP`1tQK2gJ&E#l*~*3ZSgMA-s+!BBekgr+1H1bB9>DeW7Pg1+-y6H){-wXzNFZ$OMK>suGF7j|HCRWbs5m zp&Cxb>)6m^s-9h#N%uIfkP!X5%n+ zd-Md)h@C*+?SYl?&cOLZB=v|S7Rb^vA&+PZt1d^uBthLwQ!7c+job#kARz?svX_$0 zt7~c-=Wk-;jA!!9?WDtX18rf^uxEeN*BJ|}xxo=Zb2_=zVl3?nVk}XH|EM2DSVU-} z4MQOj*8GGI%@bltXC;&is)3_1f#7KT!qLKhUU4+dbJ5pKR8CYC;|{5?MFQDKbO%vM zG_>fz34ITA5vmBbst zvtWP8krepnrFe(7n>;&m3+`%g;!EyY;cgmpLN{moiZbY@bsMCxgPC9Vl7Lw<@Xjn~ zY9ukDLyVBlZCuOdzk7(cY}A|FYxe^Ar8q0XS|H`qG(G1>b$aDTL~4j)SU$->*Lk#` zUFQ2EZ*MQ>9W&#+Ln@*0bP|Hue>;umYmMOdo`VdCQT^{6bGcxE$Bwj_s+}9Y)>z58 z;dkUlBztE-j(8GP+)&QB8`v17oHno+%V#yLWT)CauSFSooQR_~7+?fD;bt0$TpEZR zyFT`gHJ3;&jq>0A(wBb;J3?B1Sqaz!wrc81WlLh7@vrs4c}n8#my?eXytw)Ta}f1G zV-aKI5gcl#jZtci4p=6$m$m>Uw!H7|(BQo7UNO9~sPq9QOGJ7l3JnrQf!2~Iq6i!6 zKdGkYO)bTPOZ0-w*~=5r9V>gfk@QctkT!gr9Y z$1eHE2&=g|xxyC!c;%X;Y67?(N>;YQcW+-)CvU3dyADZFLH9GxdAB)g0fTC;mkRhx<;W7YZ&o%UWKz5uQr$Z3u zhJ;h)rZoV~e6{IIa4JB#yL|o`k0Lw(>bu&50ZL(V>g;+cGi<;B)#^O>Xh z)C-UEX8LH}f8p^7=kJSHaI&!lo1pS2q<^+YbXz)0-lpx1c*s=BeOmq*$cW6FgGv$! zV)%;5OTt$i!l^2Fm;Tp~1e6|36O;gq=oLr}0E(t|Jj5wI=BG%>R6riB9x0Ea|71^W zM?L!~3?JElw;dJQEewv4-%{<>@yw%Xc2Y_WoDDzd)w{8~v}o66(W{=6WyjzdG3}|K(f1IqrY;bASES2D!`Qya;dc zzxrxgV?qN=NCHXq<;HM_MNJPerzJ}D~0c0O~dme@%mi6;??DRczGq| z#iq*N8j9y*&eZkChh5malJ6!DOzpw=?ZfeUC|;kGJ1n0u8+3SQ39pc}be@fldJK*$ zJc1vCygbHpP4^1ak(AH5bJweK0*7m^CH?=O{r#=j-&5O1+27D~%JW}rHF{o(hdc*X zn9Ag3qoP+Zx>~1fWIx*&fO%$s467NU4q;_DZwwa{BH>#e?nbzy?Csg}t9_;~*(JAe zv2@PVv)12Sg!;iv?3IGF(8wNZNT@~3VG$AWW%|4BfuHlFTRoYoo=jCwrau<*WYv=? zKVi2TqH0jp(7Uh^g!lqTwQ{)af$0wJ;WJyvib_X*nKZLMgxpsTik=?nBwTEygITy- znrBgyf;G@93=%9W>j(GXZuYC|O5EP=LvENcPaE;5pkfr+8}k<8KhkeLvF9F%&!k~2 z=5!dN^-=F0L5fWrI9HI8&ZUFWu|^jCOBVWjT6>pK3+^f5Rt)r*&I(0ftE9WCTsdo~ z=%Fl|&&cC1a5*jx>eC=lhdACNir(A*>O>_rJ#sl@2?#P95k#j4SIDF7C4U2C!7i@s zHL?VJyg5n!!7aI1^od=Ed`*(?owq`4d_pc-!>~3|@Ts{-s?RVr@--58wIR@WwG1Dy zJ=gIjz&7K8zL&>hjeo0+Z9J**Z?<|;_ltZWEl+ijkOp*~ zHfg)N(3k8S2fd$m_MFQvNrXZ8vN-#)g@1Zo~J5In9;X0}!m^CUPPNO~+S-^EJ zE8x0?Kbq$Okf{dkVd_#8S1g(#ic4vb5GG2qyZ^>~bK!yZXPb)Wbpr9H2`|zcdBSW> z?_}{N;CrPZtkL7UP{FxOp1C2;xnLH-Soidy9fEIkj8Cmz?^D zf-gBAA)IausqG5Brh-~PMHgZ}NmV+gvJ3;_X;;t)9HA#ln=Kq?M_pLqzJ@(}o~ zhrlThfm0p==kpLaL-+(`7_+_^4fq2a6f|a;@ zO)~L4kPIjU8MG&RQhW`jO&AY-$3%y4Z6nx1Q0&RX!9vKMqOa2GCt zyRbIQ8wNt4HFt4UKv@;G^)nHOnMiyArS&x6rmI7sO}4n1Dp);uLS&nptbh!oF8Sv6 zf?yJ$vTyE`0o3z>Y+oj@61L(OS6#*FO8IpiWwQ>0xKk5!BQWr zXb{~D&*gj|V#0bE-q$g8%}b2I)|VKO>s}gcra<^p*}VtT3od&%ffih2!zS*<)_4=P zWg!~a!iEY-KSm$T9HEhhpKCK>VDmMUOJ^2q&0CroiZVxQ!1-fZoWPJ&@md(Huvc?R zE9EhSnc+J+a3jMuGH4@1HZou%!!f2yTdr2?TxKG(L&(H zkV)JG$v<>KUb@0QH(kvTPb6-p zG($X*xXCm_&d>mbO%g`r(YmtvgJB?h~!2k zx1}eVl5hO#kXN-GQCn#b)is}uY3ge}AJbGQTToSF^O)12$`diII!{V>D?26bU-Kmq%emxh z<_EK7yCl@deAz15LgGhjnRHM#4oN}URJcN!NL!??;BmjapOm~<`sELjV)X;zQ&hs4 zujH0RIbLkwam$%;eIljI3ZObNdy#KN?j?abd77mBw0ZhENs$neXGkjU6@yygRrD#r z=N*f`CwD*()s3!m6%XMSRzKE4~y|Io+&hxnJ4Naw8VY?~nmSba_7A0m_77I7a%A)7#k1v=gKW&(HJxWK3TmeJZBU zkUkdE7fGLXdRuycVLKDk2T7l826iGvGzbjRNnsdosFfrUY1Bp~k!fhV^sqsmbIPRLrV+;02lBDlem?-{F`*N_o^mK5CR$K1g6;fe@Zp{3PS6t!pFf{7>5H zG}>M;$P>Cb#0Dk4t(XkKY;{4R(?z5X-xZydi}4cHS`xvT)i7`qk9AmDJIZ4zOW?HK z2S&(E4DJZRQYo~Sfne>Cz@fMSq8;X~dzgWIEBZ=kRha>;p%t+twf6C19n0#$A>yrF zcOtvam8@4n%}*ZwK)uCSL_{#;BpdR1lSqa1gqG-lu%+y)3;kc5NGEaAW#XZ~Yx}xaUolBA)hGdP{q)^Q z%8Yto6z0SeY7WSILy|I9vPWTFV|*Li(k|7NQ-ic@$!7`?2R>6a26AMa+UK)lsQwXR z=O7u<4(W;bA$vaOP1eg9Ud7;%5U)$OXtJ7zBq7I=?_=?MNd%7QB}`qy**i$&mt@mBh!6T=EuEFt#ZcnfcXU5d2QqwJ(x8QAGw;4M_MW6RGNyZlD&`1x`K6 zy>^IC<n3mCSi8*-5O5CHB=eN|JYt=)HE3q%S;Pa2kS0hz>S1r9?K@>Gn%NUIj1ROia%xgE=wyOg_1EuE z{c=k0Kh@&Iom9p`@K_P-kZ@mDG%z@^4P#w<8w(+|fG@O@C%UmuoJfR~6?%8*B;nqK zW%FWzXlP0KDxGI^!h7TQzGCDqAry<*?A z0>8X_JiDZa(F?(i4x#w^FY9DU=$N5IxD;bf(UdS9+-gL77%=U}0c@-_$eAs;@JJ_; z3r_&PU3icVteA;Rf^0OxfP(QkMAWK&@Y_*|au%QpfO(%WBK_z*A5?xj?aFUQGc5Y; zFb|QJTqP^y(R0XKQ!ZPr)X(U*LlU@BEk~^PD!&~&hpNR;Z6TVQ369Her)j?(B9z;o zn|Y5@-Cw^$tCmmWu=5umZ{|A7N^|Q1NG&D-fN=W8ua#-i3bW!WDGkr1@GP!J&XstEU6=AuOSmgENH`#X0cAC$vcMF?YNI~^6;mM!OO*UF>v+o;r_q1LdwPbx_EBJ zAs%1HU7UP`T;_Ibew|`sGq-UDbS(Jnr3q9Ol`Kaq=&2uY8{VEEM1#nJGjz46R7_Tp zx!It>ZWLD4z-5+THOX)is^nJYhD6SmP<1lMr`j9!z`Y^d3hxxc*}z4oHgM6(eUHt{ z_gJf{*>-jpx{}leQd+AGq}K!zvT0RS=(+Atu)45OIdDoUti3ye>UD9j`vtnoc~Y*$S@vu z9iA(_ht>$Am?Q#XG$$DWREe4;^A@Hir)BlR{KUp&X3}a5u3g(&Z8&IWcZF_F_;xi@ z3ZXB%i`<8$oyu&U{duoU`v_Eo+M$H$ASiBzupqInZ88z7e+X1_o_#(pgl3$Nhy9dI zS$S+w@63OU*b}f>4Yr0KQ6 zN`=b;Mo<|^r|n_y$fFWNm!x)uUg~@q3~7xLm^|ZvB=(%C0!Au; zXU9efO6_~Wju!@-S*8wPkdu69@(=)V{|H{{{uI$!pHAJIPhp?kqL3vT*Tqlfr1`f6 zu{x$CR(lH$Yx3%%3{Kz;nMRst?8LOO^unQh%cCL-OL#7BR_KC}{)a|P{w*6J!m+Fo za4{MKLUh~^cA>F%kEUpEiSSHrDj@cyPt6Pl_5G&0KuQEUI;|EG+?o%s*4(V$~6 zoW+yI?Z{qYS8qUra7+)(sso#%ymPIB%^K7iedIeqgVS3`shXPWk+LEItW|-BSf^@d ze>DS$KS!%MeWq=;ujX575Ly4($$^AgyF;0n)BSuER%PakRLa+M#W&*Bcz@DMZpIy& z67!MY`M7sJ@}G3n2%LqO`0gHFk659NlWeJdjj1a1e9sO@kCNNcyLP4rSt8NXeLK)Dee3 zxEPL~PC!no@#?J?%hVc_YymSaV3?T=N$u)b~5VB(W|MDT6)DVUvWSM3@T_g;l zKInBF!p9jzlTp1NcQsOG*_sfaP-I@q|973CwcQSzVc+p5WZS7ALgw zYT?QGn9$Cr<)xVawc&&g=+3mp+h&q=cSY30%3TX^(gsmtCwwp+V7&;f7fIFc8;$Il zRFu#{#u(_WBLjM!Qj@_>%>Gc?aT9m7+zLD=)u-8MhAB{)JAy*D1)wgfKC1V|_(Lc*ThPHXIxU2-*Y=4aza zyh%Q=zgS?hN#n(rjL^Iy{CmqcIS&v%vDO;0#muF_6;WuV6sa3MkhMqE(`Z@>*hS5b zGp9qkux|2sF=v}A>>Jwi(Xj7YTmGpp%wZ@8K5(p$5J(cu2kW*?@jwoAbt!;X4Ou#h zjIlMnoq|Hkcre&J>{*z1# zBJn}fIKgC>=7B%GIp~Y={yEHUWg7LP(QQAKF3<5vFBO|zDP~zTI_cfwqaT@nfufFC z1bB{!HkHaNs}2tLuI+HF?fP)LiS~#Bf;Pu_qu7B+=aqz$E{0dn`_*%;AgASRXfy*# zZj}ZJZ)JZttHdV#Y~|)LKt=MnOdVW9p{);t8nZ7CuCvqeM7arz29P%XKvPLdt;5JS zgmRz!wP}N+G|})SDfsNB5kvvd-U=kyxOXpZBgb@Nla)hy#SWrAs-^JbWyetvQ^y*G z6{UBp^$$BPKJE05W2LxPSp-R>emu4R&= ze=?4Ec3}e1WS6I`yhmn7XFgwRR?hM?tU?x(ye>9WQ%j%p6nstJLBzT&nDfW+h2&Z< z1SsaMFT!SgougVw%QOOkB%hVNOmbbmL78z*$F)s7IL=uuY0TzVsOMw70Fs)I{?gSj z9rYPKrE8;w_eRP*WjgS7WkUPpNE(Xj_7OVJ#Pih*A9M}p4F0gbuPwbmu~xL=1GwZt z0Q>pq9c`B1u{4XRyJ_qDi3R9oFU1&EWQPfYuS!Ba&Tnl)Ad)38kcwS0nEYzqx91fc z6ll>Y$vB{{%u^yWHZpOK6RvJ=tVnBX1xf=cvqCm^EE;WoUnJ++isW2dlbn`Lpf#0f z+lBxdS?8C^q41z8#R8rD%LB{#B`u(71NQ{a;A8*3CxnPtDw%ALP>#PjFD?WEvJqQp z9f#Mx;TFSuIwN3TyW4QrZVjq^4a;7rUU6hNjV^;1fD^7C)dVw%GQ}+P6a~E@@(_3k zi=Ugt)^JM+3>%z1T3kD#Ym?^RwdmS0C0)Dsm7m|WN1+>s)tCm-8p{BRmFm`@mcq%= zav?(2c^o$_YPn)u5HX*l`NE@OT0tSFJ-A$40?N<_0O%e?`GU~(>_tY}lwg7N>#V|m zK}@31O9K%qGgv=Q!?s4P*b(R_U?7GbvVbXbaM|_D)j3U1RyIYrOtvCWed?Zb;^Hlw zqMzd!7uodqhtWyF+&tKXhsatXXDH}AsIPMAfD3*--b?>gMW^EZ$$0-N9oF-cinIY= zF(t(g7~(NtewGG#mAfEzX^;~sH|h`*<*PV~Zls8lT(9JM0&LV_ivpA8892OAVOfHj zePuk27ucD})fi=C#>YZkl8sibNCrz)1gcgQh4J8?@j=XYO{nsmHyzIX4Llc5_^s)7 z=A!qY>qhXA)uMWaPoD6>PfyoR^-PdrIjw$Ho%tL*_gG@1a?L>k^JofKF2$P0A|{QE zEJM18mM?`wy51Nrp1LaC*gp0CV!a^H7oB#oEZ-^IPkbPgQnZILLlvkNFBb};Mm1ms zngkMwIRZ>P_`}2zA<$jJ{`_h1=f`p|#A^}vNC!udN#0ESL8rwT)$oJ%XZA>LfPDaH z(^%@3Ez(Mjbz9y-$P7n1ORrq%{vjV$URZR}!inw*#hfd^y>B*coaL z3cKLzUcN!D?@&r`3vM$U3kxIyy*!(Q0_@2P=7wu<4}X5$NLHKef%VAy z_Jq7|c@mAlI>DL%Xfiw`(rrd)kCNz*6)mzZ!`NWY4r-CZzJ~x7nyp%4l2l_QO=1!~ z8k<+cX;o3|dhTc-ZXC?h=k-h-77*%TqntQ#W#!}lC1zn`iD^4r8p7y^7sy5npaiK# z@1x+UFhr8ImtPg$9}8Y}F6MwHtYxTQ0L!>ZWeIz;|SE2@(Pl8^w~v*D3U=!Mvr zW6u1#r++%%dIv5>a6nqzmR$#G4;l=#($$9S<2ib1ZX7?cCM~Jt^@4Yc3v?1g4Ah84 zsCa~$n9&H`0W#b3dCApkM2C+}eb~|fv&v2{jAC-|9om%r-a;@ToM!!xw&A=2FEX$@ zW@l}z$~=vH95iM@%qx3PK{uyNXq9+w?c!Y$>OGXy5tK49gnlfBpfR^ zVQq%0Hi8oFiPkiwT1TIx&Db#PQe(M~O4Vl;%fcchVuM3x+T<-UV4NtfL=OW@%zxoD z1)_yGPtnWn*0-AEEK9>3Yg3rI0@BL-M!Rc!I>RwWY`L%O>1v3GvB_y=Pv?F}R{!RW zP}5>Fv;$+TXzqtabEE+{rS2HY?hcbpgQYHotsg=n*;XW&;fUgq-i$sGjTQD5kP-|m zM(h@Ymzew`Di14SD036V!{iW9b_Q+*IO#(iat`yJGF9fND5grtzbDqol||Y zf`lZ4!{D?{2E&+8nwv5i)T;%CnHyjE9w-)(W~#jUM0xbnD*v>ZJ>-+B8J9-(&n9v#QDL@|AFC&h)8&6u(S~5K#=hAo z@VY_Fky@t7D^pQi{8ZhAH@ez2Km#uQcoo$MOX;YzLdoQEm?y78(S@aKm!x~`veD$s zyBu&+)lu4}t)fgX+2*0EjNl?7RuJfk;MM!fR<&o2dW!Hup|uO8iOosO6|&_ zN)1@!)5Z;h%YL2d>uKfhD&;SyLUFA=*i*Nys!*rmXh#T244FA^lMfj~(c6ZK5fjli zkxD`r%6i@ig~m*qj1##eJVt+UarNp$p_hw;+}EPWV6&BvW?*nlq;6D^W~Am#iQKx6 zDoInMW?UsHn=1&ho8L;ReTQdPu;S6SvWZG9r!lC`fhRN^q^)u-id8zX&3}^f(Stdn043mMZNBqHI8y^wiJ|Xw?J*Lgq0>1<_BP41LkG#Y6( zIrbOW7}^`MGfq0w6cob>k-#nFO-2fQ2m6%5kzQM-N!=b-i%8xX7m!Ha732(M*vBGU zOOzqZ|3EYiOBw;81H^%W39*Mm{pN0`o-J1+qp6|y@n6)6QsT?W# zK($zFWdPfNge@tpK|=$Et047qc%;m)GG{{`cpG-y+lcPXS@jX7$)@E+PxhZ38yQGJQDjAkb_n?*WI;f|xhMM>8^H+#6jLmg z*?94$u5xz)iXs(k6QT+k%p?MMma320*@ZZSQ9hA!mHmf>O3uf@(8b}z$90{edIiVO z-_nBg1?|1;f2G}A_dw&bjUUA2^ek%_?M;9M7v-iAQpY3`3J&x7*7R({l0piA+TLzt z3&jS2r>&|YfsDAMbiPu#%SZ`j4yvv>nn zh|CjQvjb^t!<9S8LUjmw_6Sy8+C(ZTjU7*}&~G;ZqeQwowm~_bL6HlyrCDw`We9o9 zAyeXqc@trs-RA5uR!wix6$m%p`YUiphZZI(TnI6YaJt@xW;U>CZL63oSN;8BEd-%h z7xp)J7W6PY%kEn?fjdEdplLceBH7JIcD?_cC)#k~C!OlaRQ06m4e8{`swbVeAH9i8 zq`8B8wp-5HKz1C0MhA*3>PKk(NG99T`|~wSHBeNr$zGe{gsnwJ4Dv*nefB+Ek^NYkosasimuJ#UQ>F=krH^(weG}I>!I0JhmKC7r z2EcC>UvC*C<+=|f0TYF4o`Xz)1$3x3>eta|0-(rKN23XV;>k!fnvSB;&^@85>t$<( zxqOqQu4YwF!nT((Rg8d{SWm*Sh~Y_y!_{cY8yH=pk<5vL5pm0{1^pEIS4mzg*4n;62{RULa&(|92Y1#0*a244n^=#O!l8Gpam%Tol{pGM& z73!TOuYIuf9S?MIaW}=euuwa>vnXp?!`YRlH5(W_xb(dC&v=Ww#4IGpiq6;u|3r^r zmJys59Ff?wL7Ea|`9FACXKqHdNS0pw^c`1p`@r==(}|5d6h$ww=c#d-8vSN zbnCd2?$){Zly04mNxJn$%s{s;#3bE%GbZWQ#h90Fory`hbv9<8TW`fA-8yiUnzJpX zTLCx$!mmVF9NqTfVW}ru}$0R*E6O;7l>{Y=w0&avJsRvImP@3aoJqajx zUY`b(dm|?4$%UAtCvQ6Go;-=^Eu!4vn4~91oHWWk8@Pb5sTBa>;MxF$x90Lq z?BE(&87u;ntIM8_oPQDn;{4#+^6!_QW|?>}NA>L452aGbMT|Ovnxgh#?a=8JWb;UR|D4NX_D7U?7Qs7Z;ea$#rd z@&c(v+5zt|?qPLjvQbQb_q<|}w8EE!Y?G4!rEzkf1aMV^O&tWlf2};b8rX4#nuFoO7ZR2{Dt+2ML8S7qF^ou+Pi7 zdY&5F&Q%ob^piBtU3xExze7Uu9c}#9e5>*V`R*n@yD$x;_YS^IeNP7O&TrtEu$gs` z8ztg>JJrqd*AE%q1->m|UU@688*+W%op}u(gj!adAH1!% z5PVyif?iiHVOhnAW?l9g=MD$7Z~>YsOp)?I78pO*upI>Mq%}VVzPvc$WQMQ@4xG=7 z6=0pHh(=x*hvw@P*vZxfp+n`rAD!>=0SK+N389p%oDYjDx(IAnkEB`{Dj$X=uHxJ7 zQpPTk3~^3hDJ0YP+lt9UJxHqupnS_#HDl+Cy}Df5d90`KBoyow{%3WiRx@UNx{vpE zq|d2RsoMN68<{g6Kvh)6w1lUP-`c0=ZP70uJDGw4fXA<3D|N#rB6CZ_#h+D z`hY(|A7wzi5juT_TO(8GYd1TBPM2>B7jMrA$?J5%f&yl|_&$Dq>}KxHr`f0Rj?o1W zA1!w1?ahzoJAhaM;B~+KW_&Jo5NyUnj4Ms~BF35c72x^<6!;e!L=bONg!51f#5N$r zMT8oLbEH)UEd2+d%s)(Sa0U9J`v?8>d7k!oiXB%o=@fP+rejQ9`P2q zu(1tVY%_*tVVilzCb(d&Mk}Gsw`jsA2mYHX@n0>9Jbrk7un3I_FVFtK;y_PR_FYI5 zetiM66N&@2XiPnX$0pz@7GS3rv#%*Ir3m>svN0jC!~IFq2T_EYLjeqL!cs6>D;Utf zx1qK#$uA(xJI^>k1fa4Zl| z;hxvyJ3;d3;GHU(ji;7AFLp2qaet;G)19PqWGhz0Ky9F`*aKc4bVJz;>4u6A3#e~J zcIz#x2o?Ezd49m-0fSa;?+M*b_coLcY=ZbC6 z$vMJ^4YyjK>%egl?RIL|^J&L5*qO88IeFpH0SP)4=qPfAC46QtUp#PgzB7O4awpR55($Ii!p|;7F<^3(%9Uf@p^0tO4wmD&SFmy`mxR}|7h18xQ?U(PM z5H{?M7lfsFSjYtOnpZj4horfH?3-Vcy{whS2piQ@Q_(H7lKB!ygUE!~RD0PM;8Koq zs)b{DcuC+==se1o_}IzcGd|YPD#p6E1nPzzARWaBkl06FzGTxafu0igwuj_d^t_Y| zmF~AvNjxvcVpQ_vQ{g^YMBCD z4|)Mw$Nx+>9Lg#9;E0U?RzC*>exo@fL0f~g+I@s%(<8RJl=za!5+mM8U%`u+=4Vy> zSywO3P?(X=e6;1qnkA|``(nd+-K5jbOJLACuODj$sR!f@AL*Co6EB<9`pF>7Xby;R z8fTd^YC;DZg5&@jir9zK09KG#oJwKMA1$<6^ABV^?|uNB62e9d$-V4IoF$8PA|p&- zeosO=@XwtQ8qJ7@dHjMK2mo^t!ug2c#jYH3l`q~Y4PTSBCk=m8c*$=P&?RSy95aTe zXsU>xnrzy^R61IGXRP~0lZ)DU!Dk;1rUN(@e?qbyJp>e*r5#2?V=3sXea3zEL*#1vexaWx88o1dLdz|?y#!iit&%&1OCn@`PW7$veSY9>TZ}l-eEnJL$C~2Z$Boz&-HYTR~tS4ESN$dUodDIr0%fO?GQv!FtoF zIN`WcMe*)wZX>*h?_-0iEch9gcgP>|3NQG4M=pPtcMWzhxxwXL{?7bew*iTF`iU;U zrjN$g&%ZtYHmw%r>j(|g9`y4agLjEg05MCXN8(lUYY)#wI&_6{`U)N8y4q=Gqp!#c zzQR$szMIOgoR?5USsD_JvSoMpwxOyO-kPPs&os0Z+l?KpNYEVwy)g*_TQumSpIw$> z1||mz|DU0lLGZbRVh-LdC`s_#gG~RAz5FXNc~8EDzjyGrIeVO^*Z6m>bIb*Q6tq08 ze1g}~^StueE3ec#P)`GbSMJ`ymDVhfqBp13F#s-_-P^Kt+ zM&#Ht5`5Xuu26F9*It^~NOA$G^4}%Z1MEK8r@8-r7&;ATmp2e`D3z06{Gv>08HDV< zrK5<$Ut-v*7aZOZ&w@!D zHWR5dB8G0du#E8LG-s4TKnV|mU3xVh;MmkLC9^e*bar#HxbgiWs+J^HnT3iJ`ZSmr zSb{IR&iyPU^64ty9MMfTmU&n=TD(!AtngsdVW`7shroB0iU!$?QmPiNvZZ{dPfE*{ zkm7}L^xkm5#Zf(%1t=^Yg~=Q81o7w1u;o`YHvr*q2yYaEV0Z~pHj=$SirUc)zra@3 zu*P6}F=n$`fR<{`2nkYCG-@VWx}9V-;xl1FXa+J@r_i?TKTuCE33nY>$lI8RT~^R2 z#?)xO(UO6`q=|pofrYlSe{R)-661hsg+U^B8>Lotam(Oa2ZQ9GRbPQ<$_d3eNXh6a zGFdk}x3D2r_aYCj4xYPywBQ*I0J1Yh9C1%!d#{=sNNSy8o ztjUfPtgnWTq+?JsyC6}JZ`4o7FZWagc-RV#EwMvk@@ou&4;|mRR(TTW3~rTWlIDRM zg$=VI!bT;!cQU*)R5pi2LreHV4s>M`cZ^VbbF_93Y^XD2jxAZ%09C?!KyCFFmPNlu zL5*KY_QwkwDnzjtbU}T)F<7xu)Ro7-(nc3Ab)Q8PR~#;3w^ot}V&$yZW$Vu{`;#Wi zjnB9C11nt3KtbUt53$v2pBVkL!s=$sE;;GdCKWWQswo!3bP5n3*J7$l!=W)fCE_ zL^TfK(@eAyKxfhNQUw&XMoe$9Ln$9nWK67+LxyIV@jHAj6$@P2G8|hW!v2L0`!>nj zhrnY3>N`?(zg+bpc&Z!2ul%>rkY;6ttFc#PDUl!}d$R{a&<5sAX^o*9Ap`#C7tt4! zh!^3D(87PwKmHu7fiW$%mBEN5X0k>22w2J=U+`@Opll=P$8pU?A~5*JLu??Ke#%iEZxy6ma>JpENpY#B!~jdZ;8*G_cvBJ?T|53ui-c1tenjeNc0yW$I=S8sDGm8B=dQ*_Zb;9d#Byl+K z(i}-_I?o}KcozYBlqRKPB+duUAcnLNL8Dm5T%OCXMS2daR&flQaOr9cn->)bIG}?I zS|<#MN)uZz0<))y;26w8#_>SaVe|4^v4xVA6o{HPXNCK{$DVqr*n#%L-)-}V2BVXt znpkoS5CdZ}!@9HvRv!HE>nW(5+>LVcU`TUfm!@joR&+Ggu6ab3^3~tMq?8>Pl>y?6 z)k@0Sawg52UvAXLV&a|!%Y{pHxe&FdW$6+3DOPUeb09ZL!r&^I{VVT2s^1aMv3fV9 zcarHD8Dwc@vffd|RQcwg6&j=Zt4+hNHu05Sg>O>Cm{fs-*d$ACN)PT=KQi5%exUh- zJ{0%>hPNgy4$J~B^lBgXF|MbCa2#90Dgqm9MvoVXKAsagOhuH%R?!x@*+Zv>HDyr= zpK5(uVkBN>^mv7`aTbE|1<_P*BNRaX@oN52?_&NZ_i;p7-S(RufLO>l1S zVm2>BIACmpV5X7|$esyk+7{JOXVrI`+qD(Jp0`Jcv#8TD7@Oxv-Y-B>x4?`D(DWb& z@CXn%s}QcYn1rIUqtO8Fx%N@Ki>cZWJDFAG4JD z{SXLXT~qv;kM7scXN(vCRld4>?LY~HTLvT(S`hc~JX$Z-6a+jLtx;{&D@733qOcBR z0yXwXyV352aQ*{Z9%zV-bV%TIs(=7vxl`WoAryNy9u z(Ug69j*kIHd>~*TDFmYo9d_ebMHl$0SjD_46 z%Gf7*W;{TN_o+V|u%UUsH$%M9(KK)^4Rk*DP%&o#$Ndga%N||}SD%xF$VZGkIP0%5 zT3d~)K_eR0%BQ?Zv01(W28Vq7(mcj|O!gXnrg<59eOGAk?cjn0S9Ta7GdskT!L0JI zZR>KoaBlKrtsi8_+Lb7K{8v!O1=##Y4`$B@2xlX@&={kQMpIh=W(S%0tBT6j`K#wsdd_r<^V%m#?UhBkkvH~%CLARzwB$3*Iwo9y&|n_|KF+k~*i(eE zYL%j9lKh1YW#b-pEBy(tMK=i!fE}n2gNKJ5&@csd7vNq`26avftur@qy@xJ=f-(%T zuY;x0H2X{KCe@voRpJNC644n24hA=ZFa-v&XXB|xqZJQSZw7~OpuwI90jp?zkYWYJ z<6W8%z6Tm%y8twa-eMJB;vG?a_Tr{(Sn3BiB_85Gh)3Gj-l44@sQ45^!_{;bC($MW zG8cUuK+912U*Ca#W^splay9UO`_^Xhz{F>LM!+MYVGJ@Appv2sAL~OAxW0(7S*NxF z4DOEi%RlyhSb|&dkCOw6*3rQhK_x!H+p2f8y7B8`OKlSWi(Plfn9wTwyK`7RYh3vB z+cT+E63U-awy2gveI_i|C;Ax0Fm6$1`>28zB#XDHR-*2FXg_t9jsDJLFrog()uIGTqy^Y)j=^M!C#tFfn|^bh*^Gj9S1J`IezMW`kU-=-FUE zYfeBD+zEwfqNTi;qE?Q702InaJRu!l;hWacV(U%@+c({##dSNGL`2B)H`{hH(_Flu zxFz5AXukEaot&=&NL?ZU?9dj7-FqF6V`K?+CrJj^LPmqMC?Ht^3b(ZIIPlt#&&vmf z=u%a4(NkzHd_OT35op^EEC?|G8BocA1;f4^Sg3!*frY!ufyLQaqbiTYQgKKHDMIil z86H70>kqxWCjstS+6@T|ZNB7vE8oIt(~jYd-E&!6^}wNIo{PG z{P2s2Be2)Qm`)_tJfYBIm;sr8@^CI6Y}++-b(o>{&|p%t%JM~IXOOrnNZ1`zkMN~I zBE!QYWZ+eBrWt(&?$q8i7a?@i+Po02=i~LP1#%O5nutOz3E)h4nV#lao<%X3C{N>} z`c>(+$Js?90gjhC1SF9GOClyBBDXeu#alc8&Nd1}RW;kI0&+-Ml0ztS%g@xg#jL*fMqYDqYkFd0 zKx-L?348IG231)L7L%Kwk`uyI7(Wn^tWP4lIT6OLdO}O(iieyge(Dg#o)STV39Y(2s0nx-5_xBAS6*9+p%hq;f&}CDQz*chI z8IWQsrj=?As1j_UTCgq4^bC_I6L%_4l$f?vOSa_+m8xS+izNMgzrVHjIrkE>6x-zB zp8Z&RJ$~!={{7Zk6;Kty_i8&jJTXFBx-7$#`|qMKaMvitpnIBdOj+=N^-3jC%uMuQ z7x!=m$(!*E!dxiSq&qQOkN-@aKj`N z$0OmPh9L?#{DEz-qtK1!bu3DgK0?ZY#Tgx+}yI-vJTQ z+bNL!Yuvw}dtAlmIwC|#967?+5W$>C?0~!|yS#wRSpSmQ=vYNAu7>Zdg=)U;e8fRH zb23wah&dbTNYq;rd6}`wZ|XxA@;Vr{B^}(N=BW5vco5!HPq==A>#w^vfjMvq6Q8iL5u4w&PKm#vX0lVj7N#lborCOnvW`Pnm1rCVMhAh~%3 z1n(Sq_#h&tyypaKi8}B(>4KevHsjUiT%`_D{j}QHcUB4ycy@E=wN8FAxKSD`n$T-H zLr6uNBl^C@3K^A$86J0iPW8@QWRkfRzUlPZNcR(KC6y$x7v(FAr4{xt%v@ITWo_9T zRdy|N6$2dO7@DTKI38CuKbIyhD7$lFP2En#LW`0pK*}&@q0CrcLPFsY<1*BU2}j}E zo@Eq4zrMz_kAS);~quZ#sFiM`pNjDKOF{uNihAPypQ z_XTpAH#7M==@H5WiCU!m+{b$3`*1wVH;zh3UOhVDeGyi1NMXBQJu`!?fse$p&rDO3 zA(;Vmq+!5$Y(0pU5F*<50~8CC>uGxhpne4*VjP8EQQR_84jIG-2m4r5jm5B|+upaMz{q@)1b@sAM9qQ3B(%62|tuh`YPLDUhHvn+VcM3&?`uhec zY|;r|X2+DP_o)`eGPT}LdB_v1gNdl+?XE#yA^46tZ0G>0LuX6J$UQ_R31bspB%R_s z9IU#rnX%u2&8(jy+a4S&eq&T+S1C9oA8E&w?$sS<*>%C$T4udZq976g4gT>xc#%bq z3dU-N*gRD*N)s5JoR{pFbxbX((B>p?9x&?0i`6?a%6)g=^K4q(L1MTB_G{)<&!uJ9^B8 zzR@eC;a;apR*>okd|IuyAaP6!%=T9(s77Av2#LT4;fK*YcE+X1mvWIWG)1UqJx!=^ zB}LP0zq-;6$b5x_;_vGnu+IT=-F?B&F163HRI>x2D5N`i#|lCucCAX5=5iePri z|7U-X&V0Q%f&r9?(@SX4GMc@5QIoWBOFl$Odcs6Y&my*$pG8y9?$aWrQ_?V&m%|iU zJPVGY$gq2#JrI-H)Is~|*v#^-hQTt#kGvaDGvL|>1FW9M;VR^b(-?(X6wubm98G5e zqmI~lL(Us`hN+m*BUe|e>%pS)r+KbZTe3ZeN1k~ak{9&my(>_OZ#)g*K@RVLG;Sfx z%$RQw+aQ49APj4Z@_+dkhk{71P$x*BZIdA8}@)Sd^V)FIlGDP5LFuv z%0PHTnQeBUr5nW32eZAzcA~4;o)kdLwFNMINzB7`S1BE+yvgOYc2*9VdH#(d$4>HQ zv#dNpr8r9HwZj|Ta2lQ1#?@A1c&DTcdf?#fTrdRD*p@U)>=xsCOS<|ntH*^u^y96? zw&@@^Wt?q!4|d|HOD1#o&C-grG|S8;>c09ts`=;%g>i zWZMhr7E*yd&avSLCl88~ja1JA3vu{kvVUwae{dQ2%4aBBHs$I=eJ*r692e4>gG(TWFr>y>c@-DJv( z6Qi_y3p^OMe^;wH4wJYMILsZc=EP=!(HeNj$`_iA^hgSbdSs$qOR>l_b+6P6P)glv zOWDx1ICUvv(y%!xXJ*P)=FkQF+h~vID!M1G2HO{oa7xZYmFq;09O_hN7N{RW7Pm)4 zQ~0zhzeMwZY2XsWgKdOF1|jyH4k@Hy>o$T6EZPA%jsqXB@|(9JFTG!Cx7MNLnKW3y zW9?9=zLELpO629M;`I&uPQb$ z(NVBl`J7&|$Pp*7RNpZ!VVf6wSKi%e_r$Lm?pk*9^nMX)m_$hZqwFh zduz|;t-D96IJr{cQCG?D3#yv%RgWt3!Io7w_kdq|P!a%9QxO5#@s{(6ztL<*L(h6Y zf@{InPHX`r&k17`A7CIgaUe#g*akasX$r&HQ0TSJH~#U0Vq)(6J1m;hR~Wwh(`|mc zssgJj<6}jY^z34*D!Hn{`8ffT{xcK39^cj9{iW^w-- z7=)q^${@HtNr>tZf)YjlbIJovER+>6-zZ1-lhl*1t$lJ8%d6$%NRq9%D@iPt6^9#n z=9Vt|PKit7eSD*g+Ez!ayLj#nig4nNsI~cm!Yl-HLsuw_yQ}{fWC_sEhh(zTl9P;1 z$y0=Ur_BL}e%#WXLZtD-UJ$9!!|nQ+VoMBuiorF~?d%w5LMF6sq8JoBE9#CU>V&*p zSf8*FJC_-PrSY7aWRRrDt7*%RNmUi`@7T3S?0di%Cn)g(p zD+0;=Eq6f|f62F=IdCI#j|e@D~;MS%LwGXy$PEp(pgMAIkUI zA_H4dFnazW1D)leOpp866iDb$@RFTF$aK&-Hk*LSLfS;Z<{%7^!x(Meq^SDXqs-My z=;fXMGh>yN7BMP}!%y5cpo{&Fvh{xAV6a#uLP9HUrk=e}(|K>iUmff8PC8ZYr4CCy zVbVH_9%f}eQ_T-%Vk)aShXXRc;FnQi4C}%kq5u(uhhjw{L){?cfjsI@s$Zo3Af{vx zp|7A|%9YIoJ$Y-T#T*A{Qs(+D+MZ(w5yPXH+uym>3Cbw_yMIQ>lB zmzjj}Wgp5k!CRCuaYHm0b3hgo*bx|1&~TEV_@) zO^lBhV`Ycci=`A#O^gK50y`tIe7qoaOc4__HTJnFfB@-ZU zd{Jy57EM8;mzI31UJ(CJc4&#@=!-&U9ObuP^G4$%Z-HK?|68C9g$7-wvP-%MOJO=4 zE&)v2Nl}w~hq~b_Vk2lL3aL>PD57mf-<5mEF2eMe@tDO7y5i%MMVW&dx`IGkHLfgW z!QcuYoX-~y?dWS6U zeZ}TQV>y#m-IE+++DxWD0DZuF~Pba5N0uNlNYr27&1~=9bZpD?L}Sq>~t<*se_5&Nj+hP%E?&H#Vh5`j7v^*AF~aex(eiVMQ`TE zcq2&Atnr<86?7KSqIAoVh;WNZsAd)^rCH$uCkK?$yrLnxuaPo6z7ng*Q^St9EexPH z!vL?eSJa5Da`254?K}o`1JMGD|I51pICD3^0lLx?P+M#X{(>H!`3qNqrW_L5o)mZy z=NDEezHdk|vGA7$xbnWkjpa{(Dx}~7JtzLr)kmut`U@zaON%mQ64joL=w$MA=Z zNiKRjG8!AgNqZz{!wW#S*rU$UVn965R|ZWnkd3hce^-xbG~?u@nJP;e3bELpXiq3T z!YsO?(g3u2rXrdv{Xo@Zyd7uinecF-XsU%qStDN~n;?PcmPt)wshLY^#2Xa&jBse? zQtH7Nh9Aq;t>-CuDmsFXB>>HJolRV!FRrmCMFltDQQXAMxwy{Au+Ou~*Xt&2xh zGa-vs`K%dP002?rMcwPROd|kh*2r|M1=x_^j{?j? zG?{=Zt1IESEh$JkqyNQT9fA$HLtTvng|F)7 zZo#-lw9-i^9P}CeHfyBnJd7Km$lOW^weni7IN)Fn6cs%fRUTf}K)*cGtIOVNWm!HR zv!&+ye`?iJT~tS487QF9Pu+uysGYfoNCdU*a-DUBbx&btI2T6cRAHC%yo}VWdrKC* zb*U&koWGI6_IHU@>a7YRdid$}{+qeZBT*&DwLQTMH!$`U@Q|El#%2#-u~&1bq^;RRq~A`-b}62B=Ph^ z3E?6ke;;u`ZkIGkW*W}3rW;UDbYoJQXGRx+Lr|d4Hd-6S5tClXddH0Ak<#>O${SN5Yg)!LN%lZZ982A1@ols!&uBYstl6GNAo;9%%Gch zgsDAJ7=xh0XkiQ}F-To0G2p3{7{O~$00@j>2@9jemq;bQ_P=7Dus z<|V^WIxP7cLDqELOGDLez>TTKG#2PEaXqq8*f#7e^k`r#$W9JC#vcR-Vz&W;4CT_;K`Rm*O2GoB@*b;PrA9qM4tl!0jwWptj z!>-na-W+0$19}++d@{x#j3HTPpTJa4Xw+0PR&S04J7T1a+KYFP;IdIPFIq8cgKWb9 z(-;*(om{^%MmflTB#oRyMZO5Gq~;N zaN{ow2-+aj;WC;}U)$8=Q?mXEo7j$B zc>Vx`*MH0Bs`249RMy;WUMBO2Q+XZE2h-tZ?zj$0W14Z6>zN1RAcGGF6XhwMpj3Lt zT)PMUqyPK2CpqaU(v+~|y`r}RsWXllbc%e!76iA-hw{#QDXG_(zMA_@f^F)b)6RK` z1-A?gPjq}g)<%E{#pD{~Tw*b5?-AArjn+WNvZ*vdQQ6+^Z)#V zO3u+in5F}TaWJJ+zFy$$W_H-HBJK*57e@tN-8$Nk+SnXztSO>4^m+dZ??y(d&o@Mo zl1o}BA4#RU$nkmnzwlsHvMe?hU_wacqKIu?T&st!H_T0eHVDt*5<#8>UI=y>DR9rA zC=HZbBE;%yhCr^EAD35}A|yg`yFVYRIyVMDj=*Q>|Cf6EV?@XGpv2NO@_C)y2bT-U{Y z2h(_d%5me$3mB>5{`FPdKUxJ|6Ia0jVd!1C5;R>65;W@FuT-P1i#%{J#TtSK4n90~ zvM$(hsmRm*emb7U&RqO-GkAf+iM+~2-~~H&!letoU<;C>)+IsNUhg+MZOD+o4UJ+y z5C2c4w1%+=84{eKM$Pl*riHRl%XtxTR0(APnJ=4Vh>;@%^L0|LYO`r3n zPBbqHoqU=O_*LW zTXOeZ+2zrtheUCyOM)YUXD!@?@rru@2F+ROisKr1<5iL8ZLPnyDTMM+YWXIB0k8frXj9gG>#6M9E^p!NRA>6 z7@|NXcZy|d;qe%A@K7EPgt25BFx1Bi3gQSLwM!n4uJ8~gi~rXI59JqOAs2d%lyovR zavv3`F+YjK0yLm%%pJyd8}V}}>Ne6|1l!v7*qDj`v%y@jsuHIP&0|{U_8_7LC(U5; zWB?Dvq}PT8flNz=B0e}QW}#55`)K{)9GjXPadt$Zpk}Mx@+0WGplvZ={6=zi@JPrd zH-_GV>#zdzVO(~8xZby+02FLumBK@aVXiVyEop%6&K+Fk-^T`uAC) z!&qIo9iL3!utJ~^x^Kr(gFf_HDLC|O=&E=(O2eeOZ>TpD-@@PuuNeF!L^?Gnt}w_9 zOeU~xlu{W!?Nfl<_#zCr^@E%aKA>ZSpckzKGOO%=W9X0g#`pC{%=G`H^+$jJw)if0 zIupckEE?e>oew2w5ft-6ICOtHjf3*L1ulG6G~mS1nhigls4q!F)y)_IH5k)5?HCgU zA!{*37v!2(I*zUC=o>Vjo$}J7ur}WuUPReLI_jiX+Tt%_ZBhyl&ryuJ7w+gL-frM} zitC-=Y?nxD8V3^KVd|bwL@n-p1>}K6ojBP4qXp)c&Xa5}uP$$}2m0sFk`{g8xmTpc zrJ6;1a@TgTFs&>UfW^l zf_+CnBm4S%dxv)VcMCv7R(}@zP&>lym|pYQcFma?|ke-)WUEu zw&ca(M_wHEH&a_(G9h9c6P4OV6+tA8UWXf%Z%<$ zoGa`A?za3n3Y0!C`yb!vlCd+AT;=_b-wu>nZHeYZu7zsk2L3~r2LM8SWELb6OEUbU zEYid@GT-YzR`d?CWWeN2=IYq~Q~dYg+o^6$Zj6GGu$FFpN@<$;^G~Q=))71@K;!Z_ z#c%J$Zg(7VE1#&l0}zz&Jn=}eu;SDoviY&*Cm6{%tVj!j#O3in(>?7X1=C~lc)r@J z@Lt!%zj!)hguukxDGM(>N1{Ey_kQ{nHU~NL6pK_pwU2H1j_u>>{rl)qcZG8v7H!m^ z-0xA(<9P z-h7^ws!mf15kyBBao9gH)WI7*W5jG#PyMqub=h~u*%f8@j+7pZZ9WaOaW-?*oYFl> z*=6*8ITup`(;(cm+9d2mt>(oFB; zoo<(uxl;aCSaQ2kCXfb2tv(qfHWvOYBLWKB=dx|XfDS`Hlb@-^y&EhHkAcS5vC8># zKW6I%kl8Dj(_iIzDqv5ATpToEoO3ps9C;|VBnY9YYX(vGCV)#dr3CmXxS^b01Hb|J zae;$1)<$@aykQZblB8YM3v#Bu@Huv#OOsFbe}PXX+1@V{yRe|}{dIbOFwyOu?8Y`- zz(5+_6U^S@siZ+h^B|Ifp9d`Jpn&P>fD}h66Sy2pNimf8Yz*jh1R=&wR$WkqmNa@V z^H`bY<)4#sg`li8!_>|}GGUCAtewa4XV1rA!+|3IH`qG7WU*($6lIAU3MNxJoXK3~ z{mV?m9B=xXY$|U#(*buH3+ea;iBuS3C1=g4eSZhQ3W=6ex5d@>FXM)}K2S-4zjMQdAzahebNKTr_`6JB$UCuWPR=Pq7ZigjCRWdxSD+|r2JFDF*)Z9AyaShc zLLK^I)q|@Ls zb9sD#Bt%ixie$v`%g=(_(ph_dFy5VcqIYsk>R*Tegi6H$rJPNQ?!_`;CXG2i)mc4H z7hl`oZm0Kq`_5HYv-~H6pVj^XD@3tR)Dc+st$jG<Qpml zo*JO+TNcbGFTpL-yk@Op3FF+Y1zRX;A@CfsjF$Mhw_1FK1x?Sf@`*0JP~rpS_eIX+ z00Hw7?{2!9$yhMg+?F~Qe)=GIUBG|kWIZe>%?cbG%O-q}tysF+UInw4p=*-F4rW;x z&R?+tRy>?gR0p|QZA;tF4Ymtsa6hWiw2juTa%=2?c;RPgEp2)atzAWW?Uh>_Q)@6P zb;GUUzos?*vb6%3_*CWHCu#(lS035KxKq zI3d<;R!P7>u9wZ^N+zJJ?eC%=-qyjtFO`}X>9iC*kg%d;2z6GCBk|Fs9BTyMpfdar zR{6RTDN=|_r9r&;Z~Ed|+O1l|&yNo&R*rU8ZJnZXnUWbVfZ$Hm#JlEI7Wj07QMl(G zg*+V|1#LPNxvXOg8TvgAUbIiW;8{I#4?Vb38k~EoCh6%LzaKqCV}^*b;w*TVhPR~I z+HxMEE5uvc7ju)>G_g-Lj8WI9KZhWOc7XD+7?RmM%#frTBb|?~i!K7f)8V=th49*b zzm)rJ2xDlBKsXPy?SLTM45Rr>Y(bR=Xk_TA|B}(l^VdkY#!0nqBtlN$QRwWBA7}~~ z2UfvfJ_SvmzTXtI<%Sjh%};?CVLJu#Z-U}L-k8fI4UtryySUeT;r=>|!p1X3Xl6!m zy_tyy@%}n95tLDCD!vzGh`wp^uRs~kyzzrkMqBQ0ep**5n3}U!f5NMtWx+U5k5_M+qLs7W~R?;ru zBA~Fi2r_037a7(f%xk&RjNmo<@OFxaah=*E`qglq@{fkoKSI{HURn75KZ3@QjfWHAq!@yxA#XYWdUNxX@)@c)LoRt40fKb^)n(ssuY@XXnz&Xo0A~Y#bAzt8F|e zb0BHW9}dK0@X+$nRKDkgdQ#&syZjI6JZc){LPr|N*vy^Ox6A9Rug0~k+$FxWQzcH_ z_?99Q+JzcVaGJ=8Q22Rzy?^=tbjEHvx#@}S$DGc@JSd;Z8Xpt>0cpl|FM_j>X8(0I z@UmVKyLnLLaeM40f4C^??@mgW2YH`g>deRtKUna3+WBvO@|5tZY-RIdZb&=l} z`Q0WNiy!JMjDnyt*4eK5Hw%iU>1y*$SSBm`FBR`wOe-M6`xdLWsfJ$trOt6qi~Of$ zbu~S}SYZ=otzh;k%Or8_{E*FdoG`&|x5>qwM49c{bJro8@ z`q@0#Wnl6`0fGV@Gw!21NjT|VG5Hi98|=nUmkp4^%W2oe=lr99=!x>A=Ig&xzc0-#Rz9S7OPYQ;?Z!5Y z{TtKLv(=unX9jyyc|PsJXDB*8em>p)Y_*%mw`&%$+&f>QEeWKl{3`vv2mqLo1W6y%uNJG`GcmRsuS3BBw(}SS%@_#c_Xo9N#6-l~pqQ0wxK(SZ9 zSt?a`>SuG3E)Sig`#+1`=*Q=CKiH4R_iSI}ex2*wUGU#vH$Nxu_Sy7q7%00V33#cc z6df^))oOgDqm=n-2~^#CrcxcJe(kI)LE_O-O1hqN+9!wlKHGs}`F%kfqVxMwXLwYp zh}48igg(ajS+)_XlJ`sOrBr`bv3M~!wXdn*iO{`FBsWY7$OX(;Yx|4%vb7TE6 ztL&1cy(MO$DlTl6dAD8iAmz_;qNVF4lsG$;ZZ~pZ`r?IN~O6zAkG0h#pP`EYW633zOedHV)d9D_LarcG%~ATx8Sa09o()uo`2 zVYSpIE3~9C8Y6psLcLIr0R)aCg(BR~k&f_WUQV}aX>GF140AY7 z&)FfGHW+sA*5cbG$jtAXigwl3Vc0XTt78#uO*0HWOY@5+m%(fX*ThP-fH=@zbmc0b z$nSS{9?-sMP)sSObG(2nR$CAl%1?>O1S@#Z*U8Wt15~8#k{6`bWM7TJt;nt1UOn7} zE(Lgt`i9Fre7{1uZ_#t%+}HWl{TuoIs~Se9|2(-ndi=Zj@#`w~8Wej&|EGrVF?9N` zm;L*zw~K+HRa`T$a*@ysZr9Z`pOZ_-}C#M+V3kVC++uD`@Q5T9968yoP~=e zBFnVV!x23AVJ2v*%Z>NwwO_u?*f(0 zrv*{AP(*v;sE?e_4w5i=5#EbKiVUku8CI_fR=|z}f(+u%=KB}({keS4f%SfWR`(oJ z@2&4&jqE(XVGe%CDf0(lYPS${U)H?C|f0;zg_v+8aNrO;4Q%(#LViV4C`_om*>96kkWVE>Q946K`t4@+Z7+^OI`eFP$+tXm%I*f<)}0UK6Ad7^&S4cI zhgPR*a;9?jTffq)c6raGA-9~?rB}nteWk#c+5#~*SBPcBXKi=AP?DED-BhDmKAQHz zI(KoxvQALk?d#n{!gdR*0Y?i3ZQLX2!DjD-q!!bpI$IoOfV1y*(3Mtan-PL`GTCv; z>hv@^x03E;0KN@oTIUwoVn$QQz5b*>9#M)E@Cdwfl;Q?mi{*uC?k@Ll`e7R zO{M@SDv|{bnHKOpPA8|o99%b5?_3oT!7RuzhdachnjiHSkei- zw6OlTkjwBjMwCMT7fa1hMh=D$k&#ydH3SE{^eN%f8%?-wa&#{8sIn5dN$REL38QBP zkf6jWIgSL{Y)s7LENp6Ui482FJt6z7(+dzQ0b6bK7hn0n5!NJ7O(C1fybUNFA6%uO z>nNsHX%*63~~Cgh?4|HY~PQb0CdfZrTg`w;#G{bE|h>-auyBH z@no?p;2uy2;otwXv?m?ZIRGkk=jR94(Hb28J7r~#|7KY^3<~44(wLPPp}(Sp=wxPt z-bvA0o{fzhYvJfQte(6d&X+)xK>o@Ln&uzKm8LJx6a`F#o#N4jxZo-Kp3Ug&Zd*l6 z?RBezg^V=n128bd=2Gc`P(n<+Ou)QJBXd4-v28Y4eh}SO-ZyxQdJf zKi8iPOaRCwJy0z~hnjA>1<&wEXL4r^VRfQy)&QfAU&UZy144v;XPK(=Of?w~E>M9n z_#^?kEltS8=am=nxSQ`=Zlm_8ikF`cdpWU;-)>c`LR_R1-cm7xakv^VQ# zvt@)2!b|{c%A&3h0%^dkLWf)l{epzfPzxRxni8o|A=ZNb-q^$a$pS%RRYkU>Y4V-SZ7 z!Y0>I1)LxUyr~26XN_&9Vamjg8&1PkdGlh*ELO6B*Iw6x^jyo5xk9*uUr^2T>R{7) zez?&-C2&k1RyTwG+k(s72$wNK;1EJF1cvxc!{zHB$7;1*#-f<`R`p*v27xiRoD2_G z*z^?8Flp)uAOqDkDFJUDjaAoJ&hRY^MMe|SOZ+7R`ubI5#f@S?gBvuTMn=-nGe8X4 z9frzWruKlj{tDYi3@YuUjy>f~M8ql~%n2p+fSNO!i>>wa5zNNx)AfSX?23AAl?5c6 zOxyKV9F>=*dImOU`KR;W0kr`wR;pg!kOpMIQxu-L+KMl6S4K%N7=vmw=T6_?eH8{s ztwj@S()-M@{F)xlu@USw@4@tPIys&(#-K-sXUCNrG{a|G-BCS65uE_oHd3d&~v({nGf`g*dX-B#l<#j)DMwynI zQ@LM@Gw0=hkV7+gn9}u%bR$?!`RNftIBH8Bh&8~PHn_ljt#AbQ^<5c_0DIySa4OBh z<~?dlSKE}g>Z@y%ed?>Ur<2?~B#ecSxjMflUDY``?D6EV#|Um-)>yV%p-Qg_;4t~e zJS|3W(VqN@qWCUeb7OP5-dY3l3r?Z@Z~+b`z--?}$^}3b5zE!GNvvcmQ0vvN!<4oP zvvqQ-B?Ua*bEogV*j4|uKge`_~Yizw(iU&a-4 zztaEGZn;Y6OK_o3)x=aGiuA*-~h;EUmFz8hxy6^)bl|zgV&l3xy0`1$vVA zq~Z01otK|Fb?VX=t;r0X2@5eg@rY70V-6<+x3CUr3jlAX99&_1Q-6nHJYEAW^-H}% zRPMg-kwt8b7+51l(CyL14@(&ig;i4{04!vklc8X!wG+nBNBEfUhK@aySaw1tD!{6? zY5Jr4FP_HFN51jibo-g=&UAa)edbxb0(bDsvpcxiJsgdDG)iW|AB*YAD;C(QVUcAUz$VolC6h{rlcR` zXo`B0lSJ(X-~rJm+2y2{if#PaB#;>#&90TnU>H`86kiAyAS6rLD~JKeeJHhJ2Evwh zD_;cx1oI^cw_A&Cl1gw_FfOZVM;{#NrRKt_j2%5ep}70G zxO+fV8>tOqaeqZjaH!$(#-S$gN-U7aIpXEWsv>flbL!X)5iV$6*Qk&?ypp;P4rr+oQQ4 zoX}(CvTznpp^iwf+^WCI{LCE(OO}W|NOzGAkTK=VQ=`Jep#*GcMn@K|RPdNL1g()6 zcYJFIp_)W+QnH+hz$S&Gp@>zJ0;CX(iv`JO82V4@&j;>jbSkO$yaMs9d63x9BlSaA z^b&v7W*AEvg_U;R;Qi(=j&HPLd4Y>+yB!?Y@O0?pL}QlDRATd#xWvnJP1rn45JRr6 z5348Z@G^GHyr!xMLZ`W#Iu6sxb_~kQ_QiHcv`lUh1nhsDH5+^#j1O%z4W!E~_Mgph zL!@=C$#yF{G_hU_w=#U|<@l62pXvX5AOI>!ZJPC*p|*Nm#gKABWvn0$JX@iC;%pN- zX2n~&S9Tq;aL@3BzqX!Tf@WFiF`<$`Z&GD7jE`g5%8XE2%$fr z2b{;%0z8?Q5tkcO+8V&HBQGOuNh1>pU)XWR!aBhVH=3L&3rD2}H>pEf(F50lk{1s9 zIUYAfe1Wua$tJFFI}9?swX97zQEjJCfX5aGrUlkON{zw*(Dwkq%>3j-nU<5tu`<09 zLnNvL!;~994ooaYeV~@EVzz02hN)UH$x3PgtR{ zjAG{7T5P^f;;@wQA=$ne+q5yE#n3eM#!bGph&ByIcRc&ijg}b7p5$lXnLV0=DS_WI zGvudaH2V|E7S>sa{BQ#O5n#ats9(rs+Vp``Lb5O>sXsabu1S)1Igrl0NwxT$p5bP| zz&CFK;;I;oG#iCRL$TDdb1w$}tXD6q|5*!DKV^D+_j9e$AgY#ZI z-4RUvOO&Hv)YzQlq=-BH0G*-l4@H{BgOR22VaxY69fOJbu~55?0b7*4 zYxOn%6xxlhh5Sv#KhmO>PFN`7jf52})boeNKIVKUGO%DE3y;>n@C&lc7V5csthuu~ z()<4|)HC~*K9=oR=oO}tJ+M5JyYM}; z(5^fkxKKEdnLnsJ4`Z3rIS~G+JJ*^!w-z_hGk6W&6T2p)dX3qxYB>W9<7dvI+XNp3 zBLv4Kt&=1ti81(1M5%PG#em`lGc`4MVk7Z{Kr;)9e^tN>zia7?q+6ba3T2%A^5cR^8~IM1z2i;)`?d zcF=4dXk{w_RbidbkDNfP4Ge*kck`#f48{CdBy+*S8#qiiejxd<=;YzqF&&iE43Q9H zUvb6=xo(X)W+Ev(hf)!`Yjp&-!GqqBDrxcax;K)ny>vurk!XVLyku7FjX6IEf;*S8$!&&~RC({WQ2oTTDTfxf4%%e*x#GO1Cw7B?9P%-1Y^w_w_ulLAq- z9GSJwFE6iFu}iRppErl!#4)1UoW`1GWIpgkte~-$tQ^Sb!3AQ40Gjdj&7CxW*WKK? z0niFp!NlE)Zi+XCDaB$scF&9016aDfwVo!io*=G_$=3)fszHF^W^)yx2PCEX@o2Rj zBU6&9r%f%mnNQc`$yWll3W4uh&DK*7!fi+H3|c~NVKPG}OK~LtG$832T=Ikg*PAnP z)i~!n=Bqifb4_M+fP54GU^rqdwja1HWschZ+N#>d>L;WFXBAbPE2=^RX9!}R*?jsR zcMCkIfh5>r$QpO%7ddhc>=DR;*)_H^A^kiOSv=;6j=HyjEFOHb4c$ z0yi6*CAa}22-YEbTk}a%wp~`pL^%k=EZD+mqh%l~LpO#=*BPRz{R6C^kd91C6^8h1 z!>Cl!V98L;kO|$r|COylhMaokc3s*N39Q6C^ySGbKM6tUE_=97&7*zl{XoCd5t4yQQ5dnq4if3h* zbI58$(ErwA5W(GyW})P+gOY<(W&6FlCnUqp8{tg~UP|KG+f%dGZNoOm4IzYN0i!^Y zSS`QEI43-`8Y7DRT6W(IN9L_n9q~43VYAF9f|Iq~bet6<$XiE6y+vhvFQKi#1qnL% zB7}{q7vKe+Os%G&lIW8mfy^pkww8_T{^;6_5>Sk8=IAj)2Ha>p_!p>wkZM5KNVJ9{ zZEERkyE#&rqhU;7(a;~;aO_xgq8|H5nmZxc9i*<#VDzTBoLd40&?roxBl8Fmxdx>) zvaB>nS~K*dGtfZyxMr#N_R&tl00*0xLtJ2j${Z&`Zdw%8;ZEV=`V2Ds7$bZ_7G%&a zF*_6#Kn0=#00*X;O+^EP6xB=fs9wFsm1aU7MJ#o}SPf2-i2lt56B5b@T@dd(8K^ZL zv%o|NYd|*RV=x!o5bm&OjW~En0?SG>H=K>2b;EGL7EZ?GkF*@d43{wmX&^p_5_pIz zBc3kDsW@8W43(uKb|n;YNE5(-r1bH+;8EFQ2=CG1+C4lUavo-y2%bAHsz3?0c0)It zx+S2b`p761W*PggU#)JSIjWLWl8czwu}B@QXoN$r*N+xtc=M8x z!(PCtN4t<{uOk7e*u3RU4?!r;ix_*M=GS#+gim>Thg>Vo^uRvR4@9CFv;0gm)`TTa zr9%6gumXU_RZvz0EZ(B#V>PZ*^O3wxk^+gQ7#IeLSc#azdV>oE-)2+za;L%!P(Ji@ zm;vyUb!Nb9m;lbuFIo)}AT;Q&^o5#zwwSF}D{n#JL5+q8Ll0YAV+HQf#H6eH|2x51 zLOs_CBG+yhm$!Mu0rL$dbT`WC)KDHNH%psX=jwC2-h`uBBcA3r8anPz3(63p8iFjwFMEX;L#J6{YCl+_Hmr#DUT(dT?gd z3lSdG(2$0>5GGd0ra72`PXDYBi30})=TTfpr#BG5}e(S8=R#T8r zvxf~SO%D+LPE84{4A%k~VUn+MwopRSbsA2zU8UJZF(Ysgc#GW3uqJB89JrEMNjtVk ziHO-kon)t@jLVZ8(7CvR1?MkhZ4$_rlm{s6Nv_TU4m1R%mWjCahg6J$Yqle0X{g7k24{f(le&W`Z_S-x;{oCbIU-4)7;<&SWy>F<*xdSHp}6 z4g?aS%j!WE$i`ngQqFA`uOf^Bi;`6rlrY^;0+VD^S(xjT1?})cK}sPOzDd-MZ6iT> zVzN?AD8geGpT9K17tCQ#Y$ znMKYzV6~)CweVrWn49R3+9O*8vTtRf8ra9Ag_SJA5bWiHEI!MOXw!7ItF|?#z<> zFT|J?uH;&c1@#!)n~jc8AT1yaxDJmEJ^^@Iifm534P~~C1Q0Q2n;|J4QfI}mp%IV~ zW`?;0-l*%+W~M@wRa^zl%p8&<8bp5xOL3ZJkFD#%^ynrF6=#!eH0sNu?|(8}0_nQY zd6nHt0&6yLnGA-ELE_mDM9kA~M_Z%tAUv*UX%R2k`5|#?Z43yfo6T0;D6g&r6$;GQ zoYDYL@4`P3w9V%YyPlEa7{Wj>O#`Zx?Ja{|03Jo;(d!w3Ou15;jgSQas>n~6R(iyd zEGLP9H{6#*$~E~Aa@9$16(MsiCk1Gob0L(#l&Sg%IUWT}1Y%z%QX+#c_eMCc;S>r9 z2f3$h{V(iB`cU{lHRW$~5WRAnKoj~k+8?k~L^s&R(I#C`=o1~r#qVXtN5^7mvhfAS zq$_zZXd|tnNr-X=xdl?NA_Ls`A~in-04$jCJByTxTZ>Db0j@;zRyassF&uh9A3*#p z6k#N2FCCGg87`!uOP&PJiZLq%?R&}@RZWdq+z5QMb5w3X9;M8-XjzGg$WolE6yfF0 z&SfV56b7NLKS83?(;Y(?6G9qFt+a&k4C=b*pS@1yo@R|{l-I_0g*i@Dd+a!w%H zx_qF>|AoF1{`AEM_jKNw-VQ__NH_WK+w@m!M5KP;zz59JEQSoPkUxzO#&i?Hm>vmX zWbI8M3}(H=IS$8qw0>?%`K}PR=be_p6!H&e>dltBRYemM_f#7n!9j|d{gvPC*XO>% z3d==@Sy0y5A!0DlPYS<0lO&@&&BYRtYr!*ZTb<}K%7-2KTDFmocE?6EEevqH1L2(y z$r&J1UamYd(X0WB=_mruueoWKC!*VwYTQ_>ysj3-YbYWX0I{QMX~=U&SXv_4z}K>qEEIXO6_b9ez@*d^9`^|7{9TT` zCyME?_wuTLh&cOqO*EWR-_`RC8yJBngTPas3`Ih&%`;&pXsAJYh(0(DKSedw2pzf7 zAvT>Cg^bzLx!0@A@$d-V^8XtEPRhhchi9ddEdfCt+2LR}!FY+G2T*wd3Bc2FxG1Iy zlv)|?D>;P{&y*D5cR8~ldC&deK>OhKv(TK*j^K;kPsPIPeSVZ~*P_3IguseaL)^xT ze*9AujF9|P|I1tRSn~iHj!Z}A=+*-xJ@T?x28eTfXXhBwl%IQ%I^qo^q%g=}4$P-k zNw6&9GrP&U1g!>qH48%6ro1;k53sx!1Pp#F*M@oVjKI<^9~|rkXgnfuv-9)H>Qnx~ z31Q5Nv#uP(+6X5fDh{fjMG9tQ-|_mK;N_aYB5(7~ioSo&TQSHo1_Br1;XskqWfs;z0jhGkOeqElf5=12gfDsG+K|B{l$ zQTDTIiiT1llL|W4hn%p3)5gp0!FgSH_XOz0358baz)!Xi$jfFG5Gq(bYgXc9`>?pJ z+mJ82`wW?^>BuirRZegHm!y2KRR85?Ssz2tVw^&XDu#7l-Ju*?){AQGC@Ht;4%U&9 zpsEg*e0GPDbInkKV})8|`zhpo$U0H5Ni>$mhJl_RR;_=6QAsJ9mr}&6kES2A6(9`Q z-8j&{Mfm>5TdgQ4Gd%R3Spm^J#1^wpgtBWAdIlksMiLo9GiGC$*f3+oH)aV-pk2vK z2$x|-dV$8Vff3VE0YZSriakC-=$l~LVHH{9nUyt3M|sg$lTvQhT9cM=^YtlCH8AQi z6*2?YVbiD%iZKhGGF{aUITqo7!4G34G6Gn9SIJqSkHHL$FiM}6iBFy;F~xZ@jz^ZC zUl%%K_WXuoE6?vRT@lY0Clndkly7__D+c5b<*TJj=W0TVN^)ZT3LAr#+9Gmo=JnIc z_X8J?@H?y^?FJK1(`9D)#j^k8EQ4w@AUCCHaey?b1R*2&&{eLG6gU*PR<$b$$O#e~ zl5GP&*zA3E8Tqy}{4$*E*YTy;sj|UfRYeQ2C6Ds~2@54D?q=~N8?~^W8K{jikrBxY z+6jZTRzn$WBmnxC^g#b=sXRwa+|>Wix2L!3kC$=y6)VsD`}O>*SnEGyqgpEK#G7;Z zm;F4VGX1j2L)IG1HvmzuexY-mzc2BZm@zDjXa)Ct&R;&(Q_xR~au}J+Dv2fUrqQUZ z|HEz}XwhcEw>*Py#rG_4y_@Z;Y_BVTp|*lbr84ALc^>Q`3FS_`OS{$#mRi180wU8U z^Za@C0io?|S|BzWQC%JRRL*w)oqZpqmy{X`_Uh=!%XBmyX^^id9yBSE(n)7Vhs@Vr z&p=MQY-Yy%HI$o6Q|c`L@6D`E*Sp2)*7lZJApPg^fA=JdEPj*Sp4hHKN}7;{h_|`Y za1n_@5tiRKOSICBo5|5@5NB`aL1}lgB<1W*_Qig76? znV)4L$_CZb_bGom9hCGToKG9r@xLzE4_G^TP~xugNo{0L$&c#i&f+8dly{Yn@&S2k z55?WjMUiJ*^v>ex{K+Ts?}HT9qLzPfJIi5ws^H`L?oJjS^Gp9f$u9%=TCoZ$`XC7# z!y8c1WZD(%3wtj;=KubGwOb68WM`hS-l6k8=BC*HB-LLc|LJUpQA@qWI2n5%(g#gs z#v_h_ACR)4y0sg)p0l-=W|wo}?j5{a-=ZG&e}haAy<{gky%gNArqwrB1^iZ-@|2I?O+h7;pvXO*qjN{0u=il$hHHvJ$=s*4cxT6Ou=ialI3>{@FI3@V3xN^4!RK#h% z1Ch0B`<3Rx4%ALeO^7~>&yy(NyZWEd(f~C)&LY(CeIZ@%EOu(w9Jm|bu`~$LKOB@` z$tVU!h68dmq`m!L-x_V}jcl88Rag>lys7-MTdBL+i?=K?to{?mC|>e?2H71QWau2t z5Z8|ea5JC{H+RmJ)g3WLH6X|iRt$Gvq3uxSMG@{UX+Rg-MK{lD&xkWmv6cJSvdc5g z220-G1&gK}{4L2RT!P-Wjp`?BcEoeq;+J;9g$W8SMI7 zQ9U?U>F*0~&quL5d4!rTeVM3>KhK|_LDc1AgIo0H)`DX`ghrueUbW6IGJ3cW;dV~Ge!&ml~KOyMv??V*QLRLNl zbg=`J_Q-_if%mO1ka?@MV01`3jN_QPx${P>lR8`NdU~*AKLDzk!a8g*W$smpf?lci zNQKzt|NaPlRQLxJPmo-%VIJ^+MLXx&_N>~h?YKD<0w__4ttZkH$#QUl{29j?@a-aP zOh+3q&I5|{W&(62^1t$l(T{9N5du4)O(>QtRF~Wy$*9->@+{8tN6n6?JNUQu zq|N8gpcP{~9DjMBz2tCt@PYZib5j|BmI^LMDDepGT4Q6T&R2WTs`s!F-Pvl-nTtP- zj?rpD&BYhfp1{*Ze0Xe0kG(K0l+^*e^Xzycw;)ud6C(*i;~iLDuZVd5I!q(mV&=^S z;PgK13(h5?e}TE(dvWk??!Lvcqqp;m7Btw&FX#SkgR$_lIgn>?w`cN)YH#!`P02?5 zbm+N$XVl16yi+!LAm%gvZiEEL{b+sDiA9s0M8q5B3B|4SqW|x7gx?Q|f#}wZ1Z?a7 zBiOfhVf0BZ)ImYIu3FjeM#(^#HFln;4(;#!1e0_KR9z)+Pa%}_w?u;tKC~z$Dq$7I zbbYPTO3Sn#{Q@#Li(PXOPny;4RPzu@Ih*c|hjg~7DZQIg?QK;a4`C>fV6N)MekbW& z;Awel@r1@)T7X)!U{7;eXD-59!+0b+gv=@v(v`YA(%V3rmHz+55y!}8jhu7=6Dcbn zR<$~iDJ-m>jNOh`5-?LJ6KG5YvJC!z3^xPeP@$>OY9LN83lgLS78Yyuwa4one~(iF zaN#kb;$>vQ21c*1wXH3G51VV?ZbI$zG1Aw{{l(x=$oNYo6|vw< z9pTK_O8{eM=SyY%ue<$UQ?GS2-w1HzGvKMxg)!YsdM+Q|RvR4y;Q-;)q!o$swJ8<% zB>P1wazo1C%B=6oL-?HTQtbB+^xXjdbJ3~<$zY7%^>^99PVR}mA_ zW^R_3&oVLA(|Evnr$&>`3dz8r8Ek-m_jpZHTpwA~Do~wU9>dhRGJLX3dz!oT0EDaU zc!&uP4LmqGyODw`Y3iQE&kYWzLrVJ!d5{kOBtu^L46m<%2VQ)x0caFs^}oq8HXSqe zA^=pf`8la1I4Pw2=)3^f(l6foh|q+SkQk>J@$SwCbcD@H9AQI=$1R+DpoXdrD1p^l zQlP$0d$Bp%F@sbso=NY7g+Y=K6f#WCR7-oc6|m$)Hs4}G`TG)j)1O=SWiq5Zeb^fh z3hn7xX2n0mtKl-8=jBOh-+XXUj(eajbDUZ0qv_LaZC`?+#pz?BcXn*zBAhIC z{F@q><-tayOM6%j=g=T8Mrzf%p~nUrsd1yEtri^}LG+*n=zNc;(Z|e)yzqZ(#jJU> zgc6O42(b0|0NiG(LhivA+U<~qREXtm3{TQIj}X(oI_g6mkbmi@k4wwGZ7^5^OdHu9 zAWy9k&a>2>+d^+GVoNCoPYVamT{^AnXMDYUT4OlD8I4u8x9RB8FqUSe=>d}JQGZ0` z%#36*B%s+2=f>bDPiKWm^pL=rRTeHk=*WRw9mIo0aG-z;xA@9#3Eu<4rm9!Yq?z+5 zf79pLkoB&#>+G2`>8@vG+G=Po0x!yPGmWY<(xY%Qe6Jow4&Jas)Y7nib*KsDzk-z* z_pqap4wdJ5kvp^$9YPb84+8e|2?>o$n6y)$OS^mklxPR&3){j8d1(KR$KkR>!{l=e zR(7An2_O+a#!ULZmvAJAZD14N!8h9wTSeQGJZ6GoO-t&FJ%^*x0?BPt6LAXCSW(PI zuxl_CszI7VbL@!i#i1I2$y@obk94Q@a-KA=WK?p?tZVTcCk)`FAZItyOWmRIDg@F` zGx81FK_+NF5hq1O5U|BG zhzj6^%mRy2a};qXkrzU{ewq^zZ_zNeMD7av-fA2zN`IX#HF0)Nkb|YgY)C2k(tnTKD++R&q9;{- zPR(Ez%sg;LTr~TDizo~btMAdX7caDP!$Dy7+OSAs1d6^CpdfQJpSint?RxoLVk>lW zjYYxa%)Z4wxCl$;L_GfEOq&lb_Wu;mH{%d9jM{klEGM;|zoFaK^`UVI5SB~GUfP>t1&|2UiQK@ev#*8=y(;Hzbn#Rm@*!+4IBb<`4 zaac2no&{fC(9)M(80MLUR9BPQ0|@z<(kGy2@V7jPMe)H|`L`Q$AG~0b?Et{1o92$lmoN})D10u2}1>{wf|ckjJY#jJQ8R!m*Z z9lUq6VkfMK`7(aSI%R(3DcQ)*LzprB%X9S7qhne)%FSV<1NQdW5F5_@7tfv!%o@(~ zgPO`)i+hRj3u}~QBGBUX2DsJLG+8xll!sRjr(j7Xjxj|I_+?102Yo%Y$|PJF`VVTl zgq$2s|5o^*p^4d*8N2{~2;L8ZGI`dn{3Qg|e%W%F3_qbr@bnS>ZVe5LzCn5+ze$FX z0b@g|LI0}*{k7~u1`eCmGgXM5x|7*}R>z_^z(`3Lk-QaS3U4_!*pny+rtk`fYnoic zX^&+6fH%?)8sE4pU_L}`4dWHk%JLG|((VPBL&3dH!Aj&of~}qy^t0qJS6fK3B48m* zm;;1L;P9w5*JuM^kp{e;OF*oAIO;`cS<{ho&YJW0Fq&Qa`hU2ILFEc!x>%3sJF>p)Cb>WP8Lh~?xSqIZMRu~SQD`FT0JRp-qAdHp+G z=b=Dud2>Tm^ZZz~liAPHb#s$Bg!Hy`^CAvl8+HD;zWRs8gEb(K_#1(#BK9^G10c%w zwn~YrAp9Ud$Q3;){rQT6z9RT@R>=f|wYUuhL)omrQ|A1Bw#*hDOdRn}bCNzsNdiIa zcpnOF(=xe=!oXo)N=>O||C|MTR9)EHkC)w~cXOy$J{N^SDk_eOKs6p;w80 zF8BXpM=1C7gi6uNFJZWm5`tzT`jG^;7p4!Q*4?87SQ3}ZWUC>QxjGc){X9~@6 zPM;uYrd0bE2fHlkot1)}QTV@|nu#_Y40+LTuTLHL*85)F@elv(Uuc3`#Nq1W`9y?`WE)SbhX)iHmA27YeJ{^kov=f=q2))^H2DaD zXVt`OeSSbcv?zBON*~}M1|)k=%GFh?7%eDT(V2L8Mv7%g5sV0))7pieGX8?L zG!$v&M=eZ-;khA8nw0)0Q6WA8iK;&`(CCkC%0mGx(^cflRC48f_Wi~#`S{S3LkATY zU=0!wEQQrMvbt%6$sv3UgB7NOs%{{SzPnOcREWzI;xeYgsNevGA}9-dTpx~l-_A=x z)0CsWOHIJ`%b3lG=g|-bN7Kr^a0S_(s0Bx4k`zp!H7*-{GS&4^Ii1?{4@Zi+8S1l) z9Xa>c5Fl7}1OLlEJx<~S$D6?DKQiKHmtzrv29f9&0`;(14k{;XiFv{i|GB|Rn)>YE zu*rWATwt&StrDC_hku-45Tr83$VD-j9{{+Iu|+q2A43MGm%w0Kk?=4)ZDe29DQ7G_ zxjVW%bnn!KC`N9b&(Ox9_sLi=N)SEpWPvC&71DevPZohZ5deQ2CBrfPh0jq(`lToP z&vT}TFk=SWYmZM@5&6Z2uE4N$4mHld>>k3DvU?~^>u6a`)*z2WfbvXg0=00YBn6t^ zGh~u5Euga;E`$vD#gRjJ0~VoNMj#qqMr$2&XolgUD~b<{Eek(lPl*!OTeu?i0B($^ zf_&}t=YxwPi+hJB4MSpD+i2W3C2}`XyxMbFJ>0`tG3;1JIESmc`w$++hetjPqTw@) za@dhLL({jPl8EGqb}w`y(oBf&##y7j26_;qp=oWe1E>Wg;8XRfC(gBjos4+~hwvZi zH$F$rAb(;8RizFkzZ%0W9NUXlvAl~RFaQ4C974(tytr97MilAt>}hSNhrEy^hUHkH z$vgyAQ!t}S{+n8UK3@&JQj?;)&^ohcLtN>XwY5IPkKe=kvN!-VU#;A0m4m|@)VJha z1GaTe)&*3g7#HkgyWWs%tDj|N{_A)_Aew2Nuz6Bc(Qxp<2)&h&BR+88h!-*A$x}3mvC0}h*kM8NQGVH&Kfl` zK_$J#P<`qRA6~ek17uqU+mlr3$0sB=YbaVzgi{5?X-)#=6Fm^+i7F%^rkYQvJAZP8 zhJw7p)pn)6(T_E)jCPDw56E|UqC8V@uQd$OF;ybpUdn`4M`)`5|L&+owz`wxi7*M> zBFrDrAjg7~(6zmus3%>jhBfvelW|+#I5{+7a+sPM5@QgHQeuofjdV~vz`K`FKf%K> zpr;J=F`Qbm7os0zZ-ZeQ+{xTF80}EKSgL5N5!v$RE2#ro9w+-(*$FUP2-{KML*SsO zaP*UU;vv}dEE<3criJ5xintxUjyz?@8#AL+_p!D$7zDg`qZ0=PyG|Ay94t)YC9(%4L89hm5 z!Cf-R0Oc%!0fiYTc%uJkJ;yyjW!Q_I)iF0&vGXF%R$8s5&!0sBluiX~^NB;$y;DL{9Y&Q?<0lUG|A-wwq9!NkxBVtf|NL1qDf+(7wOtdrfu9NY zvwnnBSc6|7ClrdyIz;v{t-;pylF`T{wqmBz90=nGsbts^?iUJ{8I0tQJ8M5zTE zoVWMqr6&yj64GRyuDhl}7>i?{!r3*I3*_!MT!H?nZb6H|4to#MzKpFWsp})<@iEDg z)in+h8=4BeF{$u0NIXsZICEJRh&rS(RfX!Hv+f#sG0vMQ4m0Pk%mLuuM!67!VC2-x zL~WWz(bLv6sx3EZG%FX!0Os^P+N&?f3&}5VHjNVDP+zbD#-U~$p)|{1GzE6(eIr9a z7$VXOkCk!(^q)Z-6cGV$3GX$|ARo$+(N1Y75pXgT8kPEJhl9C%X@<_6Z}De3>arMmQ$pH)}LMgSK;Wi))m z;%Xbn2WGKq4*gj!!3?@;!C{Ueq^iDLp8fOq$Dg3vyk5Y{s%&@etd4vT03a5c0Ta_X z{j4&eq%aa|J9|-XOWvN^2a=_wvl1+_OL^ySv@S~(0Id8ih5V5{xNK3)z0&g*_zbh; zjxK;|us9G!TpENB&-P|n_Dc<}76y~Rxrb~}Up=&^^Wpu4cUfVqpcRr!*-{)4Vn}*eOo`?$J zbTKdL9_kH04+um$Dz9k>c}L$K2S0WwWdMlVQ=sw9%g`^ zbBb2Ro}jgpcT1H;>yUx?>d+3m+zoqhtT%X9la%R0pV@YO4EI-VP3S>@4HozMkLb_4 z`rlr1#HO@)b2mQReLMmoYQp*Gf|xcwCS}8Zk~bQZYMlS%-qkTeE(J7*SC?%i=MHOcnPvFEpkPEfy@YIj%iw>!(gf_F$BS&)?jR%jA~q~ zJ?&3Ae4-Y0CdlxK+SK7OEkY{jJV!&Evn$CI?%Zs3hWnNYb+ZO6icPns1dYgquo+;V*^+<~1gA7M+sN zl9z}llCIflTidp9KeX~k<)z$fhTslj0rxW0gNz9$rxEQEU|0jw%3Z_43Ghygv_Rl(Jzi*IX01>aelM0{A|Y* z(RjQ<6b|kZ=!gHm1&`%iOe=p|^CH(zV8swkrQWfGcLcd{6WLhAO~m|7VdcRZ%vV}} zH$Dnrmz5yAs_h~Q9#=ClC*td*X0Q*)&_y;CXdkEuq!je$2U=I47L82{>l6rN8v!yZ z*eDUH-U@`lVN=T?c_ahZ4=W!8n~FS#%4bN}aVzyS`Bl6~cOmXjyasoXR^sIvAc$;8 zh)n`m`;RCKW^@{dvQ9W4cY;n-A~6L9$f7u(I5tJ4aE(zO&jVF8%EOmh9_~C~czCsR z-@)oyizaOuPv1a~YlYCU9>!xs7u++r%ZDGR%Ros&2pSG3;R2GQ6)o!{@G@Nq23i)W zq3+T$4+S5xC((KiTN#KTx1Si?%mS-xPaGU*0o1JU@DrWEo%(&cGq@d?z;Qxdzmp^! z@FU%>ToL#ZqrIW-uGSwr;yy3v0Wn$o6i^koTf;)%n|<2OM9wkMzZ+Qj~te9$*3765gR-NGQxee^N#K}JG$K2IlQNHIIfPdlwRTB+5TrI_{ptC zZ9z~vxEZhf@d17fyKzA<$6W;`IE@t!eq_&oQ48M8%rsL{6SDh&v^F9x;2TCv#(CK_ zNQ3O`z{hfoSCkS@;_iU%F34+<^gxCC7pi;Y#9&m!ztz&6#S^^L(t3K*XyE@VCu@K^ z_$gP`hqMBW5Mzer5P(S~ulD{)v|&oi`Z@{{r8=0KqO zi8G0fpb;ivdku`Tr(jhwXP)e!)9?$nw+{ZHP62C_Dl8h}FhXE>pzwe1XHg3pwe;fy zxBQn|fA63D#moCx_os}@B^|g4Pd*3#@DFQCmV{>#&x1`|mA)#WDK;|G4&~m@4B6Cq zY^Yzfh9~NA_c1x_ypYSICLd^U6?MzPb?z&St6}!$UdmbnDh3^Y5sCVwO54R&PBQR$ zIjNL4t5ERlLCTziJt}0z>iPbgONy%;_Ayx;X@z^#NyJghq|=CXPPHSR)f`GAyT8LO zwUsRyb)3&J;!Jyp_5bY>tbx^^Mhzo|(1QBo9kJP(?HDv2pb=+XiIj2x^jYcbyXgEcu^by z#-)D*_jklR-N2aP)r_08v9v?MgLyW_;vZ#hfT_nRk7$#Ks4PbDYTe&7=IZEm&!2E$EsYcZKQ=XOKDZwRR2y{x$J1C>UTtb z7Ly6FFtp<+l-*M5g(egR2G_#ze9}3H7;P+akuilAPCt!SO<7_8FG9o>tq=1mdG)l*upvqKP7 zY=kr{g@}h&;l9#=OUk#fM@rq9IjZj1zs27s{a9WToficQ{A6h*A*fwHh;q7^{TNGaO7EMkfX-=T)CHY=PevNRK~kRRvXOGcavYF3uJz4#~JG zz$Q71;^{I?pw6I_ti$Bky^`IvjZDG(6B0^u&M|R4)b-a(|vHRd-qG%+`wi0SqP0AMeL~5AOhY z06_o}&OL2 z+W&wUzI*TavG>|*uU~uZwbsT}9!_3axbqv}s*!(_tHux7aZ0AY){;_Arg?0B8!19; zG|Ly5EgXxoAKu5TWt1XTNEc!9Wm!(F1365pc)>?W_AbkQ+y=dPOkNHf_)JDb`BBkA zZEB;0Y2j-JX4=LgxIqPSC4?kXZS{Dduz>Xe#--#^BLJ=zgYJeJuQ4Osrdh~@e`X={ zDn^y?Z-j%pZE8SGI5eUGpkhNft6lzsZI_zRp=p?f zAO;@5Yl`T>N&3z3TI@~zqNk8OP(Y*fWWfvVckn77WK(<5)md9L&Yatqb7%>+Vsde= zNQPaLp*e(t73)tmKzL29_(4a+`jPixiSpJMauYi({>RQ8zJsHXNJEKrc0-pEafO)G z8kA~SSH_{bhi`}K_ulI|r4$#OrMW?e=9&hoFq5%Sg62T32vStX>8GWru7KVk5I^w& zOX;%-FY$7QZfD9(cu5|(TtG{D9ZsW`1Uqx4L%Xx+)sDHz_lzF|3b@L&>3a1lyQB0? zMTO86&S<7531qFO;PxO4>D7iHf|=y22y)|FLv9o=X~>OgJ#Z;6NsO87Aa9t=C5X;K zVIRmeD?xgjkx1QxL~^Rwq44>zBttRN1#AuAi{)E16N1HY4Pkv) zL!OrI)3U8nRVV2~h%i(PUmIrvTRf-fR;mxXo1Lw)hkry+Ii!epx(<>!9T-ZWc2bCb zRz3k}ILa$3H%>hwa({%)ANGITylbmGGxaFqr^BvT!6(u25n~&$L=GS9-FScOTh0ii z>%7-)*L2=f2&H%I!`*#k*4qw8RP$&|=wcaeAo3IECVtrE@WZmBs8GZF`igSf+i7W@ zhvZy`L+;_QBp>~h=GNQ(Dj<~B$CB3aluA~ova!Ww85JT$VSK|mB0Q#fWlPR{=nZ_* zKjsN`M3jM(3tZ?%6~|F=)ef>y#NOAJy%Xh5AKcVwP_dmDj%u9{#a(6+sEF_RoQmo*$viAxP?-2v00VAtEhd2NfC1b3 z40<_-RpD>ovOEWxrNg!_IprzEzP+cmQx0-PHsE()0l6gYF7B?ha{`_CWkuJeDbN(% zfn6tbTKtK@lWn<$-6?hyG~@DnpF8rY_k8c-|Ng``aVt1wnI<|MWEFUi7I<=(>K*l= z6QLD2Hgd{T`N)LNE(^VuJAquvIB`-z5MzS4Z_lRN^d%Vmp9< zekiKrHQRxFYo`dG8L~jzopfI=Q{<1oo>MHf*Xcc@2Zz+K*$bSw&qTvy+!-eT&7#`& zrUH-GVH2ozmoT(b&r@VnJ~S`BY)_>Z4Um{n)$;vJ+or;2c}Z?Ku*qpK^2AADKcje| zHC;~rI0Z#dZW6(S0}ij;t@@?lK-_VS2hCS9SrTcD5|IG_2ZEXVb(LFA0#Q`P5OmCn zrkp~v9WAfPjg20$S`vN@A#2vie?R6JB);H?)5`GWp1V-VTA@#=U+S0xpx7TwnP%a5 zxmGnW#E%5=D&}0ZC7x3-@U2fIDUq*-N3o_59dp3AV!sAKcvOgs--fQSZXJ8ahumxijDi%;?V% zZln|&yBgA)anR;WGjt>4NU@u0ma{lvTDHu8fjPSG#F$N0a!<vn_4Q?OFX-rSAl@e3v$6Z*rr#gu zCwMQr!~lsiIZPzW*AvCRAx7lBnB)`X3SKp_7-%P%HKlpO7`lM{drWHw`5`1g2y_z> z4hUO;^u#q1MH&A%)Q(@@fwZ`o3L)}X;cllk887QOO{>N&aex$F3@N;TVG*4t0|(ab zT(aaqZpe@U2JYxXV6tPaZ1e=7zKNlfu}Sl`E93)5ZEGIhR$dwIyjV!Et;w=qQUiJJ z{dV4I4Ie;ypNi1S;K52Lp53h`+uO3OWMG9oRLtIv)q+qh%P0&a8`P5Jnh|eEwH74! z;o_4$xsf$pe580F+U)XFq&!Eqh{ zk|I4S*_dY8R2Ca3_(qFbC7*UFEoL8jo~u96{F;DHUOEi|^%hS$KR<}X(c@=&p<5Ir z{jE&NoU!90>XjaW#T;G!v{5g~djfxv;znuhrXwrolOv?V~~C^4y)u}?fr^k^HG z1&6eSjP6PmI(YX}J+<(pf{1W%CVqPP`Nt#H_1Nj@H9}YTxmcXpEucxJ<`u<$mGjfY zX_sP%Z7SW?2(*JW7Zqpb%A4SJZ!a-oq*^q7VuX~`2hPoSk0AOucp>WoQ<*~6UhGaG21jH5Wq5`ySgAhaW6CL#xPbZUVkL2ieHX0*HB^!BP07>A*Bh$2dnL|@Xt6mdD*)+p0T77niD`Q-GQ7Af zI}WtzQ!SZ#iC56WBJNxxOlNV2-*aPdFyMp~h*PqM?nCSGkedYsau&CsZPM^(h~N~##Jx!WyI zcIQ5>H`~Df;@Z3R(GqPPCA&jK978SDgB$me`7pNE8;USBraDT9d{icr;#m?2VRo&T zyF|@bme*-VhCRM3%OenBU+W%aUx-YvS3wDVxk0LxGY)bpw02*IVi$Sw?HFdfl73xF zgM63z%XF3YSZ>Fm*5(6tZ=`y0wcTi^oSVEV;8~!^@7r&??gY5RC?W@0kKIJ`KzLPo zEf6xJqIuor-rz=;LJ&~2AUjs?htAXUwrtHVB_%afbBV>kJRet3aBGdvxA9q)J1)-W z311`P%*T}Lf$OizGfQEtYXp;4^yv67=NrFgt2&U;qA+MqISkr=RvH6)^bd!HYxjZh z&64kZU>UqH1Ej+9LZc$Y8p^^}L4V(cq$*}tk>-s{#Z(ULDnP(8nAGL`WCY+`8l$Vuq|B_i zpizm(lnG(vqX$ypv*&=ABF_P9%CM@`Ah8M!Q!%Qu5I=R(XWF&49_~(oxKBm?8bgmtElVc%9#)3OFg0fa|AvQs(WHoo@7MC***+ zV_slQV|7`+$1A|A*ZhuqIpVs2Zrd1os=V@%heNoKZAWiNpHtU9G!-{eoDd)yT_t4} zKd1CORugY~4mwaTM5v&<2`NE$YwgM@D^aheCo7y1evLUjO@sBF$XyG;6*wMSUY}D3&Esul|kvsEU`(Yx-fC>RKqLCAKk1m2y5(n zc1wX)&J)^yth|w`ziqOu-HXU&uq6p|v$z;Cpi&acgoI@;5>V}Jp~2p?(BNBZG{{>^ zlz!~^gH8DbsU17`!Na(rf9mk=zenn@4SOYcy$c>xwNEN6MxIbL7ZwFC5?H20v_7>o zk(SKcq!CDbmvtNKeLFS|38H#ZR$s&o)>)ZE1Cv z((2qrS^p#;#k~Jb=_0Iw;^7V$Bdld1r4@i%k1s+1f4q(h>r?|Jo!pccR zuhFH?Ba~L)=ei;jf=dIlpVFzHQo1-J6MQm{wao>55=2KaVMj+%oH!P#D!Bb~k0Mdz zQ49}bVB4?kDBH&IT|!yHI$+?cFftv=j6EVzkFTh@sdUMgzP<kEd7ua(d`#FIW{Q%%`_va{@$ePo~#I|s#!2Q-FY2}KbJ)Tqgo;>k|7 zvfy2H5JANbiN!!HBvdbg^wS?eAUT|0wg&u~c$TzJu_+`_Kh`@6c@TQW{~}*;l#|Bu zV14}!j!8xi4#rG6R;ysXBTRf+0s$pz93L<|8s6UpBnetuS1rVqYN})9Z3%)8-JlUv zfOcs3Ae9w|9(i}P)hqrr!EVJLV>uNc-mzEEfue!-`uIcO!^f3A>Js6TaSF!u72$R=L6x~s28diK{cK-Yf6wTxueS9kusbB`T?{L zhqu=Xid>A?wi`Yz?TJp06(b4vj)tPC9WZqL{`$WX@m$Ufu~l~*K2VG&cm){FXT)1i zQz{i4+rAw4Xr0T&d7fRYecG_Hg#Bxz!n9cY5=K&G0RoDe3s7*a5X1u$LT(&huu7N> znE;H7E;P6NOg|8TMBp+x;7tniP@YYvhikAzY_!IGw)Em!xmxZ*K%306APyvph+{#- zu^{4j6~bt_&Ahf$Ka0PTO%NSQFxkNzP#sTv#|D$xuX6B7xl5z&*YlJd=9%T>q>Otu z;V^LE_G*{CF@p-|i2X5PLIxkxX3AnxDqMz`X-cInU`o(T;Z&OMiA`Qv%ovomZx-0! z7%1F~v$vRA%5lT@%6Lh!XT%{oihv+Qi*4)`SV$s+rIAL!eBig$1;(P6c<1#oUoG4SDAeyzo9xLpETgqfpP|ePDiIG~(bsxXL*aZN#pg&)GYBI~ zHaxlL%Jf}{0a6oi1I4f{#t4~q8W*ULh!jB#a1@FKgoT!cwpXWdZxYs00sw$3GD zrMg%D4Wv4910xcqyT>*e^|MihNm&fGQ2(v!_tL=T@C(d!O0EZwraFR7*=AM(z5br* zL4-&cRb|yK{TX=e3~{vRgT2QlM0H>vPImJmr~t6JV}v@-g_qBQ-;I1gMA|g3WFa9z zvR=ih#9`X#4>^=@Oph`2s1@1y}g-3HE|ELBgvQcgeS-BGJ)%o>IBc!qmn?dF{N zKn+YxTvc2rwh)}D#NZZ>VQ28zXiQmogs>r;&Skkrb14NXnvf2QK&Iv5{}{;&BRInF zhsGTw^aqM?mx~qY&6iqwSGEu#*nG~{2iVG^ILguT0)eAOQ&D(Y14wH14Rt6*H1;(q z^Y+)57bSc|`e8&h6954yk^@jyX%M;+!H{sl;gIpWt7+>(QMX+R(<13~ew=H}MmtO4 zsGoUI@$>+Uq5%dzx6957@?m~k)3DmpOtg++1pxrYH|uQ1(lreipo=s)QM!kAZ@lTekqWCqMQ^t^a8!2~N z2;8&5gKj&*Dbj?XwBjf9E`NzExQ9)zpg<9vZLviBblqg*MD;+#kT~J9>GKiv1H1!` zC_ED8bHr$Uu=pVgzP{Ki?%)Cu?wt$5A-0_~a`xV_mW5pidQv{L@*Nldm5-D?Dx$Id-Df_`v9~8f@3X3 zl7Xj%rK#~PaqPu86lRX?iDS2$W8=M=3L6R8t)|!xS3&+~s|l&VSuX8JB3?J(|AuHi~E3#%fu{_B#xvOthlL`s_3 zna1Qa{#)zH(k1g+DUNITetPEXXMu9RLtVY4si>d`<*qK|j8_RB+zMf6NSOxY!5#?4 z-HcX;J7&c{8&(T7sX19lB1FO*yAvks4az`t-)pJw!dW8G0D~+$@?l1R1;(7HF&;vG zN#R%3@$$lEf}mOL2Ll*arS6aU*CRrRjayCEv3wd--|EfzR}+yv}c7SNZ$P{Mjdl<@b*xjaBD< z;bl!qKSYN2vK|wa;>|nqkF0ApG-eRYwT0ldqyDC>7oDQQEu|MYFry|rd-5HvGNe5+L zFoA~R;X%NldxleB1Uu7SH02L1W8m?5+S8f_mJz7xT^1z}kGaP3!R?7B&|@pX-_?Ghuy0ao0f$+BabQEonBZ*hD{uXpmIti~kh>&QL4 zA4^zN#eEem7au=VX2p-yE_NIr)$I{%pWg4d8k4T(qN}8AXxWyil72l>KM%C z#V1IiXM!~RL0t;SU(S0&bWy35jfBLY8dxz@{SBy2>%n0FJPMe48)g1Z9`#t5ij8Vi z#^jenH8HC7qS_Mhv4C~=)Iu0=X@oCmW6}p3ID)jhMMMfO$T?4I?HfEfWVQz@T1?>3 z)RP=s2`2TV+8(5~^-??uKDb4?9)C5$UhyNkB$~-gP82*XMJ&bdEEfO4+tXm>^|n7A zznsrZe!q0n;9Z?DSdo{=jBHcJZ$~xD)+ZDW)$Xxi!IwJPQjWN#Fj(nE z&tt~k?kqyRF#?kVft*de3g#t&vr%TxBrT{AE965>onEb#sv(32BTi^}2pRJo5B|6u z@d#_f38!4bsCnarT;?a!-~80J(xAW2-#%|Ti9ojd9kVaNrO(*aMZebzI9#oa3w9|p zL_g}95)e-elZwc)G3Bdx0(}y-a2KSjBqI-IE8{-Xfs;+mBpAiiUt?X3V*+u(o2&!} z$1lsW`rEzxOu5shMtEPof?14=0D#G2Ih^#};#h<|(1Un875%y>s8SEK`iyF7O@WdS z&BkvMdfoHOSc4k^;rH|fmH1~@jK7uVqm#V{Vww??bx+eX{l}YVhyMNBM#Et?aJd}Z z#E4%S)j+mqnW}q23E2b`iku)!K7$_#fYuTB08kG$Dt=`u=YW!+8j$>4z$T7Fq9ev> z7a92{Z`Sgrdn4o2)aLGATp>Si=Ppt@FTS`)6L?6CCao#3Kl62f;AR74Ciy4tWq-cU z0CltSZ=eNU`%^rZU|2#zqikRILKgD5xIZrytG&7kS)yGyxrOO)G7{MK5%7X3x!y0S)x<)^-uH{S23ocluE?%eK^g5bBuggN{^bW0vYY_42bzacxy?CAL>GeEb zhgiC=w^X5a{9cDDP-t#P-S+(Yc>L?V5b>z&9FYS-UC9a5xg_*zd=vr^!3Cy(Nri0j z2)?!c*Xj%_TmY>r(H?c%4W~YdtMw(vm)gnhWennxA2@WwDrTGg+pXr?A*u@E5kg z(DrIv9g4qn3+93+7wQYNx<}5a`XuylJ@E=j1XUy2lC5(+)jgmYp`{^JbWX5W+1H|% z8Ja6cRhBjk08}hCoMd*Afd}hi*xx2hG-Eb{y@Jhxg$w}l8+LW)4AcN^?tGX!A9}@2 z*QsN7Gpdw{C0i+V#4G|qx1TWQ|%-I+hc$8wJg9aTk>aZx( zLXwV8`u!(B9OGT6Kh%@OO9SAC!x zHBHu2VjA#1!#mPb5=5*8`3Qt+?@w*pRtlS0JW(wPmrxVUHKP~yrt~MMjU3(&ax(!n z^o~8$TnDj?IFr3#*pY}@A;y!Phd^#m^uiV)kNP%*HA~NKq#V7|hLy&v(Tw<_fsRUx zeXC<~{mM}q@5tkA+DtGcpaD*8ZrvLwV!{OjjG%=Fc3BXh))|Sh;0=I47wX|IhUA@x zzBFA)4z!qLr1I4PqvVC2D;G#fgbe5lR}JrU5Yu39>$~*2AWjNK?&1b}p@W-6lSIhT zEpU_2((O7>ljfj%Lr9zA29gWhBw-|zHQ~nNGTx8?#h+gx#en?LSFUOyj;JK*Fr7rK zkQ3wvti;A+aZ1%$M5eN|ZMvf^{kq&9VX-yN4=(!vic^Qi-|qM4PUau9xks?5*3dPc zqNyIr*PFLH_MWDOc|_=I3UX$-TD+?NgItinsK!^}<0X#es{R@u{3?+%YcilpOx(sk zRGpC}K*V6c1mv?^(ubF(vKvErnOa4+TFjlpKK#>HwGaQ^q0RQ8(EFuiA4-i3uobzB_3b|u38zB6g_EU zm`<+d0|OJ@O+8&6*U_FrUPc#CI64T-Ssik!$7Yk$@(+_!1`K$Wx=eyK;wQyDcJ)&NX z04;b`|8j;rs;@rIpUW{H8hcd}EhUCs>WKz?O*D3_+(lgHi~S!{ml4pXPH6qzd^e5J z#U0V%T69>_6LdA2(p8WX-Pw+Hci`CMrS6j5>+a}Sy~?&lJEtz_?g#lU&8hL-8r|)Q z?h1Nh#-*yuei|KiuSN%(wq)$?ux|&Ao$P*WC#UYPjiU>?JIZ%+4c&o0p>saE%jk(| z1G3bY7EAO6Yoxx|B%WoNgh`-bXo!~jR8KCYUs}Zy?Z+g47MIQNU`AhCn4)NWE%rpb z(|-(Zbe1V<5dgs>yg=3RRsFBx7Ykn5c2)l+{ovxW`sDX#`BVrKe+ghJ!#*5I=VWZD zFz7TO!gMqsbktzNN63I!DriX{#U%rlH;oxh1U5WmstT6ftDY#`g8R2HU`MhSN6q4p zwi*Mr9Trh7^BUHZuz^EdDu!`dKe)IjMpZBz=phV^hT1^~ws&9tgU>f!G@zj$Z;3pg`hSs3LI9(;Pcv-fdd7L?7D^V0wX~l_YV4L{$ zjpyp<<#Kv}dxzrQ#)OwlVmu>_$D?WFS=(|0zs>2*@UKP7C5^(ULoupaMkUhN6#B5V z8Nutbv|$i~g~~%R8ML{Mr47=Oe z?!23)_<09bB(qX~Bhx^TpXHd5RDA`GN{{iyqf&!5x0x|a8B#jNfG}&Ld*rM|VdeC6 z&)DDstTtn#w{(I)OvZYQP7~2mXfuk2LVqyuek+iE)$qQ=UlEQBcRief1JO#YQIBOo z_u3P(Q9td4Krlm*XwtL^UQD%o9;GjcV4c2nOxzGpx5Z_o zoy-ua2XrJK*j0Q(PWkPv%>R}hWC5m`d7&m@sZkb_zJv_#^Q7K!X#C9Y^JkR(aL zs>#wa7ECv@`-#*Bb@7lUxiJ3;w?v^j+aflT4H8mgDq$qkXr>V^-@>AlbonNd)vQ80 z-|A@wseawqG>tuNR6?&>jcnEOjM)0=1mGzRQiT?V^{E7!%wervn2cDvbQ}9=k=TqN zIhBa+8wu8z`K-TTAYV>EszIoanTnN8Of5f?QX#IP)smjjG_@?DnOffLLhvm?4ucp` z-_#E#fvR^#)Jq*iQ9~9;UYa6GFmzk`hF+c-%gd=b0!Q538I9!yw?n9g5zbhqYXyuT zZ{T#-QIZ^K5jFCYt$@ad8T})4#MASzt)Vy7FwG_Z=`!1Z zqFr-IXVEg@vePw}f_@Y;wRkr$N8JIN<&kzMtkkno=mNsR%=hX zwbRqqyryH&lMFat7Zoh(v6c#0>$OzCoet(qd|=FEsm}z*sf0NOU;nhh!Okid19Je; z&U%BT#lVv3iFQn6e7-*}zlUbNWy$$X{;HYTH6!vU=pcpK%26dc@TAD1;CEhp_|OFN zt%N)I%GJ3EHo=64(t?o^>#~t}wA6y}Bhv*VMp<8G;1jeQH4dNa0!<=Ns&-}3S#oadrvh6_rB4vj~+mhd%XHI=NqppP?s>Y-Qlw(FAc#h&{8`pDeAF)SaKym@S@6#x# zZGGJHFvfiSyNqW$k1yU`FAD4xo?mb%=sCu<5aTiom=<)WxIagv3e_m3F%j?YP??9x z9)?aCoXG$#Pe>CCGRiTTQXOV8M*2!@bUWHbndv&8Mzw5wmhw0PM%yg|zx+799e{H*tW>xZ zIK5()11-y0dq!ztyMj)c9dbhU5d>=l64a{m-GTtzSn*{iXsg}gYugELxMi6*2zjeC zmCfihnM8vA{X>d>Kn2V7e`z^?7%Ds%zsmSUP-WRe{VUz0Qc41*a($2x)8hBXDubqb zxa)j*Pjk7`lOsiWK*hT>>N?7}<)S*we6>{$bo?zdIA8DA6>M5x(Il=IX6^rIB8W)V zw2(dHea)3}2MM7}*$(oE@LZAJ`Z0Yn7A4l;{ZvIk-FGckpwNzdCM31RDtaE6-5}pdY-I)nIN^)}olwS+5Q1$#Xl8JQ7et8_WdO2jr>X%IfpX|fKAQN%qAT& z-2udjOnZBDDluEfY&5+RKcv*j{&N43%>R|^ckbgHKzu_=#SjxqWUNr&!m;+Gm-zfA$pxfPmQD8X zar%r%@&8}A@X^l2m7Q}6#~CgCvcw7 z_zs`EDp#Z?GYwLmhM*i5#?5IFI`30o_kaw&uH$N$h{C()vlQHPUa3SzwWgjm~vct!{g79c7{w2%baY6!GO5@<8x_?Dt9KRoyW$VB}~qM1li zM4)oj z5j-4x$#4-y1}kBFg0B+>}XtM>F=8GTR1B znb4^kpqjbDIX6=#vyO&hD8%WT_`d873{t!Zg)y>>eib)>oka{Y=+`!akMXK<)cm>Q`uOo4 z{kU5{W~HisZKd=%e_}?O%0nQ|=ufr2rR*?LH-v*d)e?b8WNn&J7WLiL5ARky3uT8rTJ?jZw(C3fn?woRAr)ss@R$r{-(pPzwsMRI1_|nsB$Ck-P<_AfOv!bwG zxM_K=9UsFz3QbIhc^$u&_2NA0QX)eL&>*QMgH1#T5AFIbg3cS{fB>cEZ}FDz=q++< zY}D=C03G1SL9eLfh;`~8t1`~Ms0l9LcQXTHp!SaMh-(EiELgeWCwA|M}fVV zW~&8cc}_vC>JIW9p(NMHesG6uOvv4xY%$5a&2~&GQn6OUSpF% zh}XvkL{Ds@>C6IL69Ar)1a5BwfiFT**n^lCg=`+~v5@q8i7fpdjp;oFSW8Tb#z-8A zhC{tX3>@E!3I~k5qs>1wqt|t*b%nc0^GQkWQ)ApmYG@5BZUtiUqB@dC<_evYGox(x zSFsviAJ!zBKq*-)vEGqu)YEB!OdA^K$hJn{20&xs(~)XQM#d&@rImlJ#)4%ji6`{C z#TJVai>F3xQQpzl37qux%wh{&$;b%;=CMs|!eSC}ch;Is{>&HyL@3}fBBVpIxT>_A z=6YARz${+IwWEQxl`f*+D7}Q0R!u1g2{S=?66MmY1t!Y%oC@*N83hKBhjdS)UaL*4 zV%p=0>}&$%VwccF+e@+7(V9oL0Hms`Ui;WI@J~GVcqJCbU+EEN9idr@ETae1XBB&` z@(FOf_)Ysf;n)i&C-BOIX`b}R7h-GL70@QV++z18tPSoT#r5(BW2fXQM+1>yg{-Ze zFk}=f=4U2QYR*EAetQarahf|w=$(tegaKv_>N!>oBpsB-GZ6z0Qn=~(TciHAlhlt? zfbQiH4G+8y368b0f0bolzsMl%ocSpWlhrSg_5F2W)x3|yYO)K;T;X5+!zhwh9!y7* z7Sd!4e^~n%i?kQc5_!1Kx=ih4GWTRtaSdxhQc~gh4jX2A*lLL|U`bhr0fS$qaxo7B zIvmvu+QGwpaHXDzeI-_<1rT>ne!ow<n$|+7XB{p| z+e{g|Gke8IYPzC~%m$Fyiz=3YKZvl}tKaa)@o_bHhB~ow?=jW*ujOaRZ*frs$p)I> z?Pto>X|1Na&@ns8ozy4pNt@`a+%3F$e3G$7$}*opM3;zGaNW1e(Ir04sJb1v$@PY35Vv13Kht|`J)u|$KKT@2m^Q3Jub){ znCWyMV2IayFsmET6~=@Yoj^+AXGTbLpGG;nC0}JHmyZJ1n1}(lL*J~&$K?<@qowRJ zNpcTq+}G;-cz(y(TDPk>v+n8^DKy4FaofHX6tMGru;`CR0If1G*u`)8~(_wa+y-9SF}73to*^Z@~@rq zu`v69d|O!9>46s2#?|=u7W-p3Zz#?y5y=NLpnys_+Op4t^)Jhw9n>W`e5i7mkL_cB z2v!yRuX}p_w0J&uK`R~=8~Z$z?0Gc5LK zm%zDbuP1>K?e&;(VuCl0L+#A10v86=GRH>>_gSV2bITkbNv8Qf_zL^0iH~?I7z~D1 z3MYDTHpz!*+tDH$D>#p-&ihc@d=hSPX2hp7!9!*tnj5{^<7z? zCU=uD9-)LU2v}&F8BiBNfXFm=*d4w{qKfa?-eWI{zaPmN;ZLsq>J9(TPy8AJfHG?n zs9O;LmSTJtgd+HgG#KVubYE>VLEZuTat#p_2LZ-01infUIVcU1-}amePG1y$WQ-rwvE)w^0x>a%j_v3(zf2;c@RNn{7veNo>ej`{RU}n#A(}t+E#FhQe zOCF+Kh{xos7uzgi`n@Co8-FYn-Tt z8o_q!2{OOY6*O&%36CO*lH@s+&y){BD$0tBUu`XC?zLQ~O~`nFZ>js7{+{NAsN($e z!z}G~JYBBvCD@h1j?l5dy0uz)q7?-ytZ##jDl$)7V@A#0;Xcua#H!A-D;S17W?WA-$9*%3*qum@<#@@soY!qj+OV zg{J20?h)l8=q~jUEH(KxvJb;yr5wwvNs?m*d%%PclvUiTufALHSn9mbww**(yEjCN)mS`4H#DK?#?w(mx zk8VIF1>p4ST^Nn(Jg--8R(UsO?wV{({Yy-%h@@cPt6&gaBn~rw%^mJ_p#j#{fMzRr z+{A0ZBLFBUQTK#sqmT(;xjF@n2^)VY?+=~uAd%Yq1AmxlXQvB!)b_DpXtJ^>vq&V# zJ8{XfRW{`?%pnjAhERoAX!C@MKYR08*OdW81M?fj#|~}2Sy8QSk=Mx)GU*~+P*OP< z5;1t0q-v~vwmYl&PftdDMg$s27flWho0{_!_^U%jvUvApNF3Owq8p(M$URc60gxqdX10^y_RN3t4+<2AaSZsdb<~|0bY6y zU$tKI^XOc?2GKCINbyN;ql*P3t)4gL-ifNT4qq2L`ESW_v_Ysy8 z5`Fs2#q=L=k(nzRtL8e%GK&HLnDl|2uQjF@;>vSYM>YYEE{t=m405Xcj8@jx4k z1$-i|VZ;h*-xF%z2ml;W784b-a z6ez;H8N-mSD5rsTo0DPCT9FLH7Y{GslYwF&Ov4fbAdg9<51722DW^Zn-s)|BmqTwP z2x6W@CK&T`UY*edMb%^$D6<9BjW5cADPSrk`iwx*T-_x4usI}g?FiT))^Z#dus{|4SCOZq3)%uE zxtK>8xM8bxGklLlW+6E$VR=XRNkpg{8?GA@>4GKA5fmj_P>Z0Ft8kg;ABsR6 zOVD65z*50)h6Y+ydKQB^E0@QF?c6PtX@%m8I5?*ONWx2lG$Cz+Y4VOpU$->~7(pMF zrEFJp1ir=sB=o_43Xp&TcO~e=8Pg7=!9%Jb?;|Hg$_|o1KbdiAEml~LG?Igqt;nRS z+%npkUO>PCSYarWc~AqI;5>T6N2`53GGPb<(x?{TqXr$bSAk<*o{32&$jdb5&S0&k zUVX43AwArHXJ)|adnT~%>;xrC1p$o|f)|Ph52;B?7Cfk6s=)*iI02VbY8FaHrfHr- zP%RZdqgW~@eUHb#xXsRh-Uk6dwhQYxYqKRj&}LFnoNd4q^Xt4$?abT&$k4myHNgWZ!f zh<>)vaQ)_3kS#SFi~y(j6iFt){`O2_oP0=WxB<4LW1B1Gfw4)gS_C-ZCDTVxA|6F$ zJaE__UNhk@$^=McjG0lydGH~~FyZE{R&xpw;Z;)nTDy0&nyzu7P4Ub^t7(cvHvkmM zEdZ17^XV&+2T7~Z{WM!i>sY-MT5bALxuTO3)U~Gz`e(W}D>pVhLZhX;a5UV+89+3n};C!7XCH~f*B~w($E)5csfLV)S=ow})_VnQ)n&_%BFc8juLnCboM#Vn0pMV-ywSF7!Nq;RA|IYq^j{eGkZK}VRNgfIP#n3hw^m1H4e`&0U z(Is6F2aJ426Qk&DsSEKnv#XERZWWNhF^&GRFyP&e{u)b~@t{vG3h4nc1VadsXfhYy zApQga!$Eb(B}iroU#=}zfk5FtO-UoWleTprIMbp>#m?y|5H_RJ1{>Bp6B>oX#ewJ( z4Q)hE4C%G?8_jq08$!+cEp;3kuIXFAGq%k=zPhFh<)YWXW7g_C!AJo0CWS}0;sB|; zio}y#V@L`Q16T!xN3OyRv(un0mH7!+V(eWUwoq0mzVRuYVxcJ$Qdi=S!_uq7K>4A}aNG&F3eVX#Uso7lBQmFZ3$Wf`k?(mBAAz zQU-9a{Llt39Zg$$B$ETo3=46`wh1;F!K{a7V7v6`@={>C)3DJ_U$FJLHigaSL>(wc zpL?`AP+s&fZLhEEG=zS50te+qW&d;4OjP3ZRj(Np>5p-tmNo-Zi=g{5F7&%kT%rqjL|9k$C#q9H&;n1Y2N*27MRA#k`Vyh) z04V14nd&lHXu4Go-3HY|hL43tSjf^SK6FlAp)HP*U=69wc$JT*O}^ZyD0_UqI*#BZ zXW9ei0{=@i5Q43VSkW*+OrOEa>4zGXdsBy`YENN0SVLu%D1v+IUFEiW36kmE$9tER zZ@sfzxVKu;fl>3cOz75$>p)YF!<{pf5L!n#`kKfIsBWNYgiw*Ns0ZRJXX|lW5h{I! z?)2}2Po90E`1rss=)3>spG_9lpLiu7(jx0LZL5L>DQaTiH7FNDELXHW z#b7%mFY0EkRZ`U%LV`*A^_Me_VlYKv7l_nfWJcJrQH^H*K9hcvc>;Ys3%k^iTdjjp zP~SRLbTSNXXqZCwFet@a07K>L<$(tw>+->BB8sKP-X#g5zqS6v)761T$^(yd_OGf- z(iX{Zod;v1Ww;J!Pv7b^z$t5&2#AAqpBVps)>o8G2_|f)Xr?ZGntsKA9QalW0COJi z9Y|6FoS1D(gvg-&LXYqWWz^JptrJ~O{g(c`qxh}e!kzqcXFZnjL>7N|Ol}OM{R?1C zHEKmfeEEDY@>TU66e>8~F1mOKs>j_x+iYUva3qoYI(`hJqCFC@97T0DEm)}d#?*bj zXX{s(o(@0jsid=eOZ~8cnBR}lHdZ}E2E>MBnli~Y`?J2#n@GQC;{*`2C!*bA$36DV zAQHHVJ`pjtp;RnMPuWX1r?oaMuz7~B6s-{PY$8zaTnaL>AkCNSyY;o*ztpV9l-ldAuMNm_qqvg7P$<^=a{gD#GgTXUP16I4QVX zEf$}QK`>C1yUYlkMykJ`>T!&Ee2I%3LLo97b^|ea$=ozVj4YUeCKIH&_K+YqPtl@M zmoTY)a52U?*H@Kz(`bF(pM$(+u2JL^JFtN}!U06yYl1vCrqMZkCwX*T*a?0i3v;DsDZnmB#< zHf_2}6CHSthb|)CAynTNpMM-^zH3}w6pvlU=q`G=5=<`~zWus;C){aB?B5X^acTJ- z8v38E{qR5V3Fwo{W=L@IR*VhUm-5Cs97qOo>gbQ$(Z$IB;f*@foHd?2A3seI2W%@kK?))UlCR{jD?P)HY zMwW2Q7wLR@?!xABbxB-0QtfRoLCs>C+sITQR24gXAJJ2Jx&8WmRO%+^6{=L{ah`C+ zNmlFatCw+y3r8wWDDy(=lhs>k?ci?Z86Uc;z=GSxtFYs}#$W@eu!nh%n} z{poZgf$GjZ$9z$wruj^&(x*S`2)|QXx~gj|L0Q5DEFS)n#{H zhndV@t9N^h!yLvXsTR_zb=` zMb2lWGVnt!X*ziO0@4PWRaBW9Ya~4G(Y2gu+4z3?R#To{jp6ovF{0G_0d)ph)V-Sm z0D_io1kCTcoggBGu)WgTDEG<~0}i-$V+NLVLGWBAlwJZ#FDc&|=A$Bn+^ul7MYkF; zU8pb3Nl{W2|7A+^pFLjean`jVp}e1WB$+e4vf@BnOpLNBeuGdSCQ$N=FM=HCTsroGT$!tw{^aKC!j3!?dnKEXrbQ5**N_k9KpfJ za5E>>F}Stz0On$??IXP+yEdz^YZP;oQ>2X`0mU%CNZZdIVw~|%yb^mu zUN>X)G1iUxWex=Up5xk?@9Fg8Vd*o}FpnM7=*>d53eY=P$6A4^yHV2-(#jqE%poR1 z9Yr?=CeBFHq`N2WOUYz(=eUU!9NOnC`LE!X0WrS&zB9h}QA^PIlvNhZDlj;BxRDr1 zrfg2Q)o(Ei>R5vP09rG$#MbgVo~p{*rL@X&f~g>pCiQ9~K;iGQ?eQ!UYoL#f`fuF* z)Z{He#%_NE9cJ0&APR7vQNo?a7%m?1VlvpB6lqqX_FRDRAWG~k9C+B{vP~X_<o zedKDd{#tJXBSjDW2F`kU=`E)`qrwH;LO=)Z?iRu2C3m7_pokmFU&V9Z`CAninL@?SI06r^{Pg)1FG46bYHblui-c3@6EFM8Rm)O^%_oW5oY5h z!c$*4O$MIMtf=r2fu~c?LseY`$y?t;NKN$llC289BOCcky(V4>SL?OKDPDXFTTA-; zl3cYfpLyh=$pKIV5|Hb+YbV17o#sb}FdZl_#-LM4L8jq)c*;}K|9)>mfQP9kVu~9K zjx9V)>NUVhE+*PulbtGd$Di`+_^ZOl&vMFepj5a^EG&acs-gm z<`JT@X6Cgh%FNyRkSo}3y9EfH|MAmB>cpfpnOU~!9&GWHs!gn~ z-*(*u2`#e6Z!A0hz{Aydmf!hESw1w8ZIHwY>*%uc)a*TOdf9{WY-!pv*a#m6Jnt3I z(+?IO?(3O#YhWfN=wS6N`71s8>yxJ|LCRHAOAZDPJp3RKmHw1b@}1)Hde<$=h)#1F zy>{6p36FzkaQb%VUQc$`vI$&_wJG0yGQB&$ey7O6_Zlwj-s`k0I#xi22i7(A#|Iz; zO6B~QRVG)5D@ie>#oc9A=IptT|3!}n#;Y;ott`=l;zTpZofY z-$!jQt{?t3|E*k=|3c39kEjVc;g~x%Z}YeJaP#ry)TuwguZOG8-#@~RF8)GVBp#lZ zdRO&JK6vd?e^7MR_iok4mHFS~1Ka8|>Ftm5_Wro@DP2P1F}OSUhBxv3x^YeRE`1b# z@4)zHmfJH1m~x#j(AS9qt9;;rC#%iE%c79A#U4=2MAk z%=GIi+u{BCgYhu!s)0DOz|ZnpYPF_t!#9;c)3iu4%`FbX^)0_$Z__VX1WHWj&z{RN zx63C{?e9&O2s(Q&dw{;3*YoeaFOC+OzJqk~O?+t0JM5LT?-0V^cUVMB-*Kn(L)D4q zorTUji|HL4MbmdyQa?-6ca}Tv;9_w<9*Xg3qrxLn>b>`@Q)}8es!x4!QC6tCNS_2{ z*4y4!zcP2CKK09s9Hm0e9s|khQM&j)>LPi!zW8lQFQ}bg*F}Qzd~tVr@;7ub6SA28 z)Gc5H7MMG3KpxW@F;u3V8<5ZRhR4I3d$_SbCLW`Sa8)0IR4;mRMPK`6HN|j=d4@KU ziPSa*zLCeCt73}7?HwHMNI0B=%sUsPcUGtG?CQL;JH6x4m}qD4&S@Cang1)r`wSKv zyeBM9(c9pCKj8&2d`ZY@zJ`Lz#R@D^Q${t=G)UI0nl*pi~wk)!i)fDq{55N1To`detO&sP|eE7g#WCXhn09s|xb5{Jwc>I6$bbOo>!F&T9D-Y9f zgVj30d`@`<2CYH+wi&#sNzKRuh@IB)$HE>9DVjzH>bshhrxI9v!2rf}pWf%|F5)wf z>F4K>+5oEOS&cLeXl>T#d_MlB2u4L3!i*f9_qVkc(Rphs<-iZ+TiesYhgRF;@moVx zgN2+03bu(J_i=ykU@35Id*UBbo)ygav3`5vUtiD5epo^yyo9Aey+D}(ijznFGDLkG z4dVi2)-V6xKJe3*SNTmLWf@2soZQ#?PFX>{^jVo0e4b99AK^1LjP%jJBiej-e7uKe zKW}rSdHqFN)Z<@>&;ASXdY`q6-~VcA?rZ7ukJIO$r29{%_dc6Gsk)9c5vnNe&KU>+ z0yz}K=ZoYc`B+GbP&`Tr!DhydZ$0n@;xCvUTogM05j~|dA>BaS)m6ZMk;681K&6rl zq9t|L90$qnFkYfw@yMZg6@>MQhkec=l<)#T7XR%bx^#YLHr|ubBF0}y)K8U|aCO%`~YP1!Z|-(P?TRKscmV{M;dJ==iQ5f`CRu zkN_BT0AKX^K~H&kFY+dXOs@5EPnow_V-dXK4D};=ev{*7a#x=Pz!R*7@6uOxW3Joxo?;Hb>;rv(lmF z4wpau`Z7BuIEjMQ2uG3Ch3iNG_v~Zf3V9>xoxkn$&Y#MWV?qyO?=wcGT?=Vx4a3JL zzH{hN>uTYQNN|1Vesdi%VnDhc?+KkTIK3>asujN#q2s#WT=&Z~Z}fBB(pi|%TrqP1 zmR_bAwZU~|Ec<%ArR(utns(2u*8S0n-x3$48Bf>!GR^Svc>JeqgF#Jtf;xs)cO@$i_ozqw95BVXT?9W%$=Y`PR@ zqZPlX)X({?Q$M{Y5}BA_ETw)D9AJ=`L=oRg5MSAsmS_42cWQGA0ZaDjaH6JEwPc`yDx5@qC79>`6m^wZ;$3?vY0%T^!R z#M6%^W5x`*pet{&BK3-TT+Ya*Sv09KlG8Ay*{Amw_|)@&lE2O(s3Qf73G3&_tn zaRJX#q>u2$gA3>^I3$#vr81p6W|?j>g4Y@Vw#)_f>ut`i`g8!Kl1P}iAx$vA=+{BK z41$0|VF~wtn-vOb2s&WvMBaZL{w9F*XXz-R2jE1mWN8K6Z1RnsTe+nke$bV~FT zwv$veD}u9fKt-#vpcFaL5gkec9nl~;(BfM=6FH_EoH4T5oEU&oPRt;3Vp<3)(p&_? z!VJzxn2`kP-UL_5h#5_?%_u>~cTlp}Dw%XWp@i!#O1NV&12r!S%V(oR;Jijcj70|W zt;rJog(ge%7hXF{^dEN8V7{IA=2U!+kPoH6)NIb@NR#GY*^`Zhi@tN{nzpB$*>26e zJx{ zKtgi|7%8HJap|&|=kw-y%%|x??ekc?v(F1kPh$_Mlp58Bc=`%G%s#*Mv^UR7{(7Y2 zU+wpn(vkNXCeVQ7Ve!%s?cxw8smx*Vb-h8cl#%M%>%zZcT1A6v_mE_U{@qVNCspj3smb!EI zvi*g{sDNmmA(sYiTOyq}b62%i=MdC&uRd9#$tZ`ckUoJ$9*kS&Tk%d;l>+Gr@``d6 zs%8ru@2#{AN_nj?$!&}*A20F8BLHKQS@91;b~gF5a*QM&AOd%s!+PCu)^J%UMbUCZ z>~@Kz>sW2T+MWG?=jS2vi8Pi>Z)3S>~2ZE^=iU`@$G=^d61w2_wG4fvSFxFk7&%=IT_1=1zK zgBbg^32B^tpzs-GMny7_0aXDFVIU93FLey$A(kV{3t5k#0f@k2f?iRoTUo}##&TtN z?W5Cy@>Xj(w~uO{Ky!rEWvl&cd$@g+d2S!wdODj&6?zk<@Rbar@zAs1aOyo*v4@|f zEubbqMJOS}^k6*7Ho#wrMMkt|$5Z)+3i|x<+*ba{h2l5ox&Hb~)1f$1K_8ce(eg_U zIxX~>?>AgfH|#>j#~rySTY`Djf<7O8?SeiZWzFC5R4y03 zF!fX}=>kS6o=V-(5V!JF%1UvCCcbP{(C4EpCiBKq`Dz7ygvi-~KBP!N^+dOBF6bj9 zHQq|CWh=zHGH_-K`sk^1x+`rTi35?a8XA& z-EH~CEix6zDc^8GpDqqtDCNBj%Q0{#_vPH#?#tx4O}Gh&MF)j&mgsfs!e z=f&~o_*d+J)6o)LORcfiRH{M>{GMvOZ8REXgIf84euU zr+ewA4uID#Lp&`<=b|h&Mc&R_9oogYC~Hmb&-&YM@?I0pB1Rp1XbjxCf~^o*tB7E^ zp0rI8#FE7kASsW+AkBM&QhSN)EGB4jvBJzAo?K@JPJ`W;8g8Iimzz<@H56cI4^dlr z0%0f+Bsyk6m}12s=(wDO8@CBh4=@DV?r3=m;U+~%en(Q29GOPXa;jN&aQP^sSEY?K z-t?fW-~dyMUfWgpvsC>~U^vCZwj^lLc2{ibk?JdZk=bFt0ZYqPq_*^cRK_JG4V28^ zV6nsn$c`Zdj^y6jG2km z1ZiTy0**`GO*qwwBsq{W3kYNFeWr188ohd^d%bjKf)M8~2 z9zc}iO+%nLnf|jKZk{1^sNGj7aNTPL9ZFTcYI;vyZB^z~ur0F4(0sA$4gz@r3=DD* zU4Q6wFYT%Lp~SPo@CG{!%UVYby?+rLLBgyq38qY6V(2Z6YKZNiyMU>4F_Hl3Xw^Ra zUoA*|szVDO;d4s#$U?x>dmkbf5z>$YQqz)Xr_rV9Vp66JWzFhPZ5wu&Qj#3{SD;Uf zq9H(C-Fg&f_pe4awQEJdzNq`^hbCxNUCcI}1%~9So*60I#O0iYG6ab2BHGf<-aHrp zLo7x0KvUjTBY^{Ws$)_}ICd^G{uw>^2FKbUHGx9!34u+wv1!+gb&#}PON*U-nvM(N zi9<*i1V`~ick6CW3J;8sr7tp-SXwAPeModO68#;dq$*nzeap}Di^Fwj;{4(eCQ}#- z`;xC!?Nuh)`Nbi!)hjZ&>xB{UrvM-^+4;rcY#56c1?Lxsv4BnS8&rGsO2>NO{Nivk zZnPxd0yTeSi^C^7i^G38?5%X74@Qck-p>X<-n>=x1~H&)_v?ezqJq{Gd`f*dMIC4f zrW1lNi~8@NQq^xfgw?6df7n5L`c=^cAz;&@kr!l=XtTarR4NR5abfb=dF4^(Xkda=py<>rdQU z4S|rrKP`N6_m9tml4*d*`G(YtU`fNrQ69inRdv-{_}Zt8kE08zw(~SoL)9xmz1l$i z!4m*&W7S!qZPUte#4J?v16ogm8%l<%EJG8%Fn%XV>>x!zIf4O0KlvK`=5q5UkZIvd zHR}4qfhd&#(#Vf$?my-3SJ)=EjyT7 z(pZ3$jUn`8I!n6bI@NZLl}q>fs5{c}>- zBH&QQ+Nv_yM~WlMa zwoxkruAM7BJ5-NHt5szm6Z|7zC@r`~i3>q#q+^eiAZyAMi6`KQX2|6Q4?oDs+kSl) zJpL2E^-#HMb3@eA+Qsq#httHiF_;hvRj^oHil*jA>aYyg64Cf+~)aI;ErVj zM5t0(!-&nM2j7@!%w< za_9J;?(DBXd%X`peJ^D}elbLadug2v0*gnrbw{@UnH-?tSS2_vNfwv!>*n}%1VUIU z$CAxcp-d6KwR_5Ol;(rj4vOMRB|GzZRDX{62mDt2lex)0TKqz$ujM`!qkf@Ib{>0c zXINgv-P`!&d8!5pDDjz2e+8}v5@=Pr%+QouLR0r(G4)PRmLOqZ|oz(}aUMWeX_W7T)_BhdZnM>2rs61x>evi1*@hPlesN8ou{Yc=Rz{g5CMB}9CQv3#u70S*w{~8B82Fe+?*y^!E zyrCA3J|mBqc17;WdObK^F?vYStF;BCl7cbybYR#7}nG7Qmz1#*Ic zi-}W59gT#-ehwj?qytEM$;}%jIE{6By9Im7m%}Qd8Sm$IlaxX zc?E0iDj9E~KeJ4;*J7N92Bp8&E;6{c+-Dm$uCooDBUQ&3Jv-|&@azCy+yRfkN2qLd z2R{kGn9oK;tbog94H+;lC_TI7vI_Z7Ta@uuV~H0{0fwn?vPaTzwd7-|+POiisobBA zFrK_A*k#2uqT|gq&)bq*g|UohBoy-j?{wX)o~ zA!)R#ANx1N3C~c(CDTvnsw-C+wADLkEmylH&}6^B5_l*{jIg~4LV8%iROGdzkWZhs zF~}NlP0#`CEudn@jjjfiq&Uj8fqSP+R!Ri{lIOFvHOu`}s@WGas5zDf+&9_lIe{1@ ztQ;0Dy9nz+f~jBpPh^iSVO`h-N)1dWeeWrqBMq#L*;4MFT;PV{aD=4wC_ZacY7qb` z#F`@Ir1i{8R++&?5CD3itaf|&`hGA}k|?QBLVTqrrS%b$e*?06#o`#N6zbC<6p5A# zEiwG(wP+dn-6+-V=TfSIn?UY{1zEZzrHU8>`c|nXj+PM@?7>3HY@-@aOgh(hB&WC@WKRt{cOE!$phkp}Sdj9mV|Ab(p^Wop;4mSGhK0WL+ z9e?s)g?hx2Js*p!7&M#u=VNhY4ZrcjHP6T5o@;a0JHO{+aTRmRCP>=MY~qK`$Ksxk z#T^iW`}$*Xf2E@yA6eh44=GMf+{!$dn&Yy`7i zeKQ9R;jMP08`#MB*Me4!6n09r#&SfQt~^5xUZExhV)~r&A`%V8r!RVb=MCG!O$=r8}TYC z5^^GfJt4@rC?Z^lufa6kP}L3v(oG6yHJO1Azof8c!0iKv1WGjqnd+Pv-wt}IU(dCW zW)s2eLhgZmN4pXuuF)g*rWDwy?B zfqOD2Onbv23hj;Ixt*rVPEY4(-Aa^ao$<`;xs_SD-)5r_@0wz>zBr0(WIsBz$KiwmXBrfHeMMUw&|+@)!0 zJ41kSS+pudx0iuIdvj7sdWCxtB-~(F0SyfYE^WMmtO4@>fb@f3BE?{6w9sgBNBc@~z6Qo=76*&^x zwqUPaye_}_q{pCorK7m}#V;MI*T@|3c#x=Uun?2{^%p<+HW9VnBz^~BFyswjy^#ad zYAUf`_|AQV2mK+BX_mxBYj+nvRLv>1AUYw~Idx=8Ar;6Sspuqf3Rny{$m`cXc#py2 zB0#E`O1f|%aEM={D?S)&bS0IdVbZ7|+o;k_*%id0 zwXL3=Asg)1*c4~y$I^*oC17_&O#w6{hJsbfkBM4)AA~>;BBMhl1`2N^s%A`hoTdm3sJ;j& z%K_Mkg9}pU2q0P2lPwVSC;TrWuPB7b@r4O~ zP^r-XQI?2nz$6$E9A80gGa#ail;ZQB(vL6|%rDY`UN!0&-46?mim#3&3Bv}dKXBss zBr_(aRsHk`tj5DZ>qJfXg3J6t)R^JA07(;wr8|soVqwjfpa>1mEJHtP4kQQ|(CcT7 zL=^m@6@2UsjX{ud=nRe|LOJGWL1hk*p!g8eid5MKI*Nx;NlPQ|q8apNys{0uU#(`fTVywLmb~!-s`Kn~PIp(&^gNhum^$Ujx{dCP?l^|lh&wi2cz_WaAtg(HXjwwW zOR^(RGt10?2zOmeGfJ?71@QxhEGZ_@2$5Kpu_FyK;2;MiaUBv%Hn#OZF|x)s*CE%~ z#xYsfiLrG*-|yaa&gq^W9va^!3{^a0wb(6)K_Cin9x^aN5GbsxffCR`#)zdqUD)n!z)Wv6ZpvAV4@mR^ttyU zN}c=`CaT$}HOZx7mNzNd*UL*(^Jg!esOHZQpYRJ%1GR?TCAlAseg;!%oCNz~- zQwL5a@sScf*5Y1iq8iyC7!NX)_#@R+Mu+e_sqFz{WNiCHHC|*$}w;$i|q=~8gv`(5hhYu>FyBz8xGRBwYlP1^?N`FeWAkw1=(*Y&!m1J`x z6VVzI;+3XzTib&gBIio!#x~GVYnZJg&gUH;UT8SmV^uc74$yP^tUxD6=Q9=O@L9dI zsJu-+t9irml?uyED7(>J6%*K{g`R=l;88ep0?&~gLz=5FYm<&E^$x#9^EQi$S1K@X zW1qC;$lr{_v=KE32)3cj6b4A1-KM-`-x|63B5k@Q?+kzWqVtKkV1>8t#;QJzqEn6i zR#RBM>qMs?Oo~n($ZyqlQ4zjfh|!c}W@So>IlSmLehh333Hh^7V(T1lu#@4e5Ge8% zwv*|Q3Yql+X`Sj#9OyQfYVFz@u4wkxWKoVF?BWI&bSA>k-XTj-RK!ZW{f>!waj3x(pEd) zDsfsOADMD|nf1)T0qT`3+#IZ3(>Op2PO_4WsK6bNj@)Egd})VcE5w;#Pc+II;{n!E zU~7nugd49V-c+mP8=J#`e`lCzs4qvPo)btBM6tUOK5PF9+(iQ*Cvds_L=yuUhXmS$E8r7$r&2_IZAKG9naXd74?ek zy2`?+`a*W%*zWA(T+_b+9zm1y34HTA@)H2VY&;Czu$_BUw;|5t4 z^?{?;mcV#CBtZ{g@2nL8{1<2CtHW==iEFF!0~{$iZmQi*LbAF(b089xxvrQ4yb!Fd zh1F!1{llG7R4vusofrh;g7WV4$57Zs@p1P@DoVx@S6F-sC!b8!DhiLCO)t!Hz>HXQ$X5CxFm^wadi4emm*Q-M z+iYOhauGT7aPNi%BNoYYqTdwo(Vy$3ChTAV9-Lxs8hz?>_66f&Q(Uj;jTY9HCKlEv za1(KZn{?!78ovoz3$v0`7exgPhMz^4GbRWrs-A&F{M5K-3YBB0@QVV{90 zkkFnHzH%4wmAiv z>3(KH^_>ZokR$;QLO1Y;?!ioAtfTlJSXK|8tA^haY;USzMt4836jpS=JUOGy-+&fu z6gPw)hyeSPe3Vi5ptUTK12{?o0pUTd5-@Fw74iZixS*ne zQM%N69Sf_|&SvpbeC>2kD`-|+0#zU>L&iMdF@^#hGSIaF6@I`vg_G8*gpqZ}`n<3f zw?RWdNAu=M8Knty)mm+QdGsYyF)Z;&6pYm`R_V;0y|PgA>2rWtc#nb`Y&yvuQe${D zB6clhmaIlH56pMa(mF*~T3QEWL_ms%^9RhD8hU9{Xg-<|4IT*it&}tqfq*;((7VG# zfctAfS&C!?vfBxs4)gCe= z>tu%aPwH^QC^f-Jk{OPcOK0+58mn+%4%Ele!Azq0cW_Yt*+&0kgRDCdgrn#ikW~H> z^z!anw+J(mS}}?tI3u+PvzZtL5gsWA5C@8r&_X!fp5}s2L+VZ)g3~=m2u}B$Avj2e z;7x!Z)*(2kU!oS6L!JzEVSI11L#Y-{MD)(LH46fF|exmsJ`v9yKwmLMp>(y5l9fpa)C z{^o;lG&ph8$simLm3TU^U=+x)}Zsrq>kb;M8PDJa=hL*3hpzDR#-H>L5^b)B3eR!-8fCxc%&GCIO5piSS0>FACX`vPc%2=Rj^fzu8ZR1!PlU6`$#N(Q1n|27lk)REMIYukM zrSZ}-&+AE+a8-4+aE&M^(gWg_vmvB5MBE6=M-ew-0L5VBmS|#GnNlS%2ZiUq7MLch zC@`_v_)yaUC?=c{j@Jo9Dq0e^g=L3BGBp6`%_Oe@1Ugd*W>#-JuXU^XbX{#0f`-=E zu@Hcv=@2x~&J}vXr`k|3jy%s{Fs3v+u&WvE{oRWk>(cEF^wsUA@n`y3@ir*+-wy$(UoQN{0hM zOl|`B1%82Y$^oj=nl~^=3E4>PF{9KTSUB3zz&BkIVs!Y|!$TQ!C_>4WcHlgh1gP|@ zFC;ZEC7`bOBmrR%7EH6eBA(_zG0={VBgL#Vv@L?! z7LwaA>H&#B*b`B1I$TaKWgkk5?aE-o?a5S`tz=lv6*CO@@E-4c;LWv_vj=gPOCS=o z1^^q*=K@hG;g10)kkBdGBhTEtBH)xCW-BLB>e+yVYUK9NI4(()AcYJ0Rp@uI3FJGO z4yV;Sr(6Oy)0CJ!%%2(kQDkY=Fr+-8WM~?07P<+H6Gc_3l7cgp|C61hM4`rhNM(dr zRtCY@=J6_}6MGV}wU8;R%0jj&_T|L+5(@AcnNPG;WGm^HG^#5}g~&LSHi`$NJ-PCj zHM{!R>P(iT$`YfTF=0$4SyS?gbEgRuq?i0U>Awt;`3b!gxsX?;4C95H!~no)vbfCf-{yl0`m4!WP%aq_ zf+-ABQ)jH2gFZowayp`h773Bk&aNguxx{4B&)*GXb=A9Pn|D58UV?gv)o74bA(*%lDLsTYKV_+z+P?gXGd4B>ysP{C*i^i2sxuy@* zc9?EDri%DOL?Tn2niiBB2r^rTJ&#^I?W9mMR7HJ4Rft5@3F8Zad!o7*txAXplB~rV z&?u6NW_vvQ{r*o(lY!GN-ZL4TjcJMOkm3IC>F;DkE^t4=wR$WgEf!$SAy1Z7W)A27 zV0H%}I7PJC4Er_!7s|&7UPzx}Hh+Y4Yt`>$csmXccW`?zM7y2In+Zf)|81;fE5bbT z`-G%o^ig~X80UME-^ofRkmB|m@J}a(?1}MpiXECge8VxH7aQ@k3v70QBv*)Q#2@6S zJ`Fc}x-1FFCnax-dOAZ&%Dxgz=|Q;_h?j6)4dk@k({bV8faw1bCp4HoB3}T zMzLw8k)%3{B@B7?uyYV9XYNd~O}vSuv&~|jF4G2?kCKD1BwC+y>vJLjWlKfLRNgT% z{n4RZf7T{p64}$GQEI9?Z!63R6jrBUO}s!Qq(Pm|mJFJrH&{m~6b34MpTYHkXwslV z$%!mnMi)9SEQHsDk4q)%GI*Z=t(DYs)b$ihRoB4v>HK3;ftEnzMA^m~?;XOUl>rXo z+ZxXF)8MsaOKL|T!JpM~3%%L--g3(g$jPetM!KcEk7SnftO%E8N&Y91omWrjmrNH2 zKgg#Mb4a=4TdLd~rJfFdHG%#rM1Db%t{I!a1QL_3O3Zx&gcshKC1t7?;X_@i9)Ba- z;U}OD$`-rPYqZ2B8_oh`@Su@2GRc-rV#{C3hO_c1xS+&kW5Z%k#A2H?(539rR2z46 zS5%o@nN@m~W!fgSqb>k`eAB>mld5zRmz_BA!cX6F;?YMwZ#Qwkq`=2m8(5Da!v)cz z5Hyh6amXis4g0AUbQzS3=;=EUcMHX$TthqLAfHux%I%mdK8g>4{z4(EN2E8iU}VN6 zn-~09gSmI!CPQPCI#b{m044LORBDPzH4!-lVoHD-YGpuK{DBlFJ207~%NB41zH`NS z=u&VR*skg!vz=TBPT&jcl>s7d=sVMNl~?)DEQXcUW|fPaTI1sr z;msmY<1DLAY7Bcx&-iYxZadLPV&6pM*6<`4(4DH|`7?8TV<2j@p6l3YO-(YYrD&kA zGo{EDT%$$vO3fWAL}Y6o7kRO-TENA?bVL)R9$y@X;c2u<4xTke1zoW3jxlnleuDAJ zv>o!L(i!Wjkr?ypj7|sv#2i1q^QQi%qlrX#5zB6}=20`G>LFVql%>fl&ABKk9DJUM zwdz;VW9d|IYRduNg#sBVv!rDlAj_?00Vk=~^qB;^JuqS9hska%(qkGKA1SDbTG1di zzJU_&Q3Y!}ObuyKQCRt-?7dhc!V!`sD_tt11#me3iVhnP=?FMUHAHfBS(xzbI1zg{ z+)FR8gh>^^eL$aKYN)bhsh&Iq1sObfg*B+Uxa<~kB|`mmBJDf6cpsh0SYmt*cw!g` ze-JVf<6^lI+pwb`wsVW^d}Fb_Nn(3E_pokodrOc?h%{0kM!C%vO=?DA38ES?@QrLp zqhg)t!@wR*uDL^BNUwmxJt2by78qK6xSN0G3*}bxj(kCQ55$vVON97lFjp{F5=0?- z9z+fn2&h>i^(9A<)EbXym`s^h9Gy-8;->1!E_YlDGj3{9o?lV}i@HRH4JUFb zXGLWNYAw?uX)S3Z$GsAo#ZIY9o2)=|rjrN2>$cR8D;Dm&jaB(V*_)ZOIcq<8kXX_T zm@`c#Z`QHudFsv7JE0LWQEBdntu^o!XKod9;>>M%d&p?q#6X)9BW4z0#4U!gIRaC4 z;h}z8VYrGRuN&I~fgz9kREbrzwbr$x67~`U;3S~)VfK)Bspnr>B1TnS9S7Ku2VfT9 z8E@2taw!(0;n>>rJXI&t>eEstlY?bq9?Tq?SxZR>{)liFikn%7f`Q+40C8m27}NBS zEi-aJAhra8C3-g8Nd77_2&PW*=C+2{aAz zX#zkVcZ6HAP^1!EHK&KIjrcmaHADfQi~Ka{|HnqiY(i>%Ih#5X$HCd;#Q2^mWz8nb zg2@*uW!X}ksx2DiZcxIfu0G}sf&}(}61W2(t-kP$&(Pb%3n>!`n*{UI!GT2jd#XkY z)c#fmFIFa^GqDASmbMBCLS0j&!ajw3k-%YrwM7VlDkyXwuy&+VG7Msb1O@zJQ*WRa z>TuZT6}So#N04?4c4`6eemS_@`la$DQ*NLin&H;!AwJ|OwG`b|{6hQ`BS4lyHlb}9 zG&3>pJh>@2{=kH*0UAbpkPyLUC4hIX%!@`X+C0HmgU<8wdL6Jrf!}}tn>zG{Dj~Flr!3`RV4tkVX$KE%SJjj%| ztq8z|wX1~CmAV7=?ErBpr)xiNVDyZp%id&ELrt4jNAWcSL7K`xyptPfPXyvQ)lw;# z*vbFQPI=10u|^@Qq*#fkCxQ?Z35B&3U&6e@13^mIpv50bFcSEaii$|Nm~cf7sL>;; zh|gnOpDuKW5-dvcZM`UztrWZbOTnG^Is!RxrFxC-$pwSM^^zeC(mWSRXZY35)LxEq1Av#o)=gs)G;lzi0an2WUeQIDS=B^-H&)6NC~$PMo7_mxAq7aXzq1Tsx){w zfYfO(Vrt=wSpl%jG>EIFi;jHh3`EBAs3U}~deFl58gyC?Qs2oiGSt{P_EQik_*HZQ zoz@Fyg3J_ktC%2zTrq$InfTn0@pD1OQ^6Z`n2HO9P6;xjHYZv%WHc|#nB!e|nH;5ctq)V45W%}3h*0$$qQ zFb%d8D>2rDsIqzWF-!w)+6Rxyv{LkGt@2{?WbZ?|`LGJasGQ?FVD;Ty{B?@Hf%N^MZUNc6^g5RXW#>~t*7JzA5B||?FIS49YDX(j2^gq*Li%{!_ z8}9=Pe|o2_M)b!;n7GW(cJ-51&Ks+oyoH}wOE)}xDuLL-?HO*pea!iXoYkEI-Bs^N zFBP>Zq?BK%WHnA7pP)v54<0P%Uf<9IB9Wz3sUU-Ru$&K%S8zB8X7{3^F^4*?3B@S^ zT{8i!{!b$mFgWFE)k=)eTVm`W`eKGex%$}UoUO1`NAjGi-Wku^K_=<=?7DxV7UA|G zC;*4EI=T&AsYdE@(*xyp4ujeD@Vj(;!d4Ew*;H(O_}xmFPZQddO%2<9{t?(NL0}=H zMNXCkZG%BX)F&Ft0=lFNIMt2cU}NqX-$a|UV0W;EuZ>v#(GMR;{J;4XpS6Gnfu^e9 z>4@YOml*8esdRO%+6Ai{=xwjEA1bEh>A+L^2Ca-~sM&+X+(&ha!$-?aAA8{8a`SS-Ja4_IV=?@P#Gp0Ey0hl$^S#J6M%c*qB z4}`OA#zl+GqcQyXr6NyOVEFH8I_!?P4|C(z7K*uXhZcq+XY|d6RGx+g?>ta^-v8pD zF~#!7Sa}xZp*%}#MtK&5UQ&4`uD#PqnyDQBL==Okiuh=jGg#=TCt&UnDQ9XDUep@2 z0#;;_%-|DUrzCgsXFKa2MZNiRU7mM0)|)ecxxv0R2X%!|9cPL_b$lgz+9Wj@R52Z* zhq+O=;nWtc%(4Xu0?}Q;Iwf^itacr!p zTf_aNKhHwWfd3q!U(!*nLDxaza9i{}WWR#MiHSsaW-FU~Ejz3_qYkwDR0z|Ex-b@_ zRE12`iP#<`UYeD00p`K-V@d2y$pT2b)|!!-(wbxNoiy2?Jcs@0Y@BJz>mHObrk6Ho zz8tlzclxLf_10+g5rIPH)(+{B-m2Uj!W-1%5W>x8Xi|L2C;11LUB?ER^N+=S(!g}A zId|7+&Of$xpL9R>gR$n^(}SQn>y4-(YRFce7@UYg1cOkcN8AJi)BFp5rX4C-uQ?Ck z+2J#lGR09rK%%hK3%w7BO`9k~3^KJ3BovUHr8MK|LPR=J0__xLzT}wzjw&i;HS5O-y2#!ik73!(y^Y1L&OkbWq#{R{;ptJlf!O z&UC`-b14n-$H$uWTT(RFgcJNqut*n_^gHQ!>&_xukRJJ6CwZeKp7aJOsLUfz4_Ckk!GYb7Yz`S2L68#cffnVv8ft4VmV}VSk+8JxcOZKPKT&eD}psil6w73_rhxE=_^p!da8xr&;!H zE1@WGF6`1}<5yQ|cpw+=@yb>}lyNdCv=j{r=qKyaN})i&da=;Nx&kojSX>M_W$oz+ zvDu6y76^Ctap+p+ZfktwtUdWzS$p&vurU&8H1-3w`oEb43;~>zS$poTQ%>EcjS_KO zWV?$~;XBrfqfGNi#?lRZ^ll-?uw1B}X_QkfO6N1G%Mf5%asOx%sY|(u0#tk#z8lp= zz-X+?wK&C8fOkuiZxr#J>jHmcUA}W&h?3YZ-}#vmRgKY2a-&8!-?=U$SDdY}T(0ZF zeh&T8;+mk^|8IGt=L`q|^*eD7BxyE#%)s8DA{L{J2w3^&a`kC?_@d9dqfL>IA6z<`r zw&N8ch_QGZ(LPcu!VI<9lEtz+ewSQsNGVoOg!Gc=!r|U7CjN6QQq?3xd)}CBY$4G>z3rG|cteOzU#DSd_i~24S40?+3bg}L#Q~+JD8X3J&g^reT;)|7VA2FQ0)BIpi^3w)|cA_fnI+v=$8Q{Vb zjBMcvY-$6=7Ck8@7PUnn&Kk68%z0FAAl@7$7G>>21|c2`ebdZ@%3+^q*s^FrAaM|~ zSujb=meo?H7S%8V09;UNr^ds0Eiifw)t4b*#^QqeIAT)M8nNF8jDNZ zS43sE`}j2=m*c$~cxB#M@>mlS%rLSP42+S+G6ti1Y77{nk-EczZQXiI zLgB83t%rgt$iCJE5BOqxGV7!9P=im?VesL!@Fq(+=)X|siTJ|g9>Wb%vQFo}HZmjZ zXh8R1`lKCyR{{Sf67s!&4?aP3q8|Ee?q9pOe_xh1>b(=_CWw)wdM3+nD$&=}|E3}- zn>XmkRK@Aszm~CdKowKf$KkQt-$=({ir2l0R#=+Dn_&a6S?ykh9(O}+`J)ZXF`|bw zFON2=-Nce1in!Q2s)dY}P^+NyF63H~N_6f%;-J)qqf*p9ac!|1t3`t-)eHezco7<# zErh3Oc!l?XX8G^$1SfHmBXkn*kY49sBGwEhp5*txPU?tO$H5r`SD75pa8_xSwT}E> zPYL^hx*y1Ak^iGXi8b3TiA`@bkhR1e!gA?s91?dLQpm?oYhn86LjGG9L!Uo7(3*zK z+z~eX-0S-v*69Ob=vf%L5Q2uuoEtjER6lh52*|@^1LQ?oXjN{Z&x(Mb!St& zz}r#)cKV5e<{4pl`7K1zdnec;_2G`RS+CnLK_V8cay|kw!H&=Go$`B66z_qyT)HGyvdB*3tK9`TLm6Zl3ehSLA5Y|(ZEfEQZe>N*&)=)yaYaK0p9 z=2V5|Pk3O_*5Tk>WOx|H*4#&|bE`jn-;x(TX3bc3Cq2 z2hZ@$AHB8SO4P!pH4cYwB9%1HaHZdEBAQXOY-arB;f#9J7vHec;526F1iZhv;H-k;=M;sy5y+UM=+X4l~WYz&^#M;mpb#(eHmG zO`8!X@xK64qoa9Mx3qv1(%&*`#Bl6hV?;)BD@pa`-4SZcpS3<77?>X#Yx6H}RlEkg zW{i?uRTo)a{?&`!=nz2WU%41aXrT+53YhV`;|_{wm@|JTnPPNnmgcER2_I>xCq7{Y z#vp=iR8RluLyPjeCUAs5oRe!xbH;_L07)wn6%RygTwa3MpclE~70V#M*E%9|HR%Xe z);8t(s%gnBV<~50epsN<7OC${C1B06sh*oIrd6i?GeX3F2|NV8f4*~vbudaKWun(e zoBrp<3>EiGwvxFDEQ3%}L-{H+hkrb$?B@(+rI@Ia@5;JdRsF{U=+@b*_c1_dV)Rv-v1!>_>PeWE(i{2 zKx_EM3usG=@InZtUX;d4Dr~~|@l%=DL@bhjJ>H9ka7$!p+eoOdx9W6UdpU{#8f*GJ zhyZVS;r|q=usR-ZS?bP31Cm_)NlG@hnEY4SkwB9TGs!9$cIgbusp7oy%k+<^o)+=2 zN}GtebU`*$bF%F0Pu`&DW^5?_-f!>lwfMzA|*mb=2Q zBK+E}=mUBLdZ0s!8Uz#=V>zddndk=tIi|(@xEpXsCowrX)h_H-x>j$_+-{AlM?C6N zu(mH>tcBJk{n@12DqzY**f5lYsi115kkr-x0wGWzC3CS{hJT{W8p7wFl)t% zr-%A_p~KUo4%dC19`%*&mJ@wNks0-spx@BfDfs%huVI^vVp-{{_C|G!Iro(gpsUhR z@PxiGk?N=hHX5QM`*Ov?YZ6X;*LQ#M3x~d|%Fu3pxmo?HV?3~8uhhoPV(^-5-yK6m zhjVw)9Yd~+oxN1-U?SM&aI0Wd9dSb-b1^+C%bm;8`B=6$Wa~kfot^I9HN__1?$Tb* z9;SH{S0!Q%Em&I`zyj5&Fjs;MNIG<`SG@km^UWP{wf?Zxizl++#n!}N3JQ-gc2N^0 z09ukN+Tmxm=XJDjI92tmw~jMi`KJK`<=K*YN4xX}3|5d7EgiFFb)rg4g$Vl~rm$yf zu7XEaFZd8EkeSn;`Lc^qRo!?bR8usCQp{IVNrk-lH!lyLzI5j#!*FLo=@M7;Ry9)3 zB6^^oqiQXN=OQpZ8{kCwZCEb>I{L?6lFf`^H+v?z>|+0=Nn|K(aJJYiGyyMH70(lk zvpWh-?-;FwLO3)fo{ZfvZU%23R~AVvkEDjd7sf4-TG83a#O%gx1R+3uTfC^oOEu!(*b+emICe~GfGO@auBbz~(h1+bvt zehnmo^u~|6Jo5BtqMCMUYmozb35;GFxzUVQtASNSHfd-lgx~2I+d1zbUxZq{aRmDv zV6h%B2g`cAlwCjms%%ft3N%6=A*Y&FBwV0pLXCpBL2>6>*H%I%rW@5sxh`DaZ*DgE z=!=^nJH7zorWVv6KGAT56KG$G)nk}bqhZb;&cC{q_v{zlm9*Gww*9&i?*p9}Q^fqa zhyk<|GL#NcZsy-;q4x8DL=5~r3Hf1H9|1N^xH^&%PJC)*cmZGGbh@Qk?&Lv|*cra_ z;RCu)l1(f342Kd8P>ZVWn)|mQF|bYT73OC{F&9w@1s^2tselLeD_94DzV)Vs`-d0E zd&{ChJ*8AI$1tHXvJ8sI;5YDt;)0@czx#Dpxsx9|uUWv}YUW=9aussF5~o2Bu@XMC zm<8p#5*#b;USQhlC;KPZOTb$*x$7*n$w4Q4L|n=SW3^MeK{UDG16CDA*&BCaNliMO|sOS)Y$fB0abw(RP5ETVUg$xli&fg%5L+YI^Eqke5Z<2??qmMhEq0KJa>RIRG@Ban+^NWO+ic!p zIPe|?cMcZ<3t9x00-`p&S<=fK$lhB_%eTB}#(}A-XaY^p`R1u@X@5q$;RV7e{%Kk@ zacq5o!HUzeFB!+sQZm2#U^y&?_vp!!ezHA2IrWiH*{N^%cI}`0&i7_01zi z|1_;#U)@y}ZuOlDMe*>d7c!KI3&M*bNEh#Rs-eZpVf<}&Y#F&1y)oR3wj#nYtsecg zygKnk{O}7z*+Oj#g{b>fR?qeCH!$Q|)gMaQ=TFMX%G`ZAtr8B}#ZdZAZ={}{Z``hD13hEuH6NC|+IC6uZZ5s$>{>2x zns;!yU|;q&E<5*SZ{@OeIeQD2d^tNrJ0QhDeqrGs;4-)*0nx;+_H#LZIorpjd|kGe zIe@RrrNpIM_MEQ}juvhBkg=-z3}fbfQf@+ZW zyynl3Wr!>|G*5Ac$c)#Az^rF89aIrau$TV-VAhRM_CWWXp;DL@2Cx#sCR;903RX!MIMY7(TU*c=Zb?onQn zet#;MnmA|QdbUv||C*c+`AIDq+G_#NO8{xGs}g7fV*-UrOd%6P#M3A9iXS$no_a;@ zitX#X6(b`Y+dKcr&To~wLhMi8inRuBbXG*CfQBQ7AQzYyhAmyN^vfpf^lbo-dTwi! zTp(*oJc-*cc)<5p|JSWQRVrzrVZ1;8l}`U2fkQ=ukFX5RAx>Pa4jifWGuvTb7Jh~3 zQpxfc8r6P`Z2G}P<|{gwJonm0Bl0_)J+-*7uRBuB1Esbc{~;L4r-mXW&S?j{yo?*obhG zPHnTxLM-XV63yTkLIR9{JHaUx^4rlCfF_t+qH*ybZakRoT!L!mU31c5*wrHQ25bti zq=X~H0nmlcDhm{sk_(rUJq(1qJK52^U>CXo4&pF(2iWqn=uhkJlPFTv&h&K~LTM`KIER z5Fh}bKRTNa?w)^rt3sI8Jnm?r(l0;i)bH);BYo|5WKu(Z_l_ciI&lLjZ4+G+;+R-D z88@q0yJ&LO(1E^xIk|=z;_e5RlkW?6N0yWC4|hkGlOKdaSo&t>5SL}*nL{bHqXxSd zAtUFMD^36iLOl-ClMtGWlfaLq}Z!vx*}$2zE2U;?fpRu4sq`ExKjTp5OCpHh6GM6R}8>XD_e{ko+ zK}Rloz(y_?de1EG6zw|;RD~jQOim;XP7Du74q081+DvM+Lr6Z{R@z9UcouQd5p+v7 zWhqV^gKVLX%9P^E7u6<1Dl2AUlogV2BFajA9?dn&*AmgaFt`0M*{oAvXq-WGz0h#A z6CX9I4ko`A#T!+BRiEl^b`_1%cQ^#RWX=#_c-jK=o#JkWL1qmA!` zHn!T8CmmOzNFN*iCUfZ|(>#7)zcM$|wpqZ}7(Ig*_6S|kigG^^|KJ%G7y7cFX+{bC z@@r-fej{q7BC(mT!Fw9Qy9RBDk(2`skV+{~59llc6P5+Y3GD*pxQmeEPLKlu)p3J{ zrUKXVzEnSQCzJX)V6DTE;tTIW2qh;9Ny!q9h7*Rf7SNfcm0F@Cs}UvkTn_N%_G9>j${Y59U}uKxuw3&5%E&h`4YI zZoH;%ZIXI$mnj7+|usXDO8_!>cKqQa-~*957@=sALM<-fgE@)%a7Tb{OuaN!|j zqZF06$-0WZumnNm5Ar`%;89pgi{iE>j8=@Bc`zj&g8I;}I4vGMMfoJ`!E2d4D4N0T zMAEXINWPH795}7|nDjE(Y9|Hhs`Nx=ZCICS#${T$^vHVFXZnP7P$B|cF`EQehzONv z1ajpzJQ|s+n5d%-yW$?g()OGCk7Q2DPIbwiB~BRq}T556@k5 z)P<(|%si|4X!e}dJo&IDnrCZqP_qlO$@^LDyXDRF1K;JF`+rwfAQ-|GCJuO>kS-x!%Ksgr_wSN9hdu*Q} za+}4%2C>pmzKfW0gYoH=r(h_$KhFf;^d-sN>{Y3lj0If1tm^6p4`;;*)+Da2SaQWiud?8 z#XqtdW=?JdJ@Zp!3Ink#wd3rQte|x?l(JzXj%+)^BfOG_wKiI`SBInmH5Us#0M!we zMVD+XyzU;M$6a_8m4MvRCiV^( zW)zzig|<#$Z_lc`}G!^=qD{m)X~)mA^O6huX7GUjSUf?T`* zaG7H7+98kKDjgyHmx7U-)frr}WEt-jQ>TaL^P9*^{Z`V5@kECHsJgHi~+Jl#w~^i{PKLW(Y|m{QPML8ksC zSwb9hjj~$sjf1=!P>wOs8B41W=mU;0+<9GuWsunt@En4-MwOl$HnM_i)i+_#AVTlz zh2a+7OoMn}1`+yXw>auVxG1UoO0GOMJkOLcw=mp6$zCWKeWRTg)2TLza%kLCz3|O% zeltDlWs%-Z=&aJo34chg(|&7pN18v24k%m+?V;Ho5x zgnE#(OW6tW(xS_nN}n892|jws9V%z(ST{I3$;B%T>zE@_aWo31-tcgk65rN!}#VHFMf1WfDUVNH-C zjAz7ky8Af%#S=nW6@35Rr-R~&M$R~>XW|Jy4y{088)5lDE+hyMV^aDv7}E$Dr`I9l zbd8MDMnJM~sAS4x*k+U?j}>Ama-dxn%+rBR~`#MmeRiD;0%s$*8z_fshEH z7&mOtr&ex=hLB%CJjirO=E;!pK={VUl(Ys8gUbU&ypHdRwZcO!ZzFiRm$9jk3i^5-k97K{IlLC3Z926PK6V=+dZ!g-z*97@$=G z(Uey9IWA0?AT~Iq6F$bhLWa6mwL031>Z@>S+$r_wliCWx^}Zli37@6u5p*ne`nYmf z?om_mcf}A^EvCa<_w!p*ToR31Z3+eHJLQ{032{`FYq-FM@_UlzrTiwhbQz z0WBZ<(s3b4YtuaDON&hyfjBpVhKU5>h)YKNfuX9rHUlK_MU{X=ER0{rONRFzdSkXq zmspK<5RD~g;1CGgf6NA@j`Yka{){GCEXQY7%%D>B;P_lHuVvRpK^4Rlq-Ml1r3K7} z65u5R`4+g!Wu1|ZJ2`tg;gq~fs`nR-zkd|>gRqcq(McehfYtos7##gF1;SIquRs9` zcp?Gn<)is%|i=bYHwF}rzQ`$I92&pKBMlc z2sj*Ztvi5QwepY6Zh+4mB12Ti1;qu#dEhZ=380Yg2NR0TY8z19`e_0i z*YN})%OhFZVIPVGskwGb%sXzJz;~4Y-xpU;HSou1mi-R13!RRKTDvW?>a$P%%ciWT zcJ(NCU_xV6FNyuq=3V&`iUuL~&Fa)I+?l(kfC+=nKHBp){*Q3uDv%=ZV9_a5tKhe9)5>}5>YlsGbmnCLFrHauU?OvCv3APVUO$wuQJ)Rw1(!*<~rdy{~oK3 zEHs5BDCt%FU)w$vy;gl_Vst+kM*W4nvH5r_tSb@0roGf_hlurhx?I>tyl`5v2Zzqj zzG*>D6_4X8{8SeeN-Fp0%E{rPHCt?*MMc-2Np+x#Rt{cCtLbSSS|m zC>KbKf+=`Dn-Ve=xEjTFODr>7lphE~m$X!AvA|DM;;o~XSlF0>1YUHjefq;{dRMun z7Fmz!D;gEZHZhL9G8z zXQpAQQBDWH;WW`SGz|l-6k&5>&3XBnNmRq+xd^oss%c?R8Cc$LzqWwUcc(-qCj)wQPtD79US(= z#HyI42g_pZFx{^qu6!K8o8-s{Ey%^YzH*I_pvQWIED)}O*a2v9lmM;JIPt#YT*lYh z$Gwv7Nmg*8;qqkZ=9~EU7Z?@(X}K$IWGB+p!Lq-=CO;k&+?nHiKz`({PEel9X#!8^~sF;D?H?eWDW_ zH}T1)gXOIHqC*h5*&L@3eC7$>8wJi3JLDAFtPV`o4TAYoqt4*p5zmMv>Mp88?4Fj& zL?Vp#=;a!u54enp4~glMFu{>nL2&jqlNnKu!W%_{)Jy=Jlk*-jXv)JB*g||l)>J>y zNkpN{yp~i0a!2G^1nH;_{5vEHA`3k(szYE1YcR*4(XCgDQ*aMQ&>5@KDs|O@Ryc)4 zr_Fv&--Rnp%;vP^8$UUgM})~JF{Zs9KqI!oaejGijlXv07X(}vUWAH1>kKzj|Nh9B zmFm9UOtC?-0=!3!R1yZ{Ejc*i>-7t&Cp`8&&2{xD7vYYku$#S3qK)q;C0(NKxTWC>aVqU4^(lLoC4`4Q?myClj={W4KC z3Drn2q}5}Dg^J;a4(3|14;@ScPal1EcBK|M@(#sjGu50;c2GQKPRnwkgE*K%2hT2v z3#fiM>Yya2BenBHkspquO7frB*YE$^jKq}+TLEtnIg+~4lJv)sO9XPYDsSY^9xn5k zE&Xek-tzz$T>t#9`Z)^^!Y|1oQn>X1A>r~YuxkZLUa%IEt$lqcSzQXU6V3Z%X;i@g z;u!XSBZ8Id&izBu;)CMP;nQdd**hRCw4NY4Wab$8+43-7G_~E zIFv=%%A%k&Fzdc9q=0l5;xm8wiXfL!nqgEAMoz0J1?Wt8wU)`$iH)^#J#yTHb zg$B=VmDGWgtwO?#*sVhL_~h5MD!r?2RredUs-ulOOlI=z28k964F=$b1`S*-$*|{d z1Y8dj^?B5w?l)?14YWb1uK5N_6=ENdxi3vFAQzxhjI#b}@>pv2-wsM38!bLJ(^#m3 z%wl3CC}g)ti>=?F5SNP((_9cUBI3o8gJI8TerBV`NzQPma|A?x3%J;TzHlWq!@l9o#5WUYTOT(%d=9i{9|n#I4Je;A8I zVV+2XT3v)JHfa(!qa@K6hR!Bu^e;;A4{>!qpAd<0!Gj0B!~gsIrT2_hDo&NV;(fkS zjBnq)z%JFDh}xn=ww+pumv^#1nkY2lnzZGj2GaH+%0okH;`ve&Np}UJ5>N==ih~)1 zsR5s!Moq3|ejmp^2Nz04iwD5FbT{O)nPL-bK{|!6Q*2>j1?IvgNW-8Qs;-N;Cxyj- zCM<~X8R;k6q?@o9N7329*SoI)8%jQ7$BkBv(E6rs01)>pw|y~tzsI!l=v{Y|8e@|9 zw-z%QBT5u;FU%7pvk2$Hav2?=J)tM!WH_882M9fb$XFL3t>^Q6r6F zC;B*B=r1_^-9PXHKXB)}IQvyTK&Lxw!5-~+!g+g@6jRB(YH$a!&-vPRUE%^&3hfLo3p3-9n{vx<3v>}K!kMxeL4c{^U3CHh;Tv=} zAAw*#AT!6C(Ax+CjzX+KprEk`0vHw`;BNqdB0EeU8-O6SSpcRI=TKk^0s=9oa4aJo z=z%xLV)Da~G=LcD%?1CMS|ZC%4@(LNPTNevjbi%6Nf;LObjso)S9c6?p3}8ylP+o~ zQd?m-;Wz7gkby=YNI8z4wdsJ#rlko|26AxUnM229b;I9G&Aka~{x;E#wiKnJ=JW=V zF9vGXG_0)LRrKz^qx?1iTNd9|(=l>0Ajmf8c)D2NAfE|3-T=(*J8PU1bex)wiRQ2A zm_WW8hN)H3LnypLdRxugvLiAK6}8XU~vgz zIpjz|hE73^`8Rs_+=VQBRB~k4WdKggr+lbI^C;$=)?`s+Nna(QG|WuY zna^;7wYS1bFe7&!^u^pyC9tFh+B%}jg@ z^U17pRx%CT4+LU~+lg#C)n@CAbx)~4)oK8B=Nh4NN@wlv`4DSW&=WbrN7*SBj<}3H zM3-LM!^WtGSR>;OV6h*nzqj{`m_qT%bX9gcV9{18a9;x7AzTX2AQUD+i*_h+ridZJ z*yxvkC;CkjiYJok!9_mdWI$XAzexO5v=1cy-()rkO6aWOBtNXQ5;8b-fS1E>Itss0 zc9V_1liGi-FNmDjpd}2LbACa9+y-Bu+@JFc6lgIrWI{5BgxLu~R$ush^mpUemcLul zJo>%=G*vFm_c68XjM3C_0n#_YYBDevR^D);axrwwH6t4~8`f7NTj497`nX4Lig^vT zU4!FWEb~W^_#iTdc*aXC3tl&!qMZIILYgW-(2~6oC|)#Dv@Ox77oQY=j>$rN<*lh1 zj_E^N$A<)Ige>IZP5oET+e$`>@4daKHMC!hu)J_cEd++C4O4pcyscNy+u9%-en0lzyyFLj;~73>m4qnz zIkx!89GJom%dg-vcg4|? z@N9}lX(~QA^%1-UI2O zcF5?pO89-^3?k~;)3IlvlGsx!eFC$SI;ONW%89q$$W_3otgA(Yyin5w<+*g=x``(n*t_iW@&vjWbWIi?OtFTf1gV8|Cm+1!}%$BEx_uR{n_tw ziU##RNe@Wq#|~ePG=dv3v+@C<<%6-aOsl7xzA(2chwl*8ULB~-Pjv(3lZWhV=qetb zUGZxwlXZ*VLp&(vX=}8YZ3Kfg$sYWwb9HrOW4YdS=@aMj>`F39nXJhRt&25Mic>~yGXiv zbPvm>Yf3XwLPcr@75NJ){)>#&Rt4GsW3jM*j?pW~W)#L*>LvH5RuuZLcNVEw!#E(|-UCP4qwB?`4 zLDnmv!HW>uK#7c~?jtI{nLh$CRu8qs!k;Iwjh`K*0MkY}KdPAA1?q|0jKn`5Bh5kl z@Cjnh8v3ZsNAv)vNFzLn2QI_2Nc#0-Y(v6R5o~Q%Y z5>xuGNF(fL+O1a7Om*zF&~hk8(r1813hZ!Qsugl21CvCz8J*M_pb24lztO6X@dU~! zmMB2sD;CJ^8=d7jewS2FF?82UiJx57S}+r=ISOCPW0HTR#}5jI?U-`iB9B7X@R!h+ zFEJaf(5*AnXE-$6E#bUz+o&Im8XoI2zrB~w# z@C2**9LSl4+n3y~?h_WPYwhYGW#Z7SkXcI*;30DmN{e+rHbUI$31F0YM6oP&kIDiM z&x8xK!?dYv4Mch}Dl1CU{1^|gH&ia*fcs22vGr3OVch9-BW40*3VgX(W*SpC(gs^ ze@6oE;%N*wO_}95k(xL5;lS^NrKDRh($i@Ff6+Izn=~T__ zdb`{Za9>5BqyRk}HVTbtZ)Rg98~sOjAiNG$aahPqyWLJ8PPzX?ohY$pAV$|-B?jU- zNj=Xkx;4d|DBg$pQEyQHMN?-}s-B;lO7%8SXs7zdmWlLy8n?DM2d0mIkv5=P=XZAx zwRu%+I1o@^!;{$6Gq2TKlt^~EYv@AdbCamnuEms1^dv|SH>O$Gn(7rbL>g_0Mni;> zyP0X8Vi#k-*L2a4>z%8MdW*FZ92257aeRNTP4?jlbYz`6ih2o0)f&=YL zq~60F#zdmFF>BoN8LO)S{zXF?1G-7|U$E6-rRoa8-yHxid08jV3&0`EBeOKoE6tAB zXV(l<9gQn9bPkrIS+-I;s#(lbpw{}yO-3hpQ>;}I&3NfKH{J7_I@V>uQ!mw|DAH() zA7A}S=nN7Gr@vTkoL1&jvcjMb=-dq~Hb_i#p__P#CM3PRQ+?q1L@D*890y{LlrND4 zBLVnPs!BjxPC>9lGD*~;S7>T1b?G>)1E`yg_+cIDM>~xFXxRsDBNC84B6zQAAfyC} ztSDeVnAHT;pX+1%OAD-C;7lx&RODnzW6`Z{Z6RksIKY6< zG?q7$p?Udy=zx$--ZG<2R7w4^=xD>|s0QhUu?8u9YreH-fCS!?EsD@%d2t@`Wq?|@ zC{>rzI27u<-@hUIYSfyPz4*0wwT0>0{!W$_L}O{7d3IAGZ`Yw|O=RUm00G;SK1ZnA z1>{mO+Fp`C!!^e_!76l^hTDO%r-ASzL&;smdaFJJXh~2qhG@6C7d~!DGXS`OQo*vo zR~WML@r_1`W;5C2u9ZlC9A^gPO$4ja7g8!G#@MxHH~9sFRmOz20u?~Y0l^3$v#_+T zMn?xo2^_fBgMdg<0bR{>==Ee_sd|AfOtp$x9hZ&hqlgSmGGq`y90?lo0>pHvr}=*K zCCMj|Ov>1GpSIMW=n3rD%J+3b9Kaslhj4f%32OR@Wj@t-Eie6m@pOiut}^zWJ|u0+ zf%wY|SV6_rGfnuO1iNlm^H1(X{%FquxRO@gRXX6BUpq=RpE4`(S*v|=Qve?#PY(d4 zxm5jf8u;eg3@s-_7=aH49eS8R6Tmq>2%b*-H3NJzuS!Ope$}3wmJ6Z_CR3 zA2w=J?1SxE!Fy85x=Q3%UdA2Fj{(R`hwy3V<7u zX#;raPm;`ym5Et&NEh>1b|%tj<9KjmT#-Y}p+>`aG+!;xSDS%InP2;~<+*C-%oBD& zvw9?#g5E$tn@C#9pB=g>uc?UzwS`)R(ArVNjKon+xv@->1;3fl#uLv3Zg}B*%ff_V zNkI|TNcWDDCJCguZ8K>>S%IPHw5QMmwcd)Y+m>f2>soKA^@K*W0;rh^s3Mhm)DjE> z<<4)iQA19!5?jOBV*NIu4j3g%5ojNxDv3QfIaQ&xVPKn_h8gI=C)OaN!wEG>Kc&{z z4krOk?1oW~9Zo`8#jh%0s0S3v-U20*?2a4RX~sG$m^B@=g$u$yj2sOPg;;(gxtnQ< z;J0IjP;3eZI`zx96`E3&MCht1HWkq*-*e-p+MY+L1#$p+9;z?l^ZI@TC`ZD8tE@(C zU`j7R*oefy%0Q4@3g9DbE2#UL6Jd|$#J%jxG>}9JKnYViWcCa8G#xHU;Z7n^jR-zd z%2rN1&1F-Ww>5+&`oAPom_^|d5F6?LnrVnHa9EE-JP78(p!h6}qXQu|fztoKX8k`* zZLRW;rg<%XH#HhCkx8Hj;I1)Dj6t6Vy?*qmScKUTt_l|%1ZeVCOo^nq0nG(86mern zqMEA@JZVLoI_WL!GEj1)7aiH6M`FWzq*aEl9tl<*zXLQd0h>Ky2w%lx1TL-`Sw-De zzg6j~8Hc(*RLg;gMMfaFFv1!vkajbXq1EbFd{{U!wPwQ%QQ}jxhKj|6he?h^9yDBL zQyQ)&^@E_Z=5exiDR%3=l2~*h>KUEDE`VyyCeVQ(3&K&C*Og>50T>3ybZN;?4Uwkb z4QaOo69Xf#CzGD6RYW_Kl3J`%%xpc}b&u&%2XsQoqU!ZyszDPQqJ(f=-H(;ZxH$Ki zx&c)+C@YA7ORVlA%kmhj zdnLSPO--*4dR?31`)He3hV{*Qw2d__GWY9R+!d`^NW-?ZsT51|6ak5`gpnTUH zqR17~%AgDlIS7+4yH}L`W923*t!wMTU!=M^u`c!}s4jLKuqi=N+Tb$hVnW8a#i)pB z(#E=S^A*G!Q04qYmA%-#SYp(m_;Vr1=I_#gW!k z!CO=ngoV)2nYGY32ZCi7jsOe9Ou`zNR!PeU0}A9k_oFx>n&+fX#VUkNW$aXu%ikZf zU%c2=Sb~P$XbQA2M{$q8?zHfNiBZG6 zCUw?o_*UG6uGf$cTXH}N4Y-D#8lBT{v2Pq@BeVN#45=hScy^?tE{G-c0MhZx= z8UE4a1zV-)NrXfE5H?HyKc}RhSLSlX2n+z}6RZYo=gJ9jP^F>_n7Imz&J0q&=e2ZO zq(6Vz^U3?m-p}AiWpAwc&l?wt-etwDKeLd(od?*1z+2lcxo4pK#X*1`h^-=p#pv&k zJM`_0`<7`ZE9@ZCNwTuRKuGy16tvJ#zIGj72n306sqeb+4n?ls8)?rjj7Z1cOQxwS z1s8?}V)Z|eWsR3H=Gt0cGv;TS?=M>#b9X%E)|xRR{}nbh9&H|jd z2+rAMVvD!x55wHQ?)OFf<}qi>SC4(p)8Ws^6<=|7Uj8G*8=zB@Ix^fn!>k|yHwM8w z?2rJDpmb2bFz)H-1XMDm-xdP#oON_$WBoj=PcgVk8=H|g*X4gUm;b4>C3Z{wl>wc9 zwCI1mljZCb#6}5+fM+X3`rS#g^}DYvvT!{nbdU`2k>F8A+@2}c!)aF0x2ps#LGB(r z!Z)%3qZKp(>Pq$`&!%w8D&s#C4wT0QdXwEzq}M3VVh7yGU)U<|`7YL@xGWVNAp7Xu zx12cf_~(gQ+fEq{3!n(I(LfUF0^iXFnH=L`nNhV%)DBp-@) zDaUXo+&H@k{Xxv++Fq02pm;DI7R9Djf-eSoIJkkRki++vTdtM1PmYwg0~7#4E!*CB zbegCe0<^R@d9&ju1!kfebW%D;KWmQZmtJ!i@f-BA1(XGDD3qUx|0|LMiT^jb`9ZVk ztq!TSIw(6k0ZQ!+3TnDtFmu7ymFnD4ChT%=wX-NZlLq$=44PZI(RmFFh(C+hl;E4F0YI5eAksa5~Jk^z#d>^8DBNByNbHw=b&q0u!hQozPn6H z)d}2BEq3n)z`cDM3<3vGE;P%S#G(1{{nIHg!l%!0Tip`A6$rrVzk=GlskWsnIrkAP zegw~EBlPO&l9@Qo0U2;RJt_2Ok;iD9dfXHm>X;Q+LqYZ0LKcckU*_jC{@Ii|7aPPl zRx2G+=-_T>_rH+^|0BfR;sG78LLer)i(hbwf{S@AxCY0%os?+Z8tFuy z8g71X)|U#e`WdHo&55uF4?` zELm0vPxTRXu4z$g`LtgFw%zW>Zhi>F{ol^m&hHcEiT4G>z`s*-KV3C%3Lu+^ZjpPK znK#qcvYUOU?Big;H7U}#p@SXM2+!J?3cHd5g;4IU;tY6j6x33`;4t>l+xtcVE%7aC zdX_(lvQ44j+bY4Q7+r~lh};PM5Cod)K%?7G-yN_r+F>#ovJzaY8p!DLdhPqdMpt5A zOtXv;Doyd*IzUA~2nXKgDP;7DF*nv6Nm+6w|gFicLrUQ3e%Z;gQS;!2cyRxFB>8o$Js$~0 z(Jt}hOA|O01iyinUYNY)bqN(!OREe!tqLtv;DiM46E#rnKAisrNbWicl#ag`X#G@g zZvEXd|M5Zp7h@DqJeZLgm>0&ata5S(Gfbsm(0?K1nV9tu@Zvj%xcJUNExsdKT#M{U z^`(p~!z{K#>D1Rf#;uf5k1&5h0hflTXxVorWZzNkAUva5GD+K_(Tp>kwvsp32T6T6 zN&PrX6>luog5B&MkZ~iU#>Vop}KE!iz{6{C>KN;RHXP?p2CvgTs8>Gx8 zngdXqCx}apHw^QGH%K1-ti@umlZk%g!b9VQV+4XO~fc2dh)s$b3Tgd@_jHmy2~l>812QZCW-9C?=-JU)h? zq|5*pfy?bA_G?P6>F>(9vpr8dZZA@KyniB~Eeo=^XD+|V=~MR_B~c$S<-&1oLB-gTmJ z_%M1KJ5M;y66L0+U!?g<(K+Pepw0&KwzZf)iB7ylmo0bD-S;0YJ9G; zC{rMdH_8x*Q$h@iya{MP)*+~XA#FQZY`xB?xPIk7`@k!d>nj}uzA+Qb!ItgoCkWi*sLEOy!ZYL8IE$oQ_U$S@$a({ z+0{#b1Vo9Q?SGi+1T#L9!XgF=kI4UMtML0nsSx|5IK1!x29p0HlrbQl0-+37op`QF z$aGqSkgp6@X3-Qh#B4%ukqF=f1``WDZZwdF5Z+>dplPpiyc|HzSei1z_o3bH%)wai{l7FYW*GASjQL3W^Pde<{bl z$>iN!&>pYl!qmKj3;g?STrdsZ3J@vDwtZdph0ES>*&QxRlmxfmVQC`&O!&cY0Jipq zR}ENs^#^QtejYi}%6}kycb)LWpI)1P3Ti#14-ZKd^~3kzMfvwUrfI!6$jJcyfISvD z+oM-PLvO8%zm?wkeg3DN(p^OvGnLb6dZ#~c%RfHF!`SMf>SsCH`FKU_nHsK6XZqEO zzrKbFdc10~&ADvxABiyNEzn0zrF3DN6)MiT14_f4< zpR=#XTI}x7|J~Jz?FZ{I?5@a}T3vs1wM^29_rr)VQUGBLohBvTC6)3oXTfT=f7X7&^|@& z=&C<&%O8->zh7h7yOBgjOqN6R{vG+LOk|tlOAY`CkHfcL=3B9BLuP||t(*9zzuKUL zP?Ww!5UJKBH3TN*f4EgnhXC~O!ninkv6LOCQX}7}2ccIUQ2>%LajBw@b&b?fLHm<1 zzQ{0+y$Ih;z@{--lj`xjgkD6EHUahs_d_W(io%ug%>xPU{4VjHm=x=fDzz{JSGLVZ3l zauDCOzG&ZsZyWSYA8yz&rXoO^*4DHar8D2X$3-SyeqfU^L9}rYOx2sW3N`4hUvSO; z5*f>br9f1s@7?(aJ@I?Pv%UFok%e&n55NN5iPieibu`H#eVE4oWMFr7(9el}0FG(3 zJ%p#^;iz}g6tIY}Hb}+vgFN)Mt8mzRGu5sTg@}$!RRoP}Fg!X%Cz@&~G1y>r>`1<{y&Pj#>ZdK)%X)>ejAcJnZIhn^xAa8hN{j`0_AO-D$$nYMzKChc>W zI6atbhwuUvL4st)VcD9c1UBX6cbshpiPGWXkQR(H!@QF18`^}+hPV+lTE(U`ZX~Es z20ji;Im?J2Q9K6c$F`XaOi9y54Z?65dJk^dRiiWA` z1F0gZslZ5z@5T<7h&dRka_1Pmc~qZG&LhEBq1SrrsZtd+NCSBoaB|G5loUWZCKX<| zUk)^Cu!hg-Q3^_9JWD8PAn-j>6YrG~rN(PXpD}qbG6&kakIa_BpF_!sLI82%1aiLy zf!5+}Ur1RWmmS8%&p0kZ$RT@5Y}^TbyK${%{RSzBt%a-T{F0$Tq(vYUa2+i>Mukj5 z!W4%C5%5R49zjfY$`pVCmS8OHvqvHv8P2$-LT}E7(v(Jh)?2`%Bf~p3lV2JJ5!4>= zxIc6u!gTTlC|<{r7~T;E5v~%y5eDwR;RFB4e=dfR_?D;bAuMDFqQ>Ci7)U}<=z5U< zqC!bRu%z;9As3E>0NbY?Q6{76?$0GQgFu|>7NQej87w_=%-S#Qgzi}w3pY>IH~SBJ zw{D92HUFm=f2lm};bwcd$*S95tCchiu*YZnSET9tm2I z`@!UU{Rr>x_^JK}Q|hQbe&<$ch>1^q`x*ST)tA`M`czLgC>u~QOq1%cSJ98uv{btk2@6dWXIuWHj6`uAld-eTQ?U^k*$OT$f@25jY4ohvMne}sCB3uGU-raWYVGFOXJxa zE>R<2aWDW9vudyjrutkk)^4A&v34Be3<}FY5cC)9JbWF(7XQ#}z;C1r`_pLWoeZDS zkUkxK=rk49GU(#y`|Ihkkd!AYwgs)JETMAO8n|0^9{BNBArL)U=4^^$rjmHb(v>9sGh9ugXpa87vLI+CTJgxLep$uHB4-p(pHG z{gzH&7@i<2?&3K#8Gt0I|<3Vp5Ea`uRL3$va zA4T9N0~oszCtn`z-Tv$fyCQ>Tk9I}$0;81Q+J%7)#m{qD0+gW&*!zWAOxoR(YDKo-p*NclV1Bb2DM4)43P`}MS z^tLCOm4*hkj>QYMJ$Z{Xd2sR_Xz=l0B+ww!L2ITR@sRl_(f%P$e+LDdf_~!uLN{w1 zhPRUzENclf0>hI+Dxk3?H+gx6tM5?3KdbMI$YeH!!>u*8ZouyG%8a<|gs=s-C<#WX zpB+m$*6i^%AndW>Bo_0`*THykGBglmpFWy`A?K?9H`Syw6r1mF$`zcvnK}>j<8>SSM zyhwFbTQ^7~(6wo9{A1OxQs0S+zle%|`JPJgwU`CY;I+GKh=xfKTY(y(V?MAF$!Mg) zn$oM=L!WfvI*^Kr`jm=KsTgViR9GOu2EH|VZcmIvJv7beB!+6&pEUjT#53?RB_zM! z4*CW-<$3Tu6{w@O1X~n>M$j#4@B{(tHJJF8$HaS*J|->&$%~gm9a_CNFqW5V>C8Y& z%0Ao|S`xG(h8g>)C|nlAb-k$fuYNU%O2|V+>l)1gYciAbJbbsR}&v&#ZyUk z71M(LBIFd0{EHouR7TlL7LWSpM4l?_576Nsf|QHV;=&)mJ<=1}SP_kr3&g9m&A`7g z+YCMUilr;orkZa$cgMz)TUAU~Z}%2!CeBDyOYSQ4@n;wAy0P#Q>&|Ef z7NKuG{62PuDE-O^w{KvFIfloIMe+ByLBM1*m#T8nE2=5xHpk1J@SJ(5HtE)6>~Z`a z;_L1uLbe+KS~H^9dlE5=@7A=wcpn)z{zmbO)X_p zZHo}Jj`Fx#adp*;m`LNpg2Scdec%Q;7afarawoFzjb-PvJ81%cGhM%u&650e5L1&` zZjz{WBLFkvuvy%Wlm5dE!XEO|uf5?B==}_WGpr z7n_%vQt3w~dJ$YBn)}VIYM^NI(xQqK-`t;XIGo9LE~DeNBh%TH zK&+FeHFt%bc!SDtO~L(@`z-PqsB=RPD3X>9u9cOePn#g8HQ&p$0(du#MO9=p?q&|_ zg-2aeofC*!Y_p>f;thV-AaGNM_fzZOZ+fMhfv;k@H{?&IzgRK77F)8mFex@KJ&0Cs zNcXJ(E(#8J7Sos4(KT)@Zr|@cWaISY4(ejr_LTmcUP?E=fZH)Q0TuJw8cYA0oe-7X zp+C24VXhW)6jNcquvDE`Xw#+?G@};xp9G7!N7FLMnmk+0iP6S?x^u~{O)zIiNkAmv zPQ(G=j_h{iScZl~laNg~D&m?7K}Tm5PaOdOr#^>jo*-F0n$0JKN$$yV`_c5)v zCfJOLbrEao%P|)<`Ns=9TJZOzIGNxnx<>KZi0DP+?yZMmH*xyyI7PEdAbSN0F-8C~ zea`f2M0O%_f+sk$eEvun~Zy!>0to6~qLkaIn19?OXi2!}`IQjBUJ&^ZS~M zj*I&akNq`)2_yBQ@&0iQn~p9L@F3F2?WWfGCFn`_zEoHn%9wZ5+iRW+ zJ(>n6SD6STC&!Cxfo;6roV+{d^h#&%h_6l?TxcmnNs8QZ-lqsNc~b%(t{1NX?bP;5k`RM_eL z9;qgfts4nfc_hwC{Hrb|b9hnUV7htE*U&+`{Cu{ z+ZFjD;)O=aZPP{i5Er~GNkmB5LM^ozD+xDtgGRYTU5xfIfBD~_S2`!M+?wV4^GKuW zqI2eQ9x+rGqgxRjW<6QBsq`M5(iH3Ht?+k|igr`$x~=xPHq;rP9sf)g))iBtDzZt$ z*bI(@G_!UgGT$wDCCl0oSPQYbIlU*BPLhJUr_H`XJ0@H@q1($wf+!> z$S=ooGsiC!kPC$|3a?8Qep7mndd8f zsqZ${FHt_!e}NUzat**qwJVcDZG*`=NvvdekLsdV>Iw^A?8wTCe;- z_-R$9$cU6(t=Vzv(huq)-{|hb^Jnbp%PxnOw)1}0-p{FpbJ;cGM>9Isd=bN9Z&k`B z@mXd+VmBr7%a&smPCMczmL>R{<;+G@Anp{sn-!AK4%94#gVOWUR${%A>M8@MRH)KTSCym8MyDa!6 zwoVFhrD-XK9O2kiDWf&guZ-!^G7v5HwcBHV&kF2=ET1Ech*|Uu`$Nf^F~a^eE3l98 zTu2`rf`EOLf?%I3u!2lL{M}cC{m~xw=Ptp1DMCP*5>$HF2cz{>M&O#&M}Q5A;eJA} zv8R$o1_4+XIBQ~fAz&EyWV{sjoQ88#tK)wBMwClm8DlBZg=ieHn(^m86hTQ6&9P#l zH~W~I>P?YoUnlmCUlYEu_J~2^jGY^^DRu^5d@@ywiEi;!%oOEu-7O%ZR=}El#%l4) zu>wHX_*L4=OkAlQn7H5m9Zg*H@nY%gh(euh1E-U$50h@%4!*q9?4R^{z2Ey?Dk)du z;tcF|Qi7uBuU-6v-0a~(LO`1iz?nFYI8t2QE$#%~;^|LaBW{anhZ(C^mj5J{9l`B5)^l3}YBSL5@d_#P8TQ&remOg`G!KyCa`fzu&SbHgWebII)o z_z&dkIrw1O_TgC}@@J-)0I-5n4V5+SwQIPnrG4L}Z5S7$16*q?o_%8Psr)sXUvB&9 zQ!cvT1ZWcsu3fqTisj4g07pNPofDadTRCEQzWRAq$dVQ+pzZ zm}<~VC6a4cUnMEkij$C-@Zp!jf#uQ$Af);lsCpK!;5mdJ&eaGT=`ZL^8bSf;-cMFp zM&PIOvK^VA^;ZAN?pb2jvVTK4qqn;eo!I44iRu+rXlJK96d0fR zl;JoPhRqM=JE$n=2zEPMAuJ>KgpyE`X;0|DpGhixOY&L+g|1gBX`w zGS#Ijy+p!OLy4P7?~&fijD})^^U1x^35qmF(|09oTGfdD+}(9e*2ZS~Tm`JR@-32@ ze2rX;5RkNH^;)ewuo%Fby7=13ql2yGeDWyWbZliF(=Qtp9fUaJp9!NjpPU42hN~VL z*rWzvFzmgQU(UfCPY3LMpt|1?oq>2l)2{BUL_Pf{`s(-mHV4x$LROB8U47@6a|X`c z{A`hPpblo<=lpC)-=s|qzJ|K^uVzxFB6pD|eMc3KY5W2EY9n2PXjX^DvRypkCx26G zXoZ!Eed`hCbLuu16;?u~JNmvV_7~LI46%$Aen_Eelsy{P%7Yr!#N5df`Keh47(6nd zOI8Nw(#I3^VNM9MbSq8Z?5bj|c_#wg7GG@YM1^6Fx(&V7@7v`^cP7bp^NnPU03NiI zthwFS(TZhyLfZhoM&SRu2)E*qthY$ASXr1z{9|3;WV2|KI-KHMh3zd5lW8*olx7f1 zkqB`M6?p87nuI~-1m8YsG|{_3=6Tbq&(YeMN=<4`RQpW`V2vd>9Nf4!v3***K;|@m zV9nZ7OXU=KX0L7Ac71~Zp!c%8s8RHI3ed_43~ZXLS}ScG?H9h|PtI#q7e6~@Mp4<+!usqvxW^qm6((;qYI>6wJO2kWx|I+IXqITl01%F+G0 ze3k0}f+ES)hlUlRR&Lor7*-DT5Kx&{l5Jvfu!-^1=rXzW@C0UWs7?79;f6B86g9#m zDtBOCQ7e5gVt{Uh3P$&HW)c;a*@-+oYDu%fV`4FQj4~)jjOC~LVx$##L2I49In7zV zX4^e#IY>VuhFx{r9}DNLwyWHI`PHYN&98OWK517qDQP(*oc*~^xL51I)2Yt z@KdtKNse3S@(1A%&wvC5u-#qrxSKm;x`XnGyU9Kir;m>diu89Hp*3knLDAE_*tHsf zj|-m|Za=EuDGbW;53KqvWK!S+K#9Hxl>Xs-KLL&iqeb)^sMItN3F{GT&6XGs?gix9 zGscPft!rI7q|s;f(d}mmjj^mR$&ot}ok?8{Ba|2plR|CBcN+~K2C`{&=(;LkOUuv+utbh!*g4? z9R`NaYK&@092%Kz1nHv8qsm4?Wy)@O;OC%{MFXX}@pZ=aP4ol2-|38j-Cjg215&~x zmA*4c|CZTrunbksLffw#XjC~Yq(7GCkYRLp_fRr;_tZC>jB?)7+ia;l_w8tVGz z^&x73@WV%WG_U-KF5KE#wIqJd{^M#T@rE`~RxK&Y*Ss($&$6E1vg*R~ByfZ6{AkECUj+Vhm7emh-RIWx4o2nPBv)wB)PCVh4OD zO8>HsTAgic7P<9|2+j>^at)8V(Q8(oAWj&=H%yr+b8IaWOV-MYLsI8>!J;7Zz-x(4jj>@zFVdyXAuAj6X5 z+k@Lt`&jz#CNiE31sy405qXo()CC?UGj^^Op@=}X;=z4P zMZ#25n2O~ifl13{(mGnb@~+T^s7(_AP4uCMCZ4%-O$siaRzVXbF$|lro8SV~eAM&; zk(*Yz@lYfCJp49tYG6Aj+8LF5N{+f%Dr2aEyCBsgJmA$;?vw;lVw5eT!SE=8MNi_6J2EQdy_o!4RZI8IofVf`AJi=PSur7e-hY;j7@LboZ5{QuPBLHx3<8+=Lvncta zHmdR=1An@OKw~;#qJ*oLW4bcEH>T#7Qx5?5G!f0-xN&4e0k!_NiX|FU(?X zrgzABPBUo-!>I|#$fW;n9>mfe2Dqp!6{By-#@h8>#~|0TW1d{=$pRe(k&x>zeA}Fi zpteDB?R9NsdarASzTvL*8pPOLHaLp&hsR`V5R=-e3zI0QG=RP4R;KrwLm9-R8^Yv2 zaC1z<^~RnHEXX>o(<#iAbSeTWB$gNnQ~ujFA=A5CZzWyqRkLXIfQ%n}&y+15;@^|x zl8qP^?0vm45}$zLE!xXZ68P>p!Un#TcYfsXjSB8DeMa5<;*Vd4wU0Ey;Vt9u{iSAg z^my`c_3g>qSR^h)#F}H3kYO9bMW%@IG1QmFF(LdY{nk!RHUY7NA1a=6@%AKzFSmie zvPj}WS5Hhd{p|5SyHK5OcnrVye52{#&bahkzUdV957rHZb3r2FlE?EsgT<3LD@Jmh zvHy;jtf}|Ce0a`HsX`f}rp*4|IRw0&gGX3uMwlEhp0%8bA1~^h%{518B!i1~EA9z( z57$P-44H~>4#5rdK;D_AXh$wqz7Rdywd7e5o?sHnp)Q63-vhVyD4@&Tjw%0d+`8At z?|vj(SNcZaoI6DiC5r+BqadMVMbkKe4m6&3U|gH%&xz;sXD|55HVO@8Z}*lD&)GGS z*6j_}Z35vioy7~sDhpgw%k{bNWkn)kD&Tok796NS;N`>EGdy&RLADX=H=Ta3!6B<6 zD!?7Z+u2H>i$&%5OEatnvO(93)iE)5X?8B)ysAU%{8?P;7NcS>iY#l9-)#OK(zoj^ z+de(+9?C{%$14wmQkHA(+I@Ze9^DFR%!^L?WEUA$UL-*r4V_MQkJAgy1Vw#Bx#)oGOk(K^>Qo6t$bW5_mjRMD_ z64NS#4r_t7xYefCaJh4`t2_N;^O!NDETaG54P(^61gndL-2 zVKJgnVN)n$MhI`PpeX&wjQX_8BWZW~vpYHF0=ViDe>nZZUpCGlupDY}jkd)>hq-)& zaf6PU5HQu;i5z`=|Fk;8!vQd0!g^Z*>sV-?A6$5TW~XYwVc_aYgeWQa zkmK8K-E|e`)_s_JjeV@4sCb?ofBLUR(>EeF`ms-S^|i+{m#(s2;v%at64rfwxjrH` z;&p9P6UlKR=-P;8I9nyHGOLbxQEFH!iokNyg_fl`_e zDrK|G+;l?;|6!lRTmwy&LaXMoD@>{TP8x>f!6mfa**F$c$k4UGC?n3(IG9wI&}&Kw}ZiGOPW+{sw`E}E z=BNU_9+9afQ(dr$jY#dVqCE){)`3_*+yd@bbxxE?eW`dTLO4Fb5_=n}ouj1M#*$2^5qb=>gqj1W z47wh|3<$lc(6;xnH=%-PxeRMocrwI%N>$pzjLW#Bkia7$Xl9dv4C`ctMN4AIe_PMO zW@qRke}@O$l*&fsrK=1_P!#8*oPd!cVh;p}Cc`xr^_5h`7mVmmRA?ye$Wo**-{Sqb zp+N+ICkMVCc5{3`RsJ2Mj#8QKWa-ZN-}IZ>ZznBxw_oGmrDUq+v(FCx&7<{wi>DxT>E*l9Td8PCHky*KaDPj zgm7`-KpM^p29V7cs97Qwp5^F_a3SG~#kY80!pUO91rESUTzHwy;iKm{wXR_p*c_&B z@$c;akre2JKuVYCrlxKVHncfHEUPl5_`#*bE@Bk#0l^O4xF#19Tk9&Fs>=dq>%Nr! zxKPUd7<`zbu$gO zG~XZn#D??Mi%Yn#}IdI#I9 z&?q$;(=RUk=WSxiRr&jmlAP!^4!si`u#$fIHS}5hkJ?NS(18QG{PDGw@#D3(*QC37 z9@_Fd3mp~k7oCf|)Nh92k9V>!h5}G%a82qgA$K)?>r8wuX-NpO+HobGc~ zJJrR0wU>f?dor7^W3=$z2fHgvkbqL?0sph?f9~@?_woaU-|efvleaI(IOKUP4Cn$t zh!Np^YO#P9r_cFtulZDOH(fqFN08bmT38@ptO!TypY_s%oFjnjdN*|!*EIlh{2*A5 zA56cxULBE5&$RuDIrvSQ9+BOLzjmffM^D7;cY&5)*dn?d(JdQbkAn0^-VpquFZfxd z@0!=|A^`JqNUJX4kFkOPc>1gmuCH2p`!B>E>c4P(1}|i~Q_Lhbit&pYCn0@uG@QKt zlHBG)X@OO!q@UZ8H(KsoGe$5`^-yi-cGjPMF*z>Uwg@N9*@MJzS zoXzv0^ZE4Ie6wqx&$n=1XUm(>tmp>`q{djvn6_9rWfQ5~I2tweVst*=^iqvgiP-L{hgoAdN_7^{8d3{w zax(%RnZVRBn4Ul-b5ntS@xfAT!%`fyqwKoF2{{%~j$`=!I_F(FsW6kI7h|$thVu$!zzAk`X<8Ztyse z8>z$R9!lm)6KzHLClR3+7Zfw((?Va6pH;j0J zRmelAfr4+KbMz;4s*r0Ht#MS5GYTL13p+1qL?xd}acxGHk`J&m=Vw_$BnyS~ax4`P zwB!>#-zo6#f%f!_uRir7-?YooMVQcx)~nXZavA1LjC6#9P2QWw=!AEyM-9Ar>avKl zdxg@G-ni1p4zrmTPgPz#CNI?G#Y3})5PrmnVKC;zWAcZbc(f~TkV)8JS@xTBRx~eR ztuYB^q;xP?D+dGmEWq+O{VIC^oD?7_xCzt=PQv!rw&-?ki`SLp@se7{{fQ7M>!^Sh zK)W>1be$+Bl3{&+lLG$*b5`=AjQFvSV*VX6=&rVC8eQ2=1Bae|o1 zC|pZ;6i~)kMDmQDztYAv6`+W!6ipU-nEy*P-?BaI39SoaYoE2y(!#G$}`gU<9wG93`8E6K7))s;^ z9FyG#yL1z~crf@Qw$sy|nR=u&_^(XwnW@*OX=TQU#6y{gC%(0fA+or2krvE} z3M!Sw-fp$-H^Z<}PWl)Tp}%3($Hqfu7-9w*d{{!V5VQW$L=oQf;08~$MYriF3)dEV-f&bNLzRBuYtgi>Vt>|Pf=L6(X& zTtC3N4+LKqc5f4G{Vd7bW%`zIB>aa=33vF=YdY}wdx5u=MS{d&(NW_lPFNYD$2=%> z^oCdc>a*9LI!%M&QII~b&IbT2at$;?e6XAY;~G3-3mik z(ogmv!BIf^)`9nZb~4CPXxu=9`Fk3FG)bxiT9c3vT!)!w9F&tbU%#lL6nBvdQNF5^ zjc`dUSggR1Ic0#C8{@zV$yZ)E=fJ+I`J&OW-pdP~F6`BTW!II&@IC8ntpOv<&JZ)F1ck)kfT3l56x~<|C&-L)3st8{xn;P18kPf|r$0<_SJf zE8LIoEj;=~1@IZWT1H*Ft@V{Q7edAULa66a*Gex+ZF_X_P^-9r`{yHA9eJca;xo0R z82tkKCe3P*BKzN9NR65Sj5eiaUL~WtF{z?`7aKYSUgRlQE_lNK zTMAB|(756EPP$%0J>7J6}l*v|@9)c+7OJp6uv`=<_YnRREBj}=+VNk_lP z@*d1AnrJ!a=vXjtRY48T*9K;57Iu!g5$j*71SVI2t0A$ZVS0FkBH7hET*28<^O_~T z_-{x!(7NVAOXn#03zgmn{F(s%8b!!YlY||eK0z$kkV&k{+8Vbq!qWeQ1DpMFd}Hs3V^FTIupOf(;>pENy) z<#m3w$tI|IoM21TEcGl{BovzRhZ$qICdG?MS!}XA{xOPkZbEIK3>pz`D0R+~nNm{8 zN%EKTlA+JnRrJl)D5x@;}~VtOn_2tqrHvaJP~Ic2QE z)l+MAJuWVrHgasvsKuAVM|qJ3d^ta~_|{a)atyVIn{u!`>?mqokjtJ{DRko=_K&1=uOQ69Yd*CJ>EkSStO00&^C&4hpvg}UnE^t1Vtn|e~b?GtR$2WU(3t)BsG zXu*M)9f~L&^3t%fmt+aaYbcdY*!JG}> zM(PKWXdJg8Hf#wl$bF8^F9`44J9u{UBKTsZ-R2-b0^cs-=ze!%iGh z`ZOjQ5&6X-$>;Sk#v#$iEpZ~!b4bQS+{zRqJllpUhK)y%5BY*R6$&;>D%|nUngcA7 zL(UPc4zkFq@5>YN4@edgfKn%V>LA=X*cVd3ccY@IZQU>pR{MV64LETJAvZ3*_=~^$ zi`@7j`RaG|2qD7Ls3BpCPpwc$@YLYz??!lP)YAW0W3LW&D%z65YLmdS?4m-}NLvy8 zN+o&c)+ADOTkL0b_ zrm@*ogg6BTlt8qNUo(wu^QN(FZq{vkBc?G}96QSg#R2=qvA4yzGlG_1TS)wx0pTPiyre9GnwCN z={;oE4vX>+Xuj)R#yES|q~%>ZTYG29@J_`D=}M3fVVlN5j_3$WRW|FVc$sF_D{@J; z8OU|Da`n^9YPL;j5*r5cZ68jvd{-(h8qRl>PcwxgkXXKJfSj>?gSU7R0zd<@_e^>H z>+fl^k+;v~)zjIWyV_MxWmmiHjyFzc>g^g6OdsPhGD1P|YRP zhh|q)e>zm(%2YktW$3Ra`zK`Re;WR$r5_z;Lltdol0T-^wQ&0y?>k`O(pP@o)59G` zFZhE89XT01o5zSMrM?vro4toaPc{~8wlvT7NNQ6&75Me9R9Pm}ZRVJ;h(37^eDN7D zzJ@CkM{v&}E(j!*;>O02-=omwsLddDG#m3c{AE$`H7c}Xnu)&+w<-z%Rf_U(9c ztAE!^CdXS>ut<|5QqY*|c~l#L0>3cLcjTuD1hH1Z77-z?>B5mXKFP}1(gj}XW5774 zR2tw7hkto{OHaU?G{-x9-B_M+m9b`|TAuZf7@iG<{`|DL088^nDlqv(g%Jd$kHQzq zQ5Ne_7*{)V-7CamY#o;Tp^(umEtFJsRy?(#DKort+AP$-VL7E9+*b7$;{ySrMlJ!aJXw$?MwB{ z`fTvOY|m_Zia=K&Dqz<@SOvTPvmhAS19De@(1Uvr1j~PUEcD8hqp0y+edJdi-&X>{ z%V6Q}0>TO`h~{l5`U5{We!V_j(vIBi zcGg{eI-hm3XILb!@lU6IiiBd94KHLJ4+z*c^M=l^6aCN=dASI1!ezm787OA~qhm#^{s_Uopt5cd)M>STRpkt%g&_U_mmsVbFA^x(F-N)qQXHjytt!J`v zv;J9T8^&zb|DavM?*SRfgg$e~8l2bO_o_@0c~I=cbMgmaYf*js<-U7mY|F$-yqvV( zwg!TIu&hv|)vs%{kD(&wsL^y;P>}QsuJ&;V0^)i@8c2F|r=WCTN3@zZrMwPIQ~e?? zocHOtV3vivdKW#sOip&Jrh=fjX!???y%gi2^pZ!Cw#1*%V9?hHMUV=BJt-4!kh+J z`Kxc@E?)vjDBW@p!A!SFw4@-xEFx_gkGa2S8Zy)*GR2Ky+@E>vEi6VMLups~ktx&E z=jstnU5wXV^3_J)Z)Mu_BrSUacGZ)P zaAB_1Lp>SO0o-zlob}^6l(x5Q|? zkX`Rp2N@+Chp&qDCMh?(Zn3XD8f7=&#&le542QjZ>?kjgT!&a9C}v6N9My?c^s+?b zyCmD@;S?R(dare~JOYQSfXuoAIGSmC5yo+f$EU=9 zA(K6o6$|BmxB0}0T0j#v2Pt!C-WkPh8_pLfb7(%X|Kq9MhZ4i&YOX%H?CfK!QYSJk;DW36Uh7ZVxTs_hcHynxYSad1V zZA2_hsI-VJ;eXcpAL+ToGlp}6GnKYeqoxEKHS54eC9c&U3kfx;C-VS;+i`YIz1mT@{rF$3|+ks2V3ASLbfaMjd` z^oY&1|M<1}l^^qJdZ9`24c-!hal{c-JAstc7{&wxxF$#;8pU9SFwE))oRthEhjAj1I0MlZwha4znsY9Yhj2yR`-HYYl$VLj;>p3pvf{EyxQKS(irP$p0r2Q zB{s)upL9@d$XAzaj>364DoT?=KE1L`LOzx@{n-4l;B&~-s*Cg(}NFQmjt=_edde0o6M1%W$GgQh8m4+4oZw^f`+2*Y7TLX|jNlpuDgsLqI6zBuF z0CWkB^+m6@n@iXAbc_KDJ1^HSr=J+tUE$W6W!fbW!e`PI zECvul4jO?0S`GSB<~@L9#wW|YdX8JT8_x>&+pvr)dl~>iG5}{Fy5)z*fab(iIXo7V z1OVP=lGtb#<3JwGuQSesPOtf+ZK7cM`^R02X_mNxXrrc6c( z14A>}rzzm1+>^LX(!)(Q9j3Bu?HtW9V{BX@DpN80lIFdt)Pz+ePUj0jj>cR06b&>f zDpk&i(!R-R*(BL|P2zrHO?s1m*`x~5Z;!Sx2S9|HG)`zN!cW*V2uoNqJFd(X8f3@PBVAZKC|Ys_G$gKE5GWjs4J4>D9cXbYxAVniYepa z2#&N0XatFLtfTa+2Ac4SL6Y3xvB)M|JEAjIFaz*5K!m$M@W9-8?LDhPGuLvnU zDZ?CnIqagv0Z|5ITRP*(d; zvZwek;)%Z%omDfJoMe(v4<>?To6ti%CDC?(Niu{@us%!)kQ)XOOw6(EAxT(BO9~z& zgcivnm@L0Fo#4RR4QVR?kZ4DR9Cak4^K47Z^94gHA{3j3MEfT;D9Cs6U|Bi67f$`AYGE@$RR#pzpa9U9`qxP-dx{fc3R|rVkD0MkJh5QL^d!*Xg7#onN z91w8HsZa=!-t>C%V2(~@2?~`9QUqe8($t1gBOuDdFmIHLY_9RJF=#M+b&uet9|utE zAtMuasMbM0x^8k!XTWC_VDk}%J1UA*NgKu7Q>wminlz_j#kZJ(gM}HGR-sQ(;%ZIgHaGZaR+fH<0p_aw^V3S0PqH0E#+Wm(sIg3 zkbyay%R(z8tsm004q3Wk*V6sU>%lF%X55{z5_dNaU|oY!)QCF9=0!ak%m+&Rucf49|O&8E!&upZeT?}Hp z+i=YO+vr)S7P-Uw4b_&eWiZN{Vnz_wr5z%v><~E{%Gs66UX*k7w}8iaU;USM$;dj8 zo5+EjOdP3fn5QM8Sv1A`;pB3L`nPc}L{nuJdXm`7X##maiHGTC52}1moSuyxHKL-7(|>83a+5ZzgtOPm!v}rj zWPy!mltr`VB+astG+%#g6K@+Q(e=+~ZP2Gxisa3{OafLU+uKUYMyad&{o{ z8%_4>qF?VrZeV{Si5uaND_|F>{rb{fA|VRBQq}8~;-rEAsl`++;Ag4du2G%-RJ%I9 zpbu#`eea0;=wVu3MMTOU63)4o65(6qGk$ifkQy>tawPvJtK?5CkkP<5^hSTE8MMo^ zFkr&Mv2jU?1g02p>AOFB)fJnw!xh!8<~v%0^cP1JsYwRsDk8*PTgd&8 zbm61EvpOuS&faVj2_m!74F_jLD6IQQ4MhJl3c(qQ(^ar#u^66)T zdMLmtUKASEg-VDcpm88^pm+MN8u&iYWwb4JFhL_>ZRmSHacHCr3cf?RLhy^fw>kYR z9xVuNJgWWfk0 zvZ03oNSds%ut@S$f1!QGo(Z=>f2dCkM>B+XiMh^ME_IA;q~t!ZC>avh!Xx0e1fnV7 zw<#bHwgzh-1fuDIU@Z~oLqH%DvBY_Djal)qYpBumE*XCnE(&ZRh51dm{5hE|Hpm^u z%CIIcDUW3A!5S|XAI7uoY@g|Y=KRnRa0W9F2y_w-V`z6{g1@RoJ~4iyP6!^m0v+<> zk)UrVLBM6AZqzk_BCZ~kn2ucI#~$(_=4NlF#JI*TvI8YZsPsqljp~(0z>vjUh-KH- z1rkl>$dA8h!*7*5ppr$5lfXoK1J|2Z#*8aAT1ahy87ug!A1m7xT~be~R4eW;=%!Y_<=uGZCq=6C2)f&2Vjj2j(Yjnj|f=wAL#qL_A4j!+>T8 z90E)VEe9jDQO0%1gEO@6eN^hdzXAu`635|u)80Fr6hf(Z*i73W}#U9&gT4ms40WJqgA za)>am!zmWW0_j^+Cb}Cpa%-n|NzT%OVwwBM>jJRVlPx)zd`2*_|Xex(vQyoC{%jKgREd8$TdFJIXhYVscv0MssMsu{@?7C6G z$XCOfZ5C6m?i#QH2UQn^@>e>t3OBdBm zN%#_*;8=~yaWLK4U*!as81}u)Q-1EtZD_S4A>OeP{Kuw_OL2mj*tJ?(G23fv!HD~i zTM9=hC4^MptT@nuu~~8}7GYR1@SGJtBQPqJ_`GcDAbva?MvgLni+_!3>OVb9dRq9dwu zVAEC62s98o{~&f0`WSX#deoD$=p z79&~0>11S!qHY;*)lr6@P=;6;DrAs34%}mhU!)H9vd3}&I7E^pUilo|Ua$ZhYh@ZQ zA`3fxlJOpCW=5yPiALE9n?ibM2QEhr(%IHQJ2p?s#h8O<<2qLhO~HL!>oAexb-fc? zUcHa__vUgQr5~?z0v`DjI2a@y+@Ku>SJ(9bDVF-2#g6(%h>F`C!3~1 zn5@KUQkS^-NtZ-tI*M0TZCg;PPJowxR4pP)sCpCX4bIVL6-p>bH_J#Cl^bgEq^9L2 zgjcqKFOrNjRk~b-4jY3F-jBeJBl`?TZYvTixawAXQ_iCsmUc$+vq6V-lhz?tG5)LE zELFZ|d{jVS04>hFS_vpr=SY`yzY6n|6MB!$8dnZy+{|Wdo4uG?5J$@*j_#3_jqFmk z8Tb+)(9O8WTU6~f3jzfoNR&A-4g_NbGPp)cX*|c5TF7unoo1J?It`qPwxwm)aM*RD zH)uaAexL+Vfh0!E zs?MqU3aXafOYUBDC55)uO~6&rQ) z4y!pdxPHmcMvRR}_(lZ5>5F0ZuW)^PhSZRZ1*E2vR(!XK${wbLC{yj5Ve=Je7;k6l z?$vCqCwxc4uYOik1?pmHW)p!(GX#j}le@2+>ib=w0UD{9FvwBS<8Eu&0plg#GxV(% zlSGHX+nUu(wELxw6N2v)glM5?G}XqNeVLdc?`u_ZLh z74(3VR-YMjiGyLH2Hi4Ur*%zoJk9#iZ+d@{}0pF9jJm=bC#0)MFGZiZj*(DSBnG?uZccB-ti;kIh`DMVOlhBK|%WL*OaJ;G=-UgC~$>YdRcM-`X${xd=HkWeyxU8g6;*Z>H;$L6jh=qiTYKW z6lgv)uMlZiHO-IP7_izyrx#PpMrm2d-00ihqPjgowbWg{i7ovm2#9FN&Toy+dSr;#z7arn_TQp8ljHr-bfGij`y#BoGKql1EknD-0&Q+H-11 zWsp-R1y$MD%8n!XPveXtNlR;`qS3{D16E`6guh{)5Dmk0BbUw~zGyA?qilNQa?*e| z#+%_S{wR_;N>j+snw1!hT7Oxkx9l=6z%3PsUdvnF&_t9txX8}}fuz`TR-hsM?D0SH zkYpy$#p<&{^+8$ zpZ@tg3KCVWFpesp*VCV6TT3^zo!OQCFrAWbi(Jj_&>;ADYjg;3CN)MVZUmS;;Uvce zF-miGUzlKa9_El^R<3}SV@`Lm+0zcYSWbDlcSHS~1t9q2oq~**?({E7|C}XJSqM%H zdY96Z*Rj~9pCh=ffKxAQ1SAwvtH_YSMVO;c62!~^l@#2G`RDT(6oh>KAX6)hB;1kv zCFfCSGKXraR3@w>{b%OgpnWMKiKG@TcjKd;E||C2=W5wY z#OB1~yeiRE;wC^(9M~OLQrsORy021-kc_f2x^e!LSU; zPeRw+Y=FC`Ihp}Gi5o=h=9cGQG&TJEQbBDRP_Zi`rTgEkWbe;p`hIT1G0tLY%MIyw z*l(L)uYy+El4M#n)uGT)cGYT!Dv`}Cr|$vz@TQz>v86LWRM8-)mjTB&^S!qM1(lF_ z=uz4ZfzG>9bU+uR22CdKP;0NCWk{c=@2bwynPN<4(IijS2HP55rIKVo87>=NGa)dV zcBfmlq!hV4vgnYWreCwsri>MB{fw;kjE>ZM=xETV#dHT8Nb<{E_RCTw!Ww{`g9}+yrs^$C!E4Yc>2{&aT z?17W8~JYVD1Sn`_)Qj~S<@rIxNz{b5io!CoFY?s~m z8AnbE^>d;O(Q+K8KZ8EqBPHktL5;{aMBvuQ_!H3Xp&-?u_oCe z0MUuYc{e(6U-6r#Tkr2*W_QU5fN+n6VT7}pHhjS!gfA)4CN)3%_=28U3_ZSN+yY}P zYGke;Zy1As4L}AO9YYO~+_|dUBa=bPqRN6pbD-fl4vS(brq}%Sya9>O&;}at%K>pb zM7c@y8VV2_bA7vw0ur*#9Zd$x3!i#ydC^=Fr+E|BZiL#RMUJwAr~P_9c=!lXIw$2c z>EIVITDYGcFh-+~gA4d(Yf84G4!@=f;z^k7{@loxm8ALwwH6xy9>T^`D}XL2(IFVy=8+Udu6Y z(FmW3+FFZq`=DJNGESL}*}U0#u!#j>-5lk`gJ{?~($s+~GUt<4PMe|eY*K3k8zd{n zN#91kPJ0PRUOI4|y98l^-cV@?0iDC4o(>9DGikKFC0)=0x^JG{Nh43SNvY=Js)y&Y z9-9hKk@DImxWzUPCG&i8Leq$4;QYRK{mBnKv*lfXu=h!Vk1;tBDc*)M5Fu>LLeF_u zLugQT*SywEKa|KNH~oc}T^sVQ9x&;vPTiJ_auu%ww{eA0O``FJ6=`kKB;@h`iA2L! zPrn4~hO^SYrLJ-4kR}@dsAJ_@BC^Mrv{{N_W@EBGJuyX4E`{^ZEjw00NPG=(H`Yj`_=$`#}uGlY+R67^4sFiYf2>c8rskY&l6q>fDxksei-L{Z|i zra$k?09z;h-?%fF#a7Z!n><|)AJd4Tx)AH{m$4s=$QmrKDKO>H1T5V43{HK2I_Xo4 ze!!JDLLX$-c#|R$PcIbAB&}PIZH4EEf;1}idv!KWwpFmA4cwhf4KXvI*~!4X;o zB~w>P3HGXvfo=X~c=x?8Mms0~q&;fWwmQz*qt2D%D5KJsqXIT z6%XG}`Q@DZQhw#S9OO$wse)+C>6<2!p|xOSdZoCx7K5kV$y6i{DSOIDYZDflx5z`) zT;Ux&dfFyiYLo*Sc%)tFPeslG5zMen=RupSdeB(|NSSVKwU%yOVvnQ#cn-oaSd;BC zGaV7fAe|p5OD!}qV#DK)1PEM*Y$*akOpK_Fo_3S;2^YTkghm%M@KMpQOI|=`!w^H# zEuK1V2&5Vn)x=;YYlOi7_`|8@S#IS6z~mD6mL5<}N0i?H9<`}ZgO9biI<0Ad0BP6w z=MbMUE+a}!|Esx|mXp)FJVNaZqi2m(vCFDexlVe1hF?@B2AL7vHL)A0;kOCx16W_O8HR9VUe80L1 z-?zOGli&0GP`|N+^v~vvt9v36p%UQ&Nq8&mX_~j=#x97oOY~>3=7Fbm8aIXRDvc)|gR;mEHmu z(~@cM^ExtX&1a1U!}znRcF(yrkLPP820Ft7=U@RbjAYQ7PtPZ2 zUPFgU0B6x}x-34Z?P!_%%cuukq&}yAv1$Rb+ig5=+vairc>3}jkUo{)q6kJo>^ z3jEp#LyeI@gFGn7fJ0L@-r5T&d^T5Aw_1Pln#vDwHAqw5O=rjLLJazwa2<~dG4bAF za-@`#`ISg0R~nB*c4v=64v9a!q--1VG1;9ZUop45ghovrccmn3#2j+@V=S%Wr0E(^ z(6S4n9(q=6KtR+6k#1j>eGsZf``mW=mc2;RVr$R`Q$92 z|BAEqrSxy-rCd^>^r%5?@MFer6@P`0NMA6mwu*0u=d0=FiDW;2(_7$+Ox|O~``=kT zJWZ&Qq8@PdC7BQxX~8yjUdx9pl!rt{8dHvP~V z-W9P~)hKCBNrFfsEYP97iPP`Slc4C$#GJ{lkTWDl8}wtBUvTh;TSB-aPZ2;a#(5;@ zjE`!SLj$Fa*IM?WSHYWDiqw<|j#uy?N1klITHXQsZh86FP>5^`0{VQg^xq;jn%nmedE@nE7xo)-xD>kg=8h(x+&Awl6$FkS*gO|Y%xb%E}Q>d@H@MLzYyD6w; zzJOEMZM;SHzYDw_;_csmUjI|h+j;X^pBisJ#NtB559K?$+4XM6GvU)8Q|uO(p34?P zJ<)R)SD%y0!Sm~hK@Y3a_?XDsvx9V_zL>qbi0x#g zg?5KlHn`VG*4DO+&7sNbxsn+@#x~LJJI4qRiLi>q<)q`wjW#lJ8+qQJM@MkYil((S z)h1ilH6hhdUbNBP8QC4>tT{Z{#W_`~JiwCKbg#NKpSqFXA6(?m4;(ylnA8pKs&2ju z&(-|Wpcc=Kh~_58r&ry=PrA9DvD&kjJ# znRo^K1$sV_NYdf0VsEj3dx4M#5wkmd8+vEt#!SYR|Y#-tgO`}a0Czr3rxX8Ic>V-ZNH1PYB@MyGY(;r8RuTj!gZsT-L~6iIy%ysToYOV+O8;*Smv#@ zDs$A0EC028p4S;r_SiqhTg2bpjFi6ZHUSSW6yZSUE+&_}mh06#&)sZl?zWp#jItd| z*>(mX0@yLP-EILzbsqY*l<}-O#=IziLirXKJ@aOc@V9B#5riI0jJfNFD!D}pVkI7OdCb{nZ!pKlqisPrg}WY}0@x z50klpW|IZg0-d+_9|A|_u1X#R5`oKC!p|L?K7X$&V0g{; zRTD6XL70M6wVY?lDT-ZpKs`={n&J?zs8l{Z;&u~OY>Hm04*FRxp7g<3gfWQdAZ^|} z1V#RjN%+UQ!#g9+hM}0U<+|T53zaz_A_v@@zY^V~9oYv|Y&eWzjw4zotLlVR<;l;i45Lz5Q~kKt?l^?WUXueF)AeC{A? z&=llrbK5|*c_mtv3KPULNo=-hvUsg$e@fB0kB?|j)Ws7?fn_ND=xC~3*AF?VCB zWCk63rq}#8sshDUs7p~9~koIrh?(&Q^8QGCQ_7Zg&Th+aJA2vy~e~QJ9yw}0iMhD1>fOg zl(6|G3XxdjvEku@?;T zGbVQ@&Pf+(sTz=mXD>EY(2kygOjfXz`Q#*tszv$R1NqUKesHz?(3-ZI$i3oh&_Vi+ zDPMy)Y;n8?fL^~>Aj&eY7?8wm@gTIT_^X3h?fS9)8=@F138hLdr+Y6Y8_u}dCCHR$Qd4eLrgtdi67g^=iVYg@3!BNJoKhIwpUshZ zOt(W{PFCb7fys(ny{wo)HFFX++O!I9aHPY_M!l?fRha}&+-egOpHi~U=zxm}iBssM ze++}BjB?EW0SRkZin^R+Jt{eJR5F%?s<;*LpGi5MquRW#`nacJi`qQO7omml#I4|L zK1~n<4{+P`sp_V7UE+mFB`r4_=)BrZe*_YDM&4UjC4S_ClK5HjMRh0Q+%};JCk!B- z`*SDVZRD=O=nB`%xDCimkQ2^f4~L;qMnz3RV67aG2PQZ=O%;rOwUn%xi;>+MnUSXeXgQ=K|<8M%VX!<;^QPmE!}*yaw;+#4x<{w zE_jsjtDbZFb)6QeoHbU9JYnk6uPMfCu0zikV$=for?A(TzG1Wb{-s+FXPN8V=op_v zhdKAqIl|+XTW#~RP8=yLRtFIZ90eG2gwk}$2Te^!J7TLty>6bgC zt}a=*h;kgbuxQl)xIbS9>^e1A#Ygp!JESL06LdK%s52)jmvJ1N+lP<3b%(=tEacIq z?dXHBPnpmzW!_(41zm|V6xuIH6ugvme|eSMh-v>JVVv0l9o33+>k%Q9*va5oR4FOt z8tjMS=U{9K!AK=|;q(mb&>9=h6}T9Dbi`>KbNJ8^t6|JdGWt~bP(HfM0*wi=i>6^; zWdAd*mJtqv&zzKKiltNrm$GS{E>)!jpu!kb(rpRN*dR2#7&K(!@>J6d3$ty{W`eL5 ziAhPTqY^4be!0s@CNv zj#1Y9#ASp4!eE2|gEB%y*b^W?w0pxw2)y`!byXvTS-q~-7*E^yLRsUo$-dS?N!t($ zv)ZA?3>A`%BzB9C^qX5Ve?-q(N9jRs*=b&jStp^)&ZzBafzgcUjVjSoL_N$34S9_E zxtqRo4HaoTTH_IYcq}e{?UOHzrJt^}&L;kt0j|-U_U9Ws1m{-mTBw2ga9xtY5BoQc zB9F!QXE7}kO~M1IY80A+yy;I|r>m!>n&F44KuOJ91@Mx@G6h%SN6tYJMnkotP4^5> zy6il$SkJH-C|L{mh?F&Sqe2g=$7ET@8y??B&e6)L&b%2=G~&f;QM~2uNdPq+Vm%=W z0u7Hc+K+-wO_~`g;RT&6W75Za=T8{TYa<-~fhT?Ebslh*ti+6GF7j85{(m}lBKD9h z7=p!d5Y_XFHd^ukc;q^)rKZ>7RYT-))xKZgCFQNFfE{jK1vhZ`$bo~A#{e!i6>VyHb_KsD69F%)~1@_to}r2vHi)m2_>Mod2$_f_8T zEz7>-WIsseUtzxYvi*@$>AuV9hvKO9&tlH14bcM#FpBU_4cvKd2;kOPyjZni)hS{w zv5i$%`V|a%z9D`@4GaaMn#NrwNQlA3C5)tk_E(DUcmD(9``!OA_`V%};Lj-7M1;ir z_*S~u+WZy2;FSRclQ#PPgC*^f;{TlZu(nW@hrtWB$tAU5e9b>v>3qR`TxE?{q3anlrAIg18T%zq$pNl zxoFEjI)YcTGtxZc|uVQd}oAg?SvB!p10k zA&b;3FeYN;z=~zH@BnliO#M3KXAw1_NDr(hQW3V$#LTe-Uh%%>opDftrQ3)!%5?Kn zvUDueHZxQ~;*o!=NS>+?%#~kkm0X}dPTxJHumJ;HGV!Qlp3s1CJfThnsLr5i{nxlc zSeCcNiV#RuYQ}!z^x3)`G5}DF=YNp)Hc)m|*PZA6cpp{us#I4cAqka0_g#ctB9f!T zSXC(4s*6F$gie@Qtkv{1$aqZmFjb-rLLpwO?NEu;ZjDi5MHC&mqlwEvI*JDpStv#h znxIL@G)|NZo+vTtC>||`N$4JCqM0xgwWHO{@4xrC@1s1h&QIMC3k6gm`Ki~m0#q7t2nw|&3 z42PH=fS9Uj1P?0MdWjyWMt(McFwsP`ZuUh~dzw!xe!_@kl!vH=FDr5r8bsYBTiELQ z+rpQhdEhqreHL@!S1)`mN$Pm42Fs>FA=V`kE~~I&6llmgVy9-ZZ>!D&dWG$qXCRi6TFa;y$v0iB>QaKp^XPI zx=cAp!f6pxo4hIRP)#ff@Y}ShjtwBdf&Bh(YeER8k~C0M0h!<@`&~5qx=tu~YkmLU zN+-lj!b~aT=E#8Nx0yqUp$b5iR6B~bFvwN^Lr2!=5aqWNosx; z_keVW@gxP#KtWhg@hc^(f_nC|lOPe2xa?%Ev#&ZiYS|yIwi2?BQxSvlV4jMZx}T0= z4>Ba5YIR#Fap{G|UHK0G$>M+&6wf~V4Z#aE%L_y|e{?+i8oT_einQgEINe*|Q5dB- zd?%P$qlO%FP9tHc68StbEmCi=JkMEM;q8aBQ!up#l-=8+-87PohYg{g6}#CphV)vF zkDN0&lXS*&;Ii@Dn3^@Jh9g}wnXa)xNVCZlYZAo`U}eE@*)Tv%Ae6G=5CIv|BNyK^ zNOK+%Hpm{CpS)U}0~&xMDQ`17G${gy6#E;w_9x-%RX-iwr{w=n$<&)ohcI-z%hkAL4P`5%BFXU3_6z(-I+p10j^37)t4Kg0DPIam= zC~izPO+wiWo;PlbxCsNAWZ>kn2%1Ji<=m`-=G}{?)FwuC5;c3lmZR#zINMH^L zgE4qg?DC?-zb#G~nk`pvLJm^sU|wS@t!o~p@nMuvo{Vh)iEW};97)(@m_JulB*qw) zUo7^#YJ);%U$wzCtwUa`FQ5jCv5B3clKSAE`L$)6X-Jgy&Gs~9#2k{cWbMbYCu`X^ zbnNN{Go0S%KOIa5@Q!3YzK%&l1rlo}LPtqRA?ZSR9uCigP-kF+nnd~<*|mnnZN zY)HZ0Mx3fmJFfM3+O{3)67QY4MZ7rwUEJ=ouih5}I`t+H1mc$pcF5UZu_jFtyTrd@=OVi2u-z9g=n|#}}+pSITgBsSJnTCBuoO zGMspq3@4Y$aPnO;JiAneXWu2mQDum$PRHKqqi_n@Qy41LA=ZWy44@WyW}RqE?fCp9 z(9x#0-Xnk4sB4*rK2c-&8mDUF4vsb5i-*q7Ssy`%M8cM|d{uI9FewU9zYhcvat(o4 z9^zw-7j4I5;oJZ(OmNM7F+~X_I)>^c#|4cNCLFv5;4SB+mMk<)4E=9DQHzd#2Y235W z7S)F2Pp=DgN|(kP-G2ptMdHU#@D#HV0f$HvQ2d?PF*Hp8y(kZA?-iU(hm#3s!Y`~* zR35iqprAlCEUKMR46Fe>W=~{aqis`eZM)Qi)VntrzCE)0)BaNW-@BY6OGX4g@X)#B#pWUV|Mp;)h@ zqvv7>Kf2%2LXft2+oUj2(K0pCrV~B5n?x(M(UAH0IH&2R?(wWqx`U{x*ld|@iwkJl z#1Y;iqnI+uaQK zw_w?aeSfq)W&QEw+nce6JorD0ZU7ShONHM2cNx>#k8K)Oz4AD?xGQM=Hte;o@ z$~)UXDf_*i+yHB-+#&k@{%Vt+jKE$Qqq47IHnOEP4CYJURlfprx87%mDK$aZRFkm% zR{Zw+4Yv?l{P|E@1W=B&vVS4>S*SuW1w9q`A*|Cb={z_!{!%xdsB<1Qlzn@>k<)zO zCAlZmLMAMRH$OZnMmcXlESXUd$Lv>hx;0|L*x~Y6tVwZ0*c4$~1wn{&-|Zl6na%!n zT#;pCDa?sFj6(K{+F51yu5Eqby*E@O|9O0S*naB!oTUl^*Th(=>;O1QX`h$Uw+c>N zim;mI67&CRO~4N3E&aK!w*OO8x40O0qVeIkUf@dBiV=1ZKMFKpIWRa zovnfvACrz)8eI?tFAv{nPHl&>FN`gUs_QPPq3pnF;+sqPk;er#4aSU@Qp9%ZE-B4s z{n#O|Sr)Hxtwjzp3G00g_8Gf(}F4zvJC=?fMV6gH0v z6Kk*)mx$8QT0o0idKanvTg}6{#@5rhQj4(0hYF>Y`@-#^5x3`brTNxhNW`M zUQTu|1c=rJPvI*kK&q;w(u6F+e}ON6NDySt=$*wrHvqW0!HM

ctU{p)$JtGdSDhj_ z^KyUlg91(B{^kJ-5Rvahni3!)%rqPjI(mZ&3T0%A0Ru_|wBYdNwjFB8U+a!>;qRb9 zS-nt2x+_T?7_bfiyw2@O9L0J|Y>@trEn&-}mb4bPWQ4Xr7u6C5MqsEeMWVl420@RE zkqFalD7#qGPP;B7+H030H2_kx^h=S%(*T7#4v~R9W5?kax!h&UDKBbc-g^M035a5w(v%MF+7_U&KS5u${IcgG-i) zx4u}s=zvDW2r(c~J6dX8XOde53;}qgIOG=E)#F~k=ZNN?CJ7Tb6=zUU4!MYKQcx4I zBXieytpUkUz#qEO7Apq0n0ZQsoi)4=vJ<~_hf9XK;OLK~9Rt9t=?rvU3kvDo&YGTsZdaAZyu)M$f5Eju!5mBj>zskI@o zDqK#M07=7eT0$Zjj6FSRpaP(+)>rE3ATBLT;H({geS?kDg4ja#K^vnrxR(({1AgR( zd6}M`=QrAZNX*6o{O5=u;bsR(mNt0^@1N5;g?BzQH<+JrhMx*4T6{#3z~%$%Hl9cn zk|TOQ0{KYFq3j7Pvdg0=cfhsom68)#|>auJ~ESoCe4hK=ZyDC!+JiaDkG zNiXp&eWzrU_aF!x>C&XB<&hLoeZ72L1~b_calvQ+$80}b4fFd*B1Z0TEM8+C^1JCF znDc}V;>Z>Do-x7sN;|PFKvK%j3e<5B?dZ^Lpyi@~4^iqI^hJi-GyGn4$VzBxh)w=L2} zm+){gur1<10rpG_;SRL$#Gt9O?2NP$50`87Kpi6#VBDb#6eO%yDQNd+-&wEOl~$;> zUlMkh)qOl&$|O{~M74^&$g@JVw-g7ey=l*_$$6du<<2N7Do?+5{pKj5iRN}1-6=)B z(v5_soKq%_7g2m-P2HNHcSWMD$*VjywN8ikQ{nxD-a$^>Zy2ldJesr-EDKcTG~Ra41&Sl0 z22P3>P}dTPk$-!HEbwMp`!*3`>)e20Z8uQ8MCWSxA)o5Sa;H9!8dzWyxX2IX!Gu6z zadqREj5Ewz;}rDo)}$*m zXHd-|n26q;NV%6kZhX7{^3}GM$%rdmGnS=v7B>vc8 zx^;GZ0pblgJ*XkgXBIN$32D`Y@6JcjUBsgo#;?v~BppNK5pb>;K-wf86&o~iA z`NU{|XfIL2+Ht8+@;X)VMV>7KUr11EF_9o=UL%REM#!H?98NE=X&!+<8nv2$|gTmeV>skZLjOU=%p>GYRVt>1{b z!h~B4$ZXZsK--w=P%ENLNF1d}_X}rv4WAgc=AIy!G9L zEp_@?SFwQ719;%F5VM7du~&CufsGtqM2q3$#mGm0@64SaL8@E~uy$}yxF|@T>qRGU zylk+Sb-AVd@I16a&H(2=GS7Bh%Lf9p$LToRAcs$rky!isxqcEmtJ}ee;mLLgEG23YNmq)3ICV)t9dRdX0{VxwYM$!d7kHfR~3WwS7ak z?MsxSwp;g=Oxgz^ivR@&qN^7K(CimR+9sLErFN0q4S}T7FtXUCY6HiNUtXzFmBC2je-%jLv)aaREVPixGy(dcr8_FG1+DRB!>X~3Pu87N zS$XXaQm~pRX_TFZH!+yqtB2ZnE9=%ht!XQ|y!gE2(dBb1Z2<>>82lh9oY7Q?%TvqE zx+p3amdl}KRL=V|TNrKql=PYbYC>IFYl4_i8zD+y>9YGP4ZXu9TkHZ6S_SqB{Z- zB0@O!fUH%`@b9pNs#)4Sm)FdtnVp(-fo7-~(Xm&{fg6Gu+Ycd)`tmT!IvQ4l{BW%% zlGl~4Xs01)(sj`(c-Q@7{I&P%7s;EPfyEXWR&}5OrM_8T2&h+-#{ z8waTd(KumYqY}o8eG_9@^p;`Jf^i{(5f^WODsOn@4VTF;S$PEmyClGNP6i2<$^zDV zQAKb#AYP}Q6b92e+mX+=BWjIots|g)T#s}f_i6&T&Z7k#dJB$9KS|PgCOB_kkTtm- z0SNJ5Ad+1X&L!NUCECdt1<(dTeNa3^3T-lWLy}>AjgYPpmB+j3S#l2;^x!Q>QbGb~PC?UXeE> z^*sf+y{>EjJ~ly(G2h3u<(B_g8kIdl+J1iHDh1#(xgO>-GAspM?B1h4@L>W^U1slupF2wc%i&JBpYSQjD;qP>NReH3`0TcG7BHwhKC)mYaOd=dsk1U-;p*Yxse; zcD|*Wk5BSuT+Pae#@GPh95ZECC4uJ8iPdq{K-B4yX{IJz8YB@GM?Vr_YExh_5PH5z z4^UJR!*!Um>;>n`lI+inFVjh+y37}0+{`p=B!Hf^6At=*{=^~f4-V%HTKWo zI)Z}ZCwi?eXjivE=`7jY?jkO~^X6}VAXv6Y@D(eaI4dR5!AkZo5$a~=s37~isW$26 z0#})B(Tei)uVk{F_|0H#b&wsRsTFEXIHOsZOhg1<3qjEQtb(b#}aGBNPvImw-V?o5RJdCm@*`|lDTMk^-lEbSb{y|L0EHC+4;j;SxMQ7SQx%K{ zAy=tueNaqzTt5GQ{lRiJPT7yqcDkQkSii`!OY$(ur2us6Ta8p#i@Nfx_E;MPXRbB? zdbC)(F&-EW6Pw(ue|!B8a2v!{Ip`E+<&_%epzL%Vl! zkt$^m8a9|*qoI8!KbsEem))iw>_I;oA@hI8!v>e^7Jt_a2yhqM->n*(#<1Ays*U;@uDO9!~0RN zTki}0l#8G8RgtA~i~Kdo>pS9b5I8lNgb9r@UXOnv?X$vxLhQ~({)x@Y6wYE#r zz|_&p^t2TAba1P;x$W{u&mCizG-J!hTXdi%Y~>d*hUy$t$GRP5uHaUKqAnBAAsmY! zHxiE76}RDlSkcF+>fv%8iF2qN%%&II=*)2gA;NczXJ5sdL;?`xEbMP}26)T_+#hEe zGT$j0#`!~QNT^Oyo#)K@G&}6uPG*zB+(;E`5j~!wl37u?e3g67jkOEWGJw~*UIZN8^CcR2yQQut=VCkdCQ>?_l^YA-@Yu%^x_p7EgUb+qwh$0F+%^~Du3 ztXH@qNlm9(ruKv0!a-?!7j|7{r$}LVhYX8go@5&*GRKnI1%e0pdX&ye%0U0yuQ%|O;O=JcjB<`xcPj-UxhkUX@sXTW37 z?_CF+mDdLxDSb8IT&2f=V=4(bSI=$#cll_Cv4$ZM!fUL>28OXF_}*jP*Fz1KcaMSY zbdQ0KZJ@i|6A!`nD~)raaW>x!F}@kVN&hoUm*#^Rw9K)*&v9Wnvo-r4C-bEI&SQ^2 zoz1jyb9AI`a>C8gf6pv|3{hVR*LTtsx)SC#^C#XMy$a(ZKaz2I0S$N^!Xx;=hO*8) z04sGo2^eew?P7CyC?7|`@Y6&bBtNXYVGmP-0QY@TE zPBjF1QCxnoo#i+=Ktg+IdL*_+i=crp?Y6tqbIWX3FOu8|5Y+|9vdxsAi<(Rd;ncqy zbKn!}MC=0l9a*&}G!RV1=$d=^|2s(J2ot|N}}eZ z+65iJL`?e~7zmFut){sUdx@07tBcAJw3{v{4tT!FQ?;JA_iYi{Ow#=r&~;DffhZO! zW+K>xEw@Chcvp={|QEynR>VXmN_i(m_=c!uj!{+nD z@FN1R|6P>*W>Zd(wFJ>mqTWmt6_tO&+4UbsSRO{@&u}|k_FA%5CycGf>w@PoDa37v zpg!!1#97W{zlHr{c^2=8@P73m7eCA1xlU8z(O`z4{Kl@yXd@CgoRv>WudQ+|e1Xe* z&|ASl2Fx(`1C;~W!7;7|(orJT)@(a!xz8_f8f*a(Dc{d z(iu--J$nW}e`dcSvbr7#_M@1JmP6W*iLEtR22FElnW9VfrPaAUh|khe4cTkidVN3= zH2Uy%%1J5Dw^GU66*@ulrE^2@f_3oClr#6^RzMNIpffIk7S?h;A2@zU>Gs!-7h{KX zHV;YQANRjY-51BATaya_RB29zV!3vk!pPeoZ}WJuLiqreSYGlWYxI0*D_Ood`@NWA zyxhsAy1@95VxOhB)R#h~Zk0M#&E}#FCH4{zQB#bM)L8YR*pWss|4bUed^2eTGmTyL#$$(BhvR4i2DT-qOO<_-uBiUD)Ql@d0pnyK0 zilkEj*v^w22U;HjgQ?_{W+8HHg=9j%fuQe0qFWxHjIKtc@VKs+v&V4jkFs>#;|*6K zJ=pN898sJz_bHv}$<<+i{vNv~h0$xRujkr97$gZxOIQeI+`CyE)`m<+c! zvR@-mo5TWtDBsA`h+yh!h&% zuPsdXbs`@Uk^Gy#e&?N+-(mN5H}7bA&S8jd?|4z`d%u;M87yq%MNe<$VRg#v1i9%< zdz>=}G%D7CzhkpFHEnA1%g%-lNk>IjH_}cLuAz-21fVR_Y}7Xw8=y^d+jD>H8ZWNr zo$XV5L$1)m^nCkzisOVBFLG>nnZ4_IV$?5^loMpv(r$A<9}}y+%ofaLx8+xrgFh?= zgl#XSMByq&@T2E#kiFk^?6n#|?z()#eW;BNaI$TIW`2#i*lgxpIDHtdPmI!a`SqN7 zTOtdf(b7{K8ht%)O>KY3$l-fIYiRaWWz=55KiY@~;&?e}eqv`A}RwFA|vEG{yDT*NYd zjJ8vrDEV-907VhxE8S>>J@{ZF+G`w!ecdufxrjSP)(GtS328iO#r z1~rpV9fZ{sP0x(5ciZFrW1Q7P6fL;IQ?t0IDC-`S@y-w5Cq)e8Z7>@6`?vvLFdu#E zznJ>SE?9mFxGsOcoJB86kx!UX3l;~Vv9VNyJDVJXi#TnBuaD7%l&*1C0x@B* zcK}1pZT;E&9x*cRh-mEml=R~T=G&2E^HDAz*W}k`Cnwbzy{*r$<_%*W&q^ytbWbhZ zJ}uLxK$&Ty@~z8`@PWH5ZGKANC6trU+(OJwuv2kN&P*Yjn^PWVo>=TFGZQJSzA`ay z^$_!Nr-zu9cX|$HqQ6)Xwh z-2r0(oZE~so=Wr8!o*ejkw0%PHBPFNzLkoU#1B%!&!B!l$OgNMd~NG4lfg@8h0QI> zePAu6qeNSyQuf0{Y7bb(C{wT|?QLsIOa<_#OkJ9k$GP2|z-C;!m95{8aW5BtmcfE7 zJ-b}L3(HOGBXu=SBDRFxr1puiq>yH+MuiFgVk)H)H3ZEZZZBi5U$tj()LT@DuH2`Q8mn>AW%e~hA! zda-1q6WVx+HUbW7tDt5b@SQXBcU$xvOq>ds=Ps1P0K`Fpq+q#NU+aQg=SP5ACrx(E z9~`9JN7-#mtFEW8sSayZe#yZ;glte6P4%CY<06loJZQOP+ib zWoHv`U#9Eqs!URALTYOBf-M`{+dKAfdZnvuXon#Lw<+m*n+9I!ckZzpx6%?AT>9q% zKY~lpseCR$LyUm~cD0s32%x?Knf{BP&{ec!NEQs1BP=hWWyVI!$aBNfWZ~JxQxk zEm%z08L-4a*im3-E3S;v&>6*rI#;O-y!gqyxhEKX42gz-AfSo_4>k*R65}F?ys600 zLRNb^7m^#P&TGzesM#UIG97nz$Qs8ct~<>#VC73S9KnN~%?cM+s{G#MFcCO#UV84y zFh~M|p`|}_SxE9wTR1;h{$M%DY&natq5Pi_W-;{0Da4Lqo`iK7?=3DOuj#jl@QHPY z_m zj_t)w+cI0pKUWq&3(l;r8s4Ud7&gq+06%04`s}zN|pcGOAn{i9WN?$L} znAGD5G(BX&h}?-MdLM(f;;SLJA%g^2lW#F`ykNm;sE(DaVk^P%VXv!UC6U6C3YR8a_q9BTZ{J}7wUXP}r>TOFEE|RXM*+$qfLp#|N zjG7>RKnucvF9_g;4-l+tw4p-KXac~q2wU=cd9W^#{l(#Aox49eJ!q!1<(Gag$^Ht_ zJQBWrKeLI(8{Ng0q}=bXI_ZhlW(T-am|>0P_I;py##giHFHS#wDQO|DVey|Iw0lL; z@-<9}VRI$O(NO_6s}wpgaIw5jqnL-;*QCmQ3`INJKLAC}95lyj8NhYH%Xo4pljL1806dMmu&XG5*+v0>pMDexS63!58SQHXmHe9QPguK< zR-t#FeG)ds`eyyGYBxl6&_AZt@Iz(}Yb3T|e6kEkfCPOvyygxnb}&ZUxW2}M;5E16 zSdgt7*CWBF3q0u3N=Z4oRSWZiqIua_jKY+MmpcnG91Smb6|nAHZIxtSPPDByK^x!n zJlKF=Nucrg5NBk~AQ#Z(^*wsi;+z<>OcKG4^#-a(UL4&v&@{R>zxHXp9I>eRDhiLb z%=zm3a&9m2qzhl}*z-NjwQ(rDh7(a6S(u8C!DD{$_c;Ke;+h!P82N5e?oT-RLsW~( zKvMqoXZ>I?DRuF#Cs#p7Hfdi4pv5&81D;=M;U{7xBImisbSFpoO#BFxlgmQU?3TqI zQ8+f^&`{e-uB#%j0ETj#t(2b(mDq70?14iPScn{(Wu0uz?nW|E4D0GLF-R-ei?7Uw zmCr^LwM9)qNkY{TdIK~Kk=>Foyr$)OZ6W(-!@SRi)%1q3fy>HZRIb*Aklg$*!?oj9 zl!PGur>bU`rEyea{tvLY({5>>f-W-g|25eZ-X*|%X=Kvtyg>YNOJG?)sP;VFsgo-97{`r^_+3#2*gIyk*;pzVnd;^ z5n9-QlH9pIp#o!z*zk*EEog_0AT}xtCjC3M3BxqUXeWTm&WMWuf?VpmsiCukTayH? z84O%;nWf#LO`0x*TF))34L&}Aa-?}0x!~%NHqNS6LKoAXFj^7I(>4C&P?iAKV-S>s z2qh~oaw;$z_zRCYq8JaJWtvqVpDKnb^Wt;cKPj$edp;yV?dj=Vk6?^BZCPXo%Are( zc=Opt;O2EZ%xBw2=YI6JaIY7pvD(1epZF>jb5t_iQ$1^vT1Nu(*FL)O-Y=S};YXk% z%bt3v7z;+Yf3^LSCItRSKGqReJTQ*$(0u5SICfnNrYeH)2UeZG;axJicQ}ShD#iei z9ofX%I&eGR6ThT8)=)qV(A(jeLXV_`VXiZc$qSc>GP6oEL`9UWPl2IM#Q5bTm zm}o(uXoC?A|HD42}`A&O6Z7a zrlYrXNJuE(=c1!YC7_~qAYTcc67?LXAmy7$_LxBdipq%CJK6vgflQ$GD89$bwX@}~ z;oPuZC1X;7K0gEBrgijT8HQVE?^c|s`$p1Br$}bTnwjhy@e`dG4mixhobl16qb(~{ z2j>ppni?5UM7V(vM)0EFVZ`79tCoBx15<51L5uO8D)OI6$8jO}7KY)^@OlW@!x;^{lL;9hvNc9x?&Y?Ijfco;Gi8`H(2m($GD}Hb?g(;| zjnnfw<8$m5=dKWmP5T$3b)m`DpN+cMVm! zYmkX0Z&0feRl-PwiH%F4Axvb2_*__(k5tiG)JBNbMph>~HE#HkFin&Qsvj!~0Y=SP zY^O(JFnmJU!AM21qgGUnrPg}tbNCH~KI?Rg@{A~@<&Sfpq;$0MWiRC;FWvg#p>IF) z@Q42&-R+qVb3b)ojP3nnKm;e_xdgTZeN-7F(^xG=;N3QKysQaZSeGkptAHT#iGklvi0a)pK=@|~(O$1PS7mZ8y-iL)_1JXEZ(?b7M!b9YG(K4rXD+;Tqs++Bu$ z4C%s95#N$$|B+qRsk-)=x18oy((c<_-1nA*Hzq}^L|7*gIR`7k4JYI*CUk|Zduq}h zy8jaa7~VeHQxNOd{YWbg42q=`rzami`$(k|M>!iP%&u4%%g3Hp!4rzm1q+IR9VH4a z<%wuhh*HFqBDQqWEclj1LRRj1kgr_*F4O~VF(II19D8*j>Ma1mS|RwX^+Axi(saBO znG6&FgbZ1!9WXi68vMz23e+2#febFtb0WuLd6F@&mlveM>C9kv*cVOd}NWdB+V>9kprY+5;1zq8H}46JigVI_p|LALCRUxqfaN zMsSC5mbD0vfudI31oXX*_Xw)QOo*@Y9s)ClMH3e3pfk4Mme;;1jvXGla6e076op#E z_rx{YHi;6fGD+#-- zB=^V7{>g5~kf=2+ct`#1TQ*kNt1fk5RM6YG~P_b+l;;1mP zo8+NlXcp>Nhrw?TL%NZNqCGYThtHzk$VWv+tcF`jzBQp*5!Cz1-$WdH{LmC(j!p15 zWT~btl@?VKFx)D#EeT`D6~FKl8NfibIg`Y+SV7E$N31-a>unRQ*@8$pUv|8`!gv)h z2q{uIiYEK=p~yIf!OhWVF^1d&KGAdUw5oTKa%gAOXb!e%G=}kwe7O!HtlpItxl)nK zl#-(W8#n1GF;|GrIt8q;v|7t)aBeTT(%Ab3d*2{h)3}X8j=6XTG=2;lfT~Ru(6qGy zUQGv+;Ma7}^)~iqEAD0uf~G7Fa>+EfcunW{3_{1v@zpA434@o78WBj*; z&^(aT@@L`yVgELB9UxE}{o)L%uPl@5zFHaFoeptASWu`vAO_uEIH?@ZR zC42Fv)-TA^%&CKExvF%Zu}Dvi2&A*+fyW%gV{$5ui{pI>VA=b%5LvB%}HW)bKEtcPQUy(s$5D))>lb*CQham zel|36fh!qi0k{0r47#sSXtxYTiIa~_vGuZ<%l_~6>bEEg*%#0k@L~|Eh(AlFOKexf z-t!fgDimTxNX{ztN)^$L8EZaBWrrIKR}(3jjI(#;0t!6lb3rwterF<&XG3jP7SKP+ z!t`%OZ3&`^P;6?&hN)SVtFtt1vcVKtub)M^Kl=mIJ7LTa&q03B;H~=edRz{wsjB%D z3XYmR^05J^;f)1b>Y!&xzilfPmFKIhZ;(gpYL#_ymN%*_FyPjkw*Y;(SI;s=2-t@7}5Gf3@_Faj*`)MDgSpa2Z@n$PGlzq!sgZ)X7_>!93vQPXC zM!VddcFRS?`QJZDtCCy(6Tu&y)BqSlt~ck%B?jlat;y}wJC{uBkEZD8rX2KRN68Yx zv12L~ph&~ETSIE`8dzqf<5W3hIOSi&N6~cEFrVx;@?d!Di00ih{#A`u5T@sBg}Y21HK($;rk*dSNKVDvSrV81Yyy{R)! zS{fKJ>k&V-AJGCtfRxma)sDC^3vP}Wr@f|>WfA&eyFM$fzLSbpnx+?Qr1)LpLqP=q zvl8}Df;Md`lhjmiz)}hNPR5=FsC>C-u&kVwaXX|c&324Gs$y&*0yJ+&*~y#yg;9yJ zZ%?)c$%GLh7x(?E*iGAY0&669P5DQEnUw!7$(|M{Kn(H>(Cu=h{F|u!pCbEwF3J8W z2q~D+K1*URosi867&k#v1t>(FA!Ks|=1oSQ9!o)1%rK>ze}FHxlHuSdO-FX(I_Y^* zMn5C~G0pD6Le*`Nm0wiY&9SU(`%>6#B(xJj*XwZw9}IQw@-OFOjjxa)H-{wu?Omx<$*S$ zEe-G8W_V1j#dRe+Mur*4WiVk;nAPGWQ{x1zIjJO0Lb!H>fH>@>Y0bkWzF89Tf@->e z-P)?(2UtjX+%GDvz;5P!XAHn>TXN(@Co9t9@anbWaOja{&uG4UKF=g7;p>dPUQ8+PL5mp%DVF;fC<|O<$THA@640?+mZu|u(&BU52$WA{EqDvPNfBn> zmTXs%GD%25%%%{-i7AwRq`^)0%J?wK6kM*yI2j!WT^FE!u&4EZrco)Af56Qge2g3k zgciZ@EONuMhOMgxbLKQ2bwoA^HKiED>5e#Dt-K~?Hisw#83gTMBIpk10MO(_yzekh z*jBeSA5m`vp@Ad_koy^dRGA9fVaX}uW?HUjR2=q-TlIXGas2p++gae zJvm903%5x1K$QyoN$98W25w)XAU*^rj_Sth{ClXCuQVj*{dCEWtUzjgBRb zHM~z%?<63jju(>KY^K;vCIR>4-|k2p5Gt&%ee!B}z9M+&4-IQ6FI^bVSsJZkTBRPQv#s#6j`6{4(tiV~@i zP$+d4QEh;6XTHm^oOTAxWjt~5oguQ_no|221k;R=gt>H6&LK!k4oeCMC&t$^7iByKC*L@hyg&wMj{{@Zry?hbq!3=lHGGO{Dj&fm%zq6Zom&0_LJ( zno{XHNS~3h#SW&S!9<Dp5kX1aNMOfbb1!F4>-3(zi=BZ*^nA7GisnKgM;#YXY;En4YXg9v zr-+z@EiJTGa&s-B12sk4;$WQ91!fTVpgH+AL1==47YPn~@DjnyJEJLVR-l&Rrb zu?zyoOT~&?Bm3|C_PiT>V7yrIb%PPEdV$-DeECbC9B(hDR*u+RMPG;V(j_&jA@GiU zR0Z89g@yZUae!htbH+)sq!x>l-mj#)9+9s;?9X^1u$)AJLTIlK9S|;@*Eqfb>Nhlr zybr~Q+@X({7L@lMnIFcf3H%#RAc!Y--CVE?#XNkmmh+aMy*NitYILzo8W787vOk}M zb3jwi#7+{Wu+lKd8rQ$e0CpPAgp=;4eCP3x0c7xOV2lNkO0G zTs;DOgC;rdz? z);maXGs=eKB`6i^gh|yU>OrwT65f%PrAy^TASM6kQ$&v_)UK1GFEp_x#WxOhj?2Oj z5+u=`#_&oRA&wjrb~8?pQF5A2MlD+m0$|AQ(}E8I==KPkop3%jv+W5@<;39sj62u( z)}SSjAgw|oh}IKUO&~0%CZ>gX8@MSsa;j5Kt!Al2`1FwUUM)eV!eOrvzcBpa(y)$ ze{IK%mO|j9QMTp$-_m5jx13wxJwk^=cYiw7j;W@pgR^20lnwrt``a1~U5WK?oc-^U zggD^^aVGS$!OUi`Ok)hmn6fqQj5(x>#Ykteq%+4b_(F#q0XAYdOo(*6(ZGHCQ^hjf zq;2t>I%pk^ADKD+R56OdvHFKC&oB-pD&i-_6jl$ zkNi}D1)V0($dgax!^T0*bIG84f8YLb%_2q1&Z3r(8~^ z50M1Z)BxZ<#R{NxjdShReo#7EFMhNw!R zwZd~3L)vF>ysxFh_8Ocv%;ZLBy17;P7UA=Ex1~2Sz^P1c4i1^GiSntZVw5_&dPqfl zTToC!CL7(k2M#2zUsDR31u*d@P34`) zvU8N3UVTe=pU+6&iNT$RK3&YP_94?2{Y+&~j=`D`IxH@w_&!%d(C6%L)(aglWQ7~A z6t@qEGbipyH!hv)hLd^j#RL(_G{o~Tx}on^;V7qW0G(p+2>wo}n3S)6b=5{)+Wl$5 zr$g8zo~U5jfvu;z<)>f)w@juF=gBRE&>l}etvb-BZBOvT8&DgrraZ~a+pKt0SFh$N z6;^};V&vKzsp5@vru_k)`)JcDo<~i^H7U>F-{pGVFQBiJ^E^m7-_P?j<>QE@Jx-gO zrYf7N2Vs5pUV#0Py0;&}4v0dZf#2;l`F^%8aL9*pZ1WFQ+F5UJmkzPbrY?((J;QPvoXA7EJ)J3Iiwr7GkvMd_ zyfoH$-p)c2Wk*)C=?h#+1OTdY`@SopiktGAI%)pN_@$(6PzA<;@2`4bGL83WkSX$5 zJyp+WR)5EOit$cX9$G@+ClZG%}L(P9hrO!A!P$OdjpH8aUlyqB+4 zXF^Nx46?~52~9fXK}td1&dFH!%UOa{!!Fw9v7TrXGAc$KMuE~IBvcB-Od_aKB0>@id9OP{xEn#3cj;VzQRY;$GDbj zsgLk#h&uHdIXY`}SIMsSF?Q!_CB!O5vV&M2?x(gxktz2p3=g&P_X9qBA?5AR{sLnp zBosri&1$>32DouX%6Z?mkp;epWt({-cH;HAKVJ*aSHtr(`%)u0N%eXv!K=Wm1fQmPE2DOmS31{C605uv1S2kb-&#oS?DpCfa2%VME8!UwrF{T@92>U;T zFW@oEK!AobU-WW#cdnQtFUu7oer*^%=CGG+AtE&DqE^Nx2PxorUI^Xv*wxgQix4 ziWrb+$M6^okMvEoFc<=cLzk8=PA36mGf)ifRFyP97}zt%g%2t~l*=m6?xsSOsKo+@ z?SdOmirVmJuFpJ7784OZ-p)k6MIOq7&u7XG_^gS7ng%_AhSkt}0dCjkXcw(#ht72f zgZY?p0&6*ZyDsPM;`KRhS@fmZ!s&$E$+5PRdzjc4i<`a_6qdiS{Q+(9khMaJC}J6T zU(9cM=1VN3?8sV0Je#8)lwZrvZ+!{vnWdKDdIu`B&p3#GUpK}NfbrS$j(qlNbJH{3S;lKa~x!d zUAl^gxTc15&Pa$|0rNh#{1}?E1=K)SHAUqxnpfs~Po!d5Esmm?QQ~$_zOd`E-JrB$ zC7aYVW%tO0W!r}D28a-cn06U}mM^W??GI5-tSyN1Ni|=cr!WHjCOQS^_;AmGp2r&I zmx<{^)~T(@TbfB+#JrDV@e712t{8!4BC$0FLe8X`aU^Ct7K=p>nwIbZ`YLE)7B1dF_TRPqs0m`i_=9CK+y0=qhP(kF zKd7VToAMv9l8PIJSgsq*e6VBVItZf zto?q6?txgBx22e9^1fCABGFo0D%qTxVNht-K1jc2Kz`HHdfg8ag;)7t=Ew$@V${bp z-XX-%VBg8^N>9pmzSb=GdMSzaZpN6`I*d816dM7il~{bkVl6v~z)(@0FsYeUR3~q* zjqYlsgLfw;lJ)Cjz5CHw4_m4QA_;hfsljZb%_U4M7Tmhb(TF!gYo7=;!0ee)aA=yP zM8XDX(hd)@hh<@8<&x)Q(+TImrn^A$QfmW79pjiUX>8w;{6k_&*?!1!2oy7Yd)&TV zqD~5@nO)98%_R~eZCz;fIFlE*$`OjxEQI+4Cy!F>Uz@*A%Ojo#(cGt$x=y$jk$-km zM*bt}WGM*bKdMI776w}ne5f_H)JZv=VI%m0gNIfaBiqNQMMYXx?1VyZ=*nZa65Z5>67Xlp92+#q4JhW0wMpJ>fs z!DikM8ZV1fW7>^T{48ASuF>}tEYPez<3c4<u&?Flhsl9Ny-egb z-N^ij1`CJA1(JV?FlQi3jYW!?Hj6x5R2Tg*JS0|IcjvhnIM_f&hzD9A07s(WbJFnB zm?I#9!c1X}7vphl|F<#I;UM`mn#XAaUsYzv8! z0ZC}7ao-eUPRH;wh6fZRxMJ_l$8x8IhZlosXXiZ4mK~0MdV1IRORPu~J=`8lWywu2 zbc`cS>zE)XMO*D(#$*(wQIH@7eAY3fkvD=cyPPRnET>DD_6{H*M(S?P0p<8k1h#2( zp3#9@0sR7hi*|?BeH{f^@B~4INUOK=41)2osi0bFqS=xh{#OCz70E zdIHxiv55|OG%zTYYYsTS1RJ;#f)jJXQVy2@ejIBZhbZ)k3#i#5uondZp+iPbw1H4W zEkt02ag(m6gkT35rAERoRJD<9+VQmXxg~*=*qN|&c4-BiBO{9-Dtjx2h-xvC@LLhT zOoV?|YfS(ItZJ?Z4yP%<$ATPR>m2?=KXg-M1D7`{st}2l^Q<%!l&7MPi0lPl*$W!X-#VI zxa7%~+S@>k0dddnyM_2moJ?Gc!&>IYbueQoV}wcH6ptusf2d?E^Ys+ib9=13z5JN? z1P-6Zi>tuJ*vmSNAe)$lFOuhS)c;s`ZPn-S45!8DIn3NzttAQbrsp1rvlBvJd> znaqhaB6DU&!7*D9dI+~{LFnND7H-K4q|NJMbg2q5YZ)kZE+BAbh_4YN%v?AWLo!1*Fn-TeN|3Gd&Jo0PUIy>uVJEH8>N%Fzk-axs<>%ShtWUa&MupNS0RdXVz$N(yX(Fms^*%8F4d4Z z>PZXAxJ1Lht@*GFfEG40$XZQX`Gy=)s(H7TpX_OFDIE;6PNV}C)>KeMrge*vO=Mq; zNv^$q&-tv5=Mza%0TH51V-1{zV+sfxX}D3|WNcL2o|(G$r7 z;4hEeMQw+2ijj(MM;vY(m*?G|LPqzctYl{;-9MtTE!hYjIV8C_gLsB$zMV~Acxex( zuC|kq%1CpDRW7XR9JBhH`RowUq>uE4U5hhS0-hKWJw=UtyUt?rC|zlf(|GtV#)0Om zLlWSdYL*r)#P}nTt-mHG5oq%uuBI?KyOs4&9#56MuRwcat^YPX%dcItYQ z-8>gk&?zZO&E%W1Pf&4E9(f+|-WCG%?AAQdN$<@n1U7xAVz)(8{_#d0P^LS19Q*v* zDo^weJc3R8O zWnZK@yiT0$@%tBl9=>8meF+)Qkr7L0lbRr(ZOL#Nw>va7*!pI!S;$&U;~O z4x5&jFdUIqH;y+z;hGfKpmgsb{9{qWL&-05g6WEB7}Ri%pp-gjSZ*nmChkdtKkQ=2 z(!5EUv5 zY$!+WLtZ1SUJUacXetFvp1J;Ssvp)FsoH@kE02Q@@JPwb@%g6;VF-?e4O14jb8$Sx zioK*&*B1Eki-bR@PrzKJ>=w~QBaHEdb5);c!@ahV;zIc`4c%$QndjzcZJAo3cicS+wPf}D z^6#skM5VYlm!ab7Lmg~{?>%0up@=1u)$=tin zE-GCj`bl@e>h-c@szTeu^mV+`h4bJZU09_qES0RDuVUftZE&~tC8GOlAGF#{QU1Ma zUn-f^-uL0k1F%%G&H&g{IXE_h?}kr+0=QOUX155BX1}zWZOy3Ax}l$C+9+sZoo;yw zrG9NYM>QdJZ(8k8ly-}MR?>WiiQ?rhl@cvKeO5|zZPXgIU~x+5FUmA(PIuC^^qS<^ z9ez(JR0B%w`#d`l`V3kr&@V3FBLMM&=ODmN5*~!W3Qm`BUynb3O+(qsQd}zM`yPNY zc>rRjfK7Ui$ZUbDXlS*aP0G4?cZ!Xqvi5Mhjh5&w;#|Z#)pu-*Zq#9H|H1${u^Pm-m-v=~nf}S$XYzd2bz-u2`ad_wf%9H?z;Z+EZv6wI7@fEXn03jW41wqb<&+YA2Vnz9i8xk zl!{#vFI8!M#TNOv7khQS;ZU)*YR+0~4m|vonzJsy#`CSpufHrGoA5jHC?CexJ}&+5 zL^{1h-Rtw!PZnZM%mwvotB`eJ=?ZgTwm31q{Zvb4wJf_rE!XB(UzU;0+tRgMm#=!# z7A$MhDr*uKO{kU?Dxco0G?9<7aJ|#0FM^p03yYAlgoqW1FJ~+#QTD1lOh?&EF*-L) z+ad76NWR1tSNfQ-rMlur9H3qHQKD1|AJflr{nYex6+a2QgG4&86)@D=35i{_w!@uO z@-Jbs{zO#}$6&slh~IW*E0RyiPnerGaO-T^mPvuQF#phwEN8+xwX7D!%>-2)(Od{^ zDxf6Uz7zl)8B>YSp6nN42(#zowIfYQ*DNRp#nwz%TK3xruAqpDkm9fyvRcZu_M7Id7Fg-;i z+M0DCEPFw9w$qeu+iZmqh-ghaa)OQ_8qyCStWJx9nIbD8qe1}AqH&U9^fE-FRJ$m( z(I<2U7p1mn+gho_{z6cVTq<>bS=rW-_GQslb`hd+JlEU6@en=SAC0+_RoP8#g}?@h6LQRT=BNj5n7q zBM)WxYSG&c$Y4KpN1tcuGS-JOe4Xko1M1jMu(63)x{PtHCX3U)zI58F^WyTfXO~X9 zN{gTNEnNzYsBP)A*Jx#0oc0`PMV2+S!dmHzWcG_m!Gya(cWf+d7Aq!3vKZplOoHMs z2eSXz;&cHSq;{d=NjdDWQox4D#ES^&_{6RiqKpw$_VZ)xqih4#%Kl=KLWiI4XIplvjxKk(qM&Ov}i*&>>+N)Zoeuxh;V# zunIxKjl_?17TnVRnfgfrX`(Z7y6G%xIW5gUp-edc2aJ8&uSbb{a z4bu4w%#}LJ86fm$3M)G>aBGA(I_C||2R+bKRV0QAdgEXZra$7O15N}pOC;Y2q--BH zVxph0eynm^X}2t6)f40HOAQtTtEVE}VncCW4$aY3p#NC~>FOJ6m$b^<%F|2Uh)JoJ7s(^i|#BTq`ukGW9Jx(C>FG$b2(T0YZ%+^$mkq-%j|sk8Rz3xw9nM zZU+3H*f5KRgz?Im>ECM=j->0V*mX9Bp+Qs)Mu!xdlhsgrq7EGU(=ikK)2Vl658I!P z`PZMW0|-x-m;!RAdgf!5oHLW2b}=WrA6E8!U|x1Vtm*l{-0Xf>r}>$}>y@~=_{WZ} z0Pqtm^qOhvDqhUMb|bUdPvy`xbT^nmHZ~=;3ra_{JRu~xOre2}iPyw2%28jViinm<`Ek9)TyDBV7rqQE-t&erWSGoMs zAi?p9+lNSHKPw(hC%RD{wN~;|z8TTEnEKP~FDL0T>~vIKJn9DAsu`)IrA5*vTxkf`k>X%Sr$lUCl-G0o7-8c)l}1_oCO3tX-gQ|YJD$Bxcw&h!5Z3t z1_VuWO29!V!U+$fDy7DwW`0~twb`B5g#xL)G~JQ zbNp-1=D1tpG;{EAJN+@8 zN0OyX@pkH$g#yTU-Gc}Q?F{0-pA_cd3>+04G|M88Nt+=75$u+Ew*gOK&Chi@c0Lcb z-NidWdCIyQ#5*ybtaiux=OeoT6V%xdih&nUF)C7q*~n;DC)3Kjp}_yasRT@J%C;`? zujXtQ@^8xHtTatc*w=*9lz_RmsAvuEV0#MGYl%WaGn@T+!dzvON_vx}aApqo1h>OK zv~P7}6hGD;PN%6E*{n1{utl3KM>&y#DMCwu9MH*54uo5IZ7*Jd*)i=!KS2u-N+Bv7 z317XeKc)p)SLS+XltPkpn!#Ejor7@x$AJQ;h@59WCg)wF(%|NOllsAPB2RW}apIO0 zip?{9=8(fa^PI>V{uzb!l~OO~I!*bDF|}{BKdn?yH^$ds|BpTfLK|=u`zoO;1TzFwjEzORNiFf=UYt8SamQM-L zH6qDrl4wh-QCpPz{CnrVaAIsmBtmXV^wgMe{Js}9r>&bWYZ@w`yiAZ{toX<1j&g2^ z8QKbF1jdhJsHQ1B$Muw8dOpw%N@^p$31ejLBT?ki9ZC%G9+7!+H_&uzDW_f-n6f$B zUPY#mAJr5qQNvu;Wx+a9a%Yy^Go>4oaA7E=TnuIQstxEus2rLyG+bvG5R#371_c^~ zj#7+GkNYbr3&AvL^ounp%?M*>uqr2R!tsF9bmXqZ)iVVL7>|{gVEQl@rAhf(dCQ|c zqC$DLM+4wN(mx_CTxv(d>B<$av1)+hz@C7Ti)vW@UNxw_v%v9cTEfj7c0{I516iwf zkdyK&_Sa6<9@9Z|Z-3Pq6gB$0dR1>j2D@Dy?CC0EFj&XEXjd?Cd-4~9z<8B+H2`y9 z=H2_NDaC~mf~W_pYSdpQA4AgZuh}dh%+%ty34#UIZOHz*329nkVd;KB8icdb9s?!o z`3j-bfKV!z=M6z@FD$0Xy+vbCb0&ob7uu5xM84kTgH8*)8MM#mT+z^+H1U2@hXN~f zBvxMh)9Yz!L(lB%G0hmBDffLxVVZOBJJ(YK?uDR@qRKXzQ9m#f?GjbH-0-O!@Cdk@ zygc(A3iRkz9zCS!bE-$tn0M&?wBAuafKvQ!j3=%{mg2ulrJ^Zlt*mjX!wP5w2Kp=d zK{647yr$Iw&nN~VB1L|9h>qYUMX_k<8KKuB-^~=Hq|-@zNTecApX@}_6dILKnqxqi zIcoG7l|U8ZM^dbd^D2`PVDRCrsKoLaP~yd*OF5Xu5|t9k1%1EkEB8 z`@+4)oT~h5=p2k3J2z2zvkT`ShN>K-O#fG;`R4T<)No=Vt zB~G}Y@m^^}IC+Fia*`dz8W~;{SL4tkmxEpcOy>M5DeA3K2e=hLIxPcW5q^(5SVZQl z00Ko1xSwYA2mL519BWx&@VGdZ%7r_TS~H?44`^V;b$Gr^r+okIS~$Zo{^_ib9sy0c zr4TbnDosthNmu!x3`2%2HfP`~S$t@-0l9}gNORbfJe@TFh{dW*BWi@DMVp9twPRs3 z6{d8ao(@wdO`k36a*Jjti*N}o0lG+!>e=rs7q7034{t_D)l7JrS&RlS6?V*57IEeD zzC{+(wkg-^$`h^$BbUISHZ*)ZchY_@)K6!BgLYE| zW-QZ#3)Ml69;<%Xy^ma9%tY+zhn0m+P^YXkltm#9r#fv#F-q-}A{YFkmL#*55qzX; z$SwDwR9mz;&Q%N9KWYdc=kxTen+^vMqu0Rc1(&&|k$6C6@N2&U*Cmf(_VTN|a9H6l z$9RE2_{-OvIrEp}&TGNS{nvP`KKwh(i|k7Y>iI?^2fVWCSFXzHSPz_uW|!3)NxdFZ zcfI^gUemOe;C8IWs?P)WI_hW2gVCY)nl7wxG+}epDE}bZ!M;)%cRYf~h(*uVRvU-0 z?6+efGLjbo&CHV^pWyyjcCS99Dslq1c(K@4sVJG#GQMc5%H9Y6g(4X>9v5DMfIyTQ_0^ALQFL+*vwfaM#O+_aA_sghHw#RJrHK>A&T(yHzL?WW16XqKT2(Xsm8_1#_&FhZ@$1=2$xel(c(9df9 zG^Oan*73H;cZb6?c}e$g<>40$ijhMxVozsug!B_tsP*e{()bCvo(IY}Hi=8D1-TLd zm%PQ`^F`y9{PVyvrf+w$n7$ z{da>drzE^#V|$XPIxeA(o)YTl$<6Wnq3tJPW-hqw^$1E`NMZ4}7QPdaJ=XoMXx-zo z+x%YJi$^Ues+*~k>PV*?MIBBMlVC(W`WQ%CeIinImdm-%1!vklg&s~wR+aDh{jLIQ zgJJ#=(FJ{4kdkqyGF&-_usV+KX_e%`Dxy=;v%*nj2qg(bxWZNr4^|PK9M5@<=ahrP zTT6dJJU|!L`XJcW0z40f=6IYyiiv?`v=IoY_V>jp)xHpOkm4_bfGYO@VZ5MOSl{Jh z4Cv2=q$(stRXIHBZKX1sF1~w4i>k^}0rD12$30j@bUOZa%=p##{x*xSrB+^SqJ$+D z?Xh}iG^@JQj8L!#tBBr$Rc)tO`An-oCRb_|u+;VW&`%$hgNw)MVA3gd-p6Ua8d)K| zyr)r<2djuqjuW2aM3v*c>p0*!4pce3$ODV(IM8iXZygo(9HU|^;$9y!7 zRihyw4g|ox9_sZt!R~BNOcYYR))%K#XF|;DwEc7lpCx=Mg!LWvQ(%5IM5&MvRps!g zQ%dzpUq*|n%2EOBdelP?RuLWOVshbA@KgmA<&_(MpMu?zYzkI&sTrYQ4^|Pq1*_Ul zv8U-`1+r6wD`2VX=RyyB++JTigs*o8SXx-gTVyI?ndj zffxV&I?gU#M>PeXV+z8TEM6Rk174g6T^9BX+sr%G6H{T2%v}U%rNUu2*mE?*oB(V` zLiiZr!y&Bitf<0^XG4?<2~kxJk2R*~qc60PD&1&;|*Ky42IM!bWLjL|bj$OHqULtca^sP%|4)nxS+`#_6IHAeD z5OWateA;p70KvT;)YpmR(~SOHNT(7!CZzU=y(IZeZyrU2LX?$DN9dP_!h2^3_XfhU zH!SUBV`UGB(J905B2+=uUZ4g1t*1DFuqy1+Zr-H~Fa{M&)W!MGBOfVF-}|xQU>EN5 zK2r1jBZWK5{*jvR=2#jV-mQ)UUdMs{I?y)huj9bdbyT!O%pe;>(Gqn_y*7lQy)pz7aQ(Jixf!?;q{`LEfvx)%U6_z2D!ne24h^tqxGdA+lWii&>7fPut<%3X0SVRwc#wx<2uFe{zac>=oI1TQ3;0`4VM2ncsC8TM zA7MSoJX zkb=1MYF)*uY^+@_Q%frp29)@@p;cUA)`nyx3rScKRJbymFepNFR80~n;pzuvu1uQ2&x)7LCcW#6db2TM6#)5BLo@W@mtK~pE6yEFD&0#FkO+$<^ znVTQfm*Ar6tR0a2?Or-1lh8#>LStL8kUfxGNM()1=GeM{JAj_o!joBEx5D>vGp2lu zbzKZ&J9XFro(`-9>$qF4Z0=8I3$jmFcHgHCZfAK&ra*kvWcg+-zz*rabVyJpK+NC7 zVwbSojNDBOKfjkB<&ppyQ{~^u7J)%L9fios6Q|#SRxx$Y*jU9(Qw!s6nr!Ws8PlVX zo+9{}&6q=FVkAE;GbkuaE2;4n;6_d?)0if4juJMEe_va#(<8B_i7aI=|3B>Zj;H$= z(CM_IQ?<;MR!Oy;t4FAHtD3?lszUQ`0>FfyHi-+*(kuNId-pS2RpBeP+J43WG(q9Y zZngaDeySVpfIn54_mM1_cAzpgMja<=S(TFz3(Mn6 zaCG4tbb(YDB`LAgmVRn$a+J?-)4Zw%xQ8*bKYA2*jk*4I8{D8=!ob_biHubaS-gyA zWFYU6FaEZ6WuM2gB}DNED@_Ie9xFMN1hXfsK>(gnnRS2&tB9~J2OhRy2^pX9&1K&; zUkc2jI3HVpEv;bqXu?F4I;6u;Pd(4Ea*z9EaGh_HzvPF?S54!a>F>6*s%~Ecpck1rvHN7 z^NF)+i~3SH-6B`zl^fqxSIf6628F@ol7f7>!Xg-bVX)k%Ja{v=4U6`IN0WylO&hO1 z7ISihqnQ(sGb0Fa{S63+#*vPShFlZ^TQ~3mAREbE=6MOu%Xr~Y<**B9Jpb10-C8>8 zTK_F*cia6usq*!3j)16k0*eB`Bt!5>DTeAoH&OfwKDDLGSO>{5mhpdz!mwn?VQK19 zq@-&qBi_Y^mY-HY_7WE%rsWUyjzEXhmOG*8bj2~P(=2UrleUDBd8=_VlB71PMgRC0 zQn%%w=r(Nm$2s~|w)|r{0vEJL!*e-2kLWvt&M_@OGr0<{2fJaCacBULiWI*Kj4`>( zaCsoaaL^%v28rreF`=HEqt|VWqwy2K+G042^gx$(i}*c#J-$&=wdz3*ov?}=;x529 z>q0X{3}IEAMFe5;UY>f{k0HY#TDgh2r8;0ryeIl z_#ENmA*}Bl-X=1i4j>^3pqRoz#}(_;P(lMmTtdK1KsEGW1k}_$9=qW2NEM~U6cW1N z0F!mWn3swX5PL8JnuyhGHQEzYF_P>!;Yci1{X(dLH{towCOkiAkPF^~7h++(-7bta z;e|np(I$NVJkEI@=Z5n*H=4(}weyHw@CaRyYN-nQ5-kfyLzNvSzF2NRBKI5_ zf+^OU0df?w9Sq@R!UsZF-x*QG7l#8#NCGIPaL@t8Iy98fKoOS^%oBlT^k4+kjeH<- z&w)rRrDe1W+%v#r+!OOsF#=)_MnDs>xTi*YkSa!!9UvTurK%qbH3)rpw4II)+Uc0L z?6Fu_7suS8F+4OM8>DCs%_{Tz=dtX0EDz_gJetSy?ek~~nWa#-fsk26eN{;WiQ2%s zLol()%>Y?~KG#Bcm9yTjhOoXfsCQt18v!IF0Tfd>=&E8}A4+JTh)W0|8oDT>94#xQ* zq!(4ch~LxK^`oSs$fZb;%e2`_NPUU$l@NBqtc+4>rBh?N;+U>POfK@TD1`?jpiVKW zr@2&CB^b0qz77-Z&NU#h3!WW=(u8? z8cJxOh)W0H=NHN-k@1Msx&*R*19_L2$ICuLz z#1eVvUq?gT93}=>Zb0e*eF&ylZwAOw=yNcHmkA#TVSQ)x76Tj(pd$lNOyQsdigjox zp@AYUAz<894LukEb!#4oY;qt{MQIt(1Dgym`G6ksQZWKz4@N)}vDl^X?E#v2F&)5@fp;!mI2xxf;Uy&Y(UHU)%^F zAqk+E!a-LR>-tba14Udyz;LXM7#@s(x{j5fYAc!Mg6%m_xtd7@p9nGUDWUd5?4TQ|)1|*I}mxf?slZydz1^S!| z;md^2hOoZlnk5Ff5I{l_Krw}b&MMaVp@asCxP$;-FxAk55m49gY-E$Okt#|%PjqLK z0VZRUn3swX5PL8Jnuta08tpl%7)f@Pa3q$hz7lE>bO9CDgAq_;UGXMdiG}rcTN!P_ zmD@LAM0xu>E_)uAhx52Rn#bka=OLDelgrbgZVnRzoN7R#0pr9FOtFp!h|Y*#4q+V~ zeP{bt!%%@aC4@N*u_al)_jzp>`Epjuk$pDkF zNz6;d2#7rx0ZqhWlN#+ZRg5G%LO2pjRX-DI;7xdXlub?#8sv;O;h9)iXOlCdO?YOI zVzj5fe;%hik5j{WoEpvJ)Y^H(u}G$gu->gKji%xr6p&EcgX3XbIy3-?LE?9TQA*Ur z2SN-79TI4esE!pA>WST6EgNSI@e{y$)-a6pfa(|Vd-}R9DXH4>V5G<)+U(7`(C9fK z?5*+UD5c&UQ0lN_Ivg>%_HkG#JQx9W-pv`Aiq(|VOCjHZq+ZnuT!pP?O7-ZJP9eNRx0E#IbbXBqZwkK`_w^#;>xP*XlcZ?c(Faqit zUS);S2XwZ{SY}GgfX#y5$!dq7)f@Oa3q$hzJI6* zmqwd#Y0!lGy$SaZH{t%#Cfq+rG1`RAChwKUs!jq>0RustD^^9sCY!8|)pZ@sLo5;X zKD!MES~*M%U{~S^0wavJ(9hwv%FM?zTN=lKEy919>J380w5K}Qtp z=ukofMO;F_xT_j^Fam12ABk*oBvM6bVgA4-157@khrCpbfY^f(&_paYsnIS|#YnOv zgd?$3^)mshH{t0~HaR_LkTc$dXJTQUP0oxq;h8~-(VqVPd7Sb*P7UXAYBY~iYv&OM zbeREh#2PgNa_59uunvbRi+i@1_&C&nMD95_1QYih2#~{&Z8bQh9U}a02To14UdyFi!-U(Ss3CH}bo3nv)UvUG30SY^7!WHE_=WlW|YX zOT`F?Js1H^#NwVB?J7tAMUuTsI1)=$e>2p;dExMAI~^Xh)0^J1Z^o8&nIatL21 zd?|$WeV#8cz)AoKNdUzZ4!WdRSB4TADB=IF6GoJ`&*Qr1aeX+C>!W#GzkMEJiKwz%2z7Iq7~p&Z5;fa%LomfU8z2{; zeTPxwR#>pP}qF~FGs5|RLlDI9b{u}%*qG*HAP1lYD!Lk~tkP4^R#O-@9rC@r3? zflUUOj7?%*Dn>x;!3by~R)f}PPf^84vJ-?Ou~hYop$6WB7e?9S!k|GedJ|rZg>~Mz zINF342PxKOllRKwyytO#IFIwAd7Qs}9%6}T4?h;_<}fk9(FP=1Dwc;}ighGHpwFQY zK1%pt2nO9-%StA-wofVwpgMm9MZsiL$vfCV-g zU@|s|d8rryu?HidiCAn>qdi0wBgqaDj>J;ckB1sKn;aWulVgJhIqpq(JQmj3G;u_z7TbgBV8oZj086_&t5ymK02FxvIlL^l6DU zJ5U!Ig(if(H4cnY>cD_f`<=G?BW+!Q+^-ZKjDR}tQ5#ZIQr`$<8A$5u4M^;Q*M?xC z@YMjhf#37x5WY_MQV8oiqqiu(5!0?PaPMNp^{FB$ldvGi2gTctgeYUu6rKWhx52Tn#c9q=OLDelgkUCZVnRzoNqwt z0euLjSZ4#|0`xf*!siK}2w{C^^cDl037~TWP)y;V6N+_uD4~HOE+JstRSi8D0W}p* zL^e4QsiL$D=z&cJn0!DFd8rryu?HidiP#48i1rj!j3hfjI1)=$zZkH36J8i)lM90e zx#&%JF=BPzxH#H`7Y8ZUW|Q~IgF&pz|jUIP7juc zV2X7lLZHu~5I#!yUWXT0E#IbbWpJl4<$5E#3clbyQ-lFBcN{0gON=R zMye<+1A1VS0VW^NLtZLIKpW0w|_%&^5)nF_h3i5tk5P+t#@$ z9*lsxk-1*m$D(WTbPuJ)xE>Cl8DKK*iFv6Q0kH=opov)AQ=`4kUYAI+YlI`QRP_Ua zaLx-{)jK@0>>sq#0dLs@v1MI>JfIXFjDWfvYg@41D~~15V`(^#rO`Z=2BjL!LyaBB zqLt7(4wLw}(tt#jfrpK(I$*2Z=c5%&*RE)9#=;5xN`eE z#1hd4aVFHwVPb&O4M?1Vo*IHF)`Qw=>B0X5y1BbzMORIxPdwKY>!ES28TY-3(3MnLSr2xuY}o78BJQpHFz z9a0vFrK+C|HSi`pGs-4s1`Tr7oA7L1So4lKJKBV22PxKOllRKwwC8bpIFHk#d7NH5 zk2n^|9=_GbB2~-CCGJ513AH^G51BhW0Ej{2cY)DB#0UpN3o%D7rK zE^xmj^En62OzQ{NfA zbBH@%wg(c?4hk$q8`wPV2X7qKvtmD`4HAE3Fkss z-x@XMKbF*&3^l^Ge}L zg8!Z!q*!~-`CfU9o~q_3?Nqg99*tAgM)MF$#970ep>7Tn0~~HZqSAP12&PyE14O68 zErsx5!mm0f>ND0{wf}+eRX74DCUDTJMA{!Bc{)J?BBj<eEe- z;ymGir|MJAK2x7(#wU&>qb8s7IHdLW-HrEMe1F{EExz7&`8&xtM2)Igz~AbM>qGE%)ij`1PkX7nJ#?O3lQo~JaXoGA z@pLGb)Bov__ISFEJ=z}chkf{THOH>g)taq6I9;uYJ@yjKl(yeGQ;OQ#Lte`P6YLxS zqVRpN2@(^4Pvm{5KILp@eV!SgINgXw-R5yf>+f3|?*-rI{oUg09m}Gkl8kG7sG$Y? zt)^ZPm_Sz-C?07@;Y<+I8xsWN}E&aRL8#E5JQKEWK>_G!&E1_x)k7l$KiQ%bt)!xy~dw*`M6?bP`#pY(G5B zIcW2o&I6RPv3smt%;eu~>q2u5nS=QJ=)R$u{O@nnHRMCUHpS7W1KjPRTLQms_d#Jq z*WFa)^yu_h(e{g2R2H( zE-1`s=Yne%jdT=Q4d1p?t>9D$!Rcv?gxn>Waq`*RBGnR)a5P!b(M>yi{0#im)(5eP znxSjBx@rbH?9EH9)A8C~VwhF6_!E@4trF`t4oYn0ZFzYcCA2%(t$fybIQ2?ZxwU*P zsxPh`AC%ATwKvl0HY@9Ne%lU5z4>8&+%Y0@?A??9(GCLei=F#LVTiw*y2NC&6$g_+ zWzIpfGEavxljbFQEmz=i?M#_CGEUM{N2Ccl9JNI+w!6T_o%&N^5$?}{lXjJMch+-d zcQ;iU^Hb-zXRP3+yhjz`3H>akk3C(Dw#Q4oMVkqB1VteE90W1V3q?uKD?m>RLB z^;Kus>5#f_v^df&br=AyJchfH>H&#_Hk`QaCxbvTN|eTF)W*7{7!I)!7|vvkbxUWs zmN8t-Y@tlLTUBJ`$T_6k5K`m0z-J&uxWK^Hn9gLaCX>+%)t0mY?b30UQ$wa-Fey1s zt&{3Y+kTWHavup@>wnh8Wc0#u(Smz|9H1Tvger4z8&RkZm&qtDyh87VN(w7ETy8u7 zW_8SRRyB#eBM1W**~Wxi7B0p#d0?{CdZF>hY>+Ni;Yk-K9ksF;*N%w{A@~R`D<(zZ zaT6~l%7Ma!W7e;TFc~_P4y|k{GM7LJgxpVh)S!+_wbLI3)gS>pF`59GSaQst=vR#W z<>^Fy&wCsNd7MI8dBli80z5vAQLt4l=ma~R&KZu^BOM616AqdtkkYHfRkKKz{-m+R z7}ABlpc=qX3|=B1cRZ@P9OxHDE|ot~Ovxo;29ggVQ|mzM4hU3Z9l}T}LwxRAqWKbW zygJ6Lb&OeY4t=Pm%0nGWlrFl?qFjHM zsos*P6nmT^bpEo=Dpcudl$u@a8ZHnRn}^bOX)n%jOjKb~u8~9%_?9F(UQ}$-PeiD~ z+`4(xB)5xIjpUHAD}pDw!AMi^P6E(-#kCd4=%(;*BQ)-hIb~>!YAO+z# zQn3i~7#r(HJVE|B0Qe=1^ zd8)`(MMi7j(rF};`ABU0X!--xU@Rhcj)DX)8r&}wIwX{&^@l{)0*9~v*AAT>+W1OK zX8CpG1d)9BMHyiH&N8Hd+9eheRxeujWt`f}@w5K1w09NL2OMuaL?uOPsg`weQymy{ z?rTkOUlg4%)vbN#uJjtkP9H@WQf$4@Sv&nPm-C^Zq43uy;T5WiK0V$$l-Uj25LmKs zjCxZjifC818d;s18j&TMjjYIeqb~dCA{=K;m`!jcW^^4?Sat6+gf&`)*w%3E2)E>9 zU)-q^*2253l66!KUD-SYK z#R9G#&4?o&^}6l;wE%V4609XCo-X1ZPe()OvrWOF=>;i zMbxKNj)RNdV>&Tv(4c^DRpig26(%v9ZCfVdS&B&sCBw)12{M7Pi}6XtqMI!G>_~ml z_!Laer%}D708($qJaZ~)1sctK%sU4;FoU8x;~`_qX1s*8n;9iA`*1!j#zOdqTR5SB zYpH6rT0B|=Gf%pxfNd|VGGi_sevih{ZItHG&pth>eOF=)FkZ zVk(ZR^-+|7DT7`#G8k??%P)u*1Vi0)3>M-qsyCF{2pi>- z+&VnzAki1ovwcNL@!nu=m^sN&`6vCrB8$oj5%Mc6fc@9$bp)Y)U@BtR29h!^6wN~ode%hUMP#CX%Hq-Z|$$-+Eq{LC!@4s zz-`cGvZhUd2igD^Z9>yDv!*NZA+$mB11%cWG;5zgn;?ud#|gBtdKul20QtY$p@9MU zqae`nKBA}(!%I)2PjsZGY09L*b}Ij_G&Qj)WVHdg_jg*Z1{LTwTN!y}P25tnIOQMv zoxSD$hLo=6kh>UYW$b#nXzwlC`3#uR7lqlrfI5QoHuU&?DolOJX>9)Wle3sOFi(3LoI{R^dEL|WKG^+dxI73@)< z&&;Yd!J}GIGTk7MnZ<)UdNn?0Fo8@l?QnkhOqQhNAym2(mb*B)ucv75$$yW^8TDu_ z;h|UPp{A0sOM2JG(jGcA$S^!ADkr{k?7K;1UA&;%2Xwzcrz)KN$Ev?bAhU*`7;Wnl zV}5hMBsuH+apbDqFYM=>Lv1T(#nK|AvtsyA+NwCIUgNl>*YwoWbL&7m-YmdX1G*bP zD5YpPN zKV{dRk246PgwTDsxPDJRBZ-@;CX|HHlsTWeiP4poSMljkx(-<(G%%yA6k;o$%#-R) z{xS`^l;UutywJ5oG3#}*UbbE;XQaM!YJc~KOOv8PH>RZJEImd9NJ?M{z{IQE9#N4aLU&69$Z(Odcn4bbG zs`=vpzsIc+-xr?u0Y;E4R_#YWnrsJ%&6W&gQ|5l<{J-UP_=L-<#W9Zu@O%K<$fM;j z8^LM%txQ4>@yeAVzsMv1-i{*a{gZCCZeRLEp9u7j#)*uL)mCm(R{z#du{VFMoj;}E zr}5T;A63S`ls*IIDV8_01zp#`-8wL&31K>erTgS`2B#Vtvs@3P6|e;^rPj40G7uTp z!I)vL=Rna=*Pz(lExN_LjXc)SOYD*vh!!<=CHCLS!!huk7#Kjrzp%&vG9 zwHqU`Xjyc*0wUA>50X5Y8p5x!&}rr<#TvB{A9b4_p&{0km9VL)n|3G3M33P~$ zCeIL=@&fw_4219ou%FO0J@hb*D5%h?iDrH)$QoO7VdtF%XGVBOQjW-5i(7f;aj7Pl zX8#p8tHAY?1nE~yLn$t!*Z57nk!2Fh$VqWdR?I+yncdu{VmJ1b88P_x785G98=Vx|`KSm&%X%P?ZB1d+Q%9{7istXQXUB{V*toO|p3w_2r@M^jj z{zkVE>xN}gSahDNZeUU@K*q{#vF!tP-%T~A2^_EYYuSSfaH-OK+XH^i0cCJxG?*_OoyxR*F`2FSFkl zix!4Cl!xxKy3M@_R(|SLN(k?2UY#mU`l5O~qp#K^^{z-SE^6jx@5zfYE2el`w8t_P zjj?gOI`I`B8oTkO8PAQ_)Ty46+aMU{u@=bpRGT zc$=aY=#ASod2ChtSV>oIkP2A7pAm`KLq%N1VeWk5WnSp`sD`y@{>n!#np3n0Cm-I} zKS7{QmcOLngAwBwUhvWh7Nb8Hv&UEA)#uGSY+EQ$@En_OEqJMcQyikW_J#u$19M$| zE7-Q51QalCRrGDRNH9NAa9%(1irM4{4V!+pP#c@@%vl-4+e~ltGlwIKo)5;ty@0vB z&T%VJSgL_xClhkxJ>+KT=Xu|xmhw28ta@Z+8Gzf+%9X+(Rt9-e7_J8`k~||EKV6tF z0h50Oy9KQ3=5k?CttsT20$fN!IYUy9Ow#amidvL#$W)QUytbPE4s4**5d0-QAEfY& z_H&mzHTZ*r3L41^VuiGYU2sX_hhVFP#jQ!NtDdzz{|7(VySbs&+n0UO45@f;j0Zz1 zDn8<_I*${9d<(X_Zvp02W=k5f2Y*Fcu!@dhqT2MV465Vfi5pZW@29tq-JeZ-_7Nr% zn0*j)vRSm|?PbDW3cVP36I#l|eObN(hPM#Lb98sX&@P$kU}J2}>#KzdeYMag8RdeJ z71Qb%z7kx?_3e$auFCKlVPjNBU%p~%2JPxQZ5du$4Z|ygjjxp>AU3gr?Y7U({mdI@ z3m&QpR)YJoO^iZJ(_u9cnb3XN)*Y=)MJCxvH(|xLw&x*hL#-@iwSq9}J!5^Bzp`6n zkidL{p2YMD%6&H2_-1!f&7@f8Mn)(=ZQ&7_Q)t$?hS9c#)E@JKo6(jseDH#^U`X=! zEw&ewLeku!m{N#}4^+x*8hJ01ugpts8lCWo<&e?WctsR*M!7GW*wJcoNl4qD)JP=~ zs^GE(Gp@d%Yh!>4 z8JAngI3K=QG|sHTMyfcPt^b{{K=gEA%WS*62g`R&Q=QomgWCy_t~rX2u3h zDYPgoZ4|PY^qR>3weHyD6+Pt(kvuT@mo`OHy`p$z2qP=;v;z=@q7-)DDFKi`IF=Fk zVB$E^1>H07gM~~SufgLW56tV_j_f9{QU8(|2|n7XKWlaJhGTG$)KlBpLXX5NOKpK; z0f}P~Z@4YM7B;lZK551|TE1X@K#xaXGzprEL87VJ1Ua2ahJMLIqG~m4wy;<^;c@gD=Q2}oqyl00i%j5>Y_FaI%o+5o3})4b!N16OAzvw2=YJ!f1@Rs zeFXmjLMBF;IYK=39u^LMYojk=5CGEd*9#c!#sY>`^Jnt?JFN*dQz^#Xk@WGDTT*Ax zb@nm#V8>$;#3-qyL&^9(*vJc}Rhn_b2+WnL8;5MNb@IuwEsKQKMF^OorFUsvHjfI4 z0q$(iuRqqUsMzR!s(%MENzXg0RFn0J>$O-_BFieNvR#S&*D!q*t&b5lA>-oMA}@2CRjCYw2(AqVAjx{=dO(T1E@7i#2mEkLgd8gjZU7&%=M zjGQi59JWz1IW^inCH~M_#6^qA)~DWW=$t%!c!bV&A{}K3-ew?uoQfz&!{Bx$1^w=v0A!HdopeOJ9 zWf)pdy_liFD!pQh918A%-|oRW_2)$tbNX1F6yJY2?HA%e?vLg7XxDt<|3dLV(L4Ft zYSQ0`;8dbPj(QjLLt42%PP(R)i0c5B*dFkCF8_=eh+YWx7-}hbw2+6-~Zynj4j}` zMu;SthQ1x6?>L!`o6BD#Q&@N?Q{FAp>A(`)LVT|CIy2Vp;>p9PE@)`NZh4p@#HsdK zIfsFyUlu$z_2N1To9Zq#}|uxA1m|CeZe|KzPZd9T1rYvIqci`=JNYsw>e5fa9f`XLhrW1 zH>yzF&)Rv97E+}|rRcmo!@R3MV`HLy>{*Nn#h7qTOL|2ipj_hCEB1PeZLngJ3#I$f z_Z6vBym4!p7pj(k+jya~__Z5P2OqHP9fG!iPxEv7) z)=CI2*FizJXi~DR#hs1}zB)dcC$iwCJvFkx%OR}Y>q|%qdB6mo7L%bzY1jjXsL)^q zm;c5zYL8>)wie6bVtAep&$GtOES}lQZ5y;*p%#l9kSPK7SLz9sP)7(eKi<>dsHp;O zKV-{;wOLufWzq>YaJ!6LQ~r*x!nUiVsO3ni~c4{6M*2jGMl4$xOf#VKPOh8fJOh25@5|*<@;?oi`?21ApVi(XF z&FgYDLDRnGTe?1og6yJc=xwV*!`+#d{rkIfoIAEyKw^zMlzxyLwk%ESqW zp3-Lu6mSTCOfSe5PDM2!j%@I!UM3WSFB}WY7j`&@n4H9lYRI`MJgc2}7gmSxj`*## zFK=*}K48@ci;hO;ZMN5(y!3cT>U(Ucl>nPD?p<*DCD6=wYrk56*#Y^k=Xq5uvka$+U znzjIWC#g?JL9Mo}_UMLmmTBJ~B?$>xCD<23(z*581#%1|erm6n<;Hp(S!(`Mv! z(xy{%kkm<1ro|mxACFj&ip~p(IjY58I2A=tKCb9F6+W(pk2eDlBN8XX1mIPk)qyd! z;|kt0wBwcmEjcRQ8WM3ci9p`O;+RHi{dxN|X;BkW$JC=*K&7QItu0nRL^&t0B_S{V z6HFY7dVRD^H&-e1g(AgEn+*+lg|!YD0&P7c`t+v|)MKY#?mNKY%N=3SdInUR#V#A{-X!k-Oe(vG%x#uZWu6CQzgN`AZDb8o%j(bGS zh%_x`2Kb)DMRiuyM-moyne4}YV6q?nL}^#&yJx44L`Rs?-g?sBS9w;e=ro<`D!uU! zCN;j1+mnwJcY#ieYWJEt5bBIOOCwV(Mw-Yq<6{B3wE)ZotN{0ZfC88$CN7VAQ;M(n zC-pFeeK3@&|89U!@l}$g336KtLeX;a(EZxKWb5IolMJM_rsW<#^`)APAnQ;~yHy0a=4V#g*%swyv z+qkCX?&;rIOn&oY#n1UX>MWwY{muRP;Q~Q#MVyc+ z4!aclBDUoJIl2nf-%ZN)V=vIa2)?on_c9<T3m3dAESK0p)E`bAvrmkN#0mVd3hEl zd8L*x6_gsmLu*OB8iZ&SXqF_A3%kW^aDcqZl7C#apG6J9`NI(xQ;$*hSrLAAiZ%Y8 zLUP_lt z&d{D|Cu!DV#R}Uvd1_@IaY3gEFLWu}@MK?L9Fxy_X)uh}F>pXh2j5D`cx<6eJmzRZ z9#fD7B}*%@{1p0O=?#IqXU`s5Mfx9OAmyMM5wxvXZ=FTv&VHMkb)BEkGBec<)fP2j zsslqtz7or0K|?&OK<=`W}3lj~H4oKU3z@wi(xl8i+U+G5x#Y8cPhhHh?M z*8Y^A77xuyIVMz?c2Iz%sgRC*yHbZW{9DnjhPwJipQHvAA^<%!mzR-Rik9R4S=&DU zi__W6zLqR#LDS?5`b~8x%YQ8Y*%SksJO;)zhs$icBr}OSsyl*~xpkr1$B3Tf|7MbO zhcab!J;D7=K6d$;jro)4FQ!UV?+V<_-w})%?L-mY>s07hbw8> zvf+*~UaeMgg*LhXLz(3$t`nm2cQYSE{cD zQxxHr&0VbP0=S{&K%O`GAW~x7_SuVA8xbqTPE#jS=y+cV@0XFm-$LJLf6GjIhCz6Q z&t@?#$p$0>t$p_4!#i~|ioeP9dgo5vjuPI#!`E~1?X2F;wh^ibTNx7gp!-%`dl#J72d+Bv~4M33ZmFO@85DqV9qz zBt-x3&_+EvB{iC(aa)1@19HCOjMUBj`Ii_;>N;w%s=5*C#TI}6u+~5~x zR71h3ha19)4L6t=%rye}Mq6sQ=^4)&OJyP@PGlNxlqrK2=`aqeSdxLBc_@BkyqU@0 zK;xa(ud3a6MPZlmBMwMEp0YBOd~BcW1@=Ish#On2g=~SMq3Sd6Pbct+G(nnL%Sia$ zql%$87^{f8_Q<&n>FEXbaZfGJ^k}|Fdf!;j7H4csX%+ zgr}$k-=9Jel45Qs_Ch89`WdCM@A>tX=IW0Z+F9YS$Mavq#y+LbQ(|0;_;~(@^pq(u z0d?HZgolCj^K|}qXNh3%`EP=i!%g(^1TOYyCgIalAkax*_K6pC@|~2A=)1j`)PRN{ z-KQ!XRSBv3cW2%J!*_Yn ziKCC-OPW9s+Z~VP+h1-{mxa2!FNj&Ej0`SQiA%4`(7MEJS{o z9EnXfIIHFV6cUelO?TZ=4q{cE{45SC<{ROqs5&nxdz#Jg?2g3P9Z*&m6Z4G~1Af|J zv1WYAPtQIwt*sPAz;-c#GKMZf=J9O&ba+uAKV8l5wK$G!z-4LRvQNvkDD@Q2FdbGC zJcDpy-fo#ZV_fLppSG5GI%NNZ#eHI=;{6Qf$Imo{_YqQRXY@BUt39^+W1By=`lBEw z6Pbtdzb}7&i>vpY)g;TjdS2^1%bG7Gd(dM(SaqKzcRFzO>%X5>-%awjXrX}S!HPXg z0cB!A6J{l{S2Bn>Q7U@L@@ zVA)DXS6?#ld?4I>kyYD8xLcs=%9e+vRDZiA$^+`{PLQ2+ikJsmoPr0S=1USSZ0gIP zE`yGILbGb=@b6zC$o3c!I-UdufRZx2%-L8aLAOOE0J15R-Qqj2Dl96_y>JUEk-h0> z0*1AXH{_&=m_XucYLE?Z+BdKogG^C+qA_>XEZI2Rnd_FvZOO28Xy2 zOD_ho6mw!YL>Be%UB1aUuO_J5Rcc z^5T*2v)8Tux;6iwZ0O<3c6AeamvtAOxqLRL**1&6&BkIm^%f9a?T%Dx+bJ6svS9^@ z#Rv#y9tas5BMcPAglE9`k@plxBsX-1fl&)Kko2?H8Xe;=@l3!aD&f=W4<_Zj0RF|& zSZW&a={U#*Y1fGU1kvrVuXet#M#MRbAf!1d`Q6pm?qT@&c9%q{*VBtNkizv?Pjjm7 ze;OsXx`o23)`Q_^!709=w)BeGz^)fYuc43X>U#~om+IX})D7fBwl(RU8f#5p97tb9 zG;!<->rhIL7mGz-N&A=xH9e7bOZL3cU(lXfOeiJ9vDYH#QJXOZ;zQGYmiNxHCz(pl zyjD)HqDXL#>I-{0&`WAGQ*v!jo<4|)aU61H=Cw6ljGuh!5j!RY9~ybqGNq);V+_Cz z0q;zD52hyR&6Ya_#B|5+5X@~2QA24Ip$_A8UlZ;mj58jhF>*6CJ zTQrU*pEPTWb>$`*Gb1C#VgANEg2r8&lxh~sHHEH*9A3Kxn<$1cZrt~~&@_%ORa!7> zhp$i7RL9Aa#q{gUV_Cs`V>NlZn0R|vV*jl?{8rIDz5IDic*1p+XXj z-H$SXv=E;etcofHYd6n%c%r;RhYcHiN;ZvGJes~0=!`pb~tg9woDDoHNSdox!Cgb=GCm9i#xI9Z)7<|a<#<*;y(Ts zicM%8Jf`rSp%T+rp<2v|WhsC-MavFEN%s^73CS^sND())of~EK$TWFxtUHQMD?e5AykBw7h*Jjv+KM*k% zf}6)Pw2kUv`=uE|7ON}Cv*k>FAKATPUEbj-{Cau-%l&W@DSF zg1}U)fQqj<{kBBcV%|-Oc&Wn|b6Xa7D7wAQY=W zztHdoA9Xziju`nb7t%$B2wRNHWP%%v9&${RZOWTOM1bz%-ux(M#!VueG{|>*vxr2n zRtHc1>Ye#Nq`}hEwtgmBfl8oanjf7OmGwXCmc2VjU`)%GUr9-dqSWraJ(hLxS8*l5 z4u^FefFX`f!eE8LKY`sTh|QG1h7JLBWwA%dO}Gxh$S!W0kPe}7fc77k`aoSweds+4 zKIVne7#Qb(y2e0IPBNm$3yNHHa8vBk1?tk#$qY`g3{tTeJ2;0kn10_3#>oKx7nFzFWT2G`TXCDP!&p#e zY-wvuQkOL@b|qsyw-HVcv;vff*-<3|8OjcjQ8j|2%IF-7{0)@>3P);@Q#PO$oa&W< zzH&%_`nxIf^m`}_aeSBWw+-t?yoT}s@ml7qMxH4zLJil27#JCE(HulBGzZ&wj4Bcl zyKtdpI9C)q!?SM}y|+Vc|C{famhg06t3FZ_;z>G1(p&ky)<*PO8?aAsrkW0r7UyfH zhVkeffk*FT$g_ztU)cwOaNdM8U0)eH1Din1qRDM4Cl^mDkeBNVf@S{=z0DzJd2A`C z02Md{oGi=Nv<~wyYFoLkNAV-V}nDeIdN+fZy0%uu$e28HZMQxtP zow6J;;gdCr6u*f10Nq0F6RTfdS~~k3%` zGee!?aSz8cV7$d)&vP-Ky{=r#4+RiLnS(5DN{oZ)O{8D9Iw*YF*q{Mz1NG%rg&xHvv{JA*1p+lplOR=%TV+w&ATn32~EsJ?6PnHW5$sG zqm7o3p?M}hWiGgIOPlDdQcveUVMjx2;FFCT-wGNse|_f%CT^3iLsVA-G@E4)94=eA zu&X8U<5t>-82T4W<`C%MFk=61p4m(0z9YNj6eE{e46K$9N#8*2wKSb-pF;aytknad z9VBAVK>p2Wx-lm_a=MTwnwkNfd0dApLm)de3WKB?fWc{+R%DXM*&fn*gANI6iPe`Z*dL||l5MPPb#(&) zl?F-8s4bdM0sc+ebYe4QU?9c#E%cC+&Pr8C%hIK`Eatyb6pCbDU`!atp`ep1tH?{= z(G(J-<1NvyBia??ntv!M-6__wdY6KVr*S+mZ?J|V6U)F>&}l|1`7G@rsd;Cqp( z_xP7lRkTmJZmR0*(!`I_hac7%KlG^QIvweOr+}nV57iNK5EZwjZJd8Z&~?ggohD6k z_A1B2!K3CXHjbkm%peL;PVl++&Rt$5ppnwC(6M=`hFUC82!j`mO()a|cQg2i{OzJY zt!_@wrfAed%Od5v>JR?2cQV^iT3shZim63?MDIk^7SZ|liOulRAD#P^^hY)2iw zQ?cETxO?*-L+9)1OfzL8ACKznUw>9#R5vh&`q{}y49-O2qg>!rjwk?_OIniA1jhA| z+CwR{HZmpm$MHUklfiFp+ECgqjr`@Lm;Y*-h`-0h{6-U*lSs&zb$|9snQ6bMguQ}Pw?Btnki z{y5o57r-f=y+$UQaR~D6XQNSZHw7fVR0rffw3k3Ii$H39c*NG7jq3j7}N5f7H)4)$s9Tso-O~3acQWe*mX6GoF3TSR+)&0o=vgMB|=4W zdMyWfu|>e>#})yjAG(I=7mO!gO>6c1;kWu9wq`S@gHBB;#ikPN{5QqqALg(z_0P%2 zHlOTgu|+9M-OE$(;+wvS4Fa6GXI^lloT+bX-)7ZUMwI1r`U_O z!wsjU+$?~~uITJ31DDHxwE)90ix~ZB5>8{+k+AB&v+Miqzduw}D4GTfC~1WtzU(}h z$Km`x?)4dw^3P7q$bG_wjB<*Wc&GUA)AUlbKaHug=A>H8Y9(meN;X?eYtN&XsLzoD z=v>7##v9WQDbONri`Jdu;6W+WtKkM^+8^YP^fl1ZJ6YLS9sxO=hb z4_-J5t}gfQv2a1zN$K#kjCVb1U*|h^&yD(V`}3kXUP#nO{~twX1*}v!Kk>}Vl(F*{4vdCM!&_vTL_P1s=ZVH7?al(A0m8b@gd;4 zB}-N~-DIVwT7SBw4r$1l<#V(*Fq4#ek^PL)d_nw`Nc6q4>-t|geb3MS{y%^C^D2!^ zTI>UzLY207LE7E;j@6{>oX+1KuO(m%e8@cV~dmZTw|JYk@SI z)KbJj7nbI;!K9%JMU4|eiGe%F&^bk(l~~%$7sA*-WTTW*;Iz(Qgn<-b+(%wX%SC6h zRm7{QY%IQ5hfpMvEMjCZz1f$CYHiOrPE1Q-;3R3oT2Me|a!G8Z)*6RO%2>#hg5UiN z9GcsGa=IlYe9&$A#!bC+N=ylObWKxNbj;}&i|Iu(brtmAqW3`ZFH@npV!taGW8oi0 z&adoL{|;%#Q42^r{vumD86rA;&7HiOR@_)9rUMj;U!Q)4VTF}q*5C)_=K5;Mbei1M zUx?T!sdnKtOFAq2$8Ag69xADf3-AXe?Y)TchF0mI)vAPQN2^O|mKB!EK8X%xhAq4- zS^MD@Gyn-UKiW2xRzxebi#y~7k{0*K3XIuq@O6UW2$bV=ULh*(l@AA2=pcKPrzv+f z#G~G}7a=R$&ig@BBfS)_7X^b7TTblM9TrlsLogVB>y5Cb^2ew-O#XV&|M>4*c-*3) zFK4>1$?X_;K5Bj~lb;((K5KIrn%p`XGou0(QpB5+RIo05cHy&+6fKQ$!G`)r3}%nm zqNty9fCDXQ;;h4aGD@ws=dpU@?{VsgjWphh2r*`P#YzscKLzm23@QEF*6CwB< z2a8yc$=*)gPS4-{*{eIV%c&L$IRu}e4k7s5j@B^?TDeYyAmuuhg>tRPhrr79p5z-TS9T_30KLuytd#3U zfI_dEAqc%zLlAmh3qk0$A665Qpx40=q+Ewux0LIH(91MC=K)+fQu%ciJYWFv0Sq8M z;4Sb0QN#yg2l$}#XUPZGYI^I~0~InbYbYddI>rKe4@&i?&jnZOQt4oZ4_2x_eI6Ll z>itWl@zeUmJbl9WNu9a199RqHybz#tnu{Swr@0)0beeM^NT*q`pfTsQ5QI6ev!oAu zGRy!&OkxAVR8E(M$!t{Epcl*)2(q^9rht(;Xc(BvGnvYt!f=W~dd!^%*!hy0-+=AY zVCF#Tn;K=MyV$r1;0FAwZ81}g+;n`*NKQ@koJEg7l?>I|g35|$H9-oED0lvQ_@FVf z=Mh%pQEO!zDPcTnvqwWb+tDSaHIuzbdBUp#*vf)SZ$N)CIDhzPWx$y1WgnRp`2EQ$I4&ny^@aMLSTmBP=S7n zX4bfyRA$L;5zz7mq|ngCqpcF?GsbFfP{b(6(c0ChPmw{&(aba*8(63{M-mh%=O<{u zhJFci(O&OJJDc>89w%yT>EO?Xh)F#qk{5|A|8MvJ$V%{H#1la!qJG9onde9Z_(x6z zNj)}F1?()^*~8Z@>{gV?y=4?dtJ0(g?KN23Y^zdGPGC|>Ii?v8C$Fn4`t=!)JmJC# z@*IJpc-qn~PO!$X{H(bDKjoK^Usyc9B|n_FP^q>QZ5cc9Gg4)!Ddgf#PWUkY<(-7s zl-|m}jSeA}mQ$PTg><1g7?sDSq9r9AO^0Gjm9sr)c2tV7Go%)CxANse#5EHSzcTSm zsB;o#io~y`NZlWi>rpHJdcmx!m4B@$Q_$kI_wgiIu9$1{LJ-fuCv9qpk!`24%-~&> z*&g!i?tOWRn;Psu6*e%8ZB0Dyn`t>A6P`6c(t>PFQu1uDhuz13k9d_T0-PjwH!QL+ z?|?aAH|8RyUD5v+^}-yEL#fye*I>NPtxPrnU$IvA7(2s3i+Ml~O(V%{i+MM39%7Tr zV4mn5#89UR1gTg%WoMnFk6M93+S8bf2_yZ@*^JN3tmE788REcdop(Zn>cEHe7=FFSh=WaKPZu9Zkf0AFOqJy!#@)qC)phzCkOh)? zbFdtbO=2Y-QA50?@4&ST51~J`*XmDN%Z7;t{b|A=>g7k+!^Z?(J!_7~*9yEHEpk}8 zw6HH-0^h*jT(N;{t=I8F(0X0DK^;yC1IN`^@t@?xI07pR?A^3#&NiwUYJ+2#YBTP& zA*qjac-@$An4&T&IM!c&O*DLBs3K)nP58F(Bvb}EnY5uAq8EbMazJ6wHYIE82WeK` zw)-0=5L6G+DHvl|d;h8&py&6n$W5qO7w}mrZIu%n9PWgPUE9>Pl|ieq@+2|BMksmU zX(YGhH|%RM2|;#h5sKw|QE5ahz7dxXe(&MWZ`LkSZ;C8RJEv=qcA~7&T~x=aE}rVj zOyv7hG3d+tbDjBQRT|iAdThiH583>AhAD03qI*%dt1K_P(Z^E-{$n&NZDNbK5$D-> z)S~4{3ByMo*Mj%r$tMxbG^dpAtxijZZjKl*`qLrFhT|aW0f9VI^P9xKl<5MFa_co> zn#609MN8+ec^}fc%K$%?;({*3u*0JD1O&{!^(4RJ-+J=-GSl5r)^KBN-yv@-XV?~H z3Xn)Ny?~oe)G#&}jQJ7t|G3o}+c)lRUuLQ5)BbR#nCrX!Ib0W&6#j?i~U(PKw~PSOa$;?^`eHhm5~0Fu&{ zE!&$?O!Q8s**Mp*LJjF6a#RtC=)jqT1!w&1&3~G*il{a~NYIWUV%kVxXxxUzh*cUm zv^B2dG$n1sP-mQI7}&_XgLFX#7x{0R9e>a9SE*drBmPI5 zf1Nc}XL94lr#StVW~F@U1(>8d=EZ17UeKzh0cm;5Z`(-C2oRoe7B5 z2-A!$>PY$53?M1jD5;v!)sAyz%h=WWH>hg!di`d2j!w9iN#O;zfY=CTJcj0 z=!|MAjnhbbj71V#IkbgomL1AD9Q{#a=3eCV%hSb1Elwc}+Z==Pyb5T-T;5lj9nec` zsX8gslUQWaw`mPuhyL!vZ&7Ax5p|)MN^!c5%Ei)KD3tMFWD6DpgikKTY?avKbYgnP zDul34j$&sLG(fIo=(udTkGaS^ZdD)47T`cNq1Hoaep*d!2B!ewoIIQrHJ;c}Yc!&5 z&!!G+ey2oQzCn`zezemK-(hr3!Sv9ZAT2e=1eU5n$I`8jWir#cZrU z0iw3AnbETRO&}BL7&iJ(FoyEcZvkY^VZ5TG52+tno(y8PSB^0a7tt_VXB^rq^9rhf zj4YU+KP7a)YcMTl{nxxi&OQ zJZUBN6L}z>_EJzbM%jW|!0OH7FW3NJG}QFgs8aaM^-r@F)?hm|&%8oot66J@< z5x#(DOd~rQ*)CCVIl;M-YBBpY-pDlp6g=kokeoJMz-r7xp81{p z@1$nKEnC(1?tLE1{I_OM1bRDKSP6^nj@EV_le$TX-Ai1fgtLndYwA4DW>RXIKf1Z! zqHc$%TSDcrsomGwPL#35Z1|p3Yovo>s47m89JOC?ON3=4^ui& z%cRPui#p#hO&A+IkB==aWv_lL|67AB29TIfgfug&VOFWs6?}kfDYUYi)^D%>AzR%W zGl0>UJ3m-Vj)ijUpi|gXQYI8b=ot0ajD)ai<^N+Tk9KGaWp}ieXh7&G1yt?w3J*y6 z91j}n0P`eTMGMDv1^_11^BZI$im9I(O8jY0{3%b&84jdkqXxeh`OWhGq10GBUd_G) z8!3BKtcfrFc9?YB_@TGtll>O5RV6B?hrY}fvu`bz`By{a6AwL2yHaGdHb(E4*u>d> zzTt{mjJ>^FS6NlY@GI97Xqw;w63T5!z0OxdfqkLUv66v!61CvzL(2wOrOIP;Zl4{($_MnginXM`I`37q>)T!)gL;^{qx zCClJ#q?*Q0a@e%4g(Q_+%jBq`to;osNB)(~00}XsF@sCs2Lz+^J4K}`2=&rR$nIx3 zLKAhH0M+(AOqnH6s<*6!6!2FqV2Zn(UaGJB*XYLiU&o9?6fZha{G6p!D;Ur#B@43w z_bI0K(jrEeMbqAIWa)%PJ~^mlNJ7fT!GAP~>T*>k`Kv87KAux}zHlTr3uA%$x;Kg1 zGo#|f8Qe;=Y~hO#gX0M$wv!K#Kt~s1N4Z9Z7~ET2U7-1TiVKA=-A3Z{mZf3ujU5!M$P|N~ux54xD0Ae9R-WB! z=7cA|<%G|aa)P(SiqM~8@T8f0f3KBwFnSpgnEUR-T=?~$_vInZzO!qp#kDey5Z^MD z{}0@b2zsn+vDQ$)5(NP)FCuM91trkz%q#U(R~cBFRn3$866qIWIIj8zYdW8Bf87rx zf)M7w$sb6-#8{HhP1AlV+bNjCwnx;+DYECm8TotloIr)(v8f#2D`hoPIpD4q*^W~f zZJ*P`OZp?}Fx)b%08!rNB&GwHU@T30Tjn=L*D%naHY#=QrM@qrU`*{)KH8bg*u5ix zN)d9E$O^NiZ0*Gwlu>Z*oS+ffd)2zhe6ppV>aoc!;)JFgV2YLU*#ut5WLfS=G-#wh zkj(LbE_tu_H@YlK+xfaM?Ib;dMFcHBO{#a#!EAD4Pj=e|ToyLfWc*-WZojNO4wQ&7 zh{+#93!|BMji0%a^YiJQ)~~I1;?!sMZU#y9Ppl8Y&|;P|8Qi$On*mC=F{DgrZ4TTr zgh-c^>eRK(Q|8Uiahne$*euwg0{;ziWrrbF7dhQ_X=Bc&(5!UAj{=#brHYAfng<){ z|6(#>XH)7}akk%ywld4BZT>YN+ile$qWEAqoaV z(SvH+`Il4quNC%!(F&Mu4B)OY&Mn4ZBr4yZX)>|&@N2XbQtaiD!pX+TzO3d~#o-Q) z^{ksfYHbrGD>Vmb@dJmuSxhFWNJ@y4o^=cjpQyluX<}rAU*Lq(USK3|JljB73rDxc zK`7#oz9T6u%B?ThM#a=)ec=p4oz#n9G4 zdSLbzeXzLD-?cY5u|{04bg<-ikwujr5TfxoW$BRBKCk>G|7x^gMtzw zRbX(6O*WwJRax~jIGq~@R%tQ88MatLLq}1ymGUv*uIK~`Xai3h^V<5?zg(cXQ%p9# z%Q=8`*w;7;MjbQoMhaaiJ}7OU?`L`VvEu~H`QbNbT3EZdXc0!U)ezn(cCi?J{Q4O8ROf%uw_&V>oZM zX?ECA)fuXag&9S_%#|q994h_2-UujMIr?{}fp@BnKA}sWhawc?Q4ZuBbAts-@7zg7 zLqAI1EW1rn8g1wEjY?{E20WQ+ATAN=`;aN2+0jg$fcxN1d^j}4g(_64n2vWJTd`4n zsDv*M9O;HuHV$)X_;|zQq0IW&+;MvI-d*LO&r_IG^!}0KnZ;I(~!nWMErhsGM6pAdG8MEeeW3M*dhSJ707>3eu4`9B^d! z+|IqwB-1WYC<$1;qBg&U-pFM=4H~t}-5N!qqnixZl1L&v#APdga z#DF!}RiLP9FNkRB1~~)AkP0aw0SX3i0%{pL6%SELbXGQIV_viyL0U|r$|-oslPQ)- z6%cqw5jDq3x@fkbsk$Vobpx$VDP@9QMQ)7t>eciRSRiFf zcN^+~mrhIeScJ9Aj2bNKkOY#*g~rl{Qq;dmN6XWS)$wa)?JGs)6-^{@`si#5X`K?J zMkphUyFiK!)KEq!@2P=4{||fbA8*-J6?mR|&b{y5_wIYIPE}q~mAp!F?xh$DsKR`d zPf{SAdM7_C0fXHiKJ#IeK(r&$?^Q-B0rWEsrl5mHjT)0;I<43iF>0`5Ta!e{5RgIx z1}C(^K|w{WR!}>pQL4#Q@n_$<-LhE2oT!ez7cv=FBV)BpED;S6t5WRTnM+r6>X@IklkmHz{@^t554!Fw4 zw&U9PeBPOjBz;p>1T&iAElV@KUY2YK8eo?hmIu>3K4&;mv@%&6a>sj>h9fDE-kPl-GUP2Ti0I{B2Fy$65MiFj|YqI2{Fwl|@B^PM%P_Nc+{66FVj|79$ftcL(SijjC_e|GSLq=xenKb68q z_aJ@p*icW*5Ahe3zs0sF-odjRSU8F*I$R}32;bm)B;*ZBl)uh;K$y@~F?g+!JBmfc ze|xe4<9Bude~P^T-m2p>gz3Pj7tcg)Zv|UPP8XLe3U1YT1>ck(hJ8RHw^yxK`O4rz z`c+ruw=~>uN*>uM^u8t;ZrwGEvnt=4ExarvU{xUdgKvvq`?2vQ+VY4WaBl*Xh*hf| zjP0fbf-SISSh6;JR*_R_atnC2#!w70;^;Bu3WIJBM=%Vohskg@5hkZ^GE?WF9h^T$ zYc4E_fFTG@_=i-EUjSdBYZh)O@4(`efaUwD&={uJLN?aQ`?m2L%kf`F_Yu*bzT*?S z$opd&5I-qDz1?vAkgHJeGy$Ows=Wpup6Hmsutu-GrNY68a^=r&tB>zZE7^huj3ZPH zM{MrB!Jg*zFTP{1Yv8^5!FTKhSVC)g1qLw9q!(zqij1N4?;JmiEGjIKQjpaOPt8rsLu>FN^7@WDZhsF_;|)4qj6 z16!xLYrt3Ar@&Cqq9Q5FUOE(*N~FM?6Jcq!P+v1L&Fd|LafX$z58WYBU@4Stv6@S> z993^k5-c}Z*tb=oCt`pEa59I)9ubf$47@ z+Xo-(7K_YLBNbn@9vJA=NoM&vVj1LF@GQd;4+o`~U0|U{KoPo`;!=*8Eho6bV$lor zDeMlLb9-49|9f&jIfO@B$5ZvYndq0}cLd><)m9dTnI&(n%J*`?8a>kktlGRmRO&Xl z59yRMDqc5XP3nKhXxmJy_|eQD$mKva&lVA*nbO;^XWUOZfew`5veM*4&iOK5l?xo5 zJJCoUv}s$48CWVvm6nexS#pipRyC*Z0OJOPHS=1O|JZqSiEIrmO@^{)4uh9u$t0{*)tyNe0ddy^2s-FG`l7NXg03jDu|di7P!Q zc$F!Mj?GSXq|7n+V=+woR>F}oSH5o_&->5jNQsFO>QYAv{xV(l{7g(9#7(C{4$_#F zJ5URT)NDlz+YCJnZqp_YYQS+E+nn!{MH5~Q>SlfyP&6KufP$rf28zH5=0+3H zu_+AV-f;~L-?kYeNSF@Ma?@lw98*^kvzNvdP^2CD4BQyw^b@~JatYuwY$oZk@G(@> zlS9D3b#$516Mq&C7>RE0a46t#pmAr~;op$Lb5YW%{|pE;CYE+U)7XUMdSYLt*5Ogp zlHszMv_7LdBJ!~{6VbNynbdl6UC=tduLRtjxtldO=aTg`5BA4S65fD)@NfV}R)^)6 z1|{e_ux^^uK>l1E6aDaL1ylo|f=z)Tx)`pIj2__^7r?G=JHo4-%Y@~o-odn7KEN5j za)w%u0cJ%!MbCq$COFV$MUOQeryS~PMTKRZ3}@W+a#6Sxv^ix-aUW9&Z*A5hbX}Qq7P)ZnRxR8VD<3ORyyM< ztZu@PS(QtOLaR_ZEU^5s-Lf8`b%&%0AhZ)fq&MlgL%#(K6v?wmf$e3z-<6SjV$*4`t?VT6gIy?q_c@#Z&JpzC@D) zois61K9Hqu#CZ@iNYYHS$8)x0#PVa2l8($Y1*@~x$$7oiR<_>684%DPvYk(L7Rf z*99ZfTy30L2UpV#EWet$m~kKOCJFK)U~A6J(_QxdJRYOHD}Q`O_uWhEfJXp+HA`ga z#v&}PH$`&!?p!B73-uFu`PNCqew{NBqCKci@M6AtSr-30vA@0eh`0wRm}gLD<@-oE zh+P_+pO@meRj~>$&!lWUz!4)Tv~|n^V~W+BJI4w<N@2*AM?H^%|`|0EpPd9AWg%Kvyc=xqW4v^jtZ8nCf0t6CzE zi&X#^1gD5F0}(h+4lcm^0u91;GN2%McEOz2jrrJSpY}8vW_)(x~UnXqz?>O$|WD$Ctm@IQJtc@Qo#6$H2 zn^|F>-yt!@q*Q#@Zyz!Wm4~sU>stzUi2OtcIhd*M%@LnSEHUdNDk^^%hW5`4de4_+ z@8&NB>HT72!8wOpgUl)fhweStSuejA&@Uf9ckG<=St zcw<^S@1pq7=$?7OXWS6Jk!}LwK4i&Na>b#l>*}w&HlhcO$O}2vn+60%fTxbk;E^(b zxqc56DYRITbY_7uA7?QHLHx0Q_do4tD-(+xeI~har|%rc(NeYLT4EY+#5hSLO&=$c zcB@2EK)P|*#X>?qYX^mtv+zQ)a;_N_)&f(o$$A?F@bC8D-N4smttg!`o-_ zLHQ^&W)LHV*<=5#?v$VEj4^7cc^0vI&X4R3(TW{p>esj9z)W*kR9XxOxEDbhk>L<+ zJ)xmozcwXz(x58p&P{Z0HksuZcU;DnH%9{bn~wO?a1(sPz@X9@_-EcfGxZ5W`gA5` z^?QD(Niwp!?uO@@eb0Z5TQw^`yk+q33r-E|5N?qChQ+RokpXU>{8!OQBb=tz157&N z@{{XDEC|O0@&$Q>(lV8FDXdUdoo*BV*k6mqF+7oD=O@mn7ZiQNdg4k4rG}fphUHwz z)8%^kK;@t}{Wv4WGrfCwpT@w{yHU6N5_4_}G=T>sI%?JjfRjPQh2L1e&H)x-(nmFf zaLwd_O&25HgtwHbv>noYdeS-pF&G#`%(n>OPiRPC2-rv#$2f7}%t;&wihwQxYjmiE zTy(C$!J}L?XURwUtR{p{^^>)`VUS7s&(x^pdrlfQrkq%k={U+YUvoLGE zkQ>Kog$6|?*D#%o#f)5Uys8qvVcK7g&pr8sA*VF`qi8UKfPSQbbWHUGAT8^$?LvFh zCeU@(RTk?v)zww16d`p!URSYb94*=nA9ZkOy|sRZjR~DYYw&<+KUy+VV3F@<1im;7NlWjek_h4KpTKa3`w)`p*mrW$e^3WrP!_$k9*#>{7=W z@>DrD?haJKX{b@C#`sRY4sDn;_>5gqjZ(o3ON^sfOteN^HRBNlg2%A48Xki|*8!C= z&?SuUNWlxR#I#4s4ypVi;z;ttA|a36Vij-za)btrnz?S+BRo?%9h&w`wKY{si8q)z z${S?qkT+1|=#gm$6IWde9Cia?L5 z?;=SIEBslGVa3x$lOZzWCJwtu&n-j5N_2#d#z;CJ9nG0pPsUNMo33JTrg$paelzfR z{MSDOfPiiZ(6FZHTc8H3Fb%r%ftn0uH`J3B?As`XIgEqw27ww9dA_L$tJ>(y!+r>D z5o@RzlNuDEO|(ns*uV$M=ZqJdYpYiDW5jCcJ>jH=yAu29=5w^q1vn2f5Ms5+5Tr)r zj1!pDD_JdxsyJ^$tU`4zjYF)K@o@#1dOEd|H-uOLKI5`$sOT|^8e-Ly(kiVwlMpMk zx+?;x2`fVQGNXL}C2=+WM;vX1JRQ+i*iF(Hi$1PGX-_m@T%8ULR3f7ZPO#Y+B5QYa zL0PtN0C&IvQXH5W8bL+!e1$>aIMV6?WjogO^v%g5fJ$`{*@`MchT4d%sV+?iX2J8A ze(D~C5NX>qFpKDAHV5N-42|kQCSOiD2YDBO64W(*3-H|HA{4&ImTf0CCukm za)5oT#9KyUN|4l)l_U&G`(aStP%@rJk8OXt^}wDug&kVIVN*LEL7`y19(HJ=v|8** zjKH4mA&m>&haYU+haWu2eRy)b)?)cfWA7pJ;IJs3>E}x~_uh^O21k62Xa?+W4D=Ts~HyLPm7<=rtIyG|!RPc8Njh}c_< zYiVA^r4$VEw^y@NhAoic6}t~lWa(L^v3-gMPvKo+Z`%C>Dht;g+5>Zu1Zq2seQO+O zFf`;E!~~d*Zh7F+U-{B*vefT1*qr8f=LZ>e*U0Tb7n#m_5El{XoQf?><4?)PPf=d& z&aZFFGcvZ(CD@&~A+XmL^uXQH8Fu&*r)>(gu>%XWXQuKfI@k6wXMi5}F^@iudzeQL zu@(E}`>U!m7!4%fAf{mSWImP$(9&H<=toj0=X&frRF)%G@FFK|^zbVZDK{_$J>2O< z8dD(IHNcf!!=tq6Vj~%rrpd5$G8vX8WZ=-B9WW1n`S0x4wXB0yOno0*9>ht*2++96 zg-Ip{skV+zbOE5kR&h{kuVyI<2jhqY?Zz;1>f}=GS*Tm>1MZ=9_HJOdczr_h{J;CqB~b11K) z4CmcC&zi5!kYw^#Lq{&zorSj1FY=#@yw|w-vgGEA4U;J1DRE(p(>S8r7;@JWj&yUZ zYwpcno0u?fG7rUJ1sF4Wg1flkl6R)ciOxZT;dIY$;s&4Ldi_90K;Pjrbu3(P#Xdrd36D~2oWO|)p`n|8;Iis2F zdsJxH;+PZ8+UK1Al9m%cBqKbVXR++J)aLPV^DK&n9c)ab!=A+|Fj5#5B=Om{SU%uO z7B^TW=U5XoFcxJ*@3L)P_H>1kwG)*G0CLG{)IgqOohX&?86yjT7@^CY#|TJ%Kn`uy zMUC0a(J78cdYe47iFETGID|Th7@!gBZX8ezdJE2XX%u-ZIrX?P7%Sb_rKVeO5bbJq zuo0C8jI4-242q}WEIKHD0_X?=9(L%U8Jn05U9s4Q8?mt%!VQr#i_u^)o*EdIUCEs(9P77PWE+k5t1}OX zxWPAsIh7SLH zHTe11Y55NPgivNaYVNNAI^&9a2Rmbwxu2N-lAfGjVFU?Wg$5j*B`G0=Kii`toHovC zl^vN+o8Hj-G5+$5?$Aa8`q&uQRyqM(_a#}Qf z;dYSU;^6g{^JWG+JJx78VF@#yf1DW_Oddz{#q0@8ac18rgyAe&I0JVEf)QGJj4S&L z?4f92uBH`p!z5`z?84*bn&s?)5k`W5QL_}7Lz4!c$~V>#OCc``Z^MTo)fFG~tp|?i zY^!DlcXo(G!xBA?C5i_eE(fvKqqKs*k%sHjRS^afb8X}LBcKLhaCmQ(-VHoA#0EWK z+^&Ljy{WNLu=)h23nqP4zGDG5a9BW@!y;cFcYvz$!S_GE`!#Gv?z}CWZbzBKyBft9 z&(?VsQbK7V6Us&G_%9r}!sifS3duCvn_WBH>JWw$5$1%1=d193M6{rY3Hihujn$kM zr&~qfVJq`{Gj!M?*N4Y4tmZw+FxU5hwpn?PG1{M4aY{$DQMG!6*|E0ue?o6i03bVW zuHSYjBoz+7f3ye8$-T@g_{;N1iZE|d1e`$pa`FW_wj%Xlu#_`2;(C{pU@pJL1Mvb(faQT)lz~1z@>I4{SfW#Pf+cR8Vu`3#ZVbLG z|D&RQq_-~ImH1QQ!L#e|mPViCQU{tJqXwkSig zcMJ+ni1$=I7-Nr8n7t0E*TD+9LMui;M4Urzu%#0S}EqG})8J~eO z>s@QZufawo%gRpPK2)p?pU3Ypes}SEv>?^vjlG;uo!xvN}!aOv5 zVX<1B&q=x2m4}#);y*Y{EjV{4xgxTQM z#M-c<3(?KZ9Bm|}U(F9uaHohgbE8v48Xe|m^q!@LGeVJ`@*P@f{9P!$P_V{jnIK@X zZ9j}H6)?tY3>REqmYynnp2R-GHvD35yo2=_fNW7%5S z5-`v~=9pO!f+fTP)xnGMNAXU2`R0rA$K&#a`O(fkk0px7_jE4G4}(&R+{g8;&GlVe zbBa+se~|0j~73D&P1%*!9aTAK#% ziw&fJ_f%Xa@QzM_cTaOIc=t8ef=7DxF?bKgbpr20&9&eikCUFZCxkJeJ}2-n2{8-% z{38$f!n_)Dg9#D2DC7za2z!U#OiTOVz~GPaHyRSPH@NL=8wgTni*yk;$}z9+$nBCQX}jdN7VZ0JZe5Co<&3z8rg&Dv4Svxyyoy8oU{y9 zk$ZQ?P1TNd*f`=CBN6XajE>45d%=ZvsoJ_bMeLqeo#O+J7w2a@HB8gN7So8G0)|!3 zV8;>K0J>qMHjx<5T7Ar_3B^&9&#gG4ZEJurX8Y|5kx5bz9~FmAaRw$28R%BR+FH0` zC0-)=`ZOoaCK*%Z^sBEyJ)B*=z}1JAK^9Y${p2<&kMDEDW*Ff!1_Oqs!yhRhhaZtQ zRM}WOi+j07J~=NHJoEnukh0J*UNk~dJj69pvc1|qRR|piG*D=nj<5#jjFR!ee8TpQ z4g_%JM@*r579U$~uKY##%MhWy^9_}8zRFwNAi_D3lQ>O7j#ZGc;ZJn5RKqTx4TpRA zOl(;@i%NHcz6}qz^KjRx50|Uwo%E2l;r|B>uSa26;fQ#?1_sF9oj+8Jo_`@VdHtb+m&_6` zR;@ADV`%)NM841w8sN%j2~;XCTlYJYg1!wZ_1 zO?@1RwKK+n7H3HBSo!^Q&QVwepR5D$m`RKpQO)f^^<3F2yDGf`leAn$(_d&^Z8 zQv&8Rq%npQx3`wltfKW4>uhRlT+B@iI`4X?Z{bDLEjYHOqiWF- zwD2NZz;m8r+67?{OgXGZ*Nlc>YmN@uWlj$U?`R|>kU6~+MuN*v4-b(qS+N6EkcMmgJ>H@ zoXU<+NPdy4^1(`Qcn*Wd^RZ%xmWYu}iz=aa(g&KpiQ0R!pXh0AGfupR{zuq5Eb_wq zp592K`qr9bOz+`|&yMzDA{@_-`fP8t$9;8i*6Go(TtBZK&IGR}HN`7(Eyq zfd~eN;e+vEcm?DID4O8~l;e!p5R7vgK_MgQz2E|7M@O_=+QcNb^RX*mmc37VStx_K zpVu(A*pJ>d&;R~=$bkUY)BSVnT)!cz%YRHjnNuacEfkXQBs5}!Q|?vFKHAEgN+!BJ z8Fjh=H=vq%d+2aPYKj8PqQ^YVs?^?WX&S%=zF?r~=WkDN`#h#4EiA8Zo^xOR0L#wz z>@&TluLx9>BKe*7K&8=-0o=WbxgM4;r3$AGG3bu3l(s{aSUzbOc>ce%?Rd zd`{g73sO*~^=oO+#KM6AZ<^g4p@5JOWWX(+Dn4yDS8zj_ z*u#&BgA(;k;o(o-R5Mqt82aOmi!2<^_2=Esp%-n0?dWD=6dny@7AQg(D{%J#utlx6 zbgB&JDTYOtywWod5Gj22#YbL;yAy=5zpsX2*vcOhsPIGO43P?T1H3M5SHio()Ma_X z8wwI!#Gj4pH!kK>Y%^yP2DG4p*h-1#U37^Mc}xo9Ex&HC^=abJAx0 z+==C`Dt`8)A2QQB8+duT+sWPG!_WL%93x~PvGf7p$?He4`QB#}p=spWz9# z5K#>NNTS1sZy^qt5LF*&FXSoX0$=FxxAyE1e`B|DUf+5SZcMO1>gaP6>*h&)b9qOu z?8ZHF+E1K8WI24ByR7_PmAJ^em8E(fJ+YPT-52I3wsHsLpJx?g$O2UT{keOPa#jG1 zl;)3%O~or#%5NDl;+@z^9lnYE>JJ*jl-Cc&k6w6!L7J8W)Cr-(388)am|%aG;kSQa6%1P=c~K+pc@gD z6rDj~vDy_jDN*-woK~xkh;)h-1(aMYoV3sL(>yOWc~1P6@mVu^nqYSP%^X*@m~GxD zO%hk%sJ-?Zv96b>s4uR%-+@yqHZ{<(t+jC=HRl)!tzVUYII=MNBJFDQy608`^`h;2~lw8swyVmIf@*F0@#}!?pr_Z3%i{O+B86 z8!SDqw(;%B&(2`vaB#}iA~?g?(NisnDz{yMtaae5@yrk+dMap2^2rUK+U%@N;Lh5B zr{8bzBwPHq;|a$fAukhPxaWMfX*^lttdmP@f+xyVXY%bdo_ux|Coi4`Pm0^=@nplN zfJVa`@zgXM1CAKsUk^RCK($HRsAYyq zZf+Qr?wdQ<5dmi~qb0h&{OfIuA=Ee`4JHceuOoPSvw}}=Eco=cf$=`B>_vW2+%NQs zC(i6(=0p5}#XaJPP*hrAc?Iv#mv1R z{pJ;?Oq`0OUjX@-jh3uW+c=Tzl&Wx4rxq#ktS!=U#Lte0*HYTv46@mPO=K?;Yt1+#!0ce? zzRRSUXxt6ciQxRYh%CVa9%4vclAjR#^~&zShNC zp2UcWl&!`+rQ#yS7RP_t(KQ1Z&3#`fq_P3gT8J@7ojDEPG*wyAg!?9)3@JjvSVxQD zQ^1j8(G&oSx6?KiU8WkgiZXx}vGgfYQ8JEl3cf6_2*utF^htzqsFMhkKcH&KU&VXg zuD{Zyv(&>zNK^-m5DuZT5l*HC6cRb3g+Us|EUX_^w!Sp@NSm{BQ$_c9e(EcMs-*Cv1@d>8 zeb`@GA6-D^jAr~)uGa=asAg>ZtD(b%6>EzW)-q$(!WVea`69we+As9w`vohp2$8Fi zRM=2a!$L!-X^;FDC%5N-=hqZTUx&rKyG10_2O-kkfFB`o*rR`JgD}o2*MfgD_;f@Z zb<(>xd6EC)9LFHJ6L6Sk={SbmX~7$-__?luK#*Qtr__YI^Y2E1Wy4OwwCpC7D8R(s z7DXWpnx4K57SC&@Wy^M6vZ)JM-*Yo>7i z++|`h@O~e^yYt)58B^!jIbV)Ex1BRZp9g`PnjSjmpNK#SxjUFf)x;CX(qG)#_M?7k za{0{U@|JDLSK_JQLS~C_P@3~PgS7j%lZTF{w^I~P%Wdh7StfHfGt{LyE_1{v{7{-X zo?sG+1Urvp#><$O*T*>Zu6J1$|9i6Cho5ET7x3W_!}-2kGAqPihBt1(o*WD8E!$4w zjlxCK<~X0kozja#>UIo|mE*5HlcDWEou9J&T=^JNcG`HIDM z_i#bxfE3Alu&4>f1DwLe!SE5Zo&%EhLU#;aUj25~dJGnEyYS#Qf9^Mbt`i;u7(tJL zrBF(dU)wRASwu|MlP{dq@7ZWOt}ZURqaC>KcMw0heRvk?EHp4YQme2RS<7<4eVz}7 zEBJoXaTfTx{cvY>=AEN+jm{Xb1L3SYN9P%w!6eP5#|%}S_weZa>ioN_bJOq9pZux! zTTbhM12eB3%{vxzMX(-_IHTa4%Gdcgu6#^VHioOS2vhfQT>1EH9?!X)bFCSg;>z?) z+pC>)XN8q<#*1n(jO;C9l%A+M>CD5!Az=2?<@suI0&rI8{&3t$x2Zfls_q_+2u|Rp z`|xOZcQtzN==`Q@S@vz{;)?i_M(amQdY?1Qd43P?_s>VF$p_c341g>)M1M$mbkW6M zoHXItVUgunI)He1)}?>{_cz}>M5hg%_Qhxubq`H#ml5iies-px9l*Y&5oU}OP`HIL zyrEt92uPBKNA83?F|>O_;JC$-@3QX`it*b$atFo2YKvm$z79Qc=4}*B!LA#MT4T&A zqUd=n1)i%<5lXR6a2DUp1r+IM9YK1IjLy3bfj<)#KidP1Vcv6*v^i|M^N@y~W4sY{cyU_xI=tU4 z8%JCLJ#xpp@kO|SL$S4GcZ&OpU#Jbnxb|&CX!;f+$6JUzI_Jn8M-U=?X~0mVgqu65 zc62TutpHoIm{Og6hhm=bbfM9 z-#O6+RaM;`&-+}RU;fzA`-4!4p$Ue8u&j-(FXf#KT0#w=A8q%iKiV-~=85MEFowzu z5@%|CTY~cALJ9WmcQ%c~MO>by{idbV4J)PVHh(67z2wp(4_~%p?`5z4+u_`*daTUR z)*h)E3IFN1b`$QJux0seY}w|0E^II7lW+tU$(H5(tA8}33H~nt)rE+$EgNlCxr5>b z>1Vef?;MYat3z-WwyXy1CbsO(DO>3>RO<3`9uTvQb}S1$py>2=EK2~cu`E%D$kXz> zP0aE7!LC4S28(9pr#N$t&XuoEbZ%YxgTYHuD&9LkanCje$2Ju&DPazd^5jXE2XLrU zS=FgL?zTVpRJXHWu=DLMz(l$aCT^4eC`aV~z8fOl2g(ID0CCxn3 zWkx?1^--Q=-mqe_m40>!sV;woVJ`ie8-$k2ADwB_d+bX!u%qNJ=iA&KJWJ;oS~qV# zSgFUv$M{WF-^=W`dH-wsRBhAm@he#&Ur>yZwW#mnS8vIQ%*{nby_@xAes0ANK(MMY zOOb+#142v^0&eW19}-rE0r*>3K=m;$XT0puHC`^-vjzU-ID=FkY?v%|TvXgnVK2)# znlUcf4tuzHO6b~m`<`{u3-i0;A;dLW|#rI|}d0BQ}s>AHg z_fTe>(0pdpD}S>Kr$o-W3gE;@^kEjjSJ(OTbhehd!9=|$(V{D}QfXjE=J^9xx?Yuplh~mY~slOrSo43Ug5#b1uO*TvUTC7^ORWQI4ot5dN3QE=s`-I zVa6g54UCIZ%rfUDXbi?FyuoKGc5z2EtkX}w;Fvg1#F}q@6gQBy;Pb5SYCp8f6Hq8m zRd(%I^DTpOuwhu{G}C^M(hok0PpmAGC;2^C^ZVwzmW}-$));?Jd|7ngFLZuy#`(ph z>BRXiqaKfBJU`w!DgQ`l#9ZN?L3czN9(qwp(j7)_Cu7V?zujL(oR-sygZ z^;v#am4^iU)>$%qYNP3PtR8v=yktZOn-j{N7Ho$av)Vm4)(=|wE7 zR>RXFGrjsK-eLWbPZY=wzlS+tSxf5C-Wn@qz4~^3@zmCzrQ9}tpXB`+{654laaQ%c zM3J1y?{VtGnh06k&hH6CbO*nP=-K&dv5J`AOJu!ydY@!Bmsz#;rIaGGzHU_&lmS!- za>Hmo5{mS~6bd0gE<$?eq?FnSVIcgF8*m_@^F$@8ZWzVfBXjC0)`)b`!sWBU9+;{s zB$m%NJf00k@+H~`9XV5fWZqn=jWZP3;s~VZym9&>ONX1t5~(7?KsS*@)oBZ;y@`GL zu`^4KwjXnyo>#KD_^|1UBI>~2|7K~9vYsTUdz8hg#V;oTuW`8qN2lKZ04W!^y zIlZKV$hs^8tLqkv?@R%Wu?2vXUD8<2Xv4hfS z-R3ymwgIQwCZQB&Lbo*-ZSlEPX4v8%jt~TWr^O_eLQ@M?LW-$}!4e+*Tot3QTb4?% zkw~7|x5HgW{|vi71m2-Rd6Z$5NAFer4iy{Zl6!{=!|LHE^I5a{6$HAqxr9K6n@e=p z(@1zqcTqfvnZzOs3mTYGlz<4u?NKs_)?Q*=9ci9IGzzl8Q|oFr5smvGT13>%#@QL~ zAp)zB3gZmXY;+JpkUoM$g3)<}Lj62M*4Y0KmzQoU?KXPF5l_9MO~7U76$g;f89vx1 zpA$$bPD9b1QNfpNxMFRy%Y_>M!3^ZIqm>6idgfJA0iR?=4T(^YrblK%P_P5rK}MLy zy;3u32zFFx8@r^A91lCut?_ty$`GSvPo`nJJug4cr|~BCg1t3VTLvj+>UZqZ35kkC zs$#+shC&+6@CP)Hv?`suj64QCp3za5CcTErm>D#u22IsyOVesW8`=*ebGbzq9peyD zT3JtYLP}%cit+z!;oZR>ink(kbT(Z=rMsF-sC0XC2~}?8QYszeS1R2buYyYLB~-ev zc?y*%xViXzD9Qwt9wgSdHCN>PV7CM@qc|Lo2naHwv@FnP_y;?|4tG}(whaWG`dT6e zDksc2)@?8X^TbGXlZvGLM&qiGh-p9`;&xKYHX$haLoKd#GJ|X~pO3#szfFJdC^i{$ zgP~$VC|6kry+EYncr|RaABArxy>if->XqZyNxjmH3-us8)1NxSp8C}3=}Ay*_tUcy z6z~;{rDcGtP6ro*v`WRr%2bOM)tMAVkurN|!@3&<{Qn#G%tmUSK)vc+9-7Ccqzp~i zXpDv#$N4cMfv}2X6Yvreg#ilo=BoK`Bv?4=Q-)L%m?&&#Nwp>2fJ$r`v)YWS#-Gbc z)1S*qV_-rQPhzJz)cO1{I~_~7&qwZ>@Bl;RG>a^SAtPNI?rJ&0FJ-0)3ozfB=8*Vu z12aun0{c9%#7trdF)a=lLuP^}0&l@I`cpo!Z#WN1odAEr1Wz-=kXf<{a3CM%*t{Dk zQNBz|3qpn;GsTms0>(3?R=F|do7Kg&I!lJ%}-Sjavqb94G-H>_XZa?-?K3Ql}Q=>?n9cT z!cbp9u&NP^{Zfg@)7pJw=xnnKCF47$({o8c-XlIhxa+jpl4) zM`~`K%jGfDZ1!=`U}KH|C(x-GyQzhGW(sPnA^T_Bc^oIb=y_<1alcz@R)-RB_NW<# zB~=j&`p?G<3QxS$6xCJdMMeJ^7}Z!0uZ6h#f%nEsZkuJX6Z_v_XW}K^8EGBYgP$o1 z^9*$i^@dNn@O`-WfFHaQ;@+n$TxYHRAxd%`g5!_skthhJFbKB5YmKSM9b6hwBWO8N zQ4E>z@tt94oMBIJk#19;#P%7y+UCXQ$B?wF-GKV1`|s8?57&2x9Tup`fOYu;|B_;z z^1C?SEHha^9)|;LlC1vHEPM2lD!YF)|L##*xO*LoH>S)V`_zfT)2Z4Sqo=+2h>pDF zQGS0l|8AHgKY0IKNQ<})sj5Fq$c~{h=}cE6qtQa;ug}0J z4tIZsJFiAnflX*3pI;HHU5ZXPN&`v#@@FN1dZp?N{*SUVP#9OC$gWI+keC8I#Zgi7 z{16g3SHX(Y9;jRbF=b2?n@Vci3>lMLPAk6CZokXHVAN6(X< z7siE1A+GlP%yu15(@)*m99H9pD|K*l@b=j2G^3w`1#^19o;p#(Bw@;%)URKjgxN4p zd|XNh=B#o(D@fe{NvVBF5^T6n-xM9ifEYmvg$6rEN6*ZZqsRKl1U5^322!DfNRxsm zk$cc>{R8U{&BHL!Sm4r#`fR%O@X!MV0uQ&)&rEr4gbL`zq6@kW^zetZ3pkocgf`Gq zZU~@FCR`l-sjZ-m-vezHy$@()D=~6Ln>h=QH7`tRlI>zylk9_5VB=5BOH?j zXYEi+4Upz}liKw+!D|jr3#s<;P|>iMLo+?FJ-kZd#SmNUUepU@U<}oS$wYnm8!WW> zQWGL{U?X{o;-AFXOO7!qpGWB9**YBs<@_!cN&=jCAH@4z5@#N%r_ifDVx~*G=`Hj` z`eQkbPmxMz$!c7h&?(z0W)4;klK(xuEj2@$0O*$I@Y*NkU zHN=Dr6s4o6;#=F*oQV(mHP*>kV%csf2*LBhfyAcCST7w-xGre|V))|e;?AtuVRH6KQB!vhg!0KtO|8F(F_Wk?m42D5`oly8+AqYlS?xA2NH zG~FzdA^C^yt6rhqfXn%W{IP8_JrhzxQwc5xw@r>205Z<0>Lk5&BRr|5(4tY3JTOJZ zf54~EZ%$ium;nJwXcIapxX?3t)#@{dDlALYy!2cGj36q#YO�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∋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
l?BU zG6ckfCDK1JR_{?z#1bLn5!%EuL6lZ8jt6DdQ2@%zD!fwn_*xE$^)(v4I*bjJ!}bG_jgJ!nA5O z7mC$<7xgx*UdcVH8y1UxJ(b^3RCvLVjx?0EKi+q59t@in+A=6gpA8Fp932V<1;WKE z0%E~JVWSrBiOc3W5M&Z`c;dVxNHYO97NVfJvEh$Ob>`Q=B!Wlpsttfq` zq@cx(nHo#J1FofApO4a?XxC@7&kW=v9VU_`exN&a21!LW9Vwxl$WSVIk4Zukw2Uq8 zz7ZxWNJ=qM#MyN;!aL4_-^`o0VRjA0&a;QzaZW@ZjmpJYa2}v)Gh!Bcm-k5LKnN?Y zuVBd2uWhih9)ZmnMM&R2A`8F>)yenv58V%P<=|OYt&R}v6aEaJ*fxKLDfEax!$#Wf z&+u(M?$1cM`cZ$j?B?Xh{n^T!laE0xKjJ-XSsg$xaUYZ%Fvf*2aLl*LRu-NLQ)$1_ znlkp)j}ra@3P?WT!6$RD;kt521b;qK7x`>BNM>{5eGtT;W<`8hJ{l;)N_%Za0vOPl zmj!?cZqg7Ta51;9rN^Og*SDrJaf^5Sary|W*a${+Bb4QT<+!#Yq)Ob43Z&9MPE2a- z_^(|=H9Ob`GftWf(2|7$M!DX?3<;YS@^d5oIrb~0iX>$|QFSHVx8T|7QzFLhkVTsB ztxoQwN4CwKBzFZ*kL~@FNgmuGpTl2YxbU?Luszt8Egm8zn_a(e-t{KxW?1i}RUF1S zSgkiFH;Ma?(1(CahDG4dc>3!OY-D73+VD>asgR2jsJRvq+HO8gdaYDLx5?mIO>|Aw z)+i9yjUeQG7QibT+Yh5l%z5H?@>vp}X4n*#_%ROb&@NoZ?;|21W>GXih@yrRO=CL;2lL!FDMvq7B$)LDT!SBYV) z6Dk@p`SA~WS;cXsgfu@k>Bd}@1UtP6bfNud8H&Z=c_dM-atMc&`6A7kGb_n-gU$wY zwn}FWovqdxA7tMuoe}y<@SV=+AaR8{BXb9#L`tn_^_NAhN-JtrT2ZTV!#z~E=pMN{ ztvdUxRcD{I>Q-B(Mo+)S>MUHyFh{$?t0x@-T@SI#aF!Zl#pyZJ6}2&}W5CB%;I{2W z*Aq(3LKc8UN(NlDjKKI=sHE>v5(lvmf$bY2+oRsYkrfGAl^|>37Kds;oo)9yzF3=e z@aeB^K`)|x)x&O4$M&P!Y=TpsOUUOUhrL*E?cx>#%lU5kI*r5YaBij}VrEhs@npB?-6)#?2pW;9+pL^BOzEf(2srZrFzSH} zyfB9AXYb|>@5Fhxkb)o3%H}TX3jghM8@b~&R$-Pk&=D)8*jktBkJ#^Pjr=yfm2Gl& z>xD&N6Z29PYL5anZc>XxhuMcTo|00xxetjbp$t>~rJEjSqj8qYnCt;;ufbX|wMhr} zh(-?<2S-Bw;ol-PnSQp})h#}R7Y>MKYVRE7o&Vfe;Ruo+jXqXX2~>Pi8urmfKB?oe zM!xm=d|SEZt#^Fe&St)%sK^OyD*?x`^QAB!Y&11h3?38*TBo|R&yQziFC;GI*g9Jo zr*oDKPQIjV0-@RJHhs?g6+HGKW^~$c@!64Ny_Qh<$IbjUL4}{HQ^y3HioE{XlFm*v z;qGhvr43~dzPS;%XB7i&l05>R&9^ztR^Q_XL-E_-D14A>;T~2=&aiI(k_WAJ(KfMvRXEFiSiC|JZvMFgvd5&bJ=t zbf50ikCIv~wcIVMs?^xBthQv2k%ePWm*W?CFOKm>us7k@z{V(5S;I2VTzK?#Pd8Sd}DcGWp`x+U|l z^JTt!ujM|qYuBz_`>|eot+m$%NolYuzQ%+f%_b>mx2UbA7b52IkGGgbx!uZ6XMwu_ zND5Rm)6!Ywv9@($B9_acyyA2Tu;F$^7~0t*C>M4k9=NSlhJ^(wBcFv3h%hs%QxXb% zx`{6}TQsLRnh7bRZY}gbQvAVzHIevP00K=#epBv7+#K-=MSk90>ugS!oh_IVE^NWd zcNXBF5uBk~ig4jVQ!J;H2-Wgte2I8AMS=0CNy}Zt3TwU*SQ)i1zaO{o3I7r^S8HWw zIwR$sSSrO)13FLN2n#}&RkQoQ>?8jwxP}^ZRwL)zZGr(Usg+L>sRj|n0fam+G!ki; zhwzFf*Sd0uqbkl%CHfM35DYYABrBMj=li}VkwIuB^_H%n7375|Oa>yabm}lv08*%d zsDRB?bUqYy2_)v3R*|Rs+n7+Ud)t_IuG>2klWVqh!sS+p1|g1AC=>F0J_>LY$5+LE zj7pZc5W1`yOlfWWN~O)8#Ij(K3JDEk;9K{m&{mCvV(vM#STdF@(fGz!I}H~Nw7O5j zIR)gl3NnC7MPjuYfsDuNkis!KNOD~gFVO>w#9N0D{GOk#d*X_zvt`xz^twmmONig< z$Lq$Qkmi&_VoHTe5Gg?nq%`jb*swW7K)mHFA$d!q9G{h|Y!S-P5!jYxDV&9gpbj|d zxqs3A*yMwh`pv0nF*G^CTnkL4lycgb2S9)8RV|6s5zD zVwt&7KrTnT5g`^BY56~S`zHBU*nmS0uQ|Mz*mv$ksW%xXCt1(0+M zR3M+aA^Ddsv=*9?l{I$fHRhwrFec|_+7niFk6*}Q`!cad-hixTeW)p@SJ6E)?PJjP zC?dM@GpZjCJw(pB>6t^m9lnsk;bq0qt2Rwa~FSw=FY8C6A&>xh`khuGwN!hWF{ zRG$$KQ^kj6MzugTuHJ2wAKx*%n&WYZnCW_>_ZMf-*-TQVTB~|IMJ;E@r0+0ILerJ3 zwV4iyLMPbUI$d~U@0pVsoSy+}(IMmm)6|t#2@Bj_5w2cS5!ML~!Oh6rZ3=)1o1th_9Tr)S z(=6Pe<`o+~%tN02j3R%01FUwtI5;a%j-~ld2szpZ+SIWOT7GmD zO@a(*sRheX;G9xRg9hKUeIR+vWaFFpK;S)$YcRyA8Qr-X z>1%e((9hoAV1^Q&U_5!ww{Zg_s1W0(Z@@Tm37J4n6T&5u02Xjw-Nt^)v<~prvn_ukM^1w7TI^jpePvHWe;#Nv z0;OPLG_8n0RIx#Y^^tcFU0E!FP=0o#Nm&fwdbZiBqe+B|tFfQfFuIw;)#~U*ZY?b)UF<-o%J*)DWOb6pZ+%;fNgV*1!kg5x^IDtFff^*B6Ma%;!qrhN5C($XQW;0?d z>Vttb3z90J!`fY(y`IewVut9$1f{8GPm^Z51vTh6S>d8bE|;S>#&t5VY zB)x>2X}vN-1Y^<%^9R`4=^ufEIdb)7cn~u8rZ=B=UJ+=D&wh z(Zi1B!~OZgy}It#L;18@YcKVtZj8@2U{*#Wv{Smt1$Vj;SA9XlAz~)+@;1V7F%u|p zeF6q|^H+_YQdrKaFfP=PAX94o)^ay_Oc9Edjlm9)DC85}6ci{~{GsT6zO#7CV`+tm zR>h|-E`4d+8NYP+U5ivVUdu(LhC&3j`pHwjf7rYKbpko}m5GT!-x=O=na9A=AGeJa z6BGMBZv+<0eS2EaqRzEj2d#5zv+LExAO$Ty(R;rQ&qb2-F7+;?i#s1c!lJM0J8L{$ zuCR;u>X?Ntjcivf?6C1f54PW^ufMJ_64RcVI7kzjUN_`xOXF~;XjR2pX05XN!fdmP zIfeAgHxzEQQRjrOI)|tesBm?b$9Bh=>!fL`>C@ib)+gLW=2XpyzWMScR1HkM*&w7` z^_G0v=C;-#AKe)ti6a##YYrl3>cmJk*%V+nyI;8*>lhU zufJ5i9V}2MAQuB~v@6-f7Zysc5-e23{;STv#Jvxtgqlj!g+$7@gLyJL1u>28 zgf9@t5YnU1C{W!JZfx3(dthHAzRCMKqmS0GGlGJeJlF_<;V&cZFFM_Nwi{(i8`nv$ zV86AH1!u)plc+4kx6Rq~Z1KBfEzXi0utspNd5VR;f(sh43#ecx6)fX=xI>ZG>)CVM zUzByCMRp$<;i`|E!*ws$m3*uNSCu@>s}PZ)>wxhX-G7HBszbXdWhY^OEtfRr5i3gR zG7{rx@bt{9T5(k0 zq7GvB2Hs{v0o~3CAQQj_m?ng5y>ZsF9nEK8aO-=M&1XAjKil1WwrlpYz0GHPWW@dyOTu%dLZ1bs0>SR4CGZhM7^-?|2T~3TH9;@S_ z?}tFV(+C)?M@eyZ^xYwr)BquI%r-#87}t9C41*qhfqQ` zYNyMXueM``jF~f&w2Qn;v5oPHOC{yoWXQh_YXMsg+0PPyq+Flz?d&Z{NSp^E57bV& zF2x|q7p%F+mI)5NRvUVU8cB#6@hW-JRXjmMK?F*B!bZko&QLmIH<7<(^dOoitIo}! zJBW#1ZpX$d9SzAH=6Pz#og^DWZ9}q1!?Or6)D4iLV&-BKBr@DqWAIJfC4L?qb)vDc zI0*?U^1TVm7FV4pDgX`px1AW_5m((K=yRO`n7wX^uaW^d@g3bW+6Te~qr8YZL%{<=3zh>! zn=?yV)r_z>CpTT(%}FfyRq}`dD+~=OzT@NC;;yA?CGlh8B6#9aUGli{X&bv)WYDfF zcFNW_8qB-esXOV97po5rhUpSc=SZTE;pmHQT|rHifC4B5Z-gmvJ#u5(4Xo1UZbjK7 zj!9LMVA46SbFD;Q0gW^~uskne%R`ka`st&qRMgZoTDEnOUTBMw>2P^hIm+OKgjcFoOR-GuON(XKtZapmpUD~V&fn|XG; z0UPybi3`Y%@>0yGs-K#E8a!X3_3o9tjvQ*I8?atdMZS*2s=04~adx}``VBUT(7MfU zM8EP2EJ*+8MEkE(q$zu4AqOl|9rGH2g86EmzBsLVDPnR z1&>Pec_ed){&Kn49eEG(%MnG}@C92$rW4xu*~MdmZ$BHRRT;#sGDs`E%i&h5( zH#6am&ls{!-4GEfjVzN7)-xi%eipc9ATc5q;l<~;i)89hOv*710~nUKlA*GSsq7Up z;~6NXcqBa)?_!)9!L0r4AK#|vTy%05A)~SfEEX5S0jGV?qB)RR0Hj9obk8|gY;+uw z^TN%fV_;Z?cAD=mBo9IZMFmIbXC>Rr`5S)pe_X;RfHt9t$>7^I363jt| zt%6ITgH{4tbYo4;QDU<)W}(DHGj9$`RA!@uX+#9U4U{d4QM%YCs!^xfViECNOfYr(qIt^1FSLp z$yZ)eH@ND`Puzzb7CM|OW1*udntSM6tPbt`le4o^Us#Aa?@t3tMqj8#cc1Aw_(l_W z^Li*G6yOZir1Z^-4bSVbQ%P#s*sYCW{-mk2hzNhwv2Q`Oa^$G6by+DRPnwp$EyJ3nFRm;D~O~ z(>DD$a3m4xsWqq?^PT4~Nld_B3_a-aR0VGHGoXD{7*C~uOat%X9pF8`4ZPR^@k2v=P>{Ktf}dy8o^xB1J{6L(1qU(_)tt0Yicj#{_(Wd!3L-3>f~c$rHtXu- zc^MGp@>Fis4@Ee6Y1-enmUrCEA>C}&Dpn#0a^99;Q>95EoFZXb?bu87ZMiS_kPliV zsZcWCVd5?6OQX)SKjaihP>Vo7XQGJmXQ!Q9YOT$kMLcP)QDtkcco0pu))Gj%X{2JD z!PC_n&|N@_pXrbcmzjH7Ejx-Iomw8arkr5}C6O?9GGCu6y-tM1pZWC$p|CXuUX=*G zYVJ-%)9gab!Eze7FsT{gwGbbET)Wh}SPKI*k4O+kYtpJz3@-YR)kKS*rh~}q{AN#6 z(B^ekM}7!>Ix9}1&!IvofO)3^C>k-?F~SOKgfwFIjuD|3mh*TqsLBG<$w}}8d2bZe-Kh&>zc^B zldu8M_0!=>HTqGV9!L@4SQS)O3Bo;_x;>|l=28*89kRhafcWDCd z6vuhCNXTdwoP_LV$B?)z>$bEwro}&cPA!hr;%1d|CFn-I==xbHW*?Z5Bpm&;*9yVg zO~G8zyQMiE682ZVOLI(+szsCCqN-1Uf(|lJuM&poT)u0(#Fxce>j@~BV|Y3g$&?Lv zFuh#-6yE|Cu<5@6{A%VfZ{pN$=0;-GWPaU|Uy0L^kDBC{ZXkEQm`t|w<7b;HVVQ); zTD**RnLTIs*sVDMjZB}wV`(0;z3;-;0o?-#uqN13i_!S4@$lt!FM?5=&SpRny#-63 z9Ty{j5K0(Mg%TzS%NSK;~|Aq8pRpEC6RvrE4LK+XhKI1_^HUd+@s% z3yw*qud=UL>ytEeHHu7dULEi z?u|#c!Tv8a+xxJb0qBlDmhZQ{m65xUcMKDu)*Rx9u*^^*`iSMH-BLgCpvxYR-ThiQ zt&&q~DN5wLqG;4wRQmfvtB6%h1G~dfK6ooGS)=Q2vg^dFZZ@rizHKrUG;cLT4aPOj z!XP>v*c#08eDoxx2iOC;VUAa+F%`)fc8WOM#~R+&X!tMjgogjpubipjzmykkH2jyW zkG3zl8%%cXH+j#-j`5OzJQPfFA&UeCLrN!0;n=SY)Z~E!c-jcIZJ(^x{)^*(b2owF z-NLgXBjKuwbH z&bCnrMq%?B1=i=9bf;pgy12N;;#gSM;BmRem9_df&|cH7XO16C7wZ5*3HwGvwelhi z3|Wg+*@f|iT%;)J!Fk3O@3z)4i&O1ao!G$uhtXGnPF59A4L^E+kX2D3OY>%>OUfyY zla_tkLNnHhibp@37u~FBW6GFY8>_~dzIIF<*g-kBAPmd8k)>s)qdA)s zD41)OtB=zj(V?N`gcEeyvt?SSbmLOz$1g|yidvKx&}_-V!^wcON$@67Vi-rMD%PbY z<8)kA&+rMVP#uC~w(RQecIhocYSlt^ECnQ>=Q?~~aolF43I{~KO5e03vrMQ~VrQ~c z41!9D=EhRlvtyU*B zYVkAxuwy^bS4_L4d6JS^l!slnW7t7GG@p9aDA*^0=VTiD@)wU@o6=H z$SclV^vxl~+-5cs_f!_D=ts=q0A>aE6Yl55y?;x2QPNTSGQ zdTA^xSvswv1JS1glS%0@V`x+bUZ7r@oRZJIk(hRnft56_1Y(J{!ArwkaoKKlg8hi6 z$9erO)N*#+3A=;iWeq6m^wPh@uY6Ruafjb-Ey9!{RI_Pu^g0% zVp}sV@~Ke)sUWzu=q9INFE^O;@h~b0STQi^jrOEp^MNf#?AbC&gDLK8F-nt zrHSFedbieKx40^ZzJ&FHW@^-2DYEVCIzi2P#>Cx!30-WboWVNJb528KPw{z4z=Yu< z%BGo=z35v*v|}oO3HUI9yc8>XSr{5;z)_7}ce`g$TALTidy6oePXx+&jLL`pBlvcy z_eo`V#Q|!6>h6}fXZx+NSk`3aeshm_+~wF2Z1>A;!gBYKo9zk4=!G2J60t1=ZBtP$ z2u`aZc9Q#ok{KSFjs=z<=Qd9jyYea)zfcv6XICNin^)19O@iJjRZY68NbSs14AOQV z*9T}kau^-Z0%My3;jn%=kIQ9R0xi+q*%X?>`CypqVS)>s%XL?EEIFU+Zj>!V@69H; zuHd?jqd?hQy^Q2hzRmaxeQ}zoW;499Qu$RYaxuw6!B~=TJw>fA=X#ubgs_Z26f7sI z*%4}8%at<;lUJCi-j!kI1Dyog@Gz3rfvtH5HU~h1OpE)NjV@^^5LOs#N!mHQWbl4j z5DVR18>@@v>Q#C|;K3Z%`Q40x?xeR-7NfRoFHuA22DEen6S9CTff(xuW*zBgM=^uW z0MijxUI%*e4+4psDJbp87P${{JtC=@>rrhNt!5`VYFmfynRg&xBYbhF4OmK|TdPDn zs?qi^?c+n>oRL|SA|NLOH?Eu#N3cO47@*A}p7abEdms#HDbpYA>5u+%KRN+;!dhsK zM=)FTL4g0vGv`pJ6_|9)}w;9t0`i4zUn z`jX{5hI*^d;m;S9QOg#)yTiJJ4QN*z9uS!79erAP`Aiu7sKV*9G?hPu4>nbb6yTGT zA9naUwtD90=uJ!!%WN3dNf+Z3KDb#4N(Z~k{9KUN{ndeYzXJcfan1sikJ)e_DBjI(jOQ9!u$irePFTwhrQJj0plrs5Y%nM-df} z)_Td;eC|Lye`m&NWtl2x2oM%a1FnuR)kgK0&M*0L3bGE{qRZJB_+_F{=h({v3N%lO z>u&luaQjm4pj(OoBNl{r}zI}zR7R#42>K{0=X1i*KUVrp!9(Ct`x zM}ahcTfT;`%`|&@Fj1Q;AuLLXLqRt6e}>TyN|btzg*DphKXHY}e-oQ8$UbZ-Z}h#R z1h~Z}CA)ZBB zE=qZYqCgaMbcz`)+FX8 z>IzuT(h7yy#5#>5de52>I^pE%eG=VQ?t3_0|8TtC!pKgnyJ_%1a<}Sa)M{?T{OlyM z00FR&$`i?4GNF87Al zcnW&2iP|u>k0!2H3|qLOx-apyL)%+j{LVkCV@_i4A=@8W4XKV`z3n|q znC0I+TXbLo=Ps>c9Ahs9*sn!@u?i|EfkL-~Ujj`KTiQjAw}skJ;Og`uR)^VT(HrSPgsdq6 z#PEpP_k2d&JDau(_f*mqdm_OI8g!ELmNf$*E$o$iSOl46E1LF_pG8yW=Ck=c&L7}c z-*`nq$9MaQFaQ5N4Kz9hGV6PsDu;|C=n>>`Foq4~iKW!U@`}#FqV(7mj(*=9p^(HByUEJHacDn%MCCtF=)jh1*LZqC z95aZv4+&eCxI7OM={gY#-s1!?UykTTCd-Qn0)$NF z^yp+>@Ht@}8|t8qRRsn4$$KXzrk}iz;3QU%O%M5%b97iafv(TKXU8s9Vm9>gvjJ-K)!W|J?27WXVO@Kpl7k7GumV z=#vOuCpiy2RNO%ZKpEGF3d*+^!G%)T0>F-Pk9dx{NA3EYp#1RV$$EHLJa7Do^zQiX zM**Vwd2;fRPl}Bd57<-QeDENkc?-d1YQ@twBG9=Sc3LJWEE?{hjB#(ymim09@Ul6mX1K?vBSDbG}M*mZYB@P4eP#J^W{O# z*az@dWD+c(HGb;GR3O9(1`^@h!h6dd`Im-(abR&9{e8V2eZ7mqXpqM^BH68HbQFq{ z2e9bYCFi1y_k-E&SF1QemglS$DFPStAoj%L3Q;2Z z10Qx-=u|pRqf;S-Se$iaoBx6V0k_eiIFEaJqJ=VW>lVj$E`yX|Db>$F%go2?BLQ0h zLm2W!kSfPaM7bwNpr6bJMsc)8wK3&E%ChN3QaSl@G~6r68>{|upIdt zLLq4Kq^Zzin+8kn?Qq?2{)sxM3p%5QcgLh?Q%U-TnX@flaAZ>mGT79y7+Mj$j^iap z7+nVYV)Ha5$z-K%4Y$;aEvv+oOOwa!*t@5QW~g_EozIx1mz&F&@<+UD@TL$kX*OPy zNb}iG-@}wD8l4*MDcTmPRs)XUdJ{` zsTX}wnozZ2I6Ay4`cLx+g%CY#MldS};I-%z5$WZDh?tK)aaBp?XZ3{k?kUC(y4RN- zQ!0lQJRj^eh8BPnP#yA-jkr$pMA}mTB-V7i6$JKyi!rYOh z(nLx^`n;}4&QbxW>@-)=a;@*R|At>sgjpj(RnZ|v5@_sF zEr)qXB`x4RSvX`Pj+aJ%xsbqbjO*1-T@+W(1KEK<^@j8j(x!W@u3#0iHaMB*pCX^r z*R0Iukd+DTQTY?(KbPlkC4Y;H}A0X9&XvfM=x_ z$KcUIt&5_gFPDxp)IlQ!3}_?K#mUQ{5uVVSI$2*MAL0^)Z2^x}kq-wP%kdfHDQ7ts z3qK%cZA$lNm?Wk|Xh(Y)SqQY3NY}~x`Kf+ zUC7ER(?xvSyVKjY684L5)>jRhmZrc)j2cZ`)R4H3$v{~`Nx)t(nWN4>X;JLPV+U#xJJyITuGWRA+LcXuHc(9OKmVeWLl+j1xK z+#~o%urxtJk~nT!toZ!+Tx9oNLXQHbh+t$hLM61e$P|KGAvT8e8TeGp6;9Su4mpZZ zJzfUfw`6vZxngdn9}mvXq_Ml&Q@nQRL^~VOl-SV@_vgB;JzYAkD59h%+tYZQmq~7K zPhVznM76)VdS1A@-E3nobHYTt6pAHEiGg~XuJDjuy0R{q)Rn*qJ9Uk*Ljj4HQQ^8K z;NpuRsLK0XCQ6cYH3-PRB2ySSVha(a25H1(ix^8Ud|KEH6-T4su+WwL4kZ5_R!2a z&6E7SoAeNA;3wPFXui3nsi%{TEOSd^Ndu>K+x6JjCbtlCMzdYywp|aq3a^+?8GbNE z;-Jv-DRUc9Xw1Q&;Zugw^H_$l$TsGM=1wLpph!CVHH@E&xFg0B3cF;FXHjSF=FOS1 zdx-{oU_ULF(XZtd8eYt0$rhuzlkO7uYV>s0+&NG*)Vkz9XjMAb9K=={x1GinGlmy)W5%{N8r_&NycgZLqi1Daf0h}Oo8rIL zjL|tk`orkRv~$=tY)kTfxRATC%2Ec}qTpQOp&Ib*hA!Le04J29zh#jsu#HN_358O9 zOa-^?K|@(kUMkzh$rmu|K}64H&0$nRp{bkLCFDILRvMm{rcrOY`I}&bHGe`WIe!Y{ z#Fpjt>G0I%55539F0yR?kkd;TH%}PXqo0lj?p2-7y}UT>AasbXHe-NsZrh)Lsflqd zTVWl>F-};_8hbT5uFUl-DavTutMLLORm;mJJ-XEC-QV$sqM#ZOLRUO(mdF> z*yd&>CB&`t>XKTd%38ohVx76PYAZ)a_M{njZ7YX%L2(?zz>6dkKShNkp+j&bYgb41 z4JngMlVl!BVh0dyEfn|Gpg1;xv*RV?D{)aW7P&U7jd%%;MMNzzGdiC2yr-!ur6sthl8^5A2Ut#U+_&D zN2ZQcaZ$lP4AuLoEA}r5PmJi5Y!~wA6aDo+34`!H|Lu}Mp4S%O`y@fyQ*Ew}i5_%f zB(2~OH0>(@RA$Z(egZc`*56sJCzvE;*^2L1$Rhdy1<}JA4>8NgXV;z+jj6RjWmbV` z*7IQ2b3!k*RuHumAbwQq`o-s{mWQn~+nEN5JU*XzK$%O@(Y*TFTHPt;zIb&6~BddzrSc@J`W`Gj6% zxdF8CW~U{1l`$cQcR>LXyxa{%AbFzKeRe_>af&++sfpz`2~~xdOGnc)C`>8 zzTarAwKvVnQtx?rQWdYr)2jLWBA@iiBA?I1McS%g*1V&&!_7Ntep&NQm7mkRRsH9d zZmD)Tx3W&(^{d?%WFOxi^wzVlypo^4e4@th`?vV~K5W1L?NQ}?;=B6&*4Op><#|F?erD&}XaRr~w@qz@f?&>Hq*Rq~kqe(!Nr``=!ffTEAdG+wJ>9QQmgz)9?b zAN1up3R%ydf2ZDg`2SMrj~v(U?qfAWP*K?WVq8-%KuhaIADEXK)=F++YkhsnchsI! zVXIL4s;E6GR1pO6X%UhD>Ed&dsi-U z<)}*Kkbok}i3V}s<(^T$o*~^fo@qg9dnI_nr-!V#q~%z=X9@k#h95sV(4X2@z3kbQ zW6`&8s`2Ynm7osefsd`mI!@0j9P$($3?++X3lN9ldl}lqLE<5vAh45=8vdMis`;{c zncID~r6S$-dEpK}0moVR`w6w1<4TuSEhqUKLa-qVH(p#b&g8396@qvc^t$6;+8fH@eX|W^Q`2M6(7N+Msv4Wt~H$)ba^di zTi;P#F(Mw(wHMQauF)moGEh9)6>RDaUA1gWqLX{q4 z*UqoMku4p|;*I8isz&kN>^dl&mx^`;buG$WQ#mq+hK1G})6S{d*BE}=C+^iJOvmho z*51Mm1aPes3%Ma-w8|OopRS>}{<#*mNm$;}hmsygfe1eBhVk-IXgeuUW! zu6RICUQumcC|G2@iRGy+`{DC%#e&K!mofSQP=2s(JL`nBC`E-OfgbPj)2a+VP->fm zp}HxwP#_ScU&JcfH7|N3)KfweLm!PKv_(IrRuBVSn)GUF&O`-pk1K>&F13}(w>Jd^ zp41Y2`H`?*zuFI)ivmgRu5S=a3@T$nF74=H+a?b@M08JhmHBbd&BrphRK8;PTIkpB zGqNhW=nEA^7a84xF5D6d_a1gvI?aVxQTtGjta zIM=iNynscP)FEH9NhVrjmRGx}McI=Sn6v`Bd;q}m_L8^PXKBv!DK*lLX<~!R2F3@K zF#v$G4#RdHwB6`CX%zGfAvE98M@Yj5EUlQz@CHg8Q_xq`C8*LvtITl`KZoQG_>HaiMg-K?gCE?%&MW4PbzBL}uN!M7)$y zkl7;LTFS_5xw(z%Acm)}FDHgpU*2)PUMAb+`WS6j4FueSDssa_xCR?hbm@ETfmG#= zfZJPAI`Ebe@S++~*ID)C)YVl4b=4+JLz>l|$I8WYgN`4L&$Qtv&kht8!uNd#e(7 zced+~4U4PU(=Gw*OH*vl)9R8&a<(vq`bxqSlv%=&X}CZbH-s<-(X@=~AV^b@VA1Bf zYpwlzwYDzW3R8)`yQ-P~hgJ38X&sPRnwLK?7Sv_pbCDM47irMvH-wR0YRURW>h?zJ z&PED?pmMkczquI8Mw|Zo5X9c+v|$h```&-KuNTp&!N@We8@h#d1#qDNE~H!jw_pPH z1S5;A9}jibw*`KCb5?9FS|$McRZIZke%u5wl1(b@(*)?7xSCPv$r6=@(!$ajBpSnQ zPNL~rPNKKuRjR$9hoFM)Lg9%mFWZO{O{35BMC*&~kC1%?0O^C7+AHt!kG%REy4^%-Vq;Iv&m^{o+JkQ1=w6VzB9gCL}qmW->6e17E zkIJ}Oh3;3`mP?hYM&)8aq@wyj8i0fG8g)05LJdZfci0Omys!nFHvhV^tO26;UBawu zScOa`F$ueD^oH_T&`Q_pR%HnMFX~v1ws9P?8DZv_O)au(ImfKiQ3{I+aH zL-AKO!fWt>Dkhi>_Yy>H5ms?Pr6r<7E2sjS)R1BwShX8i;ioCu9dalJ>m&qiDkDQQ zCINJyllHdh1(^Fdr#~)OgB3`u4L$Tm|ph+c}21g~!KqM-e0})Z_91!_0L?t)3Qpq+x zR0y)CqmnZYK&_KD$1PMcpTdfx3{|c6QK1-W#)>4WNuzVNY=Yt06#rr*vRY!3KM+NH z*H*t0-&cK`|91baT3B@&oM!L*(_fr2o-MH3iYQzF@zxM19%c5}LP&NF$4lvyz>iP8 zC^~btHqA+-bxSFuu}h1Q+^l8@vIHBqBrut5qLFn79oa3(l0Z$P&?K|76<-FCVTX@o zKw?-Ejwb%smtZ703c(zeyVQyP$6D1;!NOwYEOt$T&vxTv!Tp_*W`ocp++ z$nS9!fRdZTia|+YoPx z6L-Cv>N;ig+YzJ{h3rdRfxO(!gQ~>F$31ngY{g9)cp4|OW(C1X$0dp3RaWg{N!m#3&q@N45ubgTX*^zejcv-|9j6|zi5 z1Lro@QF3nM%KdgLv?kcXRa9i6Jrod5Vz7gr4s)`qqB1MBUH~_woioxuOsCa>JfQEmTRfRyZ%< zP;3^ITDIP3~lX%(9gGMcGaxiHl>W0zLk*JW)!EHoqik$aq+ci1G#=|gzm_IlHnJtK6l#m$2(vuO@MqhFCiXohFQZ&=8@0aqo0aFMB4I>o<>E@Xw;Q#05Is6xz=dOH4Tjx1prZxNjD)Wpqq_yC%eB@rb zd4@0)6hvFva-i-Zw|if_OhC;LG=O?O5iH914VQhfK>fcKexH8c|5foD{-=3gIcAgp z5>I_cKFR<8)I-=E5&vHY^}z*~}#(;lh0h@``w^K;{KA4NXbPIM*Nn4SzfxhcUIYLXCT1M8cbXI&-I z8jj40yk-)XwrjQNfH2SY%p(YLx|c^V5!sY1&CV`K9hUA&al?=z>Ziyzh#f2!0v#rv zQ#~#UT-l&@gm-SCb{%n-QM)Y6e3SMD+45wzHXB}RzDE1>&DU03kytffn{kWglWsJh z^v~0L8AdInw8SZ-cO;Qg^EClwVy#(_Fvb>ETvHHM2Z@gZamfX}+45mi@H592TV62A zw!C2EO<D3VW2vo`Q&j>>!nlge;h#&aarD*mGrf zRpC}mpwyzn*6^TN7F9_s)yT*5uNf?hEfs|7TH?oD90drIw=>Kn(e>uiELX;W z23_0oniinlyw>4fb1NdcBaxZ)5UEH@FKH#*YJw$Lalt1tiCQD$Um=-p5)x2wk^b4;TIEqb+zH|XsmVGJHq!q&=3C@cQ5IFm< zu{vs>1^w-_s7LGl6`E(Qj@p|@0=Q^(gg31EECmbO9@}Hfis5)}uLUK+Qo5Tgq zQ5N<3yYZGJuaHSw1jH1E-6}<<^;fgUm(0CpQ{RJCVdX|>G&!fL`hA`_@8tN`rES{& zt!N;9j3^PVUOfn{LuMGfcF=aMF}aCMl(1p3O-jfVkn6S$*B$MYROd*iq&-JD5f9_` z6~WrI9N2Domzl0hPe<3#8+&@i+TaS8x@K)~jZ0m>Hn`rsvD#E(dV>fl7rUo~O?jP5 zyyR+3iCNgvw|ldb4lZ^;kr?Nvo|qXee^nkvZ0=IQm?lw)Rc)# z%%1eD5}w3rEXCZJ>f5HyI7{9;duqM2l=Y6(iokkjDeIl3tanz^a{@y>82WDmTkL(`2s1M6%`=ua5`cvCzT{YY9qnnUMWX{ z&Y<^>6VeNa@kCky^zLMaiOC?mN&`tose&XTr@6rS%5Jl4+m8(!cI7D-N$~cIwFqy4 zGm^h6jWvnrX7QZYArg&8x2NrFJt-dc0+8*4ttHIjG&8;Zz~m>Bgyj(Z#!%xky|#G4 zfYG5f!ThmwA@XBpp$S8&;c5FqTjjKnhwZHITIhognrz9~EF~xu0))YK;Iy+RNaN9vi~1L$#di06+XYL`X~JA`+wJC2B$S~jj@+L6Fgk&noTK$|}& z?|OBk(%KD2#I^czG#nc({gIssQv$PO{bB0mozdRxPvH7votV|1O5PtNB=v_OkrAwt z_a|U37*B1lqt7LpNp5(Rf}p3+Wr^m?Y)mXPX7@f&p=)0}zF6wG78QC^tw`7~Lk+G(m@#1tD!m+J;owlp}a1~xf>ysHJsTSno< zP!i~b%rrD-hErl3wJ`buz9{#2MH614GVoSL0<)v&j7mUF;8*1FHfeUxIBg9@?gYP1 ztj+0#yq85U3fd62VLB5%Kr_8B9Txd$p%>aUt?vr4)7u)@PCOfMia4tG#A&|NfhjRAn}lY_oZ1Hi=w zfC4QFCaPcnw5*=n-9Aje1lq*C;i}XpdUq@j7o1&i8kT-YWD&QK1XkRI<-05Ey9)WR zM2DS}a=DkB<3=`H5S?Ue8={L(`ExE`AeWeKYH|SY;AKX7HV*4UA8De@1fm0HOaQ?I z)8m*6(deBLxFPJaaf`H5jiJPy!Ua=M0eBnKbre(xkRBRdE;6LQiayol-15IEreWp* z=<}`~#A^B|yjCG&!3yxcD|$#4QAaz(!ls}i=wh?`)N3y~g+bJ@jU2s*>W8nmFkE8h!_>!gAAe5bHoU-K6-?9+*26B)h25Wam6}U;JKsU z-ND1#O-I*YP3HDc*r3A`Ky;bsgwM{-m=Vmwb&lzpOFBnLV|H&d`owrna<81-c+nZX zf$WkdXO}C(FcX>F%Ira7W@P{?(m7*=kcf`VB13@*CHM%~h_#R)SK0G0wo@RZKD8N1 zd`nHB1mu`=Rju%;n&Vbfd{y6bflrHz*nw-P5)*Ynbx8$T}wVKHd9PF}|fXDFb6#Hr0 z$9Xe;*JhoM*#_g{@7lCY?loW+OE3n%Tyrf81(bNA492je$ANqUP@z84Arhu!vDTE- zkmI?ys6&03`RT?iKaCQrbb(LQ6-W<@jV>Z%wY4z3H*nu7!?fOCfpBUvOj`j=t8Ep< zDhmoD%Eky(P@4isB3hlqa7P% zdss6tiMfK=*WOuQ5BrpV&7e+5Scqx=zI%!j53M4nc1FMzS`xrd4=(E~o$HGle+#{n7^gzpP3#!#6uWGR6VAV<0Q;0@pnZs!Z%*dAq zx%h(QYjgvl#ZlUprGf2s#ofe{4@{AJ{Tz+Yfe4R>v6MhF zk>4W%+w-k$AW6px!fzUX{P$4Q4(33VwIh25x7e8LA+E&C&W>=!M5oialEo^wBf!Tz zsRX0U14brAyN45MX~%ADo0$z`whS8`y@@I{;+0qHRC+n^={w*(AId*(&Z(Jyw=#~Z zJw-DFXmkVNWGr6zzf6BM`c8q zF_m(_xm8JZrkXtiwBISopOJTaqj`V2@Zj}m8Zp5S5;4k%7><2$^CXhjr!tkQFli zW?;y=m)J3swrT~;Ytc&YKOcr zNwyc;fFrkxrfD1^Ii$%$?~W6IYvNVgmF^Sh;t)(pqk4A8oOK` z&l5pcK zfkL4JuOhcYxZPfrE*vy1&C`U;Wtow!{7oR(A4d;hgP4k1tlQq~5*wpP2EEA`ihP|t&AC|j(Z5I z7WXKp{gJ;{LuP~q(JQ!!Tq<82R0?B!+jG^{{a593%j$rV>tzcH+ygOYDNu2?v z5RJ6bTH%yRS;fz`CvB7htJRhEq_e9-TRNeU00`4UBn8A;09+&!EQd1Dvq0$Tvh%{l zQ%>U*?g$je(nUtXT`XXO5(gS&52cILd!09_NWgc}Oka(-Ha$zr11P@!u1yE!i@yjh zG}#MC%#X>@v1vWZ(K&o|} ztQeew72-s;LjqGw%+9B|18tMEw}XLZBW~PIIPfzL^!^S8nk~H===M&KI0JA z6$RM_5h2a7G+ie_K!_+rxw2199oxrgSth+X7CC<`v-9Kup`C4T1g^+93#2z=a|BZy zT*)`vt}^jo@^Emf)5{5ZfOI96lEF&#X`3yp$W?Q-VhCwP#Y2cL0wop z+{~E10hw#}sfCp3&Il+eKF%2joVbOBAwWab9`{~5_=HY~Qu3O?CqCTZ1$U%9(A@0o zYyeRkh`>CV^P{BSEz5u&TK7!5+lK&XgQ!|yiDwE-9N_9i-C;nBON=WSrowJd?IjiT z1fJvw7$=Z&HS7|xN!abekz0S|lCI%KgOE2rTY4=!cdQ4N)Gi&|(OUPaP$&2bpf@(g z$R}NXb2XN6sI)W-aZQKG(b7Ur(FhXO*rsi38^ReGz4S#hj_5=qwIRWRx7u`@EaigO zAVWoYI2+9$T=2J@)a2kHAF8yjN}x#Ae1Vv4FC11F99JV8ujc9@HBhe6FV~1v;)Wip zTHZiwo<>>9Ka;|_8J0!ius9H-CZZK{&X!r?oW!naS!oBfbSQ~AaYphx$szijO?)vL zqrqAM2pc5W{ZAYF=|Y+_yevjcXGL|4uoTegNbs|{avqRqeC>r~y|Rqgkn6Pf#st8! z(D$N*yq4^hYomx=$bV^nGIFG5vt4wkwesv*n{ z@GK{wn|8;E;Yt=lCP|b|CS*c)!DfTNRDu$MCIX3xnw>H}b(-;sp_^T<=P5zEkh>0GvIp9f))B=<8M@s{&(j6?`-xzt>~yf6PFr8 zAXf@WI1+(!K>|Ne<8RD2{7t-|CBs2L1V?LfGs8c)nIw<^7N(2-U~FY>hBDM~GZH#w zhoM0{Hf1$v$oRv^I*o~S3(sI!hEoE09V8J;qT|3v@sr+rU^iL~4Z{&zGO;l#_E@iY z3)D2OUzOG*SD|i-NkH$L%tmAuIX35#Q2RJ1+a!mLXcq(*dMyHld=KkT6WJPV3m1o% zhLsjcP4~gw(1$c=W@1MdZ7`WaTHBm5v@=S5A_(uMZPE_-m@^z%BQM{~o0A3(tWkX? z>y*1t@Jq&?0fcHv)gWPmM#{_C_982cIJWkpqrFazFA%*3K|usIxGU8-&_r7cG0CjG zjnsQOh@t$kXgt&VtuuVry^Pq+VWq_nR6TonxmN=fXs$*O&&(sn}^V}oK&D9ap%46AnkgJ&9q@LxRYQLVLzBsHa ztQ7lMp=1E`<5Zo?@Ce6gn1PylBuC^EPlCwm)K!BU3f=;8e=bBURKgvVfrx5l|(vLsWOE~FH-=T>A?W7rp5qRpB!yv z4GFUWAw&#g(B%-QnXP1Vh&pRx>OHZ;N*jU2F*`-)c1FQ z^s`5uGdVR^AGt)NkXZ2>s&QxiMSd8HFl)lk_-RGhIL7Fb)_&{I**_OH(4#p#t|BH2QiY4jZb5iiS3S4z*n}u7DA>L^`S(T5* z_QE0P9cJU4HLnRywso~hN1!OEj^VLFl9sc<4rvhJWx}htn02GzNfKb$xU!gh7=o-o zE$?wmxH{QyouUg}ye$)qB9y}Lq+{3Og;kj?<a_sS9Tbax+!F2Tf0QCzohqe&cXhoH-|nA=>K~{E9WFTZQM7S@iHkwS zY|?WtttvFhA1f-A&2V+OHDc99~+y`=fHpjqe=;Cf(Pm3qkB<04@* zY^%i;$k_$$GmvA_Wni@PbQ&co5D^_?IS1@E9`a1$UGGiGL zl~`W|!ye#356hv*ilAge2{F+l7s#gKgVkP$J9diXQMkeqTf5AQsYBf|VLWIuZ}Nu)wx6)1qfOL$=8(_# z;E0mVz=rg~Q1qn>`NAv7RZLIv~!8E7|wn??*rIgVExUsGsNPuq7J76N@-^ zQUhk*IU{OR8uWw}ui^nt4unrE5+D^Z`8-cehF|-ok7Cy^PUW(V-Mk3BMLLiD5pT~* znG7uXiDvTS&E%iBY05Ec$5VkYv{=H*P z!^5FN>l7c;kAs#R7;m|N7hlJVnsfC$^W*b$i!bQph%LHVEF#Wb!1pFQ1VG|fZ*iA5 zyUU&KvfkApqUoRvsUyB1`ZNfkx&h=535=Dt=zMo*Rf?}^tVEp2OwQa|I=6o{G)90k99MF{Jffz8nu&=_RlxgjlXLRU{A3A# z{jzaFN^E@!RoJ98N!+s{U@u?VCWJ=Anzip-Ry1ox4{p_DPE$78kOW0U2acq)#c9Q4qetK zw^0O#piSTas-NpNiQUyQ?3$3cE6ED4+Z5jx-@%abtG}BDA5QOxZ;fvui(mfTdNWx{ z@a&g8+?Q?!5XGOY9sr3pR&U77Uf0AN%iU6M_pW*TKj8@T^5RHygQJ%~xX z#HgFcP>qh`qb``qo@Y%q{vaQ-I|X;mA3V*$Z#+?`{?m#!tiD+WE z+SFJt?6v+Y>C8m5Nsy8~YpByCfCSCWDI+TEpL#6eg1jtEZjeyJRm~OW5yG~8&d+ri z1_IMmq<#W%3;!8Qd7(p%uNlObH|xm$`X7M}#C*;GJWa*;(^#c~30EbIa0HQ-H~;SI z+U7Mu&wH}H1CA@?!ZnxzZ(dZUy&;1u7Q1J_alInh5lt6sB@dt3p6uC0jnB_ClKSj1YSZ;72O>9CY8%|Z_o{9?_(kWR zcT$%kl;8=9@y9$tCA}PkI}Ib>f2$rn5u}SL#E@Wzaw9cWewv&|?hQM zJ4vsd3MY9*o7o4l==woB#*kZ)u>2MeZ>AdZ0=|zUKoM-_T5XgCVu4SdXsmbwl*bj$ zPzv-U`iqc-;^zbGGvZzy+0)QKpJ1%qFqZt|T$R0=J?rdTC7JCoh zR5;$F665 zA{KHr0Y&i}HC&)G`J6dfW=x9NTuB;M z<5kMKHys?q&1-P%{Lp&^nAV_SQVnaH!+gyH^9H!{v^+~lN6HmE&!B%mU|`BWjhciD zLbY!y)dBsQ_=xzWVFYvY;x=}L>Kp&lPii!e`z<+c2%{hMP&v}i%m8#jLcMcHv;km% zY(Ucfxc_|M!n7~*P5WYB7%x|NU{avdAG5a`Q9gfz!iYom@zWFrAxuk@ON;2SY%+M8 zuO)BNM{5buz8Jt{+#nJbEijeFNJVI|ifq)yOMa87=+2>zRW;y=;&DkDjk84ANMHK* z!K~Z&CASvS7BAGa4XD#vKT3nn$lLA%@cB*J@>Yp&eds`XS3Le`j9;2Ux8B12n;)H= zM34a0;|=j$@ozpFZ;bOiF|(Xkna15oC~^y5NR2*rUdJ=qF=OP_GRDM)<=$1{;TAi) zTF;|rRNDY_H7$(_}fup)neGM`$z%Q?JormvwVA2ChPY z)iyWV00xP3-BmyBMq}Z2p;`y6dm1kw9iyjwB{e;9T?#Yq(A$jfTT5>goTppKSva6Z zijzAG0>y&2HDoxx?b(g!qDghyfB4Y55mI=BwVNOAZk0F7Lf~S&OUFL1pU>jNSGKh=A z3{h*)HP%ZLpFy5danEjb%xQYdDKEY)f2J$X+=XYi@l0Qt$R0!v1R`btqw#&|?eXpL z9UPH*i<#Bev6(bhD^%=O6+7;VNpwU`jBjfcgTugI;3-dWzMm0{R+xZFBGJsHjMO3griSd<{LSK?hA4QBWKpe zQq*f0$D%RuRqAGaplQ4X@B5rL&P3@6 z|FO5`(YqX05XTHrq=vD6Dd2+j%k$JJZdZ7fR_wA>>9!>%yac7$qb`nlbyy1TAI&^1 zN9Cm$-1SFtlG)M!^h+iO-APq=TXP z=^F8d5c^DUy__SzB>I_cJm#S0MK)Xw)CfkM%-N9rikA(&mQZd9q}t-w&>giK*-6qO zbIn>Do2NR((Ps!2>U@Paoaq$s_q^ne#+Tf8P@fzAyh`@unNggE_qL->gLEJs0&xt0 z2#NXMq*}O=DTiTaP-Zp$sN^W^jPn%pL>U;9?@%n0JG3OMs=N^*JjP578$Dr?UB2%C z!=uJ{iP=bnS%|#$d8xGuIFX`9%VF~!(z=z9|K2GxQBgayrgVveu)9ut$#ym_K>{_x z3}(71XNZ}-9ZQ5GF5-_L9aNlbM$8sZIRorx;{>@IH3XIHneR^xy_R+8!tC3mz@~oV z2r2yKUf8x4#{EPX>dwADwX^57gK0O5pYHrEopMeaqBr7_QBV7&e?Qm@W21-0YLR-U z?%U{^Ip3xX?3V0ApNgibdupOvXxn>Q#Kc4!MUrH5r=DuZyjYevhgE0draK5l;ECZu z1xiarJBvK}Bj0m8T!Y)sd}1nFf@N?Ce#pAQ$Kp29gxLfHc*u@S$?Hg#ZOB3V;k?Xw z$C^qt(0E*VE(J>vg4y$kgk!VFhD$!$GKYq1E1R+{ug{* zHjC(%Z_#cGsD(kS&Q|JjA0WB#UQ{h?PuQeB<*Kr5%ix$3I_X&>shsCgtm=A#Ed{E< zbY}23)H9kvbY@a{l6qI0!@5ALI-t7`ixtRPyF1!Q*=K|3KML#Q9$^bWMr4=H0~bA! z3M0rK?=wXKE5W`-TV@(bwc!}sh;=>MXLTS1+jpW52f%%hCHB6W!(>{)Gid*`^)DZD zHR;nvOdu$_`i_V+G|&u^07r8Oai9yDSM-#8q5%>{mDkgP%0_ln2=H$gVRAR;g)@E0 zCcv}jJQ~g^B-#tT$vQ#KvBtA!d8Q8P*|VtbsO8x{b&+r(eQA&rAl*LKm$C%M7q2g^ zHR%!=GksV!xgP6F>!tF~^g#~DKHi7-NI}OY8xAjzeiA0f1Qc)JM%gGOwp`>RVKwqw z-o6!2W283mf+gYw41uP&MRiJ^Q=THONR494{uiF5@?zfrxd5tLk$5CH$?)Z-5qjza zO2?e;gem<{-X0w4)gBtB7Nsb@cB1$~>CH?#_7T{ARY%9O{T6u2{7}3mEw^{UeW5Ki zQOO5isFFiJwGz`=S5p%qy_=zhG#)b>ylJ_&zgmnpS<{v^Rb&w$IK5+SpiRway?0e} zak5bZ;bo}dP*Gf!DsI(s?{JZ&8g5z3t98ViJG3E}Z&T$iip4yjYE7h6Mt+v-J8k5G z5$`Y*$ccxhC)cD8lxZ(2+g5J+Ir&SHl+PMikkCv`K0+e``J)I?LqWszLx-0ZF(YJ+{1(b@d7eATeazBQqhG&o}4 z+N>4N7W00WWx(19q0=`Rr@AzZ1&~WJIgI-dZ<9Jg8x^3Wc*XSUfE`oZpptbdCSTN< zPYZPBlk*|!l0AK;VUrBETDFSL7p;?e4k{}v!i)N1pPe#Ql?s0V%48ZfsTWp}K0Gic znk-D5ZX}g6m8%W+nlb^iis>&Q)+A86VHtl_Fk1Z6*tgiTyh^3wSAa(Si*o}Q>z|&A z9|W?^1zBX9mCmETqW8veMxr0o(eA@s`DwcvIL!vE zY}em%U;(-|i^gYqc|fo31-+>bBm@b~TcEc`7fp zUswF?_UekC)gE1^ttf+qdsHK-dY;Qm9j(z@M;NpbUky2l!Vb}9PdiWAN4$5oOW0;< zKiMuz9<-Ft*fBeTT8uh6)rOE4kSQ7XP-kQy>4^7eCMYKJ8tM*A{B#wvTiu%Z<9*9BDL)f6>l6sA-=m+Ot>b3H z7*y;pK3!}#kmDlio4dTegfY^_y;7NR0T`o)bGDUP$YSz&+weAp4EV0TsI ztL10QH{cmb>`-Z*%`_Ef_sR6yJ>m^JBP?;Q^g0U(I{&=sZcai=w$MMq@>Hu_bvV``l~U2un_f zVr&O!&@r|w8v_odEop3GS+2n|a)V@(m(`cpLlHb@p@6aFS3~JSahw%}m_#uKlvoK$ zLW%$pls=_V5|d0{)fc_g4QivemPnoEeZJql&;2tqk_~Czde-usbI;jl|M~6T|NYy) zP2o8Z9O*~Olpe1Xl+|ruAm;0uhw66*C^FP&G8sztpQaV_8a(q<^N8{{X)#UjwS`ah zYt|uHHKICu%?&p8h6*wKBc!XS9t_v?1W2ymhxlE*0REH8BH{K_|5i@p6+AitQm|8l ziNHLkDGrsxtG`aS&x{PLCX|!*rt;=X`3_ryI7oIp-@Q*$$L@!)JHn1Y^OF@!1rqLI z?E$39=SEOb{X=>QA}9^RmIIjBmN0K(@EJRX`Ne$B(kGaI60%$vNX*DUX?`IvdPR}K zG9qX5*{7%|!AVAH`}hE<{Cs|29KpFaJ+(uzfBimdu^G<-))>nxH$_{q?7cb+>M*r0 z67MKha!MpN*rARR@zg}&bg4rSX@|2ev1E!2%HWv>#p7^xvM^K+dmU$23%0fP6d5xqks`sGo2xB69kwR6Fv!Kw%bPwmh8Y^VBFQB6eJF-7Zi!pXEsSJpj#}bT% z68xpae@HKZdU3?OOMl*}91;lYlnfI34dD2Dx+dMfQJkVLd;H{-oTz?dI&!~m5B(y0 zhvKop9&Ca_o71)N>kMIN-g_gK12F0$9V&pK>2h1w90>kJN;9}yKc!hEJF`iN+cd}i zfO(K~QX(A%P8$eZo8m38k9W44EioA*f*00t)o3taXcEylTVQ=E`%{98Ip;u+D-Rac z`$_l!9ph!VDf{*&sSIu=e2gRNbu`@mtTJ6?AL#puv=kn@qZ=k=Nq;EJ9Q`=$Fm_h) zwW0z4h=?1ItM(vlS>Oaf=vUraTkEn3fcdCsKEg7uEJJn`QI*hAfdka00hj>uF6UEh zgC%+FqaG}E8QPk^*iq7=L~bbdgz6Ce=DHVUslGlZh_}Uaa3Z1)ibGss%Eewd(n_wU z`7P0Sj4Q|}4z)cF1n3KQwu=ENKVb4EVzr&=F4#MDiDgNVW(Qjlk%IF?jhk43g3hLg zDAS_tckWpEPDI-3Ofp!hqkX2NNQROfnLPQlN2)q^o;Ym|>jpo;v-CkC8=zk}**(Y( zzvece_g!&4PTFcitXcG+nS5r15Oz*cA!{=P3(LC}`cWE4;>Lyb(3;7mAU!}tiBC5| zV1nxrfe+PlMh`+ogu!Vi9C>&(tvQI1FbJ&j7Mu^(XkV{TGJinUU0@ki% zb~hlS#N`|jO@&lNW!eAmmL|GNC+Q}?TjEu~5b+z3OdBFXKniiU(3){Y7{tI{uk{98 z7=+(vk2hEmQpj#QpPJ3SE>$Wbl_^4+pSYc_VsN@LZnQVhWEJ=^Ddoem2XUnOtrSW^ zN)kGYkhfm0WaV_j&Tf}Ic!Zz?&1{TkaD*Qr-9*rU1sCm|iXr}sO`yDww_s-HanlQS#fG_jI{W&RT!gCtEyu=v zeX3Q8)B)LAdDftRmN1l3%33{Ag2!zv6)}f%WJ5_z+fouqvAmUC=|tAV;18ynEan?_ zc2@J2ecqY|4TgL6z90M#Yen92!v@A-ZwrA(lDc-JL5s~Ggh4f!<9h=mzAOAX7eLQ( z;>vxQ-ros-*J{^Q|6e{yqejgc;U%W(r9BL7ZcI3qVk5t~TX!ufmXSx`Xepw^+ev&S zgyI>I?w1<nNF+iSg&M(QDl4Uu4uqiAe3(giVU+}H^uY|f@mfW7i4#sHsC2El1^iA zj35IxH7LtjfQ2byR1{%>Cz8lflZ!w>_)6n*NiFHcchX1gY(PJ++m#ZyHs@I~@!hG} zu8u?wtdL1>!=<>8oEcg%s&(!bY=sXz?yMEd71JPe;{71qfCOG0i--0>`EP_IrYeo_;NsN{u>n{sd|QGm>$D1SYrw>BR%(dq z@LSNF6Rde#Yr$3FagYKtt~G^gQ7yQI$(XUG`K3V?M_m$mtuo@V*c#ynYD(0Mf;5w~ z#haSV;pMQXhpy-^>x)`2vU4>sC04oOD^?R819bLVx5R^(0!yh?+`tknnk|#blu~TC zA9T_lE~bQuf-#bAh0y?Pkt=2o%LLLd&2W1RYIGS^fsAQO&;&M>J{#5vCzrAgy!`Y% zpZrlpKM=Y#F6$$B+bylhy#$OW>AA)V!&5M=sB59AS@#dR#)A{hZgVH#6}|HFq>gJ& zd2qU^_#dKP(2mj9i{r$u;|dT;lhRsT1P)a^_kY?G;NMet${8&SP@lbF<3rtDKd(&+ zyKcxI`T1!o;*I)@Z%A(7CP>9!Aq{h#21uzXg|EU1@^GQN9{=8Z3pm_uNN8jT#vUV~l}h$;P|oK0iyjiKdz_Ghc4r9S8V%?whdU;qgvz(Y$6V>DSGAOGf=9|Fh>-E2$3|T zfaxWyFEF*RUGC~6*HZ*sz}4Q<>`x4O=?iA1*HX}T_gtH7ps-eX^rdL@BS{tK9XN=jHkqKSfOL@%f&*1+X{_HM%cB!br|1=ml@Uf)UtbmeL!)Hibn4e1pHEoGGau_mdnU zOj1B7k%AG5Qz*c&=$XMX_UysU;e(WCI&Wdv)^x4*(_md_W)_W@{gX_iUhX~pLAw4) z##VxsF0pfK%}h|>U1!R#BwS?zP8Ki#@> z=axc3x{053r=%ggo%+aw1?tEI8i(rr`=ln0y${@t^` zrBYyo7DACk*=YI_>1$I)2Zo{1Ofj0iW$1F*or^iTW~iqaIBv5uDpecmOM`L%rXqNN zXv=xtAdEdW{pUeAO`^z690Zw0bG$y;eA~DzN`fBfAf7~%7@9KE*jY)bF`@hDZS*zP zZ7m0~Gl~RUXa}-`Jo2taMZNP)D;vz%AQsXP#vA-sVT#fRrA6m+!PNo{+3(4oPSLK) z7Kup$fVVotX`&BoAb%?2(Vh;mSS%qc2QrSL^%d2)E|es-Ybr|Kb+eAF+?d_>O_)vrc?-yyA}{2bWnSw zCZP%m5Zmazd&or9q;F1nFk%bZy~Gp%m&)ADjGjkwlth3mTo51v2kai35H{0;ffZi} z-bh$7^V2WO%s1|g%se8Z7&^m2clO6ZmS$gP$eP zNeic-5!z8G5c&6cnYR$GUtdoyxXK_825OaR9k9Yu!L*XXcB1n}RBx#g1q1ZFh*{G& z@*{||F@ZHu>6NkV1o1z>zJ}R$kK&hO+dBV7-9qj9?%1}QgNy?EUdpyjUX~|f@2`w) z8)*OYxb`5=hB%b5EWtZ=Z334rnfFx5xuFje59MAF2d^MHrbIB5U&6#`qZCQs9TPtf z_eO(9C$>*nVph&8+{-x&Hq2WEfUtv35}mk)n`D`)F=8s88?GGc9dM>tWmw*s z!aBqiP(>6Y=M}S1(Ol;Zz@eGHL0VSnVU2QB0&cC?A4h6@F3+KWXP?OL-q(3gbqhUN z>(qr5krMhIq8rx&^U|mC?7qhcitXNG>-f%G*ZDWS+dE}MtahRHO>kLnT`UHf;G+tW zkf@U3jnSH8CrjH!HA*1sWUs4V!X@wu|D_C@V6Q7V1;bKe z3JDu&adj>=pBLbl+K9&2wfHr*BxS_7ZPn>RmPnVu0y^|Ky^?MJ>^_a`@$S8_L;ZRz zzvqeWdp$PRpWf?*!}_vS$RWVj_tJyjhr=#43D4E|DirJ?UC8k#^&T7uD;1cabA!W_lN$AQv zyNG&S$)`j|-uV|ByiniPOmig!uJBp;9 z1{Nhhxw=P)oOHFozwiyJcGNUZ4dAYow>wQ;?O(*XV|9y3mEOUoxnKyPb(XiMxQ$+) z(`ZKFhn?*2V^Z+7zc*a&q7Gst{%}O5k6dTWyf7>KJ^U9%o5Yzi&BFtbswqZWI0P&x zA!7VQ`vdwPAwM*w<`u;E=6JPe#sX=zFL#ZVt{-+AunTv#~$-HP`R@gI)JB|cy^GaOhst^@R^$b+pvrJ;wSF8IK>w%ReQ0NCET z?6?G>W`>PG9L8ywdIlGODcGlJha>f13V`V~L(>1i6ut}oNX~>+Z~KbP?dc;G8mt@u zDj<2T7O*%1SX(TsEe5Nm#&}jDRlsdNTH19;Zw{`or2hdI)NkQJa4ZZg{wBBxVi>3n z)b)5`l*}?h+nz=c{KvrY&*2L!#e9elBKDw=g26FQK!Pp~$Jhj~rvm{(j7>QzIlF`M z6@xYq^dIMfCl$^OeG{=CQ^9HD`0{2@z=rYYf12&Mp-pr@Soat4E%J)VXW zz}{xk1Zc*G7vD)jBx;i{4D5%!EM;;U>NfcR7f_>*$cMrG3*3KMtDowCebmFy5FJ2> zB`pAZdhVto5Zo&-Jk_#qvHLW8fh~L0oe%>if$h|8iMJ99Qt-6ANxJSHX(C-1^=KeU zoCGC7!l*UmYWANu@esqJ-aS$$ePq=-KTO^E%9OiZ>z3m4Not1zW zjRGDDybyfyA1q2d6#4Q)K@g9wFJBM6_BY(g>q) zyub)OK6B!wZMM(T<|3%>9BlJKWAq4dp=d3OogIU|yojf)&?{=kl!KO#VlVUtdopFO zy(iZngM`^bVBltw&G@PQo-{c6-<7j3509wo$NB*9V|Aahv$5pN~|`63cz z<->F_7D!O?;SmMojTL*y7WL(X4vc00W`c}7Jp_^=jlCS^hKN1M17V^LDk4Ur3axQh zVSXI)N6)QQh{bEgT2tZM=lZu&DEw5UhZ(pLYs;1wgs(-*Ltq4Cm7t9r_AMfz`e1<@ zlzgS3$dP^#^5iS*s6HFKP)H;t7I#HQ{mK<_9+vB*`r~PFB9)-z1#3Y8$wV}CnA9>_ zT(I!=Bv^(DM!AK|sfdOp1*>1&K(2_MOic|+f=QKmUBfI6(~s~| z_8IBjY#b!m3H4hTbo~}5DH-9IsoCYQL+MuOWl2GrBOV1DAq0~SFdDehTRBd!fRglp zEG2%xN_@bgydB4WCM5-$W~9R*Es>c{3V)+Y0P<*X-4y{qoFy8jPQ%vOS7YHP8<4|H zrAR4Z7Zc79)K44X*&a++A<-N+=N4_9!$@)jwn_6+_t17Estj9;P8B_IYjO=%s z$~gS0VxvjUFCG!XW?D3$q~BxVL)pds)|g5q&k7Puv4n^@>2Z>MlK@@1f=+FhwwFSA z*w&WwfFMK|M5g5+%BWjm8C7C1nV1*&H)agfNO}<-xEUFdG&HW;^yfDHNFl3Q;5O<8 z^C#)oCDppt62^EJX4mzAPjE7Ng)gViI&qh(_td0?W3x~DXSEI*QKMW$b}f8Oz0!=b zKi?EVV;BT80Wk_sNcb0^#9#4$q6#CKg_nsGZsv8swFi3Rl~5jbP`6$j55Y}hH)40> zMx+7py>3%3DpdCq110bf)w<+Jh14jah(MsbtGg2Nu8SA)rpd#02NQr1V~WR!T*ceQ zcw9URJatHJ+qVi)gML)N;kcY8MS-JM+x!%*jmRh89^p1dpJ=?FXG(}^!Ckpr4DP67a9hj7;2IkNhaJ!8L~}2gVRSz^7@7iF{62hRYbO zzNiu34(qbaY7P>Edc%w6APMCLuGwFYn;9%|bvF|1qxIPhN#4o+_wh^c4wJnHk+Yg? zENim=ZKm5~5I-PvJd-MSYjFs3<)W}u%ftQbf7yx;82jow>n;gEQXuo9BrDO(&{_patM(&w-_{{i~!6j1!77uj|!QhJJ8f?ZPVQ?5C`EP2V4$p|BJ zJLvj-!1wjphi4$8Q3(X6s3x88f`g(gBM%dG&t5x-`a~6fa*Lf%h*1@G4#?Om!}deu z7N*DF9~-O`C-K2;_o6s}_BR#fn^cOjO7@Y}+7hUqQdgS&4G~V`IFW|8%m*u#JbDs% zAwbGM7O5sOf}zCkYQxyuI!$dDTjNa4^u!LF{Ga7y@n*|dGi(_fE57_~2T#TQCl;}e ztz)Bd(&S_EW1i-m z1+q12-gLp_+qTwP&PKOp$w_&4P}zH{S9TTQujBM@gr_1L-i~-lvSvZ z7v+XBZo`H$jF+&X42?t^%IK9gku|xpxy>%p0W=@OqKO;I@FM~{Nl*Lm5s{Anrgvfo zD45oHE~SXmAn;&Ik;uEn%a}SL5BE(4Lv0x1Q8e@4HbG(NYVv>o)MP&9VE(+S>DfOO zdpA=RoKQQYbkFFE0 z`GxM?rHATnEkvowqdMyyAkY+1k@{gB87MC32iKFj^71&>Wg2L{OasS4olFy*eo;TT zp3)U=k2T2b>j&2pT#G{hki66!3h;THV0m+y7Psfy$!oJ{B(DCjY66}f%pv`tt><(_ z8v##zJ}Ygh1Y>_jZ+LjXCD<3MD{wKzfoZsyY+VSyDCEauVNFW2_IG4Cn7SW`8R z8$js5T%&M#X4AJh%#4?hV0y?0j-93z4J!mxr9&O0w>yL%Ou;_ctdIp>4S#!k7 zNU>r7()nu3K%sqAx&avETlOsj3w8iLBk&m(M6(>w4<0_PE9eG~VVL>>uQV(;?bu^~ z(j`cnp(|g)&#T&x$zRfBOXXAAD4hfj^}Gb2L>XrVu(RwV!6q{Z$O#mH!|0TteZjia zpyG#_R?v}tsYS|PXy7yrsey$W911i)M?(;ikNQPpsS)r6CGu#&JAO|2jOA*vfO3jD zs86fxr|^{>yuQxYM3(yIl)qW9`v{(!zYLhj&ct~hm-C-G+mr?TKG$n0lF|UX_ zDSuj(4(ND?`Ao^3#1D>hB#tl-I6TW*yW=lmVB%BdZ=BeDHAyO?Oh}V#kI&gwY!6}y>aXI#4P3*8-$ zY1uZ6mz~59>fMfIu$Gfe=MaZGHTW2Kz_R!~;zq1}Q-2vZ%9xh>er1l=xBNZ;o$t-f z!uO6|#MJqFq`?GwfBm2O)axxp5KX2`o-sau}a4k}kk@`IsbWod(wND00t8&Dne?Jnh z^IWwM{}NI_*R#5!hMkVr1+K*cezoTA&c+@Fmy$jTIn(kn1z^m-Dfc10Yi--x~F2RbqWCI#tQiXUrqSEw96%vN5@c>Q1{ z&HJHvEAavki(HfJC2jS@{%Q?Bn&i>w;z!zuKJ;N==M}N?GBu@nJ9-NTtt-nu8{}#2 zOlloeoJI4Ysp}Fuo82$yzdD^F`vH%2yY9Nw;-h+1y6yV(XncCxb?LEq`_Ajq6Y+Kn zo8aQ@9h@KU+pE%ht|yP2DkD4c_37z~asp|=V6@*_m3`{5wJJ+TE=y}qOGwg(+c+CO z-oBIV_;9 zS?Dg^>cCmVVkrRU@8ob0t&~5QW6xZfr=3c=1-Mu8YqyE$1VBev9HVL4*Qep+R zgD#d|HywPl2pPk#dli~WCFk$F#G}B|+&POV@#z=}&+EL34xp`0XaA-`q~fbEpO2=O z0NbmGi>?Cen=~u>_ImzoqbnQUqLkpByesZS!?11|P4d@;IG`zzM#nkpiX25nsR z*YTBG6y(Yl6*~GHD^I7>A1%_@vL{|Mha&c;(~Mhf>0s?d_RuwPBcaG#lHeJ(&$1st zYaJbJq0_P>ol+l-jp6#yO1KISAIL{`cSuLV>tnEBd5O9GM*sGA`?ueWw^tB5_siP- zOYJ~|G)OCS7Bjae`nM+$0X$_Yc>V%EZW~YOV>AcxBjM|bYG63sOoIf!yKOVe)pl*I zWL#v;;LoJ~=;&0YAR=q*ZPck@s$#@&4PmB~Z>hT|-NeFZ`f;DyTwEs=asex5*nP@^ zou`nJq-Syo{s#A{Mj#H2If<7>>IxE=fUab`mBw=tmCCz@@g1xEgPUDNP@o)vyR; zZTVnCYD(WwkG^$sEk?#5!d*ty#Fhj_K^8}aGNjT_{e`8Lu#lgUC7zEdH_Vl!vjiZX zQM?k&u{DA+3r()^uM6pBI6XL~n^~qGav@kDS9(`6kSPC1tp_Oi5RC5ZI$=$SZc?lF zoW@;8qgEP);VT%hEU_y!i-nuctBBeIKDd92W5kL=O~sRwvz>zLqg-#$ zmFKVFdVuSjx$ftBqki*#BiEyNpl;%NgzHvac`mi_5Z9Zz9^@*?aftWQ5s!|}c5dN% zgzK%kVvt><_xyexSHL0-_jYcdWOwQha($HRJ9MSUwOkMI`#N3u{SUeB=lV{r2O0Q3 z(v|oBnCqudNB;@eb7-*d;)=Jp^Fv%w*N7JE{8MiC@TkM}09R>p`zU&Sx&?Tx!imOK zvWMBoyDB)KK$0z(l~4m2$db-Iy5M<&;<+J{r}&{UR()>OqXTJAV2Bu!Lq;==%GH9si?!4Hy2osfZ8naZJq8}Q3};itKOX9Rp8%hNgy!S?JzkGVT;v_lf4U($>=>QWXiGuI4hhU_7$M?6osO}`Mcc|eY#aNldpt4!p zQleP=fWpBaMxnYoVW8sZU^5d-^_p-zWcZ#p<9g;n1G(5X4YZ4ADmzj1vy$6poKCmxuAAmyh6HH}?6^r-#$P?xy{vRrDQyA9-hRF2D$$tpQvN8q7GB!N z)pu+0IVfpUgsWs!v%eO2H!iTLck8cH-JtKr)<9V6t3M zkY_@=9_*C4V$J>C{5^=8IsM$qAt=bN=QiaP5?$a6&O%ZP?xwiY!8de-|5N@Sr@czf zp)ahm7-mS`O0h=U7jU%`v?AZltG4FjyNNRz&0lqMp6(X+2+~R}f*@WkS3?920Y1uN zMS@1AO_JlXQ1Q6y>!zi=?c}^6_Adxq>~s{&cK41j8=J^P<%GvP%({2#VXgb__>lBe z%8@Mv;79VolFja2`Cy^#_C29zpp)+a%>3ETXLLe3GylvQne3MdKU>D z$_%AncsEu_E)S`&04h6$Q!mf)Rdbb=@PdAm`9MxTVa*9$!38=0Y=OgqIMV*VjEVed z?cFzF9oM(+CJJ&#en)>KC_@8{VuVO78Y~ajUfKcdB6ncNE9d~k-qSY}O92v&?~=|- zL!um^4dDPK1^_3vp0yz})2ZI#+ItWJe0?HDD{nQ<=9_B|F;9KD7|5Df^QpH`RaH?V%i;w5VNXZK|La^#e|S$ATQ zy3#9OX4MEc;?0aDd7HzW)OG0Gn2T(oPn@TY5%8-O@Fl)1A7cmdc>ChV#BJs~K9X<$ z$eq(Fz)43WC6$7#F}6P|030C>hIAnKF(J7wiy|mBATb;!ER63%V2SI&ge#$Xg^1D> zYLTii=noO%g@1WEQA^Tl1M$R79m^D6IzW2iMJ3Ou-G-diM0cY3pU@8>pw0pt~2fM9ez8LwKz z((i-us-++O-roq@-+n;3xdb>mMO~OzGdo#nl*rf&qXx6RxM!~J_~s_n)1sRMg1Xg+{W3aG#+VZ^wC|Lk3<`BwS!Bh{?)W zCyUaO)~mE0-_UMH6O{75R--DRHjyYNyWEeuhq;l13#?=)|4I1>&xjuNKIOAk{wgid zkxLRE3x9);rA36>rkuoxsyNT3y+?FqUQoQs?z=5fI?NJ04{%HwRcPaQ7)>v8h1{?_m`rHz0 z3&$DjL4^k}HTp;kdcg4?!a@{?_@K%I#A4KXyPNzXtXky+MmwDz54A6h*7H}fLE{!} z{4a|r-KJ(AX-so@>%ropT{i*u+FLAH6e5XSc|>8nOnmm&PUJTHw8GO;um*HQ(GUKD z7Va@+NDLktby68jb4MEV+!jUL^MTp~tR1x_!NXKZZg$z9ux(s(FnU{@8!}7!*R@JV+MTs>tHa3IBQZhRb%UCb?RWV`wOfACRg<%)t&9{E?f& z+E4N$|fdqaye^*h}tAFB4kx29PVcxEpLhQ^$ zGbsD+@uE72yWk@#zVV6A{WtPFmE8=Re}+FbX)-G6n!;VJBVy>b97)dJ$ymMQ`MCaO zk9T))f(X^=SCb`F;IL&2yTNssN=3lM-K7fA52{f(;A zqM;cd&ELfOn@Ss=0=1s^I5SkKVzq(<6ym6&WOvMuQ*%7YG=_n)2XYr9H#-Mfu&~l% zgcwK|Ivl0`YR=l)1(9&W@;kX~bbJANWDm)scuTkR|3T))%vH+eZC2DO6h2&3kzm}y zISbB=5<3?o?xvA7x8FWa$Pi8|fPi4)NGWv!<<|WIMO*5b7{K z5KubxVKn;=0ruIas+WYCREJCZbB2Uxi9sMneA}-89o!YvRRJhV1#yfTp}~ixG9pP~ zdLc_797lhG+fbM|(D!!!k3;Wa4{83726_sIbwjBdO5Kp+p3YaDL<$(;VF0RPqsGs9 z&;6b+Q{h0*1#qp}V*YF8o13`^?)2@Pcs$VM2=3S*V6P8=n|%Rget~#_YA2De4S*U0OkUV#{{SZ4A!sHFeS9H z44%gIQDr~&cTZ<9b)M|Yy5r%yv-(a@cP(dPEv1c2hM}Il*z>*Njw1|*=skT`mTV6k znK4}Qz(hdeyvR3Z_iH3xID1Y0W`1cr6_!}C9|JPFWWT^F|51ISHRl`h*HB2TDl9YK z$S;SmhfnJLPmWE1sw_%)hkaQ2Ub0KjYV+s_L?&Q}Q-cx!&m005&;{=7hZVR;~;J_3XT zW08zUOCUZo7Rh+D1mdTLfcT_=xPLT~G3F20MNLnSMlv2Pf%xsL6Pb~{TwsAy-f*pPpmh{9#(7CiWX{o-l zXLl#c!oy3%h&3DZSfFlox+-h;DC(hHC`XhVQA)Qn$WT-^1;#Dk$`TAZi}wU&hiw9W znGfYP;k+R&IckexMY1q#EgY8_p@uD>*ls6*K@X%kXd6nfN`h;O-5K^e4((2&-_pQ` z+AmnAB~(Zolhg@1seIh@qSqHkYjs#ijC~og2QhX6DWy(eY0wF!4hfxDZU0!4_#5u< zk7?=BdY8MPoO0-ta>QvTkz{$?(O|&zcQjNLI0MrT(FLyn#uOcfafh$t&<4k}EPRPZ z?ZY>!Wm4BPG;Na$Lu*9WAG=;Xw9@#Gw$cE6JHVDOWK!D(*wQ)MtOKwe_dNG(sJzjK zEp8p@h3v9(2ZAajvonhwz=$30fMF}+Xc25vtDphtdazwq`wu#&aCA=37BEF#&kSK( zp#p+8m?7ybi-|lEMu<4Y&jLbW=!BhfvQ*LX(28a24wn+f@-E zye`F|G%-c%*`HLqcgwPIlaWurf`@7XOUnEdPK8BZzgp!YSVzwSs$cTB+ z3XRKuBC3J@mpV>tr$ghKac#3}MVo!JGZHK|WTmX^{X~s?P_Z`(ANgeE5{y9*!s*`S zlIXsWj z9NtdyvD_i@mve9oLsbk{eg%i$3> z9TVgA$p>O%|8jD<;|rFH&RLgp&@yo+Osu0}Rx(;S#6Cb~>_n5V_QDDV(!=mz*ZfClaGpLcAo5}p`dbo=Pd1P#dC^gOMD(K$M zvJkw2rnO4pE30qP%NbtECrRX?qC$xOTV2#2>|6mv^r#-+9Mm_fk23#+~*guzWJn2WfGYFeuzk8z0z3@ODVPf&-Ga2&mAqV1t2m zI7^I+A~p$_tD#1b39M|E(y)hFI?(EL70W2@j~J?Im1JGFnd1m%`ADg#yyB_N&}}W| z&#MeSGHqDV4qv!M-sR7(&L+@1tdI*fuVL_x_TDd+8Ddc+K$$~9DP>&)kwLWG&y8Rm z{tR9-D~MCt6eLe5tn=uU!p)}u-gWdNe+`t5=byR9cMLq_axQ^XMRF3QRj%6A@^#*F zbW%0((2IdQbcy47NO2MX$JIkhNWIqPBx$JLKF`(aXwV)Bp}E`*SH-*)`w+td?Gs=| zFW12K^g?LZ#k)|^Uf#hiHkV7BF>*?tCxj;MjbV9Q&>ILBjA0PK11ic# zB7_DB8Pa4T0xfBMAX0urXjWr2!&(^)@j(#sP5Bkl5&4sJH_EhNov5>w4h_O&Yfx^2 z%%E>M2PfR@wvz6){3d<7;nsWu8!iMf7`3{8ODu3J>(&YLl;51+LYZy(t#ZX|V^<|s ziN>Wx;;``!R5`(lQVN%)PRCEr<@rt!g~8m&Mx;_}8axn3{3V5r@TL8qh*1BbEl+(xdPftPLwAAey;_3l!?o49#~lMbmY=H# zy0`-k4h`J-Kf*mwTQE9A7cvjEZ4i#I=#(~QD+V6?3Xx21Q#;!g!1G3}FIS3-M0X{n z<18%cl>Itp0@LE&Nf0sv?95f^h303Nw9Y3ZTZEnyUlG`l%@-n`bPZA7m&=UN%I#P$ z`VmJzQi)*ThqCY|T8i2ujTSS+VFc{;?_E-Ba()shg&GBHQxSA!H<}^Zi?>U;QRg7aM?3u(=Jb;Wn^^i_0lM33|F2k-nDlyN2eDSOn*tO1T z;iB-Y(PH7RoO;2(IgbW)OH-%l>0)7Wm$gx?YBL3SlW_9S-f$w(Ni|?$h`!9zw@eS7 zSwjRJn9Iu!qXs`&ryxfMS}1;jK=av8UEggK*UZ{?mR7fY<;w$lR8xS{V;@lDZMnfGr zJ=hTte-3jS8-^t$SqDsX$vHYBq2D(3h|ZCs!_MwG+G9MYSK1>gZ&?Tmkuk~oc0+LF z2p4K0U<1<{`%P!j%0I;Pc#q=oan$Hg$7GQx62zD;M+AWaw-CA4xQV;!*4-UqIYN|x zaJKY$N)&K5ATb?LhMQI?@*7Mub#ukXw2oSrn?+nhvNet ziIFmzui7?k?y*W9y+lXvamOhp11?3gnimE-?_t`5KwJp;=F{*hRj|q6DnvGb>^3E3 z<*Hx@jtR$73Z*#{iZebQRu=^`jfNU3RH$egzQrVAQ1C%PlDFN}0c?zY7V5}3)up2D zDn77^P9pE_b4?*PA3Jo`P!_0G`vYs=hd5*cHbd386HK_TWtT=oMaQR zxO!>sN>iLs$b0}&>x67$qUi}Gd3EzaZ;$6+HTJIE=V;!)ra!bjrg5C^un-`pRz z`SP6eCVT3HyYij_GjF5<6x{aDOfksZSoA=3pb%jqe{r_w+1Bw<=7D@qLfaTRlq$@k z2N4A@87NBULx==p+Ncd?8e0hRu^@4{PX%3q56Mu5ze|4(jNlYXvqvz=_$)XTDq=4} z7v*E8AIiWB%%t^7f?zi%0fPgpiGxFc2|2r341o8Os5ivu#3a3>#sULa+*j+9efLMt z9VA|a64;{>|6Ynh#!?LwqM-k$ExqDNOs^D&BGxeJLdb3^l$;eFMzjK*((f6QI7H?A zcqB{V{CMPi7@`1Ul1M<@LMW6hi$Z{i>|p|^gni%}9?{C)h)89(dMWdm<|s)qkCoG1 zm?asr#5~xloUe?`V`XF>t1%}QF%LBg`eg%B9X~|x>_&lfZlX%ih%|c11kuI~AHw%~ zoF9j98Q}~{9Hx6iT@QH6%lXVDk#f9Lu&zG!%MbKlihe`sP!~Tc`m9Jq!yMZqbhRgY z;0&@#BnwF%nI9ncBp#PcdWemxG~hOu5C{m#3mfnw2fu|Qx;g-fHWYSJ=euw+W>rL) zilS4c8duU#i(2d&p%g9-qMdz9eM=-S0Ez@{Nlew6N^^MmoOK3AbEiAMAfxH)^tG@e-Vx=sa( zX#1525B7(=5f9ZSCz-!EP~|DYp`;mN%q2msDq(*DHXC5y)C6drwD>pdebodg5u@2h zi@m;LVO2F9876;HA^$dZs6?ARc*)U*%*&SDeqp!xGFNnR@W4H;T)`*6!7GifbX?iJth9a^ui^O5Sja(vX0d2NT z&MGcbBp%_CbuQCoO(zGmiIVOF2`;NcDPN=_&ZEad8_})Mxf}o>;vg^7QQ7tb?m;yo z+(*$+gIadMvnnUyIQey6N(McJcn0LHgInS$MDxQ_$i(O?&4*UWGE*{*U#@8o5K>lh z$mysdi&fGSat0X)SX2M#q#Q<{pvfD2D z6YYT%bXCG0Nc!RJQQp76Lwg_@l0A@o$wL1k52Q2{jS5z>j0bXBJJ~lvKmmlL$F~oX zzk@!=X)r`ms4N6IEL21kNyD&rA zSCH3Hix5Qj2Nxuxs^Nu%LV_1kC(`&B6P^WwU4HKK`yiDKVb}+0tDUFvR1aFhpoJ6H z7{!-#S;J&sTFbw^2HBiyHd{5iKeLq&4exs+jlXj^2(#=ykd3N2@xxyWy z`#pc;2KBnvoyWL1s7dV z)47xP&viExNzVVvxPr{tAz-_L>bQd7V{(eTNBjTy3IKZ#%4b6eyj6d4y}t1_875mX z9gLGp3_G>^OgC1$V?K2>N*Kk ziKvc!2y~(mJab_Y9u8|2UP?U+hObW^@xuD)31Pidi#?MVo0e_-cyU5g=1kjqcY>Hk zd37{OduzZ)0=^)siGflJF7-mcl+H2`0|X*EO=is5@cC+w^1bl{oF50jiAM@v*pNE8 zCQ{(B3+5I11z7+k5JK(~@yUSd%lS_DQsN7ic}Q9=;nirnt_R}s^JCKIiC;FWKk6T_ z_;@`MuZPiKQAK6N%IiR1@E?ROHoOQ~%imCtvCRj>_m-W*z$WLyu`bbYqRS#o(LX)M z0j&OeaYDY7MV_Cr?3qnKi8a}Ba-^8ar&b?O@99n}s>s~1CaNlfXfn>~t#MA5;M7CE zu6sojp9#+}PE^E8@BRC+eadelJdl zwE~H=MvrshXE9H@0(=Zg^sxQSf*s6h2DMYPGJ* zeFa_05%8mNqcvW)%5G6?MRy?PF6j_-aku{HH&wF_2!vp%+c=fK0kH$T*j9}bfIo?l zx9_j9O_9>4G+(LNwo0mEdM2 z5&9{Ii#!_cXKT2hB_j*?6E~HBrXlwmL-jfYRT07mYTJhJ>^#>ToE=CN3&W@IUHhxJ&%rjYM+pHtH2noE5pH}EmUBG6l~6eqFE@DLrAmj zTFDp1t{T`<6PD6#l0b%7yT>uNkm%mJR*`3HM!K=I0J@G=mQ}<~TQCs+eNXBUa+h+RVvE$jD zOi}|RU}+@#7vjaPsdy;+7ZDqxp0ZYzh1dW(QdTCf7XZCLWfUH&%;P)_qY!Icz@H!> zqhGQb(9n@B{B*n>pkAnHbDh*t9N>*kT2#HhXE_BWalVKrOdN;_b3w(C>cg%RHT8$$ zRYLcJ){usbP0^Z?2x_16FXg-*mt4RK$D<-RsA6Ssr_7*-$*PzRqZ-p;R3Zt=VuD)^ zaAi>bJs+6HZyp*P9S55?}Iy$_H)i?=qIti}{6Cv<2=}d=U z4?0-VYeecGYnM8_Dh+IjqT(s^VG1pS;vUtpQN=b0_!{GjqjDF_qY@(sfciJamHZFy z&&}hSZ61?05*{${8jkHx_l|{%;?JXFT_P{DvPtSvNS<7KE`54TQB?~Zf`ay4K76DV zz6oJ|YMF%X26EV+>vMGp#TLePV=Qz|nmr4Na^=3(BYr z{NxNS{+=vPsPdwMNZ@Q4FY6=!6fh|@kzjcsD@gaD9}eLXA&$pGxZLNU4yrMc!G#-x zP<8A)YGBU-*BVz%;W8{d4b zGudwvmvJ1Ql;GvYhdVotPV+U;Ac>tcxFzk8{Dy#~UVE8OJs%uliNT0CpSF{)@(9ED zf@cmf06>Zg_=e5{6Ok6Hg(~o`?^=Tep9M)hxI7>IY-jfkNk`7$5eBm>-~A5vN_vauSG*_R_47lR z0>7V?Ug9OujyTu8N~de>pgQ0TNc)Gtr9K4COJxt|Q;HH;ZS4;>1#q>|(EL$zJ1u`S z-fNy~2WPc_yR;q|`lq--u6CctZ3Qm2(a`32E zBiLrPF>ODK!(AEKt*77pxKwK%DOT$EA1W zQ(+~9YK~-abAp@%W@`4S*Se!rj`}Z{mHtQNfs)`Eq)kfTPO$ z5EB3TP=5zIBVq|9yr%x>=JV2UkXIsI>3$GHa6Hm!4nRx`9e~Iz43gzyax4!(49jt* zNhF?$M4D8EZnNP5OP?MpnMrv7Vq6b6h!x z`iCE)p$NIGf!>4yhN~8>V(V_g2e?HHZ{59H2mFlLCC%Cgc9~~LK3RAK*`>$O#S~0( z*ta-C2#u88T!aJk(j$H@Q&%5w=;0VVM4A!M4+gN-bU2wl6ga8^UhGtHGE%#KZjUoF zG=#W3p`a^IGr7Nv{+xa&;|3mPcO~jGPz>kip^SFH}gWj;^|(56i<47hwv<#$sgQ zQF$05qz81=7Y;+jWR(XD=&GMQkYo`k;L8yd95RUKfZ=)3O=yJ((i}(Mo(%w|NGZ~R z7lv(sgCI8By;wG~CRxktVZj;WFpHCuB#3TDIx{y3>Y4yl8WMDL4nFFpoi3i95G(~c zuvMZG%>?@=SE!_7gz2P%yVU1i5qB04^-e^TzOPkRsH1lxqR;R`#l~m|7^kCFfP!`e zu~Niq85m$Cs%Aj7P>H;>WWnHJ8TJV%`4#}j;;3K#UY%ovYS!)W1=B3gFTnGWsHO$L z1=v;q%;p?0g`xT}&ICb|zru|b@^cWPG{>=${3^l%3j(z4gt}12$uK|^IdE6y`d(6( zdumWIetChW4}RE|1vnD9Kba^a@#I8pO7UE}LUrR}y21adCc#iv-GU_x<4Px@D7#5o z*R1oNMla^s#oH*&p>?nZS2nOYxFWWg>eQ;>A-S_nzL#F$7Q2%bb0l?u^HZT;01H}r z0|c&o@Gm%SyUGF;&Nq=JtF?}lfoTsmLQdR|esBo#kcxm>xIv1hPf+B#O+S2sBAg=F z4~ThtW-L>P9vhb(qMC-Z$xarzFe*!*`+A=W1E4akRG0+^@3A2+q8Zk1ksng3Mv*#y zzA4U7Xg|m_e5K=vk%WH%Sp1a~L5+^=re~H%f^|{ILxByxAADZHTZRLRF|+T+>k*1> zQ4oLvOCf81%v_G8QewnP&PYjAQei%8S0_g)rj;j1Y)e>O zh1`^FXglY)@mN1<{$WB?x*@$$`)!uv;(RF@mkAA&sii6Lm3Tf{2xuKXAI&g~F*&`7 zcy!I|h9rMmJRWZ>99Rcy=pT?rmywbmVj{#$E5$+15tC`C6TGzF^hJIX9UH=$lfdrO zGZYg_3jjeVmFIG)r)8ftC(kNl5;q$wAoX|-1E?~zC06JbQWvMT*c9M z-R;kJ?~AV4_K~MLvw8Vz<(8*9bNydOly3R&33~zl3zaYK@9fO)(?l%j{ywJrqB01l zm0vV_wPMRHM0oBq#zGf01$1*R-^p|MVy(>GT)iBtLoP16a}?!! z_w$|mNfF-p=K;yoOj`UAjBkrbPQC)wjCW!gpYtpg_tQn+zkl&*U*c-#`>vlz`kycJ z9r#ybw&6Y+NA4v`V4{~71%mtmiEkgBI5v26A`kbMM<G07*&qZ4c4=*0Yd zCnxHtL!{;_J3+BLBk^Z-TBK05?j!F8NCqgEg_azoC@R}Oc#fh>X@di~ChgGB;*x*I(p~wY>&q@p3 zKFGxJ8&ye?b`1;~Z3o_?yB?Ms$Bm0jW%$NNgtB2jJIFSA!E<3vwlhrRTg_zY7*d~k z4JBFPe&*_Yv)Kv-9P;&Z*&nO3XIA^f%(tikRi~X%m$+IE zf4jQnXM$x?>=PPgcgg$@KaT3;_=#d>Hs5R{o+viY=9hpS47k`hoBw^D>JZTlvpM#{ z(-l0{N;}8GY4+}}s3M=u->73mvtPX^y9?WyF7%HAwMt~n=i_}~Y^)?L=C4LTdyj5$ zb~CrvFr2hlxLOLuwdos~#4U6A_w$2F{ViwQ&*uNY4_f*63!aD_*2MQdB7LO3zaIH<|}da~h`8eOlTYducLfssa| zUHY(>Ent2~2lv);Y;*)wYbC`v+An@9#i_M6DGoLOYmz;^qU+a`Shu2*^g8f#zb}8i zuGMszPc`DrljY66^5)To>f9gd{F#~II{)=Vdg;TJhd8)&UdK#sAo6T)n*C)Z-7!~SFINtwVYR3PXnHtI+_ zrUxHgpS`?c+$^>0zbVz`=Srd;s-C)n6~PHlC|u2st~=-GN{p5Hp-a>jp?l5gIr~15$lot^vd0XoSNNuEi0|NuVf#u z(>+e!u4TUj55Q7-uF~=KARbpZ*m!;kvOj$oM&D-(347g!ChwB-&t9vWb~>=Csku&9 zSU~m?_(Q^RK-(oz=u7s*xK;^q1?`ncs6g#VY=K(?wRX=Lc^*8;mcroS0&IZjjh&qT z0l1C00R-7az^7broe4%Ukxz$pjt#TLfnL?BA)m;8%2gBe9;$|U$WSc7I$SkabEZKu zVXiMWyq+V|+;n1*oRvH*dw zkkP{do4lZha6lh)*?Z4~UxQ)Kc5HB9YzPM~69h(#17u;05Wq|w0}DpLg1TU!_uvk_ zS%d`yKh=T3h*;Se#mvgaL~WzuXDtZ1q*zeTEau|;ax|aS#TUPV?<@QKjM$?y1BpFq zy^7f!V9A zCv62|utUw7RzpuFi*p!{acl1?RWji+6QRsXo@guNem)xyk5>3mrlM8-SqnpBgpxC- zh+MMh(sPouq*4QZ5;2ct#MxfOyshSlsTd9kx`;I-NC7AZqIg8Ngy-M-zr1-5r zPm9l{*}Zrt_(t36RLnT$vf1aHb86sifftl6P>LuEU{33wT9vL0qWMuoa~;wA`xed8 z{QfpQ0-iDIT0zQ9?_{N>b1LN}kR+^;1k%h}cGmhcazTO>FRr2`@4HZ6K>3|w^mz5Mz6AaIai1q2d0U;Z2?&+4!N&v3%ofe z8}C>?xqCMZi(D|RV)EwQ%I6?qwy5J0`*d8C5;|Hz`f2{^QLoV$LLu}TCz5u#o^In` zhJ*+0>XD#iDy(U|1WSE+1|ZRhlXDq74I`ZeZET1Kp=)|$Sh}<;=TX`5B1ODUX8*ZG ze2+1aI4&b(w|0vJG#vefh5=FQk3n#To5(3dKEOkj`GP!w1mf`xdSehcFd z{B}Lih1gV6^+iI+elvW=>{YTOGxAynPpGCq1K1ppf~YjDe{M&8ss;#n+)@P?^^=4+ z3RrQ_LXWgKj8^xh8BKb?ofG_iY`uCzTa3W&6fh+FjTsMKFS_V@bTAB_gLSj7VeW$k z)&Ai1DUw?K7%{?Y@P}vgU8vU&;Q$Q&`58%X4gPBr2xa-WEfY0(a5Ve1@EICrE&Ejl z59sX%_TZTh5e>6odg`wB7Q+04x670Yb6e!uZ?(Ef_SFfLeJOR3@)SC(;u(cm8Bx#p zlgP3-pxIJ{k}L|bDX6kno%Sf!hO0!^M#q-x;3&Lu71x8rMopQc%PQH77S3g3)F3aS zzv41~8}^c~v|U-r4qrqJBB={tFB3%*= zfj`eT7y8>tf({B7!>FhU%tw%Qd3#57#sh&s#ClCtrWX(H_x^V+4oJ&?UWTa;p za?L|tm3=`&MxFJLYaTNE$cjwOLnb5L@Q~3Q7~6%%+ng2~(|EDx(PGS~d*dDJkGIwv zFSHa!TkDP1bhT)-=p3~;T9&vpUWDElWFe~o2{AT6704~9g55vGg6xGzL!bd`eVU<~ zAd(cPzh;$Af(td7;T}MMW&cTmnh8pvB+X;%nIMVvlPTBL*Hu|FO$;nxVPGW&)_~?8 z@B_&sS!JD^f)PJZ&{3%aeh{6qtveCn)y^jjFAK6ByqbbnBWisJ(>96`a#CUkhP68T z_0KwOW(tc?MfbB`H#Uo!gyxYZBzLjKm~3vO!+Lk3YK8e$@35cTv{ zc#RkfUMF0CY4!{TUG|$TEG^VYTv}2p*=jP|84K!S&5x^kEX`3Xccs3Wv~Ed)W|*Lt zJ^E)?;NlP70z^PNPj2`CY$(4DpziszD?lP5@BZz~B`O%tu|=zdC+cnM;h<&abKM$R zCaxi!l!!25XD1iXkwrU6mUhar58GJri$`ViLp^2lDJh#ZL3o{HooR}%!NuMux@l)0 zSV<8IfEkp}rDuL~Je_Da*@6;tNO7(E~ zD&AgWB~2_oW^rpFuAp9vW-tXC__lGM7s0~`byjIhSW3_ADQgqV+u*XnXA6|3Wn z7+y5853Z+cjqG2pe>Sf^>r_x%-aXEuk@AMSj*{D1u$vHH{*35L!(P6K)@o_z}|{7#Szt^Lw9fG zHYJ`11!3#B51dSekf{+8#)mWw>#J|KEk}(L<$5kqsYs0hD!1W!C?;-IDwqj{}n2^~r-$PznB;KDMH)gtQ4K$bw-<+}m@qNz_+2D@?NP&djFf2ZA;uYzK9 zgabFn`tToHGH_#U*bGu)7AvVs#_zT3LCiYu_+MbcJrOV8FjPa_OdqAc*M`;HF~-YO z!ki-^vg$*EJJaT~PrQ^s6A?3ypv~!vv*5($-LDLh72I>QD zdI6u-crX!=pX!{Hgu3!#yR@A<J3qhET4FrPX3G$h=dLj zjpkq}1UFZuDoPX%QbT+p&fuNDyuP~T;mS{VRpTI=lyKe@PyBY}dtTL8BlN4l38PdqP}<$$>Tyi$bOUuast+h>ru(5Han`QRZN8Us`@j(@^BEN(9pH%Jrq8rV|(zt z_<=6KrT^d#9=s4AP}?2q2dGa=T7Bx&B+si`Xid2&)DBB&syPX9!z7#%w%;xzMXSD| zlqx;LvQLU*BtOTH5#qj!0;n$AxS+_~sP5j=ost(aBo%z9qqN6WGOgsRyk01x;*sT7 zbHy0C0eFehB}akME08}#-KC!@h@Miet&MF=KEa+e2UrlZ2zgQNT`=mRne|m^UXNBh34peH5l?V}qJT+nkebDXB`G#| zz14DhjENgV3xL&VGO>xoqr<Rm3ADj*S)ZaG)Z7Evjf+w}l=|90TgrO2RDJv>JY&L@%;+e(0u0v?pqyJR#!O7~$!dI5+uG3{ zVV{ez5z-Nx=Ci0+`Up$MONHGXRPhvXObapp6Lg<2YT4xJcF-vH0XcMYw zA*|9Z7h=$l9!Ud-hMZm*8bg7D1x;+73PLaYLC{_)2Vy}TdbG4L zyi>@~0Yx{`lAlYKCe$@ZQy4c0h4P6cqErdY2+-tswO(AxtjlchdRWr$(_r5vsnu?% zzpQJpW%Wodg+6_UcFQN{YnNCK17>LW=NWgh{J7@>JpPVG9cy1Y=FpqJ!!a*ZmmP1z zPnV9i|HQC{HHQGLILEbDGRL9rp|QqZEFEY6$@$t_c5Zt(qOXK52WT$pxvmIrpyXji zTZmDA4>V?_+ApDy9{oT)Dj(vjlqF{I18H}OSZoEJ6GdBIQCMyiUm>koUrO2g(U(%_ zsJ9E0h|7Sg*azOxP?@v-2URFg*k=qNr?yVF=|3*zcaVhKeJ^}_gZ~X+B zU(b$Du+|3CmNtWsLKo7SYU+32)R|o2`L^tLqsk*sTs&f90u>J)!eH1B5ws_4_07_% zaGGmR?M5`DUt<57bhHgzh?_{VC&tjmQ2TmjMW{d=R33u3%ibph(W4FBgdx~TB|lh| z#hUE1BbtZ`_Ej1}n8u`WRMeAuqVlqCMWXM@!ayh@w?6t1u$7?(oMyJ7`6M5qs_?8RlfQB@jJOH15mg=CD zLHyi#fC!aH1IdE!jm{ti%GGI*a{7Lyp8bxVOSymqvwwwd#uIpKMP?Do6aWM5SQ_}( z_^fr=$#@tDp*rugl2}y$1+h(Dk+v|z?I`(g%>7R)6c## zll{R(THeANO&5iDxm3OE6G{Lg1f>rG7wf~on|tP83lpqw7t-3$Ya7|V_588c{A-p& z%eVE%GucyKN_)As93-Q*uo*AhmhlGI5)y?5ZdinIed0B*a9p)=Tm)NQuq~N-A`rI{ ztXhByOeBXvQ;;QFQA6=aRV=v9z`Y6CfPbrntuZt*g3Cwx{iy>o7Ruz4hDPNi z$1fr`4D=!DKtjM;V44u_fUo?6y>5L#-STRLedUg!p%UrJ{Go#Qoo<>XaJW};6+6uT zxEdyD#!(qGXeQ>)YzUpnLudFxouQ*5T-wk@8)vx01raaiY?MnsBFtYqHejQQ><8Is zm$y%sZ@*=JOgIPJ$y&Fk~|D>NTyXYTvpe|LOtn?%sq9fHXk`W=`Y?=do^CR+D`^Q+p0hel2m>7 zR;d^cy0_|bPz5!F!1uE-Zuz+CI&C_~2I2ecx7V}eas@!w(E?GVT%j=ev(+rft}ey! zX9U@oO7@wkZU>Syzpk4Kk-vs(OuNN+hx-Jnft$(!p$jBvk`E1(xGfZw7tKW(^#)fV z=T`UC*>9~6UHVF$@JUsDLz?~mMamgtY@id`ILc4u7{sxL`jbkV5tyX)tkEp%Kn5Z_8|E;JKA9>C~WN6NWnkuo?;O?#Vy9|kLnI@QM`L&?@k`M@RqRl^7d%|meH0^ z8AW+3Q1Tgd`e1K1LNxfjQ^5}Wt+Ve!TIsvVYLIM9UWa^jq%+Q;v$NtOhb^ zQ%qo_bDjJ&XCjh{DIVXLFBuTW4o@^ zh_3j@WT{A}*;m+QqAn$PNj{TmWCF>VG=#|;&H0d-%f2N%#`_q!`?Z6)uyO6jG>cBx87@G9r zjl{`t6}lg2p|K1j8Ps*FS)4s|5#QFLK^y|1iR9Nq4+Yc5WeKBWN~q_D=AX2=|l)i!3bZDo-?`) z1Gdn%Y=WM}U@Ec?2Ov66Xar9VRhhmcf@#CZ?=2>DJ3@^H$KvPcq`l7#2vHgj55fBc zwg%c@kr2Zdx-S9Xiz91k0DFRKe5KPt)>g_Vq@PWprr1O~;PvjA*XH zN4B1Wjeo8X5xPY*?}!Mnbly$js^Mpv{n13ntb+my@CwF~7==`j|Gx}S{a5cbHjUBK zJ>Sm$5MPPMX1$8JQk<0vT1R9^(g%=?Ir_lIrQqpnY%RIo!EVbRu~LSr%mP91H@`c4 zV^RW3V2XM)&HbUO0Bf{)h^J9U@K+LkV10fXMkRuybnG=Up9G;wW zMsQ{!XML6nSQJ*Hm|#ajG!a_7k;1`hv+DhH6|5&HiJ!U%L0J6IA(1TL$SM*piz5QK zJ?-pg)|+GmB4z4L-=BRbB_L;>|7uE~jfX7zQnfqAf&d-Oxt{cuM(_fu`z&q{r_@9- z7HLp(mkl&EeW6UGT-I<|g}XpXGyjO)mBpjGHQec(hd6>U*xs>}?S7h@b@V<|GB6IZ zb-X^|03B+}zBxmB2ddXb6x(35zMmt)(PtRE!0k*3a8t8{zm1vC;%%TQiCb_=^qSgi zKU1q}){Kt=kfn;V9cV4h=vF-PeYig?ea==zo}`_6usbqqd}AQSPKqKo(_-({v+R8w z<0tY~yMS|Uk$q8E@}R>5q^2L>WO$&v2BiUs-N@KBmF8>YM(F5Iu0Lb?12QJXDcY{G z6x-F0Bk&f-C+b!9Z<(#^c><203`Nk=PTK+_oFHW?H|1t~U}(qfGZUNw$b!C`PwAD#d64 zL0^=8>mq21lrD2ZW1V`oiaW?Ca5Zp+K*;}tHkBxZ@#=AjWujH6hggDN{|4m@O>G%zYS! z?SaL~h33uY<}2AB%n*NSbf)k}F5AAUe@ZuV*Ht~-ykhY^FGr;Oq3V=*m&-#JDC*7c2ohRs4*a&~9>%=}8Are-y40Np*XEAaw<$8`2?Jwi{%*xr0IKUCu zy$FBr*ettT*>={L?YxTXlbr3QMp!hp8h?hvuRy8d5cvtnM&l5Eroodmu0@IQ5O!!$ zQw0iLZ)nteZBN!A&G06r{Gpf3nt2oYkR%J}LBNkk&`EFjo4@(y2abgGvaqnxb$V_% zP+8hxa*Ap!t0`3vzv!29t>ruYc!zYS;xK$=M1QmYA;&~=IF3l1 z#xM#Ii5S#iSRyf4A%X}nL?H%5V!(i>qa?;S#61zg1k>$B=J)@fbMJkxs$|QM?lt4G z-o5vH?z7L{`|NYhKKq<5UlscdvRBVjlEF`uQTfU8Rk0^xs^bhoPnS4wCjBfhoJ_Xt{!JYcQwz7Zxf$dRLbDcOS#-5*1bjesj=d*Q~zDlgXq z5d0`IRe4WGfpyZMCt~Px7|e#L=D7&EThV~Xa;mWeiepT>IJPWP07^Q=m%fiX^k@uy zN{Snx4K2z093qn=Q@VVaybqF7-_JYrbPPSf6^5&Ke)QFeTxfSM1tQIKC$lv`bPgum zXwB=gSEe7Yb>}%uycZ`nUF%_7DLemeB=Zze@0QcJHG&SP@d$aguTf{jVi#On( zjI04*)$*;`w|-bSKj6MUHWGsle(2Y^-X5dsz9i3?JfCXxCAln{&n|o2`rbzO;NFD? zdY8(FBQ0R$BkJ|KWv?__F|=!$ImAG)ENhlhj01u_b`Qye5s8qQ*qcJT6o|i%^>Rf! zkH0>JV1vdqW+*>Yr97cIu2p?+S#QqaK0=fl&{L9n#*KA z+T92=o;i3@gJc<_+^3gAEr-!^8&bez3=o* z|7utVA}@XQA3k=&cfF415C8BFU-kOiWqDL;7zySAmru6t@g9~U zaXAmF3JsLXE14_-jRXM|NYVlj+PhkIPhsNrJgC-0?m3=F`TDc*`joFh?hg zURgK2SEa$p`}9=nm5Zh`i2M}8gi=j8125Aog%0K8A+c|R=a?ocP?3YNvlXuNR@40}J6( zC%bxWjlH6x{d~;D4?R?Yp6ZtT31O*7d6JI}eJRD8`aCW>LN>lxkI|^j0V}bBhj63= z^*-C~UCbs4*FKHCS#zi%Xk|3xYcU_Ywl@>lSoJ}g&D)_!eqyL70-Sa-3Yd!-+93m` z0}>erJZpQB8wF$d0m9W{xu9$HI@DSC6hrG$>HHAtx;vpLBNZ>eisdJU-bZgTXJcoa zHMuq|lyM3*iXdG|XeZ}vZr3rpCE&TtP@Kw)z}@Hd(xMbAI6_r_^DbTyA2GDVM}fWn z@yI|{eAAEt1!Z&DhA?RkT@s}_cB{e?o|O1~oZgM$Sd*Ykwo66zNck#KJRC{#pvAj{ zaP%f9-)>eNxr;J%A(sSQ8)F*&|?yJIHJrS7jCvw(++p(wii?r8x?&r*dHi z5DdJc(y0$_U@ey39EUJvqVPuTGsLkTZ*fRVO$0THH!#pz&DkdfUd?zeU8>nd!8=Ey ze4TzKT<72Ebv(d3{$7!^_~nhm3t7g2;z- zJPsIVlP#!_8l`w$;4by}$}ZpW_&ST8!>b2wkD|OYzd`GkZ3fxqumXr_(TNVl*G)LH z6Qhs-HR!auQga&5gZO2fqy#3$cK?K1qP$VRo5b}JRP7)NR2%It)xsb5GTmdtnlMNU z=dwT;kJToJb77|^5-$u(y(IWZhaRvVyj_xRRg z6(|&{SoemY^duo;c~i9CT??a)H5RDMQYCUvSl1Z4Uh8p;%kYi3rdn_)*wseOW??P) zu>uKOn}x%5Te(jU5O%ZI$oLuvDFvL1VO_lL;|$gZP9Qw37sTh$_&g%>LG*+SqGiHa ztPDs_;7q3`@4r&Z!rY=MoSiFqr_t9VEx%HOEmO#h=U^6wbdYs*lqgW9Z|sc|eHK7h zBX5Q!Xoe9qKEmzUH;Xr`^1t}RX!?IxjIT}K!Qu*{CQsSrAQwV~wNL=y*l2n?Xy#Uh zuw=&C+laJfrYcwo9F(uPM*c!WS98O04|ucTb8EHge2!x&uOGSI{CHj)TgM+J6~PGNfaQ%SP+SJ0qbP&d zSVoX1D#Lr{*6;5Ac=3XfV1(l)a~55&+DbWnPw_uV_-*b3RU&HVGx98(Tj9P z`jeN1?Se*rLZ({Ym0ZJuyqJS!{6=s*a2(T72=@L_9_{crM~_I>(jB~J&T@*530j{3 z^lli&8Oz&RQDK0+eo<$wAYpDc`@gTCPAD_i4#&~NA*ipN* zplrth-w8RAQO~|5{m2B!2=*}<#xF$4a-&({z`)h}tP^fvZ5Ewshz&JtjDLucU*N)y z>>H9@+db(garIX0i;z6KgyfS>-b>Qo!jLIOvWd?9TYRXS*zfmSPs{1A0Nr6l{m3~o zQXOyqXsr>QVd17Ae+Gjo^>GclLs6&+h)4Z<+?LtF0VWqTXpinRf(q~&>0fXlPx6Pv zaE8vFAu@!H1ObXnOR(f(1PwboP1~7eL+$^$w8*Og36;nckv%rHp$^t6gEfU{ZhjCs z7Ge(-u|Mg}e#c^p=h*a5F9QHuvfYeXaB$|pNzqK2Tmf~H+UkPZ#&^aovFuZ+qqN_Z zXe&+FWbiWiHv-VL_N!%UEMw^O1ZLgZHO9h;-}H|zpvzd|elVJW9S&y=>BjVDRi8Ew z!`^m#jMnB4-oB|e zl(wg(K5@yAK3n(*&{j}Z+mOuVt=;2n={8`#Ias}(e_r>>tGAiYa~>gms1+6hnHgv? zjr?;Q&eoZf71CB!p`G@YxfA%hDQurSwP5Puvk&o4D!y=ajMtaDlF7rMN zRCUGQ@Z(66^9O5txljcCxtN?QjEN8 zSyqA00)0Z9TgbIHb@sexA|C&5;qlcga zux%xDP+|vkC>LWGO}j1azv>$2ZLk`N ztuH+oB0r>l!-xtj2D1C2&~@Zr(o|}vtNWYEEc8Vi%l@95LO+8ndbJJ?vk`t)03SAf zDcHXx*dMGhcBq9dv>Dnw>8|QEM1(TBqywQn`esSD)#-!2j#F!z+7zUS&~X%T9dd-h z7cu>t4T+SJ?CH%4IGMkTp-arJZl{MXz>5z=80g3S7|W)qncA&=+FJg>$VWoQnS1J) zTA=5CH$EIym)*F$`Jgk%n-4qfoO=)@bE;L3R((N#BB^Or$8#z^CsD{T#{YCJ=V-?# zpQ-1ciPrd}Ni~Y%*~&Kmlo+hkW!S(#L=pN4{(sWU;G9v2G;7?QVDtVgR%id=3=QMK_RZP zIv_DWbY&t_Jfu3h)|JUR$*=z@@~kL^X*mN;SdbDMh2)Mv_?syMf00+R29yTz+mLJ} z`L|Gd{nFaG-%*<(pnhd?DGz*Kh+SupW$80Gz>pAzW0_3Jp_Ir@?Zx!&9Lq=+8AK5} zr$E@HMHtQn>RKhSikC{ok*-B2YgIyt#6$t~bYcWyP}Z=#e9G!>cg^5Q|Zk}BF5#G}0jBO|cHTq#_0S%MhEI|)U6r}NlVN)nzLIWPR=x1{e zXNa{seOwS)-H@EC{ge&KI$r_I44e^#{)6ASPZoA-<5N5b%*t zAsw{KL$8gcADoa851W1{Md2eK>av4fV8I&3kXH^3tH&lv9_p}33}~-mxMFHSz1#G& zLzN7I_Sc4Lhm&aSu5+vJOp(q%Y+LkUx>$QmCTfuB?CO2QnC%!6F0~qji7iArj`}*} zrK8TphXY?XF^_*p{N})Q;N_u~y(oYvqHpF9=|esP6XX3!0zi?26?z6rr1R86BX%35 z*S5k!w8+D(DV7_#GQpkKQZ^%}r!aw=oXC)plpt(>?CF53hS-$b9m&G?hhbDA^TbFU zA`8=jD1ypaUZWS?h=#~dd__gHCy?I^=?Tp2qf@B$7uX?irYHXb@BlnDl74O#G&zi- z=$d>Ts@CpEHy4uQt<(0BE=n;bKn1yHtVxOP`8;oDq`WyWMhWviZc7BL^a@Y~iX<(V z^<9cA%owO3%wfO_L`jo%BQOqm#1W#)C{4IS&U6W5RCI}wNxwzzBU#OL1^bo2$ z%q6>3<}p5_7shD%R6_`e(-`f|UQi&R+YE!8#vBjTJUvwN^a)R%X&ACk)big=JY@fB zae$5%Nv;>i^t67gBC{}Lt0HsLN}9394O#Ttmdahrhy1Tc#S|Eh*Z zap+CZd))q>7u9uEz$^^#QfU2Kq4lK;#u6_%YfWnZzwUS?%p|1sV_V$`wjpVUsx#w> zND`)h=k+?hy}hO*lpV1nI#Ycif8if`Dr_b_=z}=C&gNev$zg4G62JfJ%j3V)7k_Al z_^0~fkFF5^*M0Gitq}io5sz;82etesf^PUh5!w)DjIg!0CT0z|elq<)=4zpiRB}m& z-=C)4P+K6EG?0rz*!-V!k~t{HXCl8Idj#E9DG!B}iB@@fcG90}c0&e#dbLSFhN5+c8J$f>Vi}5=wyXK~ zO~4uigZhAbb^etk|7|?G1N%=j!>L#|StjkOOg{!8831m|20zj| zEiv*SE_K-~-HswBk%%Ip-VFMsv3;0;!?h}el8t)_nem>R)A_@ z)rjRE-r~efBM5qf#1Ud0xuMJ!@t)0(Ev{-NwOWE&Fp$IFee=8an^%-}mP1;ps>`R` zk`kz?zgEovv8Oo8`ZiR>0dA_^ZfUS(!NKs0?rI9vT1@*YkA1~lm84pS>d)3|uzVo} zgwACOEFSC6|L}0=n*H*GM&B@y*oMaQ&3hSmm0_=*@D;nJn#tWOq+edYtNJ3(E>r@f zj1pT@i|IUA`8_}Kk3GbnmU+Rk3&I4%QTkOKv-P{v|3JyX2*gQ3@Vzy1YCDG{d&HeQ z_pv^d{s9{WC?;hVqH}wI94H?hE3aw4N7h07QrySLy`7a2S4DsI#i79$E!by*nfRWf z#&BJEsC*(lRCh~6>J)=nL97&R&?Xeg{Ie^cNZ&Im4af1jh~pK;P>NkT!NKz`E{7o9 zhd6Mm&rEW$sgm~~76{mr2eHKKbUyl)u6jyku+ZRGju%D|0Wv&m-$MY)Oqs}O-JaXk z?Jj!CMHjiKK!PijW#lNIK~p`>72Dy6p2bg+f1}}x)u}r+vuc!~TH4>4<-j#vv5(Kv*l_p`ei#l?pAUEnc*V!zb2YEIwW)Ewo$~ zg=0PIE0_|L*VC`fd3q-snM_OQ+gfP^IZ&)sEZ-IA5TL{ae3cGf<9Emiq=6yKae9TUPmYV>g5KicGl7}?` zAee}1SWE*3L20jE3@#vMdG**`(0v)7T0L8HWzBNM&Orm?N6sc#GLLIG0%WZ z$^WPHq`jx~M8rI)C&+#(^z`F=3dWOt!F--jFglO&6}+k(g|vC9mLFIqZB(TS)~~A5 zg_{;P&)Vk9)rRn=g1C9YiJtJ54XK|Q5I8Xtb|3`HF_rTdbyO0k2q`6wGlFuL7$EAC zIM1j{^G=jF&(unZL+zb@i9<1k#8DoQ@|eL5zbBNsPw1Qg)sIO6*=s#jlYj&CygW`y zW`CvRIY!DXH0C(3GvW17US~sB%!S8%cx(!f&Ec^{sgX*h^n#;xDCmh=!wr6-Rv?PC zLO`yT7umGfb9*-lwc(VB<1{Lyrr{`tPWgP{UAwQoIxK+#Jh&I@KA{dYk0La!cg8G_ zX?eeg$TC!v+CoNE)bv;_#$oUY3LatdstaPMxuCZf#fDNp2x7p9UJvjJR`hz1S1_a3 zL%f0=y-K|?hUDd2_r5vw2(R11>%+X_C|GHa@_IvfjZmsbmp~}a$U-7@&`jtA`l%=( zLM9+1WCAimCLkkZ0y07-AR}Y~GD0RGBV+>dY#|eX6;%3)5UF_)BB3}!B!Y_&sXaiX zEI^|Nkmvyvdb}hA1q#5A(pOL@LUl$+RA+=lbpnZ!1BD*{Y6w(h>>+gmP^fx!LhL1V zLWD$}5Ft?~M4YG-B2Lr^v6s{dv6qBOa8ooZ_L7f9Acoh7J5`4F8%Fo|e5f)WQR2qJ`EK#);RcE=Pp# z*V4N8u)62b4jX@(6h5qXxjuGM`-VHjxDqfwjCxmE=v|~M^{zDPU7pP(h2Eu1apD{* zaY>cl^{h~!>#b<|Y3p5owJN9*n1)od70jfpN<6G5s>BgJk@64eN&bg}DshNU5!S)J zU_P;i=RPf|5=Tl^LOBXm;$fT+E>k5`r3%)ss*^ysDsik*B|`YaL6tb{M28Di;wVH` z&0S(94G?{}E$XOLi6W#_C7dykZ4uX}N*uK+(Tb|X(Mpw|_Ex_tK{16Yp*$evL4zB9 z4=8n?Dk0(Zpovprsl#3+RBu1Fd!eb^pB17L>G4#G5PE^KyyheeypVuhx z9^e&$r?PGekDJ3I@{J0J#H|8u3H_}C-WXn0z?(vrT?)~JDQE+D8i~q)>46%iL%K;G zXvc?ZjRgUA_?xV;(8VJ9!%<^V6$c60Q_&>=C=9+VDD}ZYO#%9#!h|H~DMb=gZm_N3 zyGt3qm&Sv1VGjwaM?z65_6~#JL5p}AhSRb{-`czA- zP)!=FP;j4Bg^XG#C_zd=>eb*;khM8rXit9fzc9GAJh&dL23KV%2iJitjFsd%9dc=K zRUd}o5BDvlzPe-i;JU3GTru&}Fq`lXi4X?Y2XP1<=uxdW z76#X2!WovHENV7Gv)NwfwoSFI_YYxKurM-p}uSVeCCnjlHT} zb$ZqCUVq$MjJ7Nr(-QX2@TSy+y6%*z1e|1@ynR zT=cu8Wc@dm(&kMS^T*+lS+f8YSM3FTDrv=XS?<8Mcbm z2ar*+-hd3C^#)`SZXk>0Q&SXK)I|A8M@QHHZ6ii^)_GBJNVGiJTE@Ek*RN)tbyhU?JB2{YdgAnauFKE64xOaJk@kQ^}b(mz+r$oTp zO1-{EX=0MwLc&T=DdB6%qAD3kSd=A%MOhMCk+>{nybU2miF&=I1QE#;g$H2~M8W_u zriq7|CK-+DE|X? zUEbFY9E`naxmBqqqIL+`XdS{ngb*o){*fH-ghw;re8$^{+SZvfVr7HVTqsRo)u-g4 zgd##k1S1ax$;iVPU5!+*5XI`zNAU@IR=60gN z$Stkip%6Yxc$gZ6bRaY)=E-KM7(-s>37@xwn*309mz!BWse?Q--Nh&1#0N=PUI zqRk=|rC`74r=TE()c{gq?t=i{y)`cK(v?g>x>ra!Lm6&kp;z@`M#aLv5v?!5>!&@@ zoWdrZ!3#$#5PU$xKt++!iQ2_k45J_Z!j1>{mOs7wq)TRQ_OqEvl`i`O{ zvZRWf(Rn(a11wb7?r^%z)HqNTX=Uc)2u1-cy2w69*|zBV8J)-oHvGusywsqbAHwXut#L`?V4W*<7IKcvKstJa45WC7*SX|lx=FMVP0nk& zLzjv<$du%V!{wYwdf#Q}cORCutn8QB;0};w_4e=A!+6neZ6-4_%WYemrC|pgn=4@| z@m6xMXIjvpz-zE(N>!OB!4S>k z1_u~Ium%y0Ok|@98(@Vh72;b{7||#){TMBLk?1e4jnUX*33hDyo=);d6HBkhM+-YM zYLiu#3WRKUc0w~dCL6;fu$=_MJl0Fmp#N?NBcssArPbbSz~c-LkGn=-Cp09Zi;X^E z%cHCdp6xT>Q>{XfVoOuL&#qv~C+k4KRFO9AGjjYht(lV}rv!1Rn!ABYlfP*VxiYhR zBAEQyvMw0Tsp`oF*(EXg31xwBdclFE#h)`xR^zWL#8nx};iRNpW%2iUK|cru=(WY) z-NE4le zlcf|g({;B`>WmthyG{BP{zx$WV&s)h%PNrc8l*(1nNqm@L>-zwyPDkkR!WkK&Q^=g zqCMl^V9y9^mW1!xmDyb<14lC3_GXehL0uA&EXRCljXoV~)OI@cp@EXW+E;SJ?ph*P z$^)<>=r63HZUBRN`JTobyU91uNMDz!;U(G2fYD@X?9B0Dv9>Kp4h$AcO%sW!W}~7B zL5M?Xn*Fl$u~R)-Gm#KR7r-~R7r*~944e1Hx#t4sgbE|O&7r(ap}hG}p5!X%%Xr)q z1OvjBluX!>K_JOu*a7nrO3cHdLdBP1N~9JkqRu;6B@%+zpAWA{+9VXUiBVE%=6R-{ zs+Wdxo8n|`o+sgL8C`^`Tp0}=Soh!TfVe!*@F4atPL*ZUBvx0(5TUkhv1n9KsZ!5b zG%`#(r9YTv$h%kIIKDpRvkigE?c%3PFJYCwH=0>zZ*W zoDLh5p=PD!yC1E66g7#eT32j(sB2l%%eq8vFWTV1A3^n*i>gl+Iw1?H zkI;nZ+G3<_A-#_aUkgJ^EJ!kxT8N!b#Xz?D@EN2P4W+Ow;>{^ypi^Ae{_Jp&4e)X~ z8g53&&?B38AR9PG9hkTwLXU$YNlGTR#4$H{I0?+7Ef(aDl2zQKVO9Z}nrN2G`@DzN zsCHz;!&}r?L{z+`pi=FakG$pL!UvlB4?b>`U%p$0o+>)|34;HxDZrh7C1OSYwWre7Crkq6)Rr~ltD1c6IdxT$C8RT{5_p(*W2z)8K;mRoiV~7oNYx(K?NOmXM(qDU zIF6oXzlCvvW4}rhHB50QpMg7#I(DJpPQtdpDCW*jWzCE3sdLeK{jKODCue*GRQ`_t z%U7-AHlnzXSIQkXoKz0dk^bkW_thTRmhj)+d%rdRh~JWh_bzb1al4y|=VyDPf zQaG#h9Y*1%LLZ8#%Tq^=N`*fX$d>Z^u9R{g>P!`P5p3o(q0Cat`=m0=aZ#^ypOn)P zJLCMmZ-(2Xh9w8wiaIkZ*C8io>z{0UyX zYslW+$k~wml5P;$T@+lpk`sy!&Ez=wIQpzkW^ z@Wngj@gBNG^9k&1C%qx0$cfWXNzQ2xpn15g64hyd7rb5`w-sRJOtQD6Y zNW!%8lRz~AR6IEVg{*lwN+saY5GOd^LO37w3;N*ZyG5KI9+j z?aYsFz^j+qCD%r$=nY#^|2$WI>2f7G6#H47N)deJP%B^KVYPdCaBYvq|EYBG6We~~ zr}f{*uQKy;e3l~edQKJTL!2w-i+Kw!f_b^T{!EwG`fTz71Lw2xeJ{iB>G*yx@6UCW zVqcv@q(kbsz3CP8Lp{`AHIOs92YWGm?-xg}s6WV;LLX45eE9wESJd|@jN>!+Dy()z z{RNfI+W7N4IY`RZwG!-yiE*{+-)Fkwj(693=gB)~`iVMs1gX#J`?B!do9W&dE+-d) zh8KG{QN1;9+$bJ_W|K({;E+f-vvFt5QM;Xa^UXR+ zAwq;Ahj&Nssnn%A`*v{$FX2$@8_sv64)yD9HDw)x?QnSwprvRMV$=V~ z8MojdOSkF02ydy4ln*lX201`{M>z(bA84{{7%}WGNxq}a^uSR13n-+aMsu=U{zlxl z|4seihVCoL4srh?)Rw(+Ga=aprUO3LUedtBHCI5dQAgyDafIA=o$(tk0DOJ#9EO%v zcn*_ey@weE>4JpUPx&?BRaF1bjPfy8KB^bE>#&~?08b@2u5a3MOwS|lJRd`z83hh%c=~gzY4%;`BUiYgWtDzHn>HjznF!(OiInAtgm4x51#%h2qM*wPm+G|SkI==d zO_I^7N|%&LGOD|Dty(L8)VJ#BVhnEW;QNHX*PwnB7w6!nUOl%~KjZq5I3@i8!!biJ zE(rMGN*?YZvy(48$g;l6Fg&hCctDhsyjJ>w%ZkP^;K;2l(e3oWI4$M1ouOF4eCyIb zZsEP0pY!FK?p&N9otN$t*D3v!!cqayu>&y=F+_BlFa@>X{toUDBS`pXJ)DWoWHTQY ztu(U>;@80s;jD99Zi`4Or#)mF*S{U>yK*^{=tQWMj^RsdVE^sS-BPM4~feme`ac@Ml#{%RQalqCpep~=gBFOBMWpHRco<3_KEIH zHv5V0D4t7F>?j*vVKptWMTt4Lo`k1s($1c5byFGFMs zz3E}tBQ{RP6(~7ej>>2hBccn7nW!}|JoKg|OC|zSq=h=65yK^b1V%FW?T#MKGR2Az z;2k~PU4yOw_1)2vDqiqHy>fgAA5mMV5;(M8@2bqTBl%wB^KraHWQ9}qIm965+8fN) zW#~MiAKhF(9D;R<=+JPs-i$S3#zGQ1hur5)$Pc7AYeKA`)@wA?uuKMd4a|?o6=~`y z>15Lqb6NV^7jX5N2#FlM0-nNU>)yS!?{hJXpDyNn=_z42^_^qU!(iaQ;M20B`dfC( z%Ce0avx>m+v>j9<1#|;Z9ma$qnR54)z(|tv>A{QzNAqIjzogxl4+0GN za6B|Jo0RzykldFqf*o4H2b=nt6n{#7s=?HgE4~`YOO{N(O&1TTkZo6VLs)yU zrF}UC@55%_VhBcELy3ThkgkEf9XdYq`ZIXAWUq1Ft;V>Qx4-1xflDtj)p- z2OBbBq5rSqCg?$&%DG--+|C|I@ldHX1xCAuB>eL%farNTKA(xtQ;qx|pTE1?lyXX` z+{^{fefk1{CO(tp|H>hF zp+gMT?{t*zgUF}`chYnjGu}piuql)_+xy4L_0F@}yI@sWieL*ggHtcGYpa5$@TnC+ zgpiNz>x+bOHT!Hg7hI^i!n-8JjzU}xrS7F$4b*VPtp*mQRb1G2U{SjIU^Tq@&vk#UP)AX00gj;zXd8B6yEs?uWQnpt0KLEOyZ@Oi~t5oDiXy8h@z?z99RJpIK|NpoXSl@D*{uLn|Z;0Ns)%gg)ePn zv6WfXTo#~dXV_gU_L8OpUr$$iNr?L;dr6f?=FhL_k@=|yqDSTf9|$jug-bm$Ki>&b z^vBgE)_HM=k_O?9@)UCH+Gdvj);^S(;{{FO5rL_z1hdn_|5V(C+Vi3kf|i%IG+7DCilu2-pq7QQF`z@>^*6@;;I^E(F$*u&n6kVTt5@KX#tf9Uv@s

3bMpxjXrGRIikRGs`E6N>2KtLjtUU`wfOo~2z`(uRpp zX1F0mMY&EPggb?IF)6X?kfJXJ$Tjpy1KYGBZ2^jlGyXR#E_PnTPQXWh>Fy7w3>;uo zxN>8mDrjl6(PuNhw}+t<|&EKPeFFCxh8Z5ra0JpHf1 zkz*XR2-+;cFRA%-NIDz7XFYhC>KVLlaOd3s9diz&uuA$rWtH@f$|`9HRlktT!IHs4 z&^&=Gyv*@n2$~Jt0)!IUQJRLH^N@kf;V;y3jNN20eMlBtPH4>@FlYM*0t(SUK#@g+ z$_$#ig35tl)&l{kbjoPO(DwmxR56nQ&9cA`Z^4q{fm+Y&K~Y#!SeS`8W3<<15m}!Z zMsMczA`Rd0TqsR4#;)WP$p@n#-6u2G@QtTWUU$QXZ_G#3CWkY|?RQwoBABfsQ zdYe9csUD1LF~TgF5Xi-ZR3<$TDI+HA@PG+hB{7D=JBSGw55EGx8yIhY$#~O|M5eli zMmC?+oObax%^<1829_qe!&qFL!2*<8(+oXZm9y>lr5@Gut&>4upRS%V4{U+40pXu< zYMJC;e{UoImEp<`6v-45>Z#>Jj>(49e;rbPY)NXTcVhhjfQEg3s2cv$PplTB*3#OO zCejS8SQvHKfYLZ9++pnlji7CFa%h+&Y|KdX3=7FKJU}ulUg6}>u$s#TL^h-j7?xDh zJ^~K}o^j7w@vPhZfXt8hnv`H0jv6kBRXSOV2<4rVOH~DBAq$mD!{KK}l0a$oQ+eNnNdvXU4@ zw#W)(PXjc;E37w^VSzc9JV!bk+a7Cvb9%>(Je$6-H}Sr97k%LNhhsp(7amwG8yPVGBv@bF594N@OAc(ydh|Me9P8!Uq)w56)qy{^8M#MRSC%L1S}jS%cC_3gJ1 zqtAgdC}xE)w|7apRy>>F8mhKBH^M^&+s&|K3W9_0(n?=Y{@VtZ`0(?_cAKyKAh+9{ zysWJly|b|WN0(JGpY3~p`hxb3Aa}6xuQ4jrB)5GXOhWs+6Ak`(JZ zFaLA-)3G7EdoqqPzLXA*=UB-HWN!Kp1;rrzgV|2hKYmdn6(lYTByiWq6zUUlTl$2wDD(-`7%5NccJSbk^Hpn+7 zaH^pH*uxl_4N;sjwPsVm7O;dUt&2@&0)Yff&3bkSkgf0??&0AZk__YTc3JCD=nm|Y z*c#g5o7fZpXYr%u#e}P%(}P@e7oOMRJC^vsEIaJzwsBqim1krpwrkQ~twnxm|3sA7 zXRY#vc_jL(Wi!}Ax0?hiJ@hjrt`Y?)Ea1>Xd`RhYdZc3AuUI|_3Z(TnB77rCaiIbo zCH`xv+z=5890s`rNuS~2xdn>3>V6J81SR%YKjpKHM!1d|6*NRAqXg^dzdPE-Mma$ zs4-ksPz5uw0LjHw^c(s&SMgyFCwF5C&6w=PM@78(92$FDl_YcYHx+rO{t{wvN znC1OLxHN!l=p_8m=w}w>3Cd=Hi7BIrkZr=a(fLMUM2YV%5QkSJOly?yAd6}t^3i~5 zl09Cc|5VLgLKtWT!M!m_pi$_cJ7VlQM&+C`{vP-5qsA!YNi4+4@7+rBM!nsvw{3d! z%wtxcgUD_5BNvOjrO2&Esi*OVHd+~@b(l;pJv^<=}#eMVQSj|!pjm%x+`YKjcc8dFCN&kR(ex>K_(kZdmS zg15kcyVn?ZMC~bf7feM2KwA+hIA4XKO=ggk_>)qfEjfB`U1%1jI==VtxP=res;mXLI5Hfy>^Jg|xN!t|!L%ntO@gS&0#N|)f{}nE4IuFwNDAiT{XPSE zmtJ@2=N7@dLvJkGXb9k~^Rn=y3kS}g_b7g^0m&dG)z~S}v#G!VmH+`6HyL51d1Fa! zP*kKNSWY7%hnL~&ncDWyP^Q>u)UhABuXc#rV?4gprx zuOv6=$5LvO-ZBIKvM{y4koK}LgY0dy3L}ef<>q8XMoN}HqLO>KXBcoih-eEo7@6zj=^men}w&;yDH4zkV zFHe~7ec2kq^M+~~G^jT2ItfjmF9>N{fxFifqG^{&3;6byECor4;Rpj|kynqE=z$62 z_=s4SP9fEgqraSV?4ltC76K0H57IpF-Z4XV*x`_rE7Y&0l*heo$}+F8X#+n%Q@UQO zPf_K5(?LZQo8Z8FD3nsBqMBLLB}>dkQ0((loB&JmjbRp|LkGqCuRi_6e`4}G&2(Zk zA7e#E(-%#-@{MW{(}ay|tA!G{uA14^I1T8IYA*)z7-Q;oWOT9DV*1z04-Tv3{f$t~ z=M%^$8|^V8(&EW=>orT#%*o|5M<@m#q9r18qXIeS7pLp%+FK>CATDTnDexisKpUG_bMNu z3c)qPgpOqqSK<0pJnMR~tVHLPxKnnK;#FF>ogNbmH|fYI^Wn}AHS2=qR+&FsmPRH` z7G1<3(tO2jHo`Hf(AXh0b`S(mYWNT8tcMzKkaJ$bd~Aj0A_b5&R&JcTz_CC*ILzIx zuAAD_p;}z-=<3pZR9Bsc!i3?S8Cz-t(_2qnlYd}Y#kS^65sM~16@rDpd_0iMX*M9S zH^=;eT1+oWxQG4d4as>hm%=$^5|I*T(An^YQ>=#CNG3U$&U2rsp%q5Oen$P#F#2F>KZw(5=yfU}W1^1ZFy>nVRXBw->O(pjH9 z`RQ+r?Cy?eHczn-j-Ah`EKQ8jJsO-MZS3AYKFqp7H3jDeUZ&tf-;JXiC1vSC9br7} zV<}7c+N-(5nrp{fZpRw8Lm`VaWi&r$u{*Lg=}rWw#RpoG&?ItV>(D*DbnDpLe}Q$D zD-((t&eE;_t@gHT;_eXi_7;gY-owGPiLIC2z4eR9_rs-LUO-^G?o+i6CIl7)^!jB< zvUUEgUGA|AbjvN#)Knn>P&m>wad&s3(mcnY<2+B#m*mI2QbXl_3J?68g*8Hcn6ZuMe}fS(iaaFAgy zQnKZckjN`-Wg@oIoT#VAIEOBZ3K}t+I$PLnsHZ2z5{zM_Vs!#3HJ2pmF>+NcBOL@^ zmLGtiufjT$^LoV~^nk+4Lcm94XZEn%pEQf^;k>6~sFgJ>j+uJNizmj85SkaFUFw(?Qg{nLfA?A_`UHPyG0~d4rGuq&ub*+`~DduJ0?5iHF*T#%h6mhOv4i zlvfVJq5!4NJh}|a>Z2OiS=9{ijUf1hEH`h&f=DTc`hzVsjLdB0+Vw1`F|wI~>q6fU zT{aSKpJ%jIXF_Q`dNPc^sz=BDJZ!sp;T@$4^)nGq!D5WDV>{S%Wkq&RM&6E(lM;S`3<62v%^E2#%O51cWn%UqVU94|#ap`EUc6+wY7AQ3XJ)uB-S<7+g-M$tR1;DoZ6iF;Ifj!n){dDx^qF&52Y0MU|SP zW`@_5hU5Z%u+Cb4orYg^K3s_uG7^Nb-EQw{YO=5-;{}rAcJtw-^z$C?IRW? zl=XeCDuMc(Qkx41VsTxOyhO=o&y>90-x}Zx82rQK$(OYzqVKUPX+WRqcIUg(miPZa z6USpm8jL|Y`17h@TIht!UdOw(W<(aqL=&g*rp$j@WiF6e5zI0Q zSg}9;WS|K5|BLm<$ulKixj#O$Joz$Q#Qyk$D(Op;R^Y^C)bhtw83jHDxhK~3=_;M- zLW=L`j??2635exhf&|h?0`8_k5;#$n4;)Uotl2>{s26{yNyjNeK4!BE(!49EjN*Yho^W_uI;xMc-9*RJ0sr%OC-i zWo%kjMijx3R3ebCDwDbUv+?ys=VMJ4#Mw)9zA@YzQeTjzZxr~w<*0fwetPsw$xD2x z^s;@MOTdd>u5dKi#4E~_XG2qi=q#o0?=FXKMSi;c43&A{s`@S>trBdsEeh_-$`bk; zMt2oF4hq7sx3NswM_^$DGW&9@G9xLE`Iuu~Il^e~k)IlxnmkC0UG32y6-k@F9b&X7 zh5E*04#k_t7P-#WDuw*pWWzi3gu`~M=a=P<5$TgS1HgCCo#~GiIt{u+oJzAkHFmAe zpbY9N-#cDM->gGr*akHNSg1GB(i1kKWidzuKUsp7F13kyGdV{27c^QX%rt;c)Wx8x zcZbnKxp@OMo?y%x&|Wk@;$>+2daoQbiKW$zZi3qkDj!z*T?~Br{y$$UrBGO|XJc|% z!?MIRLS!~d+fdYOg0QnIqg1JK(m%77@?`aV_{}|PTg-<5R|Sp^gp{RUgMUb!JWzRY zS*Dhr!oUD<=%8#BXhXL_*G=D5>m^Kc6V0QTRuN@qz+bBeN9h5cR! zNfUezG~@5l@II|+`S2qLU#NG-vNFLZ@d72e)9MYuF^i5K zc9#%1-D|SyD3R0j!Vbbi(~CVc)MP*-0_37IL7vq{z`9lVwr|Q)tB_}PIt@xu2e2MgP>dx)QGu|n zd`u;?F~Fg9-r}Z6*|@ueUm06(m_iGfpl1#IgbN}ISVPnpgveH>QzS~R>kVHG^&~g! zrmFx`BCLi{5FYe`vG5Xz;ng=46K2gc`)Er-wr=+zG&B8&4wB4&f(w4@Okm8Eq_2}v zDDi&!$kBV&HYV>GdTUJvU8j=8-Uu_)nli~ci;j|H!tI?@q26lA4%ThX85B)S*mb=y zE1_33Zh{PknVx#RS9lxG(redu@lK`Pb4HQ8_Li4UQ9Y&BtcdVKse}^)y{=n;!B$#?YSK|0#ProUP_qG?zhgcI`T_)`@ zS-(cUz{WMiZI^eiDql9n?#Vr@%wSW-;yM=^j%I7Vn^n022nxag2bpw^WfFr-1WVH6 z97^J*wv|B=)FhYnS!c10KQ+b*?U&RkGBkZ>`s+i+b$1m*i1>RA$Y(9>I+U6^OPOlz zA`ZA>GFCTj8<)6C7^nuigsj4QbD>yP$nXYRD?hGi%&UhNdaVr!Uegj$UzAeyc9AOW z&yo&i$#%nyF$WTk)jtN!+h|Z3me=sKhU`9G%Pva)L&r{cF|~TU(Os?8rqt^gX)YgX z06Q|5{2)pL1>ofBCiw+Sv@jRmi$Qf9AKPisHTbR9O(}x zZe)(=ZGywIyV%3XpGvIFjFVW68V=+j>9|Vr!n8u8Q_(FeLD%3CWrV>T6BLul8En2`SLCU`kE+z3bP|NxG%*1~El`tNN^*Wu5*| zPZh*B(3k=F_6Wp;5I14O(BzvC%f-{*T5737o3FI@SBOJW=>=bgn>je4za=IC6{ z(m$4jd-CI#z-nz#FG9$$n_&=0Bl0)<^t^^?7>E^ONF4*(WU|MeZbks_Q@zn( zdp)*@=;TtR#n~jmRbrC2{ANk3x89T-CWg@7d9YVonLF~%n8|7wq!TjPvk7LbQWXX` zn&=}2po5Rn3ILa30LHk^lOo0<0Bd;*0IWi{Os1%Y$0UWpgNp$i$!Dhl9OSr(+mPVk zvF-YB&$5MTkvgC+<5<`x9;@WW1V?;QyGF9r8kL7pY{1aC9^+^~JhTDWvPeVPXla(v zUEN8kMj|CVlwf{Ve>G`2r^o7Ma! z$S5Qq`bhfWjeLWXX%i9VWQClw>s>|>-8*V`p1NZNZ@@VAT+f?5eRg#;MGm7E@!PAk z`JoLSvYYA8ZKQkB{CS*JQ-N-U9FZ!$1~0OblI(A-<5jBa0sl662pLB7W5cMuZ z+e?zyug@<01gdP2;Hu)~liB&%`uFwDFH)VaRC)c@BEB!-baufC2~nHg)nFRaO#e5g zG5XPI|6ULSS2T8jM4C3OpDcYhhvM!QjsQFrL%$yMu-y2A9+EtMENa8LmOfplOpQ|x z>@n@cw!N+n<9`lKO?w}Qtt^cmsxg0bZ5jsMM59ir^d#CZ5sCx2GwuvVs9_lw^#qFmYSNAqH8sVvH`O*+!Wsk3 z0RqaY1g%7pX4V?b`_mU{t29|U-g}HAD4%SYwD+ft&ONoa)#UnL>L_03@&>d_b3G-) zV`5FJwGSuZf#A>v)c@uVl;~d-2Cu!Hz5K>d-r!GmAHPOm<65>k^QY?9uWvI=SkzvP zRK_@GDtkclm3&NUl#IUN+&i^jT~Gg*bq&oC&{9c@>JM{i&QYai0fE%0&gj-NJBtiD zuMtx-zd+_zHD%suU}xh_O|DhaWuaazfmFpXKo}OLH~|noHRoiNmZcj|-Wv-OM09FS zYc(VcIFH6&FWYCxskXcjvSmZu!w>*fi=dqX1Kg}YX#k4MlvdI(iUE>|g)7jm*^Csas-Ds1^{`Kf z%&6)Sy6bl?;_tKQ8g6i?aKgC?CecEMtx4)ROHKR>;u$aUuoImzR4K4B2GDd+Q{u6J z6R{kxXk!xJVWFo$o`-D$Z$-x-nFnyM(7+`Us(#>hOq0|ZzGlEkfdYdjrevOYEw)v6 zYEnP?(e7#>a@UGxn97RAm_eIlMC|J8#^QJP+Cira8@#}v^1>V&Dgt~evd=Ql#0&!B ziNF*(d)mmz)z?P6xT&c=w220T-ICf0a@AHXJkTQ@;5WkER?a!9Gh$oWvZbx8 z4&dKTiv;+MQ(HT*5!NNKtwU-nB%2K_ZL1bYupgoUZmX|Qn&}SHnG`Y$!g$Q}8qC9l zYY`Pemo&I`0ATetrG+-I%uvDD8x|EAE48wLXMf01MmNyqJCQoW%U@0{0PA`iU~WP zddM49?4C`Kv&c72m*n0RVWjFY*YDH!nI5xpuO{9#Ziux%iz=5?B1~V{%K*Y0gSfE0Ml|axBYDTd}g_6bk zR5NM>qe+yp?PF^=dFU0~Q&M|bs8S;^;jp3XJQl248}Q#f2%!rVZR`n!wt7US; zv8X$0DUbBhxR&`jxtYfXhPZ7Sv4*yN;m0O_W&0QY@~Ulr_?Z5C@+z2Y%XPi_`Ya`> z6UvyxY2W)h|1kU7_kQuJ=%fA%r0q|}5~h-6>9!yCe^0wIrZiL*brB{Dm)EiWmPsM! z3J|LpNsG0VrrV?y8ctAh@(v@2`p>=BV@YT3*32eaO#gRwx#}H}4HIafA(?asiL~MT zBzkEbja@c&F0&NrL27t(e!Rx&KV#6zT91Vg4%ef){t^2DG0bs~*D~pAEW!lu(;V&H zLHDW93NY(9h=OmTeTh9zxevwSw-M?9ATA>ZXahX)KCX_kexdbG+GaKzp*rp zjFE8l(!X~H=vP5UZlEJpJs0}TW|3Zbs2<=q-%MNjpqm0&~3cLI$b+ zfUm6u?fn5?UE5A?!59Hh3YO8kI$w+`ho&Cd=>N#}c8E>S(5IRaF}vunOUF`zJHs%i zXsmo<)E_?Sbf9HeuH6B}99949DE1Ei{;ChZfrYjT=N#??sVw42CK#FSUg+R>8O(m#sK(YAeypY7OzK#p$!~T;rAhH z!9>n_Q-OKT^;$N~#un1At?f2)4AkkJ0A2dthAFlzQF?<|r7Bi? z%g8hhw+$F6y@Kd4PC4Vefb)zO!BMkx%lPeo40v?^PhU`j4> zS1mFW67%tMFwEVw0_IsM6R97iK-NFWid;||y^HrES<1u}Z4I@x&ZucDGiS=^ z@360~g`A}rh!2R{!sww-XqT@YQn3BDE%1cs4KFkOOaae}2Pno{sM-pJN>;AzofocL zTUnR3Ow`ISUc7{$l8#Gm&*VkoB*GcX0(Hn)7&TX1Lrd&z_1LCWD?sTYqiv< zlCXv?Tz&4l5DyODzM^XuVU)8Y!OaT-As+^d5w*?H0bVy53@ShP4^Fstzte znpY+_QVG1bBMeasa3Eu07}pl_57h>?rbxPJXMXBNUhEeUvihb6pWOKFFFpTNKl>QY&rM_p3R&({ceJeXvL%_duRdO3Z`VP*dW1X$oXg zOi{aLe8dNqA_P*e`yikILJA1jJ(9F6QPt9x-0+6vM!U)w(anU+YIo-u-QL&GRp6lx zW2od%)OfwX_TE}|RcEB!@zZBtI#y6t)rT9JR8@JS#u=mYKSt61 z`Hg}==Kj}*O+Bc0A#CcIPPR!?NEVDD= z+67f$jY|7vai3zjR_k8~pJvrXcPyz5{M;x!F|59=*VNP{Y&@+h(zmqnRDOl~iOSF8 z2^&$IBKbi~{F7XhBc_-4UkJG^4gC0o1o@JbhkVANB(}YEFt9Yu$0tzrG}ooeB4}4M zX3f*?tG-EC1?Cc<>)(q6FM(d64QvKzlbVZ2p?_$cFAfZF&zl&>Q7Ls*=vNn zA_E|?k5jy4irppi{Ww~OoYBRHLPn(HhH@xnFpCC-n8jDK zzF3*{*o9>WelHzZipt;-#&j>6s*!Nk(tL6wb1w+26`O^3lNA|&wX{wq|0`NqXJpWU zI1!lHs%XbqGz9jPPW5_OK0rON1XNR#qR*&KS7V-FZ17A!gMCDe;~UJJwFx1&TI6Vk z0<_i+{j#K8Lq0GpA+C(|S+rcruKs_Vv=NlkX#y)ENT z0t(a-Z_oVJTw^UuFb!?boMgnsjxP4}Idn0jd075{$Fxbq_cm!POrrGa)mbT8aHChk zSsi){-NS>^$aG+fjSHX<6+HfR~b$eSre>o@?!@{G1Y>iNB4 z9ZXs{YuoN8npUk7gcr(vaN3XG_|6+?EM7Sax6ArE_h6x{blxET}qLy=?sU7X2}T6Th+ zTi5PAhpS046d=5E*lp?3=<@wgX9U*2($F#v1M7;%r`Kto4%ol{YjO;_}QkB*7yefoS6Q>8q&fJFmsUCQh9I4#&=yp5f&bYis<~(&uz}cE}l2P@f?m zlEoep721t-N1vUlW%eHsjlo$WRhNtIpTdv=FBS9~l(<JZ2I~t`Iup&<$aOJmAaF zmd5F_ds1;M95j4qr)fxVr^nXyCeyDstSxkC73B9QtrNQ(Lu1xJ$-GdYz`dPYy9sF? z#hQP-zMwz#sa6G({BIun=~roct)3qCBO8MxIl_7^6!SuvtV)@y9WR+c8h-N!iD+V1B~ym#|iKMdK7U%s`X@9(Y35 z2!9h=1n+VWY^WN46%br;ZlWRLtdD1( zqJ~6?w3{*@epdYJlJtjp8bINBSR3&)f*lHe57)dKU(b)QhW2Ztl6@_3U?Z?7IzqK7 z2i)j^3a-umppnsfEe47c`b)(s1@VpqPU!aG3^EM+$F8yqe98t~G)2=bWFQrDpK}bc zY0HtCc8C?jdLwOdS|OFJY(Z!fJah(jTtSFXpqG4dZB$Vy_+%3jSvidg#$%EKn_yE+ zBlc7N45tfCKOjfiu;9P*3VOAjC>f6r0WN>Tz}~-I;#8 z9wpczgg7mcsl)+fIP9ShIjz+1{u(_$k{;g3KJq>4S~rICXX*q2%tHWEwxSN#(qG`P zRJngiTVY3>mY|u1sXNpf-IhQuE{yGDER#GFK8#mef<+#-_Xe0i*$<&DhVmuPvCKdr zmYJJEa+r_js+0WQN+)}wmDktg&-n>nf{ocfraaPBcZG13-kX5)wx z8WO~+=+NvU#V4$MOKjy+8rtAO&2PH`NMz;Ckt(w@y%(ZM@+TpzBtOj(ym(MeIgb3i zyna%B5V=HfdCnwzQZE7kmzY7RDL$D%SUL4!%RBr1a#@eIdbHsoh4SPo`+9z0So1}4 z9$*Qm%6Tt5ta@HhT4GN)=RSp!bFb90=gCRyadSJ6^Hj|Fgr3AcX851d7w|u+oR4E| zYSwrh^~rUPWNUr|EHU{CwzWxq_ijvQuK^=R7*R&AWo9YH%p2GH%p_+tnID`)FrpB} zH>@+`n{03$8|f$r^J0L~A`t8REgjz3`LQl5WFPIGM}HU#5Y8z5!s$YsGV{`)M;6mJ z2wd?|Pe**)+1fBG5-%e)i8?Il{}OZhF`$t&!`=$0b)HKb3G}vYU4R(XMt%R;wMYw4 zb+a&*pDI3YVrfKU0;Pz)cjDa~SzJ)Eh=~G3dKexuZFnTkN50I#%kwhqCvD9ti+s{C zn@H|p3iPq}XXllZ>mtXeulg{Gi-yEFxvY!!RXa)|GKb zh{6X)35ZraA4RKCOjc>hU)FZZvpEx%F3L2zBoq4RN?DfH6cq7{(>dY5)mhavkSQ*D zXk91jaZ}iHSF7+Q2<=irJ>wEDYLirvDa{7B+Go#o((ugK3}O;@ck_Vz?*jR(39*w= z>L7d3LFjAgAa~gUmeNF#Z`9AOLIdF@1TWD+iiJwyS&B&)tI42}ua9dv-U6RBV9A=)90#ZFgJ{UQ~F+jBQuy7iq=wP@^ zrUEEC$h9+7ErqbJ_<^c1)b5WPsG5PIziQP`K;_+1T5mgr2=N&j&S2YL!$9p&YJc27 z?PEpU@`f|M$A*Wvvh4w!ezcePMDn)5pc!G8LPI-baaj^h83sEpr6tRL7dc|PeK-J$;#4V?SSE}l>69uzHDJ#@|$za?- z?f<5TTi)=0tJ>Z03NlmSa#1j+QqCX>HVnoM)c&nSTvbCM3NCf+qJlE6po6|qBFN?C z0L>Q#uYiur2IB?*+E~ObN5`v5fcl4o4Z26diA#uvi^Y?akrDiDgvnEe|uQvX?Tav-?4(<6u)hj{^fO3UjP}4|;Z? zDFwwOsL@(rmr9G`Xm(>4B`Pe(KNF`$Xl&BBwPL850_Q6PcW9~9HJbmszT$TsNZ5qc z`T3GCD4R{@x{bM{-BSsPe7Xv4o<(Sjazm0RBSFo4W|4yiyV3f*YLIAt6)eI6ibg4* zv5U=$DZ8d@302@)h9~PBGUgDiLW~rX5nxdKxsJCxuVPN}|8n;>&~{waoo9XA@B2RL z$xk2F6QXYU!IHhCjM}DU$8pE6glx-37{SWwYF30fLA`fJsE-WJIh4K^&qG(Fh{q`Th4fRk!YY_t_>SYt6*+ zyH$1S)H(a?v(Mi9?6c24MUJ%YQkva71rnWQ9ORz{9A-)AeEN;-H^xreWSJ?yNK00q zQMMyXX2W^l8$tg0fX#5^``nWGP!Kr|`BacUp?rU_WIk;xb^i)@0pza&%rf~O>dP-I z`6ZBiGr(DoP?+TV;*$A*goDz)9OPe8zT->gi@R*G$^SaYIq*HmzqMq(Xc5Ff@;3n? zAPM2gmtR@(OCb49Ky1gInRkKG@2UZa0SmiMEXoR&FqOEgnSZ6n9bwcU=QWUWlp^Tzb+eonCmn` z;ZSLCSj=my2Bx?}F*q$vSwi^hpH0r zS|KeK46qxeu=-4ji}GhvzcBycKem$n+C@#SjQN>zSL9BZfBPSn%3#8WGh6?5afZGG z3iD%s-G7hSmp%Z4s>aO-mw;>jbpNZNaGif*sSF;jkNm~r3{|*J|9SuYAY3wyE`_hZ zdc6PDP`HkqSSo{u>+T^Kufnyrf^gs}u_aHc3RDVB%+_hmB*XmBU?12!w~@xmhnp>eOdRasPQpzYI{^*DD<}h++@x z6GQr-iou5}T~NUK%oO*L9}Qq&@ksdL50=W{;X3)9#Tlw_-Cya1LAaid;!Y0s%wo8{ zS?QXg_6_6@))qiaR;j2Ni#<51k6 z4e6HwihF;hV}@ez{~FQ<)t>!)r3(sJpPAzR+mL=4fa@RrY;niA44&fl4)%i4Mis8# zs&v92Tu(=FZy)TL#T56qm980zuP+b5conXDDhPkJ6t{n{4;EA0XDgjBl;REz;(HOr zeXoM<0$Yya!~_Q@&b}Ss$Ck0+$8R0%7kf9rk3Uf97+|er@ICvf^8;OP8LIsF$x0U# zuo_ScrRo4&e>~VPm1_N{eOIMphQjr0gT1f_u0N=B!XR7=C~g3*|2o(+i{biirE7-5 z^(#X#Ud7jMRuJwe&S7hTRJB3NTDM8n4_ErYsVw%Tvy5{ZK&1<+uYC`GqJnGp8r`#$ zr|)!#ws>^%q>yr#nvRQW2oq@n>Y7ewiXAH|Osh4wM%U$cy;pSoY}T~Kam7X&WwC(e zh7otr_3xC&8y_m~e!sl?!Sdqp7x_tEdoJq1smIp@-qkvC#`&Amu*cRA;b9Ih!fjc=2krC+Cn7S{3PZ=j6x)3)i7D@0cpdN@(Hij*En^m^$eN zW(fD;k;9h+Km)_zZp5bOmCaCkra9v~Xmg}f;({P#IkW)dKncdACdKP=LFnKxC^YOU z5U^L?RjL(Q*O2`SOJJF>TEeJGEStctq2j}8)kgv*rcYnBzO?oZui8pjQ1t@f%MwDC z%cJ}ZIOA}Rk4IV)hAQbQUqk=>pI6>%*AW9+E@bstLZ&hUgwXPi`pcb+H)-=gTi~b2 z)Wx%iw6l~*HLqsA2$gr~C|Ly~c?BHw77ED9^-UPr{)7Vqx%O#>Mh?-lft?9cj}oc4 z4FSdc)$)@cTb{2?-qmJ#vL8Aw$`7++C5FQ6cyWF8i2tg_SM~fK`KqC>a86L$*hIZ4 zx;c%Z$D@znXJdNAjrhpe?lf2O5ssH-w~HMacLGNe{v~z z@2^?Jswm&<>K5S&2Ycu(Az|KMITq2L&*;4?gx2+8#L_1^qQqB2%ez1BK^OT87fNpC zZ!3~hI>l$E%7fJ-l^ zYD9WQg)ID!(Jujc4~$w>CI+--^YdiGY+#8>Ki9bbl22R zLq8TEu)sTgP2Yp}Sa^?xcaZYG+k$vO2fqJ=Uh%-9KdoA!U8oUJIr2CRd2|+%#|-3= zx1{<2`2Y7dRTrAt03U{C_iO{j>n~u zFa%~S*&}N6|IOy(<1ucRqW1j2$7rp$hU?*In;mpu2NQERg_jg> zozm;tFjB?ZGy$cJUb|oN<~+1ai4S`;Nx| zAK1xTI%9|yMHC_|<1~o5KU>f-A~6w~C{dAA`uwT-6=w_$bmzcVEv6xozcB(4;B^}o zksM=*Z}C?yUX~JCqRh4UgKADeLw`#3SgqZ>;J=H@A!47nsZ)04kOxJ`_D~~A)s?+a zcy--Z!&;fVkG&e&Gol@kf4B@!SHk1zQEsfY3VY^&KfFBUU@ebS+y6)GCNJRDiELU>GlFfGNIJ zO;}-Ib}kSrPTNUG?4%7GQACCHd>-e$ z`CY;l=l5wW)RTiFr0=?Rl!oInjVzEfmFVTF*qx$NrPAXXVGS!4vQ&`35#GkcH%3N+ zdxpt^3Y(P**&IwaODS%u&L(wIWApku92~$$vZQ&_0nzk8G@k_!KwuD8!VGYBX3J^% z3OF>4j1*6WI(~u1)RLd)S)_O%RB%?4ZZ@Lm?r)7HuX2psw&0H1aB7RYJ33E$rlp1{ z{v5Y}fPLuXuK;d1*nZG9VjRA!{2eyorqnFnVh&N%sI9$>V4V-=W*}cHXBL01yZ25+ zqq{5sDlV4_fJ(_I-jBzcQml)%F^^!=A5NMZf>ZI7wxHo2%YaNiI!aFXXz~^KQ$9b9 zJW0MQ$3(cIq&up#<_M{K!VS|NQGhk;=yhYnh$@)YPl}^I{O={`Yfuy1&NMUa3J6nY#=Vy>=29+5}h3AVXOp>O%{Q(04k5e7r0;OCStNV~+i@6I+Xq^^7u2+q`5FyB zMXYbp@DaF~c)=N_l^w3A&@g12vbl~^43m{;Cg#u3N!xZCn&xdwE*seDFSgSF;MNvC zaNHqmbT;25&61NyElO8nfqZQyhVz|!S80+ORaeI3?iCsbQS!kR^y>%sQQosK2@_7S zTc)k)Ku*oz%%}`m02aJ@-9!zJ!DOv`DyOW!37EjMxf4CBU zjuJGQwCjRSijn;&b5^)s@nT(c{-R9WiKU~~sMd_29wSo#n3)IzSV5Sa8zBck>tFIi zR>px;)rp9lW1@X>`@*`dg0mdlr~oK}R0^|{1aM{3(;?vECvK|SuQH>=x_aL-z@?rIv zD@3@u#=^ewd_*JJ<47%FHkZ|t_s0%Ij^J@o3;v?5y*hZX>oAa!P1>IJln{%2#2 zg?rs2-0(c_pYL*yJMAsLue`i6m~)A@xWrfRbc#=0{|c`n_;ZkTO|c>Q#o?dd6ZZSp z7Em%se$X*>LKFlXOyz}QO4-ik2svZSJSs=Ct&i#;clJqW)P89~b3RR^H2Sz`^l@|^>eF{N0bL1x9cZbG?@+1`cbfHdJR|c_)fH(hm_}L1wIE`>E`{ftkDUZ z=MPi-O>#N~yfv=P3e|2#7O_nT0-{xb;EmWyxUA1c#HSk@0%rMIz2fet-JQi`gtg;@ z?M`kL3op6zBuq+YU)zpB%Z9Wi6i+-U*ei z*yEnv_zj&%5t*cX?D3`|U08IGl7!`*VgclBsPMHGxve*trE-VzSJxDjTWaCdhMR^E zpU|1LERy^n0m|v+zy?%Cx=1l~u;QEe-&s*H9W5HQEjNx5O;wnUTNab=t&pIj^F zA^y?9KO3F62w)y#(j@jnH6}5m0l;t~AF;UEmb}m4-RmW}!f7)Y3@%&+m_70%b^COr ztqLlK|F4>8GFSnumOQ#v>OGVmnRk^29kky4P82rH8!G4lH$90K=D8VdLjcUNSw-Vc zZZ*lv^PeITVR0k?8>W0cvVz*qDL(DR{Dq92FkdbUEAn2$+E}dY7Q3#qoq(Ejrjd5# zx`~(G+$no2vn`>rO^tjex)x1AusgB&Vsj6`vN6UuPp{2d#DDkg0w3&f39NajC}M{K zP;Ewx+Xk)*Xxg(p02&Z41rsy}bP@{%R7|*@4yyV9RD=?6P%-^zgURF@(w`eae)8?h zyDyd0s9#63YE!1;(CRG655C=ON@;v+8qLy(dG|a^lvkmX9LIeQBnk81AV2JLbl(`b zIaa7S7GZs!`uV#z&nJrE1TBanAr^Qi9r>p^n1=G0acWX!uW}X#I6VAMCzKnODZQ}& zG8lM?uRW7vA9U}_t*G4(y4Ti3hSLUliydU1Jpmg*9tEOih&E+r0hzYzcG}%h)jD^F z^Z5F-Em5?}T@rVJpDPi7U=*AfsPZ0(nO&CUCZ5ypWa9-Jki?grRM?4iPTi}3?UDUU zyDq-)C^sOKv(}Jxl0I%KFp-~>&J8UG@l37_zBusdXrvKto@AR6IVE--eHqcQy`z1r z(U}bc2ntL>HPMVp0qf%$nF{@V0~020S~tu=%zqrbUIUDY1+8Tu<)4JrJfPc2{Uq*r z^Y^~DKYGiXvSpip>F^i+e)k8X|CtW8SZ^r0ZOQqJFbl~&@Bk>xo#ki)S{#3U>B2ab zkBN>Wblos{4`wGn<|Fg1f+NuF!C_|kL?h3AxQif1SDPbb)t50l_>8oOa>0SBv;3~% z*62~2T&Sp;Khhi^V*DS4tsPUc%XqYDTPiL}G~f!E6+7hWaJuDO4ir<`BU`i#ME4Wt3J(e+1-5JXs}pxB|2YSv)8gX?+&JH3o{1ftkX+3k?bWA(9m6vR;oD+-{A zUaan;DqO=j(~Z#}@c9Uh(>DXfby!}c2@Qf71J^TU=R6)owRu)W+u1!Tx;eaPzjOt1 zyE+ZQfK^w;gO~@osDupE0InkUBNr4ch-L`UL+RnQ3Q*dS`T(_3K*q_BOtwkX0-i%# zj~rsLY**y;IO<|-X&1r4rlzVW${8!;#|L zv3Sdj2NnH0m#@0Edxl_-yCMthh1r2sM~!9;?Z@iHI#n13xFbSV^cm`lBSvtAJOyT% z1thtIYwLSUaBR-DAoa25iq-ib6c+7b(E?K~XM}OJ<60F`ZZse7YJEnG2|(?7*k1|Q zY|mIB?0Uby9`x4({>qHO-tY0(d4FX;or=Ak>RSq|XzghkM@d@*5L5^&-w1Ut(ht+I zuvc^QKy6_g#f;I)$8TecDxS{WL)o}gJSp8ZD^`WJaur%Boi|cTh26-POU-7=*=)V&swzZo~->u{B|=XH0oyRP`?)FDVWq zZ8)PWX>j_QeP&CdwQR&T(3!C#H%etrB(7qlr@1`m^Cf#~Sto66oq}$-@~^`^l#C3y zL;JwRMm*l(1)6^$Qnc_rAI@rJYabI{SF5e@X-65Uf)oomNffUnmEC29u;@mJlymhI zRe@6JY%5mnpga{zbIh0ChE@py8MTCjOt&1fLuL~)ozlcZ>G(Za^1^`sn9n9|J_{kK zEiKW|vqZkfG4;{jA;_m4ZQ3!k2jD8c2gFH!{2o|euVPxt!MC=4M~5JRaOX_k-8NMjq9cLANl=(fvEQ0&Fs#CQ&_2-nfe%yylqDUZ zm|tuq1gYhz%_dL8D5bCM<+=AuiUrj!=6j4-mY9U!h~!9Z~kD+}&Yj5KJ&?`7&_U0B4&ti*TQ@8N^BvKk(mA zm)}39{2n&K_eX{FRTOZg`pOlM6$LcP0#=pv;k!rN5rOf(R zuQ$D+tC=FiRefrV;|-axR8NCen6iex5@NxHFTbdqG{tr z#KO%Yy}qh~anu*fks50J;c7GP z+U9J+no^iYmzVBr^wZ^hWT8}T&@eq!@hmfiA3z~C|OgCq!iJzwzX_5 z|NPtj-Ho)i(C?kD+M!i`I&(X!*0NbPj@Z}4AQbnYP&2!`M@O(4kPClDb`^b-gi%d~(O z!H1cmEuKK|k;H5{frtfrJys`=nbKyAkJTBP!x$*6gN6d~KtB+BUkMjY#6qHuSm|0Z zZXzO(;$k8aG9&FzM0nLFDAXYOi%AGhIRldrk2&VY3+5m)r82CF1Dkw&r!;18bA+x-UX_aAu&wh}80vT55KlHZ@!93tU`av&J4ozDNs1S+pz4qFv|x z6|=G_iIihp82*7lN$2W;d4(K~W`sb3q@w@H*P(t0_CglRz_DD)XWD`RGF)4Tz*44c z(i#u|rajCaLUWkU_owZ9vQD8ybS#XS?enkath)Uo0+Jyl%D3|QMQgz$qOcup!HO(! zgbP4Ia0?`PyzoPB3PF6KiWOGj&AvQ?zF}ly;H&t3(uyoMO_F9PRp0S8sapI`f`ung zd$5FwWF(>aFh`d(A&K2cwt0!kGD)O%eBNZU8Rvxr!zpuQS0UoK7cgGw5q3g=Qw4Ro7^SDChU(mAGW+#24E`Fktu8v?6?2@t_pQ5Wz#wnJ!=!VPL% zDln1DYnHxsPHU8b%=a9oC@En@<3+Z#K4KEs{m)J8H%6Q%A0NtRY(=S^!4YW~6 z6gqKMez4JNMKwcJ0ysXTVb`p*|gh?bBOJ&jGeB6Jd{s#AR zZs789d;=lB6n#xNRycc!Fv1HmNUo6YPScMV|8N!)@e?tsjLu`#U0W4#k{uOM0vWWfUV-F4A|8wIRKxUq`!NM;?myic#9bMFdo6l;REkm5F$wIC}OV zBUP4GwH@a5rABXz*??#+8@V`cWfyLqpRc_%)g^kVg?Zz4U*qo0!OP%}PHxF(z(#q0 zkPBm`pZEai7#P=ir&kM2>gc90!I+5EBQT!;utWz16pPj9%Ycr52=hq7$mY zuu9kln6LF9VRtO3Y(%oDGijQ&fxdMV*(`$zvJDO(wuG0zI0L?S1Q;VG5jVyxrx+Qu z)X&5NcnMIzz0KCWs15>9&1NW>H{cxA&gUZ$tOSMCu*_=U>|<90H)RbPt8`(@nXiGA z^U?)=wFxw9gfTcy)T~L`xk^SF`L{QBU|QoC3u|=Q5-kL2PKh0r|F_{bfS`8-Y4&Ub z4l~C!z&V2HgLU2H#J|>v&YPeGB&(&E|N4O|rLKlYZ2odOnH62WP2NQ7r^us*x6G2z3@4^;$WM)8+DH zV{E;mCrbw^(sqUp(Jl&-6B=x~ATe+j|Uc7prd?&c>jTmTL_e8J+uDc`ggmP4azsit^ z-b`Oi%pQWAMrZL4QJ}iRGe2LO;W~e{#jQIybF<7bB+TUL>UUd)d+g2OnO9*^_L=Tc zj-#9RTM=6~8x2Df)xl(IXmIz+U`pm!h+1DkyUnL<^(TBRzpoL?Popa97KaW#L9D*t zrH)^AWj8S`VnHy^2VuR-s-m@60o}Kr9o;j=9W66rp=C$z zeVR0x6u!(AYo=jO3XHL`^I;}9Z9#|{o*4uVH6mg~jnPnQG!7=iWkFbeEW2J8+vBh+ zv@#>@6Gqx|G4C}3ZqVW4e!4Wr)IFc@p%%7v0J&=X>gR_kMR4O~-d zxCN_L=3}zV67Xe!t?qY195&#w zAXv@SWDXZ&gxDN&)eeR=V%UO2xUQxF-wIUMO{SDaa%7ikIq3iO=4eC2#As*$sbFid?FbGa+s{ptiWJu z-H1}^K$6?LdLMg(0I&zVm#uDBpNZP;$J$ZT+0>-Mb*3@mQjzW2LTuucf-a5rYM{%4 zV@oknJVPdcl#-;m6(ZhtAc+X3HTW@i;}cunZP(-0**s#N#%wAwlEX|eN4bnG^^$U6 zW99b&EHoV25+uLALgDA-J=I_>hfbHT43mEgwoa`h`rP^5QY=8F?1K_wgkHLjRXIVX zOvn_23sLOhLLzdzT|W-626B&xA8L~NLbHAMvD6eia1A_utKi8vD+El5dwEh68(#uc zW~#!V-p+HNyBm;8V3L|VCb{#N=k8X6{xTB{fZ+u&*mEJ|Pem&T%j z*2ki(4Dfr_lkINV z6reLGr!**>p<$feNiUEd6z3adqklM@qpR!r?=tW>Q#Sc3O3KB|AJkrMMlQD|b77Jx zm{ci<`^hRj@a8*;stK6Zs)7Yg2BMzd#+sKaV~LGX2nFu*tpCZu@m0h1c}U$W$1phD>s~g4z0fT5RjM zl{$95o%+G#>?IVF*qB%3>>@AzK!QakdJ!CSV7F!odYuZp#j&nl2R^{;P&{1qrDh3* z7z*A6^X2Ro$4j|Skw(U0VOCaThPB{!^~UWwrW(cGr853+*AP+amcah2T4n5LZoK>{ z(J_mW6F^L(;EfKQIJ)?!KQa`d+A?p<=R!RUkN1F{(-atCn-k) zV7XPvY2^D)9R;J|(U=P|9hq-MVdvwDpYV8L=%f9<#&NbhG_qhwT}_XFUl-6zuGu;2 zqqcBo_Mz&N|VKI<+7++YIY-P8eY^7hqtd1033KRw5*OV3)RIKSXs4eB_y{Md@n3VIw$pl-Z`95 zOeSk~ku?l+@}7YJq)QD!ov`*KSYzbF9u}571a-JU{1LoyZVCKh2}5FuDy(1$IFK#! z7%1C1)*)u#g-5Y1Ky()XWQaz^OgtgEmQu|vgl86yvmK=CB?5x9r2|ny#~Yj4CJ_ls z>^aqJe}oJ34uo6zG13WVYB!91ad5+OD5|U|`GU6SmY?*T?qg%o+??A>7J|Pezl_R3h>N13D=pzEI($5uhd7We50FiEO;O3~kUzIAw zrZrlaRH6Cd@KpV>^&28Hc3vB$kvv)N}CWGE1}%r0Hpd%tED z3L2vY8i&60>4mu`V}~Fdy8lYkio4*81-Y_e!JSmOtsDYI;U5GiT6n78cXh+L9+{i`jIF zok|+kEArq5m|t+i4yM2LbOpV^BeJr7r!1Q*Act`Dt1S@~x|1bIp$4cwb9QfP58u0^GdQR+!ZD%VctGU1!S~ z;m#XXhwLZe8(6pKaIb>E_3mPzl z(8axOs-Eu2jn6HbMwpsu8|W0dvf&3aZ;+v~02PRAVWOHe&IC%uAvngwrrFHQ`K>3 zX*FHj1_rnvZ9n-ih4%W*WtgG?;`i7>C$jcAnx#*QHqgpB8XyGtjEr|7C^k%bw0KgF z?O?)4NMz0qYT*p@i*YLzl-1>RMq={cxqv@kitB{+7>592V>b8=OwCjgS*BoC;LZrZ z&eWCQ)7*?AndWQS&Py=pOk%uL!}L;y7JDgfp{V@6dKy)bgse|YDESB$s~pCh*EmjJ z_?^Ovp?pIX+J)_Nq5C1Ql}f~-tOCX7jAc8sJ0$FKf|ix|k<%RVu6L|)qdc==d-K!! z-90TvDwfO$wOG4$=998mQ#s;>dY_~2V$Dq+O90ps1P%y&8 zf<2B_wl?9mm~3`HpMHXD8DyPK>XDxy>&$6#fI}=psKZqClX2FOgKX!Tbmbj(;++Tt zG~rS#NvJhboKSGQb+8*jtT!(rP))JP=Lr2Es79>uFcILf#+9#yK-h%#GeQs*oQQX- zTlgOqbOAd&wI{i3C1o2LdsWD zhE>t8fUiX>lx97`s1-W+icQh38p@=rd{0`8WGboDWQS;vk+%1EFi-+1L9MRR)R=PKyn@5n%;uhbxDZhR}~S zx7f!`s#3gq1@oJ?j~H@k6R`|KVdcinZa|<41!&B7rgLCd^u@9boWZ6!BZFQwWzetA zDwDdH(GUGMsqLp|qeI#*O^RcR&76v?BE1zfogv7jmf>S02Kz{Ex0HkfAI<%Ewqrk%g9_BFRubGV0I=B=k_F88U_hcohPZMUnBYDvTlCw2)2jWAnSp zrXO5gSiH+_kgU`rn*)XRacI0U7nf9E_`@$BUX2 z0bQd8`jPY(x-r=iJ6U{_0ir{U4PXby#G&4EspP^+y%(xb8+bZP8ZGZap5ydFLE!AZ zaDEL)iClCP`5b$~fke{_ML9k@oXJM66nQ@C_82*9dNx^sZnO@kQnOVKN@Bp3qAcKV2&=n3lQ{td}zf!;}EC*ee$b3l}czo{+F$ zore$_*cu>Qy-n=ebT@{$W3~*Bdh#G!NEm#yot&n8iw;fY_MVCmaII9iErMNLd6_Jr z;MiA-v|`l5{tKse2gf6!BQ&Z!@%Is8-Vv<_}YqbQt1Cu z&J7Ir!hwPGUkrx!c6j9+lMB6@hrN{`vaeL}3}wTIH@KApO~(yQC)ab)k!B!&o=a#p1qQ0t=P)X z7#cQT;H_8HuveOft?@zOi06UW9U3ixmWIn|V!?!UQYAZcrLc;C{4f<8q;$^r&2#vei*a5ANTk zmg^iMy1CiV+~m6dtA-q$X2gzl8}(+~Y}TS?5F*K%#17Gcp-qZx;>58PSB@Hyc-WHF z#lVCavV)f<{ZHx?Iet03k=jw!a%31&<-E=%!YrL@8pii}%PcdNra`6mP8;SVjUuM= zxAxjj>7<=qEvKoua8TE0kP-8f+5F`9Y$^pS@T$vRrz*&xU8*ztrB#A^K*KChyOr<= zc=SwDlxUyLWC3p^5QzSw^0CSi@)I})yRB{A#spPV$T&kj(P8RAaan;^0M~XLHOyh$ggVJH!O$L>T)d2~SsGJF>W>QD~~w7E&OKnvWeex-I-V4qA{&`7^NdHAE2sZ?-AtwIS&3C9- zn9QY%{@Bfuv&yq*)?m3}Qw5^Lhs2DKuj+3Tgm7v*jT{;Ev>0%#-{q5vt<1I4STg(jT>E4gaKxbet{2dZw&}c6LmdwaYy)w4?Tvs& zPJyEXg*?YJO>KnF3V6hr`49`)^pcq8Fspv+p>z~iAeoYEYu(zxP%*~q85kj!+^=4y zR<9?5Moh>p+{zd!6+TNRDijJAX1bci)XGpO-1$%_CJ50oygkh=fAuv85F%%b;h|8f zQkq3doNJKMT=2{+ktadOvXh0wGqw{-VJs7hu{|MS09S<#8aFW{@0*r0#@=a@q~t_J z#fQSsH;N%n!`dcSQs{gy+F2OB6U`VQp`T_jEt%4}r$~2i0+43A_+9JZhR7n%mv(BR z1lv!3XRTU-$A;$#Wy7pl1|-{%cOw7aYjkjX!5;a{R$x4JIA}#9CW)t|Q`u3#9uYQ^ ztpvjooLEHFE>i~3*`R0s0igs&S!^jV2kCe$-HN z#Db@>sSAcguk*=-&0@sz;SQ2>riFMJMT6KS99l!L8EM!8igk&4@pZOGQGGb6hJ$?6uT9G--3OfFuF$|FSR_px#kt{B)7lE?wdooj&-~{?P!T<*2tn0v zoLgV1ut#?JVpW_FqHMm%T+Wps95)-4+hj&D1qeR5IoHTc*9{qU7COrdHpIu%gQCb%Xo(={$Wn@vm0 zrpQ7}6TP+00j4sKD-yt9;GFxWwG4m%|K9`W+;7de@1Hqv&I8Rb;jDAq_c0Xnvv<)=%k#w2TaF=HxVc8B6#j;y?1)U4v&l)CwTl7{MaYMS zi+B|7T5PJoH;1?%XLB6bqTf|W}lb}Gc?KD;#A7}1xSb*26hzQEkEJ?AG zVFVdEshB~S24yfGo^b61kp%PUvJVr`fC9xy?$j<;5wfQ_Y6_tWN4ZK&xeBSh!Ab%R zVnI8d;51=OAkrFWlOha^YMI4A*U01VdIx&JshG431zlh_t6-Ngh=zmR8UUO90|nU3 zemWo;iCTA>G3W=ka{%nS1AgKFXT{O5-2&T+w}wbh!N+C* zZ;isRzt22W=h6b^WVV4Hf(i0_@Hud?`a{hhNkYJd*NSr4=3vHjO>5jgUJ-V^6$kaO zQERcWQ`zRm;&!9Wu(A7kt6t|%CRm(cc-N}8pk&_RgFM3AHp+jI^8#6@(7Aj_<(>KQ zh+#`+LSRH9;3$9d4&)_^zOeYn0u{K7^TaAJr@ijAW=hb@Yo$*T$V2NQVcwPU6A@hA zq%7Ao-eFz>E&|oJd<3fb?@o3ZeYD2TlK+-XY}1$>>$42WEs?f@SM^35Z+$kqp2vJ!n+T2#1{sA-f#c}5{Ne9WL zD$u%(qG1`Tq(P_+n2YQQ3e*#`_Sl+%VuaD0IZ9v(5tCRafldZeIZt^A8DLOFQs`wf9! zWr6ZulD~j}U)0rd5XiXIvN+hn60wDv$y;e{@>IPS;;+lDdu2QZbjr6*4g{866ezR; zh5O)k%k9vyUf8}23Kum^A!N-lCj@tK{$-97`UQFJIgeCB=4qf6Cp#&q*@?<#gO;pZ zRKir0AbAFos{z{RB=dw7Wfp%se}t@bc@$%+I*^@KqhJfk{ zQ&y>pq^%FSR4068@l-x~y-Z5bD4Ao{k;!PDFAgk$rwy}02z7LB

5qj0G3epsif% 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

=_1SLsVv_`zA?Np$;~5JFklZvS6eGPQYAA} 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 z z9~`}Tv=Fb4KkVLrx7nK5d$60&$70dOcoJ@<(8j14UD{dL zS>1ltd{M8zXg=Fs<+QY&ZKmsq7qMqgSD!3!gSW8L#A~Ki+x1yXU&JUaW(1l*TcE>+})Z%i}^lSds(eADfC2Q_;Dl&`fTWkNQ`Kjl3ny-&gS2Y`- zde7ENG_DMKkG+FV>kX7R0t$|kqfKsh$IsS9$20ql<~vvGv8i!pY90B{m7BFjv$Ig^ zzG4gD5!;U+C*K_)%`{=ItVTD^=5hF#hn1UKP5iU!&7dTBB=y_-xNU`x?Vs1%O_;HI z%P#J<8%MiG-N#-&Jm?;6Zg<*82mV&A4q1BaZ8!HFg?jAO_0T3|y-KiqIw#fU@qT-c zp;edE@yA}$JfljOUsn+45IzVr!v>rR;dr8E*(|lKNTE6ADUFkNPjmKWae%FKDk^*(DgZEmwn0f5o zk-SQl=VA(YXb9Dy(LidWN|2}{CXS8nMDQZ~4U3{d5r5O+$oY46 zjyF54#@(T^qy2h&?*OMcnBn0oL**avacb`tb|8k0Ze}0ZT;uEWddSC3`R?f _BV zAzA}%{qY17Ti@?Eh2~`kW?~E80H*t~_ZIi_x83bXtFaep*5TXV9`1G@c?YlR{1Qg- z;lt@i)kj_=+8lkvKW`f#-or<1(ozPeXI=Pr!b1V-TkWZe2eih{*bp-C-t;4H>X9VA zKoa#P9(mD6rcCv+NDo}IU-skZ

Xa&wq4wA0K*+W;asb+I;BYA!_oKoz$5WySuGg zzeJbCC=Orlm8h9!qd7Uy7VP10WigCaLeG=2LiJ&9XdZgaz1AVRl844L!wNs_@v(L? z#K`t8>*>RndnJRschHvOu^$dF#bF5_%z-6Yx{>A~Z-N5HrMitgd?;0kF1!ws-lFM8 zTM}G2c-49rjWAJ-8yhMNS+t<=^b_`Lhew^}z!P3IYmtLady846(&>lZ)I)F5J`KXD z7k(5ShaX?ZaOe6Hj**UgsZGoADSgAif(a{#KJ>=9=bjW)dd1#Md3g3rd0?~oLGP12 zFkb$F2Iusf1!MQ8#aHt5?_^nnH`IC2Ttf)lE{d#1-9oc*%*d#`!lOB_Q!yX~z* zbcOm}ORX-{@!iAwS~1MG-e=KqZxL{=X%fehhK1= z)*p?J(*vogeI7N@-rt;54RG7=n2*g;6T zr%_v`r+c3O&5y}ug;K;0Sz|W9VY&WJPkU3--XwR*7JyM~r8;3Jj2$MdGJdlv2%iw0 z*1Jr55B1Y~k*WTROr8BAQwYdYdJV62&~5T3Y;ekYm`_ZdQ20R%OqF%AJkW5dy{fjS zM^xx+MReE!GAAKKqVcOVMMcZx_aL%BPh7(C?x(eQkF z%A1<K3f$;>!(vt5S=`-y~@!6n&CY-LV5s~xKE;J5oD`p8@`)&lfCzuMC-jWscoFQvF6&L^t_WE z+KowXuXczpzw`tCH@@L>7Wpg<_t<{hy>r+9?8(GnDTW7EI@#Or9!+|a{D1bA>@J+x zk_QWWTXMgN!9ADKY-HjgPqW`FmKz=GcY4yBva6GJm0zgEn+fZfc$sK_1UQ_W80RO- z4BsVeoZ>3i`T11%2HK6lnDWmUYLD z4x^7I!=wAXqiAq+5RFcRS0|(H=l~^}9UUU8MX=h`Urj&-CZH<%%TG90C#0v+Q*3vR z1aX%ZCbW7gc5ym7AxAltWD_Y~tdg7v2+>4;7Ru{0%*4+63o39h`Dj90C~w%?Rdvix zra$3ssN+(^E)*&mA0Fa9w_%Elz({atyVS(sE;ZpzP4uSF+`e4Eip#+oDkKRQ4Gf1}u^dV>=`rv-A!n6*1^D4NF0ku+Y z)4Yo6d%doABU(@M@yanVY2HOBMi<@MKWMjiOKkjygXa+2p>ycm&^b>SI%n{P&Y6fq z=Zq-ljczx3&gU{h71aVbMC$3-ku8P6UeU|o3jO1#-+yL5pZ+gs6dw+y=GM9pZQOWxY#^-qYJ?lRqytT=GFS28GS25mXPa-cGObhk5y zMQs{85ztdTmVBTK1B~~;lTVdegF~e-isJ4WPqB@56w=A4m#9>tUOt_QLI`1yD1aG9 zRE_qza-D<}&GG5sWxc7@?OpDb42rcuTTX}_Y%44okQlUzLbF2j1T`Dz(||{gmW5~gZ$34l@TAdSouz#AXwQB5ig(w%0K` zm)Em+*=XZ*pUfv%cWy+-2S;>V-Lq-m>`sjb)IfT+d<~)cT{0dYA0LlIxg`0AKSSz* z;d5D|J#?+R&HZhd^3R_56VE5d+4G_g$N3B8Ip>3o4}Ycc{#W9z=!vV*lLg}x04N;y z7;JudAE{vKdj|}e3iUg2Z{prK<3@Y;&<1d>U(WT*4}a*jx;*Zcn_bg8cE`LSIeyH` z?ALdX8qG0p4Ao10tlQk(8ry1cijr^4%e6N3vw!q%3^8KN+c`Wu=sq5E2m1T*Cy{$& zUTfc<>$dkFKVFh`?(t(-qS9@uXm`dclYlIQ6@QMnpN^+TVRKchIe0R_D<2$v^Y_qk!b6BqJZ(|PWbT9z$b(xn)KdJ&?icgud^>tpQ zqFFRGLkHo@nFZIfYwE^u4e zwJy?co3(n}q)kop8UxFeV5Kl+_!ykEusC#N7jQMUWKN+9CMT`WLo+e>wOuXBV~k;Z zn69gN(0bS0^?@NU%<7CRWboDWtfk%ze1;}tsH-xFv8*-3K^unR{u|uO5H>p)qrfxp zCc!BAih{=%*kn*^yP7!xO2VKIdYjt*v0q7K{r2WdUYI`gr-AOUPHtg>v9Wo(!|bCa zDNT)3?Q4Z^i_*CPIFsx_i+U@KrGveUF9!H!yZMP0=Z;Sw*Eb`zXIg-JD5rd6C>v{9 zUEF`QkL|`SvU^^w(Xh{iakATb=VNko?LjjG%b#BNpw_|kc(mW5nI_L*fo^LVAJkf% z!8hz4@7H&LHVQZ&t_P!bwylRHMh1uOMSY7swBMDm-bdl&tp)S_o)=?8v`H|5wwv#I*LQc@Z;i0ocN0i| z#ouQ7?$vl4vz^7j{H|$%Zt;3X^4v63E6h4MIKLfSv^8BD#H-FE7-mZ;7AHg%YbShd^xd_dZ0?zfM&cl^EP9!5c%OROpuwC?~Y zyvaRqzq<@kZ^qar;`$rBQiG6_Ohcfu0R3JuF|Jy&PMWDrKz2tMdf$qRLG(x)Eg`C^SKye^EnmFQ+dOZuu-3*UvBHRUBXCTItFw(8-&r(G=357tGmrNO`e;y#hb{LeOak{=QAhH6NTWq`ofnz+O>UA zAEeWSHK~LAVO<3C&GxyF$<%cAd7@U8n@Rz9sF$RYCgVLXq+#)00Ui7X6m0Oa9xKK& zfok_;ISAE;5Lw5*IE)XpKZ87gSn7>}F)bR{p!>lW-CSUY9j?^hh8Q_<@l0#CqD5sL zT{k8xASv|WvHyW$`MHB4cIy_7R=eXO0fV@t{Ye5n0LrV6XOJgK;O61sqwAt z*zJkBQ7!njg9E`{!o4ggP6`yy64{SH$PSy`18u<$m}t)ms@Y_6*2YHfON!^#M}q-@ zTJTZboT4ud z_JNOVm%xP!*D2?WM4+%_xr%2`MQ^I{?TXzKPyXdzuHN3|YuH;jvx*^dzT~~(fcW*@ z8WUWo9%h>M=>F&#C))${4A$w*#Q^S=2`FXIjFwusAOu%0*bDR*Z@2cwZ8zG8-%qI#*>4adr!4V+nH#!XCid|EVh!0IxzM;tAmUIcs zgx=~fg|}nohO1~c7>{?l7ztJqV#vS*ZT6rax!PuPw~SD?E%v|T2Lk1J)f2&%QP2{T zV&Mz#=x>N$)bG$9AnGaJCYzyHiuZOS3wea1} ztfv?9-4=i5_24yloM4$}RWasY+(JMy+&l>TV;6el#9d>~IPs=;N3yZq%$zFK@PzGX z;}SC?g5WefuB}an2^E{Y2dO`KIlNtrDpbRm^}O3d?3IkuTIfK~cKvY3c*2Q?xNpQ# z6Mb^jqfdfPR!(GQ?l?Iyq8Al=p^k614q;fkcad!*D4u%8fpiId&BxG7p7j<>&7Bs8 zNJ1w^jRkrDCIuIbg^uh@|gUzW1aJ){V z(-L#jfnhm$xsIw8+@ono&bbyW`ZKGThGehVXo)*0J7!vZLAN(^PBx08qAwjgGw0ko z;eemKH=6Ln1#w;#@TyKjab5*87#Nv6w+18BOYgaUP}^^_CD+dFuN;URy6XHYWcNGobh6fX^Z0IrL&rL6WX-YHs+^pv^D0ah`OYK)r<`uA8c7C zpR|KuhVAl|q*p$~$;;y0`aATg%V+hIjX^`OhdY4AAUBpt4BhwG3D=HY>k*Saf#?-! zk@uA9){)+&Sf9~!I;}u&Wh%_gCPts0^ME7gw(W-_Caxh+?c%6lirtw~=?<_sAoYAO z)6Cvgr%%*$7>H1ZZ$pi6V#-jH0!+Lx_OCMvzo>!bEz?VcB@y1E1MW*{5GCx_}54%ZRd8vZl%gW2~> zI*aT?_ov=pC#Z7ojDI$}9iL&Mp?0Wn$_5?lF(u+;ocwdAdlxlRsE}eysK3g|vZ84# z;bci#jyu%R8vUYIy<@LR<e=uE*$Tt-tIgcdA;y@ zsd>Ekc{e>D&n&%Oo}TQ!OdcP1R;M2Bb!+ujcKLo`Y<&Me>`S7^Z zXpK!TjUJ4=Oh1Z`?!I1`D97GSj2$(j#kbk1vHMf^k5^aUWaeJJN+k1($@XUaFuJ$( z;O$z1C{(fSJkFKLCnNR}L@LGN)_ zyiR-Tj)AV3#&OX7 zQWa(ns`EP^?jGIsWF~S)kQ8^2htICRdHfjde!6yq&at+i1##NkRTn;i3`pevgeiD< z*Q@XzVdc1U8EYSPRXUNlqlUim38rlO^Hu8)-Zm5W?_ln$L2&MR(W!wGL7kkgS;(J( z3rJPyjd)eeDy`0v=#3U7|56r&1G zqblse9S-i*U70iH4;AnG-#krNQGivkcGT{AcfVb{oB237`mM;P;}0e$AB=w*`POLi zcx!U+!Rt>Czx6hGocX-??Zt1ee_lOqKri-QzusfZYaCZUU#GbE zdFD9z_FIRazJ9Pb*&1&|s-x>4FVYYTLhu9GR%Cp(*SWKD5A4*yr78oDWdP{O<6iY% z*&X->mRFBu?m6gmKbHs2i3|6349=oxb=}YJy=^t%_CfLw-yM{@I_`$McfGG+Av1u8 zSzGR~3)FUD*|@t6D1c=KOHr@dU$4=w9dPdLP2M|%v)a|+MDI`90uBIu5H z*T3V*gldjv3-q&RdiqEq08J^g&lUk``X~?_KJtR0tsH{X>(`I%?z(yf3^E^iiIC-& z8Sb(F5d<-mHSEmyDf`AZz6#snZQNPk=x$V=eZ28)<2W{caO18WenQa?Zv12K>mD0m zr;X6{!H3-sy!DN@&qkj<+4vy1?diq`-jffUt)E``A9z?gtIp?k#&lZEMo+m5dD+A6 z;HN^AiODB{efMkT@0}L(&a6>^N(FklS3@v5=bjJGy^=^2sL6xugVOX4B^G^223P)~aN{s7RCYu~{ zo=&p$WB&R2lml|r{OH4JDL46lpB=<)z4u0L6ij$;p=V>BOV42e^|>&wU;(TjyI>oY zAu4Ul{+f6G11EbAoc_Cfpue7FGJF0zpU5ZllPTzX2F`(bRqz%%7DgU$O7Os**5xJ) zl-{sq&LgsoTh_)(A%`hILJ+3Fpp>3tGUcJ~dj>ScR_)E$=$Yu}oA;#=pSQN*?eOb= zVku|+hK{|jeemHoKDu-F<57WHAAkDIC!am7`ra9q0q<->fVZw)zo+;2)&ydA`J@V%nN zZSaBmXCoPqI$X`m0v_AlR_KbIJqjQv=*9*LFud8vi92(DM!-CDHdLiMCj%6yw6!1f z+mKWS8l^ZF=omu{14T)DO;#JnusrpMb`p*QWI|v2W9C`i5U(yI38+aVy=ozrCr+q~ z@ApYq;f{1GR3wl@9#Ia4m}ncNCSj8xx7)e`&*%>5rc;_jQMOM8pdfuhtR-~8K_<9GhE(oBLVo;V*ZynpI}*gMa@?%( z)ZLlm3i`s`%3<@s7jMS{#ZWYwF+@*a_srC~Jk))3ou?FcY2f_BF5ENV^dgp|N(IP{ zrrthWjX{(@0cZ(3X&c{`;fQ%BS}72W)sHI}usa{o?eQhFdo2e8>0?lM=f@+uM{=9t z34)I~;w_;Z-h!snFtbQ6++d^v{(A2SAGzug>9es8yJz!uC$FEp>QFSWRFDbuR5Blx zgs^qHzdp!F81?J@l{V;3*B>8IERg+#@z#>kEeSgsOYz#A4*|s`-OI`^1U(DRHwe10 z^&>%O&c{A^+;s)Q9wjfHHoZ) zeXq{s*=*KPj|2+)HlV4!*5}6Yc5OdA)XhPA28n3CLzSrp;F;QV&^Afo+u1}8(cc-0 zwhkVnOMk5iAOU=t_xAp1zxIYYw%HE60JtA(GX(Ald!)@Tc(M15$58;@9cZn0*TA-L zmcCFQ?87dr1{tn9{_exwcXvk=2FKzAu?;_#Y^U|8Viz&!L@BFnppJhhAbozRQt=g5 zl}OUba)sO7bmuX5dE(;_8;?V408e14s#N2;74oP0o+IAv5pTpru90nR0H&qev~EaV)(PT z4;WkxnekwtzN2A~>EV$aJL-1E;6lf?_qfT`AN+Y@s1R#5o+qE{M}wEAj_k8+*0$Y+ z?`?m_cG`Q*u~*F&(S6$cW6iy8<5gq|Un#WQ2T0z{+MWu7q34js{5#Mgf5IHA?)JJN zMHvdO;BDDR!heyi63YC@)-J>@64`G@U=JW;k!}o6Hxk7YJ^RTxr^~TQ{z=r2EK}uZ zU&>ExIw1gSuvEJ&uN={!MM5W&q5GVb%kBwmggh5@+EHhpUPZPfHq*SeSMIY7?uk&C zfgm4gpc(01z-<8dRJV5?Vwxfb*LTl_X$CgMLr%3}FC%MZBO*>c5?V0Taka_yKvWM~ zlBh2$9OHCE_$d9j9m>|W-GOQ|tb|2;|D2jzpcS?W35QCni$iMrZA7~R6ge^V7}-B{r!yjUv$Q7^Yx2RgM^zj5i%EO_P9B7J{j}e`u4xxuFjI9#M zt*usjs2w@3_1+ip(f&oO%3@#eJ^i!>-QE^v=_S&!e{hUiV1FX`JL#hiQbRG!LxNMm znGJjf_YB`XB!moGrIU|&>6$6P2X1vx_SQmm;y`PBRGyVy%slpWkQb2E&x{p0)q~b@ zEtGEO{BvTE@%&LDEJUM@=btMj(+G#-<7eGCaE~HvjJsQA6XmliyXUSZE7q6FVxb%( z!_S#j!%C%<{1>-G=CSuz;(1Fpb2Jhfmr&p98yZahmqQJ}YBz0Sqb8ACL<=F-Ee7T- zkr8@}WXUv#=Zt44x;a4dY%DkQ40n_JUL~6_{vDY$Y($5+WWOhfx`{QZu9+Xa)N81l z&-izOOKQ~LRGl+GHH?6Q;MYcl#|7L2_AtIO=jv77Z_IiyCJY^lMh9v#JWz8R-lyIZFYb{j-79((Z`G@L zO>f(K|>W zLi@teg>PT@p$k8H;U_Qr^9w(7;pZ>>!iE3q!oRujYZrdw!f##poeRHr;X4<8|H2&8Ndf|Uu_{$4_ec{H%n-{2#2bn(-Rv5VP@^B0#du3oHOY+h_#e0A~d z#UH--BNu<{;!j@usf#~-@n2p1g^Ry*@mDVX=EZ-1@jDm))5ZUK@sBS4$;Cgr_!k%d z=fw+`u3Y+_OW%L#?xoR7)0ZAx`t;J1OX*9CmsT&WU#ec(yY%`}_tM)-KXK`wUHTW7 z{?(;ly!6YLe&y1yU;6D!zkBIFT>4L!{@~IdU;6V)e{t!rF8%eTYnN|a{;tda@bdRv z{_yfgmm`;-UXEW*Ud~)DUS7QX>~j5b>+%m>{^83%arvh%|Lo02 zfBW+9UH;DH|9JTiFaPP~zrOtcT)uSW#+92_zWd7eUik-CzVFIMSMFXJyE1=e`O32^ z%`0!O{P2~3cIBt8{PdNdx$<*Y{`Hk#y7J3ce&x!)z4AL(e)r0EuKb59|MALyx$-Ah z{>PQSx^nI6?W^B?^&edQfvaD?I(l{N>XWOntLdwmtNE*ytBY6HuQsn9U;Ux0KXUa) zum0@Se|7ceum1AYU%&brSO5Lh-@E$zSO4?XKe+nmSO4Haoe|qh|U;E2zSFV58_3yp@wd-HM{?YZj*C($(y&k(hf4y>j_4>2x)$6V6udn~e z^?!N&=dS<4^;LuoA71}&*Z=JLUtIs6*RR~TcH{eReEr6U zH%4!a-I%@+zmd6-zfrugcw_ZO^~S3kuW!7)@uN3>{Kh}K@h@-u{Ec6{@yj=U`^JC1 z@kclQ^v0jv_=_8VdE>8de9y=ajC^e*I`U}b$w+2od89T{AK4yhj~tDBd*p{ket6_Z zM}A`Dr$+w8$j^-Y+{iDE{L;v;j{N4xZ;gCsa&8IihH|K9I-+Xqnd9!`<+c$sw=1<=IshdA@^IzWlwVS_w^WWY4-J9RJ z`Co7T;m!Yc^Dl1x)y-?SZr=LtTOZyUyA{0^yS09+daHJ8?^gHL+gm?!>&I{X^IJcC z>t}EM%B^3$_3O8O-O>OAHMygw}0&RPu%{=+dqH%mu~;s?ccop+qZw`_V3;P{oDWX_W#S< zoxoGo?f(NeCY_AOJkRqy&m2RNB$<+sBq2!>5|V^el7u87NeD@jgd`zJk|ZRRBuPjj z{-4wHcy71*+~2+b;q~9IPJ38;@AX}4?e{)=ud|QS%kY+Am|>FP2g4!*JtHS0Kcg_C zB%>muI-@S5C8Hyw6Qc{GFJk~>5MwxFEMp>L3S$Oi8Dk}56=MTq2V)mwFXI^FIO8lM z9TS0xfr*nzoJpEVnaPC7oXLvGn#q>QiOHGCi^-QMk|~8Ln<BYPJ!>0l2kQXq4^}!N1Cg63Nt7pQ5>1F^L<^!d(UIsv z^dfo_{fJ@2C}J!zftW;0CT0?|h$X~oVgs>@*h3s3juOX+lf+r#B9WI(m`#yQl}(q; zjLnM8iOrYIpDlnbi0wFAI$IW7Hd`56C0h+!D_a-a5Zf>tEjxjog`JaKkX@Wznq8J% zlU<*k#BRcF!S2TH$?nDO%O1`i$sWy~$ezTW%AUbq!CuW?&)&%1#@@|7!%oLR&%wk& zkZ+Q2mXDsFmtUA)lwX}+o8OS1#Ba%O z%kRSP!SBrcMB z6l4%&666)s7PJtw6tofa5)2Xy6O0i|5=<3L7t9pQ6D$#|5UdvL6dV*B7916v6kHT! z5#kl%7m^f`7LpfI6~Yg|3)u*{33&+N`#?g$Lg7O3LfJxvLS;f#LJdNVLPJ8sLSsVX zLUTfkLJY!0VRd1Wu!XR-u#>Q}u$yq8aJX=caEfrMaJF!XaJg`WaJ_JoaJO)u@LS;# z;R)es;W=Sy5qc3O5nd5IZXzNpqAa2LKbY8ZDYAnj)GnS}a;7 zS}WQp+AP{7+9x_BIxadXIx9*mMiAo^;}(+^(-$L&nTT15xrup+`HF>#g^NXs#fW8y zWs8-FRftuKHHx*0wTX3$^@#O}4Tw#P&4|s3QHs-v6UDj3CB>D+^~FuZEybdqC|#7mPD~cxkQ6RvqY;zmqee$xWu#srzE$ex}>J0m87kty`-C@ zucV)3pk%OQq-2U@hGeE>zGR7Hxnz}Oy=0?ghvbmtxFod{ofLxrMao^uODaezN-9+Co?27Dl;K7CqtB#lvS2hmDQIu zl(m$#mbI7lmi3eMmkpCWE}JTwE}JWxCtDy}BiklBEITSYDLX6sLzZ5SNsd!aR8CP& zT~1q$B|hnD%UR8D>o=NBsU^AF1IL0C(kc0D6cDT zB5xsYCGRfpDIXvoFP|x&EngsCE?*(vDBmRCDL)`jsX(njr@)}Vtstl%t{|_Vs-UT$ ztzf9&sNk&NuMnybsSu-(tdOdZsgSFXr%f*$D|RUMD)uQ3D~>5nE6yrXDlsUD zDoHEhiC`srB_}0kB`>7_rBJ1Cr5L3or4*%Hr2?fYrCOyXrBImARFLl_iz&7m$@rl+Bbam0gtGmA#bxlmnF`m6Mdym9vx!l*^PGl$(^hlzWxO zlxLI|mFZR3RXA1nRistaRh(2@R6JCCRs2Ne`0>i+5h>cQ$^>f!29>c`a+)zj58)U(wq)oavi z)f?2i)ce$j)yLIoHRv>0G(bac9M3Ac7}GgcD{CrcDZ)7 zcCB`scAxfJ?NRMy1cr=x}v)By4t#Cy0*Gbx^B7wx?#Fey79Uhx>>q;y7{`r zx|O7R`hogE`l0$^ z`Z4-R`l`W5=s`t|zF`tACY`m_f0222Jl2K)x12GRzK2C4=m14jc715bls zgD8VogKUE;gBpWcg9d{}gJy$ngI^A%mf&p{}96A<59m(9O`((91B? zFx)V~Fv+mku-356u+y;5aKv!baKiA1A+M3Jk+_kpk+PAYk%^I+k&BVLk(ZI5QLIst zQLa&eQJGPtQH@cr(SXsY(Tvfo5j}}OVj;1Ugh{F-b&@X0kmN-2B>9qpNnxa9QX#35 zR70vIwUUNOd zriG@(rZuLurp>0^roE=KrgNsWW-MkzGg&ibGm@EwnXQ?>8D}tXHC>qNenERNy7+ z5H7ng%)QWEv9-I<>RsW!k7xI_B$~Ax63jf*9Bd_R))uO>^Z^^wrn zxkW}Ab{Ru42iLUY#ZOC+O;8K#}I-{9=hIR!L?ODZ&vviE~bgW_;tOt2B4!$1He?8hJF)F#v zTk=|D+qIw%SwZxyy!6rh=cDB|?v>+FQ{ds%kmud?^4hLV*FSB#;5>I>!^N)~boW{5 zKC5(pRv!MSTzW&8^iZF{kfLjV;$dRyVcSd7wjEVFI>=p2WA$=lLPlGJ=7$95%R(QN zIo}v__IY~8r}g-%);nH3ceM9dYOgunzh-UP)3qB*-*0S>S=0Ww+V}Bzqs;gf>$g|t z#yI9ojx?HBo$a<#-EOZM!*V*t>}b2$>2TjsI_e?x!6_`CDe%@8x%jf-5GRCRnJK^jeBUysi4hyFWK>4 zzWtZ{i1|Yi`uolGw>>D@=5lM;gMSxDFWP$V($*yH%SkE97gOGJ zYQ72mk`OxFr84{=!Q_GFE+-uLJB3K|FtTAt~%tZ{!?lfZB!;V4tg(cQ03?lw4JY)}z!uVVYd zE8AC}e7>4`87=kK8OpDWe5{P_cXQp>VMjpjl zJhH#CXfL%sL~0;!|G+Wo#ADe`-?HQB55_a_a5B_-zNmfIt^CgT@O|SQk8kcE9cmz@ zOP8k0Zwi)Y5@2B}4Qnm6yF71K?f0yjLr#YS{5`<`0Qd)ke;D|G0e@fc_Xqz*@K*wV zO7Qmre_8Nf0RL|AF9iR6;NJrNhrquX{KLWjJNP?+zd87S2LEF4e+vFN;9mm%=fM9W z`0oM#I`FRq{~zF=4E_?}uL1ss;6DTY55Zpz{PV#7E%;A>e*pMD2Y+SoX9s^8@NWWt zQSfg7e=hJp1OBw&e-`}dz@HWT4}$+|@E-+#N$|f0{z2eR5B|~MF9-fS;Li*GyTE@F z_+J434dAZ}{?EX_9Q>uhe+c{)!T&J$+k*d3|KL9c{zBkC5B_D~?+pGv;NJ@Vcfem8 z{MUg0TJYZp{_WuZ82rb<{|flefxij(TYz$QKNI}5z<(P2Z-f60@P7gR!r;#g{)^y03I0#OzYY9XfcKlon-|K;F+3;aXC zUmW}uz@HENFM$h{P%*tAoyE?e+~F2fd5hO-wpl-;9mj$+rfV|_)~-b zSMX;9e|PX#2Y*NKuLA!g;9n2^{NR5c{0G7R8~CSzKMVMKgMSbBp8)^U;GY5h0^lDD z{v+W32>k8AUkdyO!2cNdXM=w{_%nciE%?6!e`E090sbWLPX~W_@Mi-5Qt-C}|7!5( z0RQ{o{|)>)-N4@r{6)dv7X06Ue+Kvmf&U=*>x2JV@ZSmk5#T=!{?XvS z1N?2kzXSYd!T&Y*7lQv*@RtGq<=~$J{;R-06a1CHUlaUSfWIR6GlIVu`16AQ0Qk3o z|2puG1pg1<&kFwh;J*?4)xci^{9l6qb?|ov|BK+i5Bw{^KOFowfPWwOyMjLv{4arj z75V)i{OiHr2>ge@KNS3Lfd5nQKMww0;J*j_PlJCN_?Loz4ER@reX`;4frpB{{`?50e^Auw*>zj@OJ_KgWyjK{)XT$4F0>pe**kHz&{xL zOTgb4{Dr{(E%^Tc|61^m0)H;>mjM3;@V^88>fj#-{tDoq4F2}uKM(%Pnp{^!9z7yM1Z-wynB!Jh#B$H2b{{C&Y+3jFiI|2Ft@fPXRg_k#a6@ZSsm zY~X(i{8xhiYVf}a{#oE(1O6u9e-He%!Cx8tJHh`8_;-PS0{HI&{}YK% z{{7(p6#U1b;v9Ukm79{sQ3N3;rv>e<%3A0e=_p-v$2T;C~7HFN6O@ z@Ye+Y1n^e@e-rR`0{=?zKL-BW!2b#OzXJd3;Qt-`>A+tc{7b<91o)4DKNt9SfqxwM z`-A@;@D~IB3GiM<|4_+z79Oc=6(;f!EJreg2e;UXu`8COZ2R^LM13A0SW!j0dHlBtI* z?Y}Dtef8T{oV4#@ocLO*>G|%r*4?c#jR#HDB@%PDR#-XZlC7#Ck!ECT@!G$VF zv4QpT+Nj*rRmbnocKQyxB~quHJH>$C(}ooJ=sQn4h4*fh_I_ny`k?uQPyF4W zkkAuTz6Kl9`vR&YZ&(lB;Vh2(yuC=M`MS=daIQ529*2~9-fmH~Ni~bK-TEqcTiM~O zzSVpeq83ieE}z}FWA$$CA7+WMJNr*pehb?m+8J2*n#yvIW1`@YOriaDI;qiX)ORZs z&xSP~$y=`3`6X6L=~`Z`=q(>=s?CQu#$@^0kDj_7n*aF=-DLJ_?{#fcFFd>M&@L0) zs@8FI;nKZKTLrZX_LDg(gGXtDM!#Ov{uoWTGQP!VSyq6n4fC#=*`vY+`pf#xT%|SW zTUGPUs^Yj^60OU<0RN}UXcpPmZxNeI<4zr^dG^r6C_eank5`TH`_j0Ccsea-?&01~ z4?@jX9LOGFGCt5OaQGX!L86Zwq+dNIt5UR^MPS{YO*`in8Gkrv#V`qUUDcPwPvLFr zVOk-4Y4eT_JLe1?1r4z>uN5nqh8>fiocVP9d{PFlbz|MZ9HE!)-j>0eICxn3R@_Q{ z{Z{5eoyjW^J$_DJRsudXE^bQrQg!);{DT4kwixaS$F+1pCDncDpMGqK%*~RZoVh){ zXLFdM0bnlo>PDmu>d#`&zhDJWMTY2&$y=7Vddi~2Fjz`e2G6-b1+P5fTv z8=mx@QgvV+A(}t)JLcYfcK^z3%@b_joZ|I}qn{)T9;r9GSB|~q8`LW^-|sZ=i5BP_Gzc2Xrf&UHg=LG-l;C~(bxxoJr_-_G!Gw^=} z{)fSz5ByJq|3>iV2LD*_uLOTl@P7^dj^Hl?{&e6^4gP1rKM(xBfd4h{zXkrA!Cw~q zPl5ku@XrSSHt_EPe?jm+3jUeke*yeez&{B5wZZ=i_%8#08}Oe6fAoX*T?PMD;9mj$ zwBYX#{)^x*2L7qw{}B9x!M_Il!3F9!cA z@P7dQG2p)z{HwwL2l!`!|84MZ1b;Q~-v|CL!G8z%dw_on_%nmQ5%>#%e>nJm1Ai9q z_XB@R@Sg<#kKq3p{C9$XI{1GFe-ZG%2mU%o5k{58P89sH%hUjqCu zg8v)vX8`{U@ZSplcftQX_`8DtH2B{E{{!G(0RH9RuM7V9;J*v}!@!>&{HMU568tZN zzbE)dfd6vve+T|O;Qt8xpMw80@Gk*>W$;%5|2pv31piCmUkd*0;J*g^XTYBk{1w6f zIQUzEza97wfd3Hq^Me0P@Q(z48t``k|3L6p0RK(kzXAMJ!Ji2J$H0F-_@4m(c<}!O z{_5aA2L5{B?*#sa;2#S9wc!5&{GGv{4g8OQe-!u|fWI90yMg~6@Lvi33E)ox{{Zms z2mf>6e-ixN!GAaS?*)Hj@XrT-Pw>A8{;uHf3;t%{zY+YY!T&q>`+@&H@Lvo5-QeE} z{-)rc3;vtHpBMZY!M_gtgTVhY_@{#ZEcm;D|2gpA5B^Tz9}WJ(;O`Co55PYj{6oRt z0Q>{M-x~aj!M_Onb-;fO_$!0ID)>i&e=zu81^)}+FAM%V!2bvM?*#vE;NJ=URN$Wo z{)ON#1^#!zKMeergMTde=YhWu_#Xm)KJdQ|{$IfVHTX|~{~hq(3jPb=ZwvnR;6Did zqu~D${KvsR3;dbE|0wt`1AkiZuL1w#;O_$dPr;uZ{O7=b1pH0F|2+5`gMR|}JA?lx z@LvJ`OyDm-_7DC?z<&(e;J*d@CBT0g{B^-U0{o@H z|33K7gZ~8hzXbmn@D~Ap7VsAXe|_**0sn09R|J10@ZSLbL*UN={#D?=8vM6`|1t14 z1b;d3KMDTpz`q0hbHJYf{!!rH5B?{>zZU#6!T%KaKLr0(;7;Qs>r*Mt98@P7vWrQmM`{xslU0se8|F9`lN;Qs;q)xm!+ z_>;h&AN-$yzXSN2gTFiYuLOTK@Ye%>N$|%*M`LfnzYP2bz&{ZDAA!Fn__u-o74Y{5 z|6cH)1pj;BuLk}`;NJlL;^1!q{wd&33I65a{|5Z)!T&J$-vIy3;O_|jQ{Ybme@^h1 z1ph+t&jkPP;6DWZO5nc_{2zip75Kjee;M#s2mh_$Uk3iS!2bjIFMz)y_^$>3Rp8$V z{)ym!3jF=Re*^g60sp<={|fw@!T&D!p8)@j;9mv)gWw+r{zBmY2>b`Yp9lPHz~2`9 zw}HPe_(y^Na`0ab{$}9c5B_1`9|-=I;4cXN_TWDX{uSWg2>zPjF9rU!;7<+y9N^y$ z{-NMc2mapR{{sAJ!CwvhFM+=T_)miWQSko?{?XvS1^ffRe;4=*gMT0R8-V{i@V5j1 zd*Hte{MUnj8u-_MzY+NNfd6~&j|YEl@P7dQ2f*JL{121;ga1MBmj!3 z4e%EL{|WF90{?XIj|6{8@ZSUe+rfVh{7t}L6#U1){|)#ngTDv(r-J`|@LvP|)!;u1 z{?g!o9{jI?{}J%72mf;L-wpn!!G8q&=fVFo_=khPD)?J~zZUqnfd5nQp9cT^;9m*; z#o(_4{vqJ+2L2J?e;oXugTFTTH-Ntj_&)~!F7Ouz|03|`0{?U1uM7SX;O_+fXTjeZ z{8PYx5&Un1KRfsjgTFucXMuky_+JEnL-5Z7{~YjN2mXh^|0MY5gFg-Ue+2(F@J|AN zEASr&|102s2K+m~-v|8Vz~2-6UBUkt_{V}j0sOtdzZd+O!T%ZfcY}X6_ zl}mR;^*^mmAsByeShrjud%IMR*tLDmITn5i9pZbwecg6sM;gb|i<=+1c-}a*bNA}? zKgOzFxU#Qu%s-xa_~i3KietAsSIoTGNPDx~Y}sQufy5R=CaU_98fr@7QD2=T7Lv8s z%MYnv+8=$s{x0xL(O!|^V)dBUvzqVuf(CY(Pw)irOE<>*S8ipz!gYst-oe1~{*zFl zv%Pf-A#Izc1p6+l#?dt?m$5QCNgn*@w#6p0fV*N1gZ$h5S;@`k#xK0mwYn-ZUHV|O zS})o*-JMgGCgN7`Gl@ZOHV=E@mEq*h67oR)&Ix%~nqOG_WBBps`1jFL`qJ{H`QO)H znx9`<@z3!exsmfD-Tt_Oz_PSGIhmY>ug*Nja_(Q3FQt*wvE4j*yFYjL*9hCCjs4Ht z-A206ulprWlgs`4cxf5AZhl?=XB?!sPb&!QEvL@!+*1Xa{f!l+V2(ccl#$-1i7-v!|#>y zck7cYhg^Z=fjs^F?^gO{87eCK%L;<=uMP1_@_#>x*87Ydy`lN;Vs$wNj7&2@6n}2FPimmZ)4lQ6e1F!Wq+>SA zU-{Z{)VUI#{!>l~?vi)c(oP;-apmh~#?Nv#{S#3x6=Qqn8`j2j(_7}QsCa+s`rx+A z$ES{%6t}IKj#JPy@1NY2vMW_%U`5IEo83+avT21LTQ22G{zBW&@-i~~mFvnn9n-+a z8lkAI-w)nj=jY!Ch1N5NPU$}vOV^Y8*Hv8`~d^{VgCnilAHu-jiC{?7znFv+RFG!20~Nn)3WR-MFdWV|Yf*oz_uay-@4) zFr#+%>Y(eV`P_q#rMX|qd2X!sJL(eVllR=!Q9AnFoJxM%XuXl-jU=CVE1gdP%N7p0 zHCUP&Vuz7<-JuZMvy51gOOAm&aN$LsMAGjAkbTmmAVq&$K?tYrwVq(Ca~!!UQ5sHl zuyRU`Kd+gU)8H$R2=NzQ+50g9|v)?(QW_0LET#u__<}W*2koYps$>hDtXK(+H z<4a}d`!nB~05$XUuBQ2yW))evRfUN@rxO}~+4koo1u0>61)+wL^0$Ov&ln5WX;;Lo zq$w|)CaE~AH!ZE~u6=$>lAvuOYQK2Bl5u5?@AcY972?UNHPrQ;4tH5Z)Km^WW7*6v zT%+j`S1}_xw^n4}U7JbJg-vwk+f2Kn(qkwh)c!d?j+|FFKN}GHq|G*OmeF6TK%swM zflHes&Ur-&QtaFcLLM_+=$-8mvoEWQ>@RFhc@#^aqso}?m477Ftrzx;#q`szzDcHHO8A1BT+KfSrM*FVP#x30c?SF-woZtWA-V~;gR zq@@~G`ZKUx^;15%+&TOCDdK&+0xurg-&Pd(+dh7u{aLZt{O9m{;@`~wzW#ikTO=?#G;1R!KuM(stgUb-QTFb>nl}qO@rZD}=vE zm2B~~(!Z5$=^8vf>?F0oUoV-nc)4G7b$NY^k8#FqM1=C)w>8@-xwNHyLeA>e(QH2I zc3m!kM;1~=16RGt>PKq$cL1xXXx`D>sB=1j6Y|7wc5W@AW3T*{Ze}^oz0ZYuKGVP zR@^q`m?G5~CG=rX_)OPt?eOc#B=SD|;L&>=sUA?L+ zCE=s*-;Atqxw^~9uEmycVU=C^4z5QczS{GxVN?@Wf6Mp0>)9-qlL2!b8zkaRW)glc z*Zb>~95nQ{)GfLP)6-;MWwoAt$MM@978e))`*OKQ7Vc1S+*!TQ#gP74?404Jja8Nx zsE_S`zxG(PqMTL+sE&=RDZK8YhLd*vWbK4U3{YU%4N6t?PZHa{B`}? z-z4mcI-Fj@H8i$!@{dSXXFio=0 z_K-nhrbJ~_R>Vp2wm*|eHxmd1wm)|DkN^KjdXA*bU(cEIo9?SWzoL^oTs~T3zc1~` zZBPDXr4MaOzv@2HGmw0;#nP9v#@7{V`H2M-u9Udh=s(N86Tifh;+TAnO zL&mQccp@`S43Dlkz;vEN_K~Wiud?f-)*D7UG;3|9{|xJ|i^SXSz8B|no< zL)<3y&x=ViG4cg1?mgp<69_AoZja!O)P@Cyl$3i^ZpG+C1oBKse^H!bOYykKeb;w- z#oEkWvNQq58*r3wawOb*J_yVf>p{ev3wce+1<><_#$H1hNn!j_e&) zJnAh%%`ZXS{;K=;%0j8mo+J<`jVMUPyWs& z_U^+l8Bcp|CH0s4l$X;?DA;B6Qt~k?#Sg197hMaQSC(=! zpsX93Gfg|IEq=VR@8n>z^|9Th10NN}#BbV16rDTxdNA!<+nu%}WkR;pUOVg-#Mt<% z65l<&#z1x5#(#!Now2Xh(cMpy;1uJmF6nSA#Ym3fpx}3xA=={X{67oZ3$6KI&o3* zor;a;$Oq=37j8R^M;bS7&z2c(d?6a&;VSW0wmTgwXTZIWISxwp>C2Jy&QL;IV z&tpP3@9u+7S)-dR&j#s+nfpdQGgg?G?DH~r|DOJ=Nb*5JcIve~hZJ{q?YF;Tz5c3l z7}3s+(q;9Q$8mk-7QQRDYzx}D#gwmq%|tN2RjJ^Dv)bEK>X+i1jvQqeI)rwgiGm6x6HgzzD*Gs@qX4c`=<%SokR?RvUJ?BHt3!+aM_cBdRpzDE1b z{DqR$^+%=0syl9JTbS>gOG_~4v}%cKdVP9B^aZ~7J=7L24@O$oYFe-P(68H)qHNW5 z>|>VFe!Io{0`nApN98gtLhFi5ujX6dsjiyYbM@s7p;Df({1RRj8l?wL+=stXwyk9| zm}tsHQ@qb45G;sX>jx*!db}x5y4;%-Nz%HZ^xX38Gi@z_r2gxh7lIQ#4lq+LH7&V# zw_{~;Z`2D5B#s((0N{>2jO)5!T#e3~?xh=mUO-y|T$Lk53U7~$@JgX&3c#qaQ z|EuYLh4Rk*5!a%9THtcp46YrbF#=6}=dwBYNAzv>KHC+2Xrx;4{W|ldY9-%wkgIha zvBgf(^x2tr`(ho~IqelC&mKEWKD*}-2p&|FQrm6Ayu3De`0SYWv>TK#lJwnnerCf~ zF9ox4M?s1Zf3MQzyr)xgd+fGO_piu~`KVF;;#-c&ve|oI(z~zmoYP3s{PJMU;1z~_ z&ckY|<+HA;(kjD@Ic6^pz{X;6`eAMgap;~56Jc_&3k8QH| zGv}5bVI2d$$^9Qq!nYq4LJ#~!M7Vzav71?*Qev-sqkhU;if|dCd}V7RfB*1OgzLSo zhWH60!b5okLKY!2poieM=s+-GCdO1v+7#kdyj13B5bqp!m7fQ4I%cmEUr%GAJ#>=%8m8Mh< ztjwJhY>2)ma^)C@< zh@Vp)njc_aCALBS*LGNea-660|EnDa1+w~rXN5>8$4CKzQ1nMRC`DuUZujxp=eK>| zOvt-^H@wq1w{L$JyWKB#`+c7*pVQpIx3YXpY|@M7ZI(rJ#ZGfKeykwfd_!XC=QrB@ zb>y*?)VX!>NqR%JgdZc+so}d|J#?ggh@hvk!6 znh!Xh6GErlS3dlwp~!;uNzcGZgW0%*ql{}8$>ksq?z~qlHz~8SxTd-9t5E4^`m)CtG`^@IDSlcxN&^MQ$uj4 zbb8%g^U~h#mG3Hr9+$*Z7x*7{%eia6*G12aS4l2;RZr!cnBm)R1bv+Z4HA9&T1#)Q zRXn{veDHF{Ru>`^VK|7w$7~@YUmLX-yLO=7~Hk zbsPVF!bUgs)t}cPza{+I`|$t0i+HJ#$>%rnCrfyXEh-@pmK$Lj11?K?FiTCRnn*z! z#}s84PIRRNf+Xbwsw+!F(_~W|@8cthmv=7hZt3j?R{)h*n_lSW-hS@y6XvM|M$p$> zhTU;dkg_m7&%^N7og1oWZ1#X@Zu~o{Wn`UZm_cm~NwVLneInkgsYfjpJF4cqMg@^Dz@^DIex?bAo{FeEj{deS2 z{7-TGW4pg%Te;uf*YB#WbC}JToK^Uh{e;c-lLyPv%XBl;#_P2sw%r<~ExPNuC>m1y zEFj^)0dDut>AZ)XXE2w6E;d;5qF&<%J_L^)0WA-rheeHNFb315yujU+&?ju{J$(yCq_Z&A(Q>x$eTY zh$}ZP#@d#uHtsC_d~${2=GC^EZqL|moIK)F<9sv0ZM9Ur1qIc+V8fj6(iw@r zp|5&MQVN2@)l-J~a;83Cr`)5Y=_BMEyzYwVoRq0(G0mhnT=}-V|G-1a=3n;zxA848 z?XFk5B4M)qhzysKcu+@oY-tvqW9p0e>4*n)i#zh($rU`>$tRsgeW~7-V6%=(=6NZN zj8n^#EEDmAU-jDGkhEgyh-C$$-a`h$>QA=!mhaKpX+&T+DP1fVv3W{ux#+da;rEZ7 zUpvIPR$$kUPpoy}8?QLb?5W%1FLwXt`E_kYV(OOX(_3=CcJ5=NYWt^H9?zw9aNM@^ z>%X0wm!F)qRImR{-2b$ne=gI!rD}LGiKZ=VT$1%gsAS)>xWODpmCSI$hm;pf=?&hxF!|!AHIiUve!Tqq~vt z?*^L@ z<;PCgZRWRYQl#-t{Vl$LW7_+3E8H*5oD^U@l)Bm>f2ke*+w%Ojzu(Kdce|YXJ*DUC zE-q}(57Z~@tE^2Py;q`WA@1`wigIB@mL~W8s9t^haAlwf@tTgOyG2R1@xA>ew`D`K zlN=O?v{UlwI}fR8H~K|}i43kXB}I7OzR|D!SdxOj@cpE-c=Mg#^8dHxk@~ZJI$h0$ zG;Uj04(f%tKB0W&Ih)vi>FX53xb>;3k0Hq)rRJZqmQ9o^NE!?g91?Gpev5uM`qa-* z_hwGMI&pe5^u=~=#?qL@f~ixJK?UJQ7_V}E zsQj`m&P+SX-}QP?V%fwclbVRLbGFZKZiv5q@5I~McV8$qJ60@@xG@|nAj6!O-o#vT zoI(5bG8VQUkL}Gq@;xXtN*0R@mUN{vSsY^tIP{^QDJ1wxkxx_S2D1)tg%g8+Q;xhF ziLANus}-6)9oaZ?B+1^{v@w}wsXhO9%l|j~|GRn;%b#|Cr8O$hwWYknyf;LMxNI%= zmxw0^ybfNOiM*L-{;1;m!jy;_we2bAkvYne`*T(X;T9(;nWEH|7c%d(rf-dS6|&gx^XI0BQ&0#OUKLqX?^{h{Qh12u8*`iUz}fanfJLw?N7G?83zkl zN1xepitSryTP0JtcyE!L_q30j-Sfv+6iIQ*ABq>!dT;GqW|PfU@+4?er^epMWOL{J zf-SmnUvA_qf4H#f^zw~XcdsQ$1l2m9-zY8hZ{q)t^=0(u`Q=Jq=FQ%bdkKb5-(6L0 zo~LV7I$mDh{DkqD$GMi>s>=hytuiPw?(ZC5 zGDIm?Ibn-#{A-l}vm(*8ji+1tj_c2IFke<9wR}kPxGg{Cvgxw8PWB3giROf}4=N&A zIP+z{G*u1P7g+_*pKkfzS@-2~1Ftlr^_8x--u6k+*LWP{m=TS-`ljZ&LeI8M!YT^q z*7_vJjAiYv=;5fpuDkWq)MNS+i@Jg#uOB}>zP@8eSaMak+X27z=0-lQI}+4I=x*Sjqhd&Gn&#WZ0T10IKNnLOG(Lm#pY}oD3&8#7@oK^L=mbKo!v~Vltu-L{% zzy8d!pyRmo)jxF0CUA4F!Nv3|!THZl>uj6J{o?l8e^~|Z6^S$7PpZFgwzcd^nJ!_< zd2mW|=i#Ek>UB!ol^kkyEXwTXu2Mf5=}8tod}mzPx10aVi-9ATB$alx&-zs-6b+`` z5TN*0uJRws|6jKU`=363y$>SaDdP69D3F5mu9ZNLqodGWt0gzIKl{{0%Jch_G^VEe ztRku@l8?=*D<{4j^SyiMh%KjT!)HC~Pq=f-ct{{*P*UFf&M{DUwuR$H`9B_|Tgr^t zw(X4^+fpBkt?uMERkPm%`1wiZ-z}V{;7h$TZ&$NF!L#UFR@Bp{#f_fd%_!EKsn~I1 zI#6oWHt+Zy4GC4m*7-veqL-xXm3N#DcY4{(N+W8cxxaBv1tHe9{S0yH!K~!f&Xyn% z$A1m6DkHr#yi7~K{mff^G6;1>wR_6Zi?%JYMpaVqX~tMk`^@Etu{?l$K9gX z@Um1*T8AY<(0YPbX@)yf+4PYg#X`x#mm%dZXI=$-XP8ZsTgZQEsDKdPJR%UZ)dhx+ zT;`h0&i4HyK(rP9l=>eRw7&qkL))=nVk(NbiaIjdTIP9IR3m&*3O=r!_Y zcTfRSgeT*T%8Q#RB9>>3Mcz^~KGZVzY-WgirmnQc>2-@`uf3mp9zw`^Odx1bzI^}W zqx<2O&jkVdvdU&CD3<#U$B0b~&j#wQ*f&w6 zj1+v#kPdrVtMST-%bGH8zfYJ%i|e#v+f5GhREqNA=5-wlUTc@VOSyH6|Ie%`mxpAC zoheEFN7gKVmin)*wKV6>;#)6-uj{0~MkmJ56ZCRYGSFr7(&zg+2%C};Cl`;2@4iXJ zS?9nUXX#OOze$=SWVVw;5p`=;a3D?f9@9B4qKQXzI^D5d5xK`G1Op!sEqT|?4z4G6 zN|OgFWziI!)7vVn{xyi7c|Tn$`X+J^LkMELlR)sn-}ZicIi9<_Wxkf=Mt7IfGw>SC zO$nb>jSh}Qfoq2nDHDZHQ9HbR{$+N(aTC+;|E=T^wXWeSdNlvfmml7cAKT>3SD<{ z|2jX{&8I)Tr;4XzDs|CX+^8a`aFAA`OY7ka^vY3?TCs@$73K1rR}UG|zvYepZ9el@ zDZH8PMx5N0@ypgJc8iClYT{n6dJ-b@nvUo$-}dtQio(;rFQi+NW^`sZmh@12r=CeI zG>H$6clcjyy$3v2Z}>lc9(!d**^j+9A=wFKW`^v@j_kchk(H3LqKt&hWXsB)W$&%X zj_|wBQs-Q%3+Jf3A8r5oVs?dkqj8y zZsZ>QQON&z-9xFMGOGF2J7Tu9|FeeZZx>_D0$dh>hG$BNUEQhm^>WY#u_m9V>uo{I zQ}pePEc5W}5&z6ol83{ow?tQkrLI9E^tJZRnYilNJtGRGG)4qokC}ggfp35~f@le6 z9xDW-IZP@-|E)6RKNCzW{h|He?dB2CS{lE_4|aLkcYJ*7Km>FpEOx^?C0WyE&iT+s zCSn@*Nk=}(j1K}jJyC90Zpq7dUsT{tXISgo)V%avKr!+%VlSxHgy`tDYmxno)AU}0 znU}ei%lF3CIf!K;btg`gw0n0w{W{e^KuH;r+V-%Q8WUU#-j3np3$^dw_K3ZCy*q)h zM*07!v#R{>R@4;j$a3l*XCwi2ZUIkFC&FUaKvT52SL*GLaBE6@{4Y{HHpw1nkJ6yd z&*@QY!=oyq{+u7fYz-+EwyF+jJ5x@t$L4`ef`YV*kZ&Hb#}{K6_B-+&K6TKf<6;mm1P0>mL4@I`Utke|PNQ|GsQ! zgI)Y?0v}%wfsM^_t3v*+a1P_F=L@$z!H(x5(|6^dPE9|o5#~!b&c)jAAS-)Ron8-* zVHew^B;6vG^b*YImUN9I68gM~-i6p?VxYcfRkThk9dWp>uk>NN>T3pA=ZHzL&WL5A zj$oR0)epr@|GO-$AQj9@H~&tdK0(fW#wjSP3pj!|A7CSJ%F;c)l;YHn1^pn5A|&zE zq}g`CvVOlIR;;EJE#oS5{z084h(c@z2{E%es#Op>;Jr{y_!3UY>O7HV--?~_P<6&C zw6%xjsaPBuHBJJAXljdr=rT zE5HwmK#(JNI}lj#(`kJCXao+d#fBD_CpeO@jAZ;?i&yu*@Okm*PTpE4K6HOv5wG6z z^7OMNp%3h9pTB_*t<0Y9Krs}};npdY(C_W1<$0^7yByK8xAjsWryQ+UJVjHZH5C+o zX64uB#<)stb-CeW30jYnH**dy>!prz;ZgQtov{}ER}=h=CQ4_hno?%LH3CdfHq5cX z?FQif9cJmn2Ik8Qyd0HO5H^q5y&)o<3M#CXXD?fxpquO?zn5GIsxN)}8OO|T0c1kd{5DEvYW1;a80S6bF&>Gm z8*%n$;CuaFQB0sHtc!{IHiwV@6}%e()$pPC%=m2ylbYKfyZ2tHO)(Ocusid})w^+V z%iyZk^i+hOAR%Y#txm3w3%$Ni3eJV+IA7^JLjTr&-KiLoPCe)j4PKHtgv@YiK6C%9 zJ&eG7f@xn*aAwZq!IT{}`vm&~+14fE0q3b0h`8NGk0Ok2%kJGl1h1Lg$)IdC|GDv> z_nTi!jM1R`)2~5|2Jti|SUU40hW|zcUJ-(L zFQ&P50Uv)8frAa5Ua}ET&boS_xjeZXhzt|;H;Lq-*2KR_0l7A@2YOyJK!4G(90b)( zBroaY;>A6aFQM^zmOK8|GnOvfOYP6TvsHDIjJPSCPVi%ydWg~oJJdLBe#~})$mB)< z_j#SSRCVQ9i&4O60PEBNyMd*;D<11*XfC6^%JEW`v!;Ka47CP(+V*8)!N|MbX|lG& z#(}K(+8LA735^o)DvjvsaTdM@m%zUrG#;b)sVma46=vfPQz>rBV}g6SzqeI9V0x&`F=`YI!zFH=}rINwU_r*)R_6M@po0uab7XXuo5;5Len&|KPKymdEs9((~b&-r@(Ic@lmD z8E1?-L@~SFSE`-x+N}TC={$+G3v1Pl;zqvPc%i=HobI|8=N1Fz@9%3nd|9U&yW{Eq=;7~}!b-a#tRN=(Ms0+kLix&EGYL=VfaTuJqeI1T z3|ojeY~D>PXtH~uNyqz`xOuy=Iav2rYuRmamD=N{O?HecD^Y7~^$bpEb0=iBCXkO* zY29Rv`N;Q=m}z(QlK(so=Dvsd%KW;*xtM(K>XGk2n8A1+9VfO%HPJW|cs&^b#cA^7 z7rT^%D33k4KipoT#rsvW7kz$!NW#0-t1e;<_k+yaUjl1=y@q4f|4j!Gm=5^%3p~O` zt%H}gz^%4yD(Jv(Jjw%H9f7d&^2))_NnRRhe&mUD1=_oF``2c(1tE^7(MC7<-=`0! z4e`Ye>yQ6?egOwYT_yfLp@8}63MBh{14IX(uzCY?kmV!bq984*AvV`_sJ@G?{TJu& zbG^Tb{tNdf5WK3Fuz3;f9n3+rTEJ0*Xa^m9L{I0F+4*U`+YLhCsSwa4p~H#b+fn$_ zcks*b@SQmPq8OY<29PYEn}8GmX#mm$qzy<15ZwML6jcr^!}a{tgE!8hVPIfmgc z$;imdD=6H$rL27Wwu*|nx~AscyV}}%diwf?hWGCq8=IM#n_F61TR(hgXXoJH==kW- zTiejk)YRPka1=H}McuU|VmdwYk6M@J_or>AG&a(dC=Ir_f{M*lB8 zShvt^eEb(Q@PdGb1RM#Q5?`1D8G(d<9SyvP3Vx=51RTf!2Lw2f5lG+w@dE-J2{@3! zvqnIG0~vut0$+YWfFl71GQa@=4rByy!vXn#0fYnc;Q$#I$lz`P!UZxe$OmvhfP;Jh z#{oDXz=4bl^5KAdATaO+9LTsp#sxAikO2;S`2hhA@&O$9@&f`K$RPejLjw+=Ncf~g zb$|>w5{U+HT0m$RKm-J2B#?m~;DFFjyBY)dF#|(pz%LAe3>=t&9dHJOh5>LuKn8vo zKo4+0@I?Tgeo_#Y7!WB)3NHhY0Y@T9fjcoEQs71m2*^kv13kb2k%IihfJi}ZVn9F! zei%T{3^+5e12`a3kee6~kbxh-L2e)eJJ1mD0R%yy1_K`RP$~?-F%WQp@N4|=K+ypK z8C*snpvM3l1A$V&Mqp+T@N9wK?*kyv1Ajnh07C}^PEo*tKfr(tpR#}hf3T9^02UYn za16j9Tp)u5#sC}x7r5epd^jK<;23~IxIhMa48SpPK|UOi4+rD}9QdOFe?UM69QXqa z~BSm!G9C<{~s{GfFCiiBLSQQ_z?p?V!%lN zC*i+v2S;L%pBPLS2nPsoFo8e@2oeymLjVr)0~rwDAU}{%sfj^;Vz3~@U_wC`5a3{f zfediq2l5kx{KOzXkO2V>@&g$Z4>xdy00;Q*Vghh*00#tA@cN(u99|bRfCCu=$bbWa zw+TFR;EICUv^WUh2M7lja6kY@oeTg+ZAyRx8TjD>4hT*QC%}Uf0m1|M;ZqF{|Xd2oK~&1B3^1qX7aq{J4w;a5R7ed*BBM z;6Mf(-280qXR+%xzPckf!OFE2f&E|P7H8jfCCx$0RlLXL7k`uRtx-rD>GaU zAiz-z0WP&bfdm2);7EW284%zA2l53BU-e;A3=BqK4hV1zzyS^n009ngV9y9-K!5`r z$Y5IGsRtay#{u!-DS&s`#RkBDrxg(30A~j{JVYR)0T~bm64(O*9K;9yj6eniIEW8q zB(MhrIKY8DBai_B4salYoezc!?{0X5!F?15^1nI&qio;}2-k+P0d^>xe|#?(e3twV zTQ~%43^*JEwui%_Vxamk1{%r-WedQ+^`LxU{|lcB|G%}tx#2%>Ifv~p&R)1aRBfm_ zQAy$Ga3I(ZP7h!HVaLC9fc+FmECU-rfvBA>1CBDpfv^n8pmd-QE+ViVr2~D~Rt9J< zbTA5RVH@BB$Ac{aj`F*}U>)!QM_3OC*yo=d7dqG$ zRU;}dYzX@RLdE!RJg8b>TTlZk7Rm-#0YB889=MEyeSiR`F9Lo*2m1`{U$_rn$bcRk zU>yd)U>m?;TeuH&fL)mU7XxJj`v4m_9^3&w7co#VVJ8?v#s4Swg$l0WA|9L%l^X!4 z*r+i7qrQLZLFM@;-bJmbeE+lli(3Dw`=7jULhxPD|4a{RyZv2KFiqfb8r<&6z|#ac zJheauN4SsjK`kZ92DL1(1!|{(c(5;ODPSESxc!X<5I8Oz1Ga(nsJIt>7?pvu!8t)g zVHXkLSQj}_K5$*Y4sNJee`|u{Uetlo|IPbvtbgjc7!#@nVDirlA~6s+NC*M09uN-b z10T=_7!vdV0X^u$7|I65KttJ~bT9_wzrGhfNT5RbT*L+vD*ivVa3AEnhrGAkYAZ?NL}D&;u392KEaC0xUu@D2|E++XMn7AmE4m7lUKMwkREpUG!lc z$`7bO12{Os7>EhS0J&g-V1fqZbgz+fAgV4V!0zu1NDuRj1TFjSoveN;YF4R9TDAof2o{;37l!Q=Y3 zKG^r)`eoqB3PeIsFf#C;q#!xy2Lg{kz+pYAA%P9hq5(p2SPyit?_V9zpnOq2Ko7TI z_<#gMC+6hh&Vw$jW)IB&vupHPzBeEbNVQ4BYyUm$}c<(L;I%3f`AnSouw zgREby&q}-Ao?uP5isOCbl!k9-#Ym|16JzW1xA+1B?<;0fCR|SWs%EJA ze-zJEzwl?ZRfzMgNe$rsrI?z^suN!bVNc`OTSrj=yB$UaV`< zCH=~0F8V!BoqygY52nr0_NlmM&@4W}|BB3Xhm)yfpmjUUl>Mrg?AI-^iRzL`uV;i; zubVz4Ot+VMLRZq{LH>>HjzHZwU$LjDk*Urui_Y@%LY)Hh6eT^G%c~Z);$L+ti3>S} zjk?QwS7k|x!?m*#*Iax_F8?g!taY-u-LAaK={LdvL@E-@lasAja-sE^q`NK4S$ zBRq*cMJZOI_|qLb>eYrXi45#k-MHV);`13!OyBz|2?lQ7zkfe;tJE!Q4ULI)GLrhi zMvzn#Q|tQ|L%U86MB;LLA;CBCc`=ZoIk&evY>d2J1~1iV7(nVR5+Na zY5R~*`#bwPq8D$3Gz;zVw;UHGyva1SC2CSQPyA^g{K|4i6pKsU`)UcUh$fmH2n^ZDyZJTt>3x?FNJfyF=%$!k6qNT|(f9n@jBE{<; zS|^%FYy73$>7s@0L!BD<-D{ZTaC-HCO5vD3-J3N3r7jgR7FPMdcn=r#X1a3}Gn-Bbwb#;r3h#^_(DKfNt9jm=JERd$D$ zQZKKok;t_}LEHp?aN=a>Q(dE%4xXSXRU4Ew>gB>MbH2=;&JUP-M_z_{uh_(_(W1leB1};XGQCo zBZ+qX1JC+rS=x*F3~xNEdhYh@Wd0!5l8bbQv^p}9X8TfHrg4!vO-t;<_+NbkMNN5S zR~h;EJgyMdpYgb@XVIfQCF;&xT6J}*7~Oq;HFZ9!cUC>GylR&0G)Ur$?^s^ZpjEaB z1*S(*;N{2Ni5{1!7#<*tmcx%LJoe?Z+xtXbpAZ!HY-C1B`3zCZjw<`pec&NvfsD(X zk)NT5jK#CndTG}zndv^^ZqvqF=oGx2xfdnh~wOPl;AmY({>nVhxThc9`SZBkwymIm#+{aor}ESSi1h zymc({n|Y^PZTj<-)yE&P&d~*%=T~0Z*x$9(ol7rm&PBUM$)SSlCPQ{FQ|kKF#g{4C z(hpwC8ICT-+KoydreePu%-ZK)-C7poQEj@9@hbC?J5Vv!y zM(Xm_OTV^-&3DNtBq}n?+W$D~|!hV#im9sQD=Qv(Lx zK^$o{x0i1+vrCDWZgEs`ExpIfX=0qjG13oD%Xp>xCh1*Bb(o#)c$cTBG$MLJGp;J? zdtVvHajkusQ5)@dXYKl?_vSHe*o2iluEk)B3Kw&CK$uS)`g@ z9&n;T&o!nNual)8%{c3*2@sEZybnsFBr*A=D}rIy{^py+RgxRHxy<)|EXVE~pZrSZ zZm3Cjyg^R)NMRwo)M;%U&zLa0j8n>hW`*A47)w&^)8qpVBHESI(I}}vmJX}Co}DVZ zwq?YxY6!{OJlE%+Yu)&hyT^k^_fG9_N0N*78WF2FrKwjlCC)phyOpG5hmL1O8&>o! z>q!c=3n3joZwEvJO4-k&5nEG&Ex88v^8>UQ+&jt?!4Iavrm2=)0SxXl?-J-*@lbL{f%`wLZ;tC#N+%gvHW zAuH#9Dy$b4ydhV&pXgWbI+oj$Yp?ihyG1LZ{s5DqM>gGy?t8mxSh%g?okb1vAjzF9 z^S)cGF@~8Tk$>J)wl}pflLsWYcG=)R2~`aHn4k+a7~;NGqAYSPHNOlI1~YNS$my@| z>kvro715eKl4eTSb`g^GPmKAsX)-z?!DxR^blTU{^=H?+oiG_kL66?hKwPmlR9K+}(|Y8zGo6lbXyWliPoxg9*SLwb zjJ);21K}^N-^HYy(~sCCk>?J-Rv4tnZ%dZMa%C(m9~Om7JT#D8JCq4}PQ$8lAk1O& z{18bldpL~d&TF?<`w+?=c4o#Iw%tPtRSj3k7n?yEya(cRw-lI@UDX*b%S1kHp#77i zS{z^TVrXjbkpf?))h2FjLs)VhdcVW_0F1CMfikv@7qa4~I?IYI<1g{P7P5G1uuOF*>v@N|QAyO@j-?2RtgxpKi|H#)(>JR}Gt~AL^v&g@gz18F zXank2#pFQ)UuTn;?B)`rgv{}oB^W=||0K-*7?ygeW;vR`Wt#mkn@7QuwEy&ZRgyW5 zpXK&`_lnaSW$j}nzX-O|*DZ80QoFJiig>Q)ys3qbPS-_GkM>L_N%M}THnLRas8cW5 zIZhDk__T>~TRTV$KVZXH?VoJF#PRFRIn` zKC;iuMTVLUUeA3tMkUQ*X^NZJ0RF2ek zMKhsl`EwSQhQ-O9tHgFx$3MQ3e6M4X>};8vzegc=Gn|YR&vBDrjB~wkM9sR`(j+f@ zJaVm}{;XxuQZKOfb$H|9_K}aLsj4Zu>8+5{ff9PL1B?#}9^HSgeG{^i3vn)_+m4V8 zEHN>LZq(~#dN6-jtxJ`=rDMjc-w?Z}ua8m)8gJ^rVD%;3*T=6NLP`L1r2 z;By$bllik*xI9)uw*5?$zojpeSgeaNJ)dgU5~gTw*8SP_dAhPTF3a!FhCA)OUfe}Yr$~hF9Z5VF zac18HUlW&w@K3K*UCIrcsQy%^4|(cn|ES3QgEQnS`TYw~k*e{Q2HnxJS?Sp2u^1W(OgK)(`t}z zU1B6B`bJ%bEqJIttv2=bGm;VV$3zYOG(4j|U!Zn7>gXzkxGaYHQpbjz0~Bf zosZtKVEh^Wvbs5{@qm|Ez5tyrH>ZE+RgGC=h^p;cng;n&?5Lq-&F^eh_POiV--RdT z-&r%)*&5p7Yac(nduZc?A$QOF%S`65>d2_o0hmFC1G$Hx0d`(IDM=Nd`IY0 zF0||KM_%~7^+SwG^$oD|`1$s+WYDKo?-aR|j~b}#M;bW4=a^m2rJOx|U!s_HocJT= z%g}1Ko&-CG)yNS$FPT?7!o*X@)a}Pj!WW0p;0sfR9Wcpj9QGnv%(BqywkGeO z_2O=9Qn4j-VqecsbC9OqXRx3XawU#)<(O7w^`~vZ+P|%f4xQ{SO^TnyJHjLzx(T>Hx%G_veLj zJAd2kDTVWU*Kgv9NR9NA*XH%EyL=9{JpMpx6{F~MqrqY^Z7}^lpEk8e^M^+kY6mfw z2wnBa3|E{fT#oMhX%*vi$;foim#f*{8WavKCP%Pil+4jyPf04zsK!#tbnFe5kah|# zM2g&@r9vFBxv-U*lABFRC$4aLUH@Fiq98mc9+`Q^t5>tCQ;@H-hCb83gJ$+%puM(* z1ku-Cu$rYD5l8j1PJOs*dc0q39B+iPMI7DwT6~+Y!0#A!uF~16d+CSQKkv(*Q;zJs zQW#_7W=wA2{Ig8%{3o7>h5UJ%S>n?1#;eNSdzN|419>&1#@J1j1h$w94>Sge<#N!w z2puiR>N8VREY~~*1(WDAW)g;Gxr8%^=ysf=WL@#7qlMqxK|0sBeiw9aiOCR| z;pIzBQ*^>#rv0@*q&=>(6#spkuFuQ7*U4Y1$Ex%y1tu-`Y3pEYXe#5$f!;3DK9jrP zTLF>0M6{l6UGt#r_Z1s%2Fceb9J?P6MkbiQnC@5p6hs}Tp>kQb&AG0sgiaktC-H>W$U18s2R-csoF7Wm*_^o2ptV9|8ISn%XFIbfmF$Hh9IDLth_o5!1nW8ND6|W% zKhtIGmmSLPkeRUJ6AyjIcdiOe4}Ri#Fa13EdsFi5s+;b2--+&3Y}IgA-y6{U_GA0d ziQXI6p#PyyFz^0moOWXgqsYBywE=t%cd{)%YY;124e|sn)yFXkRb`M%tdT4}E59#% zen+NR;Z!}Mu$beLZK%#i ztD;M(^{Q2SLHW~}&8?Crg_WgK`ef}2tzj1T6NyMho@nVMVu;($ib^h*9cXi!_<3Hh z$aFWK`SX_27AfaFGW?q({wno>F`LV0>mZGSc;Yy*4a|zR=&trqB7<+7Y?p6G*d-2R z7l#jW#t-Tin94_eyX0mh$C_T2*cs}4m8T4{zx;Xr@r~O0OfOM$?ZR{g%iyPi(!qUK zJ>K?a-{XaTVk~=}MQPv`N;e;v2x3Z$1$DGq*o+!o8Il?8^jkjXxp(~#^?IhsZto+^XleeMVau=6aSlh$NR zd#72@eRGI&Th_p*=)`vjGYN}2esNQFS+J#i_#q>DH=b#ygTGj>eW_i8=gA}6&N1{$ z)8aG3;}*oTmV4I}zq1b+yy#XeYa#mVc0#S0BGP@LZrk^?q85*S?)F)01Mw!_J3Kw{ z_k1@oq_s*T&3L`VXT7@E^kQWQr+MK!#QD0*4S{?9x^4S`Vf%NPi7_t^!p-6J zn~JW2G^OcX%u{vRH2%MDl5Cd}G7p}XxxLU4egCGI&39PUq(k$CTb%AP`RCki40Qcp z+!$ZiMX3-I1r0H`rD{Yn&sjxqRef5<9QkXlSaVZY4wZCY>l&Z;Tl^sC`)J`ir-1+H zm&W>t3wwUpyE^*fM@me?yZ90Byi_H4Qe8Gf# zz9B0%RPsvQXkM*{*?xQJa<3?S@l9@N_ywO?uVCCLzJgC*zpeu!C$a1p4xxMMUG9 ziP`$0w!md`i#s}(7)T!8zt>{b@wm@IvQc=xH^Tq>FawvhQIHuuc7XYzcql*JH3_|q z#T-jM(^oy$M@4ScQuCk(r4#HU*vh>_Q@v&uGNX6xYo7Cm5*z1>vYa_N?a@n|XW5=a zBVD5vV%f51$Aqu9tJ$bW{+U@-m5PK2w_+^siA0MjJh74wq&-ce1&^oUxk45!tE9nd zp(%keq~+2>XLES$y}4;~Y2+EB$0^+4oRX63U^gkH9;n5~lE zW-!(7Ukc^l)^^!*!qUp3dZVK_Io@#JykePJ_u+H9uOSkHjyw~HzRjBcp|?hoft9%L zJc?D`lnae^_=qQQ%^PEA5t^7e{Rpy@UqO138JDM7T%BgjqKO<}wf?mFPC3wLyo!;9 zN5@!n(B&>o(x8`0)TK7G@@OT)vm9!>jFOx_@;n+$eu8X^8Ry6@zUfbEooxhK=RfhU zC@?IDuxpp!;IPQxSdsnd%R}oJeiuVyH_VEz4I#Xn#GTErf%8s)j409cO6c#$_flB1 zZW>u`=6iJ9eJga{BYTA_GkdJY*9kq40q512hMAId*Mo0%&4mYVEZtd!1AUC&vHTfW zUR)+_M+R1I_eiLQUQs>zDX_?lw&g#P+D03BDUeEZEZ1DJvG5K{`B@tQ z(|9#Ie{f*O?)0Q{smV|W^%ES^*2enP&NpVN`+2p;;Jz}IH<+>fQEPCN+SvD6VVbAQ z6mjT1ls-bzz2{XD?2|YK2jlW7$#aK%Rg~^IX*98!qT!RJL+>c6 z5?eAh9Le5Ewbi!CiE2{SvOnA!eSm(q(8HGJ&JQ*bib48dUPmL`lbwW#E{=8M{RI8X z0qXkkJ~koR-FeomN~V-y>+kPG51WdG{GMgH^u%AxUU_gCkH9qaBkg06?}}}ulk2)F z@5_Sfq)G}2nIdY%ERRbow#%}OW94pL{o`$ij#n2|q8^p|+R|87;SEy=y3r?z`%*4R z-{gJ!9sKELX0W!t*xQTenmRwKZ+ML99ue|ulSx6Qc`GL4{xM5~WZVXJC-LfefGPM7 zN5-|AZS>J`Uwc0^{4T9u|9bLMgR*b+1NMw2RwQA95@ykMNX(775#mP)8GghhpZqMb zhZh$<8ndfQBJ+wr%?3{&KV`Mf>3QCZps45!qF!9QAc z5@fRVNYO&5)XoEDYgTRr-zB`P_pIUYu~1}CM)WH9O_J>OH%K&O;jv5##p4j4$`6NNX~NPLEL7)9og#a)Y47X zEMNUg9^3v#6mE#g)DI$!)c`*KfW~hP0UBr+FHa2m2NmD(Qfg92H9RT~Bx}*<M3c(86KB( zClio#s*I5ZqM=jbrEp5p1)5BtMcjCpkhMSi4e*iYo+8k6atOi<(0`)4MSe--<5exoG$ zsIggc^CMM^CZU++iBI>#NH(IeAcQjM@cGhx+av#}%k$ap57Bcz#U|ZPI6fD@v-Ux} z27l;0MP@;kfn&rGlF|oA;hkaOTrGvjI7}fjx|(-h?;)q*XC;#4hsQ?6xOsczWhM_5RYL;vAwII#oH>7OX} z^WP-hcWgcw*)pkqohEIKmgYX==^uQdzjZWzw{OwfkUS|`>9#UKUgf9S;8-ICyP+u2 z=cd>5JE2XjyUsV2??m9q)IR=3V=e4^;O~rfO=m;>oUcFoi)q7PBf9jk!&bS*K(r!u zh0noCVq_0|ywh#BGimb|%5)aKx5s(fABRH=zgkM_wLm)Mo^C(QM8 zNTTr<#Vnx;50@lDQvDPznQA2Rv746(hagF4$1-CaxCH39EFlB_SCPxLcc18^Q;%%b z9KQM?Cre@^kkcw97;^2_)(oOmD2qmGXe~rkbLcx zi!9|aG{Xi6(T>l(+5IgliI%fOOmLCEHoW9tW1f~)C0kn1Tkg)>reihkDbl%6fGb$;;>XZ$I z4*M@}_-kjXINaPH-L;=7RA$|8&-~C7Ep#o>Us}Tq=`l1XR!M?RsNwSYBjFLR#%$rV zN6cmrU9#RSYxOxuTc|Tu0BMu@nHDD(qvag)s)*`>kz_!dRma=>Zo~WQPMhQLP6-)& zjJGoUZpDi~b7;s_{~}L<7Lp{tp~lc(9fCw7xLPSqmw0q_S)YPk%2A2+(UWgan-)D> zeP^*MSnzmu(VpUZ1$|y$WRf6d7b}{!q4?@bZcZIBQzb*g@H?F<*GKd+)bWH416_s$ zcX07u-H7hM!if8-y3Ct+zUfsTop+1t&}Q=z!Q0Q}s^@jOEAMTDrbJ4vY_c)wVU=_g zr^dH*=+Xo|u%k4)Z0yz*=7`paUGJeI*u1$X9mUhxV8|k|*b7tWCjVDhva23R>?J~@VZMe?;eo|5Ll*3eIu6Yt{nP064~;BU=G25c>cu2K5Ks6 z*>U$JJ>NiA-<8nmCcAp<_usQ_cIgtOJ#C2;M||aLE$tDgFUMl{{63%ahE#CL&#BV? zR3BQS>u)|UVs0f$-D@o%Nlx;ig$7raf)5_25WnCzgBX%{TFx1=ipWFbI0BMC2TYWu z7jypT!GoNx{y;TDEMV^ZBsi8DJO#d00M=TRRHI1p4 znY9k=7yj5{bW@;9G29IAzc*P$&+))Z{&ck4OFUTipoc3_wMDNocyLCIfMdzqPV3W+ zGbCM@zm8B!$@V6hOWFBQQ)`&?p#K&g20^F)Cs#-A87smx5-*{*=K;3W`}#w)H(yWP z44@FWa{TKAr<-Jd1)|0rglY^Pe`l=X>cC6W=cQ@cB_x z;2Pr6o{r+(&Ks5JA8&RL6m0L-u3dW{!RmT_iR*hALfI93+?VI4<#_2t53zD5BCz3M z_319_rIjCYiJ{H87?q;d78I5H8Vgp6J5ATVKAXUFB#RIEbtdW^c`|&sGTP~P(mwOY zf`2+{zj9obV>8KWk(JU?x2knZ`=ClcrXQi5pcK$m(?q0mzNE~LQ@Pq-VQ9enEn?2m zwy@XgI%Cf+SKIF}oODI0u7^YjdmQ8{ZT7Uy(*X~?gWZD`wBwd>e;JLDvMyDe#49y~ z-%3V2%kT(JG{PW@BGfE{8Bf3Q&f)WCk!%ZQIzAbJ zXp=4E9uG0U+1Xo`sm9%Wvt4fW#PU~T@rb|80pFUkx@bDTtw<&JFKOi1v7Rg4tX6S+Ow57X)MnE8bnjKTpOcw7SqzB>?;IC(nM-+G!If{hH)^OU z{D|XnYnEyzl5`nuyE|OjDScH?2nqH0K)$4tuoI_}K~S|w?p4`+Ye&nr9{ z(3qli-S!GNOKzDU*m1cI_r)Zy(dQ97xm|p>ab?8H6-Q!*SQ9fT@0$U2(Fomv*W!VF zXpkH7!EtZDe*Ix2>qCs&yGI8^j{;t0W)|MkVz*y2dh^45E`a~N-5|$9(R`w7VVq|R zSFDq(n2~n*`$;T4qYZTD54msZxYc82{CfFd_BXBar=M4`5yI79`9G7NF|LN->P0G> z6T0d6n~&$6yBpt9&??25R&*F%S=)LYdweiw|DM}g>5YnSfYAI3&O}nV{6j>o(T~md zS~`NJxET#U=CfvA>ura83jbkI{kD=yyxw?P@Gy2)tTZahO!=2kohW7FcpKKfzp?pZ z>N?Jw8w*To-QT*rtmU(mC|_KDGjgZ%?Dmz*Syopw*LfyFGo6(3aBrJM=A{%v9P#(8 z5EksIbEX8l9XGZ-c?Bs)`Y&%1^$lWwJ#<0l_4`xGo|e4DOdMaZTkRRDcfFCzBdT;W zKt*P_V!Va0#^D{MIL_G5nv9aZ31uw;Yc<3xNh8@$b(Xdkgxo!2el?Mgoz~6U@mD5Z z?uf)psTf7a3~$eC1yx(6WZ`tI&r?MetFSW#ClqMa3nw-(T$fn5BTs=PzW&m&Wp!(; zC+_Hj17qNu9GMo}SN=2DdC%W=8~Yl*Eu&@R%d~l^{Uqq26UWEi>!FQWI@hAko-8-8 z)IKpUZ{TI@Q*wIG5|Nmn|6rm{Yvsgg#q-p9%|av}zllru*&21$>Lu4earIRC)uN#g~^x1wgnTOS+@R*N@ZZDjPLWDJHeffEb zkkC$>KY6h$m+0bS78|AS`D;;V6uY!r=GVpMBi^|m-lkApT zOg|=9*vKa(+2ij3`yOkOZI^?uf;7;?9x z^5lK<4R@PH>APsLYN`U?Ef*e%jo;I@qT9y7ZOUcf*Q|PIXrK9nFIcJvn|~|a*)@nY zVscnU2z!iA-e0!an82PLH!}Wv!u|n&J`U!te^TA~NtM%@RddSwMW@Ei$EBR*rnTcK z!bzkbvQDmjyTem>%tEyBXE%o_{>8i`K>&+#u~K3!bottCr=V46=dzf*%M!|sg9A+A(SYxuS{&ux@aW;V=vpG)YxfyXLQx2?}9Acm8)Gp#TSeDe(b zI6HEsmJN-9!%`J$IldbF^p^%n*GF!n6~T`?N!RX7V@G^Es5Qx43zF?2V9=PW`=vG? z)bg-2YGv{Cdx@8k{OMCVgod)JtbDx~?av$W(y!hn)LSLv>=pg2>8lSXrR-X-gqlrR z7waCldDAmn=1(dGTNRbHgqxDF=goY_-=T33sgLp??p^y>7F&RZNhi{X&$(|$5qwU% zL1Lq{K;fo3bbj4OjoMn?M0EDxRml4wug{ondClzqB~ zE%p30j*ZOJ4A>lz%?bem#+@Xs&uZ6h)rws{UT(XszglyvR;}o%M(iyUc@9sBtIWSL zYG{M^hz^P!)VS9z6Ba0*-qucNQBQ+@M87Tcbn1NhvMLwL(J|~}K6vFYGCZVy4FiWz zxBi!o#I>cB`#V`>VV|cDZ=j!<37NZ6u&bcoa3ydUw{I=*DwM)~7vf(Kmh_ z{Cj9*?>Ypd9X{2s3~%tfep-)p;^l>-#kk_p=k_!wW{X6>BV^Xe(=O)i6$^vRL!)CM zX#9Rj!?PXYmQVYE&Fh)o?w@c<2FKo9ksI=gai&7E6>58FdP>5!pb;pahm(r+)o#)x_bS8$Dixw#j@_7!y_Z~hY{a+wv1Z`=l$GK?<=6JIv) zEPPUkz@(eh5_aTB9d$alR}NRspuzqzKQkcbQvJbynvzOa3NzZNh@8gW+)AZc+nJLK zXI-3QBXPTA^2&#uVf~Zm+36~}eRr+SLQ;Y-zwowbiM#XKj3RKFGKUB$R@0>2 zO4+2`igTSJ=A)s~(2(9A zMC0Qz5$#^tJFC>Q&+j-n$Gv%SC+QMD#r&W1sn2!e8}E_=Ek&x1qCBWco0cI8X2Ob9 zZp@Otd=e7Aq$Rx6l}*=y@I;zKIZl$G1^4S)Jf(l8rbJ7pUruwk5a4k@v+EOPvZ0+*BwrawQG`|;XJV0E*7B`H>#nsUbFl2D+VrX2S3 z;~qaF3y1nbO9q(&ykSJy*MSwZ543t(*}($dn^SqD_k{{hSLL0q4Bt9&W{e{h8-Dq` zx5!4Z+WfoW3!VPmVC&=)D>eLT@=QfTTBq4lmFh3gnjKwM_5OHzTi(1Mo|-uF)D)c% zX@6icDgFk+zrRy#@j-C(sXsw9@grr8q0bmIDIA=81S#=*4ry9b{^?3#@mSdYUHZIR zt`eo^e0RHX6bF0Q{AmmsHge_%f87xCE~mWet}Z8T8YZ$bedYDC$OfCwL2+mGe$BNW z>o2&a#8FK?4YYGdR6STYZI7I_g^YO&l&6QW`r9nI+Zt=jF7-x-`ZBAKp-b zZy7AiE_?My)qhMvcAEAal1leq{Mp7kRUtbok#x|QUnfmdXW1d&aeB;@&Hkl4!%MlJ z<%q0ZI3mdGONyiS`X9#uU;Bt_m$7BFe_j4LUC&m$rYoCsJ2SQ8@Wyh@W`YC4dTJw> zf_&zuTwb|p&8eGD+%F>Z1!Q{jcV-D|@wsa0w_Do$5zZ2QJC$;l;5&kH$h$BUs7hk| z7Jn^K-wvIeS*dw6-X(|k!LP^La8>WXKzbxvwGYWYoYR}bKj3w;5iUI0GbE%X5#~|x zXG_#G0;_eoEO2SB`k|VCSx0Mjdf+ABjac#L>YQYRNmcSRen0u@$gVMFf5n>ON}Lgm z3TFP&va$QV>VRBt%2RmD$;^6Zu}i7RIOuL%A(5={1Lh~?IRWFmi!wf|p_$Lt=GLP0 z|HKV#84h7jJ=ay5__*{<4E!pUUhOpDV=@6tLv{c7=QVscG=fQ;EN>4oxh1{un2q&r z`pv*#=>4KPVnFpeE5{6hW=)3gUeFH?BYpH`P7)C4_yV3p?bA^XUPcw=u7sN3(?h+zy^xfY6vWTZ4^2)^LMA3Akg>5b)Y{q#f$!absHmu*w{PDjv$R8mp`@$m3KuCA^SDJdz$#l;0aPlSZFx3{6v z(o!fiG!#lrO@(G=W*`+66{xGL3u@f;nQ&*-=LwbDS|p%sGrX zjiY0ZV;X(0U3D5}-RpV2H>~fEcdhT6bzgmcz0a=d>Z)^o`xG})KWk;ml+n(eJE!H! zm5YChXVI=)xuW^__-HL!w9qP5s-(4V-(I_Q>z0-`Z(c2X_Uu}|eEGD{&`>Q~wrtw` z`SZ1$Idf`Fn>N*aeSNjpuU~5g3l`MA@&_?$)~u(W6J&s#UABxVSj&%a<=&*REZ)#*G_mJfA>2d-klhc=2Lw*sx*R zk|j&Dv17+-9XfQ-X3d(VHEY&PYu&oFmOp=fZN`il+MPRh^ndn}kdUCAKYyNoYwoEX zI&?_?<&&707;V|IW!m3=|E=}w$D^XJU)RQs8>g9ha?rzv54CI8u4&HB&RX^A)wP>9 zZ)(%0PuE6|9<8-$(?&~6OVjM^?6gy-PHA=P*45I})3vf?%W6qUNm}R5owfJx-)nE) zywMgcSfC9bK3vQ${sks?|~Mut|QLIv%}kt15=%9XX0 zloV~|%$ZuRUcIz>_3CNf-rm}tJ$tnH_;{^UsZ!eG$B(r^g9d3USFY41Oqif8TC_;( z*|Vp%Yu7Gq(xgdRv0}xvckkY5A3uK7wr$&{l`dUc`{$p3v@Kh;MlasZD3m5jr07@|VH#70~G3g&L;lE?D|HVXK z$0QGAg8#teuEoUuiAnv83Ehav?8ii&$|N4e1YXbN9m>Qlz@)9lguTIJ{ho>H$|POE z1g*&Ayu`$8%cT6B3E7It*o2ALok=*J2{@O@_nC>efl1ew30IuS_L7M*AW-u_1FepkJVE7|3`*Ik)8zvu#!N0)Vr(x{5G4%ip-2*dkh>>^1#CK!hJ23Cb821xQ z`!t3ff?2o2s1IY(c`)d^nDcRrIT};0iXrny5=@sd;^vre0}R+5^X-K3p2T!ZVz^$I ztv^P)5tE&R!PduI4`8f6VygBS>UPYu3`Uv@6TO0gw!l2wW1M+0&3qVUHq0_7M(K-5 z7Q`THVvd_I#;us*6b#V`GhBrce!&DAV}NHdzhM~PSWIsghSwUin}N~EzwJAZ!5zZf zVzii;zcIDz7@8R~yM~cf$Hb;%U~MojJB+I?rd1Zh>Wo>v!Kj8~Qui<@{!aJ2A{bKz zOsO)4G!rwbhY{_;gi2vRgD{^77*9`3XA*|<4zt;Y(fotSw8UU$V=mn=mfD!guNX>U z%p?jUS&E5#!ay7`4=cv;9Mf>YFzR3yT`-DpOkz0(5rjDm!5EHV3i~mH`Bjr_=4Ptdt0;ROdvO(-#N|soy z*qxLBDPvfTUc#izNtqT)6uXkrD^@9`T}r;#pOi%@`(pL79EhW2i9L#Ki!DpZmQpCC zR!X>(Jh4$JPhzuT+hV;^0%bWPWku{-EKsahtX0Z|lzb`0vW$?Wjg);UT~gMi6w8u9 z%BGZ1Su#XmwX)QZ(jjF`%9E5Kv41I*vP=?-mhvh~DY0)Uc~W|$Y)eU%@+f6TO0q0@ z#JXjvA#q-;oul#(u`PL>Q(_N45{5=csl{Hs?f zv$DjKC6O!_axBg+F>c1YQjrIajBW!WlA6Ip7?l0cTKvb>Pxs4P8XDJRQMSt82vNtRo(9F%39 zEQzJm%Q8%s5wbLqC6FxpWH}?tXIV1JvQC!Bvc!{Rg)FaSc`VBuS&B(nm!**`Eo5mZ z%T!q^%Q8%sX|mjqCA*Y#Sr$kcmt~wRUu20Si+{+S9mO8SukY%3sqa=Q9s0l%~PG^Sh}r{y)%st?2R0Mlv>(`7DSsUMfqfv@u&!)Gz4 zdkRzLZ!Yattl}8cYbjrU0>kS(!y%nRde5bG#bIYr3~fs#y%9~jQ77{|@6bzH^TqOgmT4D}ZbsUl3rKd_AUSVuq(sqXNH;^!*dWrDLd0(I99>mb=3Z3$h5?s?qWIDxU^N7q8Us#`I~4K z?4>V5s2SD~!u0zQJKTcx1Tp=sSXLK?P-E{ z5eq4XwVYy_bjP;5vC9N3WF8hBPx)AY-R+|k)x(OmV^=?6RbweN?XZiDSbr{T@+~E0 z7dCK#QdXPkdj>nHz%>6JD~ra8relkru=FoXq1M>^EbQkirJ)sNWG%K>1>32Q&6p`6 z<*Mg%J$%|)BcHP)Cuy&mVC$=XHYxwK9qPJJ2j9%^gPK(?y&E546=RY=WF8HM9_ah4h z5B+$$!Q_z{`~{hAhV9_&5Bd?AL0wTFG#;z z>gSyou6(}owocK7!<$X{zT23*8@A-K%jx~vV$Ig|#{u=4N4ClTSFa*vdKB^b);;3# z@WyLfoNwUy!G6xp7g5VQcJ>PU=isFi=ax5m=;`+L_92&iI}#g)|FPgqVu5Af?!~|P zac93tKkQHXe7~5>s(NRtZao%1>(87XuCD^;m9lt0=o4^w=cb@z^B>0Tc{KWuol8cY zN?sm$WcJ;DZOe>K3$1yw(#KOhVq9*_9X2~h-^G^-c>V2}bmK*tTSt>pi-t^V8|m|> zUC!$x$L}rd#qU8*Q?czhkhQu^FzjUsrn?x?IlAZ zs?1$~y?LvTe*7OE{apOE&B{@4>$ydhyZn*hzO=yMmNQmt<{j-%e&3{+UM)Du6CQJf8BLAWs0f$#4Vq@H9zIOAmaYXid$3Olx{aX z|I%(R#@Y{f5P$FYoAGnbJxjam`DBu7jtVI*+t+@`2)cMbkA3TndE9!f8t~hTkYzdV z7Y^y!JnX~eT61G_pPM}?d)SlYS9^vgHr{mP{nk@)eXliJFwOa5{=W)Zazx)7cPwx0 z*$yjrj1Sx2s%X)(Z|mC4$?e&-|Nbl8F0V4Bf4?VoluL)98;2c^U35Sjupnv8r@C${ zO$Daje7Rz$XT!RwEAD@LaK@?IsJ`nb%o#gm&#mr_*ZwoPjq95Q_ve;u^ddB3?W`Pm z@;|QYeEqodiz}Z7gm-P1n7wDw^Eumlt)IO=q{i0e=19|(e(|sS9rXOOnaj*&2Lm3u z?shRc=;~AGPIS+KJ=&3Mbh6{8966=idwaF5lXD$@@tS zVrLEryIN_@^1V&w_Nem8V_ZzR&ats2)3>iUe)o8#ZT+inN;%y7dZRYOL%jAbuDEN* zygxQJd>6TMOnSSE*}t^zK4fpds23aW6x`P$x^;)n9^7PBg4;s> zp>sXbdK7zGd37)6u{{RsO!l#pfm3zCP>T$?5&` z33FQJ?l}M4Z{MnP+P1~-;i}OWKEF%&y1{9gYroC;hb`YYXXyg3i2ie;x6E4XyfUi% zhY2ln9_pU0e!WhqhiAVyQ#A1VCd~$2j5!y5`Gd#H^bwBnr4QEL2-9aimF9sF?EfOGeL$3)x?oFz&Yh&~eZh5;`+GE}7y0-4KM&GK}-ZP-_{_CEFm$>GsH0Z5kGyfL> zlQ*ucAG7;eT&KnZO1U=hPMTL@bM?-hJN7g&PyU~YT(Q92bwfUXo>>?Xu4!?FG%dNe zrY-KSY5QU{?M^fHa97j(|DpeP`VZ4Th5m{3|4jc@+wQqF(EpRExfRCJF&#$QY1$~* zgx*G+-*MHJ^WGIbnszAf-Oz(+o6u^+R={T7Z|ChW+Mjqoj@F&`3D6ZhK>q%+{Cs3O z{ro{n%?r8#kATryn>DQsw1pY;e^1*E;-EcrfOtrNj?f7@Ll@`@-QWl44n3eJ^n%`y z2z?+4`ob@KUOaS!e>l#+VI8_3ef?no41_^27>2-5_)106{AhX&9P8bM=d0IX!*|dET0$#m4g5SusJJJa6M;meMiCv=)!w>Zc+g#3Hf0V@fx&I5DflM3?iU5Btbuz4CmPQ zdAJIv;56)m{cso#!Ev|%zr!^+183nPT!PDR1rESLI08o@1CGH7I0@I`2Hb>O&>Iq= z4h^FxC{5-K0JUw;3518kKi#B;@k}7``FVKg&-&f!B8AZKuIVKAy5WF zfm5aJgyHa!H=ket`e*u9!x~r%>tH=>fQ>MK&m0JYU@#1UEo>V`Us-4X4WSVU%%;bYMkoy_^1uCLn6Z;D9 z;0=6(_wW`pKId;*DLhVSXK)1I19Czx@P*uv2l7Hb*vR+rqsjfg3=HI zWgryFLKu{T@=yW7!ISS;k+u@lfSOPXYC|-{Kpm(H^`Jg9fQHZr8bcF^g{II9tk4|3 zgBH*dT0v`R`Mfr?ZJ`~+L3`)`@sI!=p%YAo&d>$ALN}N#*AM2wCcgh>_(qTTa1+Wkn zfjo5D8C+l$usG9JLrtg!OJFJFfSe%D1@eX5kOxAb41_{i2!nD^9x6aMtc8`Z3+4k) z&(VJ7vsc3!Si&*4;Mhjdwx+K#Z55~r)u1{=KqN##59kTKpf@B!A4r0}&=2~<0GPvm z=fXVs?yvwB!Xj7%ESB#NOJNxlBo+wKoCg-tS{+$t zDL4&h;4GYj^Kbz!!X>y2SKuoA4%gs1+<==f8g9XDxC3|L9^8iq@CQ7EKj9HPhQHtm zJcVcQ9A3ancm=QF4ZMYS@E(4J-(VN)hCQ$s_Q8G_0|($B9D>7e1dc)m9E06_|2?o5 z_Q8HQ00&_qEP}<54pU$%OoQn#1J=MO7!6}!EQ}M)br=iVxehyEC;SR8h`oeYFrN1l zU?Lo1o5OGfjzR_;gX3@lPQocT4QJpioP+al0le6UH(W$tg3E9PuEOtd4X(otxCyu5 zHr#=`a1ZXo1NZ|T!k_R69>ZVo1fIe(cn&Y%CA@;y@CM$(J9rO&!!Uv4`at^;KEY@B z0{_5Q_y!u+VkXTjm<@AaF3f|1@EiNs1-s2!1Ke;Ub!O>H{3|3%xpi{ zj20J^vo2Rau7q5LG~(iRKawLOM5@V1+GLQKFHTdEeyQN4L8`e__2N(lN`S1kWJMMN zML{aRtkPr^AXQ&hY8%+sI#>@IK~`2pXp2G+Y~ypbgSfZ2_-K&3tPk{!fZ-snCL>Em zlx?Jm%gHE{5vGqg+OgzKhZy2A!|OscR05ghGTSRcWvB;rKwMxvYyxpUaYAuHaYb># zEyS0AIQUW+4pOm})BXf0+RJID(5|GNLAw>isl~a+lRF8< z@_q&H#l=_AihIvQZv%1dUwA)(yvZ<*_u}y4=;H8GX$R6ifImRot`D)+e22Es2EK>? z)2bxS+J^nvR*SaP;eW0yWff^#G0JN3-z&|3uP$XZDJ#iD_9+f84kxSU5AYdmD{65) zSxJ9{FJN0;ixbMK`V;&Eww1Oxdw0HPPv`-?K%C(xa_k|A&nwUSS>%m}LBxI}=1$Cn z4y7#z9w2Vgm%buU7^I3wRgem^2}Z#X;swZ)m3DsGblNH4hxUi!Pz9<%0F;2LFqNEX zP#s+oet^#Gt1<0n+D(uTEh~Zlyz`P3!q2c8*1%eDC3i5#GXOml*707dnpE72AXQhY z-+r)Fs)n(*&x?#BDB&<(mk6ZR)}Z;t4O&@u~AU8NcYjB1*Xb)|m9khk@?9-ms4%{Idcz`F& z-%|dmyVGS^Zpx%WxGgf~=-qz-_n#cVQpMYUe%t4YJ~~t%Ba7_rnL+1LxraoP{%R z3cNVa=V(vENjM1KK;t|8L-QHFz*pD}hu|I z`_uLy*O~rR&>LLfXP6G@Fb$@{4449|p(eax+dttfv}0deX}7~RxD6Sw6L!H4I10Pr zSGLUyzkv_rfZUJ=a)B@8gjrA;zGvTUVFt%3cc@*^U128sngerT9?XXYun-nOe{#Ok zZif7D3=TjC_PGKILs2LKL0}KFq#X={Uvg7x;oFM1mh=hx`x)HJ|`gh1}2rNL&AgB)wpdl24U?>iapaOV68E^qda0VwR z0VTl|e83IdAsi}#H{^g=2!%G#8rniJu4@D&K_o0Awg?u(d{_btU@0twU~8GE{0(s|8*y}45rh+1%5)0W1EREhWAT( zza0MaUgT$DW64{=`&F<8X7YX;{DPi9|6~})`_;T(3v%z#n$KM^0rABUtk$nCr zka{RJumvsu)9aqC=1HxSx;BFSjD_h?kyuY!sb`yD3rKyFy7r9yJqKG2v(+zK-I97W z9i)Cq-IAInb!-XLf~7DVq%L-#{okz(QWM1Ir3Oe1m-;O=I}W;l)C-wIksxzU=9o0M|JHlw%^YKPj`cT=aW?uV zzLS~vEzwD|aX%GtKU=DPK7SNYm+r93u=pC>fcEVe>JqRyg6O4ihY$Nx- zKgd34H^cw#ed}zt`H_7Mp#5LHZyiJaA+X(_=3?8$yw6ShU)`II;P~X;bR;>+u$K4X z@FVo)eLQ`qXgXsU2HXCg?RD}Q8J!}(l{;T`g=ES3+3`9UA{IA~6hLT$zEymqhS<`gEcS~ z#&A4i;VwCHPdpc$h@J*9ysr;+p%OHLXlMwPp&rzM@z4N%X4@xhcOB#&`Z2BCJNKsV z|MWhXUH)(13s2!QpRnP7cTXI`vHj2Pi&NM~Gd{aNxwF{USKj~UJ+j>I{^vdJzwd9^ zMx=ney*7xabx z&<}dR5Eux9U@#;>ALt1`KxgOz-JmPPLwksW4$u)gK?3B12&e=(AsbYNDv%3&!4o3E z53)mkh=LkW0IEW6XaS|5F_eZT@EtUVnotY;ApiDaD?$7_q1s+otTxFi7_*Y_p#{zyvLnNJdXYj&>l|k zzA%g=w;QZx9|L$V_qqe=uRyE}*zR-x-@eCX*IMwXm{EVb8?Pp#v9nXHz0sO2s@tRz zOeU4Vvr1K$y{*gMY_(df7PHmjV6`|}ElyVcB%{UE>Xf;$quRvLwuz%{Z;obLmu z>JUth4ywzRVm1}`FxxrEi?h5q%1id*4kn8!rHW(b5t{8J?j*6_wu5oD9gMT>yEtd=&pB>XjA_(|DAkx$s~<)l^e26HYeaW)tp8*x6hCtbQI=zid`NPpe;ctDl$E&)e$f zWA*d5`UUEzZI;z!XLT}ngaoT4*lOW27PtBpkmKQU+FLDdR*ODT-Vbw(a*^W|A>ZJ1 zxWz1Keug#`FJ!ip7qe}kn4OB5Oe6DTo@5>+Z}lt8$J*OF8n0&6m{e=0T3g(r-aFA+ zOsN&@OgS=DPNiHJ6h^O$S+HyjH&)RzKh39qCgi+%0opy4jA_M)#h*hEg-kvZqg9E-VZ zF?-uowf8Xc8Tk5HgTdr_Y>qSrJwq#NzxG-Cb;yc3{41LEX%1Nz z%OUI29Mq@TDWlTVbTk?jv^U;47>$~_;%L~Qv(d=ZIo~B$;vwfJ_ zv8MK{sa-D|e}yQ|OfP;EBVdK#@seXdD;u1S3^g-kzMllokf`dpLx zT$B1-JDZEEe6z}@7VF!a)p1$W_q3?bqpIlr7WH`+wY^1cZ&BM@)aO~$=UHs~Q{U5~ zzNbZfPmB7V7WF;t)#uu)&$Tz%0=92%Z~N-@w(o9l`||d-Z*On&V0$~Y9|yG?2itq~ zeH_&Haa8?|s^3xdJKFly_jOd?*HL|6NA-PegT_&PU)!*8RNu={T|Y-z7%{3Gy;SS1 zTB)HDmkKIvF4g)Pt&=)FXIra|(^(y-vpP;^b(}6L&qd|As5}>y=c4jlRi2xzRrziz zKg8Cm?LutVBgA$+LTuL~#CAPGY}X^ic0EFD!!g7*9z$#cGQ_0LScu707A^v7)Z)eE zMDssEj!BL~KL%RqlJl<*Qj2MPrPLPAQ;Uq9_PRuZDYs2o+^r^i{#QY{m+dfZpU21P zXWE6;ag5ckkkzk()lV;BK zt@z#Ps_IBnD`eM~ksZwzQ>M_@lM>O_lOptWl879#XcUptCUV(?uT2!QiC~*3ZWAS} ze&YV8!;Pa4*GnGn%+8!7b)Iae%hsA~!fX>3n{crSb7shFZ;M&7@-uraS-lRKd5)P% zjzYg^7LQDoEmLLBR9>0NJ5%{&svMarr%jnMzl6yyGnRRLrp)6rWged?^Y~1e$7gcN z+&1$_O_}GwA&lGZvJoie;+cOjSHnmCRJ7GF9nJ6_TmSWUA0iRW?(FWvX(Ss(hxZ zkg3A0mXb2JWzuu!sK3hON2`#X)l$N0iR>KQIauo)Z0a0r?i_62IoPptuoDqN8Zpfd z=+G=cujT-xXp-X$F5n7o;0_+(3E9C5yuk-@Ku*X7zK|R8KwiiPevlsufIkF4K?sCG zP#B6pQ3!%!AV*#tNO%u)2#ugIG=W%7E9cO}`7?3;Oq@Rx=g!2rv*-Le3iLa2jvdKy zB*&2)N6xV$d5+{ca*iE2$Bvw1Gx=un&E%WO=Z7isqDS->JuV$)_GC7*D>HYi`g`M5 zPq5duJ=zK7#7TE52!X(6PHg40ZU|n-I@N4jfSVjTGj`XNcXRAe(VO4ca zY88@0trc@{gPNahDa1K!D^HVcF>kUhpL^C@0!y@{oX8op0;;Pu_w^Q=oC^lyOMoQkxU5T`E zMx>RmAg%tB0$TY3@?LI3q?H?0Y2^k)TDkj>R&G6{mHQ59efTP@aCvc*mwfW#Coj(O z;v_Hm<)whU_{&Rxytv3qL3s(37mK{u%S%pq$t5o)d9jn1Z1UnOFS+F^`Fw8Da~2ZVqRLt-fVIcPu@2lRIP_0?Dxm3$fbeyez`K*3^ z!D)FW%&lp>vY^o4v7j(o2h|!2Hhy@gk4q=xwpf1bqmM!nYQ$R9QZpp$mdKQKduq~u zpe1Vxd)qQ0w@sAPFR#TIZ5Cs&S=8{f=r??c<26k6dMJIoO7j{u5D&=syt^k;m4RIS}*NBBgAiv`vI$PCJI5Z8GxRGo^(e zUfO6Hq(mj{c)i5q9!3Q4waFu-JsXO*q(uqfI#3gtJY!*o3Q1 zxY>leP1t_O!!1vWz2~Ty>bk+1Ts8d4#0{9dishMHu{I+?JkI2yCwS-y9(sa@eivlA zJjhPJFSqC_D<=0xMoi2?Mne@l-7l1srIeDCVMqQy2O9nNU7ctxO0$g8f45Nnf5J$J z0MSuU4EjQCh=3Xp2lBgKlG6obKi-fC5g_?VN=saRk4k>mO7i7*tV|$!F>M6xY})yD z#_vi=d;xk1h+as$ROv;u%aoSilac>qTi<_a`Mnv*k+}T+%wnbG-+0JAC7us0`xISJ z<;yV#s(jJ%dnEGzVaxB!$nTPfmfw|;-zgC-zcVAhXChjDpGJOXSpJh^UWJaJmERxw z8RU3GuLe0D(Q81CNAy~d;}I?YMn<-k-#=OhvaRU#Alr)G0J5#yV08)dAG0CW1@4)u+ZI;Bc6=f zKE(CqjDUh|erTB5>~hCxr{gx|OKQH)XXS)fH@x~CFHm{UgL6?;FNQ3uvaLw3y&l(U zcXj-(=xe`uyQbGLf5?9Hefo=Pe>xnzR63(m{wq$8{<@VM`~2?_tNW}i*PvVQ%sl54 zTji+Jx89<&-&=f_KRs|KvS+p?Cr%ccvcB<>x4kRQ8Cq#%;EpYWzu1*;UD!ISOv$#N zX5Sw-b)Eg~VxFD5|9b3#_VCQzg{w-$=QLGsac}I;?%`p1*OdLX;kOvKb~`toDs}kH z_2@r-nm@p0g@2c?!}tH9MJBKHa6Q|3)snHrMx>0izj*#g&a)Q|dN*ra(d3oe-+$1vlmzO82WE?o|5*J@1Fv#C2sAfb>i@(3- zKYz+ZzdLvK`QN#BpkT(n3@0CN$6U*oj4V7MZE`k#G0i+Msb1wBo5xr7^fr5+J%7OK z>AlmXdiRb9nUFletxDN!)mJSZ6BH6^7kcB|DZjU`kCgA*yJpzaJ10v_pE5FsliAg^ zS<~oTZ5r3l*P>~?yt_6|tjgpt74o+f%IE2puXj?7va{32_{tw2Jh|_r+soGnLa&}X zmb-+%TZsqvj~4CSCn_{KEzLZ8+W5R@&+X4XB6XBQ#{Of@ad8p;jT=XJE?$-v_~`zL z;%+8)_br=7m7hO#QvUii8fDwEd31#qv32ttI&j2cVDFgl5JzM z=ZI?`8L;o*LGzXkBf=sgBTbECqr8SDHmEuwWum+M5#4;=*$T{_GB!8ERP)X5oLl}F zbK|Bpyx+b#TH(&!{Q+NIovPZmPwnz00<)Da6zEuV!-nLLF=^vn-RwL(RxKOP6NOU? zcJI)zRQj|u@A{Dq+`F`|Q*3DO`c<4v&dyGDE-t$^Pp-Q7WcJJy%~Zmpm3b2M7NEQ$Uyadc_ku)GosR@o)F` z)!}mKQ&YXhq>giuKWMyRb6VM4az&>>=)vOWiIDP7% z!K032QpP&>O{`V!!`@OI*Eh zBJc9WBMOCuSi)Yu+FvFnBF1Uofdh8k;~SN(QpUY%i2(PK5fKsEu1%AwRSET|wrj(L zD*N{DH?3MaE_lbLah2*vHS}oKq*jjbvaXeHoIRPZOI%FQ(4uPhWS6dI#%()y(2|7Y)TCcDPt=0=-%<*?(G|tY}2$+fd_XE6?*w{U&zV* zr`*RRk8$$xa>yAT>Qbpi;~3wIXAk+rb%-h$6yRLUVs>;4DQhnK=uSqEueWPnRfQ+JXfbAutUfz!8xVZN3r6316< z#w9t#RIkY?>dx@#!Zd8b(BH>L#_>@he6=lnbP!*6F&1!#%f1{-Im;e-)PD!(~0h*YaWLyycSYW9Zams@%b%E@BgMd8%+p zCotV-V?RM$iu%~aTP{-->}ENq?*r4=jp2ENOL3Lc9mG&iU?>k{iWOq2mEe-U#1eWl zEFw5<7n!;d44r-0NNcWuNfK{EvTKyT$7n!R3-bz7#EX2Za>%vs&&1JSQl&@mF^Rb!P*ijrq zb{E6v0n?-fR(b==Zp>v*XPDmLlF!EK7Go`|nBHfZj>$|BH>P+^?7^4ecn8aUihWJM zT6Qt*r(@d#vE4RUkxci+*nS*S$saqakIiRbl``z-GYrG!FZ^ORC72>Ru&wS4>G{}a z3+(tM7L$%my=1z^V5I}G>62K657YYtWuP}xy)RQ}D3%Z=e^8#1p+FlI`eJuqn6436v!|3G%EK;(yoD+Dfij^nWnMDmgP2}zD0!=x zn$0L{5tP0W*rg9vGltSI8~fdW%{{;lVwf%iv8d^kyDyZ!d{|C0*6B~Vn!uFuWjeND zdiSMdHe;%8pls%&WEP@q$gkaLO!t~h`=?CJ7LQJogDy1g_>;EEu2%hpb z9Xm+C{;E)VwlKvXP$qX^^Ft{EZj`6S*jqT(TZr-)f_09d40NF+q+`2bl(z?z!9v*C za;!9i^3s^n;6y1HK?%Hy?bfICB~ykcV6!K&tZ?iphSIi$Q?Z0okiyhD&s4p@S82@G z$j? z?9Fss!pEj@Da{O{B)-;Wrhqro<~&p89+$m0r!$#pU6$#;n6DSgkUhtAe$D0X%}~6< z>6yY5Gc%Q%G7KAIJ59N~8@a3|zP3M>;>om4!Vc2quXr=8_A%UE^VQEWRsA_V_nGQ_ z

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%0DdWQ-T{eUjrN5xxNr6!+r|KGc6(e;M|_ST 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 literal 0 HcmV?d00001 diff --git a/dist/dynamsoft-core@3.4.31/dist/core.d.ts b/dist/dynamsoft-core@3.4.31/dist/core.d.ts new file mode 100644 index 0000000..05cfdc7 --- /dev/null +++ b/dist/dynamsoft-core@3.4.31/dist/core.d.ts @@ -0,0 +1,1019 @@ +interface WorkerAutoResources { + [key: string]: { + js?: string[] | boolean; + wasm?: string[] | boolean; + deps?: string[]; + }; +} +interface PostMessageBody { + needLoadCore?: boolean; + bLog?: boolean; + bd?: boolean; + dm?: string; + value?: boolean; + count?: number; + engineResourcePaths?: EngineResourcePaths; + autoResources?: WorkerAutoResources; + names?: string[]; +} +type PathInfo = { + version: string; + path: string; + isInternal?: boolean; +}; +type DwtInfo = { + resourcesPath?: string; + serviceInstallerLocation?: string; +}; +interface EngineResourcePaths { + "rootDirectory"?: string; + "std"?: string | PathInfo; + "dip"?: string | PathInfo; + "dnn"?: string | PathInfo; + "core"?: string | PathInfo; + "license"?: string | PathInfo; + "cvr"?: string | PathInfo; + "utility"?: string | PathInfo; + "dbr"?: string | PathInfo; + "dlr"?: string | PathInfo; + "ddn"?: string | PathInfo; + "dcp"?: string | PathInfo; + "dce"?: string | PathInfo; + "dlrData"?: string | PathInfo; + "ddv"?: string | PathInfo; + "dwt"?: string | DwtInfo; +} +interface InnerVersions { + [key: string]: { + worker?: string; + wasm?: string; + }; +} +interface WasmVersions { + "DIP"?: string; + "DNN"?: string; + "CORE"?: string; + "LICENSE"?: string; + "CVR"?: string; + "UTILITY"?: string; + "DBR"?: string; + "DLR"?: string; + "DDN"?: string; + "DCP"?: string; +} +interface MapController { + [key: string]: ((body: any, taskID: number, instanceID?: number) => void); +} +type MimeType = "image/png" | "image/jpeg"; + +declare const mapAsyncDependency: { + [key: string]: any; +}; +declare const waitAsyncDependency: (depName: string | string[]) => Promise; +declare const doOrWaitAsyncDependency: (depName: string | string[], asyncFunc: () => Promise) => Promise; +declare let worker: Worker; +declare const getNextTaskID: () => number; +declare const mapTaskCallBack: { + [key: string]: Function; +}; +declare let onLog: (message: string) => void | undefined; +declare const setOnLog: (value: typeof onLog) => void; +declare let bDebug: boolean; +declare const setBDebug: (value: boolean) => void; +declare const innerVersions: InnerVersions; +declare const mapPackageRegister: { + [key: string]: any; +}; +declare const workerAutoResources: WorkerAutoResources; +declare const loadWasm: (names?: string[] | string) => Promise; +declare class CoreModule { + static get engineResourcePaths(): EngineResourcePaths; + static set engineResourcePaths(value: EngineResourcePaths); + private static _bSupportDce4Module; + static get bSupportDce4Module(): number; + private static _bSupportIRTModule; + static get bSupportIRTModule(): number; + private static _versions; + static get versions(): any; + static get _onLog(): (message: string) => void; + static set _onLog(value: (message: string) => void); + static get _bDebug(): boolean; + static set _bDebug(value: boolean); + static _workerName: string; + /** + * Determine if the decoding module has been loaded successfully. + * @category Initialize and Destroy + */ + static isModuleLoaded(name?: string): boolean; + static loadWasm(names?: string[] | string): Promise; + /** + * Detect environment and get a report. + */ + static detectEnvironment(): Promise; + /** + * modify from https://gist.github.com/2107/5529665 + * @ignore + */ + static browserInfo: any; + static getModuleVersion(): Promise; + static getVersion(): string; + static enableLogging(): void; + static disableLogging(): void; + static cfd(count: number): Promise; +} + +declare enum EnumImageTagType { + ITT_FILE_IMAGE = 0, + ITT_VIDEO_FRAME = 1 +} + +interface ImageTag { + imageId: number; + type: EnumImageTagType; +} + +declare enum EnumImagePixelFormat { + IPF_BINARY = 0, + IPF_BINARYINVERTED = 1, + IPF_GRAYSCALED = 2, + IPF_NV21 = 3, + IPF_RGB_565 = 4, + IPF_RGB_555 = 5, + IPF_RGB_888 = 6, + IPF_ARGB_8888 = 7, + IPF_RGB_161616 = 8, + IPF_ARGB_16161616 = 9, + IPF_ABGR_8888 = 10, + IPF_ABGR_16161616 = 11, + IPF_BGR_888 = 12, + IPF_BINARY_8 = 13, + IPF_NV12 = 14, + IPF_BINARY_8_INVERTED = 15 +} + +interface DSImageData { + bytes: Uint8Array; + width: number; + height: number; + stride: number; + format: EnumImagePixelFormat; + tag?: ImageTag; +} + +declare enum EnumBufferOverflowProtectionMode { + /** New images are blocked when the buffer is full.*/ + BOPM_BLOCK = 0, + /** New images are appended at the end, and oldest images are pushed out from the beginning if the buffer is full.*/ + BOPM_UPDATE = 1 +} + +declare enum EnumColourChannelUsageType { + CCUT_AUTO = 0, + CCUT_FULL_CHANNEL = 1, + CCUT_Y_CHANNEL_ONLY = 2, + CCUT_RGB_R_CHANNEL_ONLY = 3, + CCUT_RGB_G_CHANNEL_ONLY = 4, + CCUT_RGB_B_CHANNEL_ONLY = 5 +} + +declare enum EnumCapturedResultItemType { + CRIT_ORIGINAL_IMAGE = 1, + CRIT_BARCODE = 2, + CRIT_TEXT_LINE = 4, + CRIT_DETECTED_QUAD = 8, + CRIT_NORMALIZED_IMAGE = 16, + CRIT_PARSED_RESULT = 32 +} + +interface CapturedResultItem { + readonly type: EnumCapturedResultItemType; + readonly referenceItem: CapturedResultItem | null; + readonly targetROIDefName: string; + readonly taskName: string; +} + +interface OriginalImageResultItem extends CapturedResultItem { + readonly imageData: DSImageData; +} + +interface Point { + x: number; + y: number; +} + +interface Contour { + points: Array; +} + +declare enum EnumCornerType { + CT_NORMAL_INTERSECTED = 0, + CT_T_INTERSECTED = 1, + CT_CROSS_INTERSECTED = 2, + CT_NOT_INTERSECTED = 3 +} + +/** + * `ErrorCode` enumerates the specific error codes that the SDK may return, providing a systematic way to identify and handle errors encountered during its operation. + */ +declare enum EnumErrorCode { + /** Operation completed successfully. */ + EC_OK = 0, + /** An unspecified error occurred. */ + EC_UNKNOWN = -10000, + /** The system does not have enough memory to perform the requested operation. */ + EC_NO_MEMORY = -10001, + /** A null pointer was encountered where a valid pointer was required. */ + EC_NULL_POINTER = -10002, + /** The provided license is not valid. */ + EC_LICENSE_INVALID = -10003, + /** The provided license has expired. */ + EC_LICENSE_EXPIRED = -10004, + /** The specified file could not be found. */ + EC_FILE_NOT_FOUND = -10005, + /** The file type is not supported for processing. */ + EC_FILE_TYPE_NOT_SUPPORTED = -10006, + /** The image's bits per pixel (BPP) is not supported. */ + EC_BPP_NOT_SUPPORTED = -10007, + /** The specified index is out of the valid range. */ + EC_INDEX_INVALID = -10008, + /** The specified custom region value is invalid or out of range. */ + EC_CUSTOM_REGION_INVALID = -10010, + /** Failed to read the image due to an error in accessing or interpreting the image data. */ + EC_IMAGE_READ_FAILED = -10012, + /** Failed to read a TIFF image, possibly due to corruption or unsupported format. */ + EC_TIFF_READ_FAILED = -10013, + /** The provided DIB (Device-Independent Bitmaps) buffer is invalid or corrupted. */ + EC_DIB_BUFFER_INVALID = -10018, + /** Failed to read a PDF image, possibly due to corruption or unsupported format. */ + EC_PDF_READ_FAILED = -10021, + /** Required PDF processing DLL is missing. */ + EC_PDF_DLL_MISSING = -10022, + /** The specified page number is invalid or out of bounds for the document. */ + EC_PAGE_NUMBER_INVALID = -10023, + /** The specified custom size is invalid or not supported. */ + EC_CUSTOM_SIZE_INVALID = -10024, + /** The operation timed out. */ + EC_TIMEOUT = -10026, + /** Failed to parse JSON input. */ + EC_JSON_PARSE_FAILED = -10030, + /** The JSON type is invalid for the expected context. */ + EC_JSON_TYPE_INVALID = -10031, + /** The JSON key is invalid or unrecognized in the current context. */ + EC_JSON_KEY_INVALID = -10032, + /** The JSON value is invalid for the specified key. */ + EC_JSON_VALUE_INVALID = -10033, + /** The required "Name" key is missing in the JSON data. */ + EC_JSON_NAME_KEY_MISSING = -10034, + /** The value of the "Name" key is duplicated and conflicts with existing data. */ + EC_JSON_NAME_VALUE_DUPLICATED = -10035, + /** The template name is invalid or does not match any known template. */ + EC_TEMPLATE_NAME_INVALID = -10036, + /** The reference made by the "Name" key is invalid or points to nonexistent data. */ + EC_JSON_NAME_REFERENCE_INVALID = -10037, + /** The parameter value provided is invalid or out of the expected range. */ + EC_PARAMETER_VALUE_INVALID = -10038, + /** The domain of the current site does not match the domain bound to the current product key. */ + EC_DOMAIN_NOT_MATCH = -10039, + /** The reserved information does not match the reserved info bound to the current product key. */ + EC_RESERVED_INFO_NOT_MATCH = -10040, + /** The license key does not match the license content. */ + EC_LICENSE_KEY_NOT_MATCH = -10043, + /** Failed to request the license content from the server. */ + EC_REQUEST_FAILED = -10044, + /** Failed to initialize the license. */ + EC_LICENSE_INIT_FAILED = -10045, + /** Error setting the mode's argument, indicating invalid or incompatible arguments. */ + EC_SET_MODE_ARGUMENT_ERROR = -10051, + /** The license content is invalid or corrupted. */ + EC_LICENSE_CONTENT_INVALID = -10052, + /** The license key is invalid or does not match any known valid keys. */ + EC_LICENSE_KEY_INVALID = -10053, + /** The license key has reached its maximum allowed usage and has no remaining quota. */ + EC_LICENSE_DEVICE_RUNS_OUT = -10054, + /** Failed to retrieve the mode's argument, possibly due to invalid state or configuration. */ + EC_GET_MODE_ARGUMENT_ERROR = -10055, + /** The Intermediate Result Types (IRT) license is invalid or not present. */ + EC_IRT_LICENSE_INVALID = -10056, + /** Failed to save the file, possibly due to permissions, space, or an invalid path. */ + EC_FILE_SAVE_FAILED = -10058, + /** The specified stage type is invalid or not supported in the current context. */ + EC_STAGE_TYPE_INVALID = -10059, + /** The specified image orientation is invalid or not supported. */ + EC_IMAGE_ORIENTATION_INVALID = -10060, + /** Failed to convert complex template to simplified settings, indicating a configuration or compatibility issue. */ + EC_CONVERT_COMPLEX_TEMPLATE_ERROR = -10061, + /** Rejecting function call while capturing is in progress, to prevent conflicts or data corruption. */ + EC_CALL_REJECTED_WHEN_CAPTURING = -10062, + /** The specified image source was not found, indicating a missing or inaccessible input source. */ + EC_NO_IMAGE_SOURCE = -10063, + /** Failed to read the directory, possibly due to permissions, non-existence, or other access issues. */ + EC_READ_DIRECTORY_FAILED = -10064, + /** A required module (e.g., DynamsoftBarcodeReader, DynamsoftLabelRecognizer) was not found. */ + EC_MODULE_NOT_FOUND = -10065, + /** The operation does not support multi-page files; use FileFetcher for processing such files. */ + EC_MULTI_PAGES_NOT_SUPPORTED = -10066, + /** Indicates an attempt to write to a file that already exists, with overwriting explicitly disabled. This error suggests the need for either enabling overwriting or ensuring unique file names to avoid conflicts. */ + EC_FILE_ALREADY_EXISTS = -10067, + /** The specified file path does not exist and could not be created. This error could be due to insufficient permissions, a read-only filesystem, or other environmental constraints preventing file creation. */ + EC_CREATE_FILE_FAILED = -10068, + /** The input ImageData object contains invalid parameters. This could be due to incorrect data types, out-of-range values, or improperly formatted data being passed to a function expecting ImageData. */ + EC_IMGAE_DATA_INVALID = -10069, + /** The size of the input image does not meet the requirements. */ + EC_IMAGE_SIZE_NOT_MATCH = -10070, + /** The pixel format of the input image does not meet the requirements. */ + EC_IMAGE_PIXEL_FORMAT_NOT_MATCH = -10071, + /** The section level result is irreplaceable. */ + EC_SECTION_LEVEL_RESULT_IRREPLACEABLE = -10072, + /** Incorrect axis definition. */ + EC_AXIS_DEFINITION_INCORRECT = -10073, + /**The result is not replaceable due to type mismatch*/ + EC_RESULT_TYPE_MISMATCH_IRREPLACEABLE = -10074, + /**Failed to load the PDF library.*/ + EC_PDF_LIBRARY_LOAD_FAILED = -10075, + /** Indicates no license is available or the license is not set. */ + EC_NO_LICENSE = -20000, + /** The provided Handshake Code is invalid or does not match expected format. */ + EC_HANDSHAKE_CODE_INVALID = -20001, + /** Encountered failures while attempting to read or write to the license buffer. */ + EC_LICENSE_BUFFER_FAILED = -20002, + /** Synchronization with the license server failed, possibly due to network issues or server unavailability. */ + EC_LICENSE_SYNC_FAILED = -20003, + /** The device attempting to use the license does not match the device specified in the license buffer. */ + EC_DEVICE_NOT_MATCH = -20004, + /** Binding the device to the license failed, indicating possible issues with the license or device identifier. */ + EC_BIND_DEVICE_FAILED = -20005, + /** The number of instances using the license exceeds the limit allowed by the license terms. */ + EC_INSTANCE_COUNT_OVER_LIMIT = -20008, + /** InitLicenseFromDLS must be called before any SDK objects are created to ensure proper license initialization. */ + EC_LICENSE_INIT_SEQUENCE_FAILED = -20009, + /** Indicates the license in use is a trial version with limited functionality or usage time. */ + EC_TRIAL_LICENSE = -20010, + /** The system failed to reach the License Server, likely due to network connectivity issues. */ + EC_FAILED_TO_REACH_DLS = -20200, + /** Online license validation failed due to network issues. Using cached license information for validation.*/ + EC_LICENSE_CACHE_USED = -20012, + /** The specified barcode format is invalid or unsupported. */ + EC_BARCODE_FORMAT_INVALID = -30009, + /** The license for decoding QR Codes is invalid or not present. */ + EC_QR_LICENSE_INVALID = -30016, + /** The license for decoding 1D barcodes is invalid or not present. */ + EC_1D_LICENSE_INVALID = -30017, + /** The license for decoding PDF417 barcodes is invalid or not present. */ + EC_PDF417_LICENSE_INVALID = -30019, + /** The license for decoding DataMatrix barcodes is invalid or not present. */ + EC_DATAMATRIX_LICENSE_INVALID = -30020, + /** The specified custom module size for barcode generation is invalid or outside acceptable limits. */ + EC_CUSTOM_MODULESIZE_INVALID = -30025, + /** The license for decoding Aztec barcodes is invalid or not present. */ + EC_AZTEC_LICENSE_INVALID = -30041, + /** The license for decoding Patchcode barcodes is invalid or not present. */ + EC_PATCHCODE_LICENSE_INVALID = -30046, + /** The license for decoding postal code formats is invalid or not present. */ + EC_POSTALCODE_LICENSE_INVALID = -30047, + /** The license for Direct Part Marking (DPM) decoding is invalid or not present. */ + EC_DPM_LICENSE_INVALID = -30048, + /** A frame decoding thread is already running, indicating a concurrent operation conflict. */ + EC_FRAME_DECODING_THREAD_EXISTS = -30049, + /** Stopping the frame decoding thread failed, indicating potential issues with thread management. */ + EC_STOP_DECODING_THREAD_FAILED = -30050, + /** The license for decoding MaxiCode barcodes is invalid or not present. */ + EC_MAXICODE_LICENSE_INVALID = -30057, + /** The license for decoding GS1 DataBar barcodes is invalid or not present. */ + EC_GS1_DATABAR_LICENSE_INVALID = -30058, + /** The license for decoding GS1 Composite codes is invalid or not present. */ + EC_GS1_COMPOSITE_LICENSE_INVALID = -30059, + /** The license for decoding DotCode barcodes is invalid or not present. */ + EC_DOTCODE_LICENSE_INVALID = -30061, + /** The license for decoding Pharmacode barcodes is invalid or not present. */ + EC_PHARMACODE_LICENSE_INVALID = -30062, + /** Indicates that the required character model file was not found, possibly due to incorrect paths or missing files. */ + EC_CHARACTER_MODEL_FILE_NOT_FOUND = -40100, + /**There is a conflict in the layout of TextLineGroup. */ + EC_TEXT_LINE_GROUP_LAYOUT_CONFLICT = -40101, + /**There is a conflict in the regex of TextLineGroup. */ + EC_TEXT_LINE_GROUP_REGEX_CONFLICT = -40102, + /** The specified quadrilateral is invalid, potentially due to incorrect points or an unprocessable shape. */ + EC_QUADRILATERAL_INVALID = -50057, + /** The license for generating or processing panoramas is invalid or missing. */ + EC_PANORAMA_LICENSE_INVALID = -70060, + /** The specified resource path does not exist, indicating a missing directory or incorrect path specification. */ + EC_RESOURCE_PATH_NOT_EXIST = -90001, + /** Failed to load the specified resource, which might be due to missing files, access rights, or other issues preventing loading. */ + EC_RESOURCE_LOAD_FAILED = -90002, + /** The code specification required for processing was not found, indicating a missing or incorrect specification. */ + EC_CODE_SPECIFICATION_NOT_FOUND = -90003, + /** The full code string provided is empty, indicating no data was provided for processing. */ + EC_FULL_CODE_EMPTY = -90004, + /** Preprocessing the full code string failed, possibly due to invalid format, corruption, or unsupported features. */ + EC_FULL_CODE_PREPROCESS_FAILED = -90005, + /** The license required for parsing South Africa Driver License data is invalid or not present. */ + EC_ZA_DL_LICENSE_INVALID = -90006, + /** The license required for parsing North America DL/ID (AAMVA) data is invalid or not present. */ + EC_AAMVA_DL_ID_LICENSE_INVALID = -90007, + /** The license required for parsing Aadhaar data is invalid or not present. */ + EC_AADHAAR_LICENSE_INVALID = -90008, + /** The license required for parsing Machine Readable Travel Documents (MRTD) is invalid or not present. */ + EC_MRTD_LICENSE_INVALID = -90009, + /** The license required for parsing Vehicle Identification Number (VIN) data is invalid or not present. */ + EC_VIN_LICENSE_INVALID = -90010, + /** The license required for parsing customized code types is invalid or not present. */ + EC_CUSTOMIZED_CODE_TYPE_LICENSE_INVALID = -90011, + /**The license is initialized successfully but detected invalid content in your key.*/ + EC_LICENSE_WARNING = -10076, + /** [Barcode Reader] No license found.*/ + EC_BARCODE_READER_LICENSE_NOT_FOUND = -30063, + /**[Label Recognizer] No license found.*/ + EC_LABEL_RECOGNIZER_LICENSE_NOT_FOUND = -40103, + /**[Document Normalizer] No license found.*/ + EC_DOCUMENT_NORMALIZER_LICENSE_NOT_FOUND = -50058, + /**[Code Parser] No license found.*/ + EC_CODE_PARSER_LICENSE_NOT_FOUND = -90012 +} + +declare enum EnumGrayscaleEnhancementMode { + /**Skips grayscale transformation. */ + GEM_SKIP = 0, + /**Not supported yet. */ + GEM_AUTO = 1, + /**Takes the unpreprocessed image for following operations. */ + GEM_GENERAL = 2, + /**Preprocesses the image using the gray equalization algorithm. Check @ref IPM for available argument settings.*/ + GEM_GRAY_EQUALIZE = 4, + /**Preprocesses the image using the gray smoothing algorithm. Check @ref IPM for available argument settings.*/ + GEM_GRAY_SMOOTH = 8, + /**Preprocesses the image using the sharpening and smoothing algorithm. Check @ref IPM for available argument settings.*/ + GEM_SHARPEN_SMOOTH = 16, + /**Skips image preprocessing. */ + GEM_REV = -2147483648 +} + +declare enum EnumGrayscaleTransformationMode { + /**Skips grayscale transformation. */ + GTM_SKIP = 0, + /**Transforms to inverted grayscale. Recommended for light on dark images. */ + GTM_INVERTED = 1, + /**Keeps the original grayscale. Recommended for dark on light images. */ + GTM_ORIGINAL = 2, + /**Lets the library choose an algorithm automatically for grayscale transformation.*/ + GTM_AUTO = 4, + /**Reserved setting for grayscale transformation mode.*/ + GTM_REV = -2147483648 +} + +declare enum EnumPDFReadingMode { + /** Outputs vector data found in the PDFs.*/ + PDFRM_VECTOR = 1, + /** The default value. + * Outputs raster data found in the PDFs. + * Depending on the argument Resolution, + * the SDK may rasterize the PDF pages. + * Check the template for available argument settings.*/ + PDFRM_RASTER = 2, + PDFRM_REV = -2147483648 +} + +declare enum EnumRasterDataSource { + /** Specifies the target type for reading a PDF. */ + RDS_RASTERIZED_PAGES = 0, + RDS_EXTRACTED_IMAGES = 1 +} + +declare enum EnumCrossVerificationStatus { + /** The cross verification has not been performed yet. */ + CVS_NOT_VERIFIED = 0, + /** The cross verification has been passed successfully. */ + CVS_PASSED = 1, + /** The cross verification has failed. */ + CVS_FAILED = 2 +} + +declare const EnumIntermediateResultUnitType: { + /** No intermediate result. */ + IRUT_NULL: bigint; + /** A full-color image. */ + IRUT_COLOUR_IMAGE: bigint; + /** A color image that has been scaled down for efficiency. */ + IRUT_SCALED_DOWN_COLOUR_IMAGE: bigint; + /** A grayscale image derived from the original input. */ + IRUT_GRAYSCALE_IMAGE: bigint; + /** A grayscale image that has undergone transformation. */ + IRUT_TRANSOFORMED_GRAYSCALE_IMAGE: bigint; + /** A grayscale image enhanced for further processing. */ + IRUT_ENHANCED_GRAYSCALE_IMAGE: bigint; + /** Regions pre-detected as potentially relevant for further analysis. */ + IRUT_PREDETECTED_REGIONS: bigint; + /** A binary (black and white) image. */ + IRUT_BINARY_IMAGE: bigint; + /** Results from detecting textures within the image. */ + IRUT_TEXTURE_DETECTION_RESULT: bigint; + /** A grayscale image with textures removed to enhance subject details like text or barcodes. */ + IRUT_TEXTURE_REMOVED_GRAYSCALE_IMAGE: bigint; + /** A binary image with textures removed), useful for clear detection of subjects without background noise. */ + IRUT_TEXTURE_REMOVED_BINARY_IMAGE: bigint; + /** Detected contours within the image), which can help in identifying shapes and objects. */ + IRUT_CONTOURS: bigint; + /** Detected line segments), useful in structural analysis of the image content. */ + IRUT_LINE_SEGMENTS: bigint; + /** Identified text zones), indicating areas with potential textual content. */ + IRUT_TEXT_ZONES: bigint; + /** A binary image with text regions removed. */ + IRUT_TEXT_REMOVED_BINARY_IMAGE: bigint; + /** Zones identified as potential barcode areas), aiding in focused barcode detection. */ + IRUT_CANDIDATE_BARCODE_ZONES: bigint; + /** Barcodes that have been localized but not yet decoded. */ + IRUT_LOCALIZED_BARCODES: bigint; + /** Barcode images scaled up for improved readability or decoding accuracy. */ + IRUT_SCALED_UP_BARCODE_IMAGE: bigint; + /** Images of barcodes processed to resist deformation and improve decoding success. */ + IRUT_DEFORMATION_RESISTED_BARCODE_IMAGE: bigint; + /** Barcode images that have been complemented. */ + IRUT_COMPLEMENTED_BARCODE_IMAGE: bigint; + /** Successfully decoded barcodes. */ + IRUT_DECODED_BARCODES: bigint; + /** Detected long lines. */ + IRUT_LONG_LINES: bigint; + /** Detected corners within the image. */ + IRUT_CORNERS: bigint; + /** Candidate edges identified as potential components of quadrilaterals. */ + IRUT_CANDIDATE_QUAD_EDGES: bigint; + /** Successfully detected quadrilaterals. */ + IRUT_DETECTED_QUADS: bigint; + /** Text lines that have been localized in preparation for recognition. */ + IRUT_LOCALIZED_TEXT_LINES: bigint; + /** Successfully recognized text lines. */ + IRUT_RECOGNIZED_TEXT_LINES: bigint; + /** Successfully normalized images. */ + IRUT_NORMALIZED_IMAGES: bigint; + /** Successfully detected short lines. */ + IRUT_SHORT_LINES: bigint; + IRUT_RAW_TEXT_LINES: bigint; + /** Detected logic lines. */ + IRUT_LOGIC_LINES: bigint; + /** A mask to select all types of intermediate results. */ + IRUT_ALL: bigint; +}; +type EnumIntermediateResultUnitType = bigint; + +declare enum EnumRegionObjectElementType { + ROET_PREDETECTED_REGION = 0, + ROET_LOCALIZED_BARCODE = 1, + ROET_DECODED_BARCODE = 2, + ROET_LOCALIZED_TEXT_LINE = 3, + ROET_RECOGNIZED_TEXT_LINE = 4, + ROET_DETECTED_QUAD = 5, + ROET_NORMALIZED_IMAGE = 6, + ROET_SOURCE_IMAGE = 7, + ROET_TARGET_ROI = 8 +} + +declare enum EnumSectionType { + ST_NULL = 0, + ST_REGION_PREDETECTION = 1, + ST_BARCODE_LOCALIZATION = 2, + ST_BARCODE_DECODING = 3, + ST_TEXT_LINE_LOCALIZATION = 4, + ST_TEXT_LINE_RECOGNITION = 5, + ST_DOCUMENT_DETECTION = 6, + ST_DOCUMENT_NORMALIZATION = 7 +} + +interface LineSegment { + startPoint: Point; + endPoint: Point; +} + +interface Corner { + type: EnumCornerType; + intersection: Point; + line1: LineSegment; + line2: LineSegment; +} + +interface Rect { + x: number; + y: number; + width: number; + height: number; + isMeasuredInPercentage?: boolean; +} + +interface Arc { + x: number; + y: number; + radius: number; + startAngle: number; + endAngle: number; +} + +interface Polygon { + points: Array; +} + +interface DSRect { + left: number; + right: number; + top: number; + bottom: number; + isMeasuredInPercentage: boolean; +} + +interface Edge { + startCorner: Corner; + endCorner: Corner; +} + +interface FileImageTag extends ImageTag { + filePath: string; + pageNumber: number; + totalPages: number; +} + +interface ImageSourceErrorListener { + /** + * Called when an error is received from the image source. + * + * @param errorCode An enumeration value of type "EnumErrorCode" indicating the type of error. + * @param errorMessage A C-style string containing the error message providing + * additional information about the error. + */ + onErrorReceived: (errorCode: EnumErrorCode, errorMessage: string) => void; +} + +interface PDFReadingParameter { + mode: EnumPDFReadingMode; + dpi: number; + rasterDataSource: EnumRasterDataSource; +} + +interface Quadrilateral { + points: [Point, Point, Point, Point]; + area?: number; +} + +interface DSFile extends File { + download: () => void; +} + +interface Warning { + id: number; + message: string; +} + +declare enum EnumTransformMatrixType { + TMT_LOCAL_TO_ORIGINAL_IMAGE = 0, + TMT_ORIGINAL_TO_LOCAL_IMAGE = 1 +} + +interface IntermediateResultUnit { + hashId: string; + originalImageHashId: string; + originalImageTag: ImageTag; + unitType: EnumIntermediateResultUnitType; + /** + * For the two types TMT_LOCAL_TO_ORIGINAL_IMAGE & TMT_ORIGINAL_TO_LOCAL_IMAGE, we can get both from C++ and then keep the + * information in JS. Only return the information when customer calls getTransformMatrix with a specified type. + */ + getTransformMatrix: (matrixType: EnumTransformMatrixType) => Array; +} + +interface BinaryImageUnit extends IntermediateResultUnit { + imageData: DSImageData; +} + +interface ColourImageUnit extends IntermediateResultUnit { + imageData: DSImageData; +} + +interface ContoursUnit extends IntermediateResultUnit { + contours: Array; +} + +interface EnhancedGrayscaleImageUnit extends IntermediateResultUnit { + imageData: DSImageData; +} + +interface GrayscaleImageUnit extends IntermediateResultUnit { + imageData: DSImageData; +} + +interface IntermediateResult { + intermediateResultUnits: Array; +} + +interface IntermediateResultExtraInfo { + targetROIDefName: string; + taskName: string; + isSectionLevelResult: boolean; + sectionType: EnumSectionType; +} + +interface LineSegmentsUnit extends IntermediateResultUnit { + lineSegments: Array; +} + +interface RegionObjectElement { + /** + * location was readonly before v3.2.0 + * In 3.2.0 onwards, it can be set as well + * When setting, specify the location as well as + * the matrixToOriginalImage + */ + location: Quadrilateral; + referencedElement: RegionObjectElement; + elementType: EnumRegionObjectElementType; +} + +interface PredetectedRegionElement extends RegionObjectElement { + modeName: string; +} + +interface PredetectedRegionsUnit extends IntermediateResultUnit { + predetectedRegions: Array; +} + +interface ScaledDownColourImageUnit extends IntermediateResultUnit { + imageData: DSImageData; +} + +interface ShortLinesUnit extends IntermediateResultUnit { + shortLines: Array; +} + +interface TextRemovedBinaryImageUnit extends IntermediateResultUnit { + imageData: DSImageData; +} + +interface TextureDetectionResultUnit extends IntermediateResultUnit { + xSpacing: number; + ySpacing: number; +} + +interface TextureRemovedBinaryImageUnit extends IntermediateResultUnit { + imageData: DSImageData; +} + +interface TextureRemovedGrayscaleImageUnit extends IntermediateResultUnit { + imageData: DSImageData; +} + +interface TextZone { + location: Quadrilateral; + charContoursIndices: Array; +} + +interface TextZonesUnit extends IntermediateResultUnit { + textZones: Array; +} + +interface TransformedGrayscaleImageUnit extends IntermediateResultUnit { + imageData: DSImageData; +} + +/** + * The `ObservationParameters` interface represents an object used to configure intermediate result observation. + */ +interface ObservationParameters { + /** + * Sets the types of intermediate result units that are observed. + * @param types The types of intermediate result units to observe. + * @returns A promise that resolves when the types have been successfully set. It does not provide any value upon resolution. + */ + setObservedResultUnitTypes: (types: bigint) => void; + /** + * Retrieves the types of intermediate result units that are observed. + * @returns A promise that resolves with a number that represents the types that are observed. + */ + getObservedResultUnitTypes: () => bigint; + /** + * Determines whether the specified result unit type is observed. + * @param type The result unit type to check. + * @returns Boolean indicating whether the result unit type is observed. + */ + isResultUnitTypeObserved: (type: EnumIntermediateResultUnitType) => boolean; + /** + * Adds an observed task by its name. + * @param taskName The name of the task. + */ + addObservedTask: (taskName: string) => void; + /** + * Removes an observed task by its name. + * @param taskName The name of the task. + */ + removeObservedTask: (taskName: string) => void; + /** + * Determines whether the specified task is observed. + * @param taskName The name of the task. + * @returns Boolean indicating whether the task is observed. + */ + isTaskObserved: (taskName: string) => boolean; +} + +declare abstract class ImageSourceAdapter { + #private; + /** + * @ignore + */ + static _onLog: (message: any) => void; + /** + * @ignore + */ + get _isFetchingStarted(): boolean; + constructor(); + abstract hasNextImageToFetch(): boolean; + /** + * @brief Sets the error listener for the image source. + * + * This function allows you to set an error listener object that will receive + * notifications when errors occur during image source operations. + * If an error occurs, the error information will be passed to the listener's + * OnErrorReceived method. + * + * @param listener An instance of ImageSourceErrorListener or its + * derived class, which will handle error notifications. + */ + setErrorListener(listener: ImageSourceErrorListener): void; + /** + * Adds an image to the internal buffer. + * + * @param image An instance of `DSImageData` containing the image to buffer. + */ + addImageToBuffer(image: DSImageData): void; + /** + * Retrieves a buffered image, of type `DSImageData`. + * + * This function retrieves the latest image added to the buffer, and removes it from the buffer in the process. + * + * @returns A `DSImageData` object retrieved from the buffer which contains the image data of the frame and related information. + */ + getImage(): DSImageData; + /** + * Sets the processing priority of a specific image. This can affect the order in which images are returned by getImage. + * + * @param imageId The ID of the image to prioritize. + * @param keepInBuffer [Optional] Boolean indicating whether to keep the image in the buffer after it has been returned. + */ + setNextImageToReturn(imageId: number, keepInBuffer?: boolean): void; + /** + * @ignore + */ + _resetNextReturnedImage(): void; + /** + * Checks if an image with the specified ID is present in the buffer. + * + * @param imageId The ID of the image to check. + * + * @returns Boolean indicating whether the image is present in the buffer. + */ + hasImage(imageId: number): boolean; + /** + * Starts the process of fetching images. + */ + startFetching(): void; + /** + * Stops the process of fetching images. + * to false, indicating that image fetching has been halted. + */ + stopFetching(): void; + /** + * Sets the maximum number of images that can be buffered at any time. Implementing classes should attempt to keep the buffer within this limit. + * + * @param count The maximum number of images the buffer can hold. + */ + setMaxImageCount(count: number): void; + /** + * Retrieves the maximum number of images that can be buffered. + * + * @returns The maximum image count for the buffer. + */ + getMaxImageCount(): number; + /** + * Retrieves the current number of images in the buffer. + * + * @returns The current image count in the buffer. + */ + getImageCount(): number; + /** + * Clears all images from the buffer, resetting the state for new image fetching. + */ + clearBuffer(): void; + /** + * Determines whether the buffer is currently empty. + * + * @returns Boolean indicating whether the buffer is empty. + */ + isBufferEmpty(): boolean; + /** + * Sets the behavior for handling new incoming images when the buffer is full. Implementations should adhere to the specified mode to manage buffer overflow. + * + * @param mode One of the modes defined in EnumBufferOverflowProtectionMode, specifying how to handle buffer overflow. + */ + setBufferOverflowProtectionMode(mode: EnumBufferOverflowProtectionMode): void; + /** + * Retrieves the current mode for handling buffer overflow. + * + * @returns The current buffer overflow protection mode. + */ + getBufferOverflowProtectionMode(): EnumBufferOverflowProtectionMode; + /** + * Sets the usage type for color channels in images. + * + * @param type One of the types defined in EnumColourChannelUsageType, specifying how color channels should be used. + */ + setColourChannelUsageType(type: EnumColourChannelUsageType): void; + /** + * Retrieves the current mode for handling buffer overflow. + * + * @returns The current buffer overflow protection mode. + */ + getColourChannelUsageType(): EnumColourChannelUsageType; +} + +/** + * Judge if the input is an object(exclude array and function). If `null` or `undefined`, return `false`. + * @param value + * @returns + */ +declare const isObject: (value: any) => value is Object; +/** + * Judge is the input is a {@link Arc} object. + * @param value + * @returns + * @ignore + */ +declare const isArc: (value: any) => value is Arc; +/** + * Judge is the input is a {@link Contour} object. + * @param value + * @returns + * @ignore + */ +declare const isContour: (value: any) => value is Contour; +declare const isOriginalDsImageData: (value: any) => boolean; +/** + * Judge is the input is a {@link DSImageData} object. + * @param value + * @returns + * @ignore + */ +declare const isDSImageData: (value: any) => value is DSImageData; +/** + * Judge is the input is a {@link DSRect} object. + * @param value + * @returns + * @ignore + */ +declare const isDSRect: (value: any) => value is DSRect; +/** + * Judge is the input is a {@link ImageTag} object. + * @param value + * @returns + * @ignore + */ +declare const isImageTag: (value: any) => value is ImageTag; +/** + * Judge is the input is a {@link LineSegment} object. + * @param value + * @returns + * @ignore + */ +declare const isLineSegment: (value: any) => value is LineSegment; +/** + * Judge is the input is a {@link Point} object. + * @param value + * @returns + * @ignore + */ +declare const isPoint: (value: any) => value is Point; +/** + * Judge is the input is a {@link Polygon} object. + * @param value + * @returns + * @ignore + */ +declare const isPolygon: (value: any) => value is Polygon; +/** + * Judge is the input is a {@link Quadrilateral} object. + * @param value + * @returns + * @ignore + */ +declare const isQuad: (value: any) => value is Quadrilateral; +/** + * Judge is the input is a {@link Rect} object. + * @param value + * @returns + * @ignore + */ +declare const isRect: (value: any) => value is Rect; + +declare const requestResource: (url: string, type: "text" | "blob" | "arraybuffer") => Promise; +declare const checkIsLink: (str: string) => boolean; +declare const compareVersion: (strV1: string, strV2: string) => number; +declare const handleEngineResourcePaths: (engineResourcePaths: EngineResourcePaths) => EngineResourcePaths; +declare const _saveToFile: (imageData: ImageData, name: string, download?: boolean) => Promise; +declare const _toCanvas: (imageData: ImageData | DSImageData) => HTMLCanvasElement; +declare const _toImage: (MIMEType: MimeType, imageData: ImageData | DSImageData) => HTMLImageElement; +declare const _toBlob: (MIMEType: MimeType, imageData: ImageData | DSImageData) => Promise; +declare const _getNorImageData: (dsImageData: DSImageData) => ImageData; + +export { Arc, BinaryImageUnit, CapturedResultItem, ColourImageUnit, Contour, ContoursUnit, CoreModule, Corner, DSFile, DSImageData, DSRect, DwtInfo, Edge, EngineResourcePaths, EnhancedGrayscaleImageUnit, EnumBufferOverflowProtectionMode, EnumCapturedResultItemType, EnumColourChannelUsageType, EnumCornerType, EnumCrossVerificationStatus, EnumErrorCode, EnumGrayscaleEnhancementMode, EnumGrayscaleTransformationMode, EnumImagePixelFormat, EnumImageTagType, EnumIntermediateResultUnitType, EnumPDFReadingMode, EnumRasterDataSource, EnumRegionObjectElementType, EnumSectionType, FileImageTag, GrayscaleImageUnit, ImageSourceAdapter, ImageSourceErrorListener, ImageTag, InnerVersions, IntermediateResult, IntermediateResultExtraInfo, IntermediateResultUnit, LineSegment, LineSegmentsUnit, MapController, MimeType, ObservationParameters, OriginalImageResultItem, PDFReadingParameter, PathInfo, Point, Polygon, PostMessageBody, PredetectedRegionElement, PredetectedRegionsUnit, Quadrilateral, Rect, RegionObjectElement, ScaledDownColourImageUnit, ShortLinesUnit, TextRemovedBinaryImageUnit, TextZonesUnit, TextureDetectionResultUnit, TextureRemovedBinaryImageUnit, TextureRemovedGrayscaleImageUnit, TransformedGrayscaleImageUnit, Warning, WasmVersions, WorkerAutoResources, _getNorImageData, _saveToFile, _toBlob, _toCanvas, _toImage, bDebug, checkIsLink, compareVersion, doOrWaitAsyncDependency, getNextTaskID, handleEngineResourcePaths, innerVersions, isArc, isContour, isDSImageData, isDSRect, isImageTag, isLineSegment, isObject, isOriginalDsImageData, isPoint, isPolygon, isQuad, isRect, loadWasm, mapAsyncDependency, mapPackageRegister, mapTaskCallBack, onLog, requestResource, setBDebug, setOnLog, waitAsyncDependency, worker, workerAutoResources }; diff --git a/dist/dynamsoft-core@3.4.31/dist/core.esm.js b/dist/dynamsoft-core@3.4.31/dist/core.esm.js new file mode 100644 index 0000000..e60777c --- /dev/null +++ b/dist/dynamsoft-core@3.4.31/dist/core.esm.js @@ -0,0 +1,11 @@ +/*! + * Dynamsoft JavaScript Library + * @product Dynamsoft Core JS Edition + * @website https://www.dynamsoft.com + * @copyright Copyright 2024, Dynamsoft Corporation + * @author Dynamsoft + * @version 3.4.31 + * @fileoverview Dynamsoft JavaScript Library for Core + * More info on Dynamsoft Core JS: https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/core-module.html + */ +const _=_=>_&&"object"==typeof _&&"function"==typeof _.then,E=(async()=>{})().constructor;class e extends E{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(e){let t;this._task=e,_(e)?t=e:"function"==typeof e&&(t=new E(e)),t&&(async()=>{try{const _=await t;e===this._task&&this.resolve(_)}catch(_){e===this._task&&this.reject(_)}})()}get isEmpty(){return null==this._task}constructor(E){let e,t;super(((_,E)=>{e=_,t=E})),this._s="pending",this.resolve=E=>{this.isPending&&(_(E)?this.task=E:(this._s="fulfilled",e(E)))},this.reject=_=>{this.isPending&&(this._s="rejected",t(_))},this.task=E}}function t(_,E,e,t){if("a"===e&&!t)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof E?_!==E||!t:!E.has(_))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===e?t:"a"===e?t.call(_):t?t.value:E.get(_)}function I(_,E,e,t,I){if("m"===t)throw new TypeError("Private method is not writable");if("a"===t&&!I)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof E?_!==E||!I:!E.has(_))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===t?I.call(_,e):I?I.value=e:E.set(_,e),e}var r,s,n;"function"==typeof SuppressedError&&SuppressedError,function(_){_[_.BOPM_BLOCK=0]="BOPM_BLOCK",_[_.BOPM_UPDATE=1]="BOPM_UPDATE"}(r||(r={})),function(_){_[_.CCUT_AUTO=0]="CCUT_AUTO",_[_.CCUT_FULL_CHANNEL=1]="CCUT_FULL_CHANNEL",_[_.CCUT_Y_CHANNEL_ONLY=2]="CCUT_Y_CHANNEL_ONLY",_[_.CCUT_RGB_R_CHANNEL_ONLY=3]="CCUT_RGB_R_CHANNEL_ONLY",_[_.CCUT_RGB_G_CHANNEL_ONLY=4]="CCUT_RGB_G_CHANNEL_ONLY",_[_.CCUT_RGB_B_CHANNEL_ONLY=5]="CCUT_RGB_B_CHANNEL_ONLY"}(s||(s={})),function(_){_[_.IPF_BINARY=0]="IPF_BINARY",_[_.IPF_BINARYINVERTED=1]="IPF_BINARYINVERTED",_[_.IPF_GRAYSCALED=2]="IPF_GRAYSCALED",_[_.IPF_NV21=3]="IPF_NV21",_[_.IPF_RGB_565=4]="IPF_RGB_565",_[_.IPF_RGB_555=5]="IPF_RGB_555",_[_.IPF_RGB_888=6]="IPF_RGB_888",_[_.IPF_ARGB_8888=7]="IPF_ARGB_8888",_[_.IPF_RGB_161616=8]="IPF_RGB_161616",_[_.IPF_ARGB_16161616=9]="IPF_ARGB_16161616",_[_.IPF_ABGR_8888=10]="IPF_ABGR_8888",_[_.IPF_ABGR_16161616=11]="IPF_ABGR_16161616",_[_.IPF_BGR_888=12]="IPF_BGR_888",_[_.IPF_BINARY_8=13]="IPF_BINARY_8",_[_.IPF_NV12=14]="IPF_NV12",_[_.IPF_BINARY_8_INVERTED=15]="IPF_BINARY_8_INVERTED"}(n||(n={}));const C="undefined"==typeof self,i="function"==typeof importScripts,A=(()=>{if(!i){if(!C&&document.currentScript){let _=document.currentScript.src,E=_.indexOf("?");if(-1!=E)_=_.substring(0,E);else{let E=_.indexOf("#");-1!=E&&(_=_.substring(0,E))}return _.substring(0,_.lastIndexOf("/")+1)}return"./"}})(),o=_=>{if(null==_&&(_="./"),C||i);else{let E=document.createElement("a");E.href=_,_=E.href}return _.endsWith("/")||(_+="/"),_},N=_=>Object.prototype.toString.call(_),a=_=>Array.isArray?Array.isArray(_):"[object Array]"===N(_),T=_=>"[object Boolean]"===N(_),R=_=>"number"==typeof _&&!Number.isNaN(_),L=_=>null!==_&&"object"==typeof _&&!Array.isArray(_),D=_=>!!L(_)&&(!!R(_.x)&&(!!R(_.y)&&(!!R(_.radius)&&(!(_.radius<0)&&(!!R(_.startAngle)&&!!R(_.endAngle)))))),O=_=>!!L(_)&&(!!a(_.points)&&(0!=_.points.length&&!_.points.some((_=>!P(_))))),c=_=>!!L(_)&&(!!R(_.width)&&(!(_.width<=0)&&(!!R(_.height)&&(!(_.height<=0)&&(!!R(_.stride)&&(!(_.stride<=0)&&("format"in _&&!("tag"in _&&!h(_.tag))))))))),S=_=>!!c(_)&&!(!R(_.bytes.length)&&!R(_.bytes.ptr)),l=_=>!!c(_)&&_.bytes instanceof Uint8Array,f=_=>!!L(_)&&(!!R(_.left)&&(!(_.left<0)&&(!!R(_.top)&&(!(_.top<0)&&(!!R(_.right)&&(!(_.right<0)&&(!!R(_.bottom)&&(!(_.bottom<0)&&(!(_.left>=_.right)&&(!(_.top>=_.bottom)&&!!T(_.isMeasuredInPercentage))))))))))),h=_=>null===_||!!L(_)&&(!!R(_.imageId)&&"type"in _),d=_=>!!L(_)&&(!!P(_.startPoint)&&(!!P(_.endPoint)&&(_.startPoint.x!=_.endPoint.x||_.startPoint.y!=_.endPoint.y))),P=_=>!!L(_)&&(!!R(_.x)&&!!R(_.y)),g=_=>!!L(_)&&(!!a(_.points)&&(0!=_.points.length&&!_.points.some((_=>!P(_))))),M=_=>!!L(_)&&(!!a(_.points)&&(0!=_.points.length&&4==_.points.length&&!_.points.some((_=>!P(_))))),u=_=>!!L(_)&&(!!R(_.x)&&(!!R(_.y)&&(!!R(_.width)&&(!(_.width<0)&&(!!R(_.height)&&(!(_.height<0)&&!("isMeasuredInPercentage"in _&&!T(_.isMeasuredInPercentage)))))))),F=async(_,E)=>await new Promise(((e,t)=>{let I=new XMLHttpRequest;I.open("GET",_,!0),I.responseType=E,I.send(),I.onloadend=async()=>{I.status<200||I.status>=300?t(new Error(_+" "+I.status)):e(I.response)},I.onerror=()=>{t(new Error("Network Error: "+I.statusText))}})),G=_=>/^(https:\/\/www\.|http:\/\/www\.|https:\/\/|http:\/\/)|^[a-zA-Z0-9]{2,}(\.[a-zA-Z0-9]{2,})(\.[a-zA-Z0-9]{2,})?/.test(_),U=(_,E)=>{let e=_.split("."),t=E.split(".");for(let _=0;_{const E={},e={std:"dynamsoft-capture-vision-std",dip:"dynamsoft-image-processing",core:"dynamsoft-core",dnn:"dynamsoft-capture-vision-dnn",license:"dynamsoft-license",utility:"dynamsoft-utility",cvr:"dynamsoft-capture-vision-router",dbr:"dynamsoft-barcode-reader",dlr:"dynamsoft-label-recognizer",ddn:"dynamsoft-document-normalizer",dcp:"dynamsoft-code-parser",dcpd:"dynamsoft-code-parser",dlrData:"dynamsoft-label-recognizer-data",dce:"dynamsoft-camera-enhancer",ddv:"dynamsoft-document-viewer"};for(let t in _){if("rootDirectory"===t)continue;let I=t,r=_[I],s=r&&"object"==typeof r&&r.path?r.path:r,n=_.rootDirectory;if(n&&!n.endsWith("/")&&(n+="/"),"object"==typeof r&&r.isInternal)n&&(s=_[I].version?`${n}${e[I]}@${_[I].version}/dist/${"ddv"===I?"engine":""}`:`${n}${e[I]}/dist/${"ddv"===I?"engine":""}`);else{const e=/^@engineRootDirectory(\/?)/;if("string"==typeof s&&(s=s.replace(e,n||"")),"object"==typeof s&&"dwt"===I){const t=_[I].resourcesPath,r=_[I].serviceInstallerLocation;E[I]={resourcesPath:t.replace(e,n||""),serviceInstallerLocation:r.replace(e,n||"")};continue}}E[I]=o(s)}return E},p=async(_,E,e)=>await new Promise((async(t,I)=>{try{const I=E.split(".");let r=I[I.length-1];const s=await w(`image/${r}`,_);I.length<=1&&(r="png");const n=new File([s],E,{type:`image/${r}`});if(e){const _=URL.createObjectURL(n),e=document.createElement("a");e.href=_,e.download=E,e.click()}return t(n)}catch(_){return I()}})),m=_=>{l(_)&&(_=V(_));const E=document.createElement("canvas");E.width=_.width,E.height=_.height;return E.getContext("2d",{willReadFrequently:!0}).putImageData(_,0,0),E},y=(_,E)=>{l(E)&&(E=V(E));const e=m(E);let t=new Image,I=e.toDataURL(_);return t.src=I,t},w=async(_,E)=>{l(E)&&(E=V(E));const e=m(E);return new Promise(((E,t)=>{e.toBlob((_=>E(_)),_)}))},V=_=>{let E,e=_.bytes;if(!(e&&e instanceof Uint8Array))throw Error("Parameter type error");if(Number(_.format)===n.IPF_BGR_888){const _=e.length/3;E=new Uint8ClampedArray(4*_);for(let t=0;t<_;++t)E[4*t]=e[3*t],E[4*t+1]=e[3*t+1],E[4*t+2]=e[3*t+2],E[4*t+3]=255}else if(Number(_.format)===n.IPF_RGB_888){const _=e.length/3;E=new Uint8ClampedArray(4*_);for(let t=0;t<_;++t)E[4*t]=e[3*t+2],E[4*t+1]=e[3*t+1],E[4*t+2]=e[3*t],E[4*t+3]=255}else if(Number(_.format)===n.IPF_GRAYSCALED){const _=e.length;E=new Uint8ClampedArray(4*_);for(let t=0;t<_;t++)E[4*t]=E[4*t+1]=E[4*t+2]=e[t],E[4*t+3]=255}else if(Number(_.format)===n.IPF_BINARY_8){const t=e.length,I=_.width,r=_.height,s=_.stride;E=new Uint8ClampedArray(I*r*4);for(let _=0;_=I)break;E[s]=E[s+1]=E[s+2]=(128&t)/128*255,E[s+3]=255,t<<=1}}}else if(Number(_.format)===n.IPF_ABGR_8888){const _=e.length/4;E=new Uint8ClampedArray(e.length);for(let t=0;t<_;++t)E[4*t]=e[4*t],E[4*t+1]=e[4*t+1],E[4*t+2]=e[4*t+2],E[4*t+3]=e[4*t+3]}else if(Number(_.format)===n.IPF_ARGB_8888){const _=e.length/4;E=new Uint8ClampedArray(e.length);for(let t=0;t<_;++t)E[4*t]=e[4*t+2],E[4*t+1]=e[4*t+1],E[4*t+2]=e[4*t],E[4*t+3]=e[4*t+3]}else if(Number(_.format)===n.IPF_BINARY_8_INVERTED){const t=e.length,I=_.width,r=_.height,s=_.stride;E=new Uint8ClampedArray(I*r*4);for(let _=0;_=I)break;E[s]=E[s+1]=E[s+2]=128&t?0:255,E[s+3]=255,t<<=1}}}return new ImageData(E,_.width,_.height)};var b,v,Y,H,k,X,Z,x;class W{get _isFetchingStarted(){return t(this,k,"f")}constructor(){b.add(this),v.set(this,[]),Y.set(this,1),H.set(this,r.BOPM_BLOCK),k.set(this,!1),X.set(this,void 0),Z.set(this,s.CCUT_AUTO)}setErrorListener(_){}addImageToBuffer(_){var E;if(!l(_))throw new TypeError("Invalid 'image'.");if((null===(E=_.tag)||void 0===E?void 0:E.hasOwnProperty("imageId"))&&"number"==typeof _.tag.imageId&&this.hasImage(_.tag.imageId))throw new Error("Existed imageId.");if(t(this,v,"f").length>=t(this,Y,"f"))switch(t(this,H,"f")){case r.BOPM_BLOCK:break;case r.BOPM_UPDATE:if(t(this,v,"f").push(_),L(t(this,X,"f"))&&R(t(this,X,"f").imageId)&&1==t(this,X,"f").keepInBuffer)for(;t(this,v,"f").length>t(this,Y,"f");){const _=t(this,v,"f").findIndex((_=>{var E;return(null===(E=_.tag)||void 0===E?void 0:E.imageId)!==t(this,X,"f").imageId}));t(this,v,"f").splice(_,1)}else t(this,v,"f").splice(0,t(this,v,"f").length-t(this,Y,"f"))}else t(this,v,"f").push(_)}getImage(){if(0===t(this,v,"f").length)return null;let _;if(t(this,X,"f")&&R(t(this,X,"f").imageId)){const E=t(this,b,"m",x).call(this,t(this,X,"f").imageId);if(E<0)throw new Error(`Image with id ${t(this,X,"f").imageId} doesn't exist.`);_=t(this,v,"f").slice(E,E+1)[0]}else _=t(this,v,"f").pop();if([n.IPF_RGB_565,n.IPF_RGB_555,n.IPF_RGB_888,n.IPF_ARGB_8888,n.IPF_RGB_161616,n.IPF_ARGB_16161616,n.IPF_ABGR_8888,n.IPF_ABGR_16161616,n.IPF_BGR_888].includes(_.format)){if(t(this,Z,"f")===s.CCUT_RGB_R_CHANNEL_ONLY){W._onLog&&W._onLog("only get R channel data.");const E=new Uint8Array(_.width*_.height);for(let e=0;e0!==_.length&&_.every((_=>R(_))))(_))throw new TypeError("Invalid 'imageId'.");if(void 0!==E&&!T(E))throw new TypeError("Invalid 'keepInBuffer'.");I(this,X,{imageId:_,keepInBuffer:E},"f")}_resetNextReturnedImage(){I(this,X,null,"f")}hasImage(_){return t(this,b,"m",x).call(this,_)>=0}startFetching(){I(this,k,!0,"f")}stopFetching(){I(this,k,!1,"f")}setMaxImageCount(_){if("number"!=typeof _)throw new TypeError("Invalid 'count'.");if(_<1||Math.round(_)!==_)throw new Error("Invalid 'count'.");for(I(this,Y,_,"f");t(this,v,"f")&&t(this,v,"f").length>_;)t(this,v,"f").shift()}getMaxImageCount(){return t(this,Y,"f")}getImageCount(){return t(this,v,"f").length}clearBuffer(){t(this,v,"f").length=0}isBufferEmpty(){return 0===t(this,v,"f").length}setBufferOverflowProtectionMode(_){I(this,H,_,"f")}getBufferOverflowProtectionMode(){return t(this,H,"f")}setColourChannelUsageType(_){I(this,Z,_,"f")}getColourChannelUsageType(){return t(this,Z,"f")}}let j,K,J,Q,$;v=new WeakMap,Y=new WeakMap,H=new WeakMap,k=new WeakMap,X=new WeakMap,Z=new WeakMap,b=new WeakSet,x=function(_){if("number"!=typeof _)throw new TypeError("Invalid 'imageId'.");return t(this,v,"f").findIndex((E=>{var e;return(null===(e=E.tag)||void 0===e?void 0:e.imageId)===_}))},"undefined"!=typeof navigator&&(j=navigator,K=j.userAgent,J=j.platform,Q=j.mediaDevices),function(){if(!C){const _={Edge:{search:"Edg",verSearch:"Edg"},OPR:null,Chrome:null,Safari:{str:j.vendor,search:"Apple",verSearch:["Version","iPhone OS","CPU OS"]},Firefox:null,Explorer:{search:"MSIE",verSearch:"MSIE"}},E={HarmonyOS:null,Android:null,iPhone:null,iPad:null,Windows:{str:J,search:"Win"},Mac:{str:J},Linux:{str:J}};let e="unknownBrowser",t=0,I="unknownOS";for(let E in _){const I=_[E]||{};let r=I.str||K,s=I.search||E,n=I.verStr||K,C=I.verSearch||E;if(C instanceof Array||(C=[C]),-1!=r.indexOf(s)){e=E;for(let _ of C){let E=n.indexOf(_);if(-1!=E){t=parseFloat(n.substring(E+_.length+1));break}}break}}for(let _ in E){const e=E[_]||{};let t=e.str||K,r=e.search||_;if(-1!=t.indexOf(r)){I=_;break}}"Linux"==I&&-1!=K.indexOf("Windows NT")&&(I="HarmonyOS"),$={browser:e,version:t,OS:I}}C&&($={browser:"ssr",version:0,OS:"ssr"})}();const z="undefined"!=typeof WebAssembly&&K&&!(/Safari/.test(K)&&!/Chrome/.test(K)&&/\(.+\s11_2_([2-6]).*\)/.test(K)),q=!("undefined"==typeof Worker),__=!(!Q||!Q.getUserMedia),E_=async()=>{let _=!1;if(__)try{(await Q.getUserMedia({video:!0})).getTracks().forEach((_=>{_.stop()})),_=!0}catch(_){}return _};"Chrome"===$.browser&&$.version>66||"Safari"===$.browser&&$.version>13||"OPR"===$.browser&&$.version>43||"Edge"===$.browser&&$.version;const e_={},t_=async _=>{let E="string"==typeof _?[_]:_,t=[];for(let _ of E)t.push(e_[_]=e_[_]||new e);await Promise.all(t)},I_=async(_,E)=>{let t,I="string"==typeof _?[_]:_,r=[];for(let _ of I){let I;r.push(I=e_[_]=e_[_]||new e(t=t||E())),I.isEmpty&&(I.task=t=t||E())}await Promise.all(r)};let r_,s_=0;const n_=()=>s_++,C_={};let i_;const A_=_=>{i_=_,r_&&r_.postMessage({type:"setBLog",body:{value:!!_}})};let o_=!1;const N_=_=>{o_=_,r_&&r_.postMessage({type:"setBDebug",body:{value:!!_}})},a_={},T_={},R_={dip:{wasm:!0}},L_={std:{version:"1.4.21",path:o(A+"../../dynamsoft-capture-vision-std@1.4.21/dist/"),isInternal:!0},core:{version:"3.4.31",path:A,isInternal:!0}},D_=async _=>{let E;_ instanceof Array||(_=_?[_]:[]);let t=e_.core;E=!t||t.isEmpty;let I=new Map;const r=_=>{if("std"==(_=_.toLowerCase())||"core"==_)return;if(!R_[_])throw Error("The '"+_+"' module cannot be found.");let E=R_[_].deps;if(null==E?void 0:E.length)for(let _ of E)r(_);let e=e_[_];I.has(_)||I.set(_,!e||e.isEmpty)};for(let E of _)r(E);let s=[];E&&s.push("core"),s.push(...I.keys());const n=[...I.entries()].filter((_=>!_[1])).map((_=>_[0]));await I_(s,(async()=>{const _=[...I.entries()].filter((_=>_[1])).map((_=>_[0]));await t_(n);const t=B(L_),r={};for(let E of _)r[E]=R_[E];const s={engineResourcePaths:t,autoResources:r,names:_};let C=new e;if(E){s.needLoadCore=!0;let _=t.core+O_._workerName;_.startsWith(location.origin)||(_=await fetch(_).then((_=>_.blob())).then((_=>URL.createObjectURL(_)))),r_=new Worker(_),r_.onerror=_=>{let E=new Error(_.message);C.reject(E)},r_.addEventListener("message",(_=>{let E=_.data?_.data:_,e=E.type,t=E.id,I=E.body;switch(e){case"log":i_&&i_(E.message);break;case"task":try{C_[t](I),delete C_[t]}catch(_){throw delete C_[t],_}break;case"event":try{C_[t](I)}catch(_){throw _}break;default:console.log(_)}})),s.bLog=!!i_,s.bd=o_,s.dm=location.origin.startsWith("http")?location.origin:"https://localhost"}else await t_("core");let i=s_++;C_[i]=_=>{if(_.success)Object.assign(a_,_.versions),"{}"!==JSON.stringify(_.versions)&&(O_._versions=_.versions),C.resolve(void 0);else{const E=Error(_.message);_.stack&&(E.stack=_.stack),C.reject(E)}},r_.postMessage({type:"loadWasm",body:s,id:i}),await C}))};class O_{static get engineResourcePaths(){return L_}static set engineResourcePaths(_){Object.assign(L_,_)}static get bSupportDce4Module(){return this._bSupportDce4Module}static get bSupportIRTModule(){return this._bSupportIRTModule}static get versions(){return this._versions}static get _onLog(){return i_}static set _onLog(_){A_(_)}static get _bDebug(){return o_}static set _bDebug(_){N_(_)}static isModuleLoaded(_){return _=(_=_||"core").toLowerCase(),!!e_[_]&&e_[_].isFulfilled}static async loadWasm(_){return await D_(_)}static async detectEnvironment(){return await(async()=>({wasm:z,worker:q,getUserMedia:__,camera:await E_(),browser:$.browser,version:$.version,OS:$.OS}))()}static async getModuleVersion(){return await new Promise(((_,E)=>{let e=n_();C_[e]=async e=>{if(e.success)return _(e.versions);{let _=new Error(e.message);return _.stack=e.stack+"\n"+_.stack,E(_)}},r_.postMessage({type:"getModuleVersion",id:e})}))}static getVersion(){const _=a_.core&&a_.core.worker,E=a_.core&&a_.core.wasm;return`3.4.31(Worker: ${_||"Not Loaded"}, Wasm: ${E||"Not Loaded"})`}static enableLogging(){W._onLog=console.log,O_._onLog=console.log}static disableLogging(){W._onLog=null,O_._onLog=null}static async cfd(_){return await new Promise(((E,e)=>{let t=n_();C_[t]=async _=>{if(_.success)return E();{let E=new Error(_.message);return E.stack=_.stack+"\n"+E.stack,e(E)}},r_.postMessage({type:"cfd",id:t,body:{count:_}})}))}}var c_,S_,l_,f_,h_,d_,P_,g_,M_;O_._bSupportDce4Module=-1,O_._bSupportIRTModule=-1,O_._versions=null,O_._workerName="core.worker.js",O_.browserInfo=$,function(_){_[_.CRIT_ORIGINAL_IMAGE=1]="CRIT_ORIGINAL_IMAGE",_[_.CRIT_BARCODE=2]="CRIT_BARCODE",_[_.CRIT_TEXT_LINE=4]="CRIT_TEXT_LINE",_[_.CRIT_DETECTED_QUAD=8]="CRIT_DETECTED_QUAD",_[_.CRIT_NORMALIZED_IMAGE=16]="CRIT_NORMALIZED_IMAGE",_[_.CRIT_PARSED_RESULT=32]="CRIT_PARSED_RESULT"}(c_||(c_={})),function(_){_[_.CT_NORMAL_INTERSECTED=0]="CT_NORMAL_INTERSECTED",_[_.CT_T_INTERSECTED=1]="CT_T_INTERSECTED",_[_.CT_CROSS_INTERSECTED=2]="CT_CROSS_INTERSECTED",_[_.CT_NOT_INTERSECTED=3]="CT_NOT_INTERSECTED"}(S_||(S_={})),function(_){_[_.EC_OK=0]="EC_OK",_[_.EC_UNKNOWN=-1e4]="EC_UNKNOWN",_[_.EC_NO_MEMORY=-10001]="EC_NO_MEMORY",_[_.EC_NULL_POINTER=-10002]="EC_NULL_POINTER",_[_.EC_LICENSE_INVALID=-10003]="EC_LICENSE_INVALID",_[_.EC_LICENSE_EXPIRED=-10004]="EC_LICENSE_EXPIRED",_[_.EC_FILE_NOT_FOUND=-10005]="EC_FILE_NOT_FOUND",_[_.EC_FILE_TYPE_NOT_SUPPORTED=-10006]="EC_FILE_TYPE_NOT_SUPPORTED",_[_.EC_BPP_NOT_SUPPORTED=-10007]="EC_BPP_NOT_SUPPORTED",_[_.EC_INDEX_INVALID=-10008]="EC_INDEX_INVALID",_[_.EC_CUSTOM_REGION_INVALID=-10010]="EC_CUSTOM_REGION_INVALID",_[_.EC_IMAGE_READ_FAILED=-10012]="EC_IMAGE_READ_FAILED",_[_.EC_TIFF_READ_FAILED=-10013]="EC_TIFF_READ_FAILED",_[_.EC_DIB_BUFFER_INVALID=-10018]="EC_DIB_BUFFER_INVALID",_[_.EC_PDF_READ_FAILED=-10021]="EC_PDF_READ_FAILED",_[_.EC_PDF_DLL_MISSING=-10022]="EC_PDF_DLL_MISSING",_[_.EC_PAGE_NUMBER_INVALID=-10023]="EC_PAGE_NUMBER_INVALID",_[_.EC_CUSTOM_SIZE_INVALID=-10024]="EC_CUSTOM_SIZE_INVALID",_[_.EC_TIMEOUT=-10026]="EC_TIMEOUT",_[_.EC_JSON_PARSE_FAILED=-10030]="EC_JSON_PARSE_FAILED",_[_.EC_JSON_TYPE_INVALID=-10031]="EC_JSON_TYPE_INVALID",_[_.EC_JSON_KEY_INVALID=-10032]="EC_JSON_KEY_INVALID",_[_.EC_JSON_VALUE_INVALID=-10033]="EC_JSON_VALUE_INVALID",_[_.EC_JSON_NAME_KEY_MISSING=-10034]="EC_JSON_NAME_KEY_MISSING",_[_.EC_JSON_NAME_VALUE_DUPLICATED=-10035]="EC_JSON_NAME_VALUE_DUPLICATED",_[_.EC_TEMPLATE_NAME_INVALID=-10036]="EC_TEMPLATE_NAME_INVALID",_[_.EC_JSON_NAME_REFERENCE_INVALID=-10037]="EC_JSON_NAME_REFERENCE_INVALID",_[_.EC_PARAMETER_VALUE_INVALID=-10038]="EC_PARAMETER_VALUE_INVALID",_[_.EC_DOMAIN_NOT_MATCH=-10039]="EC_DOMAIN_NOT_MATCH",_[_.EC_RESERVED_INFO_NOT_MATCH=-10040]="EC_RESERVED_INFO_NOT_MATCH",_[_.EC_LICENSE_KEY_NOT_MATCH=-10043]="EC_LICENSE_KEY_NOT_MATCH",_[_.EC_REQUEST_FAILED=-10044]="EC_REQUEST_FAILED",_[_.EC_LICENSE_INIT_FAILED=-10045]="EC_LICENSE_INIT_FAILED",_[_.EC_SET_MODE_ARGUMENT_ERROR=-10051]="EC_SET_MODE_ARGUMENT_ERROR",_[_.EC_LICENSE_CONTENT_INVALID=-10052]="EC_LICENSE_CONTENT_INVALID",_[_.EC_LICENSE_KEY_INVALID=-10053]="EC_LICENSE_KEY_INVALID",_[_.EC_LICENSE_DEVICE_RUNS_OUT=-10054]="EC_LICENSE_DEVICE_RUNS_OUT",_[_.EC_GET_MODE_ARGUMENT_ERROR=-10055]="EC_GET_MODE_ARGUMENT_ERROR",_[_.EC_IRT_LICENSE_INVALID=-10056]="EC_IRT_LICENSE_INVALID",_[_.EC_FILE_SAVE_FAILED=-10058]="EC_FILE_SAVE_FAILED",_[_.EC_STAGE_TYPE_INVALID=-10059]="EC_STAGE_TYPE_INVALID",_[_.EC_IMAGE_ORIENTATION_INVALID=-10060]="EC_IMAGE_ORIENTATION_INVALID",_[_.EC_CONVERT_COMPLEX_TEMPLATE_ERROR=-10061]="EC_CONVERT_COMPLEX_TEMPLATE_ERROR",_[_.EC_CALL_REJECTED_WHEN_CAPTURING=-10062]="EC_CALL_REJECTED_WHEN_CAPTURING",_[_.EC_NO_IMAGE_SOURCE=-10063]="EC_NO_IMAGE_SOURCE",_[_.EC_READ_DIRECTORY_FAILED=-10064]="EC_READ_DIRECTORY_FAILED",_[_.EC_MODULE_NOT_FOUND=-10065]="EC_MODULE_NOT_FOUND",_[_.EC_MULTI_PAGES_NOT_SUPPORTED=-10066]="EC_MULTI_PAGES_NOT_SUPPORTED",_[_.EC_FILE_ALREADY_EXISTS=-10067]="EC_FILE_ALREADY_EXISTS",_[_.EC_CREATE_FILE_FAILED=-10068]="EC_CREATE_FILE_FAILED",_[_.EC_IMGAE_DATA_INVALID=-10069]="EC_IMGAE_DATA_INVALID",_[_.EC_IMAGE_SIZE_NOT_MATCH=-10070]="EC_IMAGE_SIZE_NOT_MATCH",_[_.EC_IMAGE_PIXEL_FORMAT_NOT_MATCH=-10071]="EC_IMAGE_PIXEL_FORMAT_NOT_MATCH",_[_.EC_SECTION_LEVEL_RESULT_IRREPLACEABLE=-10072]="EC_SECTION_LEVEL_RESULT_IRREPLACEABLE",_[_.EC_AXIS_DEFINITION_INCORRECT=-10073]="EC_AXIS_DEFINITION_INCORRECT",_[_.EC_RESULT_TYPE_MISMATCH_IRREPLACEABLE=-10074]="EC_RESULT_TYPE_MISMATCH_IRREPLACEABLE",_[_.EC_PDF_LIBRARY_LOAD_FAILED=-10075]="EC_PDF_LIBRARY_LOAD_FAILED",_[_.EC_NO_LICENSE=-2e4]="EC_NO_LICENSE",_[_.EC_HANDSHAKE_CODE_INVALID=-20001]="EC_HANDSHAKE_CODE_INVALID",_[_.EC_LICENSE_BUFFER_FAILED=-20002]="EC_LICENSE_BUFFER_FAILED",_[_.EC_LICENSE_SYNC_FAILED=-20003]="EC_LICENSE_SYNC_FAILED",_[_.EC_DEVICE_NOT_MATCH=-20004]="EC_DEVICE_NOT_MATCH",_[_.EC_BIND_DEVICE_FAILED=-20005]="EC_BIND_DEVICE_FAILED",_[_.EC_INSTANCE_COUNT_OVER_LIMIT=-20008]="EC_INSTANCE_COUNT_OVER_LIMIT",_[_.EC_LICENSE_INIT_SEQUENCE_FAILED=-20009]="EC_LICENSE_INIT_SEQUENCE_FAILED",_[_.EC_TRIAL_LICENSE=-20010]="EC_TRIAL_LICENSE",_[_.EC_FAILED_TO_REACH_DLS=-20200]="EC_FAILED_TO_REACH_DLS",_[_.EC_LICENSE_CACHE_USED=-20012]="EC_LICENSE_CACHE_USED",_[_.EC_BARCODE_FORMAT_INVALID=-30009]="EC_BARCODE_FORMAT_INVALID",_[_.EC_QR_LICENSE_INVALID=-30016]="EC_QR_LICENSE_INVALID",_[_.EC_1D_LICENSE_INVALID=-30017]="EC_1D_LICENSE_INVALID",_[_.EC_PDF417_LICENSE_INVALID=-30019]="EC_PDF417_LICENSE_INVALID",_[_.EC_DATAMATRIX_LICENSE_INVALID=-30020]="EC_DATAMATRIX_LICENSE_INVALID",_[_.EC_CUSTOM_MODULESIZE_INVALID=-30025]="EC_CUSTOM_MODULESIZE_INVALID",_[_.EC_AZTEC_LICENSE_INVALID=-30041]="EC_AZTEC_LICENSE_INVALID",_[_.EC_PATCHCODE_LICENSE_INVALID=-30046]="EC_PATCHCODE_LICENSE_INVALID",_[_.EC_POSTALCODE_LICENSE_INVALID=-30047]="EC_POSTALCODE_LICENSE_INVALID",_[_.EC_DPM_LICENSE_INVALID=-30048]="EC_DPM_LICENSE_INVALID",_[_.EC_FRAME_DECODING_THREAD_EXISTS=-30049]="EC_FRAME_DECODING_THREAD_EXISTS",_[_.EC_STOP_DECODING_THREAD_FAILED=-30050]="EC_STOP_DECODING_THREAD_FAILED",_[_.EC_MAXICODE_LICENSE_INVALID=-30057]="EC_MAXICODE_LICENSE_INVALID",_[_.EC_GS1_DATABAR_LICENSE_INVALID=-30058]="EC_GS1_DATABAR_LICENSE_INVALID",_[_.EC_GS1_COMPOSITE_LICENSE_INVALID=-30059]="EC_GS1_COMPOSITE_LICENSE_INVALID",_[_.EC_DOTCODE_LICENSE_INVALID=-30061]="EC_DOTCODE_LICENSE_INVALID",_[_.EC_PHARMACODE_LICENSE_INVALID=-30062]="EC_PHARMACODE_LICENSE_INVALID",_[_.EC_CHARACTER_MODEL_FILE_NOT_FOUND=-40100]="EC_CHARACTER_MODEL_FILE_NOT_FOUND",_[_.EC_TEXT_LINE_GROUP_LAYOUT_CONFLICT=-40101]="EC_TEXT_LINE_GROUP_LAYOUT_CONFLICT",_[_.EC_TEXT_LINE_GROUP_REGEX_CONFLICT=-40102]="EC_TEXT_LINE_GROUP_REGEX_CONFLICT",_[_.EC_QUADRILATERAL_INVALID=-50057]="EC_QUADRILATERAL_INVALID",_[_.EC_PANORAMA_LICENSE_INVALID=-70060]="EC_PANORAMA_LICENSE_INVALID",_[_.EC_RESOURCE_PATH_NOT_EXIST=-90001]="EC_RESOURCE_PATH_NOT_EXIST",_[_.EC_RESOURCE_LOAD_FAILED=-90002]="EC_RESOURCE_LOAD_FAILED",_[_.EC_CODE_SPECIFICATION_NOT_FOUND=-90003]="EC_CODE_SPECIFICATION_NOT_FOUND",_[_.EC_FULL_CODE_EMPTY=-90004]="EC_FULL_CODE_EMPTY",_[_.EC_FULL_CODE_PREPROCESS_FAILED=-90005]="EC_FULL_CODE_PREPROCESS_FAILED",_[_.EC_ZA_DL_LICENSE_INVALID=-90006]="EC_ZA_DL_LICENSE_INVALID",_[_.EC_AAMVA_DL_ID_LICENSE_INVALID=-90007]="EC_AAMVA_DL_ID_LICENSE_INVALID",_[_.EC_AADHAAR_LICENSE_INVALID=-90008]="EC_AADHAAR_LICENSE_INVALID",_[_.EC_MRTD_LICENSE_INVALID=-90009]="EC_MRTD_LICENSE_INVALID",_[_.EC_VIN_LICENSE_INVALID=-90010]="EC_VIN_LICENSE_INVALID",_[_.EC_CUSTOMIZED_CODE_TYPE_LICENSE_INVALID=-90011]="EC_CUSTOMIZED_CODE_TYPE_LICENSE_INVALID",_[_.EC_LICENSE_WARNING=-10076]="EC_LICENSE_WARNING",_[_.EC_BARCODE_READER_LICENSE_NOT_FOUND=-30063]="EC_BARCODE_READER_LICENSE_NOT_FOUND",_[_.EC_LABEL_RECOGNIZER_LICENSE_NOT_FOUND=-40103]="EC_LABEL_RECOGNIZER_LICENSE_NOT_FOUND",_[_.EC_DOCUMENT_NORMALIZER_LICENSE_NOT_FOUND=-50058]="EC_DOCUMENT_NORMALIZER_LICENSE_NOT_FOUND",_[_.EC_CODE_PARSER_LICENSE_NOT_FOUND=-90012]="EC_CODE_PARSER_LICENSE_NOT_FOUND"}(l_||(l_={})),function(_){_[_.GEM_SKIP=0]="GEM_SKIP",_[_.GEM_AUTO=1]="GEM_AUTO",_[_.GEM_GENERAL=2]="GEM_GENERAL",_[_.GEM_GRAY_EQUALIZE=4]="GEM_GRAY_EQUALIZE",_[_.GEM_GRAY_SMOOTH=8]="GEM_GRAY_SMOOTH",_[_.GEM_SHARPEN_SMOOTH=16]="GEM_SHARPEN_SMOOTH",_[_.GEM_REV=-2147483648]="GEM_REV"}(f_||(f_={})),function(_){_[_.GTM_SKIP=0]="GTM_SKIP",_[_.GTM_INVERTED=1]="GTM_INVERTED",_[_.GTM_ORIGINAL=2]="GTM_ORIGINAL",_[_.GTM_AUTO=4]="GTM_AUTO",_[_.GTM_REV=-2147483648]="GTM_REV"}(h_||(h_={})),function(_){_[_.ITT_FILE_IMAGE=0]="ITT_FILE_IMAGE",_[_.ITT_VIDEO_FRAME=1]="ITT_VIDEO_FRAME"}(d_||(d_={})),function(_){_[_.PDFRM_VECTOR=1]="PDFRM_VECTOR",_[_.PDFRM_RASTER=2]="PDFRM_RASTER",_[_.PDFRM_REV=-2147483648]="PDFRM_REV"}(P_||(P_={})),function(_){_[_.RDS_RASTERIZED_PAGES=0]="RDS_RASTERIZED_PAGES",_[_.RDS_EXTRACTED_IMAGES=1]="RDS_EXTRACTED_IMAGES"}(g_||(g_={})),function(_){_[_.CVS_NOT_VERIFIED=0]="CVS_NOT_VERIFIED",_[_.CVS_PASSED=1]="CVS_PASSED",_[_.CVS_FAILED=2]="CVS_FAILED"}(M_||(M_={}));const u_={IRUT_NULL:BigInt(0),IRUT_COLOUR_IMAGE:BigInt(1),IRUT_SCALED_DOWN_COLOUR_IMAGE:BigInt(2),IRUT_GRAYSCALE_IMAGE:BigInt(4),IRUT_TRANSOFORMED_GRAYSCALE_IMAGE:BigInt(8),IRUT_ENHANCED_GRAYSCALE_IMAGE:BigInt(16),IRUT_PREDETECTED_REGIONS:BigInt(32),IRUT_BINARY_IMAGE:BigInt(64),IRUT_TEXTURE_DETECTION_RESULT:BigInt(128),IRUT_TEXTURE_REMOVED_GRAYSCALE_IMAGE:BigInt(256),IRUT_TEXTURE_REMOVED_BINARY_IMAGE:BigInt(512),IRUT_CONTOURS:BigInt(1024),IRUT_LINE_SEGMENTS:BigInt(2048),IRUT_TEXT_ZONES:BigInt(4096),IRUT_TEXT_REMOVED_BINARY_IMAGE:BigInt(8192),IRUT_CANDIDATE_BARCODE_ZONES:BigInt(16384),IRUT_LOCALIZED_BARCODES:BigInt(32768),IRUT_SCALED_UP_BARCODE_IMAGE:BigInt(65536),IRUT_DEFORMATION_RESISTED_BARCODE_IMAGE:BigInt(1<<17),IRUT_COMPLEMENTED_BARCODE_IMAGE:BigInt(1<<18),IRUT_DECODED_BARCODES:BigInt(1<<19),IRUT_LONG_LINES:BigInt(1<<20),IRUT_CORNERS:BigInt(1<<21),IRUT_CANDIDATE_QUAD_EDGES:BigInt(1<<22),IRUT_DETECTED_QUADS:BigInt(1<<23),IRUT_LOCALIZED_TEXT_LINES:BigInt(1<<24),IRUT_RECOGNIZED_TEXT_LINES:BigInt(1<<25),IRUT_NORMALIZED_IMAGES:BigInt(1<<26),IRUT_SHORT_LINES:BigInt(1<<27),IRUT_RAW_TEXT_LINES:BigInt(1<<28),IRUT_LOGIC_LINES:BigInt(1<<29),IRUT_ALL:BigInt("0xFFFFFFFFFFFFFFFF")};var F_,G_;!function(_){_[_.ROET_PREDETECTED_REGION=0]="ROET_PREDETECTED_REGION",_[_.ROET_LOCALIZED_BARCODE=1]="ROET_LOCALIZED_BARCODE",_[_.ROET_DECODED_BARCODE=2]="ROET_DECODED_BARCODE",_[_.ROET_LOCALIZED_TEXT_LINE=3]="ROET_LOCALIZED_TEXT_LINE",_[_.ROET_RECOGNIZED_TEXT_LINE=4]="ROET_RECOGNIZED_TEXT_LINE",_[_.ROET_DETECTED_QUAD=5]="ROET_DETECTED_QUAD",_[_.ROET_NORMALIZED_IMAGE=6]="ROET_NORMALIZED_IMAGE",_[_.ROET_SOURCE_IMAGE=7]="ROET_SOURCE_IMAGE",_[_.ROET_TARGET_ROI=8]="ROET_TARGET_ROI"}(F_||(F_={})),function(_){_[_.ST_NULL=0]="ST_NULL",_[_.ST_REGION_PREDETECTION=1]="ST_REGION_PREDETECTION",_[_.ST_BARCODE_LOCALIZATION=2]="ST_BARCODE_LOCALIZATION",_[_.ST_BARCODE_DECODING=3]="ST_BARCODE_DECODING",_[_.ST_TEXT_LINE_LOCALIZATION=4]="ST_TEXT_LINE_LOCALIZATION",_[_.ST_TEXT_LINE_RECOGNITION=5]="ST_TEXT_LINE_RECOGNITION",_[_.ST_DOCUMENT_DETECTION=6]="ST_DOCUMENT_DETECTION",_[_.ST_DOCUMENT_NORMALIZATION=7]="ST_DOCUMENT_NORMALIZATION"}(G_||(G_={}));export{O_ as CoreModule,r as EnumBufferOverflowProtectionMode,c_ as EnumCapturedResultItemType,s as EnumColourChannelUsageType,S_ as EnumCornerType,M_ as EnumCrossVerificationStatus,l_ as EnumErrorCode,f_ as EnumGrayscaleEnhancementMode,h_ as EnumGrayscaleTransformationMode,n as EnumImagePixelFormat,d_ as EnumImageTagType,u_ as EnumIntermediateResultUnitType,P_ as EnumPDFReadingMode,g_ as EnumRasterDataSource,F_ as EnumRegionObjectElementType,G_ as EnumSectionType,W as ImageSourceAdapter,V as _getNorImageData,p as _saveToFile,w as _toBlob,m as _toCanvas,y as _toImage,o_ as bDebug,G as checkIsLink,U as compareVersion,I_ as doOrWaitAsyncDependency,n_ as getNextTaskID,B as handleEngineResourcePaths,a_ as innerVersions,D as isArc,O as isContour,l as isDSImageData,f as isDSRect,h as isImageTag,d as isLineSegment,L as isObject,S as isOriginalDsImageData,P as isPoint,g as isPolygon,M as isQuad,u as isRect,D_ as loadWasm,e_ as mapAsyncDependency,T_ as mapPackageRegister,C_ as mapTaskCallBack,i_ as onLog,F as requestResource,N_ as setBDebug,A_ as setOnLog,t_ as waitAsyncDependency,r_ as worker,R_ as workerAutoResources}; diff --git a/dist/dynamsoft-core@3.4.31/dist/core.js b/dist/dynamsoft-core@3.4.31/dist/core.js new file mode 100644 index 0000000..ad62755 --- /dev/null +++ b/dist/dynamsoft-core@3.4.31/dist/core.js @@ -0,0 +1,11 @@ +/*! + * Dynamsoft JavaScript Library + * @product Dynamsoft Core JS Edition + * @website https://www.dynamsoft.com + * @copyright Copyright 2024, Dynamsoft Corporation + * @author Dynamsoft + * @version 3.4.31 + * @fileoverview Dynamsoft JavaScript Library for Core + * More info on Dynamsoft Core JS: https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/core-module.html + */ +!function(e,E){"object"==typeof exports&&"undefined"!=typeof module?E(exports):"function"==typeof define&&define.amd?define(["exports"],E):E(((e="undefined"!=typeof globalThis?globalThis:e||self).Dynamsoft=e.Dynamsoft||{},e.Dynamsoft.Core={}))}(this,(function(e){"use strict";const E=e=>e&&"object"==typeof e&&"function"==typeof e.then,_=(async()=>{})().constructor;class t extends _{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(e){let t;this._task=e,E(e)?t=e:"function"==typeof e&&(t=new _(e)),t&&(async()=>{try{const E=await t;e===this._task&&this.resolve(E)}catch(E){e===this._task&&this.reject(E)}})()}get isEmpty(){return null==this._task}constructor(e){let _,t;super(((e,E)=>{_=e,t=E})),this._s="pending",this.resolve=e=>{this.isPending&&(E(e)?this.task=e:(this._s="fulfilled",_(e)))},this.reject=e=>{this.isPending&&(this._s="rejected",t(e))},this.task=e}}function I(e,E,_,t){if("a"===_&&!t)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof E?e!==E||!t:!E.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===_?t:"a"===_?t.call(e):t?t.value:E.get(e)}function r(e,E,_,t,I){if("m"===t)throw new TypeError("Private method is not writable");if("a"===t&&!I)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof E?e!==E||!I:!E.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===t?I.call(e,_):I?I.value=_:E.set(e,_),_}var n,o,a;"function"==typeof SuppressedError&&SuppressedError,e.EnumBufferOverflowProtectionMode=void 0,(n=e.EnumBufferOverflowProtectionMode||(e.EnumBufferOverflowProtectionMode={}))[n.BOPM_BLOCK=0]="BOPM_BLOCK",n[n.BOPM_UPDATE=1]="BOPM_UPDATE",e.EnumColourChannelUsageType=void 0,(o=e.EnumColourChannelUsageType||(e.EnumColourChannelUsageType={}))[o.CCUT_AUTO=0]="CCUT_AUTO",o[o.CCUT_FULL_CHANNEL=1]="CCUT_FULL_CHANNEL",o[o.CCUT_Y_CHANNEL_ONLY=2]="CCUT_Y_CHANNEL_ONLY",o[o.CCUT_RGB_R_CHANNEL_ONLY=3]="CCUT_RGB_R_CHANNEL_ONLY",o[o.CCUT_RGB_G_CHANNEL_ONLY=4]="CCUT_RGB_G_CHANNEL_ONLY",o[o.CCUT_RGB_B_CHANNEL_ONLY=5]="CCUT_RGB_B_CHANNEL_ONLY",e.EnumImagePixelFormat=void 0,(a=e.EnumImagePixelFormat||(e.EnumImagePixelFormat={}))[a.IPF_BINARY=0]="IPF_BINARY",a[a.IPF_BINARYINVERTED=1]="IPF_BINARYINVERTED",a[a.IPF_GRAYSCALED=2]="IPF_GRAYSCALED",a[a.IPF_NV21=3]="IPF_NV21",a[a.IPF_RGB_565=4]="IPF_RGB_565",a[a.IPF_RGB_555=5]="IPF_RGB_555",a[a.IPF_RGB_888=6]="IPF_RGB_888",a[a.IPF_ARGB_8888=7]="IPF_ARGB_8888",a[a.IPF_RGB_161616=8]="IPF_RGB_161616",a[a.IPF_ARGB_16161616=9]="IPF_ARGB_16161616",a[a.IPF_ABGR_8888=10]="IPF_ABGR_8888",a[a.IPF_ABGR_16161616=11]="IPF_ABGR_16161616",a[a.IPF_BGR_888=12]="IPF_BGR_888",a[a.IPF_BINARY_8=13]="IPF_BINARY_8",a[a.IPF_NV12=14]="IPF_NV12",a[a.IPF_BINARY_8_INVERTED=15]="IPF_BINARY_8_INVERTED";const s="undefined"==typeof self,i="function"==typeof importScripts,C=(()=>{if(!i){if(!s&&document.currentScript){let e=document.currentScript.src,E=e.indexOf("?");if(-1!=E)e=e.substring(0,E);else{let E=e.indexOf("#");-1!=E&&(e=e.substring(0,E))}return e.substring(0,e.lastIndexOf("/")+1)}return"./"}})(),A=e=>{if(null==e&&(e="./"),s||i);else{let E=document.createElement("a");E.href=e,e=E.href}return e.endsWith("/")||(e+="/"),e},T=e=>Object.prototype.toString.call(e),N=e=>Array.isArray?Array.isArray(e):"[object Array]"===T(e),R=e=>"[object Boolean]"===T(e),L=e=>"number"==typeof e&&!Number.isNaN(e),D=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),O=e=>!!D(e)&&(!!L(e.width)&&(!(e.width<=0)&&(!!L(e.height)&&(!(e.height<=0)&&(!!L(e.stride)&&(!(e.stride<=0)&&("format"in e&&!("tag"in e&&!m(e.tag))))))))),l=e=>!!O(e)&&e.bytes instanceof Uint8Array,m=e=>null===e||!!D(e)&&(!!L(e.imageId)&&"type"in e),c=e=>!!D(e)&&(!!L(e.x)&&!!L(e.y)),u=e=>{const E={},_={std:"dynamsoft-capture-vision-std",dip:"dynamsoft-image-processing",core:"dynamsoft-core",dnn:"dynamsoft-capture-vision-dnn",license:"dynamsoft-license",utility:"dynamsoft-utility",cvr:"dynamsoft-capture-vision-router",dbr:"dynamsoft-barcode-reader",dlr:"dynamsoft-label-recognizer",ddn:"dynamsoft-document-normalizer",dcp:"dynamsoft-code-parser",dcpd:"dynamsoft-code-parser",dlrData:"dynamsoft-label-recognizer-data",dce:"dynamsoft-camera-enhancer",ddv:"dynamsoft-document-viewer"};for(let t in e){if("rootDirectory"===t)continue;let I=t,r=e[I],n=r&&"object"==typeof r&&r.path?r.path:r,o=e.rootDirectory;if(o&&!o.endsWith("/")&&(o+="/"),"object"==typeof r&&r.isInternal)o&&(n=e[I].version?`${o}${_[I]}@${e[I].version}/dist/${"ddv"===I?"engine":""}`:`${o}${_[I]}/dist/${"ddv"===I?"engine":""}`);else{const _=/^@engineRootDirectory(\/?)/;if("string"==typeof n&&(n=n.replace(_,o||"")),"object"==typeof n&&"dwt"===I){const t=e[I].resourcesPath,r=e[I].serviceInstallerLocation;E[I]={resourcesPath:t.replace(_,o||""),serviceInstallerLocation:r.replace(_,o||"")};continue}}E[I]=A(n)}return E},S=e=>{l(e)&&(e=d(e));const E=document.createElement("canvas");E.width=e.width,E.height=e.height;return E.getContext("2d",{willReadFrequently:!0}).putImageData(e,0,0),E},g=async(e,E)=>{l(E)&&(E=d(E));const _=S(E);return new Promise(((E,t)=>{_.toBlob((e=>E(e)),e)}))},d=E=>{let _,t=E.bytes;if(!(t&&t instanceof Uint8Array))throw Error("Parameter type error");if(Number(E.format)===e.EnumImagePixelFormat.IPF_BGR_888){const e=t.length/3;_=new Uint8ClampedArray(4*e);for(let E=0;E=I)break;_[n]=_[n+1]=_[n+2]=(128&e)/128*255,_[n+3]=255,e<<=1}}}else if(Number(E.format)===e.EnumImagePixelFormat.IPF_ABGR_8888){const e=t.length/4;_=new Uint8ClampedArray(t.length);for(let E=0;E=I)break;_[n]=_[n+1]=_[n+2]=128&e?0:255,_[n+3]=255,e<<=1}}}return new ImageData(_,E.width,E.height)};var P,f,F,h,M,G,U,p;class y{get _isFetchingStarted(){return I(this,M,"f")}constructor(){P.add(this),f.set(this,[]),F.set(this,1),h.set(this,e.EnumBufferOverflowProtectionMode.BOPM_BLOCK),M.set(this,!1),G.set(this,void 0),U.set(this,e.EnumColourChannelUsageType.CCUT_AUTO)}setErrorListener(e){}addImageToBuffer(E){var _;if(!l(E))throw new TypeError("Invalid 'image'.");if((null===(_=E.tag)||void 0===_?void 0:_.hasOwnProperty("imageId"))&&"number"==typeof E.tag.imageId&&this.hasImage(E.tag.imageId))throw new Error("Existed imageId.");if(I(this,f,"f").length>=I(this,F,"f"))switch(I(this,h,"f")){case e.EnumBufferOverflowProtectionMode.BOPM_BLOCK:break;case e.EnumBufferOverflowProtectionMode.BOPM_UPDATE:if(I(this,f,"f").push(E),D(I(this,G,"f"))&&L(I(this,G,"f").imageId)&&1==I(this,G,"f").keepInBuffer)for(;I(this,f,"f").length>I(this,F,"f");){const e=I(this,f,"f").findIndex((e=>{var E;return(null===(E=e.tag)||void 0===E?void 0:E.imageId)!==I(this,G,"f").imageId}));I(this,f,"f").splice(e,1)}else I(this,f,"f").splice(0,I(this,f,"f").length-I(this,F,"f"))}else I(this,f,"f").push(E)}getImage(){if(0===I(this,f,"f").length)return null;let E;if(I(this,G,"f")&&L(I(this,G,"f").imageId)){const e=I(this,P,"m",p).call(this,I(this,G,"f").imageId);if(e<0)throw new Error(`Image with id ${I(this,G,"f").imageId} doesn't exist.`);E=I(this,f,"f").slice(e,e+1)[0]}else E=I(this,f,"f").pop();if([e.EnumImagePixelFormat.IPF_RGB_565,e.EnumImagePixelFormat.IPF_RGB_555,e.EnumImagePixelFormat.IPF_RGB_888,e.EnumImagePixelFormat.IPF_ARGB_8888,e.EnumImagePixelFormat.IPF_RGB_161616,e.EnumImagePixelFormat.IPF_ARGB_16161616,e.EnumImagePixelFormat.IPF_ABGR_8888,e.EnumImagePixelFormat.IPF_ABGR_16161616,e.EnumImagePixelFormat.IPF_BGR_888].includes(E.format)){if(I(this,U,"f")===e.EnumColourChannelUsageType.CCUT_RGB_R_CHANNEL_ONLY){y._onLog&&y._onLog("only get R channel data.");const _=new Uint8Array(E.width*E.height);for(let t=0;t<_.length;t++)switch(E.format){case e.EnumImagePixelFormat.IPF_RGB_565:case e.EnumImagePixelFormat.IPF_RGB_555:case e.EnumImagePixelFormat.IPF_RGB_888:case e.EnumImagePixelFormat.IPF_RGB_161616:_[t]=E.bytes[3*t+2];break;case e.EnumImagePixelFormat.IPF_ARGB_8888:case e.EnumImagePixelFormat.IPF_ARGB_16161616:_[t]=E.bytes[4*t+2];break;case e.EnumImagePixelFormat.IPF_BGR_888:_[t]=E.bytes[3*t];break;case e.EnumImagePixelFormat.IPF_ABGR_8888:case e.EnumImagePixelFormat.IPF_ABGR_16161616:_[t]=E.bytes[4*t]}E.bytes=_,E.stride=E.width,E.format=e.EnumImagePixelFormat.IPF_GRAYSCALED}else if(I(this,U,"f")===e.EnumColourChannelUsageType.CCUT_RGB_G_CHANNEL_ONLY){y._onLog&&y._onLog("only get G channel data.");const _=new Uint8Array(E.width*E.height);for(let t=0;t<_.length;t++)switch(E.format){case e.EnumImagePixelFormat.IPF_RGB_565:case e.EnumImagePixelFormat.IPF_RGB_555:case e.EnumImagePixelFormat.IPF_RGB_888:case e.EnumImagePixelFormat.IPF_RGB_161616:case e.EnumImagePixelFormat.IPF_BGR_888:_[t]=E.bytes[3*t+1];break;case e.EnumImagePixelFormat.IPF_ARGB_8888:case e.EnumImagePixelFormat.IPF_ARGB_16161616:case e.EnumImagePixelFormat.IPF_ABGR_8888:case e.EnumImagePixelFormat.IPF_ABGR_16161616:_[t]=E.bytes[4*t+1]}E.bytes=_,E.stride=E.width,E.format=e.EnumImagePixelFormat.IPF_GRAYSCALED}else if(I(this,U,"f")===e.EnumColourChannelUsageType.CCUT_RGB_B_CHANNEL_ONLY){y._onLog&&y._onLog("only get B channel data.");const _=new Uint8Array(E.width*E.height);for(let t=0;t<_.length;t++)switch(E.format){case e.EnumImagePixelFormat.IPF_RGB_565:case e.EnumImagePixelFormat.IPF_RGB_555:case e.EnumImagePixelFormat.IPF_RGB_888:case e.EnumImagePixelFormat.IPF_RGB_161616:_[t]=E.bytes[3*t];break;case e.EnumImagePixelFormat.IPF_ARGB_8888:case e.EnumImagePixelFormat.IPF_ARGB_16161616:_[t]=E.bytes[4*t];break;case e.EnumImagePixelFormat.IPF_BGR_888:_[t]=E.bytes[3*t+2];break;case e.EnumImagePixelFormat.IPF_ABGR_8888:case e.EnumImagePixelFormat.IPF_ABGR_16161616:_[t]=E.bytes[4*t+2]}E.bytes=_,E.stride=E.width,E.format=e.EnumImagePixelFormat.IPF_GRAYSCALED}}else[e.EnumImagePixelFormat.IPF_NV21,e.EnumImagePixelFormat.IPF_NV12].includes(E.format)&&y._onLog&&y._onLog("NV21 or NV12 is not supported.");return E}setNextImageToReturn(e,E){if(!((...e)=>0!==e.length&&e.every((e=>L(e))))(e))throw new TypeError("Invalid 'imageId'.");if(void 0!==E&&!R(E))throw new TypeError("Invalid 'keepInBuffer'.");r(this,G,{imageId:e,keepInBuffer:E},"f")}_resetNextReturnedImage(){r(this,G,null,"f")}hasImage(e){return I(this,P,"m",p).call(this,e)>=0}startFetching(){r(this,M,!0,"f")}stopFetching(){r(this,M,!1,"f")}setMaxImageCount(e){if("number"!=typeof e)throw new TypeError("Invalid 'count'.");if(e<1||Math.round(e)!==e)throw new Error("Invalid 'count'.");for(r(this,F,e,"f");I(this,f,"f")&&I(this,f,"f").length>e;)I(this,f,"f").shift()}getMaxImageCount(){return I(this,F,"f")}getImageCount(){return I(this,f,"f").length}clearBuffer(){I(this,f,"f").length=0}isBufferEmpty(){return 0===I(this,f,"f").length}setBufferOverflowProtectionMode(e){r(this,h,e,"f")}getBufferOverflowProtectionMode(){return I(this,h,"f")}setColourChannelUsageType(e){r(this,U,e,"f")}getColourChannelUsageType(){return I(this,U,"f")}}let B,w,V,b,v;f=new WeakMap,F=new WeakMap,h=new WeakMap,M=new WeakMap,G=new WeakMap,U=new WeakMap,P=new WeakSet,p=function(e){if("number"!=typeof e)throw new TypeError("Invalid 'imageId'.");return I(this,f,"f").findIndex((E=>{var _;return(null===(_=E.tag)||void 0===_?void 0:_.imageId)===e}))},"undefined"!=typeof navigator&&(B=navigator,w=B.userAgent,V=B.platform,b=B.mediaDevices),function(){if(!s){const e={Edge:{search:"Edg",verSearch:"Edg"},OPR:null,Chrome:null,Safari:{str:B.vendor,search:"Apple",verSearch:["Version","iPhone OS","CPU OS"]},Firefox:null,Explorer:{search:"MSIE",verSearch:"MSIE"}},E={HarmonyOS:null,Android:null,iPhone:null,iPad:null,Windows:{str:V,search:"Win"},Mac:{str:V},Linux:{str:V}};let _="unknownBrowser",t=0,I="unknownOS";for(let E in e){const I=e[E]||{};let r=I.str||w,n=I.search||E,o=I.verStr||w,a=I.verSearch||E;if(a instanceof Array||(a=[a]),-1!=r.indexOf(n)){_=E;for(let e of a){let E=o.indexOf(e);if(-1!=E){t=parseFloat(o.substring(E+e.length+1));break}}break}}for(let e in E){const _=E[e]||{};let t=_.str||w,r=_.search||e;if(-1!=t.indexOf(r)){I=e;break}}"Linux"==I&&-1!=w.indexOf("Windows NT")&&(I="HarmonyOS"),v={browser:_,version:t,OS:I}}s&&(v={browser:"ssr",version:0,OS:"ssr"})}();const x="undefined"!=typeof WebAssembly&&w&&!(/Safari/.test(w)&&!/Chrome/.test(w)&&/\(.+\s11_2_([2-6]).*\)/.test(w)),k=!("undefined"==typeof Worker),Y=!(!b||!b.getUserMedia),H=async()=>{let e=!1;if(Y)try{(await b.getUserMedia({video:!0})).getTracks().forEach((e=>{e.stop()})),e=!0}catch(e){}return e};"Chrome"===v.browser&&v.version>66||"Safari"===v.browser&&v.version>13||"OPR"===v.browser&&v.version>43||"Edge"===v.browser&&v.version;const X={},Z=async e=>{let E="string"==typeof e?[e]:e,_=[];for(let e of E)_.push(X[e]=X[e]||new t);await Promise.all(_)},W=async(e,E)=>{let _,I="string"==typeof e?[e]:e,r=[];for(let e of I){let I;r.push(I=X[e]=X[e]||new t(_=_||E())),I.isEmpty&&(I.task=_=_||E())}await Promise.all(r)};e.worker=void 0;let j=0;const K=()=>j++,J={};e.onLog=void 0;const Q=E=>{e.onLog=E,e.worker&&e.worker.postMessage({type:"setBLog",body:{value:!!E}})};e.bDebug=!1;const $=E=>{e.bDebug=E,e.worker&&e.worker.postMessage({type:"setBDebug",body:{value:!!E}})},z={},q={dip:{wasm:!0}},ee={std:{version:"1.4.21",path:A(C+"../../dynamsoft-capture-vision-std@1.4.21/dist/"),isInternal:!0},core:{version:"3.4.31",path:C,isInternal:!0}},Ee=async E=>{let _;E instanceof Array||(E=E?[E]:[]);let I=X.core;_=!I||I.isEmpty;let r=new Map;const n=e=>{if("std"==(e=e.toLowerCase())||"core"==e)return;if(!q[e])throw Error("The '"+e+"' module cannot be found.");let E=q[e].deps;if(null==E?void 0:E.length)for(let e of E)n(e);let _=X[e];r.has(e)||r.set(e,!_||_.isEmpty)};for(let e of E)n(e);let o=[];_&&o.push("core"),o.push(...r.keys());const a=[...r.entries()].filter((e=>!e[1])).map((e=>e[0]));await W(o,(async()=>{const E=[...r.entries()].filter((e=>e[1])).map((e=>e[0]));await Z(a);const I=u(ee),n={};for(let e of E)n[e]=q[e];const o={engineResourcePaths:I,autoResources:n,names:E};let s=new t;if(_){o.needLoadCore=!0;let E=I.core+_e._workerName;E.startsWith(location.origin)||(E=await fetch(E).then((e=>e.blob())).then((e=>URL.createObjectURL(e)))),e.worker=new Worker(E),e.worker.onerror=e=>{let E=new Error(e.message);s.reject(E)},e.worker.addEventListener("message",(E=>{let _=E.data?E.data:E,t=_.type,I=_.id,r=_.body;switch(t){case"log":e.onLog&&e.onLog(_.message);break;case"task":try{J[I](r),delete J[I]}catch(e){throw delete J[I],e}break;case"event":try{J[I](r)}catch(e){throw e}break;default:console.log(E)}})),o.bLog=!!e.onLog,o.bd=e.bDebug,o.dm=location.origin.startsWith("http")?location.origin:"https://localhost"}else await Z("core");let i=j++;J[i]=e=>{if(e.success)Object.assign(z,e.versions),"{}"!==JSON.stringify(e.versions)&&(_e._versions=e.versions),s.resolve(void 0);else{const E=Error(e.message);e.stack&&(E.stack=e.stack),s.reject(E)}},e.worker.postMessage({type:"loadWasm",body:o,id:i}),await s}))};class _e{static get engineResourcePaths(){return ee}static set engineResourcePaths(e){Object.assign(ee,e)}static get bSupportDce4Module(){return this._bSupportDce4Module}static get bSupportIRTModule(){return this._bSupportIRTModule}static get versions(){return this._versions}static get _onLog(){return e.onLog}static set _onLog(e){Q(e)}static get _bDebug(){return e.bDebug}static set _bDebug(e){$(e)}static isModuleLoaded(e){return e=(e=e||"core").toLowerCase(),!!X[e]&&X[e].isFulfilled}static async loadWasm(e){return await Ee(e)}static async detectEnvironment(){return await(async()=>({wasm:x,worker:k,getUserMedia:Y,camera:await H(),browser:v.browser,version:v.version,OS:v.OS}))()}static async getModuleVersion(){return await new Promise(((E,_)=>{let t=K();J[t]=async e=>{if(e.success)return E(e.versions);{let E=new Error(e.message);return E.stack=e.stack+"\n"+E.stack,_(E)}},e.worker.postMessage({type:"getModuleVersion",id:t})}))}static getVersion(){const e=z.core&&z.core.worker,E=z.core&&z.core.wasm;return`3.4.31(Worker: ${e||"Not Loaded"}, Wasm: ${E||"Not Loaded"})`}static enableLogging(){y._onLog=console.log,_e._onLog=console.log}static disableLogging(){y._onLog=null,_e._onLog=null}static async cfd(E){return await new Promise(((_,t)=>{let I=K();J[I]=async e=>{if(e.success)return _();{let E=new Error(e.message);return E.stack=e.stack+"\n"+E.stack,t(E)}},e.worker.postMessage({type:"cfd",id:I,body:{count:E}})}))}}var te,Ie,re,ne,oe,ae,se,ie,Ce;_e._bSupportDce4Module=-1,_e._bSupportIRTModule=-1,_e._versions=null,_e._workerName="core.worker.js",_e.browserInfo=v,e.EnumCapturedResultItemType=void 0,(te=e.EnumCapturedResultItemType||(e.EnumCapturedResultItemType={}))[te.CRIT_ORIGINAL_IMAGE=1]="CRIT_ORIGINAL_IMAGE",te[te.CRIT_BARCODE=2]="CRIT_BARCODE",te[te.CRIT_TEXT_LINE=4]="CRIT_TEXT_LINE",te[te.CRIT_DETECTED_QUAD=8]="CRIT_DETECTED_QUAD",te[te.CRIT_NORMALIZED_IMAGE=16]="CRIT_NORMALIZED_IMAGE",te[te.CRIT_PARSED_RESULT=32]="CRIT_PARSED_RESULT",e.EnumCornerType=void 0,(Ie=e.EnumCornerType||(e.EnumCornerType={}))[Ie.CT_NORMAL_INTERSECTED=0]="CT_NORMAL_INTERSECTED",Ie[Ie.CT_T_INTERSECTED=1]="CT_T_INTERSECTED",Ie[Ie.CT_CROSS_INTERSECTED=2]="CT_CROSS_INTERSECTED",Ie[Ie.CT_NOT_INTERSECTED=3]="CT_NOT_INTERSECTED",e.EnumErrorCode=void 0,(re=e.EnumErrorCode||(e.EnumErrorCode={}))[re.EC_OK=0]="EC_OK",re[re.EC_UNKNOWN=-1e4]="EC_UNKNOWN",re[re.EC_NO_MEMORY=-10001]="EC_NO_MEMORY",re[re.EC_NULL_POINTER=-10002]="EC_NULL_POINTER",re[re.EC_LICENSE_INVALID=-10003]="EC_LICENSE_INVALID",re[re.EC_LICENSE_EXPIRED=-10004]="EC_LICENSE_EXPIRED",re[re.EC_FILE_NOT_FOUND=-10005]="EC_FILE_NOT_FOUND",re[re.EC_FILE_TYPE_NOT_SUPPORTED=-10006]="EC_FILE_TYPE_NOT_SUPPORTED",re[re.EC_BPP_NOT_SUPPORTED=-10007]="EC_BPP_NOT_SUPPORTED",re[re.EC_INDEX_INVALID=-10008]="EC_INDEX_INVALID",re[re.EC_CUSTOM_REGION_INVALID=-10010]="EC_CUSTOM_REGION_INVALID",re[re.EC_IMAGE_READ_FAILED=-10012]="EC_IMAGE_READ_FAILED",re[re.EC_TIFF_READ_FAILED=-10013]="EC_TIFF_READ_FAILED",re[re.EC_DIB_BUFFER_INVALID=-10018]="EC_DIB_BUFFER_INVALID",re[re.EC_PDF_READ_FAILED=-10021]="EC_PDF_READ_FAILED",re[re.EC_PDF_DLL_MISSING=-10022]="EC_PDF_DLL_MISSING",re[re.EC_PAGE_NUMBER_INVALID=-10023]="EC_PAGE_NUMBER_INVALID",re[re.EC_CUSTOM_SIZE_INVALID=-10024]="EC_CUSTOM_SIZE_INVALID",re[re.EC_TIMEOUT=-10026]="EC_TIMEOUT",re[re.EC_JSON_PARSE_FAILED=-10030]="EC_JSON_PARSE_FAILED",re[re.EC_JSON_TYPE_INVALID=-10031]="EC_JSON_TYPE_INVALID",re[re.EC_JSON_KEY_INVALID=-10032]="EC_JSON_KEY_INVALID",re[re.EC_JSON_VALUE_INVALID=-10033]="EC_JSON_VALUE_INVALID",re[re.EC_JSON_NAME_KEY_MISSING=-10034]="EC_JSON_NAME_KEY_MISSING",re[re.EC_JSON_NAME_VALUE_DUPLICATED=-10035]="EC_JSON_NAME_VALUE_DUPLICATED",re[re.EC_TEMPLATE_NAME_INVALID=-10036]="EC_TEMPLATE_NAME_INVALID",re[re.EC_JSON_NAME_REFERENCE_INVALID=-10037]="EC_JSON_NAME_REFERENCE_INVALID",re[re.EC_PARAMETER_VALUE_INVALID=-10038]="EC_PARAMETER_VALUE_INVALID",re[re.EC_DOMAIN_NOT_MATCH=-10039]="EC_DOMAIN_NOT_MATCH",re[re.EC_RESERVED_INFO_NOT_MATCH=-10040]="EC_RESERVED_INFO_NOT_MATCH",re[re.EC_LICENSE_KEY_NOT_MATCH=-10043]="EC_LICENSE_KEY_NOT_MATCH",re[re.EC_REQUEST_FAILED=-10044]="EC_REQUEST_FAILED",re[re.EC_LICENSE_INIT_FAILED=-10045]="EC_LICENSE_INIT_FAILED",re[re.EC_SET_MODE_ARGUMENT_ERROR=-10051]="EC_SET_MODE_ARGUMENT_ERROR",re[re.EC_LICENSE_CONTENT_INVALID=-10052]="EC_LICENSE_CONTENT_INVALID",re[re.EC_LICENSE_KEY_INVALID=-10053]="EC_LICENSE_KEY_INVALID",re[re.EC_LICENSE_DEVICE_RUNS_OUT=-10054]="EC_LICENSE_DEVICE_RUNS_OUT",re[re.EC_GET_MODE_ARGUMENT_ERROR=-10055]="EC_GET_MODE_ARGUMENT_ERROR",re[re.EC_IRT_LICENSE_INVALID=-10056]="EC_IRT_LICENSE_INVALID",re[re.EC_FILE_SAVE_FAILED=-10058]="EC_FILE_SAVE_FAILED",re[re.EC_STAGE_TYPE_INVALID=-10059]="EC_STAGE_TYPE_INVALID",re[re.EC_IMAGE_ORIENTATION_INVALID=-10060]="EC_IMAGE_ORIENTATION_INVALID",re[re.EC_CONVERT_COMPLEX_TEMPLATE_ERROR=-10061]="EC_CONVERT_COMPLEX_TEMPLATE_ERROR",re[re.EC_CALL_REJECTED_WHEN_CAPTURING=-10062]="EC_CALL_REJECTED_WHEN_CAPTURING",re[re.EC_NO_IMAGE_SOURCE=-10063]="EC_NO_IMAGE_SOURCE",re[re.EC_READ_DIRECTORY_FAILED=-10064]="EC_READ_DIRECTORY_FAILED",re[re.EC_MODULE_NOT_FOUND=-10065]="EC_MODULE_NOT_FOUND",re[re.EC_MULTI_PAGES_NOT_SUPPORTED=-10066]="EC_MULTI_PAGES_NOT_SUPPORTED",re[re.EC_FILE_ALREADY_EXISTS=-10067]="EC_FILE_ALREADY_EXISTS",re[re.EC_CREATE_FILE_FAILED=-10068]="EC_CREATE_FILE_FAILED",re[re.EC_IMGAE_DATA_INVALID=-10069]="EC_IMGAE_DATA_INVALID",re[re.EC_IMAGE_SIZE_NOT_MATCH=-10070]="EC_IMAGE_SIZE_NOT_MATCH",re[re.EC_IMAGE_PIXEL_FORMAT_NOT_MATCH=-10071]="EC_IMAGE_PIXEL_FORMAT_NOT_MATCH",re[re.EC_SECTION_LEVEL_RESULT_IRREPLACEABLE=-10072]="EC_SECTION_LEVEL_RESULT_IRREPLACEABLE",re[re.EC_AXIS_DEFINITION_INCORRECT=-10073]="EC_AXIS_DEFINITION_INCORRECT",re[re.EC_RESULT_TYPE_MISMATCH_IRREPLACEABLE=-10074]="EC_RESULT_TYPE_MISMATCH_IRREPLACEABLE",re[re.EC_PDF_LIBRARY_LOAD_FAILED=-10075]="EC_PDF_LIBRARY_LOAD_FAILED",re[re.EC_NO_LICENSE=-2e4]="EC_NO_LICENSE",re[re.EC_HANDSHAKE_CODE_INVALID=-20001]="EC_HANDSHAKE_CODE_INVALID",re[re.EC_LICENSE_BUFFER_FAILED=-20002]="EC_LICENSE_BUFFER_FAILED",re[re.EC_LICENSE_SYNC_FAILED=-20003]="EC_LICENSE_SYNC_FAILED",re[re.EC_DEVICE_NOT_MATCH=-20004]="EC_DEVICE_NOT_MATCH",re[re.EC_BIND_DEVICE_FAILED=-20005]="EC_BIND_DEVICE_FAILED",re[re.EC_INSTANCE_COUNT_OVER_LIMIT=-20008]="EC_INSTANCE_COUNT_OVER_LIMIT",re[re.EC_LICENSE_INIT_SEQUENCE_FAILED=-20009]="EC_LICENSE_INIT_SEQUENCE_FAILED",re[re.EC_TRIAL_LICENSE=-20010]="EC_TRIAL_LICENSE",re[re.EC_FAILED_TO_REACH_DLS=-20200]="EC_FAILED_TO_REACH_DLS",re[re.EC_LICENSE_CACHE_USED=-20012]="EC_LICENSE_CACHE_USED",re[re.EC_BARCODE_FORMAT_INVALID=-30009]="EC_BARCODE_FORMAT_INVALID",re[re.EC_QR_LICENSE_INVALID=-30016]="EC_QR_LICENSE_INVALID",re[re.EC_1D_LICENSE_INVALID=-30017]="EC_1D_LICENSE_INVALID",re[re.EC_PDF417_LICENSE_INVALID=-30019]="EC_PDF417_LICENSE_INVALID",re[re.EC_DATAMATRIX_LICENSE_INVALID=-30020]="EC_DATAMATRIX_LICENSE_INVALID",re[re.EC_CUSTOM_MODULESIZE_INVALID=-30025]="EC_CUSTOM_MODULESIZE_INVALID",re[re.EC_AZTEC_LICENSE_INVALID=-30041]="EC_AZTEC_LICENSE_INVALID",re[re.EC_PATCHCODE_LICENSE_INVALID=-30046]="EC_PATCHCODE_LICENSE_INVALID",re[re.EC_POSTALCODE_LICENSE_INVALID=-30047]="EC_POSTALCODE_LICENSE_INVALID",re[re.EC_DPM_LICENSE_INVALID=-30048]="EC_DPM_LICENSE_INVALID",re[re.EC_FRAME_DECODING_THREAD_EXISTS=-30049]="EC_FRAME_DECODING_THREAD_EXISTS",re[re.EC_STOP_DECODING_THREAD_FAILED=-30050]="EC_STOP_DECODING_THREAD_FAILED",re[re.EC_MAXICODE_LICENSE_INVALID=-30057]="EC_MAXICODE_LICENSE_INVALID",re[re.EC_GS1_DATABAR_LICENSE_INVALID=-30058]="EC_GS1_DATABAR_LICENSE_INVALID",re[re.EC_GS1_COMPOSITE_LICENSE_INVALID=-30059]="EC_GS1_COMPOSITE_LICENSE_INVALID",re[re.EC_DOTCODE_LICENSE_INVALID=-30061]="EC_DOTCODE_LICENSE_INVALID",re[re.EC_PHARMACODE_LICENSE_INVALID=-30062]="EC_PHARMACODE_LICENSE_INVALID",re[re.EC_CHARACTER_MODEL_FILE_NOT_FOUND=-40100]="EC_CHARACTER_MODEL_FILE_NOT_FOUND",re[re.EC_TEXT_LINE_GROUP_LAYOUT_CONFLICT=-40101]="EC_TEXT_LINE_GROUP_LAYOUT_CONFLICT",re[re.EC_TEXT_LINE_GROUP_REGEX_CONFLICT=-40102]="EC_TEXT_LINE_GROUP_REGEX_CONFLICT",re[re.EC_QUADRILATERAL_INVALID=-50057]="EC_QUADRILATERAL_INVALID",re[re.EC_PANORAMA_LICENSE_INVALID=-70060]="EC_PANORAMA_LICENSE_INVALID",re[re.EC_RESOURCE_PATH_NOT_EXIST=-90001]="EC_RESOURCE_PATH_NOT_EXIST",re[re.EC_RESOURCE_LOAD_FAILED=-90002]="EC_RESOURCE_LOAD_FAILED",re[re.EC_CODE_SPECIFICATION_NOT_FOUND=-90003]="EC_CODE_SPECIFICATION_NOT_FOUND",re[re.EC_FULL_CODE_EMPTY=-90004]="EC_FULL_CODE_EMPTY",re[re.EC_FULL_CODE_PREPROCESS_FAILED=-90005]="EC_FULL_CODE_PREPROCESS_FAILED",re[re.EC_ZA_DL_LICENSE_INVALID=-90006]="EC_ZA_DL_LICENSE_INVALID",re[re.EC_AAMVA_DL_ID_LICENSE_INVALID=-90007]="EC_AAMVA_DL_ID_LICENSE_INVALID",re[re.EC_AADHAAR_LICENSE_INVALID=-90008]="EC_AADHAAR_LICENSE_INVALID",re[re.EC_MRTD_LICENSE_INVALID=-90009]="EC_MRTD_LICENSE_INVALID",re[re.EC_VIN_LICENSE_INVALID=-90010]="EC_VIN_LICENSE_INVALID",re[re.EC_CUSTOMIZED_CODE_TYPE_LICENSE_INVALID=-90011]="EC_CUSTOMIZED_CODE_TYPE_LICENSE_INVALID",re[re.EC_LICENSE_WARNING=-10076]="EC_LICENSE_WARNING",re[re.EC_BARCODE_READER_LICENSE_NOT_FOUND=-30063]="EC_BARCODE_READER_LICENSE_NOT_FOUND",re[re.EC_LABEL_RECOGNIZER_LICENSE_NOT_FOUND=-40103]="EC_LABEL_RECOGNIZER_LICENSE_NOT_FOUND",re[re.EC_DOCUMENT_NORMALIZER_LICENSE_NOT_FOUND=-50058]="EC_DOCUMENT_NORMALIZER_LICENSE_NOT_FOUND",re[re.EC_CODE_PARSER_LICENSE_NOT_FOUND=-90012]="EC_CODE_PARSER_LICENSE_NOT_FOUND",e.EnumGrayscaleEnhancementMode=void 0,(ne=e.EnumGrayscaleEnhancementMode||(e.EnumGrayscaleEnhancementMode={}))[ne.GEM_SKIP=0]="GEM_SKIP",ne[ne.GEM_AUTO=1]="GEM_AUTO",ne[ne.GEM_GENERAL=2]="GEM_GENERAL",ne[ne.GEM_GRAY_EQUALIZE=4]="GEM_GRAY_EQUALIZE",ne[ne.GEM_GRAY_SMOOTH=8]="GEM_GRAY_SMOOTH",ne[ne.GEM_SHARPEN_SMOOTH=16]="GEM_SHARPEN_SMOOTH",ne[ne.GEM_REV=-2147483648]="GEM_REV",e.EnumGrayscaleTransformationMode=void 0,(oe=e.EnumGrayscaleTransformationMode||(e.EnumGrayscaleTransformationMode={}))[oe.GTM_SKIP=0]="GTM_SKIP",oe[oe.GTM_INVERTED=1]="GTM_INVERTED",oe[oe.GTM_ORIGINAL=2]="GTM_ORIGINAL",oe[oe.GTM_AUTO=4]="GTM_AUTO",oe[oe.GTM_REV=-2147483648]="GTM_REV",e.EnumImageTagType=void 0,(ae=e.EnumImageTagType||(e.EnumImageTagType={}))[ae.ITT_FILE_IMAGE=0]="ITT_FILE_IMAGE",ae[ae.ITT_VIDEO_FRAME=1]="ITT_VIDEO_FRAME",e.EnumPDFReadingMode=void 0,(se=e.EnumPDFReadingMode||(e.EnumPDFReadingMode={}))[se.PDFRM_VECTOR=1]="PDFRM_VECTOR",se[se.PDFRM_RASTER=2]="PDFRM_RASTER",se[se.PDFRM_REV=-2147483648]="PDFRM_REV",e.EnumRasterDataSource=void 0,(ie=e.EnumRasterDataSource||(e.EnumRasterDataSource={}))[ie.RDS_RASTERIZED_PAGES=0]="RDS_RASTERIZED_PAGES",ie[ie.RDS_EXTRACTED_IMAGES=1]="RDS_EXTRACTED_IMAGES",e.EnumCrossVerificationStatus=void 0,(Ce=e.EnumCrossVerificationStatus||(e.EnumCrossVerificationStatus={}))[Ce.CVS_NOT_VERIFIED=0]="CVS_NOT_VERIFIED",Ce[Ce.CVS_PASSED=1]="CVS_PASSED",Ce[Ce.CVS_FAILED=2]="CVS_FAILED";const Ae={IRUT_NULL:BigInt(0),IRUT_COLOUR_IMAGE:BigInt(1),IRUT_SCALED_DOWN_COLOUR_IMAGE:BigInt(2),IRUT_GRAYSCALE_IMAGE:BigInt(4),IRUT_TRANSOFORMED_GRAYSCALE_IMAGE:BigInt(8),IRUT_ENHANCED_GRAYSCALE_IMAGE:BigInt(16),IRUT_PREDETECTED_REGIONS:BigInt(32),IRUT_BINARY_IMAGE:BigInt(64),IRUT_TEXTURE_DETECTION_RESULT:BigInt(128),IRUT_TEXTURE_REMOVED_GRAYSCALE_IMAGE:BigInt(256),IRUT_TEXTURE_REMOVED_BINARY_IMAGE:BigInt(512),IRUT_CONTOURS:BigInt(1024),IRUT_LINE_SEGMENTS:BigInt(2048),IRUT_TEXT_ZONES:BigInt(4096),IRUT_TEXT_REMOVED_BINARY_IMAGE:BigInt(8192),IRUT_CANDIDATE_BARCODE_ZONES:BigInt(16384),IRUT_LOCALIZED_BARCODES:BigInt(32768),IRUT_SCALED_UP_BARCODE_IMAGE:BigInt(65536),IRUT_DEFORMATION_RESISTED_BARCODE_IMAGE:BigInt(1<<17),IRUT_COMPLEMENTED_BARCODE_IMAGE:BigInt(1<<18),IRUT_DECODED_BARCODES:BigInt(1<<19),IRUT_LONG_LINES:BigInt(1<<20),IRUT_CORNERS:BigInt(1<<21),IRUT_CANDIDATE_QUAD_EDGES:BigInt(1<<22),IRUT_DETECTED_QUADS:BigInt(1<<23),IRUT_LOCALIZED_TEXT_LINES:BigInt(1<<24),IRUT_RECOGNIZED_TEXT_LINES:BigInt(1<<25),IRUT_NORMALIZED_IMAGES:BigInt(1<<26),IRUT_SHORT_LINES:BigInt(1<<27),IRUT_RAW_TEXT_LINES:BigInt(1<<28),IRUT_LOGIC_LINES:BigInt(1<<29),IRUT_ALL:BigInt("0xFFFFFFFFFFFFFFFF")};var Te,Ne;e.EnumRegionObjectElementType=void 0,(Te=e.EnumRegionObjectElementType||(e.EnumRegionObjectElementType={}))[Te.ROET_PREDETECTED_REGION=0]="ROET_PREDETECTED_REGION",Te[Te.ROET_LOCALIZED_BARCODE=1]="ROET_LOCALIZED_BARCODE",Te[Te.ROET_DECODED_BARCODE=2]="ROET_DECODED_BARCODE",Te[Te.ROET_LOCALIZED_TEXT_LINE=3]="ROET_LOCALIZED_TEXT_LINE",Te[Te.ROET_RECOGNIZED_TEXT_LINE=4]="ROET_RECOGNIZED_TEXT_LINE",Te[Te.ROET_DETECTED_QUAD=5]="ROET_DETECTED_QUAD",Te[Te.ROET_NORMALIZED_IMAGE=6]="ROET_NORMALIZED_IMAGE",Te[Te.ROET_SOURCE_IMAGE=7]="ROET_SOURCE_IMAGE",Te[Te.ROET_TARGET_ROI=8]="ROET_TARGET_ROI",e.EnumSectionType=void 0,(Ne=e.EnumSectionType||(e.EnumSectionType={}))[Ne.ST_NULL=0]="ST_NULL",Ne[Ne.ST_REGION_PREDETECTION=1]="ST_REGION_PREDETECTION",Ne[Ne.ST_BARCODE_LOCALIZATION=2]="ST_BARCODE_LOCALIZATION",Ne[Ne.ST_BARCODE_DECODING=3]="ST_BARCODE_DECODING",Ne[Ne.ST_TEXT_LINE_LOCALIZATION=4]="ST_TEXT_LINE_LOCALIZATION",Ne[Ne.ST_TEXT_LINE_RECOGNITION=5]="ST_TEXT_LINE_RECOGNITION",Ne[Ne.ST_DOCUMENT_DETECTION=6]="ST_DOCUMENT_DETECTION",Ne[Ne.ST_DOCUMENT_NORMALIZATION=7]="ST_DOCUMENT_NORMALIZATION",e.CoreModule=_e,e.EnumIntermediateResultUnitType=Ae,e.ImageSourceAdapter=y,e._getNorImageData=d,e._saveToFile=async(e,E,_)=>await new Promise((async(t,I)=>{try{const I=E.split(".");let r=I[I.length-1];const n=await g(`image/${r}`,e);I.length<=1&&(r="png");const o=new File([n],E,{type:`image/${r}`});if(_){const e=URL.createObjectURL(o),_=document.createElement("a");_.href=e,_.download=E,_.click()}return t(o)}catch(e){return I()}})),e._toBlob=g,e._toCanvas=S,e._toImage=(e,E)=>{l(E)&&(E=d(E));const _=S(E);let t=new Image,I=_.toDataURL(e);return t.src=I,t},e.checkIsLink=e=>/^(https:\/\/www\.|http:\/\/www\.|https:\/\/|http:\/\/)|^[a-zA-Z0-9]{2,}(\.[a-zA-Z0-9]{2,})(\.[a-zA-Z0-9]{2,})?/.test(e),e.compareVersion=(e,E)=>{let _=e.split("."),t=E.split(".");for(let e=0;e<_.length&&e!!D(e)&&(!!L(e.x)&&(!!L(e.y)&&(!!L(e.radius)&&(!(e.radius<0)&&(!!L(e.startAngle)&&!!L(e.endAngle)))))),e.isContour=e=>!!D(e)&&(!!N(e.points)&&(0!=e.points.length&&!e.points.some((e=>!c(e))))),e.isDSImageData=l,e.isDSRect=e=>!!D(e)&&(!!L(e.left)&&(!(e.left<0)&&(!!L(e.top)&&(!(e.top<0)&&(!!L(e.right)&&(!(e.right<0)&&(!!L(e.bottom)&&(!(e.bottom<0)&&(!(e.left>=e.right)&&(!(e.top>=e.bottom)&&!!R(e.isMeasuredInPercentage))))))))))),e.isImageTag=m,e.isLineSegment=e=>!!D(e)&&(!!c(e.startPoint)&&(!!c(e.endPoint)&&(e.startPoint.x!=e.endPoint.x||e.startPoint.y!=e.endPoint.y))),e.isObject=D,e.isOriginalDsImageData=e=>!!O(e)&&!(!L(e.bytes.length)&&!L(e.bytes.ptr)),e.isPoint=c,e.isPolygon=e=>!!D(e)&&(!!N(e.points)&&(0!=e.points.length&&!e.points.some((e=>!c(e))))),e.isQuad=e=>!!D(e)&&(!!N(e.points)&&(0!=e.points.length&&4==e.points.length&&!e.points.some((e=>!c(e))))),e.isRect=e=>!!D(e)&&(!!L(e.x)&&(!!L(e.y)&&(!!L(e.width)&&(!(e.width<0)&&(!!L(e.height)&&(!(e.height<0)&&!("isMeasuredInPercentage"in e&&!R(e.isMeasuredInPercentage)))))))),e.loadWasm=Ee,e.mapAsyncDependency=X,e.mapPackageRegister={},e.mapTaskCallBack=J,e.requestResource=async(e,E)=>await new Promise(((_,t)=>{let I=new XMLHttpRequest;I.open("GET",e,!0),I.responseType=E,I.send(),I.onloadend=async()=>{I.status<200||I.status>=300?t(new Error(e+" "+I.status)):_(I.response)},I.onerror=()=>{t(new Error("Network Error: "+I.statusText))}})),e.setBDebug=$,e.setOnLog=Q,e.waitAsyncDependency=Z,e.workerAutoResources=q})); diff --git a/dist/dynamsoft-core@3.4.31/dist/core.worker.js b/dist/dynamsoft-core@3.4.31/dist/core.worker.js new file mode 100644 index 0000000..60245fb --- /dev/null +++ b/dist/dynamsoft-core@3.4.31/dist/core.worker.js @@ -0,0 +1,11 @@ +/*! + * Dynamsoft JavaScript Library + * @product Dynamsoft Core JS Edition + * @website https://www.dynamsoft.com + * @copyright Copyright 2024, Dynamsoft Corporation + * @author Dynamsoft + * @version 3.4.31 + * @fileoverview Dynamsoft JavaScript Library for Core + * More info on Dynamsoft Core JS: https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/core/core-module.html + */ +!function(){"use strict";const e=e=>e&&"object"==typeof e&&"function"==typeof e.then,s=(async()=>{})().constructor;class t extends s{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(t){let o;this._task=t,e(t)?o=t:"function"==typeof t&&(o=new s(t)),o&&(async()=>{try{const e=await o;t===this._task&&this.resolve(e)}catch(e){t===this._task&&this.reject(e)}})()}get isEmpty(){return null==this._task}constructor(s){let t,o;super(((e,s)=>{t=e,o=s})),this._s="pending",this.resolve=s=>{this.isPending&&(e(s)?this.task=s:(this._s="fulfilled",t(s)))},this.reject=e=>{this.isPending&&(this._s="rejected",o(e))},this.task=s}}const o=self,r={};o.coreWorkerVersion="3.4.31",o.versions=r;const a={},n=o.waitAsyncDependency=async e=>{let s="string"==typeof e?[e]:e,o=[];for(let e of s)o.push(a[e]=a[e]||new t);await Promise.all(o)},i=async(e,s)=>{let o,r="string"==typeof e?[e]:e,n=[];for(let e of r){let r;n.push(r=a[e]=a[e]||new t(o=o||s())),r.isEmpty&&(r.task=o=o||s())}await Promise.all(n)},c=[];o.setBufferIntoWasm=(e,s=0,t=0,o=0)=>{t&&(e=o?e.subarray(t,o):e.subarray(t));let r=c[s]=c[s]||{ptr:0,size:0,maxSize:0};return e.length>r.maxSize&&(r.ptr&&m._free(r.ptr),r.ptr=m._malloc(e.length),r.maxSize=e.length),m.HEAPU8.set(e,r.ptr),r.size=e.length,r.ptr};const l={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(l.needed){for(let e=0;e=l.size?(l.needed+=r,t=m._malloc(r),l.temps.push(t)):(t=l.buffer+l.pos,l.pos+=r),t},copy:function(e,s,t){switch(t>>>=0,s.BYTES_PER_ELEMENT){case 2:t>>>=1;break;case 4:t>>>=2;break;case 8:t>>>=3}for(let o=0;o{let s=intArrayFromString(e),t=l.alloc(s,m.HEAP8);return l.copy(s,m.HEAP8,t),t},m=o.Module={print:e=>{o.bLog&&w(e)},printErr:e=>{o.bLog&&w(e)},locateFile:(e,s)=>["dynamsoft-barcode-reader-bundle.wasm","core.wasm"].includes(e)?u.std+e:e},u=o.engineResourcePaths={},g=o.loadCore=async()=>{const e="core";await i(e,(async()=>{let s=o.bLog&&(w(e+" loading..."),Date.now())||0,t=new Promise((t=>{Module.onRuntimeInitialized=()=>{o.bLog&&w(e+" initialized, cost "+(Date.now()-s)+" ms"),t(void 0)}})),r=u.std+"dynamsoft-barcode-reader-bundle.js";importScripts(r),await t}))},f=o.loadSideModule=async(e,{js:s,wasm:t})=>{await i(e,(async()=>{await n("core");let t=o.bLog&&(w(e+" loading..."),Date.now())||0;if(s instanceof Array)for(let t of s){let s=u[e]+t;importScripts(s)}else if(s){let s=u[e]+e+".worker.js";importScripts(s)}wasmImports.emscripten_bind_CoreWasm_PreSetModuleExist&&(d(),wasmImports.emscripten_bind_CoreWasm_PreSetModuleExist(p(e.toUpperCase()))),wasmImports.emscripten_bind_CvrWasm_SetModuleExist&&(d(),wasmImports.emscripten_bind_CvrWasm_SetModuleExist(p(e.toUpperCase())));const a=JSON.parse(UTF8ToString(wasmImports.emscripten_bind_CoreWasm_GetModuleVersion_0())),i=o[`${e}WorkerVersion`];r[e]={worker:`${i||"No Worker"}`,wasm:a[e.toUpperCase()]},o.bLog&&w(e+" initialized, cost "+(Date.now()-t)+" ms")}))},_=o.mapController={loadWasm:async(e,s)=>{try{Object.assign(u,e.engineResourcePaths),e.needLoadCore&&(e.bLog&&(o.bLog=!0),e.dm&&(o.strDomain=e.dm),e.bd&&(o.bDebug=!0),await g());for(let s of e.names)await f(s,e.autoResources[s]);if(e.needLoadCore){const e=JSON.parse(UTF8ToString(wasmImports.emscripten_bind_CoreWasm_GetModuleVersion_0()));r.core={worker:o.coreWorkerVersion,wasm:e.CORE}}for(let e in r)r[e].wasm&&(r[e].wasm=r[e].wasm.replace("20250211","23472-single-wasm"));h(s,{versions:r})}catch(e){console.log(e),b(s,e)}},setBLog:e=>{o.bLog=e.value},setBDebug:e=>{o.bDebug=e.value},getModuleVersion:async(e,s)=>{try{let e=UTF8ToString(wasmImports.emscripten_bind_CoreWasm_GetModuleVersion_0());h(s,{versions:JSON.parse(e)})}catch(e){b(s,e)}},cfd:async(e,s)=>{try{wasmImports.emscripten_bind_CoreWasm_static_CFD_1(e.count),h(s,{})}catch(e){b(s,e)}}};addEventListener("message",(e=>{const s=e.data?e.data:e,t=s.body,o=s.id,r=s.instanceID,a=_[s.type];if(!a)throw new Error("Unmatched task: "+s.type);"license_dynamsoft"==a&&(t.v="3.4.31-single-wasm"),a(t,o,r)}));const h=o.handleTaskRes=(e,s)=>{postMessage({type:"task",id:e,body:Object.assign({success:!0},s)})},b=o.handleTaskErr=(e,s)=>{postMessage({type:"task",id:e,body:{success:!1,message:(null==s?void 0:s.message)||"No have error message.",stack:o.bDebug&&(null==s?void 0:s.stack)||"No have stack."}})},w=o.log=e=>{postMessage({type:"log",message:e})}}(); \ No newline at end of file diff --git a/dist/dynamsoft-license@3.4.31/dist/dls.license.dialog.html b/dist/dynamsoft-license@3.4.31/dist/dls.license.dialog.html new file mode 100644 index 0000000..724e9de --- /dev/null +++ b/dist/dynamsoft-license@3.4.31/dist/dls.license.dialog.html @@ -0,0 +1,20 @@ + +

+ \ No newline at end of file diff --git a/dist/dynamsoft-license@3.4.31/dist/license.d.ts b/dist/dynamsoft-license@3.4.31/dist/license.d.ts new file mode 100644 index 0000000..2e2e0b6 --- /dev/null +++ b/dist/dynamsoft-license@3.4.31/dist/license.d.ts @@ -0,0 +1,40 @@ +declare class LicenseModule { + static getVersion(): string; +} + +declare class LicenseManager { + private static setLicenseServer; + static _pLoad: any; + static bPassValidation: boolean; + static bCallInitLicense: boolean; + private static _license; + static get license(): string; + static set license(license: string); + /** + * Specify the license server URL. + */ + private static _licenseServer?; + static get licenseServer(): string[] | string; + static set licenseServer(value: string[] | string); + private static _deviceFriendlyName; + static get deviceFriendlyName(): string; + static set deviceFriendlyName(value: string); + /** + * License the components. + * @param license the license key to be used. + * @remarks - for an online license, LicenseManager asks DLS for the license associated with the 'license' key and gets all usable modules + - for an offline license, LicenseManager parses it to get a list of usable modules + * @returns a promise resolving to true or false to indicate whether the license was initialized successfully. + */ + static initLicense(license: string, options?: { + executeNow: boolean; + } | boolean): void | Promise; + /** + * The following methods should be called before `initLicense`. + */ + static setDeviceFriendlyName(name: string): void; + static getDeviceFriendlyName(): string; + static getDeviceUUID(): Promise; +} + +export { LicenseManager, LicenseModule }; diff --git a/dist/dynamsoft-license@3.4.31/dist/license.esm.js b/dist/dynamsoft-license@3.4.31/dist/license.esm.js new file mode 100644 index 0000000..1c759d3 --- /dev/null +++ b/dist/dynamsoft-license@3.4.31/dist/license.esm.js @@ -0,0 +1,11 @@ +/*! + * Dynamsoft JavaScript Library + * @product Dynamsoft License JS Edition + * @website https://www.dynamsoft.com + * @copyright Copyright 2024, Dynamsoft Corporation + * @author Dynamsoft + * @version 3.4.31 + * @fileoverview Dynamsoft JavaScript Library for Core + * More info DL JS: https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/license/license-module.html + */ +import{mapPackageRegister as e,loadWasm as t,doOrWaitAsyncDependency as s,getNextTaskID as r,mapTaskCallBack as n,onLog as i,CoreModule as o,handleEngineResourcePaths as a,waitAsyncDependency as c,worker as l,mapAsyncDependency as d,workerAutoResources as u,compareVersion as f,innerVersions as h}from"dynamsoft-core";const g="undefined"==typeof self,m=g?{}:self,p="function"==typeof importScripts,y=(()=>{if(!p){if(!g&&document.currentScript){let e=document.currentScript.src,t=e.indexOf("?");if(-1!=t)e=e.substring(0,t);else{let t=e.indexOf("#");-1!=t&&(e=e.substring(0,t))}return e.substring(0,e.lastIndexOf("/")+1)}return"./"}})(),v=e=>{if(null==e&&(e="./"),g||p);else{let t=document.createElement("a");t.href=e,e=t.href}return e.endsWith("/")||(e+="/"),e},w=e=>e&&"object"==typeof e&&"function"==typeof e.then,b=(async()=>{})().constructor;class S extends b{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(e){let t;this._task=e,w(e)?t=e:"function"==typeof e&&(t=new b(e)),t&&(async()=>{try{const s=await t;e===this._task&&this.resolve(s)}catch(t){e===this._task&&this.reject(t)}})()}get isEmpty(){return null==this._task}constructor(e){let t,s;super(((e,r)=>{t=e,s=r})),this._s="pending",this.resolve=e=>{this.isPending&&(w(e)?this.task=e:(this._s="fulfilled",t(e)))},this.reject=e=>{this.isPending&&(this._s="rejected",s(e))},this.task=e}}const _=" is not allowed to change after `createInstance` or `loadWasm` is called.",k=!g&&document.currentScript&&(document.currentScript.getAttribute("data-license")||document.currentScript.getAttribute("data-productKeys")||document.currentScript.getAttribute("data-licenseKey")||document.currentScript.getAttribute("data-handshakeCode")||document.currentScript.getAttribute("data-organizationID"))||"",E=(e,t)=>{const s=e;if(s._license!==t){if(!s._pLoad.isEmpty)throw new Error("`license`"+_);s._license=t}};!g&&document.currentScript&&document.currentScript.getAttribute("data-sessionPassword");const L=e=>{if(null==e)e=[];else{e=e instanceof Array?[...e]:[e];for(let t=0;t{t=L(t);const s=e;if(s._licenseServer!==t){if(!s._pLoad.isEmpty)throw new Error("`licenseServer`"+_);s._licenseServer=t}},x=(e,t)=>{t=t||"";const s=e;if(s._deviceFriendlyName!==t){if(!s._pLoad.isEmpty)throw new Error("`deviceFriendlyName`"+_);s._deviceFriendlyName=t}};let C,P,N,I,R;"undefined"!=typeof navigator&&(C=navigator,P=C.userAgent,N=C.platform,I=C.mediaDevices),function(){if(!g){const e={Edge:{search:"Edg",verSearch:"Edg"},OPR:null,Chrome:null,Safari:{str:C.vendor,search:"Apple",verSearch:["Version","iPhone OS","CPU OS"]},Firefox:null,Explorer:{search:"MSIE",verSearch:"MSIE"}},t={HarmonyOS:null,Android:null,iPhone:null,iPad:null,Windows:{str:N,search:"Win"},Mac:{str:N},Linux:{str:N}};let s="unknownBrowser",r=0,n="unknownOS";for(let t in e){const n=e[t]||{};let i=n.str||P,o=n.search||t,a=n.verStr||P,c=n.verSearch||t;if(c instanceof Array||(c=[c]),-1!=i.indexOf(o)){s=t;for(let e of c){let t=a.indexOf(e);if(-1!=t){r=parseFloat(a.substring(t+e.length+1));break}}break}}for(let e in t){const s=t[e]||{};let r=s.str||P,i=s.search||e;if(-1!=r.indexOf(i)){n=e;break}}"Linux"==n&&-1!=P.indexOf("Windows NT")&&(n="HarmonyOS"),R={browser:s,version:r,OS:n}}g&&(R={browser:"ssr",version:0,OS:"ssr"})}(),I&&I.getUserMedia,"Chrome"===R.browser&&R.version>66||"Safari"===R.browser&&R.version>13||"OPR"===R.browser&&R.version>43||"Edge"===R.browser&&R.version;const W=()=>(t("license"),s("dynamsoft_inited",(async()=>{let{lt:e,l:t,ls:s,sp:d,rmk:u,cv:f}=((e,t=!1)=>{const s=e;if(s._pLoad.isEmpty){let e,r,n,i=s._license||"",o=JSON.parse(JSON.stringify(s._licenseServer)),a=s._sessionPassword,c=0;if(i.startsWith("t")||i.startsWith("f"))c=0;else if(0===i.length||i.startsWith("P")||i.startsWith("L")||i.startsWith("Y")||i.startsWith("A"))c=1;else{c=2;const t=i.indexOf(":");-1!=t&&(i=i.substring(t+1));const s=i.indexOf("?");if(-1!=s&&(r=i.substring(s+1),i=i.substring(0,s)),i.startsWith("DLC2"))c=0;else{if(i.startsWith("DLS2")){let t;try{let e=i.substring(4);e=atob(e),t=JSON.parse(e)}catch(e){throw new Error("Format Error: The license string you specified is invalid, please check to make sure it is correct.")}if(i=t.handshakeCode?t.handshakeCode:t.organizationID?t.organizationID:"","number"==typeof i&&(i=JSON.stringify(i)),0===o.length){let e=[];t.mainServerURL&&(e[0]=t.mainServerURL),t.standbyServerURL&&(e[1]=t.standbyServerURL),o=L(e)}!a&&t.sessionPassword&&(a=t.sessionPassword),e=t.remark}i&&"200001"!==i&&!i.startsWith("200001-")||(c=1)}}if(c&&(t||(m.crypto||(n="Please upgrade your browser to support online key."),m.crypto.subtle||(n="Require https to use online key in this browser."))),n)throw new Error(n);return 1===c&&(i="",console.warn("Applying for a public trial license ...")),{lt:c,l:i,ls:o,sp:a,rmk:e,cv:r}}throw new Error("Can't preprocess license again"+_)})(D),h=new S;D._pLoad.task=h,(async()=>{try{await D._pLoad}catch(e){}})();let g=r();n[g]=t=>{if(t.message&&D._onAuthMessage){let e=D._onAuthMessage(t.message);null!=e&&(t.message=e)}let s,r=!1;if(1===e&&(r=!0),t.success?(i&&i("init license success"),t.message&&console.warn(t.message),o._bSupportIRTModule=t.bSupportIRTModule,o._bSupportDce4Module=t.bSupportDce4Module,D.bPassValidation=!0,[0,-10076].includes(t.initLicenseInfo.errorCode)?[-10076].includes(t.initLicenseInfo.errorCode)&&console.warn(t.initLicenseInfo.errorString):h.reject(new Error(t.initLicenseInfo.errorString))):(s=Error(t.message),t.stack&&(s.stack=t.stack),t.ltsErrorCode&&(s.ltsErrorCode=t.ltsErrorCode),r||111==t.ltsErrorCode&&-1!=t.message.toLowerCase().indexOf("trial license")&&(r=!0)),r){const e=a(o.engineResourcePaths);(async(e,t,s)=>{if(!e._bNeverShowDialog)try{let r=await fetch(e.engineResourcePath+"dls.license.dialog.html");if(!r.ok)throw Error("Get license dialog fail. Network Error: "+r.statusText);let n=await r.text();if(!n.trim().startsWith("<"))throw Error("Get license dialog fail. Can't get valid HTMLElement.");let i=document.createElement("div");i.innerHTML=n;let o=[];for(let e=0;e{if(e==t.target){a.remove();for(let e of o)e.remove()}}));else if(!l&&e.classList.contains("dls-license-icon-close"))l=e,e.addEventListener("click",(()=>{a.remove();for(let e of o)e.remove()}));else if(!d&&e.classList.contains("dls-license-icon-error"))d=e,"error"!=t&&e.remove();else if(!u&&e.classList.contains("dls-license-icon-warn"))u=e,"warn"!=t&&e.remove();else if(!f&&e.classList.contains("dls-license-msg-content")){f=e;let t=s;for(;t;){let s=t.indexOf("["),r=t.indexOf("]",s),n=t.indexOf("(",r),i=t.indexOf(")",n);if(-1==s||-1==r||-1==n||-1==i){e.appendChild(new Text(t));break}s>0&&e.appendChild(new Text(t.substring(0,s)));let o=document.createElement("a"),a=t.substring(s+1,r);o.innerText=a;let c=t.substring(n+1,i);o.setAttribute("href",c),o.setAttribute("target","_blank"),e.appendChild(o),t=t.substring(i+1)}}document.body.appendChild(a)}catch(t){e._onLog&&e._onLog(t.message||t)}})({_bNeverShowDialog:D._bNeverShowDialog,engineResourcePath:e.license,_onLog:i},t.success?"warn":"error",t.message)}t.success?h.resolve(void 0):h.reject(s)},await c("core"),l.postMessage({type:"license_dynamsoft",body:{v:"3.4.31",brtk:!!e,bptk:1===e,l:t,os:R,fn:D.deviceFriendlyName,ls:s,sp:d,rmk:u,cv:f},id:g}),D.bCallInitLicense=!0,await h})));let A;e.license={},e.license.dynamsoft=W,e.license.getAR=async()=>{{let e=d.dynamsoft_inited;e&&e.isRejected&&await e}return l?new Promise(((e,t)=>{let s=r();n[s]=async s=>{if(s.success){delete s.success;{let e=D.license;e&&(e.startsWith("t")||e.startsWith("f"))&&(s.pk=e)}if(Object.keys(s).length){if(s.lem){let e=Error(s.lem);e.ltsErrorCode=s.lec,delete s.lem,delete s.lec,s.ae=e}e(s)}else e(null)}else{let e=Error(s.message);s.stack&&(e.stack=s.stack),t(e)}},l.postMessage({type:"license_getAR",id:s})})):null};class D{static setLicenseServer(e){O(D,e)}static get license(){return this._license}static set license(e){E(D,e)}static get licenseServer(){return this._licenseServer}static set licenseServer(e){O(D,e)}static get deviceFriendlyName(){return this._deviceFriendlyName}static set deviceFriendlyName(e){x(D,e)}static initLicense(e,t){if(E(D,e),D.bCallInitLicense=!0,"boolean"==typeof t&&t||"object"==typeof t&&t.executeNow)return W()}static setDeviceFriendlyName(e){x(D,e)}static getDeviceFriendlyName(){return D._deviceFriendlyName}static getDeviceUUID(){return(async()=>(await s("dynamsoft_uuid",(async()=>{await t();let e=new S,s=r();n[s]=t=>{if(t.success)e.resolve(t.uuid);else{const s=Error(t.message);t.stack&&(s.stack=t.stack),e.reject(s)}},l.postMessage({type:"license_getDeviceUUID",id:s}),A=await e})),A))()}}D._pLoad=new S,D.bPassValidation=!1,D.bCallInitLicense=!1,D._license=k,D._licenseServer=[],D._deviceFriendlyName="",o.engineResourcePaths.license={version:"3.4.31",path:y,isInternal:!0},u.license={wasm:!0,js:!0},e.license.LicenseManager=D;const M="1.4.21";"string"!=typeof o.engineResourcePaths.std&&f(o.engineResourcePaths.std.version,M)<0&&(o.engineResourcePaths.std={version:M,path:v(y+`../../dynamsoft-capture-vision-std@${M}/dist/`),isInternal:!0});class F{static getVersion(){return`3.4.31(Worker: ${h.license&&h.license.worker||"Not Loaded"}, Wasm: ${h.license&&h.license.wasm||"Not Loaded"})`}}export{D as LicenseManager,F as LicenseModule}; diff --git a/dist/dynamsoft-license@3.4.31/dist/license.js b/dist/dynamsoft-license@3.4.31/dist/license.js new file mode 100644 index 0000000..ad561c0 --- /dev/null +++ b/dist/dynamsoft-license@3.4.31/dist/license.js @@ -0,0 +1,11 @@ +/*! + * Dynamsoft JavaScript Library + * @product Dynamsoft License JS Edition + * @website https://www.dynamsoft.com + * @copyright Copyright 2024, Dynamsoft Corporation + * @author Dynamsoft + * @version 3.4.31 + * @fileoverview Dynamsoft JavaScript Library for Core + * More info DL JS: https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/license/license-module.html + */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("dynamsoft-core")):"function"==typeof define&&define.amd?define(["exports","dynamsoft-core"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).Dynamsoft=e.Dynamsoft||{},e.Dynamsoft.License={}),e.Dynamsoft.Core)}(this,(function(e,t){"use strict";const s="undefined"==typeof self,r=s?{}:self,n="function"==typeof importScripts,i=(()=>{if(!n){if(!s&&document.currentScript){let e=document.currentScript.src,t=e.indexOf("?");if(-1!=t)e=e.substring(0,t);else{let t=e.indexOf("#");-1!=t&&(e=e.substring(0,t))}return e.substring(0,e.lastIndexOf("/")+1)}return"./"}})(),o=e=>{if(null==e&&(e="./"),s||n);else{let t=document.createElement("a");t.href=e,e=t.href}return e.endsWith("/")||(e+="/"),e},a=e=>e&&"object"==typeof e&&"function"==typeof e.then,c=(async()=>{})().constructor;class l extends c{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(e){let t;this._task=e,a(e)?t=e:"function"==typeof e&&(t=new c(e)),t&&(async()=>{try{const s=await t;e===this._task&&this.resolve(s)}catch(t){e===this._task&&this.reject(t)}})()}get isEmpty(){return null==this._task}constructor(e){let t,s;super(((e,r)=>{t=e,s=r})),this._s="pending",this.resolve=e=>{this.isPending&&(a(e)?this.task=e:(this._s="fulfilled",t(e)))},this.reject=e=>{this.isPending&&(this._s="rejected",s(e))},this.task=e}}const d=" is not allowed to change after `createInstance` or `loadWasm` is called.",u=!s&&document.currentScript&&(document.currentScript.getAttribute("data-license")||document.currentScript.getAttribute("data-productKeys")||document.currentScript.getAttribute("data-licenseKey")||document.currentScript.getAttribute("data-handshakeCode")||document.currentScript.getAttribute("data-organizationID"))||"",f=(e,t)=>{const s=e;if(s._license!==t){if(!s._pLoad.isEmpty)throw new Error("`license`"+d);s._license=t}};!s&&document.currentScript&&document.currentScript.getAttribute("data-sessionPassword");const h=e=>{if(null==e)e=[];else{e=e instanceof Array?[...e]:[e];for(let t=0;t{t=h(t);const s=e;if(s._licenseServer!==t){if(!s._pLoad.isEmpty)throw new Error("`licenseServer`"+d);s._licenseServer=t}},p=(e,t)=>{t=t||"";const s=e;if(s._deviceFriendlyName!==t){if(!s._pLoad.isEmpty)throw new Error("`deviceFriendlyName`"+d);s._deviceFriendlyName=t}};let m,y,w,v,k;"undefined"!=typeof navigator&&(m=navigator,y=m.userAgent,w=m.platform,v=m.mediaDevices),function(){if(!s){const e={Edge:{search:"Edg",verSearch:"Edg"},OPR:null,Chrome:null,Safari:{str:m.vendor,search:"Apple",verSearch:["Version","iPhone OS","CPU OS"]},Firefox:null,Explorer:{search:"MSIE",verSearch:"MSIE"}},t={HarmonyOS:null,Android:null,iPhone:null,iPad:null,Windows:{str:w,search:"Win"},Mac:{str:w},Linux:{str:w}};let s="unknownBrowser",r=0,n="unknownOS";for(let t in e){const n=e[t]||{};let i=n.str||y,o=n.search||t,a=n.verStr||y,c=n.verSearch||t;if(c instanceof Array||(c=[c]),-1!=i.indexOf(o)){s=t;for(let e of c){let t=a.indexOf(e);if(-1!=t){r=parseFloat(a.substring(t+e.length+1));break}}break}}for(let e in t){const s=t[e]||{};let r=s.str||y,i=s.search||e;if(-1!=r.indexOf(i)){n=e;break}}"Linux"==n&&-1!=y.indexOf("Windows NT")&&(n="HarmonyOS"),k={browser:s,version:r,OS:n}}s&&(k={browser:"ssr",version:0,OS:"ssr"})}(),v&&v.getUserMedia,"Chrome"===k.browser&&k.version>66||"Safari"===k.browser&&k.version>13||"OPR"===k.browser&&k.version>43||"Edge"===k.browser&&k.version;const b=()=>(t.loadWasm("license"),t.doOrWaitAsyncDependency("dynamsoft_inited",(async()=>{let{lt:e,l:s,ls:n,sp:i,rmk:o,cv:a}=((e,t=!1)=>{const s=e;if(s._pLoad.isEmpty){let e,n,i,o=s._license||"",a=JSON.parse(JSON.stringify(s._licenseServer)),c=s._sessionPassword,l=0;if(o.startsWith("t")||o.startsWith("f"))l=0;else if(0===o.length||o.startsWith("P")||o.startsWith("L")||o.startsWith("Y")||o.startsWith("A"))l=1;else{l=2;const t=o.indexOf(":");-1!=t&&(o=o.substring(t+1));const s=o.indexOf("?");if(-1!=s&&(n=o.substring(s+1),o=o.substring(0,s)),o.startsWith("DLC2"))l=0;else{if(o.startsWith("DLS2")){let t;try{let e=o.substring(4);e=atob(e),t=JSON.parse(e)}catch(e){throw new Error("Format Error: The license string you specified is invalid, please check to make sure it is correct.")}if(o=t.handshakeCode?t.handshakeCode:t.organizationID?t.organizationID:"","number"==typeof o&&(o=JSON.stringify(o)),0===a.length){let e=[];t.mainServerURL&&(e[0]=t.mainServerURL),t.standbyServerURL&&(e[1]=t.standbyServerURL),a=h(e)}!c&&t.sessionPassword&&(c=t.sessionPassword),e=t.remark}o&&"200001"!==o&&!o.startsWith("200001-")||(l=1)}}if(l&&(t||(r.crypto||(i="Please upgrade your browser to support online key."),r.crypto.subtle||(i="Require https to use online key in this browser."))),i)throw new Error(i);return 1===l&&(o="",console.warn("Applying for a public trial license ...")),{lt:l,l:o,ls:a,sp:c,rmk:e,cv:n}}throw new Error("Can't preprocess license again"+d)})(_),c=new l;_._pLoad.task=c,(async()=>{try{await _._pLoad}catch(e){}})();let u=t.getNextTaskID();t.mapTaskCallBack[u]=s=>{if(s.message&&_._onAuthMessage){let e=_._onAuthMessage(s.message);null!=e&&(s.message=e)}let r,n=!1;if(1===e&&(n=!0),s.success?(t.onLog&&t.onLog("init license success"),s.message&&console.warn(s.message),t.CoreModule._bSupportIRTModule=s.bSupportIRTModule,t.CoreModule._bSupportDce4Module=s.bSupportDce4Module,_.bPassValidation=!0,[0,-10076].includes(s.initLicenseInfo.errorCode)?[-10076].includes(s.initLicenseInfo.errorCode)&&console.warn(s.initLicenseInfo.errorString):c.reject(new Error(s.initLicenseInfo.errorString))):(r=Error(s.message),s.stack&&(r.stack=s.stack),s.ltsErrorCode&&(r.ltsErrorCode=s.ltsErrorCode),n||111==s.ltsErrorCode&&-1!=s.message.toLowerCase().indexOf("trial license")&&(n=!0)),n){const e=t.handleEngineResourcePaths(t.CoreModule.engineResourcePaths);(async(e,t,s)=>{if(!e._bNeverShowDialog)try{let r=await fetch(e.engineResourcePath+"dls.license.dialog.html");if(!r.ok)throw Error("Get license dialog fail. Network Error: "+r.statusText);let n=await r.text();if(!n.trim().startsWith("<"))throw Error("Get license dialog fail. Can't get valid HTMLElement.");let i=document.createElement("div");i.innerHTML=n;let o=[];for(let e=0;e{if(e==t.target){a.remove();for(let e of o)e.remove()}}));else if(!l&&e.classList.contains("dls-license-icon-close"))l=e,e.addEventListener("click",(()=>{a.remove();for(let e of o)e.remove()}));else if(!d&&e.classList.contains("dls-license-icon-error"))d=e,"error"!=t&&e.remove();else if(!u&&e.classList.contains("dls-license-icon-warn"))u=e,"warn"!=t&&e.remove();else if(!f&&e.classList.contains("dls-license-msg-content")){f=e;let t=s;for(;t;){let s=t.indexOf("["),r=t.indexOf("]",s),n=t.indexOf("(",r),i=t.indexOf(")",n);if(-1==s||-1==r||-1==n||-1==i){e.appendChild(new Text(t));break}s>0&&e.appendChild(new Text(t.substring(0,s)));let o=document.createElement("a"),a=t.substring(s+1,r);o.innerText=a;let c=t.substring(n+1,i);o.setAttribute("href",c),o.setAttribute("target","_blank"),e.appendChild(o),t=t.substring(i+1)}}document.body.appendChild(a)}catch(t){e._onLog&&e._onLog(t.message||t)}})({_bNeverShowDialog:_._bNeverShowDialog,engineResourcePath:e.license,_onLog:t.onLog},s.success?"warn":"error",s.message)}s.success?c.resolve(void 0):c.reject(r)},await t.waitAsyncDependency("core"),t.worker.postMessage({type:"license_dynamsoft",body:{v:"3.4.31",brtk:!!e,bptk:1===e,l:s,os:k,fn:_.deviceFriendlyName,ls:n,sp:i,rmk:o,cv:a},id:u}),_.bCallInitLicense=!0,await c})));let S;t.mapPackageRegister.license={},t.mapPackageRegister.license.dynamsoft=b,t.mapPackageRegister.license.getAR=async()=>{{let e=t.mapAsyncDependency.dynamsoft_inited;e&&e.isRejected&&await e}return t.worker?new Promise(((e,s)=>{let r=t.getNextTaskID();t.mapTaskCallBack[r]=async t=>{if(t.success){delete t.success;{let e=_.license;e&&(e.startsWith("t")||e.startsWith("f"))&&(t.pk=e)}if(Object.keys(t).length){if(t.lem){let e=Error(t.lem);e.ltsErrorCode=t.lec,delete t.lem,delete t.lec,t.ae=e}e(t)}else e(null)}else{let e=Error(t.message);t.stack&&(e.stack=t.stack),s(e)}},t.worker.postMessage({type:"license_getAR",id:r})})):null};class _{static setLicenseServer(e){g(_,e)}static get license(){return this._license}static set license(e){f(_,e)}static get licenseServer(){return this._licenseServer}static set licenseServer(e){g(_,e)}static get deviceFriendlyName(){return this._deviceFriendlyName}static set deviceFriendlyName(e){p(_,e)}static initLicense(e,t){if(f(_,e),_.bCallInitLicense=!0,"boolean"==typeof t&&t||"object"==typeof t&&t.executeNow)return b()}static setDeviceFriendlyName(e){p(_,e)}static getDeviceFriendlyName(){return _._deviceFriendlyName}static getDeviceUUID(){return(async()=>(await t.doOrWaitAsyncDependency("dynamsoft_uuid",(async()=>{await t.loadWasm();let e=new l,s=t.getNextTaskID();t.mapTaskCallBack[s]=t=>{if(t.success)e.resolve(t.uuid);else{const s=Error(t.message);t.stack&&(s.stack=t.stack),e.reject(s)}},t.worker.postMessage({type:"license_getDeviceUUID",id:s}),S=await e})),S))()}}_._pLoad=new l,_.bPassValidation=!1,_.bCallInitLicense=!1,_._license=u,_._licenseServer=[],_._deviceFriendlyName="",t.CoreModule.engineResourcePaths.license={version:"3.4.31",path:i,isInternal:!0},t.workerAutoResources.license={wasm:!0,js:!0},t.mapPackageRegister.license.LicenseManager=_;const L="1.4.21";"string"!=typeof t.CoreModule.engineResourcePaths.std&&t.compareVersion(t.CoreModule.engineResourcePaths.std.version,L)<0&&(t.CoreModule.engineResourcePaths.std={version:L,path:o(i+`../../dynamsoft-capture-vision-std@${L}/dist/`),isInternal:!0});e.LicenseManager=_,e.LicenseModule=class{static getVersion(){return`3.4.31(Worker: ${t.innerVersions.license&&t.innerVersions.license.worker||"Not Loaded"}, Wasm: ${t.innerVersions.license&&t.innerVersions.license.wasm||"Not Loaded"})`}}})); diff --git a/dist/dynamsoft-license@3.4.31/dist/license.worker.js b/dist/dynamsoft-license@3.4.31/dist/license.worker.js new file mode 100644 index 0000000..f6b18f1 --- /dev/null +++ b/dist/dynamsoft-license@3.4.31/dist/license.worker.js @@ -0,0 +1,11 @@ +/*! + * Dynamsoft JavaScript Library + * @product Dynamsoft License JS Edition + * @website https://www.dynamsoft.com + * @copyright Copyright 2024, Dynamsoft Corporation + * @author Dynamsoft + * @version 3.4.31 + * @fileoverview Dynamsoft JavaScript Library for Core + * More info DL JS: https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/license/license-module.html + */ +!function(){"use strict";const e="undefined"==typeof self,t=e?{}:self;let r,n,o,i,a;"undefined"!=typeof navigator&&(r=navigator,n=r.userAgent,o=r.platform,i=r.mediaDevices),function(){if(!e){const e={Edge:{search:"Edg",verSearch:"Edg"},OPR:null,Chrome:null,Safari:{str:r.vendor,search:"Apple",verSearch:["Version","iPhone OS","CPU OS"]},Firefox:null,Explorer:{search:"MSIE",verSearch:"MSIE"}},t={HarmonyOS:null,Android:null,iPhone:null,iPad:null,Windows:{str:o,search:"Win"},Mac:{str:o},Linux:{str:o}};let i="unknownBrowser",s=0,c="unknownOS";for(let t in e){const r=e[t]||{};let o=r.str||n,a=r.search||t,c=r.verStr||n,l=r.verSearch||t;if(l instanceof Array||(l=[l]),-1!=o.indexOf(a)){i=t;for(let e of l){let t=c.indexOf(e);if(-1!=t){s=parseFloat(c.substring(t+e.length+1));break}}break}}for(let e in t){const r=t[e]||{};let o=r.str||n,i=r.search||e;if(-1!=o.indexOf(i)){c=e;break}}"Linux"==c&&-1!=n.indexOf("Windows NT")&&(c="HarmonyOS"),a={browser:i,version:s,OS:c}}e&&(a={browser:"ssr",version:0,OS:"ssr"})}(),i&&i.getUserMedia;const s="Chrome"===a.browser&&a.version>66||"Safari"===a.browser&&a.version>13||"OPR"===a.browser&&a.version>43||"Edge"===a.browser&&a.version>15;var c=function(){try{if("undefined"!=typeof indexedDB)return indexedDB;if("undefined"!=typeof webkitIndexedDB)return webkitIndexedDB;if("undefined"!=typeof mozIndexedDB)return mozIndexedDB;if("undefined"!=typeof OIndexedDB)return OIndexedDB;if("undefined"!=typeof msIndexedDB)return msIndexedDB}catch(e){return}}();function l(e,t){e=e||[],t=t||{};try{return new Blob(e,t)}catch(o){if("TypeError"!==o.name)throw o;for(var r=new("undefined"!=typeof BlobBuilder?BlobBuilder:"undefined"!=typeof MSBlobBuilder?MSBlobBuilder:"undefined"!=typeof MozBlobBuilder?MozBlobBuilder:WebKitBlobBuilder),n=0;n=43)}})).catch((function(){return!1}))}(e).then((function(e){return y=e,y}))}function _(e){var t=p[e.name],r={};r.promise=new Promise((function(e,t){r.resolve=e,r.reject=t})),t.deferredOperations.push(r),t.dbReady?t.dbReady=t.dbReady.then((function(){return r.promise})):t.dbReady=r.promise}function S(e){var t=p[e.name].deferredOperations.pop();if(t)return t.resolve(),t.promise}function I(e,t){var r=p[e.name].deferredOperations.pop();if(r)return r.reject(t),r.promise}function x(e,t){return new Promise((function(r,n){if(p[e.name]=p[e.name]||{forages:[],db:null,dbReady:null,deferredOperations:[]},e.db){if(!t)return r(e.db);_(e),e.db.close()}var o=[e.name];t&&o.push(e.version);var i=c.open.apply(c,o);t&&(i.onupgradeneeded=function(t){var r=i.result;try{r.createObjectStore(e.storeName),t.oldVersion<=1&&r.createObjectStore(m)}catch(r){if("ConstraintError"!==r.name)throw r;console.warn('The database "'+e.name+'" has been upgraded from version '+t.oldVersion+" to version "+t.newVersion+', but the storage "'+e.storeName+'" already exists.')}}),i.onerror=function(e){e.preventDefault(),n(i.error)},i.onsuccess=function(){var t=i.result;t.onversionchange=function(e){e.target.close()},r(t),S(e)}}))}function k(e){return x(e,!1)}function C(e){return x(e,!0)}function D(e,t){if(!e.db)return!0;var r=!e.db.objectStoreNames.contains(e.storeName),n=e.versione.db.version;if(n&&(e.version!==t&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),o||r){if(r){var i=e.db.version+1;i>e.version&&(e.version=i)}return!0}return!1}function P(e){var t=function(e){for(var t=e.length,r=new ArrayBuffer(t),n=new Uint8Array(r),o=0;o0&&(!e.db||"InvalidStateError"===o.name||"NotFoundError"===o.name))return Promise.resolve().then((()=>{if(!e.db||"NotFoundError"===o.name&&!e.db.objectStoreNames.contains(e.storeName)&&e.version<=e.db.version)return e.db&&(e.version=e.db.version+1),C(e)})).then((()=>function(e){_(e);for(var t=p[e.name],r=t.forages,n=0;n(e.db=t,D(e)?C(e):t))).then((n=>{e.db=t.db=n;for(var o=0;o{throw I(e,t),t}))}(e).then((function(){N(e,t,r,n-1)})))).catch(r);r(o)}}var E={_driver:"asyncStorage",_initStorage:function(e){var t=this,r={db:null};if(e)for(var n in e)r[n]=e[n];var o=p[r.name];o||(o={forages:[],db:null,dbReady:null,deferredOperations:[]},p[r.name]=o),o.forages.push(t),t._initReady||(t._initReady=t.ready,t.ready=T);var i=[];function a(){return Promise.resolve()}for(var s=0;s{const r=p[e.name],n=r.forages;r.db=t;for(var o=0;o{if(!t.objectStoreNames.contains(e.storeName))return;const r=t.version+1;_(e);const n=p[e.name],o=n.forages;t.close();for(let e=0;e{const o=c.open(e.name,r);o.onerror=e=>{o.result.close(),n(e)},o.onupgradeneeded=()=>{o.result.deleteObjectStore(e.storeName)},o.onsuccess=()=>{const e=o.result;e.close(),t(e)}}));return i.then((e=>{n.db=e;for(let t=0;t{throw(I(e,t)||Promise.resolve()).catch((()=>{})),t}))})):t.then((t=>{_(e);const r=p[e.name],n=r.forages;t.close();for(var o=0;o{var n=c.deleteDatabase(e.name);n.onerror=()=>{const e=n.result;e&&e.close(),r(n.error)},n.onblocked=()=>{console.warn('dropInstance blocked for database "'+e.name+'" until all open connections are closed')},n.onsuccess=()=>{const e=n.result;e&&e.close(),t(e)}}));return i.then((e=>{r.db=e;for(var t=0;t{throw(I(e,t)||Promise.resolve()).catch((()=>{})),t}))}))}else r=Promise.reject("Invalid arguments");return d(r,t),r}};const O=new Map;function M(e,t){let r=e.name+"/";return e.storeName!==t.storeName&&(r+=e.storeName+"/"),r}var R={_driver:"tempStorageWrapper",_initStorage:async function(e){const t={};if(e)for(let r in e)t[r]=e[r];const r=t.keyPrefix=M(e,this._defaultConfig);this._dbInfo=t,O.has(r)||O.set(r,new Map)},getItem:function(e,t){e=f(e);const r=this.ready().then((()=>O.get(this._dbInfo.keyPrefix).get(e)));return d(r,t),r},setItem:function(e,t,r){e=f(e);const n=this.ready().then((()=>(void 0===t&&(t=null),O.get(this._dbInfo.keyPrefix).set(e,t),t)));return d(n,r),n},removeItem:function(e,t){e=f(e);const r=this.ready().then((()=>{O.get(this._dbInfo.keyPrefix).delete(e)}));return d(r,t),r},clear:function(e){const t=this.ready().then((()=>{const e=this._dbInfo.keyPrefix;O.has(e)&&O.delete(e)}));return d(t,e),t},length:function(e){const t=this.ready().then((()=>O.get(this._dbInfo.keyPrefix).size));return d(t,e),t},keys:function(e){const t=this.ready().then((()=>[...O.get(this._dbInfo.keyPrefix).keys()]));return d(t,e),t},dropInstance:function(e,t){if(t=h.apply(this,arguments),!(e="function"!=typeof e&&e||{}).name){const t=this.config();e.name=e.name||t.name,e.storeName=e.storeName||t.storeName}let r;return r=e.name?new Promise((t=>{e.storeName?t(M(e,this._defaultConfig)):t(`${e.name}/`)})).then((e=>{O.delete(e)})):Promise.reject("Invalid arguments"),d(r,t),r}};const j=(e,t)=>{const r=e.length;let n=0;for(;n{}))}config(e){if("object"==typeof e){if(this._ready)return new Error("Can't call config() after localforage has been used.");for(let t in e){if("storeName"===t&&(e[t]=e[t].replace(/\W/g,"_")),"version"===t&&"number"!=typeof e[t])return new Error("Database version must be a number.");this._config[t]=e[t]}return!("driver"in e)||!e.driver||this.setDriver(this._config.driver)}return"string"==typeof e?this._config[e]:this._config}defineDriver(e,t,r){const n=new Promise((function(t,r){try{const n=e._driver,o=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!e._driver)return void r(o);const i=J.concat("_initStorage");for(let t=0,n=i.length;t(null===t._ready&&(t._ready=t._initDriver()),t._ready)));return u(r,e,e),r}setDriver(e,t,r){const n=this;B(e)||(e=[e]);const o=this._getSupportedDrivers(e);function i(){n._config.driver=n.driver()}function a(e){return n._extend(e),i(),n._ready=n._initStorage(n._config),n._ready}const s=null!==this._driverSet?this._driverSet.catch((()=>Promise.resolve())):Promise.resolve();return this._driverSet=s.then((()=>{const e=o[0];return n._dbInfo=null,n._ready=null,n.getDriver(e).then((e=>{n._driver=e._driver,i(),n._wrapLibraryMethodsWithReady(),n._initDriver=function(e){return function(){let t=0;return function r(){for(;t{i();const e=new Error("No available storage method found.");return n._driverSet=Promise.reject(e),n._driverSet})),u(this._driverSet,t,r),this._driverSet}supports(e){return!!U[e]}_extend(e){z(this,e)}_getSupportedDrivers(e){const t=[];for(let r=0,n=e.length;re&&"object"==typeof e&&"function"==typeof e.then,K=(async()=>{})().constructor;class q extends K{get status(){return this._s}get isPending(){return"pending"===this._s}get isFulfilled(){return"fulfilled"===this._s}get isRejected(){return"rejected"===this._s}get task(){return this._task}set task(e){let t;this._task=e,G(e)?t=e:"function"==typeof e&&(t=new K(e)),t&&(async()=>{try{const r=await t;e===this._task&&this.resolve(r)}catch(t){e===this._task&&this.reject(t)}})()}get isEmpty(){return null==this._task}constructor(e){let t,r;super(((e,n)=>{t=e,r=n})),this._s="pending",this.resolve=e=>{this.isPending&&(G(e)?this.task=e:(this._s="fulfilled",t(e)))},this.reject=e=>{this.isPending&&(this._s="rejected",r(e))},this.task=e}}Date.prototype.kUtilFormat=function(e){const t={"M+":this.getUTCMonth()+1,"d+":this.getUTCDate(),"H+":this.getUTCHours(),"h+":this.getUTCHours()%12||12,"m+":this.getUTCMinutes(),"s+":this.getUTCSeconds(),"q+":Math.floor((this.getUTCMonth()+3)/3),"S+":this.getUTCMilliseconds()};/(y+)/.test(e)&&(e=e.replace(RegExp.$1,(this.getUTCFullYear()+"").substr(4-RegExp.$1.length)));for(let r in t)new RegExp("("+r+")").test(e)&&(e=e.replace(RegExp.$1,1==RegExp.$1.length?t[r]:("000"+t[r]).substr(("000"+t[r]).length-RegExp.$1.length)));return e};let X=e=>{let r,n,o,i,a,c,l,d,u,f,h,m,y,p,g,v,b,w,_,S,I=t.btoa,x=t.atob,k=e.bd,C=e.pd,D=e.vm,P=e.hs,T=e.dt,N=e.dm,E=["https://mlts.dynamsoft.com/","https://slts.dynamsoft.com/"],O=!1,M=Promise.resolve(),R=e.log&&((...t)=>{try{e.log.apply(null,t)}catch(e){setTimeout((()=>{throw e}),0)}})||(()=>{}),j=k&&R||(()=>{}),B=e=>e.join(""),A={a:[80,88,27,82,145,164,199,211],b:[187,87,89,128,150,44,190,213],c:[89,51,74,53,99,72,82,118],d:[99,181,118,158,215,103,76,117],e:[99,51,86,105,100,71,120,108],f:[97,87,49,119,98,51,74,48,83,50,86,53],g:[81,85,86,84,76,85,100,68,84,81,32,32],h:[90,87,53,106,99,110,108,119,100,65,32,32],i:[90,71,86,106,99,110,108,119,100,65,32,32],j:[97,88,89,32],k:[29,83,122,137,5,180,157,114],l:[100,71,70,110,84,71,86,117,90,51,82,111]},U=()=>t[B(A.c)][B(A.e)][B(A.f)]("raw",new Uint8Array(A.a.concat(A.b,A.d,A.k)),B(A.g),!0,[B(A.h),B(A.i)]),F=async e=>{if(t[B(A.c)]&&t[B(A.c)][B(A.e)]&&t[B(A.c)][B(A.e)][B(A.f)]){let r=x(e),n=new Uint8Array(r.length);for(let e=0;ex(x(e.replace(/\n/g,"+").replace(/\s/g,"=")).substring(1)),H=e=>I(String.fromCharCode(97+25*Math.random())+I(e)).replace(/\+/g,"\n").replace(/=/g," "),J=()=>{if(t.crypto){let e=new Uint8Array(36);t.crypto.getRandomValues(e);let r="";for(let t=0;t<36;++t){let n=e[t]%36;r+=n<10?n:String.fromCharCode(n+87)}return r}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))};const L="Failed to connect to the Dynamsoft License Server: ",$=" Check your Internet connection or contact Dynamsoft Support (support@dynamsoft.com) to acquire an offline license.",z={dlsErrorAndCacheExpire:L+"The cached license has expired. Please get connected to the network as soon as possible or contact the site administrator for more information.",publicTrialNetworkTimeout:L+"network timed out."+$,networkTimeout:L+"network timed out. Check your Internet connection or contact the site administrator for more information.",publicTrialFailConnect:L+"network connection error."+$,failConnect:L+"network connection error. Check your Internet connection or contact the site administrator for more information.",checkLocalTime:"Your system date and time appear to have been changed, causing the license to fail. Please correct the system date and time, then try again.",idbTimeout:"Failed to open indexedDB: Timeout.",dlsOfflineLicenseExpired:"The DLS2 Offline license has expired. Please contact the site administrator for more information."};let V,G,K,X,Y=async()=>{if(V)return V;V=new q,await(async()=>{m||(m=Z)})(),await Promise.race([(async()=>{let e=await m.createInstance({name:"dynamjssdkhello"});await e.setItem("dynamjssdkhello","available")})(),new Promise(((e,t)=>{setTimeout((()=>t(new Error(z.idbTimeout))),5e3)}))]),p=await m.createInstance({name:"dynamdlsinfo"}),g=I(I("v2")+String.fromCharCode(N.charCodeAt(N.length/2)+1)+I(N));try{let e=await p.getItem(g),t=null;self.indexedDB&&(t=await self.indexedDB.databases());let r=t&&t.some((e=>{if(e)return"dynamltsinfo"===e.name}));if(!e&&r){let t=await m.createInstance({name:"dynamltsinfo"});e=await t.getItem(g),e&&await p.setItem(g,e)}e&&([o,f]=JSON.parse(await W(e)))}catch(e){}try{null==o&&(o=J(),p.setItem(g,await H(JSON.stringify([o,null]))))}catch(e){}V.resolve()},Q=async()=>{v=I(String.fromCharCode(P.charCodeAt(0)+10)+I(C)+I(P)+D+I(""+T)),y=await m.createInstance({name:"dynamdlsuns"+I(I("v2"))+I(String.fromCharCode(P.charCodeAt(0)+10)+I(C)+I(P)+D+I(""+T))});try{n=await p.getItem(v)}catch(e){}B=e=>x(String.fromCharCode.apply(null,e).replace(/\n/g,"+").replace(/\s/g,"="))},ee=async e=>{if(K=Date.now(),G)return G;G=new q;try{let t={pd:C,vm:D,v:r,dt:T||"browser",ed:"javascript",cu:o,ad:N,os:i,fn:a};d&&(t.rmk=d),P&&(-1!=P.indexOf("-")?t.hs=P:t.og=P);let s={};if(f){let e=await p.getItem(g);e&&([o,f]=JSON.parse(await W(e))),s["lts-time"]=f}l&&(t.sp=l);let h=await Promise.race([(async()=>{let r,i=(new Date).kUtilFormat("yyyy-MM-ddTHH:mm:ss.SSSZ");f&&(p.setItem(g,await H(JSON.stringify([o,i]))),f=i);let a="auth/?ext="+encodeURIComponent(I(JSON.stringify(t)));u&&(a+="&"+encodeURIComponent(u));let l,d=!1,h=!1,m=async e=>{if(e&&!e.ok)try{let t=await e.text();if(t){let e=JSON.parse(t);e.errorCode&&(l=e,e.errorCode>100&&e.errorCode<200&&(n=null,d=!0,h=!0))}}catch(e){}};try{r=await Promise.race([fetch(E[0]+a,{headers:s,cache:e?"reload":"default",mode:"cors"}),new Promise(((e,t)=>setTimeout(t,1e4)))]),await m(r)}catch(e){}if(!(n||r&&r.ok||d))try{r=await Promise.race([fetch(E[1]+a,{headers:s,mode:"cors"}),new Promise(((e,t)=>setTimeout(t,3e4)))])}catch(e){}if(!(n||r&&r.ok||d))try{r=await Promise.race([fetch(E[0]+a,{headers:s,mode:"cors"}),new Promise(((e,t)=>setTimeout(t,3e4)))]),await m(r)}catch(e){}l&&151==l.errorCode&&(p.removeItem(g),p.removeItem(v),o=J(),t.cu=o,f=void 0,a="auth/?ext="+encodeURIComponent(I(JSON.stringify(t))),r=await Promise.race([fetch(E[0]+a,{headers:s,mode:"cors"}),new Promise(((e,t)=>setTimeout(t,3e4)))]),await m(r)),(()=>{if(!r||!r.ok){let e;h&&p.setItem(v,""),l?111==l.errorCode?e=l.message:(e=l.message.trim(),e.endsWith(".")||(e+="."),e=c?`An error occurred during authorization: ${e} [Contact Dynamsoft](https://www.dynamsoft.com/company/contact/) for more information.`:`An error occurred during authorization: ${e} Contact the site administrator for more information.`):e=c?z.publicTrialFailConnect:z.failConnect;let t=Error(e);throw l&&l.errorCode&&(t.ltsErrorCode=l.errorCode),t}})();let y=await r.text();try{f||(p.setItem(g,await H(JSON.stringify([o,i]))),f=i),p.setItem(v,y)}catch(e){}return y})(),new Promise(((e,t)=>{let r;r=c?z.publicTrialNetworkTimeout:z.networkTimeout,setTimeout((()=>t(new Error(r))),n?3e3:15e3)}))]);n=h}catch(e){k&&console.error(e),h=e}G.resolve(),G=null},te=async()=>{X||(X=(async()=>{if(j(o),!n){if(!O)throw R(h.message),h;return}let e={dm:N};k&&(e.bd=!0),e.brtk=!0,e.ls=E[0],P&&(-1!=P.indexOf("-")?e.hs=P:e.og=P),e.cu=o,a&&(e.fn=a),C&&(e.pd=C),r&&(e.v=r),T&&(e.dt=T),i&&(e.os=i),d&&(e.rmk=d),j(n);try{let t=JSON.parse(await F(n));t.pv&&(e.pv=JSON.stringify(t.pv)),t.ba&&(e.ba=t.ba),t.usu&&(e.usu=t.usu),t.trial&&(e.trial=t.trial),t.its&&(e.its=t.its),1==e.trial&&t.msg?e.msg=t.msg:h?e.msg=h.message||h:t.msg&&(e.msg=t.msg),e.ar=t.in,e.bafc=!!h}catch(e){}j(e);try{await b(e)}catch(e){j("error updl")}await re(),O||(O=!0),X=null})()),await X},re=async()=>{let e=(new Date).kUtilFormat("yyyy-MM-ddTHH:mm:ss.SSSZ"),t=await _();if(j(t),t&&t(M=M.then((async()=>{try{let r=await y.keys();if(t||(ne.isFulfilled?e&&(r=r.filter((t=>t{C=e.pd,r=e.v,D=r.split(".")[0],e.dt&&(T=e.dt),P=e.l||"",i="string"!=typeof e.os?JSON.stringify(e.os):e.os,a=e.fn,"string"==typeof a&&(a=a.substring(0,255)),e.ls&&e.ls.length&&(E=e.ls,1==E.length&&E.push(E[0])),c=!P||"200001"===P||P.startsWith("200001-"),l=e.sp,d=e.rmk,"string"==typeof d&&(d=d.substring(0,255)),e.cv&&(u=""+e.cv),b=e.updl,w=e.mnet,_=e.mxet,await Y(),await Q(),await ee(),await te(),(!h||h.ltsErrorCode>=102&&h.ltsErrorCode<=120)&&ie(null,!0)},i2:async({updl:e,mxet:t,strDLC2:r})=>{b=e,_=t,await Y(),B=e=>x(String.fromCharCode.apply(null,e).replace(/\n/g,"+").replace(/\s/g,"="));let i={pk:r,dm:N};k&&(i.bd=!0),i.cu=o;try{n=r.substring(4);let e=JSON.parse(await F(n));e.pv&&(i.pv=JSON.stringify(e.pv)),e.ba&&(i.ba=e.ba),i.ar=e.in}catch(e){}j(i);try{await b(i)}catch(e){j("error updl")}let a=(new Date).kUtilFormat("yyyy-MM-ddTHH:mm:ss.SSSZ"),s=await _();if(s&&s{let e=new Date;if(e.getTime()te()))}},s:async(e,r,n,o)=>{try{let e;e=r.startsWith("{")&&r.endsWith("}")?await(async e=>{if(t[B(A.c)]&&t[B(A.c)][B(A.e)]&&t[B(A.c)][B(A.e)][B(A.f)]){let r=new Uint8Array(e.length);for(let t=0;t{await ie()}),36e4)},p:ne,u:async()=>(await Y(),o),ar:()=>n,pt:()=>c,ae:()=>h}};const Y=self;let Q,ee,te,re;Y.licenseWorkerVersion="3.4.31";const ne=async e=>{await waitAsyncDependency("core"),await waitAsyncDependency("license"),Q=e.trial,ee=e.msg,ep(),re=JSON.parse(UTF8ToString(wasmImports.emscripten_bind_CoreWasm_static_init_1(es(JSON.stringify(e)))))},oe=()=>{let e=Module.getMinExpireTime;return e?e():null},ie=()=>{let e=Module.getMaxExpireTime;return e?e():null};Y.checkAndReauth=async()=>{},Object.assign(mapController,{license_dynamsoft:async(e,t)=>{try{let r,n=e.l,o=e.brtk,i=async()=>{te=te||X({dm:strDomain,log,bd:bDebug}),Y.scsd=te.s,e.pd="",e.v="0."+e.v,e.updl=ne,e.mnet=oe,e.mxet=ie,await te.i(e)},a=async()=>{if(n.startsWith("DLC2"))te=te||X({dm:strDomain,log,bd:bDebug}),await te.i2({updl:ne,mxet:ie,strDLC2:n});else{let e={pk:n,dm:strDomain};bDebug&&(e.bd=!0),await ne(e)}};o?await i():await a(),handleTaskRes(t,{trial:Q,ltsErrorCode:r,message:ee,initLicenseInfo:re,bSupportDce4Module:wasmImports.emscripten_bind_CoreWasm_static_GetIsSupportDceModule_0(),bSupportIRTModule:wasmImports.emscripten_bind_CoreWasm_static_GetIsSupportIRTModule_0()})}catch(e){handleTaskErr(t,e)}},license_getDeviceUUID:async(e,t)=>{try{te=te||X({dm:strDomain,log,bd:bDebug});let e=await te.u();handleTaskRes(t,{uuid:e})}catch(e){handleTaskErr(t,e)}},license_getAR:async(e,t)=>{try{if(te){let e={u:await te.u(),pt:te.pt()},r=te.ar();r&&(e.ar=r);let n=te.ae();n&&(e.lem=n.message,e.lec=n.ltsErrorCode),handleTaskRes(t,e)}else handleTaskRes(t,null)}catch(e){handleTaskErr(t,e)}}})}(); diff --git a/dist/dynamsoft-utility@1.4.32/dist/utility.d.ts b/dist/dynamsoft-utility@1.4.32/dist/utility.d.ts new file mode 100644 index 0000000..d23be74 --- /dev/null +++ b/dist/dynamsoft-utility@1.4.32/dist/utility.d.ts @@ -0,0 +1,118 @@ +import { DSImageData, Quadrilateral, LineSegment, Contour, Corner, Edge, EnumCapturedResultItemType, OriginalImageResultItem } from 'dynamsoft-core'; + +declare class ImageManager { + /** + * This method saves an image in either PNG or JPG format. The desired file format is inferred from the file extension provided in the 'name' parameter. Should the specified file format be omitted or unsupported, the data will default to being exported in PNG format. + * + * @param image The image to be saved, of type `DSImageData`. + * @param name The name of the file, as a string, under which the image will be saved. + * @param download An optional boolean flag that, when set to true, triggers the download of the file. + * + * @returns A promise that resolves with the saved File object. + */ + saveToFile(image: DSImageData, name: string, download?: boolean): Promise; + drawOnImage(image: Blob | string, drawingItem: Array | Quadrilateral | Array | LineSegment | Array | Contour | Array | Corner | Array | Edge, type: "quads" | "lines" | "contours" | "corners" | "edges", color?: number, thickness?: number, download?: boolean): Promise; +} + +declare class UtilityModule { + static getVersion(): string; +} + +type resultItemTypesString = "barcode" | "text_line" | "detected_quad" | "normalized_image"; +interface CapturedResultFilter { + onOriginalImageResultReceived?: (result: OriginalImageResultItem) => void; + onDecodedBarcodesReceived?: (result: any) => void; + onRecognizedTextLinesReceived?: (result: any) => void; + onDetectedQuadsReceived?: (result: any) => void; + onNormalizedImagesReceived?: (result: any) => void; + onParsedResultsReceived?: (result: any) => void; +} +declare class MultiFrameResultCrossFilter implements CapturedResultFilter { + #private; + verificationEnabled: { + [key: number]: boolean; + }; + duplicateFilterEnabled: { + [key: number]: boolean; + }; + duplicateForgetTime: { + [key: number]: number; + }; + private latestOverlappingEnabled; + private maxOverlappingFrames; + private overlapSet; + private stabilityCount; + private crossVerificationFrames; + _dynamsoft(): void; + /** + * Enables or disables the verification of one or multiple specific result item types. + * @param resultItemTypes Specifies one or multiple specific result item types, which can be defined using EnumCapturedResultItemType or a string. If using a string, only one type can be specified, and valid values include "barcode", "text_line", "detected_quad", and "normalized_image". + * @param enabled Boolean to toggle verification on or off. + */ + enableResultCrossVerification(resultItemTypes: EnumCapturedResultItemType | resultItemTypesString, enabled: boolean): void; + /** + * Checks if verification is active for a given result item type. + * @param resultItemType Specifies the result item type, either with EnumCapturedResultItemType or a string. When using a string, the valid values include "barcode", "text_line", "detected_quad", and "normalized_image". + * @returns Boolean indicating the status of verification for the specified type. + */ + isResultCrossVerificationEnabled(resultItemTypes: EnumCapturedResultItemType | resultItemTypesString): boolean; + /** + * Enables or disables the deduplication process for one or multiple specific result item types. + * @param resultItemTypes Specifies one or multiple specific result item types, which can be defined using EnumCapturedResultItemType or a string. If using a string, only one type can be specified, and valid values include "barcode", "text_line", "detected_quad", and "normalized_image". + * @param enabled Boolean to toggle deduplication on or off. + */ + enableResultDeduplication(resultItemTypes: EnumCapturedResultItemType | resultItemTypesString, enabled: boolean): void; + /** + * Checks if deduplication is active for a given result item type. + * @param resultItemType Specifies the result item type, either with EnumCapturedResultItemType or a string. When using a string, the valid values include "barcode", "text_line", "detected_quad", and "normalized_image". + * @returns Boolean indicating the deduplication status for the specified type. + */ + isResultDeduplicationEnabled(resultItemTypes: EnumCapturedResultItemType | resultItemTypesString): boolean; + /** + * Sets the interval during which duplicates are disregarded for specific result item types. + * @param resultItemTypes Specifies one or multiple specific result item types, which can be defined using EnumCapturedResultItemType or a string. If using a string, only one type can be specified, and valid values include "barcode", "text_line", "detected_quad", and "normalized_image". + * @param time Time in milliseconds during which duplicates are disregarded. + */ + setDuplicateForgetTime(resultItemTypes: EnumCapturedResultItemType | resultItemTypesString, time: number): void; + /** + * Retrieves the interval during which duplicates are disregarded for a given result item type. + * @param resultItemType Specifies the result item type, either with EnumCapturedResultItemType or a string. When using a string, the valid values include "barcode", "text_line", "detected_quad", and "normalized_image". + * @returns The set interval for the specified item type. + */ + getDuplicateForgetTime(resultItemTypes: EnumCapturedResultItemType | resultItemTypesString): number; + /** + * Set the max referencing frames count for the to-the-latest overlapping feature. + * + * @param resultItemTypes Specifies the result item type, either with EnumCapturedResultItemType or a string. When using a string, the valid values include "barcode", "text_line", "detected_quad", and "normalized_image". + * @param maxOverlappingFrames The max referencing frames count for the to-the-latest overlapping feature. + */ + setMaxOverlappingFrames(resultItemTypes: EnumCapturedResultItemType | resultItemTypesString, maxOverlappingFrames: number): void; + /** + * Get the max referencing frames count for the to-the-latest overlapping feature. + * @param resultItemTypes Specifies the result item type, either with EnumCapturedResultItemType or a string. When using a string, the valid values include "barcode", "text_line", "detected_quad", and "normalized_image". + * @return Returns the max referencing frames count for the to-the-latest overlapping feature. + */ + getMaxOverlappingFrames(resultItemType: EnumCapturedResultItemType): number; + /** + * Enables or disables the deduplication process for one or multiple specific result item types. + * @param resultItemTypes Specifies one or multiple specific result item types, which can be defined using EnumCapturedResultItemType or a string. If using a string, only one type can be specified, and valid values include "barcode", "text_line", "detected_quad", and "normalized_image". + * @param enabled Boolean to toggle deduplication on or off. + */ + enableLatestOverlapping(resultItemTypes: EnumCapturedResultItemType | resultItemTypesString, enabled: boolean): void; + /** + * Checks if deduplication is active for a given result item type. + * @param resultItemType Specifies the result item type, either with EnumCapturedResultItemType or a string. When using a string, the valid values include "barcode", "text_line", "detected_quad", and "normalized_image". + * + * @returns Boolean indicating the deduplication status for the specified type. + */ + isLatestOverlappingEnabled(resultItemType: EnumCapturedResultItemType | resultItemTypesString): boolean; + getFilteredResultItemTypes(): number; + onOriginalImageResultReceived(result: OriginalImageResultItem): void; + latestOverlappingFilter(result: any): void; + onDecodedBarcodesReceived(result: any): void; + onRecognizedTextLinesReceived(result: any): void; + onDetectedQuadsReceived(result: any): void; + onNormalizedImagesReceived(result: any): void; +} + +export { ImageManager, MultiFrameResultCrossFilter, UtilityModule }; diff --git a/dist/dynamsoft-utility@1.4.32/dist/utility.esm.js b/dist/dynamsoft-utility@1.4.32/dist/utility.esm.js new file mode 100644 index 0000000..f8ed85e --- /dev/null +++ b/dist/dynamsoft-utility@1.4.32/dist/utility.esm.js @@ -0,0 +1,11 @@ +/*! + * Dynamsoft JavaScript Library + * @product Dynamsoft Utility JS Edition + * @website https://www.dynamsoft.com + * @copyright Copyright 2024, Dynamsoft Corporation + * @author Dynamsoft + * @version 1.4.32 + * @fileoverview Dynamsoft JavaScript Library for Utility + * More info DU JS: https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/utility-module.html + */ +import{_getNorImageData as t,_saveToFile as e,requestResource as i,getNextTaskID as n,mapTaskCallBack as o,worker as s,CoreModule as a,workerAutoResources as r,compareVersion as l,innerVersions as c,EnumCapturedResultItemType as h}from"dynamsoft-core";const f=async t=>{let e;await new Promise(((i,n)=>{e=new Image,e.onload=()=>i(e),e.onerror=n,e.src=URL.createObjectURL(t)}));const i=document.createElement("canvas"),n=i.getContext("2d");i.width=e.width,i.height=e.height,n.drawImage(e,0,0);return{bytes:Uint8Array.from(n.getImageData(0,0,i.width,i.height).data),width:i.width,height:i.height,stride:4*i.width,format:10}};class p{async saveToFile(i,n,o){if(!i||!n)return null;if("string"!=typeof n)throw new TypeError("FileName must be of type string.");const s=t(i);return e(s,n,o)}async drawOnImage(t,e,a,r=4294901760,l=1,c){let h;if(t instanceof Blob)h=await f(t);else if("string"==typeof t){let e=await i(t,"blob");h=await f(e)}return await new Promise(((t,i)=>{let f=n();o[f]=async e=>{if(e.success)return c&&this.saveToFile(e.image,"test.png",c),t(e.image);{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}},s.postMessage({type:"utility_drawOnImage",id:f,body:{dsImage:h,drawingItem:e instanceof Array?e:[e],color:r,thickness:l,type:a}})}))}}const u="undefined"==typeof self,g="function"==typeof importScripts,d=(()=>{if(!g){if(!u&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),y=t=>{if(null==t&&(t="./"),u||g);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t};a.engineResourcePaths.utility={version:"1.4.32",path:d,isInternal:!0},r.utility={js:!0,wasm:!0};const m="1.4.21";"string"!=typeof a.engineResourcePaths.std&&l(a.engineResourcePaths.std.version,m)<0&&(a.engineResourcePaths.std={version:m,path:y(d+`../../dynamsoft-capture-vision-std@${m}/dist/`),isInternal:!0});const v="2.4.31";(!a.engineResourcePaths.dip||"string"!=typeof a.engineResourcePaths.dip&&l(a.engineResourcePaths.dip.version,v)<0)&&(a.engineResourcePaths.dip={version:v,path:y(d+`../../dynamsoft-image-processing@${v}/dist/`),isInternal:!0});class x{static getVersion(){return`1.4.32(Worker: ${c.utility&&c.utility.worker||"Not Loaded"}, Wasm: ${c.utility&&c.utility.wasm||"Not Loaded"})`}}function I(t,e,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(t):n?n.value:e.get(t)}var E,b,R,T,_;function C(t,e){let i=!0;for(let a=0;a1)return Math.sqrt((l-a)**2+(c-r)**2);{const t=o+f*(a-o),e=s+f*(r-s);return Math.sqrt((l-t)**2+(c-e)**2)}}function M(t){const e=[];for(let i=0;i{C(e,t)&&i.push(t)})),e.forEach((e=>{C(t,e)&&i.push(e)}));return w(function(t){if(t.length<=1)return t;t.sort(((t,e)=>t.x-e.x||t.y-e.y));const e=t.shift();return t.sort(((t,i)=>Math.atan2(t.y-e.y,t.x-e.x)-Math.atan2(i.y-e.y,i.x-e.x))),[e,...t]}(i))}function S(t,e,i,n){const o=e.x-t.x,s=e.y-t.y,a=n.x-i.x,r=n.y-i.y,l=(-s*(t.x-i.x)+o*(t.y-i.y))/(-a*s+o*r),c=(a*(t.y-i.y)-r*(t.x-i.x))/(-a*s+o*r);return l>=0&&l<=1&&c>=0&&c<=1?{x:t.x+c*o,y:t.y+c*s}:null}function w(t){let e=0;for(let i=0;i0}function L(t,e){for(let i=0;i<4;i++)if(!F(t.points[i],t.points[(i+1)%4],e))return!1;return!0}"function"==typeof SuppressedError&&SuppressedError;const N=3,k=1,P=1,W=2,G=3,j=5,V=15,U=5;function Q(t,e,i,n){const o=t.points,s=e.points;let a=8*i;a=Math.max(a,5);const r=M(o)[3],l=M(o)[1],c=M(s)[3],h=M(s)[1];let f,p=0;if(f=Math.max(Math.abs(B(r,e.points[0])),Math.abs(B(r,e.points[3]))),f>p&&(p=f),f=Math.max(Math.abs(B(l,e.points[1])),Math.abs(B(l,e.points[2]))),f>p&&(p=f),f=Math.max(Math.abs(B(c,t.points[0])),Math.abs(B(c,t.points[3]))),f>p&&(p=f),f=Math.max(Math.abs(B(h,t.points[1])),Math.abs(B(h,t.points[2]))),f>p&&(p=f),p>a)return!1;const u=A(M(o)[0]),g=A(M(o)[2]),d=A(M(s)[0]),y=A(M(s)[2]),m=O(u,y),v=O(d,g),x=m>v,I=Math.min(m,v),E=O(u,g),b=O(d,y);let R=12*i;R=Math.max(R,5),R=Math.min(R,E),R=Math.min(R,b);return!!(I{e.x+=t,e.y+=i})),e.x/=t.length,e.y/=t.length,e}isProbablySameLocationWithOffset(t,e){const i=this.item.location,n=t.location;if(i.area<=0)return!1;if(Math.abs(i.area-n.area)>.4*i.area)return!1;let o=new Array(4).fill(0),s=new Array(4).fill(0),a=0,r=0;for(let t=0;t<4;++t)o[t]=Math.round(100*(n.points[t].x-i.points[t].x))/100,a+=o[t],s[t]=Math.round(100*(n.points[t].y-i.points[t].y))/100,r+=s[t];a/=4,r/=4;for(let t=0;t<4;++t){if(Math.abs(o[t]-a)>this.strictLimit||Math.abs(a)>.8)return!1;if(Math.abs(s[t]-r)>this.strictLimit||Math.abs(r)>.8)return!1}return e.x=a,e.y=r,!0}isLocationOverlap(t,e){if(this.locationArea>e){for(let e=0;e<4;e++)if(L(this.location,t.points[e]))return!0;const e=this.getCenterPoint(t.points);if(L(this.location,e))return!0}else{for(let e=0;e<4;e++)if(L(t,this.location.points[e]))return!0;if(L(t,this.getCenterPoint(this.location.points)))return!0}return!1}isMatchedLocationWithOffset(t,e={x:0,y:0}){if(this.isOneD){const i=Object.assign({},t.location);for(let t=0;t<4;t++)i.points[t].x-=e.x,i.points[t].y-=e.y;if(!this.isLocationOverlap(i,t.locationArea))return!1;const n=[this.location.points[0],this.location.points[3]],o=[this.location.points[1],this.location.points[2]];for(let t=0;t<4;t++){const e=i.points[t],s=0===t||3===t?n:o;if(Math.abs(B(s,e))>this.locationThreshold)return!1}}else for(let i=0;i<4;i++){const n=t.location.points[i],o=this.location.points[i];if(!(Math.abs(o.x+e.x-n.x)=this.locationThreshold)return!1}return!0}isOverlappedLocationWithOffset(t,e,i=!0){const n=Object.assign({},t.location);for(let t=0;t<4;t++)n.points[t].x-=e.x,n.points[t].y-=e.y;if(!this.isLocationOverlap(n,t.location.area))return!1;if(i){const t=.75;return D([...this.location.points],n.points)>this.locationArea*t}return!0}}const Z={BF_ONED:BigInt(3147775),BF_GS1_DATABAR:BigInt(260096)},q={barcode:2,text_line:4,detected_quad:8,normalized_image:16},z=t=>Object.values(q).includes(t)||q.hasOwnProperty(t),$=(t,e)=>"string"==typeof t?e[q[t]]:e[t],H=(t,e,i)=>{"string"==typeof t?e[q[t]]=i:e[t]=i},J=(t,e,i)=>{const n=[8,16].includes(i);if(!n&&t.isResultCrossVerificationEnabled(i))for(let t=0;t{H(e,this.verificationEnabled,t)})),I(this,b,"f").forEach(((t,e)=>{H(e,this.duplicateFilterEnabled,t)})),I(this,R,"f").forEach(((t,e)=>{H(e,this.duplicateForgetTime,t)})),I(this,T,"f").forEach(((t,e)=>{H(e,this.latestOverlappingEnabled,t)})),I(this,_,"f").forEach(((t,e)=>{H(e,this.maxOverlappingFrames,t)}))}enableResultCrossVerification(t,e){z(t)&&I(this,E,"f").set(t,e)}isResultCrossVerificationEnabled(t){return!!z(t)&&$(t,this.verificationEnabled)}enableResultDeduplication(t,e){z(t)&&(e&&this.enableLatestOverlapping(t,!1),I(this,b,"f").set(t,e))}isResultDeduplicationEnabled(t){return!!z(t)&&$(t,this.duplicateFilterEnabled)}setDuplicateForgetTime(t,e){z(t)&&(e>18e4&&(e=18e4),e<0&&(e=0),I(this,R,"f").set(t,e))}getDuplicateForgetTime(t){return z(t)?$(t,this.duplicateForgetTime):-1}setMaxOverlappingFrames(t,e){z(t)&&I(this,_,"f").set(t,e)}getMaxOverlappingFrames(t){return z(t)?$(t,this.maxOverlappingFrames):-1}enableLatestOverlapping(t,e){z(t)&&(e&&this.enableResultDeduplication(t,!1),I(this,T,"f").set(t,e))}isLatestOverlappingEnabled(t){return!!z(t)&&$(t,this.latestOverlappingEnabled)}getFilteredResultItemTypes(){let t=0;const e=[h.CRIT_BARCODE,h.CRIT_TEXT_LINE,h.CRIT_DETECTED_QUAD,h.CRIT_NORMALIZED_IMAGE];for(let i=0;i{if(1!==t.type){const e=(BigInt(t.format)&BigInt(Z.BF_ONED))!=BigInt(0)||(BigInt(t.format)&BigInt(Z.BF_GS1_DATABAR))!=BigInt(0);return new X(l,e?1:2,e,t)}})).filter(Boolean);if(this.overlapSet.length>0){const t=new Array(c).fill(new Array(this.overlapSet.length).fill(1));let e=0;for(;e-1!==t)).length;o>m&&(m=o,y=n,d.x=i.x,d.y=i.y)}}if(0===m){for(let e=0;e-1!=t)).length}let i=this.overlapSet.length<=N?m>=k:m>=W;if(!i&&s&&p>0){let t=0;for(let e=0;e=P:t>=G}i||(this.overlapSet=[])}if(0===this.overlapSet.length)this.stabilityCount=0,t.items.forEach(((t,e)=>{if(1!==t.type){const i=Object.assign({},t),n=(BigInt(t.format)&BigInt(Z.BF_ONED))!=BigInt(0)||(BigInt(t.format)&BigInt(Z.BF_GS1_DATABAR))!=BigInt(0),s=t.confidenceU||Math.abs(d.y)>U)&&(e=!1):e=!1;for(let i=0;i0){for(let t=0;t!(t.overlapCount+this.stabilityCount<=0&&t.crossVerificationFrame<=0)))}g.sort(((t,e)=>e-t)).forEach(((e,i)=>{t.items.splice(e,1)})),u.forEach((e=>{t.items.push(Object.assign(Object.assign({},e),{overlapped:!0}))}))}}onDecodedBarcodesReceived(t){this.latestOverlappingFilter(t),J(this,t.items,h.CRIT_BARCODE)}onRecognizedTextLinesReceived(t){J(this,t.items,h.CRIT_TEXT_LINE)}onDetectedQuadsReceived(t){J(this,t.items,h.CRIT_DETECTED_QUAD)}onNormalizedImagesReceived(t){J(this,t.items,h.CRIT_NORMALIZED_IMAGE)}}E=new WeakMap,b=new WeakMap,R=new WeakMap,T=new WeakMap,_=new WeakMap;export{p as ImageManager,K as MultiFrameResultCrossFilter,x as UtilityModule}; diff --git a/dist/dynamsoft-utility@1.4.32/dist/utility.js b/dist/dynamsoft-utility@1.4.32/dist/utility.js new file mode 100644 index 0000000..5b2de74 --- /dev/null +++ b/dist/dynamsoft-utility@1.4.32/dist/utility.js @@ -0,0 +1,11 @@ +/*! + * Dynamsoft JavaScript Library + * @product Dynamsoft Utility JS Edition + * @website https://www.dynamsoft.com + * @copyright Copyright 2024, Dynamsoft Corporation + * @author Dynamsoft + * @version 1.4.32 + * @fileoverview Dynamsoft JavaScript Library for Utility + * More info DU JS: https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/utility-module.html + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("dynamsoft-core")):"function"==typeof define&&define.amd?define(["exports","dynamsoft-core"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).Dynamsoft=t.Dynamsoft||{},t.Dynamsoft.Utility={}),t.Dynamsoft.Core)}(this,(function(t,e){"use strict";const i=async t=>{let e;await new Promise(((i,n)=>{e=new Image,e.onload=()=>i(e),e.onerror=n,e.src=URL.createObjectURL(t)}));const i=document.createElement("canvas"),n=i.getContext("2d");i.width=e.width,i.height=e.height,n.drawImage(e,0,0);return{bytes:Uint8Array.from(n.getImageData(0,0,i.width,i.height).data),width:i.width,height:i.height,stride:4*i.width,format:10}};const n="undefined"==typeof self,s="function"==typeof importScripts,o=(()=>{if(!s){if(!n&&document.currentScript){let t=document.currentScript.src,e=t.indexOf("?");if(-1!=e)t=t.substring(0,e);else{let e=t.indexOf("#");-1!=e&&(t=t.substring(0,e))}return t.substring(0,t.lastIndexOf("/")+1)}return"./"}})(),a=t=>{if(null==t&&(t="./"),n||s);else{let e=document.createElement("a");e.href=t,t=e.href}return t.endsWith("/")||(t+="/"),t};e.CoreModule.engineResourcePaths.utility={version:"1.4.32",path:o,isInternal:!0},e.workerAutoResources.utility={js:!0,wasm:!0};const r="1.4.21";"string"!=typeof e.CoreModule.engineResourcePaths.std&&e.compareVersion(e.CoreModule.engineResourcePaths.std.version,r)<0&&(e.CoreModule.engineResourcePaths.std={version:r,path:a(o+`../../dynamsoft-capture-vision-std@${r}/dist/`),isInternal:!0});const l="2.4.31";(!e.CoreModule.engineResourcePaths.dip||"string"!=typeof e.CoreModule.engineResourcePaths.dip&&e.compareVersion(e.CoreModule.engineResourcePaths.dip.version,l)<0)&&(e.CoreModule.engineResourcePaths.dip={version:l,path:a(o+`../../dynamsoft-image-processing@${l}/dist/`),isInternal:!0});function c(t,e,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(t):n?n.value:e.get(t)}var u,p,h,f,m;function d(t,e){let i=!0;for(let a=0;a1)return Math.sqrt((l-a)**2+(c-r)**2);{const t=s+p*(a-s),e=o+p*(r-o);return Math.sqrt((l-t)**2+(c-e)**2)}}function I(t){const e=[];for(let i=0;i{d(e,t)&&i.push(t)})),e.forEach((e=>{d(t,e)&&i.push(e)}));return R(function(t){if(t.length<=1)return t;t.sort(((t,e)=>t.x-e.x||t.y-e.y));const e=t.shift();return t.sort(((t,i)=>Math.atan2(t.y-e.y,t.x-e.x)-Math.atan2(i.y-e.y,i.x-e.x))),[e,...t]}(i))}function T(t,e,i,n){const s=e.x-t.x,o=e.y-t.y,a=n.x-i.x,r=n.y-i.y,l=(-o*(t.x-i.x)+s*(t.y-i.y))/(-a*o+s*r),c=(a*(t.y-i.y)-r*(t.x-i.x))/(-a*o+s*r);return l>=0&&l<=1&&c>=0&&c<=1?{x:t.x+c*s,y:t.y+c*o}:null}function R(t){let e=0;for(let i=0;i0}function v(t,e){for(let i=0;i<4;i++)if(!x(t.points[i],t.points[(i+1)%4],e))return!1;return!0}"function"==typeof SuppressedError&&SuppressedError;const b=3,M=1,_=1,O=2,B=3,D=5,A=15,w=5;function S(t,e,i,n){const s=t.points,o=e.points;let a=8*i;a=Math.max(a,5);const r=I(s)[3],l=I(s)[1],c=I(o)[3],u=I(o)[1];let p,h=0;if(p=Math.max(Math.abs(g(r,e.points[0])),Math.abs(g(r,e.points[3]))),p>h&&(h=p),p=Math.max(Math.abs(g(l,e.points[1])),Math.abs(g(l,e.points[2]))),p>h&&(h=p),p=Math.max(Math.abs(g(c,t.points[0])),Math.abs(g(c,t.points[3]))),p>h&&(h=p),p=Math.max(Math.abs(g(u,t.points[1])),Math.abs(g(u,t.points[2]))),p>h&&(h=p),h>a)return!1;const f=E(I(s)[0]),m=E(I(s)[2]),C=E(I(o)[0]),T=E(I(o)[2]),x=y(f,T),v=y(C,m),b=x>v,M=Math.min(x,v),_=y(f,m),O=y(C,T);let B=12*i;B=Math.max(B,5),B=Math.min(B,_),B=Math.min(B,O);return!!(M{e.x+=t,e.y+=i})),e.x/=t.length,e.y/=t.length,e}isProbablySameLocationWithOffset(t,e){const i=this.item.location,n=t.location;if(i.area<=0)return!1;if(Math.abs(i.area-n.area)>.4*i.area)return!1;let s=new Array(4).fill(0),o=new Array(4).fill(0),a=0,r=0;for(let t=0;t<4;++t)s[t]=Math.round(100*(n.points[t].x-i.points[t].x))/100,a+=s[t],o[t]=Math.round(100*(n.points[t].y-i.points[t].y))/100,r+=o[t];a/=4,r/=4;for(let t=0;t<4;++t){if(Math.abs(s[t]-a)>this.strictLimit||Math.abs(a)>.8)return!1;if(Math.abs(o[t]-r)>this.strictLimit||Math.abs(r)>.8)return!1}return e.x=a,e.y=r,!0}isLocationOverlap(t,e){if(this.locationArea>e){for(let e=0;e<4;e++)if(v(this.location,t.points[e]))return!0;const e=this.getCenterPoint(t.points);if(v(this.location,e))return!0}else{for(let e=0;e<4;e++)if(v(t,this.location.points[e]))return!0;if(v(t,this.getCenterPoint(this.location.points)))return!0}return!1}isMatchedLocationWithOffset(t,e={x:0,y:0}){if(this.isOneD){const i=Object.assign({},t.location);for(let t=0;t<4;t++)i.points[t].x-=e.x,i.points[t].y-=e.y;if(!this.isLocationOverlap(i,t.locationArea))return!1;const n=[this.location.points[0],this.location.points[3]],s=[this.location.points[1],this.location.points[2]];for(let t=0;t<4;t++){const e=i.points[t],o=0===t||3===t?n:s;if(Math.abs(g(o,e))>this.locationThreshold)return!1}}else for(let i=0;i<4;i++){const n=t.location.points[i],s=this.location.points[i];if(!(Math.abs(s.x+e.x-n.x)=this.locationThreshold)return!1}return!0}isOverlappedLocationWithOffset(t,e,i=!0){const n=Object.assign({},t.location);for(let t=0;t<4;t++)n.points[t].x-=e.x,n.points[t].y-=e.y;if(!this.isLocationOverlap(n,t.location.area))return!1;if(i){const t=.75;return C([...this.location.points],n.points)>this.locationArea*t}return!0}}const L={BF_ONED:BigInt(3147775),BF_GS1_DATABAR:BigInt(260096)},k={barcode:2,text_line:4,detected_quad:8,normalized_image:16},N=t=>Object.values(k).includes(t)||k.hasOwnProperty(t),V=(t,e)=>"string"==typeof t?e[k[t]]:e[t],P=(t,e,i)=>{"string"==typeof t?e[k[t]]=i:e[t]=i},W=(t,e,i)=>{const n=[8,16].includes(i);if(!n&&t.isResultCrossVerificationEnabled(i))for(let t=0;t{let c=e.getNextTaskID();e.mapTaskCallBack[c]=async e=>{if(e.success)return r&&this.saveToFile(e.image,"test.png",r),t(e.image);{let t=new Error(e.message);return t.stack=e.stack+"\n"+t.stack,i(t)}},e.worker.postMessage({type:"utility_drawOnImage",id:c,body:{dsImage:l,drawingItem:n instanceof Array?n:[n],color:o,thickness:a,type:s}})}))}},t.MultiFrameResultCrossFilter=class{constructor(){this.verificationEnabled={[e.EnumCapturedResultItemType.CRIT_BARCODE]:!1,[e.EnumCapturedResultItemType.CRIT_TEXT_LINE]:!0,[e.EnumCapturedResultItemType.CRIT_DETECTED_QUAD]:!0,[e.EnumCapturedResultItemType.CRIT_NORMALIZED_IMAGE]:!1},this.duplicateFilterEnabled={[e.EnumCapturedResultItemType.CRIT_BARCODE]:!1,[e.EnumCapturedResultItemType.CRIT_TEXT_LINE]:!1,[e.EnumCapturedResultItemType.CRIT_DETECTED_QUAD]:!1,[e.EnumCapturedResultItemType.CRIT_NORMALIZED_IMAGE]:!1},this.duplicateForgetTime={[e.EnumCapturedResultItemType.CRIT_BARCODE]:3e3,[e.EnumCapturedResultItemType.CRIT_TEXT_LINE]:3e3,[e.EnumCapturedResultItemType.CRIT_DETECTED_QUAD]:3e3,[e.EnumCapturedResultItemType.CRIT_NORMALIZED_IMAGE]:3e3},this.latestOverlappingEnabled={[e.EnumCapturedResultItemType.CRIT_BARCODE]:!1,[e.EnumCapturedResultItemType.CRIT_TEXT_LINE]:!1,[e.EnumCapturedResultItemType.CRIT_DETECTED_QUAD]:!1,[e.EnumCapturedResultItemType.CRIT_NORMALIZED_IMAGE]:!1},this.maxOverlappingFrames={[e.EnumCapturedResultItemType.CRIT_BARCODE]:5,[e.EnumCapturedResultItemType.CRIT_TEXT_LINE]:5,[e.EnumCapturedResultItemType.CRIT_DETECTED_QUAD]:5,[e.EnumCapturedResultItemType.CRIT_NORMALIZED_IMAGE]:5},this.overlapSet=[],this.stabilityCount=0,this.crossVerificationFrames=5,u.set(this,new Map),p.set(this,new Map),h.set(this,new Map),f.set(this,new Map),m.set(this,new Map)}_dynamsoft(){c(this,u,"f").forEach(((t,e)=>{P(e,this.verificationEnabled,t)})),c(this,p,"f").forEach(((t,e)=>{P(e,this.duplicateFilterEnabled,t)})),c(this,h,"f").forEach(((t,e)=>{P(e,this.duplicateForgetTime,t)})),c(this,f,"f").forEach(((t,e)=>{P(e,this.latestOverlappingEnabled,t)})),c(this,m,"f").forEach(((t,e)=>{P(e,this.maxOverlappingFrames,t)}))}enableResultCrossVerification(t,e){N(t)&&c(this,u,"f").set(t,e)}isResultCrossVerificationEnabled(t){return!!N(t)&&V(t,this.verificationEnabled)}enableResultDeduplication(t,e){N(t)&&(e&&this.enableLatestOverlapping(t,!1),c(this,p,"f").set(t,e))}isResultDeduplicationEnabled(t){return!!N(t)&&V(t,this.duplicateFilterEnabled)}setDuplicateForgetTime(t,e){N(t)&&(e>18e4&&(e=18e4),e<0&&(e=0),c(this,h,"f").set(t,e))}getDuplicateForgetTime(t){return N(t)?V(t,this.duplicateForgetTime):-1}setMaxOverlappingFrames(t,e){N(t)&&c(this,m,"f").set(t,e)}getMaxOverlappingFrames(t){return N(t)?V(t,this.maxOverlappingFrames):-1}enableLatestOverlapping(t,e){N(t)&&(e&&this.enableResultDeduplication(t,!1),c(this,f,"f").set(t,e))}isLatestOverlappingEnabled(t){return!!N(t)&&V(t,this.latestOverlappingEnabled)}getFilteredResultItemTypes(){let t=0;const i=[e.EnumCapturedResultItemType.CRIT_BARCODE,e.EnumCapturedResultItemType.CRIT_TEXT_LINE,e.EnumCapturedResultItemType.CRIT_DETECTED_QUAD,e.EnumCapturedResultItemType.CRIT_NORMALIZED_IMAGE];for(let e=0;e{if(1!==t.type){const e=(BigInt(t.format)&BigInt(L.BF_ONED))!=BigInt(0)||(BigInt(t.format)&BigInt(L.BF_GS1_DATABAR))!=BigInt(0);return new F(c,e?1:2,e,t)}})).filter(Boolean);if(this.overlapSet.length>0){const t=new Array(u).fill(new Array(this.overlapSet.length).fill(1));let e=0;for(;e-1!==t)).length;s>g&&(g=s,y=n,d.x=i.x,d.y=i.y)}}if(0===g){for(let e=0;e-1!=t)).length}let i=this.overlapSet.length<=b?g>=M:g>=O;if(!i&&a&&h>0){let t=0;for(let e=0;e=_:t>=B}i||(this.overlapSet=[])}if(0===this.overlapSet.length)this.stabilityCount=0,t.items.forEach(((t,e)=>{if(1!==t.type){const i=Object.assign({},t),n=(BigInt(t.format)&BigInt(L.BF_ONED))!=BigInt(0)||(BigInt(t.format)&BigInt(L.BF_GS1_DATABAR))!=BigInt(0),s=t.confidencew||Math.abs(d.y)>w)&&(e=!1):e=!1;for(let i=0;i0){for(let t=0;t!(t.overlapCount+this.stabilityCount<=0&&t.crossVerificationFrame<=0)))}m.sort(((t,e)=>e-t)).forEach(((e,i)=>{t.items.splice(e,1)})),f.forEach((e=>{t.items.push(Object.assign(Object.assign({},e),{overlapped:!0}))}))}}onDecodedBarcodesReceived(t){this.latestOverlappingFilter(t),W(this,t.items,e.EnumCapturedResultItemType.CRIT_BARCODE)}onRecognizedTextLinesReceived(t){W(this,t.items,e.EnumCapturedResultItemType.CRIT_TEXT_LINE)}onDetectedQuadsReceived(t){W(this,t.items,e.EnumCapturedResultItemType.CRIT_DETECTED_QUAD)}onNormalizedImagesReceived(t){W(this,t.items,e.EnumCapturedResultItemType.CRIT_NORMALIZED_IMAGE)}},t.UtilityModule=class{static getVersion(){return`1.4.32(Worker: ${e.innerVersions.utility&&e.innerVersions.utility.worker||"Not Loaded"}, Wasm: ${e.innerVersions.utility&&e.innerVersions.utility.wasm||"Not Loaded"})`}}})); diff --git a/dist/dynamsoft-utility@1.4.32/dist/utility.worker.js b/dist/dynamsoft-utility@1.4.32/dist/utility.worker.js new file mode 100644 index 0000000..62c5058 --- /dev/null +++ b/dist/dynamsoft-utility@1.4.32/dist/utility.worker.js @@ -0,0 +1,11 @@ +/*! + * Dynamsoft JavaScript Library + * @product Dynamsoft Utility JS Edition + * @website https://www.dynamsoft.com + * @copyright Copyright 2024, Dynamsoft Corporation + * @author Dynamsoft + * @version 1.4.32 + * @fileoverview Dynamsoft JavaScript Library for Utility + * More info DU JS: https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/utility-module.html + */ +!function(){"use strict";self.utilityWorkerVersion="1.4.32",Object.assign(mapController,{utility_drawOnImage:async(e,t)=>{let s;try{let a=wasmImports.emscripten_bind_Create_CImageData(e.dsImage.bytes.length,setBufferIntoWasm(e.dsImage.bytes,0),e.dsImage.width,e.dsImage.height,e.dsImage.stride,e.dsImage.format,0);const r=e.type.charAt(0).toUpperCase()+e.type.slice(1);ep(),s=JSON.parse(UTF8ToString(wasmImports[`emscripten_bind_UtilityWasm_DrawOnImage${r}_5`](a,es(JSON.stringify(e.drawingItem)),e.drawingItem.length,e.color,e.thickness)));let n=s.bytes;n&&(n=new Uint8Array(new Uint8Array(HEAP8.buffer,n.ptr,n.length)),s.bytes=n),wasmImports.emscripten_bind_Destory_CImageData(a),handleTaskRes(t,{success:!0,image:s})}catch(e){return console.log(e),void handleTaskErr(t,e)}}})}(); diff --git a/package.json b/package.json index 5de9810..6ab8f7b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dynamsoft-barcode-reader-bundle", - "version": "10.4.3100", + "version": "10.5.3000", "description": "Dynamsoft Barcode Reader JS is a recognition SDK which enables you to embed barcode reading functionality in your web, desktop, and mobile applications. With a few lines of JavaScript code, you can develop a robust application to scan a linear barcode, QR Code, DaraMatrix, PDF417, and Aztec Code.", "main": "dist/dbr.bundle.js", "module": "dist/dbr.no-content-bundle.esm.js", @@ -22,12 +22,14 @@ "LEGAL.txt", "LICENSE", "samples.url", - "API Reference.url" + "API_Reference_BarcodeScanner.url", + "API_Reference_Foundational.url" ], "scripts": { "build": "rollup -c --environment BUILD:production", + "build-dev": "rollup -c --environment BUILD:development", "test": "echo \"Error: no test specified\" && exit 1", - "update:readme": "updateReadme --package=dynamsoft-barcode-reader-bundle --version=latest --branch=preview --html", + "update:readme": "updateReadme --package=dynamsoft-barcode-reader-bundle --version=latest --branch=preview --html --rtu", "updateLink:npm": "updateLink --source=npm", "updateLink:zip": "updateLink --source=zip", "updateLink:github": "updateLink --source=github", @@ -66,12 +68,13 @@ "tag": "latest" }, "devDependencies": { - "@dynamsoft/rd2-scripts": "^0.1.36", + "@dynamsoft/rd2-scripts": "^0.1.38", "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-replace": "^5.0.5", "@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-typescript": "^11.1.6", - "@scannerproxy/curscript-path": "^2.0.1", + "@scannerproxy/curscript-path": "^2.0.6", + "mutable-promise": "^1.1.15", "rollup": "^3.29.3", "rollup-plugin-dts": "^6.1.0", "tslib": "^2.6.2", diff --git a/samples.url b/samples.url index 7ef97fa..ef659ac 100644 --- a/samples.url +++ b/samples.url @@ -1,2 +1,2 @@ [InternetShortcut] -URL=https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/v10.4.31 \ No newline at end of file +URL=https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/v10.5.30 \ No newline at end of file From b29b867df903d41c87422ef62be2b9fbf541ca6d Mon Sep 17 00:00:00 2001 From: SHEN <62587615+Shen-wb@users.noreply.github.com> Date: Thu, 24 Apr 2025 15:14:18 +0800 Subject: [PATCH 2/2] Delete API Reference.url --- API Reference.url | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 API Reference.url diff --git a/API Reference.url b/API Reference.url deleted file mode 100644 index f0d5e02..0000000 --- a/API Reference.url +++ /dev/null @@ -1,2 +0,0 @@ -[InternetShortcut] -URL=https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/api-reference/index.html \ No newline at end of file

)crWOHW#R&4Ad@M|EgK{2Z84Wcu$+c&)-d=mAx~}5>h;44UhWMu|%q(WcCzH{A16PhS4K<=K4upz`J;@vJaP;1kzNF?px7M>Tm?(NP%il&>+@(> z1|xPDDfytrFS#D>-2lTmP{F3GkhTbo+*WMy^q*f)JTO&H{yh<^#s2{Oew$BiSJS8>xa5_Reqe_mH%>*bbjr*KabRSI;F` z<99K0VVz<-;9A#j^1GTx4{{`tHa8}ckDR4EFg?8Un>=2&8J5A?49h@UpOi}ko`>wx zOLB;XfK*&UtIhZt{#nB39-0q7VblVCf)p3>!UH2!av3-AR)WHWjnUgJG)Cxcv1W18 zyf>=n;vz_eMV!nDT{)40PKQT+rpL8Bm;?zd1ZMSOA!Iwshbwr1SqUseTs&oc<2Sj- z`U-zQU-?bGx1P_eue|b`d>6|o973pvM&nqU3<9i8Mv+<4_&(KikT_XFLTlCnkk|zz zSilStEMRjXVawO)KtjuwhlEXDLDabJg&+aHVUU=@uxS7i@EfrfCc4UR@{y)SeYd^y z>))sConJ#VtWu1`#L1^Hqc>W>!2GyT$d*m0WOjXWy($958A@UJTbXp`PhE~DTz+L` ziCI!dR)d~8nyWMgMwrPhA}T>4#@URMTgku9gXF_QhNggJBpZ6Iw;63$C$P7_Ny4IKtC2LtXrMNcwzf1) z2A>elwZt7=&r?fK8g~xFh{jHlQ%Ogxb|xJmCx0EYZRo18KC?5eX0*8shj?Yv0(sk&M`(Dx!p9#V3iGyW-gt(1!Yi&RVu9Gq9gNZOd8>=L+;s#rFW znRo;lDB@TdFw?YJU#hcItdLiyjBcRTT=Z`$jDb&L`D@Q0N#+y%= z=?e@c(uwVMSQiOc()R%@m~Idb4onI{q7ms5`0dCsL;u+Bcrx{m>yE@C-yP8?KZgh| z&>cwByzW4qe0RP%61Fuu;_YCJjgy_j-NnY;F%|>d9cznmcePV;cQv?#dEDJUSz#Gx zgK=nXoJZ$Had$(-%zW<7x|5cl`~j7UyJH!GlbFxlK~v!F>W;g6qQ~8#JW2kv?@X%`InZBNDB#g4lJ_~P#3LGCUtxjXg8J}<=Gxq*7I++8_%s?uQG zW}&e|4Gp-v!*#g3hPbX+o_xda^b5ZSf0MRuOHk3@-R=)@A)<3b*FS+j18 z-b&CAP0OT$;(hu#9!=?wqbIe)PnS?TP&eL6LBGx;35nw|@Fl-tZBa8&45~X1`tIzr z?mXbT!?Bms>&^qdJ7h1rLy7ad^WbTBXU|LN&I8sRjPV&Pe#M~GwNUcPuUJ>>>@4iF z#*PJ&F?%L*WA`-b$S$Uv2t+D%sm(tm1WZI~)JLbD{#JY3T zcjw6Ib_ce>xs}9d?L$r|%AmnbYeIY@2n5>}7W- zaejApopyJ2zm)FmRChEEyIHGYDG?204IIC2;P%=pza|waC=VVGb&PZ)}BUhXBUFo>}kX8qb~(+ z&j2@IaU@1Yv~C^u-8!mv!3rO-?j4I+JxF&{>G)E*k$o#%lJS5|)(j9vHV@*PSD^BA=n`G1=u|LpB*B*Z!beSW30@O-ozRm6VyXAJ_Zv$4+>-cA_q z*#>7%eN&9H)_MUaO)1(ma${rt8HMmW*E|!xtc2$9yrd zZ7Xwf#Kc6CsagMo1rigvUIK|Q72hOH)`DW9(iBrYF;U9=SQ~=vK{3&-iXY%CmKX$-D|`|kfEAS_@u6+rEHA*jz|LxzkuhU0K& z^>jj~{!GYt+FP*j@fm`^Pw8d}N^T-}gdnCSu%48A6kYnP9eX!X0IZ)p;Jgqp!F+J~ z6DP3^(`gMGRu~t`Sr_b!l0RE79VPm9mHRO5To?QXVXp2`*$?ZNy*P^}^#_(HY4T~W z?{^0*&PVwNtqSB)J#XpYo(#g9_YkLD>XuHW?lsLQ6%|jg@R6T!z9^WXCYApn2*SRo z$-ii{BQ6$_7JH@{Epm4mJt#^b^@W@%lTLfb$xXnmW=B?~j35`1;7!1=&f%w}@Vb-P zvWRoIZw&bFC#1y9!gQH?V{?E{obEgVOwEO(DCLuwJb-VJskbt6SrmT>X`y{fuBaZjT7rr&h)yK}dKKS}b zWi=R!s`{*Um8@Fyjk9y&kbwgi1|HkZ&fi_UEI@T%#USx!g&>2T=- z0s*5uBfMt(QAGh+}<;uI>AitD2NDJjPe0hx*Q{Gr~qvqK4 zIxlPXBD94AwYY{Ii{7K3t#*>OOP{75=cMa4tqg+n_K=MOgy%^-#NCV!u5ISOBZh9_ zk4mQ)rVX&m1qXeF_d3`75s$Seu3i#5i{ z=g-pdQNzp-NXB6JvRo5qYRk35LY%2B%qVQ{%(4<&5Ks5DLX&ln&%Nv|J@n)8>5<)v{%Gg zOd`;Zb2Vj7Gm(QEc(~t($+)wmPqq=TW-9RGcEYd#&bUqWO^5NUI`awtN>tun4j@U z*%}Z)s$LU_RjIRN&}(akF7iaKe*3p#iPalzU6Op;Hp*6yR_POL3|KR>flDhFGY_)NFGX(GTKl_0Ehm!Mg*9rM74YNPi1 zaTHhA^~vu~3z{5nh6>U64eo8sJyI8$xHqi6loEv4&kyqiLooiHu$z%)bnU7IHUCn@&?~#2QWQCYF>a5EPTn- z3aw5`aXk>NFYi&NVA}WQs%^@QL37b&hG%-28UVA@Rq#O=g zFt_qClL~89D4L;KnjE`S*#ub}uMih_HR0Mp?>y$4TkcPT1D?wN$(H+Bv#3OSwYq9i z^U;81P$;@ZR4s00;Ble81B~H5M7;Mlu|FNUH}60jgWw&bY3ETbiTHjhaLi=S?loq& zMJqkJx*Xi-=wXsZSyhy{3T7rA+%gi`8>adM#iSAX3 zLvPsK`EbMy(9xaHR?ZqY(kgT>jzAKlZLt^`Gpk|&7Db5F1859jS11?o>*AVpj5PVx z6$O-tsCX-GpmLaG9k#FCn#xdD(B-5n`>L!Ao)by_utO1m<4vQAErK`YL!(+bC}(I? z1PqTa>badT#*DpmY0@t0@8-C#2Ja5IgM&Gv@lY{T*!?s(K)+%%4Yuy5;}7jF`3`)O zzou_L9TNaU~k8L+-Lc&>=#v+JNBVdmnfWeWPT@|VM zZ<^kgx3Uo-`C$#5HEazMCJ8U#}&u89ObEnZr0u}3XbWW<3l>k zQbF5w){fC&_8pHR6?{_4HMZ7>TjmCR_bUBb))J2VYJ*b5dDi>)1 z^6-3C4Wz#SCtxh3Hh4lpLOLeQ8pT)}5WwC(e*&z7cA^5DJugNQ3A*gxkyvCYkT);W zF+922ng8~pgJO;U_E+o0koINCYsp83$h-z7F$N{r>Oor(MFeRdbh+l53Fyy5kQ+)P z9n9u4;zKUa658QJy;QZ9MRhz4Y=1#%rN&X0tr(C?6MSeBGmX9c&1B`Uj$M@~mb0OL zgqLwsn>1p)py+Dgra=mmvdz}RkKpym9j4+y$M3Q_`%QDhHOIsl1*@qWw9KLZ7b>dt zm5S=vo!v?T_GJvc9`Pxui_iz^qVZY%>Q_hbPV*vpay32F=%sOq3E2Ml;U?q}mUYg@5%Or^WN`J2kV9B2 z#8Aup-@(;XB^fe_J*!G5mn$@ zm>H->i$NA8>5r?6WV90K1#_`hd?GTFOT6MRyXo&`&@J!WC1-wXhuHkUFeqJae%096 zumJW1A9l=QBN|Nmo;#BY&NSQ@R5K5TcIcu>h!<;ziZP;rw`~y(v;YtdM-Z$PF>sX! zZ(6{(t5v6HLER3t@!5lgkOvE`6}ZdVAT?ZFp~`4RRT(ynuG^5U0+TfSue6+R8&n9j zaauw273}7k0?Kf%H!MDf^eptPo(UN+q`D1fIOeBD%q1;A)YQ3@EC3C}4C0ri(dVg# zlOQQr(1m1jBXtkL8H7`ZMEv5Ri3;>uVp`qQ8$xiG^3E+isrOgoaUq3zJ3xr}3aZ71 zP_GP*hL%&MOifZw;Q{uj7&a{_L&d-|p^NUjJ%k9-rv_h4QNm=ZWs40DXmVc8ZNh#e zBJns4`lC{?iUG*IB6`=&+Td_i4TDoTd0~l=>Ikn}&ch6=$5t&L>`DmGK>L>5qG`=t+KPOXR27Yon;T4OA(8I4GZcb|Su;C)m{UEY#9UK@ zSlDC+=GRexP_3<+&>CztYf=O$fO?oZ(KWpyzgAnr>NXJ4@2t(ZQx;T}%5hU8|2SOL z#hsiE(0$OG6HUX~5E^Eo`t!qtjlcD_8W+1!nalSo*gz^BY)YV`s&I2mBzh1w)=2|o zE%`xt5$+G>T!d?mpBh{}1eBrwxYPOTo+knXY+Jf_Rnp6B;LcGn1dKn>;}=Xw$D+5( zJ(?^!9|$3Ep*E>3g0p9eh-}wNQbZ`{e34w%-IQsQ5sFM{gXOIri#DhBG5K-}a~+M4 z$r*7mtF6Y)fhcTvW13j0d{W4(%dFN zd4OHwhd;osa>#}H%C=(wKNM61MXY!cl8e&pXuS@wOVZ*1yRa|$K86>npR#G%fJ*>Y zS?e@aTHlSqRuc%gO#>Vs;@8(aE5 zs1k2bwRmKY7j(4X;BiVv3*Y~j?P$RuD$Fx9`;nuCe?g8GUc%78Hm1UIPEzO$I^!yd z*(}1=7!^?b8pS&w7^EK)39DIjS}woNzZv>An)BhWv}$;!&W*D?=f+l%+JI_ zq17f5sr5yB3Www?mt_h9!Le8iBByX7$AXXnPQdax(G{kpmTf!x_tLUW@$6~YIJ080 z94f6YcR#8)j7d3^YIn7BtQJ3vXz}!<_U(FV)0H#+K1l65eURFB+2;g}QC0g4Usd~K zJbSf2>|-BPtegyRwftViQTw#wxG8=QPu03x@w!6(co}$r(J#iduT2I_Z57XRmQy~B z;vh>lSJyV2;!l7mFmU8|dl|JP8c!G5rSkml#v)eN$`^Kz5?jW5%;h=J_{%P%>yPGV zT@u)T(#xMM5q(7a%Qq^t**2z^!s4-go{wOBvN~OTzrL(Wmx7auUFu_}KjF(czGeE6 zNAuM;q-UjPP3LE&t8cuS%TUi213seG-KdZ&S?&*2#)`6JzN|umbS1AmWy!14vu?N< zbCl(`z$zAD)-tK7$=+U=nUI0uGmz<~U@ytoB|qRBcS4TQJwC#fI{X9W*j7=q82`gQ z$oQk~wOGa0!C`=J6&g%&a}xAzj9hcG8tn z-geRzS_AN9ttFz9j%Wp8dklt(|ChjfBd1CmRmOFRV|_@bh|iXpbh5+-Zjt@A&3r>Y zi}lkerrYrB>9WorHQe_81}8+o+v>bxEXC^@9&Apepd*pm+2+APZ9VM3@|p}(Wp&FU zx3yp!UHZxnnhMaa00kI>M-&U6erm<>yKK7(aGNaSY8!!M`F*E*$_=2um)_XwTT72L zw@E~eV{}{(Kq1)0e&ddPCZ~C(0B;oVv#sQvs0PIy+eW>z&yuWU#X9|Nf}8I-9q~BuhZ2N&|bZoDI^fCi+y)R8x%H;Ie za@bCzO17Ow!$prh4s}M755JOneCcbg%C+F^28qN^+#S}|nhB|?*i%>@CY|^<)Q0R# zjpiK}>Tvm%ESOL^@wrpJbfBzUD4X!G>2zk=x+pj+#nlA%3Ks>diO0TT6%XW1J9{=l zxDHX^PD2tk%q~RVqB1ZY}_&V@1c#m`k}Rd5-159GOE>7{jZFO@ZH3 zIyB)HgDB71Ep4W$388V~1!d%h9ByJWf_CB%jf`QVeCd_?OBJ^<`AFaCbhK zgiV5W8XolRfL}=)2aShTKa>$Rbw`+o2PiX~EZ1L{H_Ru}WrzvX#y<=>mMJO5aU=!i zbCQB6T2@Ms=NNEIrZ71eY%J6uWR)pQ&4qXGMg1mY<(i#iR*RTfx4GKr@}!LM0I+KT z=CIf#(T?qapN{v{*n^gb6{^Hr24KOu*bj=wOHgPSZP+MxivEEWeQ@A<2jH~;D7Gsp z#?<8y16oTu7Zld8P{YVz4h*04loH!^cu?F4C~Pz67L;~IWVk;J)wfM8Ce~Xu;IM{x z0_3L-%GvPkB)dTbI1*54>d0iKi_OD$91b{Qms<}xqCfn>l{V4PL2rfY*X6F-K9D_0 zvXy?qT^q8I9y?NPYMT)?TL>#eS|SPz85E`(L$2+lbdeAfel|##bI~os#Xnj8h-Q!I z>f8QtS}Dv}nyv&KVx`qB=nCp_@;S6doy{$~@Xo04RSoNX7P?uDF6N410GdVW8tbJ6 zH3#VOoovbQcyBIMbI~e%;V9l~qvT3!Pz!^Mez#*N&cgv~CwK->!Kgr%O~I|QWDo=0 zeYbwD9DQ@f%Fsd4R?Mv9prr3l4vCu$waz^gCchdb*Xu(HY}kdqZ!Kj(Zl7d27vF&U zytfX3NqP|VB^xvx1%ee@7rfdrVD!DnED}@Ub-_rsT!ZfZ>=szsx-$e6)^tQ@Ydgco za|)weu@2mQfDkyu(;_7X@6sEw_xV_G7P#)w8-#4Hk7ZILo=p4L2Yf740g-ke_7Y&g zuAzzKS2W)0Ay_Oi1CO!-Sa|hla&WVKKnH+Gp4?G{x}$+gT19;;WG&{p@%VN*z-yxt@;hf8S6RM%P*WpOW!&-ivo?{LwyHd2X7ZoTXAl|)`TE4)PWD!^kUyaFSZri zpz@e)1`ynW9akBcKr#hJP)wkMqZhbf^93SkiNFHwc)R9Dv5onm6;ZnkLu-Rp1_9C> zj?G_T(`HeflnuIBcZQRO!6WJ7{j7mAw%F)2%m41k~{h_J+JoI-F1izX{= zw-RyRk&E5Mn~)Py+}5!WhK6^Y^k9}rheVfS$tvm>;LfONp)`WRP|aYpjpp3=F!EP3fllHDP>k`V&C4S;j9)lPZ2X+hnVR(Z=Xj zadC}z>kN$;&`c|Rb{0tF=8E}_#Q%@K>>8gtSr%&&JrhhOH$X6AGkV|DTQz-F8@80= z5!<=8P|0C|=!vCn<1EDvZ-6{+*oN02CW4;RTAc94l8==zoZ{s?|Dp%lJA)!BF$Ycm zL{n$)hZ_ZdOuwatSiEHg_WdGijW>^G=c{nGg;-T|Kr_35=Tp3|<%#1$ZV+r2_`efT zE)HSSn)93nTU)ne>mJEAQsmeb+4|V1c)FyBw7=JuU_Rq2kDh370EI~+Gkny3B)Kg= zyEypaWFmWIdUo-k0vq_eV`w5hdm?)oLEQh4PU|%YR~&9n(Ap);Iry|Ml6)=NuSk4< z_A1CW&eD7w)PuNJQ$2?xZp(v-OvtW-A~^&?j0xn8!WgwR;4hDt6Z03~(UOVmHMDXO zW4K6UUAXviXh@DIH%&kE!UhqGiC)&|3&Q$7|H9?S9Nj|u0%;|?R1Lt0K8&W2L>Pdx zk^`F|6fEPAhcS{us(J2hWXvLNos^3pp3`j6YCTzO&Y0TiDD~I@O#*T^Vqcyj>l>!{ z58o$G5|+*fKPE0t7L)OekHrfmW-2Vf`s%c*F`g%}B)BMeKyhf)_VSdxG_5C<;aSCK z6em90DS{+XPuCS-3%{y2mSR`+qU-I|D}AuVPU%U#Cn=-U<~~bU^&VGT$h=qiK<$X0 zq@C51%ATpG>*4>DnDeYe>bbAZ!IBK4wP>6H8c9bg_JzswC&5)>c|{ia-BtIB-sR~9 z=~^V9+*_U|cVlE8X?2kTc>E(C&fN;vL&SI=K zxOe8SdD<|MD|mhQ7vK{3#4mRo>NcNrx#5~H>-+-LO&-~NW=G9WUn6p%_3jE-OcWtTM?PwuBSvZ|(b1nkys z&1*2%a&qL z&hm!p=zZLCdB)?K1Tzp5$TQBz{sKKfuwNgx?C#{RH875kbJOc<)0N55NXWrSYzT>l zO=u;Z1bIgGr?0)!y)ix3_4E#el6zb zC(Ak{u7FxrubJ+2Afm8$S;Rl{Yn!fg_8!zWl7}*VQ@yY#m{p^K6%D2-$xnOsO}kxq z;pcKgb@Agrw)-8U@)GozwsQ8TaoJKqumsAJZ2=_@R4`Ku{)2Dg822E_VpZ(Gm@Exi)dfWw|zK!E2uvPdD&%BT`IwUjw$RPMQ(KW~#JLQULL{B>}P#H#|+8=<80+5JOD1Yc1<(PUvLI7u3&+u4kKmpL|G&3WubM2de zRAz&CN^hj&ib%LF)oLNOac7jPtv=THhMB@E

W$Fg?N@x^3lYiG*h#ta>Sb7uK>{|-g>qe9K~`5N(~ zqBH`hIWTBbkw6XG71|~VB!FhB1h$PDoq<#>Mc4<0sGp_zAF-@GmhhbVP+o34iw!p~~1o1#2uD$*-41*Gr;g8Ki60 zUf-RE`oG3elC861MZ5w-C5{5-_i)kQ-nTMxG7 zv!3AT?lS;|S6=Zpa5Pn#$N$@L+$=o)F@}@1OQdC$PvNEpvC-B3yU)b#&2VHaJDRBo z`BGv{35P7`Cie` zw1%p_K4s-~N+5pL!0m!ENZp6PPknaEY7hd+L~kh*Ojt{xxkubrvAPAHw=DwLPU$QKWVwYYdt6#4`HzMzP;0z8T?A+2}@FhaVO{ zNNV_eO7-+aEmgxB1@}QBr4sas4ExqAY+0gO0e*3t;eND&UA4%?Rs;SOq_ib$Z)~+* z7G+VH`KBVXu5yoj8OIjk)~#zAVZjCN!jw9IT7E(rM4S$}9=|+_UKN1?3N30L z9EExmus;Yyz-M~{zyg1m3;_?VVCA?Kvf1GaEZC6N^e)UpQ@HZL455nfFi&;x^R_Tk zqYN+wUk4d0J{s{4N2}e1a+#207!n2og*w+jrZW4`_SG9)dk+GMOUjzACFyCPoq#LL zA0}xBDo{%A7jC)|oC4Xvm=}2O^kV*|E2RQ>NkX7FFELB?a;*E3gzif!)yu5=l7#L{ z>^Qv~?!F|U`?5d0blsOEbYBjHm(A`=61p#GW{NFA9fZE+OQmPg%hTqmXq%8~uZlLR z(8QAGiDM{sUexx(8;aY0?>4M2?g!XLd;R)Jjv_DWgl8#P9_&Z+wR#v!o(%jumTXO? z)nFwh%i6N>QMEb3i{axJMS&vW+3_5R5T2Vn2fXbW{w`6qXMq7fTd?F3Mq07i3Su0Jz5`K96;F0RJf^?wNMHe-ogd7a!jDxTe_!i ztThdDR7mClFZhw&2ZlpObRTG$l@e`{=a`(H4e>k1RGlTQQWAiyB8LRKdwgK^1)m;n zZ`JhAkpo6~jvT|49EW!gDXiA_;sCNV5DB8<5AmCBy!+NGd}&yX#)C|;>^+`ETN zTK1J-SLAx}v0EI#wFVmZ4}A9>mnNow3@5`mpjcp6h{q9r+6JS69~5>)s%1X{?26|X zAG?JCJ40r%Kks{+ewJF>8BRc1@TeWG0NmtL+L3-A!|q7mC+vz;%YNi!t`{G>1p!<` zW}*N3!)M$lzg=*-_Eu^X+3-I%}kx_92eLe)~0So>M4{*HEcSw-wd{nyWV{38u(JHsjT z1tx{Ro88?=MeH*FwcCQB^7|ol!xf<$@t?c%%uj`u`~B$bhAL7w>@T})%Y(m9Qs*jC zH{_qV=;9f_M?%N2wA*nz|Ffq)c*oxB>r8ap{?c>q{7Ntn_6E0G8B6`epE~_(!J-NZ zT}TA|zWqq1a_G%2M>5u_&-Ys{eD>L3godJ2sMUAm_8K*uo3hf++RXsM02}dN|K!ux z2fIBKr9y)dvAx|M4kS53hx>Kybjw+>+YPYg{+_K@Tpxxyp{Q;fmOUH!j3j<&L%6ng zV=fzD3;gBZ`TSRd(%ow`&HOj7I%oRisKpBYElJw;+pd4=(*e-EM$(0T^QLP*yO&8i z>VNQ|)6Wi#zt>3W{MB18|G{2n)5ZSjNB;4?AW(aarepqzk3M#F5dFQzrbGVMAKQ9u zP*Qu1rsICo=FbjK8u@#JP3QXiPQB&k&=Kx6k`DV{{@|YX2iswXP_ zMyL9NY8#|Rj`AZ?BcNkS#gZ6x7ti+fnBR8Z=395LOTz&-KvM`!^MbH zallw3jQGnw_lw5^6%DX}btsM;D((mzxyALlG^g`Vp8aE@WQ2=-qMwzaw64mWWu+bI zd!I{XF7>zk<0c8}zYpx5x?FG^e`w!i5?(KVxbZ!6C(`P)(JOq5Q7uasxf9RWEy?+PS;GT-?a(~Os z4?I+{90Q2qEbU2Ec2seinH`APRdANK;s7_|&-EYJ_Kz0^sSO!Sv2;r$lPQ_vkmi+s zpXbtf&fmBB6PE|I5|pCRvRh(T?S+%faQHr#+FRhi^qK4COsaTFkTSP}tS7yuNBWtC z=4(Bd<{S2(zu}3igIc!2erqx=_CNW-9jAwWWABhL^Cy2`OU0xKqS8hBg;Q~<|HQ37 z`DUf_{jJG3=D+sLrO)n7GPeCC*WWQ=Y3{m}XE51rlKq2su}`6J)Cr!o-yt=VzZ|McERF0Tw(_LPo=EyVI3 zCSWb1OB2QsdW(xGAR~djw>{#SdseWpy|-6Zv%M!EpKuMmC+t8Mdu6!Vd-k6x-pljA zd+n{(YW-mD|36jyV$WGmnJTs}%eo!?ght%nvyyHI-N=6GE#MP9z4$Y4Q|5%bz)!OA z5!?H6!U^^({l1lc`Ncs$-F)aZ~Q-)pk zSfD`$!^+PvraIF1S4@x>zcm&F@QjNr{6>C((^}m*E%n#t1ItHcZ z4wU$>DH~HJXoZF~gkfbZRJv9W2E4DfecE&tFkd1&@e6nrQg+lV<@0uTm(wLtFqw&8YbAF^t;+` zOquN5Q`s<Ub6CLyepVwD|b1={VAMSyX1$(=F{xn=rDX>yX1^X9B z!_i8Cl~O9$zd#xeRSK+>Qo;TO(r~;|V5O7__Aiiz^D6~bN~vJ~0%@343ape;!Ttr( z&{Ybolv2U|1=4VFrNBxl73^Oi4d+%0tdvs0{sq!-q*7p|lnVAQkcRC_ft6A!*uOv; zF87yy>xaJ#ZqNXWg#L)&;|F9t9ktUTmE|6*d>(2xow42A&(1eaLOsJ9<(y5PSZvLu#yZQI z`xR%rvF3^m2Uy|DTF{=5!a{6Tclw9%le4Fcwq&p^bXoUgd#@fB_NHbvSFzCAmS#Uv z>+lha_-n;VVor_FQd`#Nv(Bq|DEmJ3c+Oz7oqt$dP|xj&-Km zPv;%`^YghG?6nBI+PVdJJ8?_vCBuOPtaxSLyQElJzB%SdqOd~P_KNcqIhU3DIOfOf zfSferiT!t3ED8$RQGrFT@2+!1Dr>`7#ygV7EX>x1E}X6lke}JlUDbd<7oMO6Y1+(+ ziql)qesSECnx5P=Gx$odU+}hZdqT4$#Wo&FFKmQn9UT zlQ5ORdfH+$9<39l2rZ;#O|Kmpq}@EUK?Th-%-UBV(Yn0yuabvY)HcvgQvO8xN#j&Y zpLx?3M6A!_;8(51s|k@2Z5c))TSt(gc+Iv9KYyv#!gjN0>9KOLKS`XJ8Efom zQB=muW;mLg?*yudGvt2xQd+$zwo<0bomy1d(o)8nKS?m!9dsBmD71jy)-*1#1}hG? zpy{a6nnr8nZAtS#nY7xHYgT95Q|rolIBG-(OCzUvy&iaN3GDt0lsJ1`a{@OB3;W)wd`P+uw^Bbqtw(79@Y<9 zp3QRE$kCs^g(Z;5YY&XQ5Kzh>!xi{dn?)q5Jv z-o92lP11gmpJObvG0?VH*FjiWjVT?WfeOIQyKB2540T%VAyhpoP_+ECE^qazcVy%MsBWb?Zf9oMBVs!q5_70$7>ow65 zb@H|S#gTS<=l-p{uEw-B8+AY5H{4|hN7?S`sKZ@Ml~T_&>uMQYUZ=QT=r^X>oY*-m8s=r;W zLw8XCQQH9sYDN0U5P%>9KnTWey#h5Pm(_Gr*t=TT3X*<%?E zxDpObwH=X*`)COZ+L_B%HcPT+&Qt?{$>$_UC=HD^Ph(b8i#4LeYEFqlFiai-5ejq_5|$k9GXUWE^#!dXn=ZR`yxZp4mpan znRr&al4a18AE_#_wje|ml9Z}Sk~j_CDr7%jow*Y#j6#KxRag{ibk*Lu)*dH{BSeha zlK8{`0z$h+)bNpZ)R8nBJ2VBOWi}YmWWa4(2Ny6JOjE(!8!!s462`2#a~PjrQ>=b2 zx*JZ-J*0ameGiEY0y`tJrR^z^cL~t*p=j8gMGUqBdm{nS;eq7}9?u5ZYM70fKGtD} zeWXr1E)V*ePUmVYd4@w88z*b`c#49N2QUxW8WfGFJvtHuhb?~C2cAPOs)@BQb~d`i-`gsmu!5J+dM?iC2G`a4x6LKbnIb zVS7L6B|Cqt8Az}#ZJ^p@gcmPUdRtpRUX?o$MA2W>Z|W~rEQ?;)fD{3h1c3J zkD(sPwsQ&nuMOn*v2zSUDj8&<(;806(Rw4U=oFVNlb@?v5FG z#J2vCdvt%cS!=a4gu})Lx~txg(6Q?P3465xW%?R8kEXK=%TnY2gE-ayW=~ZYye88o7r|y*K4`T*>q|zJ4)ISX0^Qk;A9KQ z#?v_tfLn`)cFyKDw-pagyRzPai-*RC3=eZMw7ZETW5Km4R>lEC!|LVq;8@^b6V5QC zU+K@Pxztj%sY3jHY&goMA9rjL(Hq>|JL)_04V>fl-ln<#5?MujEY}(t` zyVsc1rW?lafcxAIV^@mp+X4-fg+mHfAd|1Yt zX10$`CT;3X^KBW&O~;4n;09i`^${mi=~eIBs5@sz?-hFE^pVbB;Z6VBvVNdiu`VB8 z2j0y?I-E6~4Ig4AKL-Y^;F-(oI*ioYS^s)5UMCwePTCHpVSj&gSSQP-gEgXpgF-TR zdd#?Trj7=h?nme#ABp}q-%0)(5^;J=$>J;6B67Na1LSjmf(Jl(^L zk)M|hu3`Vbp%%lj>1qZx+Jy#v;`F2BV3`*k4H4K7`mj0Lj8UZPd)*v7V+as?KX<_! z5_pXOo?y9X<6E_lBJ9s;J*p6=O8~DwYgNEwZ}R}2k|)7ymEbkjbovFJnw`QJSOOeP zD&V;63^>kaFz{w_@bXsejNZ1xaP4fP=}KWo-bK+fakd}g`V2a!-#yzP5rs^m1cgmQ zNeQCUpn)>h3=U^76%8V81o0XS0pl&7qhk}WE$rKU!-wS~XC6|HkjIWKGK3nNR%4L} zae3tQ5{ZruA=FlZkaxO7H_uFvbI#k_mlU=+%ystOJ{$pb71@VTMe-Q$$Fr_4gFfk+ z&M0lji9mlq#anE*V0>U3*5~{C+WO7`bPv;4OC7vKI`M7!n5Nu%*5@zR+XMOJVU99y zuI~()RPQ69<%fP-GRF~$iFB|ifoBrr_vM|W`gkuBIJScWGj}}Qo`kW^tKb9I_O%Yz zdSWMoXyev{5OQV1Q73gbGZf1KBcWhy2F}({O;`gu_lox>1v8AzkbxON26{TSqZ!I8 za99sQP^Qp4@O}^fmBRV3^RgM7*adwOj$FlAH9bQSi|g^o$sY*Eugd$t%Vgk9NOxb> zf7l$gqRE6MA6+KvKzRg4RskiznrsiJb6~hdO0*3-4Jl1XcP4Gr83YMaW^BwV>J>PP(WT_rxX+|kY1(KXwv>lS9>;y^9bF3gaGaxy$M3P;MSLMM{;Py>9XHaH+0ZE>Z zqLsKDT_y|3nE}a}C5k$n4HR`GYM*3Ws!HS>3_T-c$lM0JTh7;yhXL|A#wW;{^3^3% zovbYw+tQuwx7ouQ6k}VuZ%+QwY&1w4RZH4Ncr~(o&T7%DA82P0iyo;(#G3 zAFqw{@!@lnV_lh*wLt5vAzrE@SgbD!=LHXBgLDaMC3W3;z)f~A=kA7ww$zt8cfE1y zuy2Ve77t=)#5D4U&43xuBuh3T2~$J&t21R0*30#oO5)nirh!c?Lt`51gs~U$_;t?Kq!%+~Al{#*RNlsVGsGLbyZ!E> zm=`cT3U^bCUf9Tf&gpX6F!@vK_TZw6%wLY^T*T?f7J=zBfb<$!^CJ>K=(_!)+x?~RC?#xEi`Wb%H z=FDhB`P^*U7~5K-$FhF0(KK{AJA7m4ePx#RyB36!7s)BzuB^eg5KA-I_t!u}0GNG2rL)IRCH9PYI!uRFphPht*R*uVs z$6DD-18Hf;qfBA4qdwbS9z_*2>R;tJe{{h-%<6~DSrq*hFGx9BZ;uXnj}Cd?7_`tE z;Tk-)%KJvWfDc0%hs|MANbLu?ed1fR^<+piJ@!WBTzhb`c8A1c4^EDi4|AHVO83P6 z3}CG{Lyw@}pki0e>@>a7Wpmi88QT3^v9O0Am^P(FyQ8hMEE~fF(XmPlL$aJ5d|_8w zh)ZNcI^3S;rpt45-;2G-F=AVDG*utxLC1Q|s!? z%PAIJksW?`?$)&ypXM%N7wrMY&Dz-hJ4x7|oT>6&2GRH;blCJY@mqC}hGs3Lq9Z2Q z8Kcl8HLe`t{419RPkklH)9{1$_Vic4R2WXl5s+KpP z7A8IaYpd7L2Az~vBCov9(1`pz^HRd6;UX347cay|(~d0n7K9>N;dCYIjE~f=si||? z6^{qf7Q3I@6eGT7B>{Vsr=&CCyoUU51w?lb<8*ryQX1~=whUr6X-6p-PzD6FDJ$dF zDhpe{%RO9u#qnf2@C1H(-Lft#Zd^fD4-7#;_m19erEQP;>?4`gM= zPK4z!IYz?_!;G5d$bveeGwNED{b#t3ZQ)DGf(hRVt0(sZbTTS*1%DBqf`cQ;Fn6_s zBl%otR33FnbO0n{_X>%0rYg42LX)7iq+3_m&`8g^E#dM0UsI?RF z$RiF48azSs@h7z2nIw2<-)@7S;LXi|ofA-?)~4Xa0!Ym0_-$&=_)ora#~pu^rPt^6 zKZ(Xi4(%RP|It@p@=r35%Y*B0di60F%2UtwK@`~?Kcmz?#hK!TTJ3mq*~PCxW${S2 z-Qge?GV#j@Ao#-Y6hD2E|8wBD9|siryaJIQc#TTkDYTojbo0{4{%|hO|H9z&G$}>b zUN;Bh-d&2*j}cVs&mqYY#+SeT)wXS)*+ziH5j;=uXKV3%_;$}r0gU|H@M(;PSI@K* zmeEa}-})b-;%&DbL>CMvNNQySn>W*1!sRwrrFAr!AB#Dx`_)Qjxk&j!dc<9HfZfYu z8@2vOY{e^F&M+)DIMK623Pzmda2BI5e0xm@elk53;bc`g?9%`Fo}{rcJ_%W#pe0jj zOaByS3dQcs1QRTBmo_>P2&r3C|M1MloG72=I3wg0)(P6A)JQS&+pqvDz0^@w+;BLI zxr_}$G8&YmOZxj(0@+0NTKiVQi;>_%ZbOhR%04cXD{aIqh&ATJTP~%euAy@HrjbDo5N7aW?xKY70^J{5I5D0A>5Wq4P0_vD> zTP0oiX$igqetFUjCaT~j>t^c0gZfqxsSXAaIKsrh3Fs6c^Ir3?LaTxg?kLUq2m}20 z0@*Ow0eFMkLJCGb+jNY(ljE1ArvM`MHDa`gpH4-fh1nreO4eLO&FIn zv(NZ~P$?CSxT=>|+$Wpo*JO|O^MZnMt^U{LSgm!IC{U36se}cPs17 z#0=)rjh)}BZdVZ*ap+sanVWfkI15Wh5?SSgh&gjsxcM7q0GT#Ga3u3?Wq-dumur0WzU>M&hY^vC)l`%W!2pqwkFzn8r&Ng zNr$SXqz5>y-Vm^{kMO|6=!oEErr{c-X`s?_d2*C7Abm)s5>&z=97aulOzX}j(9CR% z@=+3%*{p$5o{-sAW-VBzDZZ(jMKH(&U7>L#^Q!DB$sC9g*F$aJ6XNAx3@*3kJx_F&2OApJhqK4Bsf z9fJ65N$A4pfyxM4VaC*;@T_r3@Nin$)G{rN09Bowd^b@siKq)X!OILWwP`v|^KqOc zVttshf=7s|C9AA=bw?%vuZ*Jq5i2F07bT0LK5{ZY+NRzVd9tdkWV_|71v;3+a2=*| zwh&xnKI@~XAO1;Jl%!R;@DU1HMF!O#3RUHkvA>g5F)K(VJJh3-n}?~Qim-IQ#Rk`= zoX7J(aUPGZym!}NEU2d+0%$$!3?Cr3t76pCa=tNi{u9Y+f5kyS4gKAhrqeND5D*3Z z&pqIVG7Yy>=r#JC&=Ei=DbcPJjSmMu;zAC?6%Dk)xs$8 z?*rE%T_Mg_idtOIa;J5~T<${+J3K7`LTE9e31eoMXwjFa&V3by<^E&V)Qo^UnGr@H z&cvOz$Vho=$9>J_oQ>u850VYX$8;AOwNT$fg#IhaT8BY#tX8zFbwS)6X8|MiBh!)l z+yUHKRi8T`K~cf?`WebOV3bTMf}bXS$JYovxh8v%35N3~7pNu;pGaSeVk1>s=h%ES z{W{^S4JHa(^1z|IRF8Wnm{4=LDzZ9@TYuI?pvE)87vjzlSp{7pz=Q=WQkHjuhab{K zV17cHaryAH9-a)}*5NQ{2(FC`E-O-QhS+^>nqn{Ptz`lp&fC@LfsEWGyLuD^pl_<6 z_2000?ti#!ExU}nkxn36c>JoYYmy^2Vr{X0BBYeB$Ct1b8)DlP-Jr*o;UX> z>S1a@YKWoL{+^q24vLEevz;oY(NKxeRjK>>Q~+p}008H@F*h!L3&q^`b)7diS&Z5b zIrNDRF|$uZOPvO1&X){Dqaiq_sa?QCr%%^r$?I&akf>Wu4xyEsE9kS}OK6MiO$_8c zYK?~fO?l`X#s_x3yOMyPw{>vIq-G$r8Av4<9d)d(9|~(DY`lI^bR-qU8*n6>9gtA8 z>;O*wRAn0XCorE?r63<21&a zrk;=j*juv(>dCpsmo!m#o3+@1emRTgMz4e?VwGQJ`1Sq0${?v12`H)fcK6vs>F@iu zR3D4G713lhe);}h|G>=#&(tF3SUr|WKLzIQ_S)$j z3@vdYlJyx!%fQqud_nmcsBm3vHK%zOOcyLKOS@QUiTe#F$6Kf8z5)yT1@f+`2tzou z$GtK6u3?Q6MdgrP>_lIs_CSFy&zp0UCMOnm#zhrbYN&>W)nKh?C`rU*^M{yF*fD&|erZ`VB!GcDSD?fF>^SLtxdo+asuU4CIBz?L&1+ zEd>^0QwK-rr-djaRvO_q7C1o?ng=bHtYfMr!Ps@T0265~!aBuv3~-Eb0}Y-vUc@(O z4Vb6qdYFn}eG)<4P9g~S;vOjqs3!!aZEW?^XeN$|y2V$)sx2q`uLzN{5gblzl|G%)C$>hEP!!&#a7vx1t$-6qOexDO z`=aKIh!gA3sq$uIdPI`K+BAE`yEm-PP6EbTx zXSzAo5GMBbTz&V|v1Vvg8G}l0q}xIs^O&DoLv-)O{&PPakhv()9c;PdqSl#lF|-JN z#ROf$0g@pI#M=?Hu$j!UFhpXkZPuLWTeZ-a8Qxh)^AnxTr~!y< zPpoQu#;e@}iNErZSSr;&c6+bC?Y!9E()8EIZdrg02j&`h7g&6Q2m;Ncb5)*K;uK0IPlygiodxY<4DJ^}!rhqMRRk+BspmqK- zJdJ}rIWMr72g_zr3X)5uzeS;Wx>8VB6lvfcBPDOSkEw`oDa@hjxluIGi0ZYJ85tA_ zg$SIcnJzqR;@onnuI4;|S8#*x$Gz*Xj{TR;Nd4`x`)e(-Gc-huF&zcYFGHuYr10q$ zJ)h_NU6x{yEse-)+kEoAx_JCU>SIcCBTf6qcBwRJ@&Jin9Z1m9C88 zi$%d30tW6XeQK!4GptTV5imy-N@QO27d%k>yy(xnjP|}j;EB|#4t1Dd1jg@*#Ro=^ zDeK!pk8o=BgXa)9jOm@TtiUZ=646quBnc-Vm42c}?sLPeU|%1*Cy2J2Urn5EVm4P_ z+0T5$%-Uubyr?nB&LIhiPr}j_^QpCusj9I<`cW>r3opkE3L><{IA&?+7H&L>%DU{} ze$g+CXoN29KOAWP5s|X&DS~BS4S7_z5z)DS5o%PaH0So z%5a&r>WFgMPgX@f>#D)0BU4b1s(!|nhGe1o!b71Hp&M@nNXI&8lhRziHWF85(Hi^- z+?~l_JB-OAjA#sVO@J^s2opBi8G$DZgEkk;BHkf5?v@#5Uzza)cVSTRoo(B}Yf6ps z;O5Xm@y|_viA`IdQ5m7dYR;~6J5PP%Fps-vga0gH(jm4(E6yB4ysoE_%!klMu^`TbWCuh+(0r{otUZo8&(hg%;2CcYeBll?rm9Jq~-)H`Ccp;}; zs>>UPGA#G!#s8Z@Cu8w7K>d@G)-Kano%e+1*gLs~>nk*2&Q%@*WI*|{1l$#~iiTx0 ztOA*XF)th>3p@Kzs=EXa3fd5NfIONMqQSiKBQfMxly!0(t=>?~X5P>Y4uvZ0AD13m z^c15F@;0SWQwplpA<$DVb#GANsS0OAt&0Nrtd<_=hrcL34!1I^)`XH_f%iCG!^iE_ z?&8Fv0yRZh3x$1sX15dqk%C(|G*PY7fN^nVG8LjrTM?sNwM2;v-nYZZn6PfGBd=g@ z*r5vJ%b!Hl_6992vPmM%lyA&hzAnmS>3HqY_;ToyK4#yQ>2swa zEPbxh+hzKENu{OF#|!#>n_Fpi&;Ss&s09y&wK$AroKQ4>Xc|+rYCfCX;D)fO%%XVJ z{_@(YI)k>DKnw5+Oc2q#fdYDRmRl1OD1TI+>5Rr|=BuE8Sgf4*z7>rsUCIR+W zBr6ny0TILcW%tHFX+63#dxL0cIfNW(tgE9)&D^4)kv?lC3w2%tqlRkt)iA7suj}1plSxA9X+2-v!UA>hqAbgX?7cK2$9v=Kq@In9997YH#llf zy*Yt9uL2Xh(DOn#^IaAQ4M~R9_>s4Q?oig~z$;YTC%Xq4@<>O9Y=tK1VN#U%jz^NX zDdo&;H}k4+9rV>K_fv|N#L<|HgW7d)&g-N{j6m`gw%muvh^CO|QBk(;gKf}t7q*QS z*D;eAg;G;>UesHD)#+h4LWHGzbTID?I*agsA8V>nWRf~D4>w`1Mb#l>gGu$oU0|Ut z$fqWISW2))*)2k&`VPdy+q|xC6ZegNb^i4hG!XE4!(Gs$3f-ejA_VXnVAP_yw5mpN zKJGyg4`&@B^9?3=iuqH4=04bfgL>RGAVuLfbwi16#)=DZADUlKpaAaH3z%(Kp`cQz zuv7qGBul?QS&0#3#TU+QQUntDSw+YG-iZmuXX|;#TWS>7FO_z(ND+PKBlmOs^zwi_p2)9em*)3q?tq5 zeZiE7`q^c{JFAz9s`XAk-XCl8PdgN39z;rTUtpHr=6}?v<+1`=sD+{^S^qzxqG^*Z z>l??IU|h1JU}#n!K4nf+^CgYeH?>bo(3~Nv$fA$v<*7nljDm+`LrRllBFOlO3tdtZ z$3<#j0`&Br7rH?cpazaZy`-8ZL;+x{1F-VYFHH8RsG86%t7AcrixQz9wtEUxLlj$z z`r9!x3NeL+*eE8B7*(AYYgP>jL32oMqy$@+q+#F2(8-`+)CY9`W-&upCbkB8>h-7= zCrF=S;?uRtl?7m=(cRnFTjHj`U$%8XW#58k!r>sV((UX>v#bj!6_aqQ-R5;e+_7Mi`%)V;oG=8{l} zi760f4IbbX);)zTzrdxy@3W|!&`D)It&@{(%$Rx*Q4!l5Yz;RXNrZNQ&xNQ}%w2(- z$(N;ZSKtOoihSG^K+6J^1#L~LqSP-52kwfZsJKYut|*E=xk%%#C@KcXDMgjsL4RHp zwR7$$i$aHoq9lFBrsL4SUvrK&m&|Qc_t<;p`diPQ>n~@{|5r`Dl5|D>6W47dK=`(^ zl~c6xFe>u{t)nR*9WP#}Lv>e4vC^CQD?+jIkofJ2Ox@`e6oqxqA;2 zxO@Rw`Nmig8|`mHEdOa!^_-cql#6REi|0lRQQ&?$9XXV20T5hmnhVXV&6!b8LZ7s`m~+aS*XJk$ zQo~YucLU;K0*MEXeTxy?|9dtSD})8MVT++sHL)48OfzkIWuJ%bqU03G8BNi6=+IQ_ zHR;7!FatQY)P}kEetD4qE>+LYVnVOkA+aPINHL9%Y|$E+Q$y|ze2U)44s3BSyZj<|oLDnNDLA5`eDyOT%0{QzqMrsmCi-1i1C2u-75^vW$^ za)%FWS|3wlQ?vWJdxyeg-2Jl4Bvm+oY|p0zW-!|5f^))*dYa@PvdF$Q8zvq`t9 zLjY^{Nj7$}5AE$5qG=c}xo_9Cyc}nR6~Hn!6&=23IcZ!jhKHflHk23_&PEYk(R{|q zjBE-0qNfr~X&|U&B!izxQ2LbM?QMk|=_=O$_E-?3zwY+fHr9bYRKZ{cQoA4aYRLz| zM_~h4ga%gp&Y1Ghbwf_|v8*utnLd)JgWN-7-G(-xiV;PSFz``Jx_5*=-mU-x&UD?I z>GL$KHtGJif zojNT*LS43kl_fx0H_@~O!-AI*@ipZV^hEnhMD8rG<8nH!vk7;B-(ud<*A&`kb4rMY z+;P%|auxF^^}Kw2cLUxdb6$+d7XmPAS9_IBN~V!B2(6gYYW=W3M8{~GY4wKmD4Lo? z%Q6b%f{cnxNa12Gw9!H?bSvXD3=1fdalK|*$q#EHio3;OK9mL6%njN|w8+l4W8vGm zV8Z(AQ8Z5Yy8Onz?`B&#nT=kH;`m&AGs+Bs!LZPO<|N8lI0?jrvzb1?SV$;Wxc8ut zQ57G9Q^r-`+Ps;SvfMC%_DqIxD=lo*9FEE>ks|_8seC^iKCguYiXOJ%gncng{_w>Z z0RyNDtI27fAFF9h)~el&q7ws1;N!wK!&b#K@`N``5)27bq0C+#x-39JQ|1EwjJO|b z`vIgMNnGZN#`p zTzHu4ouR9H%YqGqqsOw$H(>RQZ8P79yVOXiBz%;jqHfDF@C)d%Qj8u)-DSkDa5MQ5 z80Bx{$MI6vkq%~z{0e3w$-~H#5Jbqi8)m@IWnrhmkOKdEBt0NDX6dWgcmWsKcs>`% zgvB8NM6HF5$s^I1X(C-vH@c`@ke0FF7!n14%xF zJkp&AVR;u9#mrY9zTP~qV->iC-nHEvi-2yUNo`kHd&Y-XdOSYER+!3mV zY@jNNn~^d~yPF>2Yin=G0;P+YZ9_CefjOQ6YpT%KaGy5Ocpi01x06k~suciWcx?wj z$Mg=qHtT801FRnS|%0^Py&cD80p*IxsT={(*hIP=La&d74`FxhOg9b zy)&(YuI*0Fl`nKvOa`UvwxHThfipq}%xNtj+~;b;EM(sm6~V}gE~;$0@3H~JgK1Y18tAP4iNA7y;A5KC|*Ac*TeAu zX~-RpE@b60@sK598FlX2LWlxx_D;CQ}vRL6|e;4~ z1CwlTacgDG5_QK7!2B131a_1W%((-!02RoWQ>CGg*zJkwWK8EgEu(~ya5I~=y_tx^1!Bwo z4A$^5-O3rC$xy_4&2j>7%~ryIlx@`MOU5y|Y!4A_6GZWNLd=F8&4UpL4YGz}*v&4Y z3s%2^eV_{Ik>ETnONHOL8|JQwKE;=8-ds?UrD)yo2=zf1Eu5`xe1f^LC}QLUaojgp z%Bs@MjtSF5W`Y8>X4hC`quo~e%sz#{a%nODfu~8yJu*)*Setndi+BKnfsKG*^03@; zgSXr;PNXXvi}5@dJb8;f$%ypULk9o$#as_TxN2?U8|+Hn;zQFo!xG|UiX(guwVE@ zi$qUQ=G)4f3(6bhExcM-Tor{9kdQIz74*S{qdKGv6wTzKAs$mj8nC z=9Kd0$z-*ATFwUlSoiJ@?o`}uT5~-al5S`d> zdG{Z1RLKOV51pPe#y9Va>iTp+C(8t*T$8E3%}Vvp*o9|^sOcM#{0gpWl}lizO7T>} z`ASsFNP`@$nL?Wf1BBLf??b>_`&lab%8CfVGIl%S*0x&vC^O5OUMWen0^FWoxXc`wmLHoi&@xW zq(eHz*&=N;2QGxM$hPy**fA=$*eQi0EMMLPN2z7CDFoNn#V+X$8!wy_RvEbekh&qt z>}(tCE{fh$T+b@5XT~Ch2!+cBzm6P0d~vp>Mf`j0_bmH8(^fY}?&>*Om`0nN$Yp{= zTOUcMlFp+N^E*MXO+VM(qKsGBU!0;T7@ehRaBI*k&VTaf2l13^<8d@So}lvYu1|qU z{e@qkUY#{_$Je#E3V*;vTvSEe9P~CVuBiTSL=AJC;oO?A41R}1e~v-nPdim$3MPLx z5d~TaQ~(I@1fa0(dX1xRSZd?XxYI)Fs)@1R{MFu8r_c9l^`nla@$aJ~w5Amq&{W*K zCOUhJz_n?IMV)p_I9Es|p4gF8ou=Ph5X-iHeV(-X_4iSpIxxp*wRZ^xJpP=LPyx6d z2=(O72zAZZAXE!N!DmwmHHjj6UmAjCKQ!@^5gpdCvmuvs8>NWIKm7fZ)cQ4l?)x~w3r{Bf*;2g(M zyqK#nWEy!1Fa2V|m`bc_!U`;uUf@Kz<5XehG%v!eveW`)`1b(rn{kpIOV=Cl*J?h% zl%U-A#kXs$t80)J0mb6fcp2--RNf9PXhOfep7A~I<^z@6-%B^Jt5%b`*x}1Y`Q?4P z`7%(W$0tUO`IY9bO%kR@gfYz|H)TN@+N5Z1JFJSx9DmtVg75{Fni?K^a%#id^5W3& zIN7=l-(wBmBWjAI^bD1TPy8>RIN){>~8q|j~~R=YO^H>yl6vXfZ@dVc2T zx_PafpYm2%;? z#Uc}1gq;8ZBV3hig;_xm00!Xaw?Si<|5jrAwwp_T__TWA-7G_V26@U&!h#< zqMZ>9pcz?+UdTZRMKoE$>^1IT{~}W-QWnW1_YkMT3N@1+-WS{hjSB9uwou^0O~yS5 z;uO|gi+fmiK1drSQ@IBNxKtZ>J-ggfH|~+fuo7&<-BlZre`L$wP2rvZ5)m}|pt~}# z^?w$7qdk^rF6RWB|Ik)}GR3ws+B{a%z_iv0*c5kS34Z6m))GE}_%3 zY{h)Ae(nxVyS6zNJM`GTw)7fkh#Es1eirCw;cCD27bg7*#Otg3TYgdMrC4wL zX(s)rA^mOHiz*J{X>@06l{G3XT<}Y2hC4%9>c^&(M7lrSN;?2k^1)ZX-5Ug6Xax*wx;?bNkLhXpV$&j8!&?vR zee`6gjACO0)tF|kL;AdF#QS`&yN<2*RoX(hrAdzx97vW!1bgpJatPZ{hKTf!JLZ52 z@Lk@-CNkdRl!<1B@0JBE**<|0Gj4@5J2yA*4=B7;>^H54{XLE2aB?DMIAl~5u+hTw z+wS@U4N7VNRwl~b-T;2Ko#WZDwl!r%(|Mxb}omfw7* z)IK9D#ESk2nJHvX{isnwkqVt88BfLi>WD3!g#%hfP$OV&_Z58OcBy?T;A`ofLWRKv z{;8m63X6qGrf3`9`c0;7HleqoDGCeWGNoevJDSC8G<;gftXUk|Ycpc}SlVZVDvLp> z;jzo{JZPN~!2o4H+kiWWaCRS^qj(28*_t|8y6CX&3f!KA@w7{ z%xj?N8>N{i6(zQnmKyO2fJMoW(Vt=TI|KSTM#q+iDRCnAEmzi-VcX;1MXn64VJ4s2 zNuXz8Q=$JMGs?Q{$3vZtI$gC+6OU0=s%X)(Rb254lSo0}u6Q<7@nrfyank$ZBQ3 zD01O7V1Ojh$>Gm5(9Z<)I!zK<9otnyC^I;1UUFPWEzNq&_V1x84cIWe&z#aC&zPS^ zqe(VhhAL-S(Psq~4js5iKxfWOhU9isj*KAOCVPmtsWogSWKbO7-@_T?3>_`EXsJ=Y83YtdIRF@FIZ=Jo&=8UZij|3xTN)#u&Qnxk$Lmn(Xf*kY;)PPm3Tb-!{ z#keEnY}umd5s``Jl*vhuu;m#?QDe;~^u)~h@eqrPyH=xHSjQWDRz%Pt*#*A(KEocoPs3Pv_j z{`D2?RKyth2$V3~%kfHa0ABmU#}JktQxUqbS%7d}6lqZ}n?0LW({j3^ZVX|Col&ei zBd*5%saW^fq(du7wv>rcv@)5=j5DOLu9Zn6b+mJXs_U!$MsiVqiWb5-7P-&V-TUNo zk^L#K@f2t$w!)F7_+)(%oK_@GmYc=e=7Ii0|2b?grUAeTfdG2y)C8<*vGPiQZOW{m zntixDkLJj2EqVoSAkR2(wN9jLP5OVGRG`?hTo~WLsGa^`qG22Af%j3f!JY{(8kuX) zY8?2!xekp-cwIqc_0EQ01*ounTCZ)NHU<&7i`LL843A`VOj3~~+6PZ^r7)W+Fup>A z6!j7Ih^1p}r}`Lm+PI&2B(6>U1fP@n9SvL3a4yNmF-qaBr~0}JMr}=!bR`S@{8gVl zh|!iV?kBzOX@o#RK&y<~RskUK%X=haOTd(&M%)pn}6Kl4GPNM zym$LIGVq{vmiGrUsSXabdz}M>Ov&P+UdC)RXDMfWwwa*Xm(U`y&Ll21+QK?IGa)cW zaPQv9sb>C)&mCkH=WX{ByoY?3j9a3fW&6nC3lsOM$$G1AWaPAz+N!2v>DrdCte{eV z%hNL8>M-Z5dD(*8uni_9){#hx2H+&wG>&4e>_Mf`Mm6<23pvFXojgBFmTWtF%NY~N z$t%Mqq_QMaTrsDY8Fc-RLn-}l9otOu)_tXu&mqoVrnC$^Zm`A z=D3|8BG3O2`!aFb96SU=*=|Jv9u8ykU4CV%97Tl zFcVimY`PX1X$^28PYJ_VDKG?Ps>ri&)Fhr^`TR*%aBu0VJ?rRq{4ns1c%_CX$34-@ z)mDSPIRw69u~?*_x0T9ftJ2v7{cCC%{p;Iwo9LI=Fp>WcUo`p!MheL3NgarEl&X+x zl$fK7dxLVHA7X2xkGa!d23rbM`mm$rL{vZMFekXMnh^IbW)cQH7ebYELQQi6JeAQ^ z9GW-hX!0rc6HV(J?T+aui;y$Z#p;(=ky&yU;Y)thg=#`grgD%I#^iZlRwFLQPh=cA zZ0540!-g_IKz}A1Qb#*cuQ|aK%HqLS#sO>In{#sEny&V&dGFDJcLQAWAgYiP;FGDFnDs+1nSE7MW->g`F#W&!LnJ+zO~+Ys;jhD@!4AVKss8ifgTDiij# z0(%`r0Ne~0j|2F|p<397KSChWn1;UQ7HK=3wZp}>5a0^&^@xK~@k@+dw44;2!^{oc zM6rc{j`tB+bdu6W`O;+iX2r2~DhD%#ku2oIOu$YtrvVILVglZg)Iamx$=YXZ_o#pQ)3P8gNxVTWY1X~sO%n^3W8zaglj!EdidxOI9_^wR<2xh>y#i3*AEkOpl% zx42G5LG|f1n(Zt5weCu$EN?vZrG2% zuqIPvGRSBFX2}Rv)JCIQwG2x!A*o_Q%yu${!`J-GgUAp*o}zAaEM;s>JIQ3ZI66`8 z9`T$PJ(=bS*5Y=>QO?$XYxvJ!M|NYR31!Z&ij*OPJox%_8Fyx#IW|3&`Wzu8tcxB9#1Vg zibPHM@l+@k<8>H_G#Ucz;da_d$0D$Ff-|Wue7hDHfTwB<|qspBMci#o2$( z4@_G{%2*QQg^<+jct{#rShO|mG(@`_p*0yI;x!Rdc`7hOl$mh2!n>jIM>%d44x#%> z$|(lyG@CwB3GgN?RfOcqJ(TVl%$V$;Ex}x43I}QjkDmF#IzT=znqWSIVUxRhNK3At zO5eU@%PD`f@k)%V$vStK)2DgGyYSD0Xx|uhiQxdcY$}tn5vFFD?jS5HW$4gU9}#s1 zCQExERA=Kbqi)HXQiAX_KDR*j&_nn;cHz6M>5bnk1Cd|N5!uHe%i-}Lz6kWOc=mf0 zh^rzFhPL*CXE!VM5AzX%hw@Y;*^Vd z|A7JZ30vZhtYNe^8g?Xa9ipv{=;N>E_;?M3@o5MEi~{$zjzXf{8%%)QH|BKY&cLtu0XAv}CSqU#@=ajQ zR@&V6b6p|++8SD8AdGSf`kvV!-S3(r)_0UnbKz2;)7TUGEW|kWi9;u;yg5PIn6YDkT;%U&GaB3B3$zRQ)gLgAtkW5k5VcaNrGkv~ zingo2>NH)TvZ>q*oIDMi*ht;5@Cj>*Tt-)I4jb6ey*?0HwXDIRp)E4FXQ+sQO?P5} zfPMlOL9n+-?QUN)(bV*6EE}D^I~7poB`xX`OWBCqhTJDmqCuHhMmyIPb~cvK_SI@J z-XB|Z%dvn)GnOrLZ6V;j7pWii8Sa=mivw*lPmu3%iQYLBsYqyAbNmfRS*( zbOBqnK~6qdrJuFgz^)s^jI63RaG!xzMPIxouTfO)UJ4cUt|$pgXZd*6g`#WIxXxZi}>TK8k7MNdZj zB_>86%%ny{>OwpTH#St4YV>opuZCt17(^9eglPyPZ-BIXvJzGOSj;Z%dO?gvKpQTKG9QN^NcC%! zqQzBYY+<>}N>yuwUTLWfh|(QsCliK28`TBs(XLjKj2TF1m76YZ8QQyFDJJF}72^tR zO0s2VCEB!ZSj9U9Z5CrvF=)>a2vxKL+?iQy&|(BI)g)pCa>llD!JMtK&)k;@+Y`$l z5pW3wwRI|ELW`~{Uxsvb(NIR&^9U@BHsZLEoam&H+*q=xiF|M*`6SvFf2sQN=^?PR zXo&7YXETEjBb#z8Wiz|ZCfQvaNkDpQYpa-^kS$XtS5AOk21^t)0;5wYNAig z(7@%W@rhdACrPR2bSX3{f6`fkX01 z$)23R!SJmEDaoy((`LG|IO2UQxg~bEA?P;@nI5q^krW2GT)6iTK?t4ZLnkhC4=r}M z@C(*Z7-4Uk#O7!8Pv^MX*&4@xvM^#LY1bC_ecZFg(WDKc_^XP0{EhyK;@&1D!PC$U z?iRU;jDYG#J#XkSLkr1-gOt*;g_fXe(wY&Pycp!MMQmxwsUxNX5E%}p;p+-TS#Ql`jE*Adzt-08<3?|(b4QUTPk$7PK zHr)F-Nlm08EGE~vig2d|DAJN<+JO=KW}00IM!SQA9()&&)C5VNg{|HYAgKjN^hp&G zJ?{(>CnM7!X%>()cLxbY>;jUeAPM2N|2ofT(hQL3lPV;7-WeoAT}Z+vBJ3W!J4j^q z?7VfHAZc6dY5|E0km!>tBzoQ%B*SKSH#rzYttP!70kvfwj4s2D>$~6?jm-!ZSaV zC(+oEeXaT`!ve>axD%mRxVtsZt2y|g%GHeAjjOp9 zT&<6H#noqGPuk~!zCQ93G3OhrBhKt#!{7)>@kRuzWi)5Oz9+%}3vb10e*T88<)zxL zEi@4Q48ue_c0uxsq^bwTaGM+^XjUP#EdrrXrYkgNmd-I>!cMxn=j&215)n>8bZwy< zn9MJwOap%Dm!)P$1#dQ<_s+96I>Z`}~o=O~AwYu-y8B1=jt)lcmO zC#w$~&wo}gSa;S7PVM?^0qUfWE!&~%>)Pm;;#cEaLvxn4Ih{?|pjJjM!!uN%RIT># zwkda*oHzf#C`dDD4;{z@+wk>E9L-A-V%+tpA)tg3d)-~n_7XU5f<2z*Q8sMRrI^vE z3Ty!sOfjsmY;x1!*)d7S!9A8dqUfZ9x#;0xw38sH%;l9my7sN1>KRt`GIO4ygg}f9BahP4-^=*o+ez^IWPIF-Aec5- zmH$P}lxcM@=M%`%=wX5}$H@RjXm+A#WZTgb%R^0a=$@1A=9@YUfh#r>GzcD`13T(1pPpGZ>7QZQwTs(|u2q1-zeYJ;GeWL_ot^!bv}b zA3!E)<$5Rr524aSHas=Jafe3KbECf$d6XUCwe*Ih!<0nl6}f-KyIXu_G!W)>+OTfJ zPt{?gOAt{B@a>AcSH4LGe3j89@+h7+_kr;X2mq*9op=w)nvg3{f>-A1R+viG@JZ2F z^nQyXa={wUgFnP7j*o z5FD;i07_%&u5*&Xao`X#rXeH#E4?@8C(;mPgJGC_((;xG8wzJ-D%#N|WoR-quw^YL zVGIeIiot!o`zC_PVBejz(|p=#GmDX9f(J}hgjIkxEsmdCEp$p;7}zu&t^o?MQ=w%M zjfL4j0_JHKV?SZl8&)uMOz9J#R#32OA9D0LqpJXjr-<-sQAA%MC6x7)HOXz zP^W03%I0!ZwdLjm$v^%fHP&I~K&pP}E{!8QwpY+41S!c-RB(mBsCjL(^Z=uveJqHB z6DJfR@-m>2#sn;PO%bM|YtgydBA0ijAx?$8-YhgkOu@2i#i~X9f@?j?ch7+fe*>Xp4F)aq^;t6X>=<%0XpC))3nkIH=J(kr23DqAOZ@si0{4akaYc4nu*DgTBnwbcWyB;`-c|5}7; zU*vZ`>N79Bo(=mFGYUp9q)(Jnpx8RQ@D#a^bpdl5%S@vEznJKZ$m^=ng+48A=_v^} z`+gEaZfOJ7I)n~!UNrvy(e^%YdR5ik@A>omo#&aElVp-iG9lULFu@_2Koo=+kj#Mq z;ZM=~x!%vmdtZ|BDj&<8nY6?JA8%i1rZu%eQ4zuwt*tTQ-xpi%KuI)siIyt0Sm|48 zQL)BKTkK0)T65dnHm&#jTl<{nd1f*Z>g`LI=bW?8KKswwYp=ETT5GQ@qEWcc++ZQ8 zdD98DQ@UxK%A6}2yD}(|{HT~<^2C|2wYwArh;SnK*o1xu^8rx@vpE0tf6=a+mHDH% ziRQoJAGmv$A`yl8p-KyJqxAObx~I|0QxjF>4M5+=Br>P8{wV)KZ~Psf$i6BCDniNN zJ%-u*V%};6Gx`}Th@Pvp@NV22QXA8KMiP+P6n)kBmXj)S||o=nn4>)i38P1_`$uE;dl@)CQ@+d}pi@LOF1$q@EDNL`>*n0BQB? zk*%A4ctK`esS_#9S4Rc&E%LZLwID~svEc^qfn=r z(B3vO&E|X=JNZLS7??H+Z11iffu|^?U1sQ{^tnVj)Ks%1%)hO}(djUhTd1Xj1Mr)` zr*3vXCi=D;f$2^b`$X*GQ=dx0=u(7p!!$EJcbJ!Si`AC zQCvk0B*dq_Rb%ft3BRCe7FehWiQ#M0*DA0XttDTE`F9%yhN4t97qP^46HI^ss|m}( zt?~eI+`82!idIeZ+fPJp(6k2-WopY!MwsJXx%`y~0C9BMC_vi5i zvd~K)XyD<;`wIdFi;1T@CK{4E3Cuk%d8o+V;FDY)soXwFW}*4>(u;FG8dJ%)nMiYA zW^wXmq<&l~y`3kc5`T<`JZrQ1ENA5@%AMNh+rd^r?EdjYG{FqUQMPELoK1W%JhF)y zGYgIQ(-XQRR{`RXU=LQOw}X|UWp#Cmn3w7lyDzl`(~j=YDO$9Hrs__#24T$*wCJzk zL&I6;wZ0Tu@El+hkwUAixz-vF)}q;x=XhlhwL6R42c=aT5Jn8J>M2qeJ&%2lH3ohQ zMDZ!r6#djP%9^jiu#bwtjQpo^l=OpHeCjj#ag6*$!`W)xO&7oz4X=qYuneZTF-I5A z`iS!dR52WN-$li{kcwyNLpU`{CxfZk`?C7}dyx){++smjRqkM`|78LHu>z{!$7>#D zws70pBz|1xt!;u-d@TfvqdQ!{ijfZ(0OGj{O8CrAg8^ioHaj&Te)>Q>&_~3Bu~IzK znrJth1g2>MP?~<&oUSSmN$AfNl7kT2phQ_T*`dYd&EtGwN7lRMG`Fouqlwcjl3d&F zYttHPyKPKQPR_di`?3M+*ABSG5okJ8jp89{-ht#han!e`dI!$k2SO3PeNx6mJX|-z zq_q3++Jdg{)jP;5vw(UvX|*Mky7_J<%<9`lv{jdrA?Qo&8d&=wl`(%Ie?X}+QTAg? zdGolN+qyI=-}Gb|bQK1zU3R0bZs6<=oY>aBoePW7>s1Z6eWnm`#4x^*C;ZG7C@*=B ztDah5yg<%=t8=^a*Bx&kasBU6?OJ&>3ENr21YEM}x8x+by0VokNr+kFg{E3q* zG=BoENI^Ve+#ZZLTqT<5{_{PGPT^-Jme^E57l8XUO|rQtt|f7!;5^#gX7pW7UZ3x> zt1?}#@3fznf7WGJ#mlUcyqBTWrnQJZ!m=G#&tv6)(@Jz^TAfQ(nEyLW^#ZchdNPWtgp=)#2we>qkTF1RtBH}Y3a_&< zv4)6w(Gb$LJ&XnjAj&0q-dEQdusQO@|An%5t_T4z2o+!)`FJw_CGy3?6u6*#A$U-u z&WP9PR$2X1X)X4{hFn34l$E@jCrv0;H9V{wx4Lrmj@v5}9v)`XD#F9^*zKv^(Y~Ek z&`izNodyg^*+@5<(Be8z4nXy*`KR$7Q);+dFZykM6Hv@ECgwcwvUNQ<&vEOve)vQB@At`ht{a?9U**<+ zI34el@PjP}v-4nEE6M50RLc3JXj`RD7g7@zbN_+`rQw0C7x@W@lR%hej#Zdqv9Wra zOwXk8T;ziP0B0MaUwMWl+7t_@zT{&OWOM!2x7mN+q&XX@GO+)SJ$^8KE&e^}kYSP; z2w7J&kVLrX*goVE>1vpVCs@Ji0iF5<(Mi$FU>j{%e%;%}zt}!J!yVh2zkTK&Y>zg{{&V4KFZNM#J>?Hg`+@=T)CmDAo{pYxK$wgHMTV$i- z{dypAf02mzdqH%!9>|XPe?fGY9!T6*>&qj}&H!g0Waz z!TUl;FT@jnWqvtWC=^F>4IO()0`gT&aF)EFjg{i}3W!bM9eXRe)C}RKn-G_#?7c8nixRB|O`XIj*BgHVdd+JLMEG~{f>=Lm876f&du z4E@w7M^tO!EjqweNk^)5>wZCiO*LS~ReI1c)j)WUqTNswH093T z(H~mmx-)1R^U#eKGwP4G9HexkJckY_l6hzL=?yl*qLy{`u9dtmbgi-Ad{BeSMj(HF zZ^cL6cDc2Uh-wf`m~r@?BX8xXT}Tos0Ie}4?5<6z3G1jCCZU8zk#OLnkG>}zr6a^= zZn@-hZuGIwUFzPoH~CZc`-4p=qnQP=xHR%hT=;W1rcW`B8U;9e^2zmRQ9{X|6FmKq z4an_&ESN!ROz(Wk17Z<)wBSqwhSulILUodPME@k6+8q&}rhD=vQ)*@R6FIkuBISGX zJ*qxPPGUQKjT=3Zt-JAZx6W<2(MKAps_d!&C>MlaqxK+-x>s$#T&1ym(FIJpQZxd@ z;}w!@;N&^VToVBk9JN^w*sTE#ce6%2>^6u>EO8rLbO=dXvp#6?B)51(9~<3MJ_181 z7(`He1C&<>{nz#_%}BKT0L9eA5F&L6M8xK$hkBTNV!gGt7i!3!bV@(xGXP(fSyCPH zSq!fy=vAx*n+;Bzi2)>$=p|`JQZC1BHeaxrh;Ne5_?Oa@w%kUbdEn7>RPEsd;#Rh3 ze1~M0Z%LJk?K7M=J?hrGabPH%pWQyvgYhb9j@C|7Rjo4eDa!424fY6C4=vt=WF}5* zmc#|Z=n0(A(@p4$)L=J^IhnV+dfXJ@(59W<-cci=GU&N7@hweP$;8F-KvxD3eeD8U^GoNL{v*vKe1z#Hhd z=7J$|Yv&|rf06YRm{?ZE|oW&KYhng51mIs=O86xv5}*F}|kv$OWQ(R)%_=gzt(UE4#fypn05hOwyzvuU;4Fz3`X31yw8{n9pq zKdwPO5rJV&N|?4g>?I16Pa0cN6yB9PA_674TNiEJ1RyMJo1(?ro%TNXw{P4OZS{9= z+7xZ`cW>SlUF-7^#%`m(o6tc_R^IiSqBr`x8#dv8ZfQ4eir$>OmF;R8Wo@I;(Wgea zi#va2g-Hx7{FWx~4p%a}72`wuSeY6juq?FCrbf0jek5TMS}91I!Ube4{lGm;C}>J3 z&;~vNBvBS~(*{l>CIP42<*}jIDt7eJlt+6!T7Z`YFVW!0dRV6;yql@XYV=?wYVTAtd0wY2rlD{zd#+>xq_8P$ssw=soNi$j0Rg87 zq&{88l3?h*_tC_e$7OvH#!(MMMqZJer%Pml5%f=_Pa#mlsz)4}aiL9QpC{SUp3iIk zJJV_R@h!Q@JHWbv&oQ#oai3ImLq{;GEIH_w`s;y@>JiS#$`NXTxXYzM2f0+zMWB(U zTEk$OYQI~b3BPEiKqg3rhw}B*@CGIAqAfPV6|crYY;;bBDOjo-*<$VCYiI4ZOB_KnwE*@kN7iHvLWD%?7*Ft| z;t7%QUN+ITXZL5zN_6XWi2MEMOTumf}N> zSs~wIAyMFM2T~H4GnMJoX5G+zCs}z|o#n$#uCApMb4Hx7E`m_kay8kR!fGhJ_=xTq zw*jId#E1e#Q^BR6^<{#4VE|f4Ju~lI_sSG_FVt%wAxP_@)5wz($W?`cg(eib71AH? zYRby=K*1F4qwjY$WyMPrFTcw?AxEJpgY*`L9V$e}82ftBub^p3=NWYh_mh6}vw!m0@C^vF z8prQer3lb>lw>*^I8=kVLg{9;h&*n{dLTay@_{AACM60m8*6cf*`0AG4o=(>!$GfP0dYy^)Y1wrQ^xbEnaWtv{X7up{DW0fKOm#+^UIT|1u1EClXi&zFZJ zrS>Lwk>}4xjLmmHLCgBY9Nb}#Q-M1;Ca8gM*$!%OS2Pf{Ogs^p*wWG8fghbl&(Y+e z!r@ECoZ9x{#AwJAhnuTr+eq9<5%#76L4we=5S zCj^Z`XbNT#{iB`KU-Sk7RkV`3vNxSJ(3)aGz%`3}+<9;dSvsY_qinh`*@{xAtVrXo zD8-gpmXEullyc}{UY()mt|)~@7o~7llwz{4mBO7bMY5fR&3T~i`%KUr&`&rdXGcU6 zZSJJowi#42!tn&C$4pq2PZJO0jIX~N+Ys1(SS3Q!aUhaAl7DBOPrN`8l6cQ2tHq+! z#46gKqowTSCu8G5Fi;PwQCtbDinLu+-N*tjX^n&b$ISwy8tpCKL@h;H?@bVf^W4@) zxuJ^Bn+KLmdc@N^O+A55Tk8WAW-s}Kxx(`M;+#tV0_j$ z6j|Xq^eK`RP@vL;7%hefxLH@dlP+rDQYeiSJE*8l5U~!xBM?V*1{Ij2vO}=OOR+7% z!h96-J*^-0LR^`|g|S}){GR~v3_iLOepSG{CYZx{gkSSuE{F@}xEAz4JYTV`1p4r_ zmMzxi;hzTRd~bk!B|tCp{{I2GZ!h@uN`dY_m;>~OLeSh}ucXEHbY^CD$)(Xm9)c%= z8oQ@C6v;Rb95a#WT`JSsZuHL%PjZkPTByZSHyJCl@Y7a?iedtx@R3#-A(lop&`%fp zQe+Oar|6VWwyKpGVy0PbG`Hq)9>Yiae6PxELNMpQi)yBZ#>;v-C#&4DhUI|qGNiezY}k_|0MZb)K%f|WGU zVnSTQIcx+XNn;7gORomK?Nauo>PYqm3sp**%OOum!IEQs39V+?*%nMHmh#4fyOJwzkmnXFtd{cXv`b|y80UU_W zyGowd0<-S*Y9W9Ha3;glU?FgYtUT>4q-qYBDyp4{wvkC>q4}ib=J|YcgmRQx2wOzK zXO9hLj*ULiG)D?^%*Gou#9E>kev5K>ggvXPfqp87du0G@ymj zwtghyC}zKkZqpHeWL@B6&2TX(FMnaC2=>Oa_F0Th`khdY1Vb4Q|Ez)=Lqpru-jId_>PqK9g!E=U`z0U{?THZJ=be_}2Rnizw z%ui_*3juU2(?=D;uW31qOys!m9Un-7VGZD;`cz<9NE3t-aRELb(u|6A(d&N zzeJ6$%ChyXxD(J@OHBJK5qvvChW z!!;#*#u{dN+6iOKhopPQzR^k^#c_{OfrTJHKiOsjs`=s>CA1?23ay$n^XisVX7p_s znR3C-h1NN>-f0nP9SY}n2+aQ_zD8RY+W;dzo!S|dWSyZp+H$NL21w~R%imo+?i@C(FXAm)m9aH<8VZTU2_W=*>fW~|GP;A=`L zJahIZ@U6+Cg8{^>0p8d0841mHcLFWtM{9`oD%Ok;L8=Du=}rD}GbJEd%NfHNOSkXP zTLNyCB|Rr4h=AE=Hwfn42E2K}1{{MmgC2ZN;H1+vV4E-SjSDv5X={K=c(P~!Q?m<) zP5#@7Q)<^26C6fkZ71N;X*v%X9E%>ROU@81SO(7ng33Yo0;1fEc@WS7%RTHbZo$f( z0LMB2=eE;TZp61+xfaE9M?jV1y04`gzVB9!^db-$ST%TUMl>c11fh76A64^bn6!p3 zMt+0~$-go7lwQnKo=hwSeR-LOo!7#Bd!mQJ1Tfri%B}}OEwm~Bn$~LqN-I@O;#fw_ zl6zH)$V13a@&_y>$+aPH1paFMRb*a}`7@;p=}di+sG;OPUNdLX{DtEBTycGtt7Uk` zZt{J#G>kRU(gkPMI07+Mufz>De<@0t5nQzU{FF@3M#^Le8x@KLqwt!SkC=4-&?)Ku z*xdV1Nx$Fn?>{Adzoj3ChQL8UsuQ8L79uWQEP^wYd~_g{=U2g7PS_ki9%}O_2b0mE z|6Sl9&|C8He%%#&>0zWKX;ZK^OZyv527}FLadrNRNACBkc(h0ISwz3rWW+duViF$C z(!r!$)1DaWu>25)$i4|?$Zb86T+3+$x*%Gzj4%aue)x;)UFFd0V(_Dr&D@#7{O!_h7w`DMgKiTK2p4$3Su9G(n2*0BOKmIFH|jMNcs>m~EKE zLuPfv!?us{HGf{S00teXrEQxHRWngYZBJ|La59WKb%@3xB1arzWqPP+Uk46=m7ZI_ zUEA6~gEef76TpQcP5R2QGFjy+Ek$XXo~Cj<>3#K`S_O}J^%)#|-+irhYNhwykmASY zgQ4FL1IPsiku`M+N_Ii?0AgRc?*)C)0p|n#dOM}+?UxH^8l)6 z&Tzp4)%L|)Q}}u3>B+u8C`E&i-6YD6N{AqEgD#`^gsEXjzO1B4lF}~uA+m>qS|tA_ z3r%bJ{O^P0Z;6l4`s1N^bWi(^So8ZOqzz2eIYHyA?;iFq2_V8^ljC6Q7eoixUdSlL_^jF$*-Q}C((rkf z;q2}~GZZ*9$|^8+nbMAh?p1P5uDT3Aq!e$dba^~M?_;-Gq1odNGLM)W>q_=!8;M;* zTNm?}@HfogBHGQ0E!@S#3DbT%w0*U;&qq>da&&LQ)|Ql8b*rx+t|CR_GC<+N?qV@k zr90r_;=FRTTWKes(QMMNgmu%@7#p57Bt}=;*wpj8k@prAiiLCp?nJZNwyGv|GOzvu zcKTJYPa=)-nYisr98{Cp?JYSMfC>}^+ zhwHGr@Z*mH{^-iAZzLPP&yBlr%fExCBU^v#%J2W;&~N<})pCrRM%eJk;h1<&x}NpA zK|rodekUE?@9q8yE|Bs{8ix6*p$BN_IBxXqEj#)d9gfFEnjD-h8YK7#WPoa95;fJV z_5E9a_)q`y4?gh&-}f!A-SLI1+J9a2eR!5K)p?pH5C*}}f}LliRQt>pZ6y?rGLd!8 zT#Q&W7Z$T_{5}bXb5jj6EyjZ0`hs?hsM7@qx_y^)LkwEWG(o%8`@U-Rx&Fvjwh!>% zi(3vpnvSay@EgZZp9M%zDF<7iDs8fC?VHWcp~=CP{cic}J=ytX2W@Azv=zf-;vzS> zGa)(WT*eNBE&JzXv#@3EOb8-Yxm9F^EJ6CfSO^8F6u_}IwtpJ9D^zRDq8?7glPD^1 zx&mB9K57|rlO7CR#P>q#^N@e7&{L2Pf)ngE*aUuhN7ldO>2=yEapBgpuYdoS|DUnP zwj5-?Lz@i#`6+uIUc&R@cOL!P$1eYKdv*q%)DZD;_Eyw!Ynn`+9!k&F zfIgnC_e4i~#sfxH4W~o({COsJJwIl@-{bcj_(a2I>Z_Kch%}KBTG(7~u^mba?}?{a?XYDk%TCc%Tx57;EK#S7+sauerK5Sz;Pix-ubMen#pX?i#N?2@= z?4q~8gMAC@-K%$84*qZ4E-!dUDSEwSqVxmw@^3h{K>ZZ6%VM!R$U)Y~51jbYph7Rj z`A50K;jQ3>>wY<%9JUa7_zPFaHAWi{A0PM^A`(ZfAtwGD;u=vUC$%ru+$S{lr3AZ1AGGi!c zA_!q@?vD-h$xRNbARV5Fv!y!I)aFU!L97OhVz)~MLnI1RT5`*@p7O}QM21M~Z4<|B zLXonvVSlK->&N>RkSvF=;yq`vd)PR&J6%(xcU5WE=5p9@}he!e!5kAIp`MGeC6dY+^^B zfBOZ|?cio>LokEMW(LG!U;vDSC1D)nG6mFqTs1#nIGJgI&WVnJTjAEyH;CMj8@+PZ zWVT|;C+!+>XH7f2zJ{!?ak|!;ajp44xe)2|V4NW!Z8GKC-tTC)XFiq&)T}j0a_68{ zp~$WBkF+(lxeMnPb1u>Gkz@yI;@1D`8@zP%#(!XV#s%Gf(-N$Y(fuN*xM z^60kw;$8XCKU`t_Gsp)OGQWJL^1RlYK?!~H69(odES{gRY<|MZISH+OQh+0wbG(yz z6L~H6=``W@f1}tea~ zWnDxmkbhmUt#H(}LL#wjx$ScA?9c9O!p>`xnB!7tzFDwU@`1_ZEt09(LH=sKjSX5e z-!SNjj;X-#w!FP7f9Od|%)FPAROb{BOC7}loSg#dyVww}vo*~dBWOLUquxpyi-wA& z51gry#Uhvtb@IVM%JC`!d&Q1eMF1N$x*6q9{^0L7$@Q+9f0a9CaAk^jP*%t$i#GmM zAe(XigTFt#3bHAt&Eebjk(M~4CDp{~S9N7|RZl1lqNgkaivW^R=k1xRWjJ^GZP|IjrkL z5KNs3zz0$nY00UG<_sIb8@UBVGI(@;!CrIyMHm3XVz3fS+HFI0@w`^B2p?)ixb zOAX83{38-mXapEwCmyKP%!>QPs--s2Dn*zL6Vxlt4WJF}OR=%L+yFBs=#0|yJ9YL* zELB>hA1f3C&Go6iQ?S9<+Q;|#qkmIR{woVJvR}WF30I{>Ujd`@-&-P=jLU*IuDaYs z58sy!A`0Af>Hd>}Uh83I%XTf5iV{^vr_j&-g$lJIDK0{2eEM`n9=8ImdD0wAt@j0*-$_!TeaPu?O0eTC$*wM=r^DT z0s9CB+*@QtkQg8N=f}2e<*=-~gL0Xm)vzLfBUW{gn zz>}DFlRvAu0cqtc`iW4>D@c&`EF0}%T3j!VH5T1CHSH=pXIVIhY;29JD?ac6`po;7MYDBI~OFmj$Ie z2XQyG66IT9M^|;P*0;5~R_a)EgL11W_5?^=@@{rD%zZ02TAu-5VP#J~%(7i6;PYLI z4NtkW4qFO|ZS~R|#m^}^MU~uj%zSrMB=~`NqXfhCbvw|gb>^wv5(2Wk{%@LJR^-og z@~}!)HjtwlyYm&A zaBQgcLeGw1%dPA7f7ZwOEeNl!HJL@bQ9!x9P^DZzck#;i#q3I z_U-evx}w*sxcZcKzAwTM(k)m5C66xu+pj`p0^QGrN6|y4H>Z3(?+c&j$+) zMvb0+w_j?u-e?|LEXNVMML^Ram#6AG(y+KjEQJD0XX-*$}C*u(ftxg!B&}-ytBirn*WJ5dqIg} zIell5)|oM)0DspYBjmjOlYoV0jfG~d{7!!9?Q*5rg#S@r*5_Md3(g>;xLbCbhgU0Q zRp2e&uCDbXwH2dncPviDm+YQE+M1T)r>VeL^`oI_B-F7mFAztuFk1|hPji6}=q)9b zoks6!P4w$lbl0jkPQJcI8N8+}@U$1EOxnD~D)DT2?Wc#F6y`5h*D_WDnTBaAjF6b4 zs4W=fDqPMSf;mCHwTd#N&WUby5gWdfKRl0?iiAUdTKmF|%OLU_Ovdk>3t8!<7#+2s zfNW&ucA&v9yktE$gyl_I0PQ`X1t6sF4g-fd@-~BWv7)ykh75-dZ<4X0Nj)94dQu3Qsh2BR=;ZG0KW-X3l=R9s?HTrMOmIz9~DRhzY zvzEw3Lm{Y0hX0_lMBZuY2YHRMMBQb?N%6ewXc&cTKK2ce_Nbx{@bmSfEQ19dm4*}N zL+<2!$b!jye;Uaj(pgOaJ`>+Ga39X9-Kb0_4c?mZ3;@(aELdgfbeLu06N?I{ETU{~__4W3kh zpz3>}g(`NFYEue91*GCQ`Ck-nIFi(_X){#7TV+5o2Jqhxe zD4(e$AAVhHZyBkttd!yG(Z~J65WK^t0EqxhMk%YJcF>ja@G-epuR zeH>`ws?f<;baJWmaS*H=ZMTLvPM+JqT8%Ps_>r%R>E!-FyETfMK(#mS%r`RH^&zkMzgMp6cxu8vAK<+*OeZ1-e4x#`XS?bq-#~95(8z z8uhLI2^y}aP09mDwj7OI2B7*>KJGm~2d~3Q$-0z3YzpuZxpNX7^~daLt-+STHccL| zjY7wwZMg3I-H`4Gl!C{7=W&~S{ViKY@x><>n+;r<(S;O;khigX$EvB!z2WhFhQn0xuYt7Kydm8FqCAG!PAKI@oR{LadZ< z$ZH~C0vX{ljslg3?<-6HzFYwaqO*;k!K(@RW^`r~fJ{NtCLf72k6jJ<-Yl%QRIi1;RUK6YdS~J|P?GpKm2ZW8m zsD!2fT@o`?t%_(k{>v^%;ar?+_~1FZ1|vC zcHkq7(jYw>yc)e_fFX|5r3ZeUP(MxWL0O%vnCcZHkOvED%s5wW$-nExb8YNejWz~Y zkECq>>$uh9#DhP3rvdiyoVV(rPF&s21r3i~@u!rb%!XYAUevBHZ`ec_AXxF7Ibd;E zzyQsXK|&?wGvO2;9C9`X?k?wmcWpSi<=|UI`l1EqOo{qGX`a|DSw3f$ECY6amMkXS zyB7Qdt_7M)9e;}MoQWnxDROId4Q=kW{>ZSOiA^6wSa4uSYZ^C!u^2bRjNWle7`Md6 zZMlux5-god{J1Uaj$2#fHfH12_{rmjO?2M4;a~|y)lHmZz7_45H+(I(NK6C%skvm- z-stRU=2GbA5ki&b5lRCcV}x&GF>mTR-?`D5H{2ETrtTQmdS}vbH+Rx#YCuzsqNWWH zN_&-hrU>DUMI{<@rwIBn;>&K6vt$?0^EwFjg1-z!C9hxOYP%5W3`=P?q=(e%RSLLA zFdhoiPFOfcN&P|Gdh!sFgteJNC@w^2k`oaLYQgl@dIIUj<~tKzb$x0{JOuNKWnU8W zk{-kpD2pUx%&X>^mu*hi%IB~$C}A)2vNSBL^mx#i*C4xr#Jr%h+zH1Bx0u(bpvInu z4H^$KuH@qyAxl%Xc-WwL7Bg_WY%ST^x8wMyJLNv}Dfk(*uGlMbT7Fg+KTDX)tB+(WdimL!lAo=a%g@#v$yRLV!8kh-=9i9thH zao}NsB1_`vRD{8?#`+109!zTl=xo^(6RA5{H4s{macP66L{Qw8wMH`HVvC*j@tr&| z`nl>QZ{#&eU_3GLv)Pd1tn&%0UtP4zm&-5(;0<$EarYrdFfCGVTUHG^8Gmnt(h-usMv-H8@!w^Z1gj56-FCLqgeDb{jx&{nYH2X1zMm1zaR%2$0$^lyhX0xRywJRRhOyBVd`4O~hLh zPl2gK5R^m`LB_bO-Xx8uRu~dN0#aBvjdFo*Y1s-8mLfTdbTVyu zk*GVY(j;=2#?+{%yl-mA8;Zq;>{E0Zu|Z_C#G3$$q@Ey}T8Hpv!HE@k?1t7i>Z#LWV+fT$*^bBRlOvm_KPP-lCj400aM&?MO!LTduYh; zu~iQd5-NuZu6|UKuCO+kAlm2ZUe74WfULmrB<7dsx2QqJ+5W0=;jd|9Q@4c_2xq<0 zf$2k%L54JBJPhkW$1`Hgpi*rmHW{U@ZT21DX?HH+rSm$5^Q$rz*b*W8wbJgFpo(J{ zqMT4Ha6uLZW2Op@lt=@U*a*e+ycu zElw{>3%jVKnJDLIHlDo*2rH zi>NJKU@t%nyKQ-SVz_981s0fI$wZ^&F_v%@@!}0obR25Ls-%|~E+4^3i%;egLw(k| zIvXCrVX-QqjH}W}m`@Csm&CAX#8AD1(&@9I4lzuo-J(;7Awm6o790)WCPEvKNHf8B zJI_6=TsW%by+ky_Q%E0_VL?)3S`h5g9WvvIOC1SK1gGJal@glBjF-?vX1IHnmAdE) zx6g4~5*UF989|q=XVFr4{TJ#{#s? zh!P|M;<3%uCA1ms5pMyLt}6WR)go&hi*S;sB&#(ftJO?aW1lX>&rnRtUNjh@ds>l+ z61@qzth>QZcZ5ts4wg0)>kK;wbq6`dZ%lWP<6(bC;85*W<_mWrXWL~6qm_+V(fYObFm)zP5xOM_cR$_LScn061~7xwY-3Nsl0!Y`xlG!m$)Zy zSbSryAIhialSLWFi@e9lTi&1G{zQ>}l6&%68M>-ou(PsZoY^|g4 zuaye_9}VR*h&X~HEQl-|a>y>3ylE#-#ximcF2uHq!=czCqf>=+&WrS`>>X!xW;k|I zuDCKkmmf&0*5uGhiAdT&(j=;>?x4P5@}nU(7+b9_^i^V8RO56IWgGQWt=u$c3LIz& zAs)3?rI!3%VjtE#`=JFiSc9V&a#VvpR)Z7S;KVjKf9iPjV-po)!$&X1U>VmJaNm>! zywQgwG(AsPDDR|h3(>_%bH>Q=V57;^R0}V~G>rAWH%*|j_6kAxF?zuY@I+awPhMo( zg0+BAvKBB()O@07!SSL6o949O6Zic7=o|XweIF*zELRH{cPoys%N9_esYj&CAcvG2 zQGPNuZJt=oD(xOA>SOJJJI^+TN`}EC#)YD zHo$J9P#Q!qduXa51=*4_NEua$M$Ca8TZp}uN19}fj{lzB;LLZXO|{NEi@K8xv-GGe z?m_FbVMiGmj#7A`9o9^1NkXWH8A6WX`> zsdNjtQw7+^%FCA+TeEA7m^pv`cE2ImL>J)8_{|FvA+5~%I6YYWa!gzYH`zg+5zM*ec?`PAv)CgZpCMmn z3C}3?kw6%1(E?TlT1F)x1GyooA!>~bmJeYz!rjzP zkESiAnFSq)Xq5cpGWp<}+m#Lr#_-6G`7P;uct$(9&!ToqJp{B7IlwW`d*s3pZe6HVWp0cSLF)4|5gwUT}3Q<-~G6Fr>ov=^wvG-gSjsW+k@m2 z@OM?6%;FdYU9@ZDA$e~cHVY30(eP-33}&3|Iqy-!uNhuiKF#3}Hg05tHG$s}2(c1` z%Ngm9&=OcE5qgcj2#q$~vNpl!0EMEgB)_usls6XswRrtItLDFENTcMdh%nH1I;Pf{ zysw=hMWk04c~5hpEovFZd*8x=-0BPyS1HY+?a-1~U5_RCYm};)-AT3H4N z10C)y$RF#(24@wc(a##?nUJD8{!B=)4D)0esHK2N(c7_ zm3q2mfqe*eSPlSSQCrGQqau)qaB2y`uXLIFxrZEjsbc($Aask<=jd(qT~W&1&zTyk z?exPhIQ9&GtMvw$9A#M}3uKXOh0A~{;UDGsLiNN8{jq)wwq=oJ3GJ=k>9O_ARy61x z5@uKy)oi1=fJ+@nS8dFG}2yD+Kl&&E(sLS$``3=vyf!J*!vLLY!cIy=d3nP zSMuK!EuA9k`#9&1{DqIBc8*Y7dv0-$*rr1Ds64Hx?el3xV0~6eob-h5t(6Xn(%lAk zK>tKgw7fN)_w6JsejT;+bRON7qD@Tkvw^BLh>r$gVBZ-^(O>8?2K9oD+EzQt*BKui zz=ikklN^8q!b=tkli!f5`79bHzp;sLz*X3$#bechU3JUfa7(;93Q=v$7|wUZ&*y|g zeb=XVwfq5FTl@yw!g+X+7y~L^E8YC=@&T14WiGNZ2Rfyr{NYe#+6B3R^jPa2VS4nd zc@QU-x@GOpvgR95a^jPb3gAuHER08O!>@xo^^OqiFpr{{C?>3-$_f`Ay87)c1dxQb z%h=B`5`jhLlK~!x;&r4|FN=&GXdR$D1DCpuGQ`RQwG3dkJy61I3E!5$GN7M+eiYz$ zZi@6D(xsXl$67orfCc{-pE-`|QxfNkTm?xmMJ7%ip{6@LR=6{Ov-g;FR55v&NXNvn zHKUAmC-0XTk^(uK%L?Q;E*lLBY@q(Y7eZ%cNlM{9`CtU_(E@OS7r%E`GY*yDv?<7> zFif~B$>DhoFxMIWf|PTcO?ez~1$B#^oo4p8nlN8B1PAK}4;D)hB1W4lSC2gG`X0XT zvViRq+c}-1B7NWhLQ-t;F(m2XV8bPl>rU2!1a`ipgeLm`Ty&v10;OXpG^nl1k=*>a z0Nj9ozQ+r-L$6-Iz25MYqWJQ3;5Sbr1HTTHnFD^U5lh&-a`4x?;HQ8B{BwYhb+-%r zDt6Ybz={7jE6EHtozXGG z=*_KHGYtuMpI<(8CE}jfyG|i4#QNVe+N@1X;<3@3E)DJPqsk4A!d%C#Vv$MGxQG`z-E&`2^1^ zO(GSLs{s3kZZ`CV;^6Dm4LSR<$Vf6r{s6L5E8O?;6#}tWS|PTeZiTI^Kd<;WvW5V; z9q+D9f;#?9F|cr`MG*>eG<;m5Vnm~=Fhr6PA$}kwK*E)G5@?KwX`TT>#^YG%%RxKI zz5`STd(B(F58<-&ppLU)ijys5Ds9jdhD=J>K2=(NBX4Kp8EY^(X_$OOHAW#IhGNBk&rsCSluRbst`n0F9 z0599M8lp!eZk)7D$$j|~(E@LQpkC{wIQ5mze?2s#NT@!pN&{ONvchRt`x>Sz0K;sQ z)F5z8YZ&7*G>gwDh*Gt9!3RZ3Y%K(EC6Ox`;+ba4&%qX^@<5N~O7@%QNKgb%GLFag zRa%9i;YscX93x%?q;(8Sz>Qpiy%>pjqwzt<2S1g2;%?WRaswhH_D0&jh2J2vVaV9rheK#Ye|FNk?G5dX$GR*{7>_Fx5}n3B|C)2TTZ zx`SQldYOMJL&6YrTf5Q1c<9<2pnIA(K=(9nfbMDD0NqpHzz_soTRQpeC(To#TXVR8 z4XR6Qn#5l=0~JAjt-Vl78&0~=o)m2;1f2^oXrd6LlaGLQrCqBs?}S?H=Cj#}aHNQ! z1+oe88GjP6|LOsA@1%n}v2)KBWF~jsXj{UW*(f~)Q;$d$-pJh$jY+Q58{T!+$RfxPi)@)Aueb^NVzO%uNo)~iN| zwf5!(F-v+9R?$Fse7p}TpzDmkMh_I%2a7B50_^?M#r4_ZdaSs$zqCnbQgJlK+Cw3ihOmO4 zh5HD^E@c4}c-wf2A>2gnRq~6VW$al6)MN(>;_1AxQ_DBF0AIgK{2Dz%Vp(Dc6D~mA zEa*1UF{WoNCt42ib;Gw~3gpwqNSaY^v=f3tV49tTX{jp6{{mDRPRU6{KfCJ|wJ5%voamq~DF1qE||;lK@R7qZ7JvyvcFq zej&!lBa98}7JDs&VA%Eh_R1<41`Q7;j?Dqd}C zPTaPP>?|VjW139I-B~6M4!BpTQT?1piDO7C>Nw!WMd!exv&SURqXR)Ka-+y_XiB&k z4{=z!x6*hb-E0FBD}1PdW|;$_V*MujCE(UMw}@K-(aIWbJ)k;Mkrj>uNXp^e;M6o{ z*2-Gda2Z1=5c5WCb({z?Y@vtF4%c^93jS6H+t9FgpoKy&& zPqi@fu~A4v4e@o^vzRU#R=G8FJBR5&R*BV`H>kq69t+cD^lF&Dk$8ep9`>=9HgMBv z_FA`eDqG>rMoZn=NnH0A%Nf1zP29UUdcL$M;Fi%M~6BVfJ zo&s~0?nE=ahE+AktI9}LQNNxK^*f^$x)n?a9c{q}G{)hNIhn4IV{U9<(-7eT41~2t zhaEFwp&FZ z$6&=%lDSL?MmAzQKgc3R5K=v#v6ebpL5BZO+6yzlQdA3 z{6m%Gw^_jCt5G)NE*qCyD%g-_t4F^8!ZAuKOMRx2;#)cCg~5=WP`HU&t-_GW;Wbn~ zeozUhMt02<%SP9)wWnq$5c1>7)Z$Bo1^gbk&RydiCc2qySkgb@qXWobP|$Koj8qF~ zwW-N8-3ljURYJQLU4=#%hf{6DQ<|Ni645Y;tl&LZ&l=sL<3li#UyZR8S+=62ejmkO zHNAn7iu|ao^?lZuy+LkRZjsEDY=D5r3PEj%wEQmC{#bIQ5Tc)GOMk_>%WPoDi$O-7 zRwz)6385DiMJBs6v#9ATJ79vs+vW@W()7X9EDc8ePRC4P`unDeub?7Q+YQcr?EAA( zLZbZ?YeI&_h6iH!+9=?>cbDvyZ)tLAc)LHV73^(8$r#2(9>wS(YNr~y1UqRe3#Mj? zG-#c|4Wr7cgWg%UBnkoAnJwsufDFB5b7bHuy&2JSGVbD-pIu)u0 zc%AN9=WbG`{D7)wE#jLpVXUn{fEk}0M$l>@8`=!eMZO=c?}brqkHTt_%V2`VsB#q@ z0GL=;!9&785UmR$@B8AnWI;TCK98>fyiy`ZQ$PPO9>ZZ8GJ7!1ONAqQp1FL9J_-w< zct-ekW3nbHQIn1zm>`TOf;7X%K$er}_t}>Oc&dU#`LQfFP|a9@e^DZUr7pe-RSZ27 zCB^j#%AT^Qd%j(|A2GOp;NJ+GDRn2k0uwEQE@g?gdEArH<|Sb#ZN zOz){m?_+0=t^WlRs)|#O$XawvtYLdrS-@1KR#iqa9i&T+ps-X0jH-|jRWo3pBgTnnHcmWiN#w8+H&o`FhzfsMY zbfvI+x{=|7e_Q@zpwj5kE!d{%f?(NaIH~~vca1dT+~Au0 z(r4Fb+VbL3roiXkb?L{x`!D}A_|7-74Z-w;7eq&;8>_f}KE%Y%xO(Hr3hhGd(N0nw8Tg9z*sT(uHCEL+I^;9{H~wco>hwkP>u zOWLC$_?V~?sw|c_`Z8n|8llIFL)OoqXWa+YpN2W$G)$}}B(MfMBB$j*L^WU&169fI zY)Cw$W;{z64D`ExjtI~5AFtWPc+@BJckF_@Hj?k2#hjsf5eFM+j8vxJ(R?`Euzed+ zIOElTTm*OIZ`%kGEw7&f!Rma@?PE+2!wf1E%@Y+uSTHAPx*>WO=TFh;_98Je{|OTN z1$-&VuTJ%lcP!6-FM{O&UVdjKH|F?n93B2$O%5oaAHabD(suX@GK%y%3%!!`FGD;$ z<_dfk%}2|QnTYda*hwSbgX3gSBS20jCi6Q)^MZ!VpL9k6WUyTjv9SL*_HnZeWuf{r z7QMvhqFMPP9~cMD0JC%R*ayZp5d0h-#+{4{L4KH1*b!#=}WEM7c9f zf0Q6?KWHtbp&zpwEpScx%Rlf{Tn3W=gW}2JyFeDFzPM1LAdpd&CbF1UFz!Jft`9a} z2CiiW>*0eDp!Lo&kO6@6L|T__D1#y#6te2saYOs* zB1nwc6iTrJg%aGGbI=S;R`kzRb{ zoa7;#2ZigHvm^>2ouoL7JRJg+h}9(Ys{Dw)lP&q)pp;PfJM%{GwkCJt0sIyOC|WQ> zql{j(7ga3)YZ3M$A?t>~Jfnl;zmK*tI_6KsnNr+MwfO3fSLcI$VvXeF#p{kfBfD!zpF2Ko6oUIEQxghnZSwS zYH}LSL`BiRnJ6{MC$YqIJvh7x8_=XYbO^jyv86#Ee+ z)b%W^kKhc{=al-lJ#A5%6(B*_I^UTR(+<$tB?obah=LD@!+jVn* zHG$`gLhJ(MgS5(SnsrR{hX92b_D!Xn2v8bU}sZ?5t& z#fGUhGXBQ2j1^A-p$GX^0dI~1A3^M};6&|@*mZMoloh1PevGT~=@_pvn8t&8N8V2> z4N86TJu@>$A1BiRB@}RfOchY@lSKv36jzKS>UQvr;`zCv!smjk9I0k@G;DJyl8}0Z_i*A#@s5-KMNiB#=}Ytt0}3xPzo1s@3vnEA!cVyz zgD=E(SVxHLL_8&)D_7uo&MFMZ$!`l*BSVsQY~tBe+Zxz^j*~#(NyU>6MX7-YF`Ezg z!E>+4xhz+re^A|i&B~BRG=oB;yndw=0u_p#u|q@n#zzlB>h$i%po&e8k7z1X> znbL6i4xw`9uJKcJ&AJ?1vcL7EO5kgm{|i>(CfkmqTG*&If_kG-VV%NE3&d!zwY^cw zqNGal-=zG}oquUtw?y!iqw|t4CFxFG*I#WD6UAqzcS^yw-z{AN9pl_ndYM}_gTuZZ z6^VZ46sVj2QJ{tsj?}lsS3piXxn$1Q zG81^HEcAumT6@%8<^w9K0%9t=3wK}d9Jn*Aa~p06Dy*!iRp&PObfX1S2z>r;D=$rw z_qJP~4#TRpK^9vNfSAnLtbKniO5TFx6iI-Buof~=W6?m6AGm8RD)ys~pOJj3o_tBp zzwbiGPi{nx(atDjrf)w;19)rrY#W0aRy4R1--dMKbP zh&`>mnjd{J%Ab!qQW!$LHAhHZW){yA!XeOCY`t8(k!01M|6`CNsi~M3qEcqG2(<>I zQB%brZebx*nPMP3nL5E5`73H=A$1MM6Oq-6p%HVAEs{WDCTBEBJgK@cIvp$3%FS&M)vO3KAmJ|;X>?(| z+!#hU0`tk-LA#kCGSj2z#DP{<1yzcQ>a&DYUn7gI5m`dj0#N`@W35}wk6(*f z;XEuU4M?WV^2;nNV>H!FYwSWoDw0bV^O6htcQeD81__;7BRNP`-)XZ{qNDle3P*-O z;aJX8wFWH&<SeJW6(`+oB16zoP<>?3S@0@SDaZNK5oF zF^Yv9QeV-ICE^AB%+Wc1ZL$+MTkyDx~| zl%EW><&XC9;*mc+!y~1(I77z+zo$4-#K7*uVJPTtNZ&wPH&PM}c*fLh$@?qXUFI3O zXl=%M+2SEMa!`fcdN3YX=OPKHTGk^{pYNY;^p|OWxy4^*LSM!0{&Al@ZVv87=oK0K zjjF1o3CtzU4d@;+xZSdQ>S%F`&&(6WEns@GxFyiRQ`}0JKk-g}jv}}pCqdNeC0$AT zWeR*znSPCjjTg!RAQG8ArZjp0=&cLr5)|3Jt_bs0qp~dIkGI+STai!v-DrLLKtJZW z{n$}2Hs9C}H$@^kee+G)8{&M40}}n@cWd&jHUdf01f7?5S#w@@y`SMqS!A5|MmvS& z40yN37;`tc!0$0wN%CBq)~ZC9$6i)$tsL*C{3-65$r0O-KrE3Q_W_=WEi#oK4|eJ- zD;ASXv;S;oO`>Pk;Nt|YNhMeBRr1m3(_VSDoWOY=TuO2Ob*V8ZZ5qYQ_&k_jw;YYcriqI< z!w5M{hkLmyD?TaCzM0rgD)6rKGm>dTe!!b1u_i7OMJd)WSxeF`Bf{4$U@<+Z)d|la z5Fud%p6SU}@;J-tVfmKcG@Gs9ZpDrfj_Bg~Mm-Zl(yiP+f@jzYH=@5CM4w7WD1b98 zNAQx;&MR*EsTR6j`foPyEU*s0L8IUCQxwt&Q_=TZZi5W=Gr=ic>{*SR#x(QI3I8U( zB_th`0mhX_Z#V8lDT+xmAE&%~u0C7^-#{$-%+hEgngA8e?+1I!(GB3#{Li%C9J+ig z6m@WG+Q#Mya?<= z3@~RHhP%-C>)6Sb?+J4>WXfo(B|Hp(bsJ!1 z6uq?u0tsaWcx;-%`$gdO4k{Wv0SW+K(U0Sh@)e{42z4i=icvS`Rn#+WnWzRA%@Udl z0^paxksjl;83y~5gt!@)5UMJCF_PyYJ57<&0dq4ZSi~Qk3*po*`#!jgR!Vo*!U0J< zFJW+~!gItG^@9=-oAj+&(;I`CL`*7vIrPt{yZoP?M>J`&fyKvqK$hdPv|%I_{s1H* z&0(#UU?lqB7_;i|ICjIhRW)xkpf6nPGhD2hjB1D`!)FKgtX6y-jB0A3ggQqEYB5FN zuZ7Oa7bw6)-GYG6{DLB1&{%Z7*;!4lG=Eq8+avL&O*Cp^N_TKy5FKI0EDgr{XKubQ zx03ClSgS^}lS>=3xb>;j$gD5{O692I(Tf0cdUW9mD zjhN)D6luN9hH_41o_c2^*AcOpHucl0l5_$aNN31-o*vj~qP{Cv4H=^D5|Q}W<^VZo9a2uVMbb^6NEueqY`TS&-a4jv_WJp6UXMU_s2iBnSbT-= zj9iJ*N|TFkd;T1oMQ@VG(|I5foRG?ygGV(jh!CRrK%7C%B&jg~uS`XVa1Djcc?Qon zsj9US6rC?5kPQK+Shv{9AW4;3_YP~dem3F|+`xYw-@oL}a~UV|8=x!u!tA1=D=blnrk`rg z_gpcOF1B{3IS4-v(imi|Un}L5twIHRgEZi0#zSX=?7UR^jXg+|BVy&Ad=AgUM_v~A z$WhEqHtQeV4{Nu-e3;}%;&!PrcuI-sp=R9wvY=T%(r_kVHE>U2(#x;|v^dgrEX?45VU3A1vbWhzr_*R6+kd~gGM^_Tzwh5b@aGURC)%-^x@jdO` zW;ekB)Ofg1zy$mGfiWZDT`wrw9$bnqM&#C$>Agr36X`|Zv_=Q~Xi5!rTZ(RsM%5TD zkSlaUnDu$W%dxgwF^#^11TY(3qjy^T3rZTUu*G(=ZwFHf1wkj+A%|qQSf7Qv9UQj$ zh7l4fV1NxSSnoYz5(eszbb=8R4Y3wN<`qT$+1WGLc~LrH4b?6R@|pO|_zoWCA+H6KgwQ<LJf?c2bcOeA!b!k+Ds*_L~3r437sV4`u79B%`3dV|r10Q`fz0_@H zQXyBtcdn@1;VyBTl}}GZV*v9n-7Yhg=eEW;LwBYz+ZCXg{EbYJVr#8U%m!7*Ew7)yGw5Od20CjFLW*<%S zgxMOLStF35YDJN*g)~yxF(#lbq&q9lHJSmZ&&RU!GJ^SUaTn8^HgkWo+e}L)V2Hjc zm%+W5uQ%%l4@jF>qncROh-AA6DKS21Wyoj}KHZHPLV!e_wJG;r6RWUjS)YZ|&)8!c zP`1<|eVw%_ENjFSBB4LKp(aRs{^iAgf!4gYj2@u@~;&iDeN*OZk)|F@1WOL>>#=|JRUrAubWHE(*a82h2%03mkq)7 zZUaBI?|eYyd=BkT2U>YMXKM<|0d>8WLmW{ZR4#`>)VIkaG9S*(w|ir*LzM`3*meU~ zq4mN6pgnaJ3vzcQM?7SkiSWGHZQJf0wAG!WdPVkw{~$Jq71A_Zp>?T1JhW5JC%SAk zPM?|vyh_+P(PB-l`!?;xGEVT`bhYbKTpzycPg|N^-Oq>l+&=7lMlKSDiV}zXqiP{_ zm~CZpF6MSsiz11bPYt$`zcqao`x?VrQ{)Gu2Y&W1bz`*SRkW*TSg_QX7>EqJ7A!lL zK2nl>m7R^~lhsDDHrTTo0nGM$GN7zi{r5j4u|iK1&U0&_S`s7!BPcvGVFwc8|PDDx{P2A-C48WnlS#5i7;Dx#WRDESQT4 z`M08}{Lmd&r5oMZ?%XTc^SJ~$lPy*?w-#~GZM?i6h@XMHP>^S7gZwRoIoo^}qdz#3 zUM%ci4?Yoo;`7j+UToC8yYQ9B2DT2B^-4pu5y(5HtphUwil(UFoKDlaBD(;|;~cTw zUA)P}c01x?ogXa8?0)uj3+gCpOn|pa$3d9oMeRDR4P52>QgR0g?d3SC)fTw#UQh2| zk7`ucE&4+#iaUtA_&vP5h`@jJ-SD5SvcCQ0;sdrCbkcsGHRl9OZR_@8u8hyROFV@~ z4m2vE70*PjP=bJF9I_3aKJUDTFWJ9CB*DM^S^3;{Uqk-4?6>dBim20TmxDBS7b7n$ zO~>8l>>|yU&F<2BNrlhq$z(XwkSC0SRi$+LnZTRY ziVLBnrES4zA=EZ+Gp!PI=9m`Pc3=8W%_xD)1eg{=5^=iq#R#KaAv-V|6|Id+*BLi? z_*_}{bwC__)O=NdV)lv2ypPsI3zP`$D5?&vK2Xu3D9K`JzoZUFg=F5hCwMp4`<9Q$ z3dbwFZ!M16!{@@BtrA+Q)>Lr=Xkca!z0$%}#XN8#pdB(q;YlTp3+wg&%yGkNDDTSl zYS)}?-L-FNpp-v;*0ETB{kO{Ny*~WXR3M=2vLLBo*sBbatY-A>RLIdv$|#le$5zfJPF0 z1Z~oXLpAuRz&renMcc9vFqp(rTBni^FhDeW>*-#pdMsu^{@|Z2%a8uqvg8X2^zc0T z4G!i0R5R-Lp#onbdQ%mZjZQm5ALXydiYq2KOUDEk=6eC41dhiD%Gc()pMd=Ag0!)b z>&6pg)^TD6K+z)oNH3{$ zv`VOTj8e3ug$7zBVjT(=?P%3{L_a}`Q|F+A${Eq=!1;cE&w4LAO+jbokJG?@*X3Ey z<@fxa-~IVL@n9()7>L(S56XC8pkWut5d0kmQX1e0o9)HJ-QgS?ZtCKykf7Szv04>$ zl3*0gRys{Favba8YQ?h5FAjHeP(DNv12Cf=OiX_q zpET19=1lyI3YR~B|!7J&INTZkTwCxf#_cp)Z1k(~^Dyn>UsiE)`M%7|US$ueIQ!5#yl+RS*t zjE~KgPkHPE4|_ahOIX-2mE4bVqRW-Zc3)7O z$smn)caQ7>ba8#yYc2H4E6)ABtbr(XW_CmG71>@2b!y!EsWP*C6@;XKmpBtx3K2Cj z8MY|YtwVJ}9gbWbWDxG|FQ4qCX7XTRkKUrhm`)!HFY~SAgr@uZcQ`3@ z$d}S~IZS5k7TsXH5t_S$YOoTLEONS(NeMxI^Pk1;F7`Y1WBM`_NUoSYu!oc^@fL!5 zvbP+>VCE63NNd$^(^6%_l&y8?6LPNt-kg81?Z>h0zuGQNxjv4+ItHPdg-`_v!CMU! zQ0?aGgB(AHt^x4MA##Bmq{-(=og@Nck)0w4C_3cu2Oc*!-75(>0{gn@7!k>0R5&zR z28x7SUf&IeYE|n!L5@pe@i-QSm4Sgjh!&!8bRm`F63-$WF; z>|_d~X9?V+TT-mWrneLxn9Is>!KLjtO#cM~;xlJ!a=d{mOZ{W(T3ZPdiL427x;YU@ zxU%0+Mg-Yhg#v`2AQgnLgclN1QEUuE(q9j_nSX`)5&j(SkY~iZ@s!|^oeLydC?DTs zG6?D+ro-xRE1cqw!eh5uF9GZOq+R~#5_AnYTh!%+9_L~?bNKeVJb2_xa`f}nhG-*b z&JwG0aWc3SP<>u=>-<$94;8O{z*`RUBpW7q-B}@vxX`)4H$AnmsV^oPp!o}^P@JK^ zz4|Q7z33-1FDj09hr?<%e$P;?7*=Q8t`vGkHN3q)7zP~Bz)l7CAR7D`o^cz5{q?_b zkTEUDvCs;@OP-NlpgQ9=GnYKFheQLA*$ow$gHm4ZO`y^>gW1M>nPr0)j4$H@ntPhl zB8S{y_1@ALF#q7(yXZ9?COP2I#;^0abMLCU4@?SFvm=ksC(pg>&>=0ti}mL-lVCHM zP`NUwT;yfRnCdx+$;LF}&8+ssHAE10jT2$~1<3)2YH_|AUEh0Nz2eQTmj zuVEL`j)pgI32q3rqxEUAW2!jW5#Od*7isf3XHdiKPeG;Q~|j(H%`g&syJf zGQ*SAH^MR5Ss+L(n!pe+3NfG;{D0_V9$QxTMD8)La|3Wt2K5M5f49bbqn<`leg~jk zHN17OEncjC_rZzBgn1o2x1u5z=~~f`Wy?OC(_Qz+^TG32-s^$q`dXJ3H;XE=bM=jg z0i1RMYY}?jEvs+642wSp%z&4k!crErI{5_}-i(1T$#O=*wlkwa#rpnZ=#I|7* z+Fsm^d0=~Sn6+1arWjN$@dHBgs^Lb4PF5+h+uX*N)!Ym5%)G2c?l3P8a(NwhtaYyb%BHFj*CaGh2<*l{`@Sq5o;r0U2VNPlyxpilB!6UGTj zFOd7!5Fh=%8U6eq!BCup6XQYF-K6Ezwm^GBOY#w*2dBnp@S8|Pi;x*u*r(F9{rq3q zJEUdh=+&U|o9LOn=Ygq|`H57@V!;$~vj5j#wSTmBIqr4v0@^NCjz9|5OuK|*z}V<_ ztQM0nb*e1|XO&=g<8-&dY(s7tDB_n{P0WP$&+p=};}{#`0HP7lSUOt0;If5+6kOck z;@S^oT)J=g{5MwHs^`Dyz;Fp}T^F1=cUqlS115urw4B_m#0F9rdaHz$-&gfLsxYzX zKR@@f{&4on0hVOvhNy$t6KE9%c!;YEyh|x?$T-7*-T}^ThPMaCA?V+&J?;h73+_tj zr|f@t^ym=qoFQmt|3CujZ&-y^djn>8&}D5xg@>(W<{{~Mv|uaD!TE0Ff5C@7@nBk? zF2mII|Hi?+s31XJvr2YCm<&r6?2sUlACr)@3R%M6!H}n8DYKV&foV(+vRV>XubvZk zyqjiJkSFXW_gE@^`_*Z{0#Z}Hu>%`V*o79WY|W=kc4W=~&k~b{9LIv30uPT4yGEzL z^Px|uMofArkqGg(>i6Hw;B@!LPeW~DyDN~(p=B(wZDS)(g?*&_{m{9Q>|G>HI3ILB zll6M$SjUq~qfQ3Z|7wxX>y*vT%x=o1j%&l!arD3odS5W%sQ|-3{<}$yjORqgGV^1i)24C$Pvaq; zO*gIp87fXX?xKnam%{oZ4?d92fJkEd5x$huWJ5k$7UOIcEehcs6q1@Xc$~9TX;vE)+~C$yx=PzPgJImi_Pj1;PfK14cQV^1V({xzB4W(R(No5O<=Q<4kcT$JBe zzBeZU9`BDsb9bkL<=->aeo_8>D_!_^clo2;e*f;gATd~k*wm}#fsgLl^rOIY6DKY5 zU;DsExtaH-ip$L;SM?1AdGVYmbu5dUQ?DMjd_}=M-~7Na4s>%~4s5yMh8q~3wdDss zdIM2kt6yEZftkzd>cAG@>zjf%H^e*d2>NcN5_Dk84KE`*#0O?DeGxf#9KTOz8%S6I z?o0RqwZE4i#Q2N(VM$)Z515K}=8T*JtRUMI*O! z?*2x@LR`Ho*GjQdfD7e#`n}AKZ!hK-k&&Q)y{VDCKHZ5i)F?17lgG;|Z}*mW7ewQw zM$!{?kLczyh((e3v)4EhKN9_XC;_xefm>&zr%iECDPcWe+4jsH3W0GW+{9PWO|IRqv<6PgYZ{pppKfG_z1cAU z?otC*wbTGznoTc*Hq&0M3^Qh(h6q>EOBD1+YQ)5wyN-#MC^7M&R&O=52^8O|gv>7` z@y3;Z!-qb^2<)$a_!!?@yos{SyLi0$s(9(2@~Y9tk|E~Uhj`zkwb4!cs;jPweO67~ zLEJ_!>HXvjzMP>jr74s4B*awiN>jP3PVk)|!7gF3?4RA_S7maB2^K!t)l8NRWK_wU z^jJLEmGC4!uZs!dL{;%XPZx;q15geK&UlFjN`LU^F?IS3izaOY)EW~qIo$=@m6gZxt zoA=+9n^p|6wrA6gzaZhNvR{BSoq8>j-wZcFg5I+yd;OIVpXXd#w-0!+`PzE@fh)tb zQC&$PND=v&pwQ4T-_KuLL#4dh#8p92X1iW(N7jh%Zvg_&Vzuq_lSXbbrG5=Zl*1#Dq-XzDA zfO?oFY@971z9!B(!w((>X1Vn20G`fqxxC_2&HC*8NtcS|aEu6y(G8K}_<5pA1y)J_7juBZf?dU_6FDk$3w#|Xi@zKh8oy69zsEJV z7WHu8xznSpd!dHcFpJf8UVTwAkS_ug?+w?3TL zU%K~>`TEcJQ@*>sHnqsTJNy09C|-WPU^#-gH`%?zNAXwlwEtKG3y7DX2;k9iwHZpY z)RIJ!4QNd$+HAA?2>e;W+8vAJ_d)SrJu9*xFxl+~bPuSlI389`ywGVvD zFLuWpTd^OfYI04tXu$^aJ#3%@HgV?viWNz+N;S^1fbG5Gj3Q1$Z& zicZoQd^Rfc8%-I1E%RGDQ<=G_x?O%@vHv5UZuidAkC+PDfhzJu<^KZqMn8Bj_Ag@n}I2|(w9Y9{F+B>o(Wp~dHlZN^n>6e6X!A}`gxvmE@aI<+kP3Bu7 zWRrnV7p7a)gRGt_pW=A0h~flU1E(Dg*cqkrsZwoAK}+jL|J{9mK^A`s*K?QS2xwAF zR2k0I!_Uq7ACw=|^D%$T+F~LD5c!=6F=zx?RBa7e{rbHiRy-*tETkHRJq;JOdbLhyNGlKN7G8JX*`~40{=m z1|=7 zH=2T$U33M7bj>5NH=0|JI>(m!#?`2cI^wOA4uc;JQOwJa&R9U@N^KOu&o$WN*+0_< z|A6_#l2F;*mKDo((nIX{nQx%qq%UBRzB*QE%Vb`G@dnTVGgHiC|HdO5bL}c6nuD@n z$>;=e>TB~AHp-wSte|EFJUp(J=mX{a8h>9E`?TxgT02peKU<{k1pH>op9r3&W*cag z2#s_)Fr__u-k@rrwnG{{hZM^wcphwXe)Jq-J)fTQQ~r4#a0u#>Co`j&Pnv(EaT&Qpf6<1PG6!9H(1*2qF|s$beE;OpZ*7mwQYlXo}o z?j-e&5|Y6k^q&xykDK(>teg;hdCH~SfIP=R@_3-I-YNglGKV8Ngumr22n3e88HVFh zK8T41V^3V)!Sx+j=e8Gjb`^?bgEuj|Az!o3B!339=w-eLhgGPm4cA`i$-0Y*7r&a_3%6;G^{m%}I z4T;|!Z#J5Ra)FX10Yg1Y^CUDBmE?b0F*oYf2W^b6^GPF}a8%%DJ9x2pwQbmaVe4?0 z@TYG1U=O2B>|zR_zG-N>9uMBFHkV&`3GY0VmhN{I-{NHMNHfKXs%MZviM<_SIfssi zrnPm?>S|T~{>H(&)^ZX5u#Oo{6;W3yskpf#NDba7J8?jP*25k3YFL}w^-ah$w0mZD zn7tM1`rZ10&-ThcYmqJoV5Pf{5KIxSdsB#MYy27>a-1GGe%nsQhH@3@Ct(JD{Qw0+ z->|L?WAjvy@*z{N2P7ZO9iSlOo(9o zc9rHVE4Z3xY$x*>%6NLVswL8N20VPfOqXn^+ubTnGD4ohi__EcxAc9d4!zATQV+-& zo9yU6_VNEbPdDk+#ly%!ipL}-dc(S0C5_X;7f~bPJ)x$W(i!i(DLMatG&*`8h|~-) z5@5Wo{G-LxZ)i*Ox@1TeV}2ZNyFLW#5!cFFAj1J0_hTjuTl-hTB*-aJl+BFpNE2G; ztOWFlU=Ul0PF-KVi};9SyAJGg!zvWAya!8P%7SFel6bmxi1i^fy*|oXLz-FBfI<3A z3qcu1E#QVOKb3oSS>P7ao|nf86W=&P)G|VTg@U>Ah-rx93-*l1>`MmO>eenF-&kH= za~w9q(0oGSM{#~|jR?G0Ud80MB?ySJl7|iaJO;1e{Pv`2#Zw?$-*HDnY(okCs+d?M z%`*0ZXXS@l_+&&bsA7YNsHnJi4J7N@MdxMP+NB$-n#a|UiA@-;T)3)PsB%A@gCFqbaGIRM{U9r7vTB}qmM}J3~_2Cp^bRu%I_!aAq_1C&S80+ zqyfAMEJLv23<|BhfIoH0SgxjTecZZMMo%f&O$9mO+xIEdC5)VqaxG-cWp!#Y?roxk z!F1aa;q97XD2kE_LI90ciqKp;5A>v6pN@+cut9tw+561XwT41+>jNfdr?Zh?xDXci zwyyYQ1te5VnAqu?YBQxTWnmbf6WgP~hCtXTRkas8tt`u+H#8cOa12U|(PW7xFotDn z+pw?LK=*@vqmTqc$qn~sQ4;0DY)0$?R5QZ=2$N%9A-DiZJrKK;viRI=di)>PKsTl% zPDg0`IRcB7i!-93h}%f8wP&^cI^eYCc|el5M$6)YpWp7ZAzUZx${XNk~+H|dJuJOkNch2T*kl|7j(w?nYO zmBqZkRz>Ta>~Q0bgG}2|sK%3-(!iSMX>j;4UZ+moc4vlBf>KBrd6camLJlMp zE*er<0a}b-RgH*6aW&#WXe~;9Bce1@yUaPl`FOx8EIpOtiHlBhbu7?5lHE0T?CEW0 z3gW8g%MfXHf$|V|#}xX4jg)KJhskt-ITOdG+F{=)8ai5WVLju@n?yH7yI4fTCyCJUa(bO7^zM<~*A9{dWDGH6MyWzh>0vMB6yQ|*6F{r4PIQQc?%v)cQ_(CF=1F%mB2raq(7dc5Y zE5Dk@5^KAV8i~6>?gq77M_HI-IZ(!qO%_!wp5rYk!!WMRAc)EdPnZu%Boe)bVjagmZ(P&9Arm^SeDer23UQ}(j8mBFGl9fsu|x$rQ(vf1be%4Ucb)nnfOV(~d2&FZL)tO* zL4L~L+bA5%C;@C^&?62jFqEt7qXj|>y>1jxTt6t1#DQJd5Rj%8PX1{s*q-fpX>l*z zL}bj!yFsekxWo%`xVhX#I$kb=R(0xo3!_Ck^-3x8+Fiuzgi$NA}tnh{#K> z(p%e#w4kL#*=|lsEgE#PZ@7q}=C)0&Yg4#`Y$*b?%UfO|&NN+nga$i+J7h)CAL~R< z+85m+G`T#6l|5Ql!J8feRB~`ui)>$-Vtnv=2_#-IR5f)|Pvm6d zC3`rwXRJoTlGtK_Z>$hmf>ov1iOHSI@ECeGleEAeNEu`<;47yl;~9?{{f8x?@(mDU zX((+bN09wXiW{G+%8jH|%2(x^UF%JdQwS%Wn&dgSB3_EW1G`G}GicV`8f0Hu+?{I< zA)t+J6sme@H%((U>(8Rdl|R1@+4~2^S@y%aZh`qQ)L_)*9AB1g`PXfzM7T_lE2vb- z0krl7M*kw5MJ?LVxrce@9xRIGU-TGrV_|=Hk=nq^)ESwX*6zxJN|&E{2^|HBNqP*` zFGirbGVGAY3QfV~Ctu>oFs;!O(>Ps0yTs(T%0GIp2O47SFMkINN-iENY>bLf;`k7^ zfQE5uMe{!Pjw>jF**7nrz_Ub^VR{VrL)ar}$Ko6;66W}^iE@VZ5pP)Ijp>qGjrdwB z|M0omf8!IUk$HL!0H>R3yco%_C9Rq{h=<55EYZ9w#_q6>%+f_x)J=SkyABH)NT-9r z-;~5PxxnmzLfk8?`{#cqFMnV_qct(9&--D7iQcR0_w%`Do~H9w;^o!#oj)DBsmnVM z`fe|hzl^ELxA9&>;bxg_{p4-W2O0~c$T&+TDu%@_d1@qBfnnAtG4*F|Y1O}0l)q{> z(-&OK?=KIAMVFE@nk#q|C4b#~ufmZR`j-4@s-p>RY-OhW%97*o9k;OmxaKyh; zMLllL2Yki~I;QXX&odH&WMJ@`fz6E45^=HNL`bWnjto$w7rz|`201}CU;jm_am zYsp{Jlrl<|d^lOex6%Uy!<-X}0oUaZhrCWN=rCly!D?1u`R~E#)Q!S!e8%O*NKnLs zU&G}hTPi&Y9K&-#B+GePB3tDTkDCuOsN{lZD!h9jC8~xW&@~K0JHohSoC-Ibt+?X~ zFRGP#Mp-vwtpkX6lkufZo!Th_qAVvWvgL(>dTf}|{NSn_Rl~)kn%1bA)U}{>88+Kz z@6a|j&;QeUkgw^%_`8!d*?-?mF`G_RevG{UJ(dQ{G{oAThNy>GuQiiWtC`O*LX5hy zoc4Jsf)2*p^=V!Dv~ymt<9HI~c+Cp0JERwylr*mpcD9uP)Ewe6=j+BikfdLFPaLn2 zThN({panosMMi9h7nB?y z6%?`oWvJXNovM44l#db#BxxX1fEjJysFohw`y(5E`TQ^aUr(NUS?HUH3{)FpGDbD1Q+C7vM%v6``((4| z#8L$yOy|HxFMSf~-Sq4&IC~it8c;yfO0NOhWk86K5hQ`y!uBVP!aaykwHwh1x6r6~ z%#x653d~x7s&=PY8h4)}F#$pB(g0h|7c(f*gel1(vP@!pV#->KgdNT?6LYLJG77By zs6F{;0s#3Z|4gDm>uW!ls@ftA$iTR!9FLIMinj(3=+`Jp;VbuSDW9r1d6Jl}RuiH9 zcf`?4-=GHeI!9haYRU*yU^+)?#nGzuue6FW%V~!;*wewX1(%w*5Z8)Ecu^tp!$?dI zTgnD>RIWgzR>&;|Y{k~_aL!FcC3H9nMqU;MQNBAE2wape-EjbA$3$>@A@Q+R3fm05 zZ>mPoh^nKb!C;^vA6u}3HVms({&&C$*^`Aga*gumGox0@pG9iTh8g%(|HGZc2CPHk zE+XC{IA;HUD{{zdmBAw4A^1!%F-K}bP60dU} zk?gR3lV?vEP)rKET>T6Jih`uz_! zH}mF6xTCo#-MxH|H#|J-FD38xm(LIR%lkY1MR|QFx6*r?yJNYv-rw9koLlYD=I)W) zdLQ+Ur;qqc*@yk5hGYKn{vm$VX%Ew9e-H61YTUpM50*d9IFK4QCP)oM$i?uuq0~|I zqD|aF?dKq`!&8I8a3WLoK(i=*9EWhff>#6h5 zB9j7hA$^rtLn1#{6RV^?&XJ24Etn`o^j`ThIZ0aR%GJY?m-jC2m)g}CDU`Xr+2a}O z4z)ao&4wZ3!mP3jd37fZ%$GlY7MmJ=@HDChIqxKww7hvCa&^)fyjZ>JIps%Z0l<1x zumPeB-SL#xad(a_OuEAs45B(t-X*q4*b|~D>O+uD>?XpkDieSEr}c@jBKt&SVCoY- zvzb9bp3Gty^Tm32Ig}bs%pVv#BN@YqXpEeZ(?2hkxI}xO(f3^536sQcB*wym1B3z3 zNDl_xa;-qOX0Fm0$B7qzT5uXLMq!d!#T1aHmbLL1kD~tZ9eHqKd9YR2tkDrd-al`l zOBW;gPXeJ^(Hpb#93+i2sRmA&nA4|8X5@>}Mjq@%>;VIf;d@>lAD60$5`V}HP?5r?!VGp-^uk?;q&(D zxEj1riZ9S!k70xLV@y<>ks6n8VRX&qxZO~e*cgLoALJ#)8d^P^Qhnvt`9ZW zhiLKc=K5}~4|84LF-v%rb=-lNFsTEb`Rh$lXw%cp<)tqzR_9X1m%X&Ofy?@9e9tew z@8SY88ijSLqh*t+1+lY)XIimU@YOqLz0%DCOtkha%sqJXWWb zS7z+CeIvqPK6T9=^6~Sz$u$9fbSUnRFY}EX)zW9<+w^6+#VTYq+>p(+SoWWhg*y{% z%1}m|RO#rZCuVgcJ^H0`=4x256N`-RppQ6%;wSl(pu#;92BBqxI_wV&!p*DL(u%nZ zPO9z1dZGbTy5mRzYcqRvNIs9G&^~hO;51UQahY+sC3HMQhdX=7JNzE(k!#V5n|svA z?~T3T+{)#$a#!rIzf!U2v1{~5!O!ORIF^aPfR|>lON}krjsDKQG=pOr&zRlB?+dd- zJ@%WjFkZ?PzlbRC$)Y;_W!W9j=pJK5X(-=+7TG(IP5=mZ*jEEIIoiGNbJs~fHAi_ml4cVvAUi_(SsxBm1hI6EtahR-fbD(t$Ig)_j|zEr5tdE-4O|S zbhq_Z9=pw!V*?@^2ft545Y{qWCQJ5L$ZDB%gdFw1UbqvQSu|=QW>H(9bijU}WENWr zF_=_Ga|no!2cRd}S#+ZH`VCW_S!NOm)P{X;8J;#epq>5P!{?5<^~~}QZea(oJHv<) z0bStEMCS)YmQUCyj7eFbKnkDwSvV%e%dvO378O`XJJtE z9&B1uCcbJ4O0tqYoPy>(Myf%cZNxEhrf{i{R?DChuU()y?0X5(o1_wp<%a>~2u_WZ z)_Gy^@WRVNNDHf6`7*>OMkK)^j9(Edp0EDdEJy!w=hG0N^nCvC%Mih(M z+Dyxor3TL-S3LrG$indrIuvh?T=?T3#k2EJrP1X8Yy!xZK2*5Ln-RI>gV- z?GZM*H5p${pn-CZhKrtT^>C6sN0G=_fZQ&1<>LTiEdgvn07c@40E)NM1n@>(+pN0P zZbJZ{?ob^MzSfb_p}cZ^LzkrB43*2TcZQ2o1Q4LDc3Hv*PEUi_3hH0?ca9UT`DGV- zHwYkEL2j}fJKl)-lmJrcS^|ivrwICWuLTJ5g z=wDyN0XM{eChtQ-!@|-AssZ!JdKH%l2am&>e2UmYY9%g8Oq}h}y1fzR;Oe}A-^rSN zns0pib$<~>zQ%84=4b7G#b>PBr+mh`W$MvvP1eM+REfub6D!q-wmTxCUOij!*~|dyOxJi$e}}UJw*ArvPoM9khbZP| zm&mbMnsnz#mECvypky-vVzS3JqI+PRyYH3n{eNC}?!ilSY6a21Y)C*s(5PIRlz|M) zB_6g6IiezmgPl+v#9k3pE7QY*T|M1!2nhCpI-`}&tG1~6EI}hy&z*F(eWWUHA1>Wa z2huCg{S5nyWKOwd0FdUSe#~(SQ117CDj)ko!t;Qo+qFovp*nQQ4>5=Cra?Ty0WuR> zGS@ThWv1E-{^#!o5WTslI7m9Vrxsut_e}{9e5=;Xs8-pUn(ZMS;}X9FA8hR(*_3aH zP;KzUQ1h0?Hb_ZUKCq6)5y=eK21XGf19^;hf4yb@{rr4HhDj+bWh<^w{n!KUHux0>`JEnY{=@L>n~iri~f+un9wgPk~=}p0-anTHd;6I)S>KI|2!~e#hAwF^fjtCj+Fu+b4 zAkcE?tl6uu5<|xkOjmfx1F~Jr2_>NsI%sqdf)mgnVZpbC#@s&*8YdPL=TBoLsKfzJWw_r<0t&QMgMr3ZbHxhas&MTxx4V+39PPnq zyKJQp(q5^ST2 zuuwn_iy+d;>2+#oGR1_s8IL_0puHkBf@V4>jb9KL0?~}lMU)nBa*@~vBOK^g`TZ;) zujvbHB{~k*;9>)oE6RcO+$^t@H*P|lFQS*#+*%ruEGZSuGW6}mvO6B=h!Wv1~45@xVO+pk)FwKyT2(M+zjoz6fkhe!E99c$rf4}_2%t7^b zB3sB8#2D)Bh9H$ce|q@@hGPE(3pVN{Sl=hI9Rd^#FW;b{wy|> zSoafzG2t;Ct{?lI$h9~qSeotB6qwLiTx_>mS!<@1^M8(dhU`B}2bL}Z*bNqvUk(d4 z-FTeQ(T|h7A!>y;o(hlj@WnxdM}43Q z=gDBnuuG*S%&Nh-&9X|~in(o>!)~UZ-!%PPY+Feqfc7t3F1rXM;slnkYNG62J>2L{ zg<$_^igDU0K^gb2C6{_t-U^@qO@@(zao`gnH5a1$V`Hr0o&XDj>uD|xuO zfh{vA_5_CEV*|RVt25VL`CX!R>ID2q^Zrc=*M!C>{juoFH>b`l(bUHB$re%!j{xsn zxL6io7!4xKxxXL)*cO0_v;weQ&*?L7*QXf<1|v<(g)0*yGb14zj3))bO^71EC0urm zuPn~AvrgV23XA4kn-ou^3I2Ub`OsPHX~H0L;v3F{Jd1rypuVhr^g;Qlvry{_xm~pN z_Nuibdryv10o=(AOqZwd9$Ps5al!jNVfD&`ARu6Xc;-Q_B7aTm%U_P!aZ#~;I1Zk_Vv@7S&{2Y#yG2x?VXD#((eu6u% z8QZU(rMGW9C+&Wxas?%4Ef`28jGzee857)0-h{3&C9~y!S~MXv-A*BKM2RH}aa6@H|Am7D!4Z!M7X-CPaso$|EvG(&h@a{0#~RqxpFPP)&G^ zGn#l!G_V6Sn#Z0azbXK|)eb?qs)`f5qI&j)C}~Uf%|}GHcEz|UItIl4z|-mkcG3V8 zfoG9^+NElL`3-mU!f5}&9Yryk^oo4Y#?u)nMab2!w>b10^amE0^%{aMXOxpv&?HXY zB;dN$#E+bry^tl5A#9>8K_aPV@zq3BFmFB+y%#S$z~AhmEBU+q!Yd;!O?~*G5PMtB zXMGQ$PUue3qyCa>&#I`lQ_rqo9P6MRYG^z&+m6888A-F6{#r?yu6mN3g7t;Y-GY9> zL|Khs_Wg#OsVIg9BbL!Kp8x5h&cUk6QA4grbCaV$E{V5xzxFwpk}*RElv(y4$f2V3 z3sL@@k9GT@$e0;9k9$xw2*mHV=?==;Kcze1Q62i0Pgve z!?*nW^C>>JXQ{RP<+F&Nx?tkb zHvViL-~(SYP?caxaS{l8%>WvO!l|cT&!lkV16Z)m>Ho@P7dJ=7feaW|+^I$Gzjo5c zscZ%Z1V845CzwB}k_hC`ePU8MZ&5)2$B`=skWd3wd-K)zKu|VXgzFC*NY#6KE@PE| zYH$?obh9?WBF>mD>Z6MCr#Z^d%^6xb=m}&a=LPi9Z>=7iM%a-vY|Uu-M%EBEKnyaW z1bGmNcz|AR9D#NW(&|U&Son5FB26EgpwJ@N2@`A<`=D&}R9M=}ynJB2-iBc4M7rYdFUbPP8-F@(FeZ zcM8mo?F?^Q(;M2({6DqL6Ghig)e5E1D zlSNzey>71-Cz|zAV`tbH;QrRd5C+w(=OQmJnZm=)peMzOS>_!2n8ks*!+B%|*HK9) z(O?=rog^8#Op9#-#LO7QZsflY05E9lm8!=?jXvkwsnI)=8oiw_LxV=+wfd0Bz|n1@ zr)u=}P@~&4mqgAY(7IA`bGlPJp`lJF(wZ%jhCG+7QYgEHk{~27_?nv`!jQsraY{lm z5{M(weR!-&n|(0;Bt)CoS|kA?=WGHQ(LpimyQLLstN?`G_!O}NbsAwjdYcZP8809E zW}kOQqFg?(b^X_lv!I&hGPW)_C5?7mBotBJ?~_M&!0)`8w0o5i*cPN3T9ClGrLiK- zw9cYP&rqb%P#XOiYMl)l+(mX)XMP(6oj`PE1Pyvbme|3Z5C>8U5`e(p6LjM) zs#7YBtmy#jL&u*l5pauCz(dV3RG8hYdbVKVW^QVS^8oDn_-8kUkfgZpViK$x=#o%8 zu0(cX@&UAg9|78Jlz}a%As}93@wD2YYi#0_twG|hq7p>7$5IOrT)@oGR{++i-tcGd zUMR3XfLMjyS89ggMN)zo0#bW~*P$9WZ>eOe0B}XeX^I>_X%TE5C_7D&)h|8Y15wws zf!5;$JD57sSWgC;Y)8L6*tl&RRq zq}3_34mkK2`I)+zkt#LrJ)r3}Y7h0Q_H;!1SOBb_ObG_&sz>ZHe((ytK}9K%C}h6S z6QCrGo&cFiuTXyy@gl+*vEw_C_!!OM-z7mV)rnCE({wQopbnN>CPoZpe%7#K}S8j+n4A)snqourADOS=`)M8E&? zte}q2@p3D!&?fXIWyWafC>|*xnd?VCi7Qj&t2hHx!gcf(QTwJwzgc9)d`x+8O~QEV6oOfBCScedS<2(X2qs==XuX=ki~KOJ*5Dfmp17#3%89QBkcr4|Pr~NF7yfmw`*m z?LVU)CZRL*@$`|Ehk$j=WK;-Pgx%tIWXy2;$v-Ft)MCRGi``Bq%ZnCP3~XZIlmqzl z7qPiHz`B^i2L)1MH9697U zjl+EXydY4<;xiG9js%Szigs9Z34AQTb_nWKr+*>+1x{r9=+d-Za=L&G zZ8PcrC1#JXfaaMcdFHJM9Od|)XZ`-~7D?k`GCIi01ZbGr1EkdV27>8(V`^2!lKMb{ z@UqR~FOr%5Gx{7W$T(DVAAm-Ib|_O`fR8>1KU}(}Dte*kCEe2kg}ATF`uB2<)U5yO z2U_(f+vUF=HNnD;CaBCNXp#r``cg0GYwAV4A-?=fyV>bv^(SwX#U;8J zH_)-@U)*4liO$7M8eeo82=T213n?HRh1_FGN}AMNIqRMXQuL?TpQ5W&aPWwgQg09I zpGmzH`L+2mo4tAiW*oRqcqKY@($U>)MV-@g1h5!dKjd?;0tw!7kLHjG( zLE{N<=3V4e128lLv5WYZ^4*)P3F`Bn*i*w&@-^kt8_~afS7_;3`83J7VpORStR2^s z?=8x|6waxN5iP=)@w++7VzG=Cj3$6W^y>Qe(HqjfJuoyz3SsM(H<}uJ19MmBA@t5L z#{5A zt%Nv0)rfy8Xc)9+QE?(d4oRALNh`5_>|pfW z=Yd!=qvx#XFypzfM+3;9X=6(XSMjy77Q@+)v?OSKP*p#RE64=C7N2dfP?5?OIwqSE z1SV{z4n{yRe`Epu{!h%110RNWFNhD3tv3!B+;`?%hx5ak6s}h+`;Skbzp~iL^-f{a zXx07m2}!*9%Nx+8x|s9pJL6LOeZ2{t>aOP2IF))c4}LNpbo#@&AHuNJzufaS>@QHN zVhX{#xy#`+-~49lKs94d!dVm>LTY@V1PDoo1Cc_SAi0?<18xUcTN^j$Kv4ANBX(0ZvrsL{Y2zdi6mE_4Lu zQxyTzXRU~Dso}KmnW}c1H}!Y&`1vpzA~ZR>@6|r~Ys z{&F!AVyic`_yggH1%)v%IFRTuu^hyDPv4o(r+i;eLjkL#e4`8E-cWfyqkI58z&;r= zS9B|_Quf*0-%HN+8A7?RER%n~vL|%d7y_PX+G>?QwSEB8r9%K<$_3?E768Mfk67qf z|8!UNgzKr!2D^yR029B#Dj5e*UIObF(4Jt2UZf#u>wb8k8#w(TKCml6b?$| zI&?5qp(v9@{Q(fBi%BCBOn;0-p+E=F6FO;;8O|HxicL<~VIQP=BVqw)#a^H^Z(;Q= zqyU72Bxf|DpC8YKg}3=Q5;r+nsc1sTMmYPAMNzyX+;X7FZD=;#gFva1u5KL~?VDwn zs@8+$x7GPx@3ZXqxuc6uSE)?qKYN;i7Z3v7*$ zVHf}+Foxo4exFy1)zYZrQzL-JGU{80?NJr&r~>|xcnIKh2X>z-<}Tmw@&+LNn9^BG zl#k@@4MXN)O8alkf^(zpfC5mi3$eDb+@8$+8-s+wKq&ZMj44%zKH8l2?14&?qWR@b zu~Y|iXw*KI>?MWq|B$DA;Z^KNAQug*%;P>=<(G2>9<8|9nc0iWpUww4%aR8qFz3jF zAR}}z(*Nyn5lZ*U+tGC?f^NrQ(g&RS%wgcfqE2f4SW*5c)lzo4Y6_H}Lx#mgK$JgU zId~{T+;*Pic}48&`oPQxnkPr z!FI2r2hdLUI(DJbRcqXVR4O`zZOxFvFE;&9TtXER=pTrkq;L zqr(qwO8Fgd)oZeqtIlAhb~@z;`DeMT5gPoai`Hat7)Y1sL{gI;CK^SSUi`QphIG_ zDu4NG326YQ1KwZ`K2@0Lp!M&iK>PZaspj=x=X3Olk{_I{Aq$Y^$gWiW*;fB;tNfK& zNz%H}20oH`QIJrTrXW-gQkM$$`+wUi+9?Y*Fm8=x7!I6Occ8;wX^(43VDXAM@2G~} zp$2+4Q!E$DP(EsXi+?UliKstX^)Aue<1#}XL|wE-e$f(v(5u3gAULtdl%Jeqi3<_^ z^xi>lgGlkO zSYNn~hy@$2Iv?Fr{b<#@p}b2?D2@)Gccj-vVjwxJJwCBmdanpIf(*#pp45Yfa!>yD z(1Dy*I?ahL^ax%+dmeFHLHgk9mTvkxrfV1H=B_FFfjhUpeFoL^iydCQv=U2XUq5?KY0l=+vLLoav@Jv{-(hE7@sI?E|5v4{6VF>O-FTz<}*T z{9ygE4=xgBjs7#D7;Mp)<)GylgL#!##VC>qV}hehY>K5Um4ePQga}+J-;A|bkE6z2 zCm0{0{0r{&;XLcVh?%yTWb32a2u|Wuot5&N$f?nj1daajR?)k@@bsPISrFoy9i0Ve zKl(?n@Cdc836Bs`8!KG$%Z0C8jnBBD082;htiLfEcY^d5GaToHZ7~ z6V($E8YCD-hjkxTga$GVv>t;Dv=oLBtb6^#sGXA;*5m=uT}DDkmrgh<6sCtgXOXq$ z^^CKK6T?}=F2O7^+>Z08tWb3uDbKRV>R$!g(Xf{Y$CT@92&ZJI(k z>lB&+tN!D?VkyZatK?5WC~*xPW9zo&X#wSLcP{<>g8>-QYXUQb}& z9feLp*8lkuqVo+Ta|u}mA-MAFsBYWP_%E)Z@g6w97qVm-YgzyA$v1`f!bf0G^N1^` z2;zmb-pbBbG@|Bva=014s`~uw9#A=MtWf+0v%nc=3Jy#`TEB1VByj> z*&=X2!*4;R3&7^t3l0qDw9(DMYwGuX2Wi%12B_X!v;l*UkdHvQ7*ZaMD~H#RMtDip zCh=5|xZN=}WOAB`r}UW691eiN{8OXnnNPgg&@${Q(5XR$co%o9jj-JPzl*L{!?ypt z#lmY@4}T*ntPqOHAsB5#9psfs2yMB7*_>SQ!(L|OR1ZA=Dkt4-^O9}QXQ-r+ z&`y^U=l=dATJ-la2oSSd!yhqq7|vZ6J&o>OM>UwYxi+)9j?Qwt6H=UqQ?WWvaTqlrOW-WW$?a8)0txpNjCE?^+9ta zH`6`QIxy~uH+!LGjZ`2>XEgPb5l9QF*mv0$zk9(W$X?n<3hxbR1Bpcu9&Ftjub;w! z@ixBW{V{!}AwGT>dRhJy)Kliqn}=ECesVZRVEsH9?i*tUnFRu^&@$c)F)RPLpLPa_ zYO6izU$_6UezA~N^|8hS1nP!-pOUfD(Tr6zI&o&FHrO2o*BR#lC7r470qYmRAf$vP zdZ_RN6)0b~Wl*xJV&yUeY`3I`M_Va}lrw`#21rJ9S*n#S@rK$ZAJ}d{BOGupj`53$LOshp?k4rMpM&*uLJ*7?9W0RpI06AzS9A3OpA;P7 z;6?d*2oY5J4K6SA8vZ7|rp~XufU+%{+%D!ZAztAuh%$b3Nn%`ElU^JJdEFFbLdBe6 zp5CI)Y?sn0oti3kJ3N4%Z(~xl>49_n1u@msa&*OqIP-_b0!{vBhY)SY5TN(pY6wv< zh7bkEL#QKose#345P7NA|(>3g==(8|Y zDkA*|=JgDrp~>5-V>+-4RPx(~EUA(Pl}RWqkC9;0q-z`kiSo@Nu^0q8KsvHH(;Wy) z^aCtp_Oj?5&$v~$VY15q)D0`dv2f8n)>A2Yhwl-;;7XH!Rk7G+6=&)R?1QV{+4S~? zoXfE7XiC)b;tOzxVRWM7X5Hiyl34hX(A0E)Vil?4Z&}4nO%<`t;v~ID72o{rdyyi} zru&#$-)l!Nic<~UXyqM}2@sqQ2G6LlJ3!L*uP_0M1JCpDh_+6KD5>2%Et!%vK+>Jx zR>~zSELki@WyZBJW%%cr2_&Zds_dHH@r_1}feExdsgV>E!4_cvXeEyfN4(kHUm>#x{s2B+p%h+$K0bjgBVAZ5z@o9%Onr?x0PKPQJ2GUW zc7TB9=ItOrXj(-SPIBjff?o9V2h6Xwn+vQQgSfSz;i)<_P z@w0)HF~kT>XX`_fB!Xw(u&062kX|m3K2!8y!j%*H4F6cu=UE-N9J%4Px&O&N=O^v+ z>_5NH6(;q5oEBZ0~Z5v^A$;VubKy8;mpk9nb{B2#}w!o zasz#U7tmi4LMub6bvj-v@aEmgvCvGzB5lu9OKBQ{C{9g7(UOO<*`htr-!B**r(lDWnzuQ7Zy>`8}IKs8ja zcl_Iic%WjRB{iXjTE|{qL#mSoJ}2@{FBCqvVI&m4j?Aj;32v4{Qdz4mlR{VJ=RhJE zU95RGq@SPV=yW`Ya7RGwQ@O5RRWl}n8nuZwwt-_%Mj$1n$p-9oEF?@MFwX9ZSxzwR zFB~BWaCv07`IXu7)>qwrJ7ZxjPZyNB_aN-Fbr=G6>2N8~d0}m-`>LfEktA_QF4SA! zcpm7s@S50sxL|-C8`lIp320BkU5X>sri0by+lL!R>}aFxNQpT<1IbSQRqwuM`D`&1 z%J!B>PVazcuc~IlUhqFsA-H_<3Sm`GXK2#oCDIsxgu&uOJ$9a(X&}O|cVuvCGmyc2 zjBvm?jia)L8#Tc3pa2MNuO+&2>V@$Sy~HBspel(<&tfy`?}zIszlxDs;TNj~*2gs% zf!yiase6)cl04Qku@huIx)ponAjB(ho+0rDHCOfkgXSn3ZPl3pwa6Me;Cf41R+rSk;*SWQk{AtCWZNiDll_K=nazTs5dee&XB{;#?p%N4j91%#1m~gQ84I0R|Jf7U+YfNAtrrZ zIG?ObH0!ckik%u%IEI3hH^Hpez)TWGZtnMk(W~daNkffUi8pZ&*K9~jo2uC(w+%K; zs+c`VUr@W+Re7?WSp7_8CDq2;Ze_(h6XIr5jtclQ&#VwoGM+z}tQjy6#q|5`_7+|M zblW6!F#Hge1WJw~uthPe*cS!x(~JvT!5fC3{ z%TCbdkfWv6IjBQZ1b1rbaVMJlJ<&Ypa#E9AUbOoIbGF_KW&1fXy&y_zx1MNX_2#%MmLa3 zSu_4RQ4F8m=F!QH&*)sX%7U`C`yU3KJP{VKq=s3W= z9gYLmGOtbag)t51Ewvkk*ol)!Q#ImD%q5hJaGc_r2L`7zHexy(XizH=Q`B&hg=YTH zNMsxg2#xQw2vZ~!zPxvK*vDS~+v}=+d2o|jIUDx<(XP*+h}?5f+iWzYyU<#Ww%M*u zZ^8^dckW$;G%P7j1@l7IA~`AOA09;D6R|4WQ8B0%j}cspx{17dBW?Zz^pC(}%@<42 zIlFPT8fPJ8H%;tQ|rl?Bo^!$X1+4Uezb6j+2Uc{tqYQpd);`vd$ zt3}Y8o^}F2gVTz41Z*Q!CqdWu-5zuq0mcQC?W3mNYr!UtHZ1lG+bjf+Kr1ZSE#Gr?+Ph6EkCt>Qp01- zH;?ems8~YSCwL>~Jq+ypsl2J2rk4^W+%pbB39_Y=!h1v z!@C$^Mc7TK;skgzF>N{)6sJrT&ktGH^H&(~h$KQU=P@?mc?f45e5QTPtK00}4qgW9 zjRX=pCKy;z-hXyjbjvr>xgg1f^9MV?^Ii^!f%mB_d8_;~+>xqsRTM+8Yr;taCPjJQ z*#c=L0-AwUbF?<209&H{c4BjBl)`Fr0vU;J6v#w9ddhR`M~ErL^vz$979l=Cdc)X+ z`4~*{E%u2VA(j!-qQ`=5(?19C1&0QoVW47!hWnKv3Mr+v=)XaHl4g98!Z) zrcW0pbRbd9*@kM0*_tBL8jCfOY_o?$TL<%)-}yr zN;XWoIX8W_nqgkl0cT`p^aKSnk%Tr6$)&Z#Gq#h6)VMIr;|eQKm?RAcrb!t(EYYNH z%rV|v$|3POXDvrQp&=C^3)F=Gtw!N%)@dw>oMo5htXF>QY{hIEEWsuv{IG1)ToS+O1+vjN^7$YjT1kS!7#0};}Hj_zl2-bzo1!s zhoN#Gm_v9MefDP;ji#W=hY1RzXNb|nCm4UpSr$BzUhD*D<-KRi&VVI@TnM`(q$!%h zW9lLtd!1pw(cWOLwM;t!LRMTVP0YkjGlA|H&P&MfC8Ma#Q>bCoO@yZ!2DCtW#q2lR zm6=>=ULUjs6b<$Om0^FOX^s`+R^Mi2u491xAZo-y z;fkj%^Y!=zJ9qq=*;;aamJiT}eC23!9@C$ndl#qLr3qle$Sr|hz-rT>oBBlH4rK8 zb+xv=pLyLvcYX$yT%?BHM#n>DQH_DE?i*}^FOusqUNx>V@DDnc&^$TJ8Yhxpw80{N z+;;m;s4)bNoqXZd;pyJ~Kyf2T2@^2}qO_ZE{8M!AiW^N=K>8p}`vx0=JEvYeCoMCo z8~5Tl&ALh^MTi;U(fU2fN^UP8f#Y8AlwP>{II`5$N0`k{e%LB3adt66NRGo5xe8d@N-29M#JD8K9VBZz=mX+PBU(99EkIO;Woxr5${sQ=i z7mH8>xlOO`4raYbJbMBg(l@nPyM=h8cqw#-o17|0LPdmDgoSWT0_7%PEKSaEJ*z9N zaioy-Fuim$!_L^ZhC#Ip781Llv~LqR4M>+8@IyJO;rb@(#OhC3Tm1&~^KtbXs`YED zPoPu&Wv1=!{@OTy^n|$JeDb1x$|JTq^&cX6^e%w-yq}KrF1Qk8Ej(~z4OmB1I=C}X z2=XnN9u=J|y|k+IiQv>EHcKL-D_bs#Wkb+Hx$y6SZZnwp^xyQ-z78e5m~#s0Rzl}% zWM`Chc4**A;Dz9VJ$!sNF^ydmgnXuni%s%?wAu5)6*~Dy^bx&w(PC7CKHw&eaGvi< zi-D83Er5eZpF0i(djWru3Z6qhc~AC|_y}qI915lqmJX$Wv*kfrMRi`L)fmrrSt6cC zOEX|=Jl`FvwdHq%3ASPd-PrKKDR*Q84nl7@owd!2+F7qnqrBFR$^itW;0fud zh{Y}eL6au*#FfZC2y8q*WS#(KBo;h#Sdk2)1FP|>;vys!vNm{s;q)7-9}|cv?aI|! z*xv|QW+6>u$f?1|o%Lz9HC#k{U>Ojg0}X{Vuce^>Qk5Xl>a~X>fl@u-_yiWb5TokRVlQ0mUEaV9Myy*tj{u0xRuC=f-f+i)&>b1!vf~AaBPXlq6r(HL*R%J5qV@QbN*CAH_={`1RqEf z>r#QraMUERV4n4m5=6f7R1=?-RQlkI%gb*bx}*FgY;N4CExEyI0(xM4Utl*B``9rM2(=h{$ z65h8#7BPr$7og-p4M45xhT2j8H8D{;d8yK@%(_!4|GT+_$6{n!|8EFRT&XkPo{ul1 z{OH+r0i|IvVEIrfoQGmkEh)v5gw;N8VTOCkixZ~*9wW7_)@0lB*sF! z;QT%nQo~oYf3m*@F4m|ufMB8g3I~gdmphT*BirZNPew&CsaO>I;Z#wspU4$M!DX%= z&k6ekbYcRK5TNNSWPuR~H|_~^Yb(HrI%5>0dQHX*dQ=5tPC#5U0@&@=QMcFhCFEl} zlR5$uqEFrP=!?;q0O2BtTw+9CuhY)H7dO_dxXr$~*t>}_gU4HkbLBl}<8Ph~&KbMS z(cjm25V_eziUvRzQZ3lYzaEj*m~zuK0z7dAvD2Bqs}gE*i|jYOKLt2H$1hGXHdpF- zCff>#@TJe#4zCQ^T9Mk5o^*kdtVBEO@Raa}KBLkh+NB$zlS8-mn7;*lc&A=O8dLnu z$s|mdao#g2n)*&jrapS;cOhNr95d<%oGJ7$7NkAHe@6TS(W9;EROPkV?b$v-T&Ti5Mq!6wO6Vvl?vK2$;rrn;-t00h3Id?6VDQfiSm5qdr&Xh3 z!g+<~0A&k^Idn|}2!`Tx#2bC3h3P#jKfEbTErT;+h1cji6kTIQ5Yqf(&h{9QDSDw| z3XpoP`~!$x89U)No@hWvp9%xI9=>D(L4J5Mfx1kVo6A&66B`DVa6Y&K2#r8;-xqdq zG)wnu&Ltzxr3?+<;aVs&R4PO3QxHdyDIb^#X*H`Ar@2 z?7^Ca4uJz=RR4l4;O*CW*JFoNAMW3e&9;0*{jC1-`=B0uj1SR_Vi^yKeUNaap^vFQ znHc~J{M$(_RP5k?{)8cjX|}%otgAI2LPVk{tC%+o2xx(y@}<~3$Lv%z#?Lmyn_0^e zxG`~bmDgmkM+(YGqm4|ghcGQuX3>5$5Dxn^EoJ=EI;6+8g{cYKUO;rj!H_^=a#H9# zH})I~fF8(tfM32wGBJzv;&dV*vRtVRG@fFvHiGbA@FvsHeGj%bN8z85BLk}t2}iR5 zc-8gDHETQ4?B8+y3YKRe{@ zVXWBe?L}*;6`(^*W~uNaZS^+^C-Ar7oE!f8V0GV03UdUsTkqd(G zcn(j}63@t{3)@r6XQ_OoC7zV!!^1fVplvB45<6bXl#?99mymZ=(Hd)?yc6=x@()u&jCr}6l`FZaFEiqDHfDYqQ#1kiv<~zsD=Ikp={tOh>1)e z(=|twdf+%uAZ=-4st$psIfDQX5O5EKIF>pye)013;^nL~r+CgKn9yisLr-vN8``jO zgrYSz6J�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 z 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