From 5bb9c3e5586c2f9a367a20d113d93737e4257562 Mon Sep 17 00:00:00 2001 From: felixindynamsoft Date: Wed, 19 Jun 2024 19:33:06 -0700 Subject: [PATCH 001/223] refactor: format and standardize hello-word js (#174) * refactor: format and rename classes for js sample * update resultContainer and input class name * fix: change resultContainer to resultsContainer * refactor: renamed results class * fix: merged #178 changes * fix formatter printWidth to 120 --------- Co-authored-by: felixindrawan --- hello-world/es6.html | 166 +++++++++++++++--------------- hello-world/hello-world.html | 36 +++---- hello-world/read-an-image.html | 34 +++--- hello-world/requirejs.html | 182 ++++++++++++++++----------------- 4 files changed, 208 insertions(+), 210 deletions(-) diff --git a/hello-world/es6.html b/hello-world/es6.html index 01317f0c..a8694690 100644 --- a/hello-world/es6.html +++ b/hello-world/es6.html @@ -1,96 +1,98 @@ + + + + + + + Dynamsoft Barcode Reader Sample - Hello World for ES6 (Decode via Camera) + - - - - - - - Dynamsoft Barcode Reader Sample - Hello World for ES6 (Decode via Camera) - + +

Hello World for ES6 (Decode via Camera)

+
+ Results:
+
+ - - - \ No newline at end of file + // Open camera and start scanning single barcode. + await cameraEnhancer.open(); + await cvRouter.startCapturing("ReadSingleBarcode"); + } catch (ex) { + let errMsg = ex.message || ex; + console.error(errMsg); + alert(errMsg); + } + })(); + + + diff --git a/hello-world/hello-world.html b/hello-world/hello-world.html index 394bc99f..9a566c7c 100644 --- a/hello-world/hello-world.html +++ b/hello-world/hello-world.html @@ -3,17 +3,17 @@ - + - + Dynamsoft Barcode Reader Sample - Hello World (Decode via Camera)

Hello World (Decode via Camera)

-
- Results:
-
+
+ Results:
+
+ - - - - - - - Dynamsoft Barcode Reader Sample - Hello World for RequireJS (Decode via Camera) - - + +

Hello World for RequireJS (Decode via Camera)

+
+ Results: +
+
+ - - - \ No newline at end of file + // Open camera and start scanning single barcode. + await cameraEnhancer.open(); + await cvRouter.startCapturing("ReadSingleBarcode"); + } catch (ex) { + let errMsg = ex.message || ex; + console.error(errMsg); + alert(errMsg); + } + })(); + } + ); + + + From 90d38e9ece05617f16b9da4075e3b852a7eaa88f Mon Sep 17 00:00:00 2001 From: felixindynamsoft Date: Wed, 26 Jun 2024 04:16:18 -0700 Subject: [PATCH 002/223] feat: updated react and react-hooks sample and docs (#179) * feat: updated react sample to follow readme * fix: match results class to style guide * feat: add link canonical * fix: Changed Video capture to decode video, and image too * fix: Added comments on dynamsoft.config.ts * fix formatter printWidth to 120 * fix: handle uncaught runtime errors * fix: standarize HelloWorld component on App.tsx * finalized react update * fix: update both react and react-hooks * fix: typo * moved comment * update readme to add customization for ui --------- Co-authored-by: felixindrawan --- hello-world/react-hooks/README.md | 534 ++++++++---------- hello-world/react-hooks/package.json | 17 +- hello-world/react-hooks/public/index.html | 11 +- hello-world/react-hooks/public/logo192.png | Bin 0 -> 5347 bytes hello-world/react-hooks/public/logo512.png | Bin 0 -> 9664 bytes hello-world/react-hooks/public/manifest.json | 25 + hello-world/react-hooks/src/App.css | 25 +- hello-world/react-hooks/src/App.tsx | 52 +- .../components/ImageCapture/ImageCapture.css | 12 +- .../components/ImageCapture/ImageCapture.tsx | 77 +-- .../components/VideoCapture/VideoCapture.css | 17 +- .../components/VideoCapture/VideoCapture.tsx | 122 ++-- .../react-hooks/src/dynamsoft.config.ts | 23 +- hello-world/react-hooks/src/index.css | 15 +- hello-world/react-hooks/src/index.tsx | 10 +- hello-world/react/README.md | 520 +++++++---------- hello-world/react/package.json | 15 +- hello-world/react/public/index.html | 9 +- hello-world/react/public/manifest.json | 2 +- hello-world/react/src/App.css | 25 +- hello-world/react/src/App.tsx | 60 +- .../components/ImageCapture/ImageCapture.css | 12 +- .../components/ImageCapture/ImageCapture.tsx | 60 +- .../components/VideoCapture/VideoCapture.css | 4 +- .../components/VideoCapture/VideoCapture.tsx | 118 ++-- hello-world/react/src/dynamsoft.config.ts | 23 +- hello-world/react/src/index.css | 15 +- hello-world/react/src/index.tsx | 11 +- 28 files changed, 878 insertions(+), 936 deletions(-) create mode 100644 hello-world/react-hooks/public/logo192.png create mode 100644 hello-world/react-hooks/public/logo512.png create mode 100644 hello-world/react-hooks/public/manifest.json diff --git a/hello-world/react-hooks/README.md b/hello-world/react-hooks/README.md index 86361228..07ba10c8 100644 --- a/hello-world/react-hooks/README.md +++ b/hello-world/react-hooks/README.md @@ -1,6 +1,14 @@ # Hello World Sample for React with Hooks -[React](https://reactjs.org/) is a JavaScript library meant explicitly for creating interactive UIs. Follow this guide to learn how to implement Dynamsoft Barcode Reader JavaScript SDK (hereafter called "the library") into a React application. Note that in this sample we will use `TypeScript` and [Hooks](https://reactjs.org/docs/hooks-intro.html). Also, there is another sample `react` defining components as classes in React. +[React](https://reactjs.org/) is a JavaScript library meant explicitly for creating interactive UIs. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a React application. Note that in this sample we will use `TypeScript` and [Hooks](https://reactjs.org/docs/hooks-intro.html). Also, there is another sample `react` defining components as classes in React. + +In this guide, we will be using [`dynamsoft-barcode-reader-bundle 10.2.1000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/10.2.1000). + +> Note: +> +> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! +> +> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. ## Official Sample @@ -9,10 +17,24 @@ ## Preparation -Make sure you have [node](https://nodejs.org/) installed. `node 16.20.1` and `react 18.2.0` used in the example below. +Make sure you have [node](https://nodejs.org/) installed. `node 16.20.1` and `react 18.2.0` are used in the example below. + +## Quick Start + +```cmd +npm install +npm start +``` +Then open http://localhost:3000/ to view the sample app. ## Create the sample project +In this section, we will be creating a React application utilizing the Dynamsoft Barcode Reader bundle sdk. + +We'll be exploring how you could create a page that not only enables barcode scanning via a webcam or a built-in camera, but also decode barcodes from local images. + +By the end of this guide, you'll have a good understanding of the SDK and be ready to discover more ways to use it! + ### Create a Bootstrapped Raw React Application with TypeScript ```cmd @@ -23,30 +45,35 @@ npx create-react-app my-app --template typescript ```cmd cd my-app -npm install dynamsoft-core -npm install dynamsoft-license -npm install dynamsoft-utility -npm install dynamsoft-barcode-reader -npm install dynamsoft-capture-vision-router -npm install dynamsoft-camera-enhancer +npm install dynamsoft-barcode-reader-bundle ``` ## Start to implement -### Add file "cvr.ts" under "/src/" to configure libraries +### Add file "dynamsoft.config.ts" under "/src/" to configure libraries ```typescript -import { CoreModule } from 'dynamsoft-core'; -import { LicenseManager } from 'dynamsoft-license'; -import 'dynamsoft-barcode-reader'; +/* /src/dynamsoft.config.ts */ +import { CoreModule } from "dynamsoft-core"; +import { LicenseManager } from "dynamsoft-license"; +import "dynamsoft-barcode-reader"; + +// Configures the paths where the .wasm files and other necessary resources for modules are located. +CoreModule.engineResourcePaths = { + std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", + dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", + core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", + license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", + cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", + dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", + dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", +}; /** LICENSE ALERT - README * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -LicenseManager.initLicense( - 'DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9' -); +LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. @@ -55,18 +82,8 @@ LicenseManager.initLicense( * LICENSE ALERT - THE END */ -CoreModule.engineResourcePaths = { - std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", - dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", - core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", - license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", - cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", - dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", - dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/" -}; - -// Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(['DBR']); +// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. +CoreModule.loadWasm(["DBR"]); ``` > Note: @@ -76,144 +93,125 @@ CoreModule.loadWasm(['DBR']); ### Build directory structure -* Create a directory "components" under "/src/", and then create another three directories "HelloWorld", "VideoCapture" and "ImageCapture" under "/src/components/". +* Create a directory `components` under `/src/`, and then create two other directories, `VideoCapture` and `ImageCapture` under `/components/`. ### Create and edit the `VideoCapture` component -* Create `VideoCapture.tsx` and `VideoCapture.css` under "/src/components/VideoCapture/". The `VideoCapture` component helps decode barcodes via camera. +* Create `VideoCapture.tsx` under `/src/components/VideoCapture/`. The `VideoCapture` component helps decode barcodes via camera. -* In `VideoCapture.tsx`, add code for initializing and destroying some instances. +* In `VideoCapture.tsx`, add code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). ```tsx -import React, { useEffect, useRef } from "react"; -import { EnumCapturedResultItemType } from "dynamsoft-core"; -import { DecodedBarcodesResult } from "dynamsoft-barcode-reader"; -import { - CameraEnhancer, - CameraView, -} from "dynamsoft-camera-enhancer"; -import { - CapturedResultReceiver, - CaptureVisionRouter, -} from "dynamsoft-capture-vision-router"; +/* /src/components/VideoCapture/VideoCapture.tsx */ +import { useEffect, useRef } from "react"; +import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. +import { CameraEnhancer, CameraView } from "dynamsoft-camera-enhancer"; +import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; -import "./VideoCapture.css"; + +const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; function VideoCapture() { - const uiContainer = useRef(null); + const cameraViewContainer = useRef(null); const resultsContainer = useRef(null); - const pInit = useRef( - null as Promise<{ - cameraView: CameraView; - cameraEnhancer: CameraEnhancer; - cvRouter: CaptureVisionRouter; - }> | null - ); - const pDestroy = useRef(null as Promise | null); + useEffect((): any => { + let resolveInit: () => void; + const pInit: Promise = new Promise((r) => { + resolveInit = r; + }); + let isDestroyed = false; - const init = async (): Promise<{ - cameraView: CameraView; - cameraEnhancer: CameraEnhancer; - cvRouter: CaptureVisionRouter; - }> => { - try { - // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. - const cameraView = await CameraView.createInstance(); - const cameraEnhancer = await CameraEnhancer.createInstance(cameraView); - uiContainer.current!.innerText = ""; - uiContainer.current!.append(cameraView.getUIElement()); // Get default UI and append it to DOM. - - // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. - const cvRouter = await CaptureVisionRouter.createInstance(); - cvRouter.setInput(cameraEnhancer); - - // Define a callback for results. - const resultReceiver = new CapturedResultReceiver(); - resultReceiver.onDecodedBarcodesReceived = ( - result: DecodedBarcodesResult - ) => { - if (!result.barcodeResultItems.length) return; - - resultsContainer.current!.textContent = ''; - console.log(result); - for (let item of result.barcodeResultItems) { - resultsContainer.current!.append( - `${item.formatString}: ${item.text}`, - document.createElement('br'), - document.createElement('hr'), - ); - } - }; - cvRouter.addResultReceiver(resultReceiver); - - // Filter out unchecked and duplicate results. - const filter = new MultiFrameResultCrossFilter(); - filter.enableResultCrossVerification( - "barcode", - true - ); // Filter out unchecked barcodes. - // Filter out duplicate barcodes within 3 seconds. - filter.enableResultDeduplication( - "barcode", - true - ); - filter.setDuplicateForgetTime( - "barcode", - 3000 - ); - await cvRouter.addResultFilter(filter); - - // Open camera and start scanning single barcode. - await cameraEnhancer.open(); - await cvRouter.startCapturing("ReadSingleBarcode"); - return { - cameraView, - cameraEnhancer, - cvRouter, - }; - } catch (ex: any) { - let errMsg = ex.message || ex; - console.error(errMsg); - alert(errMsg); - throw ex; - } - }; - - const destroy = async (): Promise => { - if (pInit.current) { - const { cameraView, cameraEnhancer, cvRouter } = await pInit.current; - cvRouter.dispose(); - cameraEnhancer.dispose(); - cameraView.dispose(); - } - }; + let cvRouter: CaptureVisionRouter; + let cameraEnhancer: CameraEnhancer; - useEffect(() => { (async () => { - // In 'development', React runs setup and cleanup one extra time before the actual setup in Strict Mode. - if (pDestroy.current) { - await pDestroy.current; - pInit.current = init(); - } else { - pInit.current = init(); + try { + // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. + const cameraView = await CameraView.createInstance(); + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } // Check if component is destroyed after every async + cameraEnhancer = await CameraEnhancer.createInstance(cameraView); + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + + // Get default UI and append it to DOM. + cameraViewContainer.current!.append(cameraView.getUIElement()); + + // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. + cvRouter = await CaptureVisionRouter.createInstance(); + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + cvRouter.setInput(cameraEnhancer); + + // Define a callback for results. + cvRouter.addResultReceiver({ + onDecodedBarcodesReceived: (result) => { + if (!result.barcodeResultItems.length) return; + + resultsContainer.current!.textContent = ""; + console.log(result); + for (let item of result.barcodeResultItems) { + resultsContainer.current!.textContent += `${item.formatString}: ${item.text}\n\n`; + } + }, + }); + + // Filter out unchecked and duplicate results. + const filter = new MultiFrameResultCrossFilter(); + // Filter out unchecked barcodes. + filter.enableResultCrossVerification("barcode", true); + // Filter out duplicate barcodes within 3 seconds. + filter.enableResultDeduplication("barcode", true); + await cvRouter.addResultFilter(filter); + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + + // Open camera and start scanning single barcode. + await cameraEnhancer.open(); + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + await cvRouter.startCapturing("ReadSingleBarcode"); + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + } catch (ex: any) { + if ((ex as Error)?.message === componentDestroyedErrorMsg) { + console.log(componentDestroyedErrorMsg); + } else { + let errMsg = ex.message || ex; + console.error(errMsg); + alert(errMsg); + } } })(); - return () => { - (async () => { - await (pDestroy.current = destroy()); - console.log("VideoCapture Component Unmount"); - })(); + // Resolve pInit promise once initialization is complete. + resolveInit!(); + + // componentWillUnmount. dispose cvRouter when it's no longer needed + return async () => { + isDestroyed = true; + try { + // Wait for the pInit to complete before disposing resources. + await pInit; + cvRouter?.dispose(); + cameraEnhancer?.dispose(); + } catch (_) {} }; }, []); return (
-
- Results: +

-
+ Results: +
); } @@ -223,101 +221,87 @@ export default VideoCapture; > Note: > -> * The component should never update (check the code for `shouldComponentUpdate()`) so that events bound to the UI stay valid. - -* Define the style of the element in `VideoCapture.css` - -```css -.div-ui-container { - width: 100%; - height: 70vh; -} - -.div-results-container { - width: 100%; - height: 10vh; - overflow: auto; -} -``` +> * The component should never update so that events bound to the UI stay valid. In this copmonent, the useEffect() hook is used to handle the component’s mount and unmount lifecycle events, and there are no state updates that would cause a re-render. +> * If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customize-the-ui) ### Create and edit the `ImageCapture` component -* Create `ImageCapture.tsx` and `ImageCapture.css` under "/src/components/ImageCapture/". The `ImageCapture` component helps decode barcodes in an image. +* Create `ImageCapture.tsx` under `/src/components/ImageCapture/`. The `ImageCapture` component helps decode barcodes in an image. -* In `ImageCapture.tsx`, add code for initializing and destroying the `CaptureVisionRouter` instance. +* In `ImageCapture.tsx`, add code for initializing and destroying the `CaptureVisionRouter` instance. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). ```tsx -import React, { useRef, useEffect } from "react"; +/* /src/components/ImageCapture/ImageCapture.tsx */ +import React, { useRef, useEffect, MutableRefObject, useCallback } from "react"; +import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. +import { EnumCapturedResultItemType } from "dynamsoft-core"; import { BarcodeResultItem } from "dynamsoft-barcode-reader"; import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; -import "../../cvr"; // import side effects. The license, engineResourcePath, so on. -import "./ImageCapture.css"; function ImageCapture() { - const pInit = useRef(null as null | Promise); - const pDestroy = useRef(null as null | Promise); - - const init = async (): Promise => { - const cvRouter = await CaptureVisionRouter.createInstance(); - return cvRouter; - }; - - const destroy = async (): Promise => { - if (pInit.current) { - const cvRouter = (await pInit.current)!; - cvRouter.dispose(); - } - }; + const resultsContainer: MutableRefObject = useRef(null); + + let pCvRouter: MutableRefObject | null> = useRef(null); + let isDestroyed = useRef(false); + + const decodeImg = useCallback(async (e: React.ChangeEvent) => { + let files = [...(e.target.files as any as File[])]; + e.target.value = ""; // reset input + resultsContainer.current!.innerText = ""; - const decodeImg = async (e: React.ChangeEvent) => { try { - const cvRouter = (await pInit.current)!; - // Decode selected image with 'ReadBarcodes_SpeedFirst' template. - const result = await cvRouter.capture( - e.target.files![0], - "ReadBarcodes_SpeedFirst" - ); - let texts = ""; - for (let item of result.items) { - console.log((item as BarcodeResultItem).text); - texts += (item as BarcodeResultItem).text + "\n"; + // ensure cvRouter is created only once + const cvRouter = await (pCvRouter.current = pCvRouter.current || CaptureVisionRouter.createInstance()); + if (isDestroyed.current) return; + + for (let file of files) { + // Decode selected image with 'ReadBarcodes_SpeedFirst' template. + const result = await cvRouter.capture(file, "ReadBarcodes_SpeedFirst"); + if (isDestroyed.current) return; + + // Print file name if there's multiple files + if (files.length > 1) { + resultsContainer.current!.innerText += `\n${file.name}:\n`; + } + for (let _item of result.items) { + if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { + continue; // check if captured result item is a barcode + } + let item = _item as BarcodeResultItem; + resultsContainer.current!.innerText += item.text + "\n"; // output the decoded barcode text + console.log(item.text); + } + // If no items are found, display that no barcode was detected + if (!result.items.length) resultsContainer.current!.innerText += "No barcode found"; } - if (texts !== "") alert(texts); - if (!result.items.length) alert("No barcode found"); } catch (ex: any) { let errMsg = ex.message || ex; console.error(errMsg); alert(errMsg); } - e.target.value = ""; - }; + }, []); - useEffect(() => { - (async () => { - // In 'development', React runs setup and cleanup one extra time before the actual setup in Strict Mode. - if (pDestroy) { - await pDestroy; - pInit.current = init(); - } else { - pInit.current = init(); + useEffect((): any => { + // In 'development', React runs setup and cleanup one extra time before the actual setup in Strict Mode. + isDestroyed.current = false; + + // componentWillUnmount. dispose cvRouter when it's no longer needed + return async () => { + isDestroyed.current = true; + if (pCvRouter.current) { + try { + (await pCvRouter.current).dispose(); + } catch (_) {} } - })(); - - return () => { - (async () => { - await (pDestroy.current = destroy()); - console.log("ImageCapture Component Unmount"); - })(); }; }, []); return ( -
- +
+
+ +
+
); } @@ -325,53 +309,39 @@ function ImageCapture() { export default ImageCapture; ``` -* Define the style of the element in `ImageCapture.css` +### Add the `VideoCapture` and `ImageCapture` component to `App.tsx` -```css -.div-image-capture { - display: flex; - justify-content: center; - align-items: center; - width: 100%; - border: 1px solid black; -} -``` +* On `/src/App.tsx`, we will edit the component so that it offers buttons to switch components between `VideoCapture` and `ImageCapture`. + +* Add following code to `App.tsx`. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). -### Create and edit the `HelloWorld` component +```tsx +/* /src/App.tsx */ +import { useState } from "react"; +import VideoCapture from "./components/VideoCapture/VideoCapture"; +import ImageCapture from "./components/ImageCapture/ImageCapture"; + +enum Modes { + VIDEO_CAPTURE = "video", + IMAGE_CAPTURE = "image", +} -* Create `HelloWorld.tsx` and `HelloWorld.css` under "/src/components/HelloWorld/". The `HelloWorld` component offers buttons to switch components between `VideoCapture` and `ImageCapture`; +function App() { + const [mode, setMode] = useState(Modes.VIDEO_CAPTURE); -* Add following code to `HelloWorld.tsx`. + const showVideoCapture = () => setMode(Modes.VIDEO_CAPTURE); -```tsx -import React, { useState } from "react"; -import "../../cvr"; // import side effects. The license, engineResourcePath, so on. -import VideoCapture from "../VideoCapture/VideoCapture"; -import ImageCapture from "../ImageCapture/ImageCapture"; -import "./HelloWorld.css"; - -function HelloWorld() { - let [bShowVideoCapture, setBShowVideoCapture] = useState(true); - let [bShowImageCapture, setBShowImageCapture] = useState(false); - - const showVideoCapture = () => { - setBShowVideoCapture(true); - setBShowImageCapture(false); - }; - - const showImageCapture = () => { - setBShowVideoCapture(false); - setBShowImageCapture(true); - }; + const showImageCapture = () => setMode(Modes.IMAGE_CAPTURE); return ( -
-

Hello World for React(Hooks)

-
+
+
+

Hello World for React

+
+
-
- {bShowVideoCapture ? : ""} - {bShowImageCapture ? : ""} -
-
- ); -} - -export default HelloWorld; -``` - -* Define the style of the element in `HelloWorld.css` - -```css -.div-hello-world { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - width: 100%; - height: 100%; - color: #455A64; -} - -h1 { - font-size: 1.5em; -} - -button { - font-size: 1.5rem; - margin: 1.5vh 0; - border: 1px solid black; - background-color: white; - color: black; -} - -.container { - margin: 2vmin auto; - font-size: medium; - width: 80vw; -} -``` - -### Add the `HelloWorld` component to `App.tsx` - -Edit the file `App.tsx` to be like this - -```jsx -import HelloWorld from './components/HelloWorld/HelloWorld'; -import './App.css'; - -function App() { - return ( -
- +
{mode === Modes.VIDEO_CAPTURE ? : }
); } @@ -454,7 +370,7 @@ export default App; npm start ``` -If you followed all the steps correctly, you will have a working page that turns one of the cameras hooked to or built in your computer or mobile device into a barcode scanner. Also, if you want to decode a local image, just click the `Image Decode` button and select the image you want to decode. Once barcodes are found, the results will show in a dialog. +If you followed all the steps correctly, you will have a working page that turns one of the cameras hooked to or built in your computer or mobile device into a barcode scanner. Also, if you want to decode a local image, just click the `Decode Image` button and select the image you want to decode. Once barcodes are found, the results will show in a dialog. ## Development server @@ -472,7 +388,7 @@ It correctly bundles React in production mode and optimizes the build for the be The build is minified and the filenames include the hashes.\ Your app is ready to be deployed! -See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. +See the section about [deployment](https://create-react-app.dev/docs/deployment/) for more information. ## Support diff --git a/hello-world/react-hooks/package.json b/hello-world/react-hooks/package.json index c41c8e1e..4a7e6c34 100644 --- a/hello-world/react-hooks/package.json +++ b/hello-world/react-hooks/package.json @@ -1,19 +1,18 @@ { "name": "dbrjs-react-sample", - "version": "0.0.0", + "version": "0.1.0", "private": true, - "homepage": "./", "dependencies": { - "@testing-library/jest-dom": "^5.16.5", + "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", "@types/jest": "^27.5.2", - "@types/node": "^16.18.12", - "@types/react": "^18.0.27", - "@types/react-dom": "^18.0.10", + "@types/node": "^16.18.99", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", "dynamsoft-barcode-reader-bundle": "10.2.1000", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", "react-scripts": "5.0.1", "typescript": "^4.9.5", "web-vitals": "^2.1.4" @@ -42,4 +41,4 @@ "last 1 safari version" ] } -} +} \ No newline at end of file diff --git a/hello-world/react-hooks/public/index.html b/hello-world/react-hooks/public/index.html index c9a80cda..f358c3c6 100644 --- a/hello-world/react-hooks/public/index.html +++ b/hello-world/react-hooks/public/index.html @@ -7,9 +7,16 @@ + + + + - read-video-react + Hello World for React - Dynamsoft Barcode Reader Sample diff --git a/hello-world/react-hooks/public/logo192.png b/hello-world/react-hooks/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/hello-world/react-hooks/public/manifest.json b/hello-world/react-hooks/public/manifest.json new file mode 100644 index 00000000..080d6c77 --- /dev/null +++ b/hello-world/react-hooks/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/hello-world/react-hooks/src/App.css b/hello-world/react-hooks/src/App.css index f3fee6a1..4b1f0cbc 100644 --- a/hello-world/react-hooks/src/App.css +++ b/hello-world/react-hooks/src/App.css @@ -1,3 +1,6 @@ +.hello-world-page { + text-align: center; +} .title { display: flex; justify-content: center; @@ -9,39 +12,39 @@ height: 60px; animation: retate 5s infinite linear; } -.top-btns { - width: 30%; +.buttons-container { + text-align: center; margin: 20px auto; } -.top-btns button { +.buttons-container button { display: inline-block; border: 1px solid black; padding: 5px 15px; background-color: transparent; cursor: pointer; } -.top-btns button:first-child { +.buttons-container button:first-child { border-top-left-radius: 10px; border-bottom-left-radius: 10px; border-right: transparent; } -.top-btns button:nth-child(2) { +.buttons-container button:nth-child(2) { border-top-right-radius: 10px; border-bottom-right-radius: 10px; border-left: transparent; } -@media screen and (max-width: 500px) { - .top-btns { - width: 70%; +@media screen and (max-width: 800px) { + .buttons-container { + width: 70%; } } @keyframes retate { from { - transform: rotate(0deg); + transform: rotate(0deg); } to { - transform: rotate(360deg); + transform: rotate(360deg); } -} \ No newline at end of file +} diff --git a/hello-world/react-hooks/src/App.tsx b/hello-world/react-hooks/src/App.tsx index bd21f205..51c1029d 100644 --- a/hello-world/react-hooks/src/App.tsx +++ b/hello-world/react-hooks/src/App.tsx @@ -1,22 +1,46 @@ -import { useState } from 'react'; -import './App.css'; -import reactLogo from './assets/logo.svg'; -import VideoCapture from './components/VideoCapture/VideoCapture'; -import ImageCapture from './components/ImageCapture/ImageCapture'; +import { useState } from "react"; +import reactLogo from "./assets/logo.svg"; +import VideoCapture from "./components/VideoCapture/VideoCapture"; +import ImageCapture from "./components/ImageCapture/ImageCapture"; +import "./App.css"; + +enum Modes { + VIDEO_CAPTURE = "video", + IMAGE_CAPTURE = "image", +} function App() { - const [mode, setMode] = useState("video"); + const [mode, setMode] = useState(Modes.VIDEO_CAPTURE); + + const showVideoCapture = () => setMode(Modes.VIDEO_CAPTURE); + + const showImageCapture = () => setMode(Modes.IMAGE_CAPTURE); + return ( -
-
-

Hello World for React

- logo +
+
+

Hello World for React

+ logo
-
- - +
+ +
- { mode === "video" ? : } +
{mode === Modes.VIDEO_CAPTURE ? : }
); } diff --git a/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.css b/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.css index 4b689a19..03da581c 100644 --- a/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.css +++ b/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.css @@ -1,10 +1,11 @@ -.capture-img { +.image-capture-container { width: 100%; height: 100%; - font-family:Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace; + font-family: Consolas, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, + Courier New, monospace; } -.capture-img .img-ipt { +.image-capture-container .input-container { width: 80%; height: 100%; display: flex; @@ -13,6 +14,7 @@ margin: 0 auto; } -.capture-img .result-area { +.image-capture-container .results { margin-top: 20px; -} \ No newline at end of file + height: 100%; +} diff --git a/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx b/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx index 363cc0e3..e8aa4630 100644 --- a/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx +++ b/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx @@ -1,39 +1,45 @@ -import { useEffect, useRef, MutableRefObject, useCallback, ChangeEvent } from "react"; -import "../../dynamsoft.config"; +import React, { useRef, useEffect, MutableRefObject, useCallback } from "react"; +import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. import { EnumCapturedResultItemType } from "dynamsoft-core"; -import type { BarcodeResultItem } from "dynamsoft-barcode-reader"; +import { BarcodeResultItem } from "dynamsoft-barcode-reader"; import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; import "./ImageCapture.css"; -export default () => { - const resDiv: MutableRefObject = useRef(null); +function ImageCapture() { + const resultsContainer: MutableRefObject = useRef(null); - const pCvRouter: MutableRefObject | null> = useRef(null); - const bDestoried = useRef(false); + let pCvRouter: MutableRefObject | null> = useRef(null); + let isDestroyed = useRef(false); - const captureImage = useCallback(async(e: ChangeEvent)=>{ + const captureImage = useCallback(async (e: React.ChangeEvent) => { let files = [...(e.target.files as any as File[])]; - e.target.value = ''; - resDiv.current!.innerText = ""; + e.target.value = ""; // reset input + resultsContainer.current!.innerText = ""; + try { + // ensure cvRouter is created only once const cvRouter = await (pCvRouter.current = pCvRouter.current || CaptureVisionRouter.createInstance()); - if (bDestoried.current) return; - - for(let file of files){ + if (isDestroyed.current) return; + + for (let file of files) { // Decode selected image with 'ReadBarcodes_SpeedFirst' template. const result = await cvRouter.capture(file, "ReadBarcodes_SpeedFirst"); - if (bDestoried.current) return; - - if(files.length > 1){ - resDiv.current!.innerText += `\n${file.name}:\n`; + if (isDestroyed.current) return; + + // Print file name if there's multiple files + if (files.length > 1) { + resultsContainer.current!.innerText += `\n${file.name}:\n`; } for (let _item of result.items) { - if(_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { continue; } + if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { + continue; // check if captured result item is a barcode + } let item = _item as BarcodeResultItem; - resDiv.current!.innerText += item.text + "\n"; + resultsContainer.current!.innerText += item.text + "\n"; // output the decoded barcode text console.log(item.text); } - if (!result.items.length) resDiv.current!.innerText += 'No barcode found\n'; + // If no items are found, display that no barcode was detected + if (!result.items.length) resultsContainer.current!.innerText += "No barcode found"; } } catch (ex: any) { let errMsg = ex.message || ex; @@ -43,25 +49,28 @@ export default () => { }, []); useEffect((): any => { - // reset value so works in React.StrictMode - bDestoried.current = false; - // onBeforeUnmount + // In 'development', React runs setup and cleanup one extra time before the actual setup in Strict Mode. + isDestroyed.current = false; + + // componentWillUnmount. dispose cvRouter when it's no longer needed return async () => { - bDestoried.current = true; - if(pCvRouter.current){ - try{ + isDestroyed.current = true; + if (pCvRouter.current) { + try { (await pCvRouter.current).dispose(); - }catch(_){} + } catch (_) {} } - } + }; }, []); return ( -
-
- +
+
+
-
+
- ) -}; + ); +} + +export default ImageCapture; diff --git a/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.css b/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.css index 810b49cb..465e054e 100644 --- a/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.css +++ b/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.css @@ -1,11 +1,10 @@ -.div-ui-container { - width: 100%; - height: 70vh; - background: #eee; +.camera-view-container { + width: 100%; + height: 70vh; } -.div-results-container { - width: 100%; - height: 10vh; - overflow: auto; -} \ No newline at end of file +.results { + width: 100%; + height: 10vh; + overflow: auto; +} diff --git a/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.tsx b/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.tsx index c370eca3..7ab5ea16 100644 --- a/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.tsx +++ b/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.tsx @@ -1,55 +1,61 @@ -import { useEffect, useRef, MutableRefObject } from 'react'; -import "../../dynamsoft.config"; +import { useEffect, useRef } from "react"; +import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. import { CameraEnhancer, CameraView } from "dynamsoft-camera-enhancer"; import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; import "./VideoCapture.css"; -const strErrorDistoryed = 'videoCapture component destoryed'; +const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; -export default () => { - const uiContainer: MutableRefObject = useRef(null); - const resultsContainer: MutableRefObject = useRef(null); +function VideoCapture() { + const cameraViewContainer = useRef(null); + const resultsContainer = useRef(null); useEffect((): any => { - let resolveInit:()=>void; - const pInit:Promise = new Promise(r=>{resolveInit=r}); - let bDestoryed = false; - - let cvRouter:CaptureVisionRouter; - let cameraEnhancer:CameraEnhancer; - - (async()=>{ - try{ + let resolveInit: () => void; + const pInit: Promise = new Promise((r) => { + resolveInit = r; + }); + let isDestroyed = false; + + let cvRouter: CaptureVisionRouter; + let cameraEnhancer: CameraEnhancer; + + (async () => { + try { // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. const cameraView = await CameraView.createInstance(); - if(bDestoryed){ throw Error(strErrorDistoryed); } // Check if component is destroyed after every async + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } // Check if component is destroyed after every async cameraEnhancer = await CameraEnhancer.createInstance(cameraView); - if(bDestoryed){ throw Error(strErrorDistoryed); } - + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + // Get default UI and append it to DOM. - uiContainer.current!.append(cameraView.getUIElement()); - + cameraViewContainer.current!.append(cameraView.getUIElement()); + // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. cvRouter = await CaptureVisionRouter.createInstance(); - if(bDestoryed){ throw Error(strErrorDistoryed); } + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } cvRouter.setInput(cameraEnhancer); - + // Define a callback for results. - cvRouter.addResultReceiver({ onDecodedBarcodesReceived: (result) => { - if (!result.barcodeResultItems.length) return; - - resultsContainer.current!.textContent = ''; - console.log(result); - for (let item of result.barcodeResultItems) { - resultsContainer.current!.append( - `${item.formatString}: ${item.text}`, - document.createElement('br'), - document.createElement('hr'), - ); - } - }}); - + cvRouter.addResultReceiver({ + onDecodedBarcodesReceived: (result) => { + if (!result.barcodeResultItems.length) return; + + resultsContainer.current!.textContent = ""; + console.log(result); + for (let item of result.barcodeResultItems) { + resultsContainer.current!.textContent += `${item.formatString}: ${item.text}\n\n`; + } + }, + }); + // Filter out unchecked and duplicate results. const filter = new MultiFrameResultCrossFilter(); // Filter out unchecked barcodes. @@ -57,19 +63,23 @@ export default () => { // Filter out duplicate barcodes within 3 seconds. filter.enableResultDeduplication("barcode", true); await cvRouter.addResultFilter(filter); - if(bDestoryed){ throw Error(strErrorDistoryed); } - + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + // Open camera and start scanning single barcode. await cameraEnhancer.open(); - if(bDestoryed){ throw Error(strErrorDistoryed); } + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } await cvRouter.startCapturing("ReadSingleBarcode"); - if(bDestoryed){ throw Error(strErrorDistoryed); } - - }catch(ex:any){ - - if((ex as Error)?.message === strErrorDistoryed){ - console.log(strErrorDistoryed); - }else{ + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + } catch (ex: any) { + if ((ex as Error)?.message === componentDestroyedErrorMsg) { + console.log(componentDestroyedErrorMsg); + } else { let errMsg = ex.message || ex; console.error(errMsg); alert(errMsg); @@ -77,25 +87,29 @@ export default () => { } })(); - // distroy function will wait pInit + // Resolve pInit promise once initialization is complete. resolveInit!(); - // onBeforeUnmount + // componentWillUnmount. dispose cvRouter when it's no longer needed return async () => { - bDestoryed = true; - try{ + isDestroyed = true; + try { + // Wait for the pInit to complete before disposing resources. await pInit; cvRouter?.dispose(); cameraEnhancer?.dispose(); - }catch(_){} + } catch (_) {} }; }, []); return (
-
- Results:
-
+
+
+ Results: +
); } + +export default VideoCapture; diff --git a/hello-world/react-hooks/src/dynamsoft.config.ts b/hello-world/react-hooks/src/dynamsoft.config.ts index 8a0d59c1..f31509c2 100644 --- a/hello-world/react-hooks/src/dynamsoft.config.ts +++ b/hello-world/react-hooks/src/dynamsoft.config.ts @@ -2,11 +2,22 @@ import { CoreModule } from "dynamsoft-core"; import { LicenseManager } from "dynamsoft-license"; import "dynamsoft-barcode-reader"; +// Configures the paths where the .wasm files and other necessary resources for modules are located. +CoreModule.engineResourcePaths = { + std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", + dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", + core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", + license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", + cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", + dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", + dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", +}; + /** LICENSE ALERT - README * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); +LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. @@ -15,15 +26,5 @@ LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); * LICENSE ALERT - THE END */ -CoreModule.engineResourcePaths = { - std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", - dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", - core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", - license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", - cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", - dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", - dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/" -}; - // Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. CoreModule.loadWasm(["DBR"]); diff --git a/hello-world/react-hooks/src/index.css b/hello-world/react-hooks/src/index.css index 5cf73443..e9927237 100644 --- a/hello-world/react-hooks/src/index.css +++ b/hello-world/react-hooks/src/index.css @@ -1,10 +1,11 @@ -* { +body { margin: 0; - padding: 0; - box-sizing: border-box; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", + "Droid Sans", "Helvetica Neue", sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } -html, body { - text-align: center; - min-width: 350px; -} \ No newline at end of file +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; +} diff --git a/hello-world/react-hooks/src/index.tsx b/hello-world/react-hooks/src/index.tsx index 652531e4..f260548a 100644 --- a/hello-world/react-hooks/src/index.tsx +++ b/hello-world/react-hooks/src/index.tsx @@ -1,9 +1,9 @@ -import React from 'react'; -import ReactDOM from 'react-dom/client'; -import './index.css'; -import App from './App'; +import React from "react"; +import ReactDOM from "react-dom/client"; +import "./index.css"; +import App from "./App"; -const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement); +const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); root.render( diff --git a/hello-world/react/README.md b/hello-world/react/README.md index d4a9e3d6..f845a084 100644 --- a/hello-world/react/README.md +++ b/hello-world/react/README.md @@ -1,6 +1,14 @@ # Hello World Sample for React -[React](https://reactjs.org/) is a JavaScript library meant explicitly for creating interactive UIs. Follow this guide to learn how to implement Dynamsoft Barcode Reader JavaScript SDK (hereafter called "the library") into a React application. Note that in this sample we will use `TypeScript` and define components as classes. Also, there is another sample `react-hooks` using `Hooks` in React. +[React](https://reactjs.org/) is a JavaScript library meant explicitly for creating interactive UIs. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a React application. Note that in this sample we will use `TypeScript` and define components as classes. Also, there is another sample `react-hooks` using `Hooks` in React. + +In this guide, we will be using [`dynamsoft-barcode-reader-bundle 10.2.1000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/10.2.1000). + +> Note: +> +> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! +> +> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. ## Official Sample @@ -11,82 +19,61 @@ Make sure you have [node](https://nodejs.org/) installed. `node 16.20.1` and `react 18.2.0` are used in the example below. -## Create the sample project - -### Create a Bootstrapped Raw React Application with TypeScript +## Quick Start ```cmd -npx create-react-app my-app --template typescript +npm install +npm start ``` +Then open http://localhost:3000/ to view the sample app. -### **CD** to the root directory of the application and install necessary libraries - -```cmd -cd my-app -npm install dynamsoft-core -npm install dynamsoft-license -npm install dynamsoft-utility -npm install dynamsoft-barcode-reader -npm install dynamsoft-capture-vision-router -npm install dynamsoft-camera-enhancer -``` +## Creating the sample project -## Start to implement +In this section, we will be creating a React application utilizing the Dynamsoft Barcode Reader bundle sdk. -### Add file "cvr.ts" under "/src/" to configure libraries +We'll be exploring how you could create a page that not only enables barcode scanning via a webcam or a built-in camera, but also decode barcodes from local images. -```typescript -# Hello World Sample for NuxtJS - -[Nuxt](https://nuxtjs.org/) is a higher-level framework that builds on top of [Vue](https://vuejs.org/). Check out the following guide on how to implement Dynamsoft Barcode Reader JavaScript SDK (hereafter called "the library") into a Nuxt application. Note that in this sample `TypeScript` is used. - -## Official Sample - -* Hello World in Nuxt - Source Code - -## Preparation - -Make sure you have [node](https://nodejs.org/) installed. `node 16.20.1` and `nuxt 3.2.3` are used in this article. - -## Create the sample project - -### Create a Bootstrapped Nuxt Application +By the end of this guide, you'll have a good understanding of the SDK and be ready to discover more ways to use it! + +### Create a Bootstrapped Raw React Application with TypeScript ```cmd -npx nuxi@latest init my-app +npx create-react-app my-app --template typescript ``` -You will be asked to configure quite a few things for the application during the creation. In our example, we chose the default one in every step. - -### **CD** to the root directory of the application and install the dependencies +### **CD** to the root directory of the application and install necessary libraries ```cmd cd my-app -npm install -npm install dynamsoft-core -npm install dynamsoft-license -npm install dynamsoft-utility -npm install dynamsoft-barcode-reader -npm install dynamsoft-capture-vision-router -npm install dynamsoft-camera-enhancer +npm install dynamsoft-barcode-reader-bundle ``` ## Start to implement -### Add file "cvr.ts" at the root of the app to configure libraries +### Add file "dynamsoft.config.ts" at the root of the app to configure libraries ```typescript -import { CoreModule } from 'dynamsoft-core'; -import { LicenseManager } from 'dynamsoft-license'; -import 'dynamsoft-barcode-reader'; +/* /src/dynamsoft.config.ts */ +import { CoreModule } from "dynamsoft-core"; +import { LicenseManager } from "dynamsoft-license"; +import "dynamsoft-barcode-reader"; + +// Configures the paths where the .wasm files and other necessary resources for modules are located. +CoreModule.engineResourcePaths = { + std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", + dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", + core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", + license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", + cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", + dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", + dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", +}; /** LICENSE ALERT - README * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -LicenseManager.initLicense( - 'DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9' -); +LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. @@ -95,18 +82,8 @@ LicenseManager.initLicense( * LICENSE ALERT - THE END */ -CoreModule.engineResourcePaths = { - std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", - dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", - core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", - license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", - cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", - dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", - dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/" -}; - -// Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(['DBR']); +// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. +CoreModule.loadWasm(["DBR"]); ``` > Note: @@ -114,132 +91,116 @@ CoreModule.loadWasm(['DBR']); > * `initLicense()` specify a license key to use the library. You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=sample&product=dbr&package=js to get your own trial license good for 30 days. > * `engineResourcePaths` tells the library where to get the necessary resources at runtime. + ### Build directory structure -* Create a directory "components" under "/src/", and then create another three directories "HelloWorld", "VideoCapture" and "ImageCapture" under "/src/components/". +* Create a directory `components` under `/src/`, and then create two other directories, `VideoCapture` and `ImageCapture` under `/components/`. ### Create and edit the `VideoCapture` component -* Create `VideoCapture.tsx` and `VideoCapture.css` under "/src/components/VideoCapture/". The `VideoCapture` component helps decode barcodes via camera. +* Create `VideoCapture.tsx` under `/src/components/VideoCapture/`. The `VideoCapture` component helps decode barcodes via camera. -* In `VideoCapture.tsx`, add code for initializing and destroying some instances. +* In `VideoCapture.tsx`, add code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). ```tsx +/* /src/components/VideoCapture/VideoCapture.tsx */ import React from "react"; -import { EnumCapturedResultItemType } from "dynamsoft-core"; -import { DecodedBarcodesResult } from "dynamsoft-barcode-reader"; -import { - CameraEnhancer, - CameraView, -} from "dynamsoft-camera-enhancer"; -import { - CapturedResultReceiver, - CaptureVisionRouter, -} from "dynamsoft-capture-vision-router"; +import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. +import { CameraEnhancer, CameraView } from "dynamsoft-camera-enhancer"; +import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; -import "./VideoCapture.css"; + +const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; class VideoCapture extends React.Component { - pInit: Promise<{ - cameraView: CameraView; - cameraEnhancer: CameraEnhancer; - cvRouter: CaptureVisionRouter; - }> | null = null; - pDestroy: Promise | null = null; - - uiContainer: React.RefObject = React.createRef(); + cameraViewContainer: React.RefObject = React.createRef(); resultsContainer: React.RefObject = React.createRef(); - async init(): Promise<{ - cameraView: CameraView; - cameraEnhancer: CameraEnhancer; - cvRouter: CaptureVisionRouter; - }> { + resolveInit?: () => void; + pInit: Promise = new Promise((r) => (this.resolveInit = r)); + isDestroyed = false; + + cvRouter?: CaptureVisionRouter; + cameraEnhancer?: CameraEnhancer; + + async componentDidMount() { try { // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. const cameraView = await CameraView.createInstance(); - const cameraEnhancer = await CameraEnhancer.createInstance(cameraView); - this.uiContainer.current!.innerText = ""; - this.uiContainer.current!.append(cameraView.getUIElement()); // Get default UI and append it to DOM. + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } // Check if component is destroyed after every async + + this.cameraEnhancer = await CameraEnhancer.createInstance(cameraView); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + + // Get default UI and append it to DOM. + this.cameraViewContainer.current!.append(cameraView.getUIElement()); // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. - const cvRouter = await CaptureVisionRouter.createInstance(); - cvRouter.setInput(cameraEnhancer); + this.cvRouter = await CaptureVisionRouter.createInstance(); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + this.cvRouter.setInput(this.cameraEnhancer); // Define a callback for results. - const resultReceiver = new CapturedResultReceiver(); - resultReceiver.onDecodedBarcodesReceived = ( - result: DecodedBarcodesResult - ) => { - if (!result.barcodeResultItems.length) return; - - this.resultsContainer.current!.textContent = ''; - console.log(result); - for (let item of result.barcodeResultItems) { - this.resultsContainer.current!.append( - `${item.formatString}: ${item.text}`, - document.createElement('br'), - document.createElement('hr'), - ); - } - }; - cvRouter.addResultReceiver(resultReceiver); + this.cvRouter.addResultReceiver({ + onDecodedBarcodesReceived: (result) => { + if (!result.barcodeResultItems.length) return; + + this.resultsContainer.current!.textContent = ""; + console.log(result); + for (let item of result.barcodeResultItems) { + this.resultsContainer.current!.textContent += `${item.formatString}: ${item.text}\n\n`; + } + }, + }); // Filter out unchecked and duplicate results. const filter = new MultiFrameResultCrossFilter(); - filter.enableResultCrossVerification( - "barcode", - true - ); // Filter out unchecked barcodes. + // Filter out unchecked barcodes. + filter.enableResultCrossVerification("barcode", true); // Filter out duplicate barcodes within 3 seconds. - filter.enableResultDeduplication( - "barcode", - true - ); - filter.setDuplicateForgetTime( - "barcode", - 3000 - ); - await cvRouter.addResultFilter(filter); + filter.enableResultDeduplication("barcode", true); + await this.cvRouter.addResultFilter(filter); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } // Open camera and start scanning single barcode. - await cameraEnhancer.open(); - await cvRouter.startCapturing("ReadSingleBarcode"); - return { - cameraView, - cameraEnhancer, - cvRouter, - }; + await this.cameraEnhancer.open(); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + await this.cvRouter.startCapturing("ReadSingleBarcode"); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } } catch (ex: any) { - let errMsg = ex.message || ex; - console.error(errMsg); - alert(errMsg); - throw ex; - } - } - - async destroy(): Promise { - if (this.pInit) { - const { cameraView, cameraEnhancer, cvRouter } = await this.pInit; - cvRouter.dispose(); - cameraEnhancer.dispose(); - cameraView.dispose(); + if ((ex as Error)?.message === componentDestroyedErrorMsg) { + console.log(componentDestroyedErrorMsg); + } else { + let errMsg = ex.message || ex; + console.error(errMsg); + alert(errMsg); + } } - } - async componentDidMount() { - // In 'development', React runs setup and cleanup one extra time before the actual setup in Strict Mode. - if (this.pDestroy) { - await this.pDestroy; - this.pInit = this.init(); - } else { - this.pInit = this.init(); - } + // Resolve pInit promise once initialization is complete. + this.resolveInit!(); } async componentWillUnmount() { - await (this.pDestroy = this.destroy()); - console.log("VideoCapture Component Unmount"); + this.isDestroyed = true; + try { + // Wait for the pInit to complete before disposing resources. + await this.pInit; + this.cvRouter?.dispose(); + this.cameraEnhancer?.dispose(); + } catch (_) {} } shouldComponentUpdate() { @@ -250,10 +211,10 @@ class VideoCapture extends React.Component { render() { return (
-
+
+
Results: -

-
+
); } @@ -265,97 +226,87 @@ export default VideoCapture; > Note: > > * The component should never update (check the code for `shouldComponentUpdate()`) so that events bound to the UI stay valid. - -* Define the style of the element in `VideoCapture.css` - -```css -.div-ui-container { - width: 100%; - height: 70vh; -} - -.div-results-container { - width: 100%; - height: 10vh; - overflow: auto; -} -``` +> * Also, during 'development', React executes setup and cleanup phases twice in [Strict Mode](https://react.dev/reference/react/StrictMode). To ensure proper functioning of VideoCapture in development, it's advised to avoid using Strict Mode for this component. +> However, if you're still interested on using Strict Mode, we do have a workaround available. Please contact our [support team](#Support) for further assistance. +> * If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customize-the-ui) ### Create and edit the `ImageCapture` component -* Create `ImageCapture.tsx` and `ImageCapture.css` under "/src/components/ImageCapture/". The `ImageCapture` component helps decode barcodes in an image. +* Create `ImageCapture.tsx` under `/src/components/ImageCapture/`. The `ImageCapture` component helps decode barcodes in an image. -* In `ImageCapture.tsx`, add code for initializing and destroying the `CaptureVisionRouter` instance. +* In `ImageCapture.tsx`, add code for initializing and destroying the `CaptureVisionRouter` instance. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). ```tsx -import React from "react"; -import { BarcodeResultItem } from "dynamsoft-barcode-reader"; +/* /src/components/ImageCapture/ImageCapture.tsx */ +import React, { ChangeEvent } from "react"; +import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. +import { EnumCapturedResultItemType } from "dynamsoft-core"; +import type { BarcodeResultItem } from "dynamsoft-barcode-reader"; import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; -import "../../cvr"; // import side effects. The license, engineResourcePath, so on. -import "./ImageCapture.css"; class ImageCapture extends React.Component { - pInit: Promise | null = null; - pDestroy: Promise | null = null; + resultsContainer: React.RefObject = React.createRef(); - async init(): Promise { - const cvRouter = await CaptureVisionRouter.createInstance(); - return cvRouter; - } + pCvRouter: Promise | null = null; + isDestroyed = false; - async destroy(): Promise { - if (this.pInit) { - const cvRouter = await this.pInit; - cvRouter.dispose(); - } - } + async captureImage(e: ChangeEvent) { + let files = [...(e.target.files as any as File[])]; + e.target.value = ""; // reset input + this.resultsContainer.current!.innerText = ""; - decodeImg = async (e: React.ChangeEvent) => { try { - const cvRouter = await this.pInit; - // Decode selected image with 'ReadBarcodes_SpeedFirst' template. - const result = await cvRouter!.capture( - e.target.files![0], - "ReadBarcodes_SpeedFirst" - ); - let texts = ""; - for (let item of result.items) { - console.log((item as BarcodeResultItem).text); - texts += (item as BarcodeResultItem).text + "\n"; + const cvRouter = await (this.pCvRouter = this.pCvRouter || CaptureVisionRouter.createInstance()); + if (this.isDestroyed) return; + + for (let file of files) { + // Decode selected image with 'ReadBarcodes_SpeedFirst' template. + const result = await cvRouter.capture(file, "ReadBarcodes_SpeedFirst"); + if (this.isDestroyed) return; + + // Print file name if there's multiple files + if (files.length > 1) { + this.resultsContainer.current!.innerText += `\n${file.name}:\n`; + } + for (let _item of result.items) { + if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { + continue; // check if captured result item is a barcode + } + let item = _item as BarcodeResultItem; + this.resultsContainer.current!.innerText += item.text + "\n"; + console.log(item.text); + } + // If no items are found, display that no barcode was detected + if (!result.items.length) this.resultsContainer.current!.innerText += "No barcode found\n"; } - if (texts !== "") alert(texts); - if (!result.items.length) alert("No barcode found"); } catch (ex: any) { let errMsg = ex.message || ex; console.error(errMsg); alert(errMsg); } - e.target.value = ""; - }; - - async componentDidMount() { - // In 'development', React runs setup and cleanup one extra time before the actual setup in Strict Mode. - if (this.pDestroy) { - await this.pDestroy; - this.pInit = this.init(); - } else { - this.pInit = this.init(); - } } async componentWillUnmount() { - await (this.pDestroy = this.destroy()); - console.log("ImageCapture Component Unmount"); + this.isDestroyed = true; + if (this.pCvRouter) { + try { + (await this.pCvRouter).dispose(); + } catch (_) {} + } } render() { return ( -
- +
+
+ +
+
); } @@ -364,62 +315,51 @@ class ImageCapture extends React.Component { export default ImageCapture; ``` -* Define the style of the element in `ImageCapture.css` +### Add the `VideoCapture` and `ImageCapture` component to `App.tsx` -```css -.div-image-capture { - display: flex; - justify-content: center; - align-items: center; - width: 100%; - border: 1px solid black; -} -``` +* On `/src/App.tsx`, we will edit the component so that it offers buttons to switch components between `VideoCapture` and `ImageCapture`. -### Create and edit the `HelloWorld` component - -* Create `HelloWorld.tsx` and `HelloWorld.css` under "/src/components/HelloWorld/". The `HelloWorld` component offers buttons to switch components between `VideoCapture` and `ImageCapture`; - -* Add following code to `HelloWorld.tsx`. +* Add following code to `App.tsx`. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). ```tsx +/* src/App.tsx */ import React from "react"; -import "../../cvr"; // import side effects. The license, engineResourcePath, so on. -import VideoCapture from "../VideoCapture/VideoCapture"; -import ImageCapture from "../ImageCapture/ImageCapture"; -import "./HelloWorld.css"; +import "./dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. +import VideoCapture from "./components/VideoCapture/VideoCapture"; +import ImageCapture from "./components/ImageCapture/ImageCapture"; + +enum Modes { + VIDEO_CAPTURE = "video", + IMAGE_CAPTURE = "image", +} -class HelloWorld extends React.Component { +class App extends React.Component { state = { - bShowVideoCapture: true, - bShowImageCapture: false, + mode: Modes.VIDEO_CAPTURE, }; showVideoCapture = () => { this.setState({ - bShowVideoCapture: true, - bShowImageCapture: false, + mode: Modes.VIDEO_CAPTURE, }); }; showImageCapture = () => { this.setState({ - bShowVideoCapture: false, - bShowImageCapture: true, + mode: Modes.IMAGE_CAPTURE, }); }; render() { return ( -
-

Hello World for React

-
+
+
+

Hello World for React

+
+
-
- {this.state.bShowVideoCapture ? : ""} - {this.state.bShowImageCapture ? : ""} -
+
{this.state.mode === Modes.VIDEO_CAPTURE ? : }
); } } -export default HelloWorld; -``` - -* Define the style of the element in `HelloWorld.css` - -```css -.div-hello-world { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - width: 100%; - height: 100%; - color: #455A64; -} - -h1 { - font-size: 1.5em; -} - -button { - font-size: 1.5rem; - margin: 1.5vh 0; - border: 1px solid black; - background-color: white; - color: black; -} - -.container { - margin: 2vmin auto; - font-size: medium; - width: 80vw; -} -``` - -### Add the `HelloWorld` component to `App.tsx` - -Edit the file `App.tsx` to be like this - -```jsx -import HelloWorld from './components/HelloWorld/HelloWorld'; -import './App.css'; - -function App() { - return ( -
- -
- ); -} - export default App; ``` @@ -523,8 +407,8 @@ It correctly bundles React in production mode and optimizes the build for the be The build is minified and the filenames include the hashes.\ Your app is ready to be deployed! -See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. +See the section about [deployment](https://create-react-app.dev/docs/deployment/) for more information. ## Support -If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). +If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/hello-world/react/package.json b/hello-world/react/package.json index 102c2b0d..84e11d02 100644 --- a/hello-world/react/package.json +++ b/hello-world/react/package.json @@ -2,18 +2,17 @@ "name": "dbrjs-react-sample", "version": "0.1.0", "private": true, - "homepage": "./", "dependencies": { - "dynamsoft-barcode-reader-bundle": "10.2.1000", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", "@types/jest": "^27.5.2", - "@types/node": "^16.18.59", - "@types/react": "^18.2.31", - "@types/react-dom": "^18.2.14", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "@types/node": "^16.18.98", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "dynamsoft-barcode-reader-bundle": "10.2.1000", + "react": "^18.3.1", + "react-dom": "^18.3.1", "react-scripts": "5.0.1", "typescript": "^4.9.5", "web-vitals": "^2.1.4" @@ -42,4 +41,4 @@ "last 1 safari version" ] } -} +} \ No newline at end of file diff --git a/hello-world/react/public/index.html b/hello-world/react/public/index.html index 70592c1d..4f81c0fb 100644 --- a/hello-world/react/public/index.html +++ b/hello-world/react/public/index.html @@ -5,9 +5,12 @@ - - - + + + ``` +> Note: +> +> If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customize-the-ui) ### Create and edit the `ImageCapture` component -* Add a file `ImageCapture.vue` under "/components/" as the `ImageCapture` component. The `ImageCapture` component helps decode barcodes in an image. +* Create `ImageCapture.vue` under `/components/`. The `ImageCapture` component helps decode barcodes in an image. * In `ImageCapture.vue`, add code for initializing and destroying `CaptureVisionRouter` instance. ```vue + ``` -### Add `VideoCapture` and `ImageCapture` components in `HelloWorld.vue` +### Add the `VideoCapture` and `ImageCapture` component to `App.vue` + +* On `/src/App.vue`, we will edit the component so that it offers buttons to switch components between `VideoCapture` and `ImageCapture`. + +* Add following code to `App.vue`. ```vue + -``` - -### Add the `HelloWorld` component to `App.vue` - -Edit the file `App.vue` to be like this -```vue - - - - - ``` +> Note: +> +> With Vue's `defineAsyncComponent` we can improve the initial load speed and performance of the application. +> +> `defineAsyncComponent` allows us to load components such as `VideoCapture` and `ImageCapture` asynchronously, which means that the component's code is only loaded when it's needed. This will result in a faster initial load times. +> +> However, if you're implementing server-side rendering with Vue, using `defineAsyncComponent` might cause issues while loading `VideoCapture` and `ImageCapture` as we use the window/document object. Make sure to load these components on the client-side! +> +> Read more: https://vuejs.org/guide/components/async.html * Try running the project. ```cmd npm run dev ``` - -If you have followed all the steps correctly, you should now have a functioning page that allows you to scan barcodes from a webcam or a built-in camera. Additionally, if you want to decode a local image, click the `Decode Image` button and select the image you want to decode. Any barcodes that are detected will be displayed in a dialog. +If you followed all the steps correctly, you will have a working page that turns one of the cameras hooked to or built in your computer or mobile device into a barcode scanner. Also, if you want to decode a local image, just click the `Decode Image` button and select the image you want to decode. Once barcodes are found, the results will show in a dialog. ### Comment out the following code in `assets/main.css`. (optional) diff --git a/hello-world/vue/index.html b/hello-world/vue/index.html index 962d379d..e9c29d99 100644 --- a/hello-world/vue/index.html +++ b/hello-world/vue/index.html @@ -1,10 +1,16 @@ - - - - read-video-vue3 + + + + + + + Hello World for Vue 3 - Dynamsoft Barcode Reader Sample
diff --git a/hello-world/vue/package.json b/hello-world/vue/package.json index 53d4b78e..77fc7a23 100644 --- a/hello-world/vue/package.json +++ b/hello-world/vue/package.json @@ -23,4 +23,4 @@ "vite": "^4.0.0", "vue-tsc": "^1.0.12" } -} +} \ No newline at end of file diff --git a/hello-world/vue/src/App.vue b/hello-world/vue/src/App.vue index 3c4c188a..4f59da75 100644 --- a/hello-world/vue/src/App.vue +++ b/hello-world/vue/src/App.vue @@ -5,6 +5,7 @@ import VideoCapture from "./components/VideoCapture.vue"; import ImageCapture from "./components/ImageCapture.vue"; const mode: Ref = ref("video"); + @@ -29,6 +32,7 @@ const mode: Ref = ref("video"); align-items: center; margin-top: 20px; } + .title .title-logo { width: 30px; height: 30px; @@ -53,13 +57,14 @@ const mode: Ref = ref("video"); border-bottom-left-radius: 10px; border-right: transparent; } + .top-btns button:nth-child(2) { border-top-right-radius: 10px; border-bottom-right-radius: 10px; border-left: transparent; } -@media screen and (max-width: 500px) { +@media screen and (max-width: 800px) { .top-btns { width: 70%; } diff --git a/hello-world/vue/src/components/ImageCapture.vue b/hello-world/vue/src/components/ImageCapture.vue index a9a85f85..25392c19 100644 --- a/hello-world/vue/src/components/ImageCapture.vue +++ b/hello-world/vue/src/components/ImageCapture.vue @@ -5,34 +5,39 @@ import { EnumCapturedResultItemType } from "dynamsoft-core"; import type { BarcodeResultItem } from "dynamsoft-barcode-reader"; import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; -const resDiv: Ref = ref(null); +const resultContainer: Ref = ref(null); let pCvRouter: Promise; -let bDestoried = false; +let isDestroyed = false; const captureImage = async (e: Event) => { let files = [...(e.target! as HTMLInputElement).files!]; - (e.target! as HTMLInputElement).value = ''; - resDiv.value!.innerText = ""; + (e.target! as HTMLInputElement).value = ''; // reset input + resultContainer.value!.innerText = ""; try { + // ensure cvRouter is created only once const cvRouter = await (pCvRouter = pCvRouter || CaptureVisionRouter.createInstance()); - if (bDestoried) return; - - for(let file of files){ + if (isDestroyed) return; + + for (let file of files) { // Decode selected image with 'ReadBarcodes_SpeedFirst' template. const result = await cvRouter.capture(file, "ReadBarcodes_SpeedFirst"); - if (bDestoried) return; + if (isDestroyed) return; - if(files.length > 1){ - resDiv.value!.innerText += `\n${file.name}:\n`; + // Print file name if there's multiple files + if (files.length > 1) { + resultContainer.value!.innerText += `\n${file.name}:\n`; } for (let _item of result.items) { - if(_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { continue; } + if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { + continue; // check if captured result item is a barcode + } let item = _item as BarcodeResultItem; - resDiv.value!.innerText += item.text + "\n"; + resultContainer.value!.innerText += item.text + "\n"; // output the decoded barcode text console.log(item.text); } - if (!result.items.length) resDiv.value!.innerText += 'No barcode found\n'; + // If no items are found, display that no barcode was detected + if (!result.items.length) resultContainer.value!.innerText += 'No barcode found\n'; } } catch (ex: any) { let errMsg = ex.message || ex; @@ -42,32 +47,32 @@ const captureImage = async (e: Event) => { } onBeforeUnmount(async () => { - bDestoried = true; - if(pCvRouter){ - try{ + isDestroyed = true; + if (pCvRouter) { + try { (await pCvRouter).dispose(); - }catch(_){} + } catch (_) { } } }); - + \ No newline at end of file diff --git a/hello-world/vue/src/components/VideoCapture.vue b/hello-world/vue/src/components/VideoCapture.vue index 456457ef..6f32d162 100644 --- a/hello-world/vue/src/components/VideoCapture.vue +++ b/hello-world/vue/src/components/VideoCapture.vue @@ -5,49 +5,48 @@ import { CameraEnhancer, CameraView } from "dynamsoft-camera-enhancer"; import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; -const strErrorDistoryed = 'videoCapture component destoryed'; +const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; -const uiContainer: Ref = ref(null); +const cameraViewContainer: Ref = ref(null); const resultsContainer: Ref = ref(null); -let resolveInit:()=>void; -const pInit:Promise = new Promise(r=>{resolveInit=r}); -let bDestoryed = false; +let resolveInit: () => void; +const pInit: Promise = new Promise(r => { resolveInit = r }); +let isDestroyed = false; -let cvRouter:CaptureVisionRouter; -let cameraEnhancer:CameraEnhancer; +let cvRouter: CaptureVisionRouter; +let cameraEnhancer: CameraEnhancer; onMounted(async () => { - try{ + try { // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. const cameraView = await CameraView.createInstance(); - if(bDestoryed){ throw Error(strErrorDistoryed); } // Check if component is destroyed after every async + if (isDestroyed) { throw Error(componentDestroyedErrorMsg); } // Check if component is destroyed after every async + cameraEnhancer = await CameraEnhancer.createInstance(cameraView); - if(bDestoryed){ throw Error(strErrorDistoryed); } + if (isDestroyed) { throw Error(componentDestroyedErrorMsg); } // Get default UI and append it to DOM. - uiContainer.value!.append(cameraView.getUIElement()); + cameraViewContainer.value!.append(cameraView.getUIElement()); // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. cvRouter = await CaptureVisionRouter.createInstance(); - if(bDestoryed){ throw Error(strErrorDistoryed); } + if (isDestroyed) { throw Error(componentDestroyedErrorMsg); } cvRouter.setInput(cameraEnhancer); // Define a callback for results. - cvRouter.addResultReceiver({ onDecodedBarcodesReceived: (result) => { - if (!result.barcodeResultItems.length) return; - - resultsContainer.value!.textContent = ''; - console.log(result); - for (let item of result.barcodeResultItems) { - resultsContainer.value!.append( - `${item.formatString}: ${item.text}`, - document.createElement('br'), - document.createElement('hr'), - ); + cvRouter.addResultReceiver({ + onDecodedBarcodesReceived: (result) => { + if (!result.barcodeResultItems.length) return; + + resultsContainer.value!.textContent = ''; + console.log(result); + for (let item of result.barcodeResultItems) { + resultsContainer.value!.textContent += `${item.formatString}: ${item.text}\n\n`; + } } - }}); + }); // Filter out unchecked and duplicate results. const filter = new MultiFrameResultCrossFilter(); @@ -56,55 +55,57 @@ onMounted(async () => { // Filter out duplicate barcodes within 3 seconds. filter.enableResultDeduplication("barcode", true); await cvRouter.addResultFilter(filter); - if(bDestoryed){ throw Error(strErrorDistoryed); } + if (isDestroyed) { throw Error(componentDestroyedErrorMsg); } // Open camera and start scanning single barcode. await cameraEnhancer.open(); - if(bDestoryed){ throw Error(strErrorDistoryed); } + if (isDestroyed) { throw Error(componentDestroyedErrorMsg); } await cvRouter.startCapturing("ReadSingleBarcode"); - if(bDestoryed){ throw Error(strErrorDistoryed); } + if (isDestroyed) { throw Error(componentDestroyedErrorMsg); } + + } catch (ex: any) { - }catch(ex:any){ - - if((ex as Error)?.message === strErrorDistoryed){ - console.log(strErrorDistoryed); - }else{ + if ((ex as Error)?.message === componentDestroyedErrorMsg) { + console.log(componentDestroyedErrorMsg); + } else { let errMsg = ex.message || ex; console.error(errMsg); alert(errMsg); } } - // distroy function will wait pInit + // Resolve pInit promise once initialization is complete. resolveInit!(); }); +// dispose cvRouter when it's no longer needed onBeforeUnmount(async () => { - bDestoryed = true; - try{ - await pInit; + isDestroyed = true; + try { + await pInit; // Wait for the pInit to complete before disposing resources. cvRouter?.dispose(); cameraEnhancer?.dispose(); - }catch(_){} + } catch (_) { } }); - + ``` +> Note: +> +> If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customize-the-ui) ### Edit the `ImageCapture` component * In `ImageCapture.client.vue`, add code for initializing and destroying the `CaptureVisionRouter` instance. The `ImageCapture` helps decode barcodes in an image. ```vue + +.image-capture-container .results { + margin-top: 20px; + height: 100%; +} + ``` -### Add `VideoCapture` and `ImageCapture` components in `HelloWorld.client.vue` +### Add `VideoCapture` and `ImageCapture` components in `app.vue` -```vue - +* Add following code to `app.vue`. +```vue + + + ``` - -### Add the `HelloWorld` component to `app.vue` - -Edit the file `app.vue` to be like this - -```vue - -``` +> Note: +> +> Since `VideoCapture` and `ImageCapture` components are only rendered on the client side, we want to make sure that these components are not causing sie effects during the server rendering phase. We can solve this using the `client-only` component. * Try running the project. @@ -374,7 +394,7 @@ Edit the file `app.vue` to be like this npm run dev ``` -If you have followed all the steps correctly, you should now have a functioning page that allows you to scan barcodes from a webcam or a built-in camera. Additionally, if you want to decode a local image, you can click the `Decode Image` button and select the image you want to decode. Any barcodes that are detected will be displayed in a dialog. +If you followed all the steps correctly, you will have a working page that turns one of the cameras hooked to or built in your computer or mobile device into a barcode scanner. Also, if you want to decode a local image, just click the `Decode Image` button and select the image you want to decode. Once barcodes are found, the results will show in a dialog. ## Project Setup diff --git a/hello-world/nuxt/app.vue b/hello-world/nuxt/app.vue index c5d73201..716ec19e 100644 --- a/hello-world/nuxt/app.vue +++ b/hello-world/nuxt/app.vue @@ -1,5 +1,74 @@ + + + + \ No newline at end of file diff --git a/hello-world/nuxt/components/HelloWorld.client.vue b/hello-world/nuxt/components/HelloWorld.client.vue deleted file mode 100644 index 31de7511..00000000 --- a/hello-world/nuxt/components/HelloWorld.client.vue +++ /dev/null @@ -1,69 +0,0 @@ - - - - - \ No newline at end of file diff --git a/hello-world/nuxt/components/ImageCapture.client.vue b/hello-world/nuxt/components/ImageCapture.client.vue index b6c8d21d..a4d1be51 100644 --- a/hello-world/nuxt/components/ImageCapture.client.vue +++ b/hello-world/nuxt/components/ImageCapture.client.vue @@ -5,34 +5,39 @@ import { EnumCapturedResultItemType } from "dynamsoft-core"; import type { BarcodeResultItem } from "dynamsoft-barcode-reader"; import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; -const resDiv: Ref = ref(null); +const resultContainer: Ref = ref(null); -let pCvRouter: Promise | null = null; -let bDestoried = false; +let pCvRouter: Promise; +let isDestroyed = false; const captureImage = async (e: Event) => { let files = [...(e.target! as HTMLInputElement).files!]; - (e.target! as HTMLInputElement).value = ''; - resDiv.value!.innerText = ""; + (e.target! as HTMLInputElement).value = ''; // reset input + resultContainer.value!.innerText = ""; try { + // ensure cvRouter is created only once const cvRouter = await (pCvRouter = pCvRouter || CaptureVisionRouter.createInstance()); - if (bDestoried) return; - - for(let file of files){ + if (isDestroyed) return; + + for (let file of files) { // Decode selected image with 'ReadBarcodes_SpeedFirst' template. const result = await cvRouter.capture(file, "ReadBarcodes_SpeedFirst"); - if (bDestoried) return; + if (isDestroyed) return; - if(files.length > 1){ - resDiv.value!.innerText += `\n${file.name}:\n`; + // Print file name if there's multiple files + if (files.length > 1) { + resultContainer.value!.innerText += `\n${file.name}:\n`; } for (let _item of result.items) { - if(_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { continue; } + if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { + continue; // check if captured result item is a barcode + } let item = _item as BarcodeResultItem; - resDiv.value!.innerText += item.text + "\n"; + resultContainer.value!.innerText += item.text + "\n"; // output the decoded barcode text console.log(item.text); } - if (!result.items.length) resDiv.value!.innerText += 'No barcode found\n'; + // If no items are found, display that no barcode was detected + if (!result.items.length) resultContainer.value!.innerText += 'No barcode found\n'; } } catch (ex: any) { let errMsg = ex.message || ex; @@ -42,33 +47,32 @@ const captureImage = async (e: Event) => { } onBeforeUnmount(async () => { - bDestoried = true; - if(pCvRouter){ - try{ + isDestroyed = true; + if (pCvRouter) { + try { (await pCvRouter).dispose(); - }catch(_){} + } catch (_) { } } }); diff --git a/hello-world/nuxt/components/VideoCapture.client.vue b/hello-world/nuxt/components/VideoCapture.client.vue index f67d6f34..2b3ebacb 100644 --- a/hello-world/nuxt/components/VideoCapture.client.vue +++ b/hello-world/nuxt/components/VideoCapture.client.vue @@ -5,49 +5,48 @@ import { CameraEnhancer, CameraView } from "dynamsoft-camera-enhancer"; import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; -const strErrorDistoryed = 'videoCapture component destoryed'; +const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; -const uiContainer: Ref = ref(null); +const cameraViewContainer: Ref = ref(null); const resultsContainer: Ref = ref(null); -let resolveInit:()=>void; -const pInit:Promise = new Promise(r=>{resolveInit=r}); -let bDestoryed = false; +let resolveInit: () => void; +const pInit: Promise = new Promise(r => { resolveInit = r }); +let isDestroyed = false; -let cvRouter:CaptureVisionRouter; -let cameraEnhancer:CameraEnhancer; +let cvRouter: CaptureVisionRouter; +let cameraEnhancer: CameraEnhancer; onMounted(async () => { - try{ + try { // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. const cameraView = await CameraView.createInstance(); - if(bDestoryed){ throw Error(strErrorDistoryed); } // Check if component is destroyed after every async + if (isDestroyed) { throw Error(componentDestroyedErrorMsg); } // Check if component is destroyed after every async + cameraEnhancer = await CameraEnhancer.createInstance(cameraView); - if(bDestoryed){ throw Error(strErrorDistoryed); } + if (isDestroyed) { throw Error(componentDestroyedErrorMsg); } // Get default UI and append it to DOM. - uiContainer.value!.append(cameraView.getUIElement()); + cameraViewContainer.value!.append(cameraView.getUIElement()); // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. cvRouter = await CaptureVisionRouter.createInstance(); - if(bDestoryed){ throw Error(strErrorDistoryed); } + if (isDestroyed) { throw Error(componentDestroyedErrorMsg); } cvRouter.setInput(cameraEnhancer); // Define a callback for results. - cvRouter.addResultReceiver({ onDecodedBarcodesReceived: (result) => { - if (!result.barcodeResultItems.length) return; - - resultsContainer.value!.textContent = ''; - console.log(result); - for (let item of result.barcodeResultItems) { - resultsContainer.value!.append( - `${item.formatString}: ${item.text}`, - document.createElement('br'), - document.createElement('hr'), - ); + cvRouter.addResultReceiver({ + onDecodedBarcodesReceived: (result) => { + if (!result.barcodeResultItems.length) return; + + resultsContainer.value!.textContent = ''; + console.log(result); + for (let item of result.barcodeResultItems) { + resultsContainer.value!.textContent += `${item.formatString}: ${item.text}\n\n`; + } } - }}); + }); // Filter out unchecked and duplicate results. const filter = new MultiFrameResultCrossFilter(); @@ -56,58 +55,59 @@ onMounted(async () => { // Filter out duplicate barcodes within 3 seconds. filter.enableResultDeduplication("barcode", true); await cvRouter.addResultFilter(filter); - if(bDestoryed){ throw Error(strErrorDistoryed); } + if (isDestroyed) { throw Error(componentDestroyedErrorMsg); } // Open camera and start scanning single barcode. await cameraEnhancer.open(); - if(bDestoryed){ throw Error(strErrorDistoryed); } + if (isDestroyed) { throw Error(componentDestroyedErrorMsg); } await cvRouter.startCapturing("ReadSingleBarcode"); - if(bDestoryed){ throw Error(strErrorDistoryed); } + if (isDestroyed) { throw Error(componentDestroyedErrorMsg); } + + } catch (ex: any) { - }catch(ex:any){ - - if((ex as Error)?.message === strErrorDistoryed){ - console.log(strErrorDistoryed); - }else{ + if ((ex as Error)?.message === componentDestroyedErrorMsg) { + console.log(componentDestroyedErrorMsg); + } else { let errMsg = ex.message || ex; console.error(errMsg); alert(errMsg); } } - // distroy function will wait pInit + // Resolve pInit promise once initialization is complete. resolveInit!(); }); +// dispose cvRouter when it's no longer needed onBeforeUnmount(async () => { - bDestoryed = true; - try{ + isDestroyed = true; + try { await pInit; cvRouter?.dispose(); cameraEnhancer?.dispose(); - }catch(_){} + } catch (_) { } }); -../dynamsoft.config \ No newline at end of file diff --git a/hello-world/nuxt/dynamsoft.config.ts b/hello-world/nuxt/dynamsoft.config.ts index 8a0d59c1..351c39d0 100644 --- a/hello-world/nuxt/dynamsoft.config.ts +++ b/hello-world/nuxt/dynamsoft.config.ts @@ -2,11 +2,25 @@ import { CoreModule } from "dynamsoft-core"; import { LicenseManager } from "dynamsoft-license"; import "dynamsoft-barcode-reader"; +// Configures the paths where the .wasm files and other necessary resources for modules are located. +CoreModule.engineResourcePaths = { + std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", + dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", + core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", + license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", + cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", + dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", + dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", +}; + /** LICENSE ALERT - README * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); +LicenseManager.initLicense( + "DLS2eyJoYW5kc2hha2VDb2RlIjoiMTAyODk0NDUwLVRYbFhaV0pRY205cSIsIm1haW5TZXJ2ZXJVUkwiOiJodHRwczovL21sdHMuZHluYW1zb2Z0LmNvbSIsIm9yZ2FuaXphdGlvbklEIjoiMTAyODk0NDUwIiwic3RhbmRieVNlcnZlclVSTCI6Imh0dHBzOi8vc2x0cy5keW5hbXNvZnQuY29tIiwiY2hlY2tDb2RlIjoxMDUxNjY0NjUyfQ==", + true +); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. @@ -15,15 +29,5 @@ LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); * LICENSE ALERT - THE END */ -CoreModule.engineResourcePaths = { - std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", - dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", - core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", - license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", - cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", - dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", - dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/" -}; - // Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. CoreModule.loadWasm(["DBR"]); From 841727c1588da6dca58f1cedf6225a3c2dff8a74 Mon Sep 17 00:00:00 2001 From: felixindynamsoft Date: Wed, 26 Jun 2024 04:23:45 -0700 Subject: [PATCH 006/223] feat: update angular sample and docs (#182) * feat: update angular sample and docs * fix: formatting * add file names --------- Co-authored-by: felixindrawan --- hello-world/angular/README.md | 402 +++++++++++++++++- hello-world/angular/package.json | 4 +- hello-world/angular/src/app/app.component.css | 20 +- .../angular/src/app/app.component.html | 4 +- hello-world/angular/src/app/app.component.ts | 6 +- .../angular/src/app/dynamsoft.config.ts | 31 +- .../image-capture/image-capture.component.css | 9 +- .../image-capture.component.html | 13 +- .../image-capture/image-capture.component.ts | 62 +-- .../video-capture/video-capture.component.css | 4 +- .../video-capture.component.html | 6 +- .../video-capture/video-capture.component.ts | 120 +++--- hello-world/angular/src/index.html | 34 +- 13 files changed, 566 insertions(+), 149 deletions(-) diff --git a/hello-world/angular/README.md b/hello-world/angular/README.md index 8dd455f1..c299ec0b 100644 --- a/hello-world/angular/README.md +++ b/hello-world/angular/README.md @@ -1,10 +1,400 @@ -# DbrjsSampleAngular +# Hello World Sample for Angular + +[Angular](https://angular.dev/) is one of the most popular and mature JavaScript frameworks. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into an Angular application. Note that in this sample, `TypeScript` is used. + +In this guide, we will be using [`dynamsoft-barcode-reader-bundle 10.2.1000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/10.2.1000). + +> Note: +> +> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! +> +> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. + +## Official sample + +* Hello World in Angular - Source Code +* Hello World in Angular - Demo + +## Preparation +Make sure you have [node](https://nodejs.org/) and [Angular CLI](https://cli.angular.io/) installed. This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.3.7. -## Development server +## Quick Start + +```cmd +ng serve +``` +Then open `https://localhost:4200/` to view the sample app. + +## Creating the sample project + +In this section, we will be creating an Angular application utilizing the Dynamsoft Barcode Reader bundle sdk. + +We'll be exploring how you could create a page that not only enables barcode scanning via a webcam or a built-in camera, but also decode barcodes from local images. + +By the end of this guide, you'll have a good understanding of the SDK and be ready to discover more ways to use it! + +### Create an [Angular](https://angular.dev) Application bootstrapped with [Angular CLI](https://cli.angular.io/) +```cmd +ng new my-app +``` + +On installation, you will be prompted to configure your project.\ +You can customize these options according to your preferences.\ +Below is the configuration used for this sample. + +``` +? Which stylesheet format would you like to use? CSS +? Do you want to enable Server-Side Rendering (SSR) and Static Site Generation (SSG/Prerendering)? No +``` + +On installation, you will be prompted to configure your project.\ +You can customize these options according to your preferences.\ +Below is the configuration used for this sample. + +### **CD** to the root directory of the application and install necessary libraries + +```cmd +cd my-app +npm install dynamsoft-barcode-reader-bundle +``` + +## Start to implement + +### Add file "dynamsoft.config.ts" at the root of the app to configure libraries + +```typescript +/* /dynamsoft.config.ts */ +import { CoreModule } from 'dynamsoft-core'; +import { LicenseManager } from 'dynamsoft-license'; +import 'dynamsoft-barcode-reader'; + +// Configures the paths where the .wasm files and other necessary resources for modules are located. +CoreModule.engineResourcePaths = { + std: 'https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/', + dip: 'https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/', + core: 'https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/', + license: 'https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/', + cvr: 'https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/', + dbr: 'https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/', + dce: 'https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/', +}; + +/** LICENSE ALERT - README + * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. + */ + +LicenseManager.initLicense('DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9', true); + +/** + * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. + * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. + * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=github#specify-the-license or contact support@dynamsoft.com. + * LICENSE ALERT - THE END + */ + +// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. +CoreModule.loadWasm(['DBR']); +``` + +> Note: +> +> * `initLicense()` specify a license key to use the library. You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=sample&product=dbr&package=js to get your own trial license good for 30 days. +> * `engineResourcePaths` tells the library where to get the necessary resources at runtime. + +### Generate and edit the `video-capture` component + +* Generate the `video-capture`. The `video-capture` component helps decode barcodes via camera. + +```cmd +ng generate component video-capture +``` + +* In `video-capture.component.html`, add code to setup the component's HTML + +```html + +
+
+Results: +
+``` + +* In `video-capture.component.ts`, add code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). + +```ts +/* /src/app/video-capture/video-capture.component.ts */ +import { Component, ElementRef, ViewChild } from '@angular/core'; +import '../dynamsoft.config'; +import { CameraEnhancer, CameraView } from 'dynamsoft-camera-enhancer'; +import { CaptureVisionRouter } from 'dynamsoft-capture-vision-router'; +import { MultiFrameResultCrossFilter } from 'dynamsoft-utility'; + +const componentDestroyedErrorMsg = 'VideoCapture Component Destroyed'; + +@Component({ + selector: 'app-video-capture', + templateUrl: './video-capture.component.html', + styleUrls: ['./video-capture.component.css'], + standalone: true, +}) +export class VideoCaptureComponent { + @ViewChild('cameraViewContainer') cameraViewContainer?: ElementRef; + @ViewChild('results') resultsContainer?: ElementRef; + + resolveInit?: () => void; + pInit: Promise = new Promise((r) => { + this.resolveInit = r; + }); + isDestroyed = false; + + cvRouter?: CaptureVisionRouter; + cameraEnhancer?: CameraEnhancer; -Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The application will automatically reload if you change any of the source files. + async ngAfterViewInit(): Promise { + try { + // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. + const cameraView = await CameraView.createInstance(); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } // Check if component is destroyed after every async + this.cameraEnhancer = await CameraEnhancer.createInstance(cameraView); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + + // Get default UI and append it to DOM. + this.cameraViewContainer!.nativeElement.append(cameraView.getUIElement()); + + // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. + this.cvRouter = await CaptureVisionRouter.createInstance(); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + this.cvRouter.setInput(this.cameraEnhancer); + + // Define a callback for results. + this.cvRouter.addResultReceiver({ + onDecodedBarcodesReceived: (result) => { + if (!result.barcodeResultItems.length) return; + + this.resultsContainer!.nativeElement.textContent = ''; + console.log(result); + for (let item of result.barcodeResultItems) { + this.resultsContainer!.nativeElement.textContent += `${item.formatString}: ${item.text}\n\n`; + } + }, + }); + + // Filter out unchecked and duplicate results. + const filter = new MultiFrameResultCrossFilter(); + // Filter out unchecked barcodes. + filter.enableResultCrossVerification('barcode', true); + // Filter out duplicate barcodes within 3 seconds. + filter.enableResultDeduplication('barcode', true); + await this.cvRouter.addResultFilter(filter); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + + // Open camera and start scanning single barcode. + await this.cameraEnhancer.open(); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + await this.cvRouter.startCapturing('ReadSingleBarcode'); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + } catch (ex: any) { + if ((ex as Error)?.message === componentDestroyedErrorMsg) { + console.log(componentDestroyedErrorMsg); + } else { + let errMsg = ex.message || ex; + console.error(errMsg); + alert(errMsg); + } + } + + // Resolve pInit promise once initialization is complete. + this.resolveInit!(); + } + + // dispose cvRouter when it's no longer needed + async ngOnDestroy() { + this.isDestroyed = true; + try { + // Wait for the pInit to complete before disposing resources. + await this.pInit; + this.cvRouter?.dispose(); + this.cameraEnhancer?.dispose(); + } catch (_) {} + } +} +``` +> Note: +> +> If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customize-the-ui) + + +### Generate and edit the `image-capture` component + +* Generate the `image-capture`. The `image-capture` component helps decode barcodes in an image. + +```cmd +ng generate component image-capture +``` + +* In `image-capture.component.html`, add code to setup the component's HTML + +```html + +
+
+ +
+
+
+``` + +* In `image-capture.component.ts`, add code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). + +```ts +/* /src/app/image-capture/image-capture.component.ts */ +import { Component, ViewChild, ElementRef } from '@angular/core'; +import '../dynamsoft.config'; +import { EnumCapturedResultItemType } from 'dynamsoft-core'; +import type { BarcodeResultItem } from 'dynamsoft-barcode-reader'; +import { CaptureVisionRouter } from 'dynamsoft-capture-vision-router'; + +@Component({ + selector: 'app-image-capture', + templateUrl: './image-capture.component.html', + styleUrls: ['./image-capture.component.css'], + standalone: true, +}) +export class ImageCaptureComponent { + @ViewChild('results') resultsContainer?: ElementRef; + + pCvRouter?: Promise; + isDestroyed = false; + + captureImage = async (e: Event) => { + let files = [...((e.target! as HTMLInputElement).files as any as File[])]; + (e.target! as HTMLInputElement).value = ''; // reset input + this.resultsContainer!.nativeElement.innerText = ''; + try { + // ensure cvRouter is created only once + const cvRouter = await (this.pCvRouter = + this.pCvRouter || CaptureVisionRouter.createInstance()); + if (this.isDestroyed) return; + + for (let file of files) { + // Decode selected image with 'ReadBarcodes_SpeedFirst' template. + const result = await cvRouter.capture(file, 'ReadBarcodes_SpeedFirst'); + if (this.isDestroyed) return; + + // Print file name if there's multiple files + if (files.length > 1) { + this.resultsContainer!.nativeElement.innerText += `\n${file.name}:\n`; + } + for (let _item of result.items) { + if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { + continue; // check if captured result item is a barcode + } + let item = _item as BarcodeResultItem; + this.resultsContainer!.nativeElement.innerText += item.text + '\n'; // output the decoded barcode text + console.log(item.text); + } + // If no items are found, display that no barcode was detected + if (!result.items.length) + this.resultsContainer!.nativeElement.innerText += + 'No barcode found\n'; + } + } catch (ex: any) { + let errMsg = ex.message || ex; + console.error(errMsg); + alert(errMsg); + } + }; + + // dispose cvRouter when it's no longer needed + async ngOnDestroy() { + this.isDestroyed = true; + if (this.pCvRouter) { + try { + (await this.pCvRouter).dispose(); + } catch (_) {} + } + } +} +``` + +### Add the `video-capture` and `image-capture` component to the `app` component + +* On the `app` component, we will edit the component so that it offers buttons to switch components between `video-capture` and `image-capture`. + +* In `app.component.html`, add the following code. + +```html + +
+
+

Hello World for Angular

+
+
+ + +
+ @if (mode === 'video') { + + } @else { + + } +
+``` + +* In `app.component.ts`, add the following code. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). + +```ts +/* /src/app/app.component.ts */ +import { Component } from '@angular/core'; +import { NgStyle } from '@angular/common'; + +import { ImageCaptureComponent } from './image-capture/image-capture.component'; +import { VideoCaptureComponent } from './video-capture/video-capture.component'; + +@Component({ + selector: 'app-root', + standalone: true, + templateUrl: './app.component.html', + styleUrl: './app.component.css', + imports: [NgStyle, ImageCaptureComponent, VideoCaptureComponent], +}) +export class AppComponent { + title = 'dbrjs-angular-sample'; + + mode: string = 'video'; + + switchMode(value: string) { + this.mode = value; + } +} +``` + +* Try running the project. + +```cmd +ng serve +``` + +If you followed all the steps correctly, you will have a working page that turns one of the cameras hooked to or built in your computer or mobile device into a barcode scanner. Also, if you want to decode a local image, just click the `Decode Image` button and select the image you want to decode. Once barcodes are found, the results will show in a dialog. ## Code scaffolding @@ -22,6 +412,10 @@ Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github. Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. -## Further help +## Further help - Angular To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. + +## Support + +If you have any questions, feel free to [contact Dynamsoft Support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/hello-world/angular/package.json b/hello-world/angular/package.json index 18bb9825..1feefa5d 100644 --- a/hello-world/angular/package.json +++ b/hello-world/angular/package.json @@ -1,5 +1,5 @@ { - "name": "dbrjs-sample-angular", + "name": "dbrjs-angular-sample", "version": "0.0.0", "scripts": { "ng": "ng", @@ -36,4 +36,4 @@ "karma-jasmine-html-reporter": "~2.1.0", "typescript": "~5.4.2" } -} +} \ No newline at end of file diff --git a/hello-world/angular/src/app/app.component.css b/hello-world/angular/src/app/app.component.css index cfebba64..e3a585fd 100644 --- a/hello-world/angular/src/app/app.component.css +++ b/hello-world/angular/src/app/app.component.css @@ -1,19 +1,9 @@ - - .title { display: flex; justify-content: center; align-items: center; margin-top: 20px; } -/* .title .title-text { - -} */ -.title .title-logo { - width: 60px; - height: 60px; - animation: retate 5s infinite linear; -} .top-btns { width: 30%; margin: 20px auto; @@ -36,17 +26,17 @@ border-left: transparent; } -@media screen and (max-width: 500px) { +@media screen and (max-width: 800px) { .top-btns { - width: 70%; + width: 70%; } } @keyframes retate { from { - transform: rotate(0deg); + transform: rotate(0deg); } to { - transform: rotate(360deg); + transform: rotate(360deg); } -} \ No newline at end of file +} diff --git a/hello-world/angular/src/app/app.component.html b/hello-world/angular/src/app/app.component.html index d02a949c..8b8e0de7 100644 --- a/hello-world/angular/src/app/app.component.html +++ b/hello-world/angular/src/app/app.component.html @@ -3,8 +3,8 @@

Hello World for Angular

- - + +
@if (mode === 'video') { diff --git a/hello-world/angular/src/app/app.component.ts b/hello-world/angular/src/app/app.component.ts index e9d3f6c7..ae5c2422 100644 --- a/hello-world/angular/src/app/app.component.ts +++ b/hello-world/angular/src/app/app.component.ts @@ -9,12 +9,12 @@ import { VideoCaptureComponent } from './video-capture/video-capture.component'; standalone: true, templateUrl: './app.component.html', styleUrl: './app.component.css', - imports: [NgStyle, ImageCaptureComponent, VideoCaptureComponent] + imports: [NgStyle, ImageCaptureComponent, VideoCaptureComponent], }) export class AppComponent { - title = 'dbrjs-sample-angular'; + title = 'dbrjs-angular-sample'; - mode: string = "video"; + mode: string = 'video'; switchMode(value: string) { this.mode = value; diff --git a/hello-world/angular/src/app/dynamsoft.config.ts b/hello-world/angular/src/app/dynamsoft.config.ts index 8a0d59c1..87d3d287 100644 --- a/hello-world/angular/src/app/dynamsoft.config.ts +++ b/hello-world/angular/src/app/dynamsoft.config.ts @@ -1,12 +1,23 @@ -import { CoreModule } from "dynamsoft-core"; -import { LicenseManager } from "dynamsoft-license"; -import "dynamsoft-barcode-reader"; +import { CoreModule } from 'dynamsoft-core'; +import { LicenseManager } from 'dynamsoft-license'; +import 'dynamsoft-barcode-reader'; + +// Configures the paths where the .wasm files and other necessary resources for modules are located. +CoreModule.engineResourcePaths = { + std: 'https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/', + dip: 'https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/', + core: 'https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/', + license: 'https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/', + cvr: 'https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/', + dbr: 'https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/', + dce: 'https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/', +}; /** LICENSE ALERT - README * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); +LicenseManager.initLicense('DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9', true); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. @@ -15,15 +26,5 @@ LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); * LICENSE ALERT - THE END */ -CoreModule.engineResourcePaths = { - std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", - dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", - core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", - license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", - cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", - dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", - dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/" -}; - // Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(["DBR"]); +CoreModule.loadWasm(['DBR']); diff --git a/hello-world/angular/src/app/image-capture/image-capture.component.css b/hello-world/angular/src/app/image-capture/image-capture.component.css index e769c603..febb3153 100644 --- a/hello-world/angular/src/app/image-capture/image-capture.component.css +++ b/hello-world/angular/src/app/image-capture/image-capture.component.css @@ -1,10 +1,11 @@ -.capture-img { +.image-capture-container { width: 100%; height: 100%; - font-family:Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace; + font-family: Consolas, Monaco, Lucida Console, Liberation Mono, + DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace; } -.capture-img .img-ipt { +.image-capture-container .input-container { width: 80%; height: 100%; display: flex; @@ -13,6 +14,6 @@ margin: 0 auto; } -.capture-img .result-area { +.image-capture-container .results { margin-top: 20px; } diff --git a/hello-world/angular/src/app/image-capture/image-capture.component.html b/hello-world/angular/src/app/image-capture/image-capture.component.html index dad2d033..5faddf9c 100644 --- a/hello-world/angular/src/app/image-capture/image-capture.component.html +++ b/hello-world/angular/src/app/image-capture/image-capture.component.html @@ -1,4 +1,11 @@ -
-
-
+
+
+ +
+
diff --git a/hello-world/angular/src/app/image-capture/image-capture.component.ts b/hello-world/angular/src/app/image-capture/image-capture.component.ts index 5a0d07ec..fd0bac27 100644 --- a/hello-world/angular/src/app/image-capture/image-capture.component.ts +++ b/hello-world/angular/src/app/image-capture/image-capture.component.ts @@ -1,8 +1,8 @@ import { Component, ViewChild, ElementRef } from '@angular/core'; -import "../dynamsoft.config"; -import { EnumCapturedResultItemType } from "dynamsoft-core"; -import type { BarcodeResultItem } from "dynamsoft-barcode-reader"; -import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; +import '../dynamsoft.config'; +import { EnumCapturedResultItemType } from 'dynamsoft-core'; +import type { BarcodeResultItem } from 'dynamsoft-barcode-reader'; +import { CaptureVisionRouter } from 'dynamsoft-capture-vision-router'; @Component({ selector: 'app-image-capture', @@ -11,49 +11,57 @@ import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; standalone: true, }) export class ImageCaptureComponent { - - @ViewChild('resDiv') resDiv?: ElementRef; + @ViewChild('results') resultsContainer?: ElementRef; pCvRouter?: Promise; - bDestoried = false; + isDestroyed = false; captureImage = async (e: Event) => { - let files = [...(e.target! as HTMLInputElement).files as any as File[]]; - (e.target! as HTMLInputElement).value = ''; - this.resDiv!.nativeElement.innerText = ""; + let files = [...((e.target! as HTMLInputElement).files as any as File[])]; + (e.target! as HTMLInputElement).value = ''; // reset input + this.resultsContainer!.nativeElement.innerText = ''; try { - const cvRouter = await (this.pCvRouter = this.pCvRouter || CaptureVisionRouter.createInstance()); - if (this.bDestoried) return; - - for(let file of files){ + // ensure cvRouter is created only once + const cvRouter = await (this.pCvRouter = + this.pCvRouter || CaptureVisionRouter.createInstance()); + if (this.isDestroyed) return; + + for (let file of files) { // Decode selected image with 'ReadBarcodes_SpeedFirst' template. - const result = await cvRouter.capture(file, "ReadBarcodes_SpeedFirst"); - if (this.bDestoried) return; - - if(files.length > 1){ - this.resDiv!.nativeElement.innerText += `\n${file.name}:\n`; + const result = await cvRouter.capture(file, 'ReadBarcodes_SpeedFirst'); + if (this.isDestroyed) return; + + // Print file name if there's multiple files + if (files.length > 1) { + this.resultsContainer!.nativeElement.innerText += `\n${file.name}:\n`; } for (let _item of result.items) { - if(_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { continue; } + if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { + continue; // check if captured result item is a barcode + } let item = _item as BarcodeResultItem; - this.resDiv!.nativeElement.innerText += item.text + "\n"; + this.resultsContainer!.nativeElement.innerText += item.text + '\n'; // output the decoded barcode text console.log(item.text); } - if (!result.items.length) this.resDiv!.nativeElement.innerText += 'No barcode found\n'; + // If no items are found, display that no barcode was detected + if (!result.items.length) + this.resultsContainer!.nativeElement.innerText += + 'No barcode found\n'; } } catch (ex: any) { let errMsg = ex.message || ex; console.error(errMsg); alert(errMsg); } - } + }; + // dispose cvRouter when it's no longer needed async ngOnDestroy() { - this.bDestoried = true; - if(this.pCvRouter){ - try{ + this.isDestroyed = true; + if (this.pCvRouter) { + try { (await this.pCvRouter).dispose(); - }catch(_){} + } catch (_) {} } } } diff --git a/hello-world/angular/src/app/video-capture/video-capture.component.css b/hello-world/angular/src/app/video-capture/video-capture.component.css index 37aae8a5..465e054e 100644 --- a/hello-world/angular/src/app/video-capture/video-capture.component.css +++ b/hello-world/angular/src/app/video-capture/video-capture.component.css @@ -1,9 +1,9 @@ -.div-ui-container { +.camera-view-container { width: 100%; height: 70vh; } -.div-results-container { +.results { width: 100%; height: 10vh; overflow: auto; diff --git a/hello-world/angular/src/app/video-capture/video-capture.component.html b/hello-world/angular/src/app/video-capture/video-capture.component.html index 7e75ede4..8887901a 100644 --- a/hello-world/angular/src/app/video-capture/video-capture.component.html +++ b/hello-world/angular/src/app/video-capture/video-capture.component.html @@ -1,4 +1,4 @@ -
+
+
Results: -
-
+
diff --git a/hello-world/angular/src/app/video-capture/video-capture.component.ts b/hello-world/angular/src/app/video-capture/video-capture.component.ts index 017070b3..2e671a7d 100644 --- a/hello-world/angular/src/app/video-capture/video-capture.component.ts +++ b/hello-world/angular/src/app/video-capture/video-capture.component.ts @@ -1,10 +1,10 @@ import { Component, ElementRef, ViewChild } from '@angular/core'; -import "../dynamsoft.config"; -import { CameraEnhancer, CameraView } from "dynamsoft-camera-enhancer"; -import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; -import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; +import '../dynamsoft.config'; +import { CameraEnhancer, CameraView } from 'dynamsoft-camera-enhancer'; +import { CaptureVisionRouter } from 'dynamsoft-capture-vision-router'; +import { MultiFrameResultCrossFilter } from 'dynamsoft-utility'; -const strErrorDistoryed = 'videoCapture component destoryed'; +const componentDestroyedErrorMsg = 'VideoCapture Component Destroyed'; @Component({ selector: 'app-video-capture', @@ -13,85 +13,95 @@ const strErrorDistoryed = 'videoCapture component destoryed'; standalone: true, }) export class VideoCaptureComponent { + @ViewChild('cameraViewContainer') cameraViewContainer?: ElementRef; + @ViewChild('results') resultsContainer?: ElementRef; - @ViewChild('uiContainer') uiContainer?: ElementRef; - @ViewChild('resultsContainer') resultsContainer?: ElementRef; - - resolveInit?: ()=>void; - pInit:Promise = new Promise(r=>{this.resolveInit=r}); - bDestoryed = false; - - cvRouter?:CaptureVisionRouter; - cameraEnhancer?:CameraEnhancer; + resolveInit?: () => void; + pInit: Promise = new Promise((r) => { + this.resolveInit = r; + }); + isDestroyed = false; - async ngAfterViewInit(): Promise { + cvRouter?: CaptureVisionRouter; + cameraEnhancer?: CameraEnhancer; - try{ + async ngAfterViewInit(): Promise { + try { // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. const cameraView = await CameraView.createInstance(); - if(this.bDestoryed){ throw Error(strErrorDistoryed); } // Check if component is destroyed after every async + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } // Check if component is destroyed after every async this.cameraEnhancer = await CameraEnhancer.createInstance(cameraView); - if(this.bDestoryed){ throw Error(strErrorDistoryed); } - + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + // Get default UI and append it to DOM. - this.uiContainer!.nativeElement.append(cameraView.getUIElement()); - + this.cameraViewContainer!.nativeElement.append(cameraView.getUIElement()); + // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. this.cvRouter = await CaptureVisionRouter.createInstance(); - if(this.bDestoryed){ throw Error(strErrorDistoryed); } + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } this.cvRouter.setInput(this.cameraEnhancer); - + // Define a callback for results. - this.cvRouter.addResultReceiver({ onDecodedBarcodesReceived: (result) => { - if (!result.barcodeResultItems.length) return; - - this.resultsContainer!.nativeElement.textContent = ''; - console.log(result); - for (let item of result.barcodeResultItems) { - this.resultsContainer!.nativeElement.append( - `${item.formatString}: ${item.text}`, - document.createElement('br'), - document.createElement('hr'), - ); - } - }}); - + this.cvRouter.addResultReceiver({ + onDecodedBarcodesReceived: (result) => { + if (!result.barcodeResultItems.length) return; + + this.resultsContainer!.nativeElement.textContent = ''; + console.log(result); + for (let item of result.barcodeResultItems) { + this.resultsContainer!.nativeElement.textContent += `${item.formatString}: ${item.text}\n\n`; + } + }, + }); + // Filter out unchecked and duplicate results. const filter = new MultiFrameResultCrossFilter(); // Filter out unchecked barcodes. - filter.enableResultCrossVerification("barcode", true); + filter.enableResultCrossVerification('barcode', true); // Filter out duplicate barcodes within 3 seconds. - filter.enableResultDeduplication("barcode", true); + filter.enableResultDeduplication('barcode', true); await this.cvRouter.addResultFilter(filter); - if(this.bDestoryed){ throw Error(strErrorDistoryed); } - + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + // Open camera and start scanning single barcode. await this.cameraEnhancer.open(); - if(this.bDestoryed){ throw Error(strErrorDistoryed); } - await this.cvRouter.startCapturing("ReadSingleBarcode"); - if(this.bDestoryed){ throw Error(strErrorDistoryed); } - - }catch(ex:any){ - - if((ex as Error)?.message === strErrorDistoryed){ - console.log(strErrorDistoryed); - }else{ + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + await this.cvRouter.startCapturing('ReadSingleBarcode'); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + } catch (ex: any) { + if ((ex as Error)?.message === componentDestroyedErrorMsg) { + console.log(componentDestroyedErrorMsg); + } else { let errMsg = ex.message || ex; console.error(errMsg); alert(errMsg); } } - - // distroy function will wait pInit + + // Resolve pInit promise once initialization is complete. this.resolveInit!(); } + // dispose cvRouter when it's no longer needed async ngOnDestroy() { - this.bDestoryed = true; - try{ + this.isDestroyed = true; + try { + // Wait for the pInit to complete before disposing resources. await this.pInit; this.cvRouter?.dispose(); this.cameraEnhancer?.dispose(); - }catch(_){} + } catch (_) {} } } diff --git a/hello-world/angular/src/index.html b/hello-world/angular/src/index.html index 0533df81..4a1660de 100644 --- a/hello-world/angular/src/index.html +++ b/hello-world/angular/src/index.html @@ -1,16 +1,22 @@ - + - - - DbrjsSampleAngular - - - - - - - - - - + + + Hello World for Angular - Dynamsoft Barcode Reader Sample + + + + + + + + + + From 3e1183cc3003bd600b0632f7ede4d29e8effb71e Mon Sep 17 00:00:00 2001 From: felixindynamsoft Date: Mon, 1 Jul 2024 00:52:55 -0700 Subject: [PATCH 007/223] feat: update electron sample and docs (#186) * feat: update electron sample and docs * fix: reversed globally defined vars --------- Co-authored-by: felixindrawan --- hello-world/electron/README.md | 171 +++++++++++++++++------------- hello-world/electron/action.js | 54 +++++----- hello-world/electron/index.html | 22 ++-- hello-world/electron/package.json | 2 +- hello-world/electron/style.css | 9 +- 5 files changed, 141 insertions(+), 117 deletions(-) diff --git a/hello-world/electron/README.md b/hello-world/electron/README.md index 6743889c..4a3171cb 100644 --- a/hello-world/electron/README.md +++ b/hello-world/electron/README.md @@ -1,6 +1,14 @@ # Hello World Sample for Electron -[Electron](https://www.electronjs.org/) is a framework for creating native applications with web technologies. Follow this guide to learn how to implement Dynamsoft Barcode Reader JavaScript SDK (hereafter called "the library") into an Electron application. +[Electron](https://www.electronjs.org/) is a framework for creating native applications with web technologies. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a Next.js application. Note that in this sample, `TypeScript` is used. + +In this guide, we will be using [`dynamsoft-barcode-reader-bundle 10.2.1000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/10.2.1000). + +> Note: +> +> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! +> +> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. ## Official Sample @@ -10,7 +18,23 @@ Make sure you have [node](https://nodejs.org/) installed. `node 16.20.1` and `electron 26.4.1` are used in this article. -## Initialize project +## Quick Start + +```cmd +npm install +npm start +``` +A window should open to view the sample application + +## Creating the sample project + +In this section, we will be creating an Electron application utilizing the Dynamsoft Barcode Reader bundle sdk. + +We'll be exploring how you could create a page that not only enables barcode scanning via a webcam or a built-in camera, but also decode barcodes from local images. + +By the end of this guide, you'll have a good understanding of the SDK and be ready to discover more ways to use it! + +### Initialize project ```cmd mkdir my-app && cd my-app @@ -19,27 +43,25 @@ npm init `npm init` will prompt you to configure some fields in your `package.json`. Note that the `entry point` should be `main.js` (it will be created later). -## install necessary libraries +### Install the necessary libraries ```cmd npm install electron --save-dev -npm install dynamsoft-capture-vision-std -npm install dynamsoft-image-processing -npm install dynamsoft-core -npm install dynamsoft-license -npm install dynamsoft-utility -npm install dynamsoft-barcode-reader -npm install dynamsoft-capture-vision-router -npm install dynamsoft-camera-enhancer +npm install dynamsoft-capture-vision-std -E +npm install dynamsoft-image-processing -E +npm install dynamsoft-barcode-reader-bundle -E ``` ## Start to implement ### Create a main.js file -As defined in the `package.json` file, `main.js` is the entry point of the application, we define it like this: +As defined in the `package.json` file, `main.js` is the entry point of the application. + +Create a `main.js` file at the root folder, and define it like this: ```javascript +/* /main.js */ const { app, BrowserWindow } = require("electron"); function createWindow() { @@ -80,30 +102,31 @@ The code basically opens `index.html` in a window. For more information, check o ### Create an `index.html` file -Create the page to be loaded in the created window. +As defined above, `index.html` is the file that will be loaded into the crated window. + +Create an `index.html` file at the root folder, and define it like this: ```html + - - + + Dynamsoft Barcode Reader Sample - Electron - - - - - - - + +

Hello World for Electron

-
+
+
Results: -
-
+
@@ -111,16 +134,28 @@ Create the page to be loaded in the created window. ### Create an `action.js` file -`index.html` will loads `action.js`, which makes use of libraries to read barcodes from a video input: +`index.html` will load `action.js`, which makes use of libraries to read barcodes from a video input. + +Create the `action.js` file at the root folder, and define it like this: ```javascript +/* /action.js */ +// Configures the paths where the .wasm files and other necessary resources for modules are located. +Dynamsoft.Core.CoreModule.engineResourcePaths = { + std: "./node_modules/dynamsoft-capture-vision-std/dist/", + dip: "./node_modules/dynamsoft-image-processing/dist/", + core: "./node_modules/dynamsoft-core/dist/", + license: "./node_modules/dynamsoft-license/dist/", + cvr: "./node_modules/dynamsoft-capture-vision-router/dist/", + dbr: "./node_modules/dynamsoft-barcode-reader/dist/", + dce: "./node_modules/dynamsoft-camera-enhancer/dist/" +}; + /** LICENSE ALERT - README * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -Dynamsoft.License.LicenseManager.initLicense( - "DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9" -); +Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. @@ -129,63 +164,41 @@ Dynamsoft.License.LicenseManager.initLicense( * LICENSE ALERT - THE END */ -Dynamsoft.Core.CoreModule.engineResourcePaths = { - std: "./node_modules/dynamsoft-capture-vision-std/dist/", - dip: "./node_modules/dynamsoft-image-processing/dist/", - core: "./node_modules/dynamsoft-core/dist/", - license: "./node_modules/dynamsoft-license/dist/", - cvr: "./node_modules/dynamsoft-capture-vision-router/dist/", - dbr: "./node_modules/dynamsoft-barcode-reader/dist/", - dce: "./node_modules/dynamsoft-camera-enhancer/dist/" -}; -(async function () { +// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. +Dynamsoft.Core.CoreModule.loadWasm(["DBR"]); + +(async () => { try { // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. const cameraView = await Dynamsoft.DCE.CameraView.createInstance(); - const cameraEnhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance( - cameraView - ); - document - .querySelector("#div-ui-container") - .append(cameraView.getUIElement()); // Get default UI and append it to DOM. + const cameraEnhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance(cameraView); + // Get default UI and append it to DOM. + document.querySelector("#camera-view-container").append(cameraView.getUIElement()); // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. const cvRouter = await Dynamsoft.CVR.CaptureVisionRouter.createInstance(); cvRouter.setInput(cameraEnhancer); // Define a callback for results. - const resultReceiver = new Dynamsoft.CVR.CapturedResultReceiver(); - resultReceiver.onDecodedBarcodesReceived = (result) => { - if (!result.barcodeResultItems.length) return; - - const resultsContainer = document.querySelector("#div-results-container"); - resultsContainer.textContent = ''; - console.log(result); - for (let item of result.barcodeResultItems) { - resultsContainer.append( - `${item.formatString}: ${item.text}`, - document.createElement('br'), - document.createElement('hr'), - ); + cvRouter.addResultReceiver({ + onDecodedBarcodesReceived: (result) => { + if (!result.barcodeResultItems.length) return; + + const resultsContainer = document.querySelector("#results"); + resultsContainer.textContent = ''; + console.log(result); + for (let item of result.barcodeResultItems) { + resultsContainer.textContent += `${item.formatString}: ${item.text}\n\n`; + } } - }; - cvRouter.addResultReceiver(resultReceiver); + }); // Filter out unchecked and duplicate results. const filter = new Dynamsoft.Utility.MultiFrameResultCrossFilter(); - filter.enableResultCrossVerification( - "barcode", - true - ); // Filter out unchecked barcodes. + // Filter out unchecked barcodes. + filter.enableResultCrossVerification("barcode", true); // Filter out duplicate barcodes within 3 seconds. - filter.enableResultDeduplication( - "barcode", - true - ); - filter.setDuplicateForgetTime( - "barcode", - 3000 - ); + filter.enableResultDeduplication("barcode", true); await cvRouter.addResultFilter(filter); // Open camera and start scanning single barcode. @@ -201,19 +214,27 @@ Dynamsoft.Core.CoreModule.engineResourcePaths = { ### Create an `style.css` file -`index.html` will loads `style.css`, which defines the styles for the UI +`index.html` will load `style.css`, which defines the styles for the UI. + +Create the `style.css` file at the root folder. Note that this is customizable! ```css -#div-ui-container { +body { + text-align: center; +} + +#camera-view-container { width: 100%; height: 80vh; } -#div-results-container { +#results { width: 100%; height: 10vh; overflow: auto; + white-space: pre-wrap; } + ``` ## Run the application diff --git a/hello-world/electron/action.js b/hello-world/electron/action.js index caa09040..18998045 100644 --- a/hello-world/electron/action.js +++ b/hello-world/electron/action.js @@ -1,8 +1,19 @@ +// Configures the paths where the .wasm files and other necessary resources for modules are located. +Dynamsoft.Core.CoreModule.engineResourcePaths = { + std: "./node_modules/dynamsoft-capture-vision-std/dist/", + dip: "./node_modules/dynamsoft-image-processing/dist/", + core: "./node_modules/dynamsoft-core/dist/", + license: "./node_modules/dynamsoft-license/dist/", + cvr: "./node_modules/dynamsoft-capture-vision-router/dist/", + dbr: "./node_modules/dynamsoft-barcode-reader/dist/", + dce: "./node_modules/dynamsoft-camera-enhancer/dist/" +}; + /** LICENSE ALERT - README * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); +Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. @@ -11,48 +22,37 @@ Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMD * LICENSE ALERT - THE END */ -Dynamsoft.Core.CoreModule.engineResourcePaths = { - std: "./node_modules/dynamsoft-capture-vision-std/dist/", - dip: "./node_modules/dynamsoft-image-processing/dist/", - core: "./node_modules/dynamsoft-core/dist/", - license: "./node_modules/dynamsoft-license/dist/", - cvr: "./node_modules/dynamsoft-capture-vision-router/dist/", - dbr: "./node_modules/dynamsoft-barcode-reader/dist/", - dce: "./node_modules/dynamsoft-camera-enhancer/dist/", -}; - -// Optional. Used to load wasm resources in advance, reducing latency between video playing and barcode decoding. +// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. Dynamsoft.Core.CoreModule.loadWasm(["DBR"]); -// Defined globally for easy debugging. -let cameraEnhancer, cvRouter; (async () => { + // Defined globally for easy debugging. + let cameraEnhancer, cvRouter; + try { // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. const cameraView = await Dynamsoft.DCE.CameraView.createInstance(); cameraEnhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance(cameraView); // Get default UI and append it to DOM. - document.querySelector("#div-ui-container").append(cameraView.getUIElement()); + document.querySelector("#camera-view-container").append(cameraView.getUIElement()); // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. cvRouter = await Dynamsoft.CVR.CaptureVisionRouter.createInstance(); cvRouter.setInput(cameraEnhancer); // Define a callback for results. - cvRouter.addResultReceiver({ onDecodedBarcodesReceived: (result) => { - if (!result.barcodeResultItems.length) return; + cvRouter.addResultReceiver({ + onDecodedBarcodesReceived: (result) => { + if (!result.barcodeResultItems.length) return; - const resultsContainer = document.querySelector("#div-results-container"); - resultsContainer.textContent = ''; - console.log(result); - for (let item of result.barcodeResultItems) { - resultsContainer.append( - `${item.formatString}: ${item.text}`, - document.createElement('br'), - document.createElement('hr'), - ); + const resultsContainer = document.querySelector("#results"); + resultsContainer.textContent = ''; + console.log(result); + for (let item of result.barcodeResultItems) { + resultsContainer.textContent += `${item.formatString}: ${item.text}\n\n`; + } } - }}); + }); // Filter out unchecked and duplicate results. const filter = new Dynamsoft.Utility.MultiFrameResultCrossFilter(); diff --git a/hello-world/electron/index.html b/hello-world/electron/index.html index 6556bb0b..bc250794 100644 --- a/hello-world/electron/index.html +++ b/hello-world/electron/index.html @@ -2,23 +2,21 @@ - - + + Dynamsoft Barcode Reader Sample - Electron - - - - - - - + +

Hello World for Electron

-
+
+
Results: -
-
+
diff --git a/hello-world/electron/package.json b/hello-world/electron/package.json index 0e561b5a..c0e26d21 100644 --- a/hello-world/electron/package.json +++ b/hello-world/electron/package.json @@ -25,4 +25,4 @@ "dynamsoft-capture-vision-std": "1.2.10", "dynamsoft-image-processing": "2.2.30" } -} +} \ No newline at end of file diff --git a/hello-world/electron/style.css b/hello-world/electron/style.css index 864b4669..c0360ad1 100644 --- a/hello-world/electron/style.css +++ b/hello-world/electron/style.css @@ -1,10 +1,15 @@ -#div-ui-container { +body { + text-align: center; +} + +#camera-view-container { width: 100%; height: 80vh; } -#div-results-container { +#results { width: 100%; height: 10vh; overflow: auto; + white-space: pre-wrap; } From f7b969bcab85114602983b970ad6b111f7ffcc40 Mon Sep 17 00:00:00 2001 From: felixindynamsoft Date: Mon, 1 Jul 2024 01:18:03 -0700 Subject: [PATCH 008/223] feat: update pwa sample and docs (#187) Co-authored-by: felixindrawan --- hello-world/pwa/README.md | 372 +++++++++++++++------------- hello-world/pwa/helloworld-pwa.html | 167 +++++++------ hello-world/pwa/helloworld-pwa.json | 42 ++-- hello-world/pwa/service-worker.js | 13 +- 4 files changed, 308 insertions(+), 286 deletions(-) diff --git a/hello-world/pwa/README.md b/hello-world/pwa/README.md index 1ab0d32d..d8906957 100644 --- a/hello-world/pwa/README.md +++ b/hello-world/pwa/README.md @@ -1,6 +1,14 @@ # Hello World Sample for PWA -[PWA](https://web.dev/progressive-web-apps/) is short for Progressive Web Apps which stand for web applications that have been designed to behave like platform-specific (native) applications. Check out the following on how to implement Dynamsoft Barcode Reader JavaScript SDK (hereafter called "the library") into a PWA application. +[PWA](https://web.dev/progressive-web-apps/) is short for Progressive Web Apps, which are web applications designed to mimic the functionality and user experience of platform-specific (native) applications. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a PWA application. + +In this guide, we will be using [`dynamsoft-barcode-reader-bundle 10.2.1000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/10.2.1000). + +> Note: +> +> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! +> +> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. ## Official Sample @@ -9,175 +17,172 @@ ## Preparation -We will try to turn our most basic hello world sample into a PWA. +We will try to turn our basic "Hello World" sample into a PWA. Follow these steps: -First, create a file with the name "helloworld-pwa.html" and fill it with the following code: +* Create new file named `helloworld-pwa.html` and add the following code: ```html + - - - - - Hello World - - - -

Hello World for PWA

-
-Results: -
-
- + - + - - + })(); + + ``` -Next, set up a secure environment (HTTPs) to run the page "helloworld-pwa.html". This is required because PWAs only run in secure environments. - -In our case, we use IIS to set up a secure site at "https://localhost" and the page is put at the root so that it can be accessed at "https://localhost/helloworld-pwa.html". +* Next, set up a secure environment (HTTPS) to run the page `helloworld-pwa.html`. This is required as PWAs only run in secure environments. +> Note: +> +> In this sample, we're using IIS to set up a secure site at https://localhost. The page will be located at the root of the site so that it can be accessed at https://localhost/helloworld-pwa.html. ## Make the app progressive ### Register a service worker for offline support -As the basis for PWAs, Service Workers are a virtual proxy between the browser and the network. A service worker can serve content offline, handle notifications and perform heavy calculations, etc. all on a separate thread. +Service Workers form the foundation of PWAs, acting as the virtual proxy between the browser and the network. They enable offline content delivery, manage notifications, and perform heavy calculations on a separate thread -To use a service worker, we first need to register it. In the helloworld-pwa.html file, add the following at the end of the script: +* To use a service worker, we first need to register it. In the `helloworld-pwa.html` file, add the following code at the end of the script: ```javascript +/* /helloworld-pwa.html */ if ('serviceWorker' in navigator) { navigator.serviceWorker.register('./service-worker.js'); }; ``` -Create the service-worker.js file with the following content: +* Next, create the `service-worker.js` file with the following content: ```javascript +/* /service-worker.js */ // Files to cache const cacheName = 'helloworld-pwa'; const appShellFiles = [ - './helloworld-pwa.html', + './helloworld-pwa.html', ]; // Installing Service Worker -self.addEventListener('install', (e) => { - console.log('[Service Worker] Install'); - e.waitUntil((async () => { - const cache = await caches.open(cacheName); - console.log('[Service Worker] Caching all: app shell and content'); - await cache.addAll(appShellFiles); - })()); +self.addEventListener("install", (e) => { + console.log("[Service Worker] Install"); + e.waitUntil( + (async () => { + const cache = await caches.open(cacheName); + console.log("[Service Worker] Caching all: app shell and content"); + await cache.addAll(appShellFiles); + })() + ); }); -self.addEventListener('fetch', (e) => { - e.respondWith((async () => { - const r = await caches.match(e.request); - console.log(`[Service Worker] Fetching resource: ${e.request.url}`); - if (r) { return r; } - const response = await fetch(e.request); - const cache = await caches.open(cacheName); - console.log(`[Service Worker] Caching new resource: ${e.request.url}`); - if (e.request.method !== "POST") - cache.put(e.request, response.clone()); - return response; - })()); +self.addEventListener("fetch", (e) => { + e.respondWith( + (async () => { + // Fetch cached response if exists + const cachedResponse = await caches.match(e.request); + console.log(`[Service Worker] Fetching resource: ${e.request.url}`); + if (cachedResponse) { + return cachedResponse; + } + + // Otherwise, fetch from network + const response = await fetch(e.request); + const cache = await caches.open(cacheName); + console.log(`[Service Worker] Caching new resource: ${e.request.url}`); + if (e.request.method !== "POST") { + cache.put(e.request, response.clone()); + } + return response; + })() + ); }); ``` -With the above code, the application can now work offline because the service worker will cache the page helloworld-pwa.html and its related resources. +With the above code, the application can now work offline because the service worker will cache the `helloworld-pwa.html` page and its related resources. For more information, refer to [Making PWAs work offline with Service workers](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Offline_Service_workers). -> NOTE +> Note: > -> Since the files are being cached, changes we make in later steps may not be reflected. Therefore, don't forget to clear the cache after a change is made. To do so, you can run the following in the browser console. +> Since the files are cached, changes we make in later steps may not be reflected immediately. To ensure updates are applied, clear the cache after changes are made. You can do this by running the following code in the browser console: > > ```javascript > const cacheName = 'helloworld-pwa'; @@ -186,46 +191,50 @@ For more information, refer to [Making PWAs work offline with Service workers](h ### Use a web manifest file to make the application installable -A web manifest file contains a list of information about a website in a JSON format. This information is used to present the web app correctly for installation on a device. +A web manifest file contains a list of information about a website in JSON format. This information is used to enable the web app to be installed on a device. -In our example, we first create a file "helloworld-pwa.json" with the following content: +* Create a file named `helloworld-pwa.json` with the following content: ```json +/* /helloworld-pwa.json */ { - "name": "Dynamsoft Barcode Reader Progressive Web App", - "short_name": "DBR-PWA", - "description": "Progressive Web App that reads barcodes from a video input with Dynamsoft Barcode Reader.", - "start_url": "./helloworld-pwa.html", - "scope": ".", - "display": "standalone", - "theme_color": "#B12A34", - "background_color": "#B12A34", - "icons": [ - { - "src": "./dynamsoft-512x512.png", - "sizes": "512x512", - "type": "image/png" - }, - { - "src": "./dynamsoft-192x192.png", - "sizes": "192x192", - "type": "image/png" - } - ] + "name": "Dynamsoft Barcode Reader Progressive Web App", + "short_name": "DBR-PWA", + "description": "Progressive Web App that reads barcodes from a video input with Dynamsoft Barcode Reader.", + "start_url": "./helloworld-pwa.html", + "scope": ".", + "display": "standalone", + "theme_color": "#B12A34", + "background_color": "#B12A34", + "icons": [ + { + "src": "./dynamsoft-512x512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "./dynamsoft-192x192.png", + "sizes": "192x192", + "type": "image/png" + } + ] } ``` -> The icon files can be found in the github repository. +> Note: The icon files can be found in the github repository. -Then we include the file in the <head> block of the helloworld-pwa.html file: +* Then we include the file in the `` block of the `helloworld-pwa.html` file as such: ```html + ``` -For compatibility on safari, we need add some `meta` in ``: +* For compatibility on safari, we need add some `meta` in ``. ```html + + @@ -237,22 +246,26 @@ For compatibility on safari, we need add some `meta` in ``: Now, if you open the application again in your browser, you will notice an install icon appear on the right side of the address bar. When you click on it, a pop-up will appear asking if you want to install the app. -Once installed, you can use it like a native app. +Once installed, you can use it just like any native app. -For offline use, you need to cache more files. +To enable offline functionality for Dynamsoft Barcode Reader, you'll need to cache more files. -service-worker.js +### Enabling offline functionality for Dynamsoft Barcode Reader + +These directories below are the resources required for Dynamsoft Barcode Reader functionality. Once added, these files are cached on installation of the service worker (i.e. `install` event), wensuring the PWA remains fully functional without any internet. + +Add this code below to the `service-worker.js` ```javascript -const coreResourcesDir = - "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", - utilityResourcesDir = - "https://cdn.jsdelivr.net/npm/dynamsoft-utility@1.2.20/dist/", - dbrResourcesDir = - "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", - cvrResourcesDir = - "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", - dceResourcesDir = - "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/"; +/* /service-worker.js */ +const engineResourcePaths = { + std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", + dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", + core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", + license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", + cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", + dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", + dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/" +}; // Files to cache const cacheName = "helloworld-pwa"; @@ -261,19 +274,24 @@ const appShellFiles = [ "./dynamsoft-192x192.png", "./dynamsoft-512x512.png", "./helloworld-pwa.json", - `${coreResourcesDir}core.js`, - `${utilityResourcesDir}utility.js`, - `${dbrResourcesDir}dbr.js`, - `${dbrResourcesDir}dbr.wasm`, - `${dbrResourcesDir}DBR-PresetTemplates.json`, - `${cvrResourcesDir}cvr.js`, - `${cvrResourcesDir}cvr.wasm`, - `${cvrResourcesDir}cvr.wasm.js`, - `${cvrResourcesDir}cvr_wasm_glue.js`, - `${cvrResourcesDir}cvr.browser.worker.js`, - `${cvrResourcesDir}dls.license.dialog.html`, - `${cvrResourcesDir}dce.js`, - `${cvrResourcesDir}dce.ui.html`, + `${engineResourcePaths.std}std.js`, + `${engineResourcePaths.std}std.wasm`, + `${engineResourcePaths.dip}dip.wasm`, + `${engineResourcePaths.core}core.js`, + `${engineResourcePaths.core}core.worker.js`, + `${engineResourcePaths.core}core.wasm`, + `${engineResourcePaths.license}license.js`, + `${engineResourcePaths.license}dls.license.dialog.html`, + `${engineResourcePaths.license}license.wasm`, + `${engineResourcePaths.utility}utility.js`, + `${engineResourcePaths.dbr}dbr.js`, + `${engineResourcePaths.dbr}dbr.wasm`, + `${engineResourcePaths.dbr}DBR-PresetTemplates.json`, + `${engineResourcePaths.cvr}cvr.js`, + `${engineResourcePaths.cvr}cvr.wasm`, + `${engineResourcePaths.cvr}cvr.worker.js`, + `${engineResourcePaths.dce}dce.js`, + `${engineResourcePaths.dce}dce.ui.html`, ]; ``` diff --git a/hello-world/pwa/helloworld-pwa.html b/hello-world/pwa/helloworld-pwa.html index dfa281ce..50addab5 100644 --- a/hello-world/pwa/helloworld-pwa.html +++ b/hello-world/pwa/helloworld-pwa.html @@ -1,98 +1,97 @@ - - - - - - Dynamsoft Barcode Reader PWA Sample - Hello World (Decode via Camera) - - - - - - - - - - + + + + + + Dynamsoft Barcode Reader PWA Sample - Hello World (Decode via Camera) + + + + + + + + + + - -

Hello World for PWA

-
- Results: -
-
- - + + - - + + diff --git a/hello-world/pwa/helloworld-pwa.json b/hello-world/pwa/helloworld-pwa.json index 67cf077d..1c6c8e42 100644 --- a/hello-world/pwa/helloworld-pwa.json +++ b/hello-world/pwa/helloworld-pwa.json @@ -1,22 +1,22 @@ { - "name": "Dynamsoft Barcode Reader Progressive Web App", - "short_name": "DBR-PWA", - "description": "Progressive Web App that reads barcodes from a video input with Dynamsoft Barcode Reader.", - "start_url": "./helloworld-pwa.html", - "scope": ".", - "display": "standalone", - "theme_color": "#B12A34", - "background_color": "#B12A34", - "icons": [ - { - "src": "./dynamsoft-512x512.png", - "sizes": "512x512", - "type": "image/png" - }, - { - "src": "./dynamsoft-192x192.png", - "sizes": "192x192", - "type": "image/png" - } - ] -} + "name": "Dynamsoft Barcode Reader Progressive Web App", + "short_name": "DBR-PWA", + "description": "Progressive Web App that reads barcodes from a video input with Dynamsoft Barcode Reader.", + "start_url": "./helloworld-pwa.html", + "scope": ".", + "display": "standalone", + "theme_color": "#B12A34", + "background_color": "#B12A34", + "icons": [ + { + "src": "./dynamsoft-512x512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "./dynamsoft-192x192.png", + "sizes": "192x192", + "type": "image/png" + } + ] +} \ No newline at end of file diff --git a/hello-world/pwa/service-worker.js b/hello-world/pwa/service-worker.js index a46f93ba..e6b8ba3a 100644 --- a/hello-world/pwa/service-worker.js +++ b/hello-world/pwa/service-worker.js @@ -50,15 +50,20 @@ self.addEventListener("install", (e) => { self.addEventListener("fetch", (e) => { e.respondWith( (async () => { - const r = await caches.match(e.request); + // Fetch cached response if exists + const cachedResponse = await caches.match(e.request); console.log(`[Service Worker] Fetching resource: ${e.request.url}`); - if (r) { - return r; + if (cachedResponse) { + return cachedResponse; } + + // Otherwise, fetch from network const response = await fetch(e.request); const cache = await caches.open(cacheName); console.log(`[Service Worker] Caching new resource: ${e.request.url}`); - if (e.request.method !== "POST") cache.put(e.request, response.clone()); + if (e.request.method !== "POST") { + cache.put(e.request, response.clone()); + } return response; })() ); From dbdb9584c7bc45bb73a360c33024a0d10a0fb062 Mon Sep 17 00:00:00 2001 From: felixindynamsoft Date: Mon, 1 Jul 2024 01:31:41 -0700 Subject: [PATCH 009/223] feat: update website sample and docs (#188) Co-authored-by: felixindrawan --- hello-world/webview/android/README.md | 10 +++- .../src/main/assets/decodeBarcodeInVideo.html | 54 +++++++++---------- hello-world/webview/ios/README.md | 10 +++- .../dbrjswebview/html/decodeFileInVideo.html | 49 ++++++++--------- 4 files changed, 65 insertions(+), 58 deletions(-) diff --git a/hello-world/webview/android/README.md b/hello-world/webview/android/README.md index f5a81f5f..041ab8df 100644 --- a/hello-world/webview/android/README.md +++ b/hello-world/webview/android/README.md @@ -2,4 +2,12 @@ This sample demonstrates how to use the [Dynamsoft Barcode Reader](https://www.dynamsoft.com/barcode-reader/overview/) JS Edition in Android. - +If you want to learn how to use the Android Edition SDK in javascript, you can check [Android WebView Barcode Scanning](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/v9.x/android/JavaScript/WebViewBarcodeScanning). + +> Note: +> +> This guide uses DBR JS version 9. An updated guide for DBR JS version 10 is in progress and will be coming soon! + +## Support + +If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html b/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html index cebefe57..2c8ff87f 100644 --- a/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html +++ b/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html @@ -1,20 +1,19 @@ - - - - - - - + + + + + + Dynamsoft Barcode Reader Sample - Hello World (Decoding via Camera) - + - +

Hello World (Decode via Camera)

-
- Results:
-
+
+ Results:
+
- - - \ No newline at end of file + + diff --git a/hello-world/webview/ios/README.md b/hello-world/webview/ios/README.md index 744c3b1f..f1d6f0cc 100644 --- a/hello-world/webview/ios/README.md +++ b/hello-world/webview/ios/README.md @@ -2,4 +2,12 @@ This sample demonstrates how to use the [Dynamsoft Barcode Reader](https://www.dynamsoft.com/barcode-reader/overview/) JS Edition in iOS(Swift). - +If you want to learn how to use the iOS Edition SDK in javascript, you can check [iOS WebView Barcode Scanning](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/v9.x/ios/JavaScript/WebViewBarcodeScanning) + +> Note: +> +> This guide uses DBR JS version 9. An updated guide for DBR JS version 10 is in progress and will be coming soon! + +## Support + +If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html b/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html index 770a3651..3167284b 100644 --- a/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html +++ b/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html @@ -1,21 +1,20 @@ - - - - - - - + + + + + + Dynamsoft Barcode Reader Sample - Hello World (Decoding via Camera) - + - +

Hello World (Decode via Camera)

-
+
Results: -
-
+
+
- - + From ee3c1694ef2a56ae63fe62b4d1dcd905a2f1174b Mon Sep 17 00:00:00 2001 From: felixindynamsoft Date: Mon, 1 Jul 2024 01:35:12 -0700 Subject: [PATCH 010/223] fix: exact installation in docs, buttons-container class, and white-space for `VideoCapture` (#185) * fix: add installing exact dbr bundle version to docs * removed css on readme for nuxt * fix whitespace styling * fix: remove personal trial license --------- Co-authored-by: felixindrawan --- hello-world/angular/README.md | 4 +- hello-world/angular/src/app/app.component.css | 10 +-- .../angular/src/app/app.component.html | 2 +- .../video-capture/video-capture.component.css | 1 + hello-world/es6.html | 2 +- hello-world/hello-world.html | 2 +- hello-world/next/README.md | 6 +- .../components/VideoCapture/VideoCapture.css | 1 + hello-world/nuxt/README.md | 83 ++---------------- hello-world/nuxt/app.vue | 12 +-- .../nuxt/components/VideoCapture.client.vue | 1 + hello-world/nuxt/dynamsoft.config.ts | 5 +- hello-world/react-hooks/README.md | 2 +- .../components/VideoCapture/VideoCapture.css | 1 + hello-world/react/README.md | 2 +- .../components/VideoCapture/VideoCapture.css | 1 + hello-world/requirejs.html | 2 +- hello-world/vue/README.md | 85 ++----------------- hello-world/vue/src/App.vue | 12 +-- .../vue/src/components/VideoCapture.vue | 1 + 20 files changed, 49 insertions(+), 186 deletions(-) diff --git a/hello-world/angular/README.md b/hello-world/angular/README.md index c299ec0b..fadb663a 100644 --- a/hello-world/angular/README.md +++ b/hello-world/angular/README.md @@ -57,7 +57,7 @@ Below is the configuration used for this sample. ```cmd cd my-app -npm install dynamsoft-barcode-reader-bundle +npm install dynamsoft-barcode-reader-bundle -E ``` ## Start to implement @@ -348,7 +348,7 @@ export class ImageCaptureComponent {

Hello World for Angular

-
+
diff --git a/hello-world/angular/src/app/app.component.css b/hello-world/angular/src/app/app.component.css index e3a585fd..0ecbfcfd 100644 --- a/hello-world/angular/src/app/app.component.css +++ b/hello-world/angular/src/app/app.component.css @@ -4,30 +4,30 @@ align-items: center; margin-top: 20px; } -.top-btns { +.buttons-container { width: 30%; margin: 20px auto; } -.top-btns button { +.buttons-container button { display: inline-block; border: 1px solid black; padding: 5px 15px; background-color: transparent; cursor: pointer; } -.top-btns button:first-child { +.buttons-container button:first-child { border-top-left-radius: 10px; border-bottom-left-radius: 10px; border-right: transparent; } -.top-btns button:nth-child(2) { +.buttons-container button:nth-child(2) { border-top-right-radius: 10px; border-bottom-right-radius: 10px; border-left: transparent; } @media screen and (max-width: 800px) { - .top-btns { + .buttons-container { width: 70%; } } diff --git a/hello-world/angular/src/app/app.component.html b/hello-world/angular/src/app/app.component.html index 8b8e0de7..e48bd9d9 100644 --- a/hello-world/angular/src/app/app.component.html +++ b/hello-world/angular/src/app/app.component.html @@ -2,7 +2,7 @@

Hello World for Angular

-
+
diff --git a/hello-world/angular/src/app/video-capture/video-capture.component.css b/hello-world/angular/src/app/video-capture/video-capture.component.css index 465e054e..86184aac 100644 --- a/hello-world/angular/src/app/video-capture/video-capture.component.css +++ b/hello-world/angular/src/app/video-capture/video-capture.component.css @@ -7,4 +7,5 @@ width: 100%; height: 10vh; overflow: auto; + white-space: pre-wrap; } diff --git a/hello-world/es6.html b/hello-world/es6.html index a8694690..60faa2fb 100644 --- a/hello-world/es6.html +++ b/hello-world/es6.html @@ -13,7 +13,7 @@

Hello World for ES6 (Decode via Camera)

Results:
-
+
- - - - ``` > Note: > @@ -226,7 +203,7 @@ onBeforeUnmount(async () => { ### Edit the `ImageCapture` component -* In `ImageCapture.client.vue`, add code for initializing and destroying the `CaptureVisionRouter` instance. The `ImageCapture` helps decode barcodes in an image. +* In `ImageCapture.client.vue`, add code for initializing and destroying the `CaptureVisionRouter` instance. The `ImageCapture` helps decode barcodes in an image. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). ```vue @@ -296,35 +273,13 @@ onBeforeUnmount(async () => {
- - ``` ### Add `VideoCapture` and `ImageCapture` components in `app.vue` * On `/app.vue`, we will edit the component so that it offers buttons to switch components between `VideoCapture` and `ImageCapture`. -* Add following code to `app.vue`. +* Add following code to `app.vue`. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). ```vue @@ -333,7 +288,7 @@ onBeforeUnmount(async () => {

Hello World for NuxtJS

-
+
-
+
+ +
+ {#if mode === "video"} + + {:else} + + {/if} +
+ +``` + +* Try running the project. + +```cmd +npm run dev +``` + +If you followed all the steps correctly, you will have a working page that turns one of the cameras hooked to or built in your computer or mobile device into a barcode scanner. Also, if you want to decode a local image, just click the `Decode Image` button and select the image you want to decode. Once barcodes are found, the results will show in a dialog. + +## Support + +If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/hello-world/svelte/index.html b/hello-world/svelte/index.html index 9073fad5..6471fdec 100644 --- a/hello-world/svelte/index.html +++ b/hello-world/svelte/index.html @@ -1,9 +1,15 @@ - + - Vite + Svelte + TS + + + Hello World for Vite + Svelte + TS - Dynamsoft Barcode Reader Sample
diff --git a/hello-world/svelte/src/App.svelte b/hello-world/svelte/src/App.svelte index 679012ba..78d16127 100644 --- a/hello-world/svelte/src/App.svelte +++ b/hello-world/svelte/src/App.svelte @@ -9,24 +9,20 @@

Hello World for Svelte

- +
-
+
Decode Video Decode Image
{#if mode === "video"} @@ -51,40 +47,41 @@ align-items: center; margin-top: 20px; } + .title .title-logo { width: 70px; height: 30px; margin-left: 10px; } - .top-btns { + .buttons-container { width: 30%; margin: 20px auto; } - .top-btns button { + .buttons-container button { display: inline-block; border: 1px solid black; padding: 5px 15px; background-color: transparent; cursor: pointer; - /* TODO */ - margin-right: -5px; + margin-right: -5px; } - .top-btns button:first-child { + .buttons-container button:first-child { border-top-left-radius: 10px; border-bottom-left-radius: 10px; border-right: transparent; } - .top-btns button:nth-child(2) { + + .buttons-container button:nth-child(2) { border-top-right-radius: 10px; border-bottom-right-radius: 10px; border-left: transparent; } - @media screen and (max-width: 500px) { - .top-btns { + @media screen and (max-width: 800px) { + .buttons-container { width: 70%; } } diff --git a/hello-world/svelte/src/components/ImageCapture.svelte b/hello-world/svelte/src/components/ImageCapture.svelte index 75735b91..1fbaf6c1 100644 --- a/hello-world/svelte/src/components/ImageCapture.svelte +++ b/hello-world/svelte/src/components/ImageCapture.svelte @@ -1,69 +1,73 @@ -
-
- +
+
+
-
+
diff --git a/hello-world/svelte/src/components/VideoCapture.svelte b/hello-world/svelte/src/components/VideoCapture.svelte index 3e49ea5e..d7393a7a 100644 --- a/hello-world/svelte/src/components/VideoCapture.svelte +++ b/hello-world/svelte/src/components/VideoCapture.svelte @@ -1,111 +1,122 @@
-
+
Results:
-
+
diff --git a/hello-world/svelte/src/dynamsoft.config.ts b/hello-world/svelte/src/dynamsoft.config.ts index ac0b2d81..24909a1c 100644 --- a/hello-world/svelte/src/dynamsoft.config.ts +++ b/hello-world/svelte/src/dynamsoft.config.ts @@ -1,12 +1,24 @@ -import { CoreModule } from 'dynamsoft-core'; -import { LicenseManager } from 'dynamsoft-license'; -import 'dynamsoft-barcode-reader'; +/* /src/dynamsoft.config.ts */ +import { CoreModule } from "dynamsoft-core"; +import { LicenseManager } from "dynamsoft-license"; +import "dynamsoft-barcode-reader"; + +// Configures the paths where the .wasm files and other necessary resources for modules are located. +CoreModule.engineResourcePaths = { + std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", + dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", + core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", + license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", + cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", + dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", + dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", +}; /** LICENSE ALERT - README * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -LicenseManager.initLicense('DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9'); +LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. @@ -15,15 +27,5 @@ LicenseManager.initLicense('DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9'); * LICENSE ALERT - THE END */ -CoreModule.engineResourcePaths = { - std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", - dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", - core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", - license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", - cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", - dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", - dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/" -}; - // Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(['DBR']); +CoreModule.loadWasm(["DBR"]); diff --git a/hello-world/svelte/src/main.ts b/hello-world/svelte/src/main.ts index d5f003c5..8c4eaed9 100644 --- a/hello-world/svelte/src/main.ts +++ b/hello-world/svelte/src/main.ts @@ -1,7 +1,7 @@ -import App from './App.svelte' +import App from "./App.svelte"; const app = new App({ - target: document.getElementById('app')!, -}) + target: document.getElementById("app")!, +}); -export default app +export default app; From 715446bc3fd773853ffac4333a876b20bda0268e Mon Sep 17 00:00:00 2001 From: felixindynamsoft Date: Fri, 5 Jul 2024 02:55:17 -0700 Subject: [PATCH 016/223] fix: add missing html from nuxt README guide (#193) Co-authored-by: felixindrawan --- hello-world/nuxt/README.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/hello-world/nuxt/README.md b/hello-world/nuxt/README.md index 41320347..b2e19a08 100644 --- a/hello-world/nuxt/README.md +++ b/hello-world/nuxt/README.md @@ -25,7 +25,7 @@ npm install npm run dev ``` -Then open `https://localhost:3000/` to viewthe sample app. +Then open `https://localhost:3000/` to view the sample app. ## Creating the sample project @@ -188,7 +188,7 @@ onMounted(async () => { // dispose cvRouter when it's no longer needed onBeforeUnmount(async () => { - bDestoryed = true; + isDestroyed = true; try { await pInit; cvRouter?.dispose(); @@ -196,6 +196,15 @@ onBeforeUnmount(async () => { } catch (_) { } }); + + ``` > Note: > From b08dd53cedb727571e5166b3247887d6433f05a5 Mon Sep 17 00:00:00 2001 From: Tom Kent Date: Sun, 7 Jul 2024 17:01:53 -0700 Subject: [PATCH 017/223] Update README.md - changed the words and fixed typos, etc. --- use-case/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/use-case/README.md b/use-case/README.md index 32138e98..e55a8e42 100644 --- a/use-case/README.md +++ b/use-case/README.md @@ -1,6 +1,6 @@ ## Read Barcodes and Fill Form Fields -It's difficult to type long text on mobile devices, but if that text is encoded in a barcode, we can use the sdk to read the barcode and automatically enter the text. +It's difficult to type long text on mobile devices, but if that text is encoded in a barcode, we can use the SDK to read the barcode and automatically enter the text. The following sample demonstrates how to utilize the SDK to fill out form fields. @@ -9,27 +9,27 @@ The following sample demonstrates how to utilize the SDK to fill out form fields ## Read the PDF417 Barcode on the Driver's License -The PDF417 barcode on an AAMVA compatible driver's license contains a lot of information which is encoded following the DL/ID Card Design Standard. Together with a simple parse function, we can use the SDK to read and extract the information. +The PDF417 barcode on an AAMVA-compatible driver's license contains information encoded following the DL/ID Card Design Standard. Together with a simple parse function, we can use the SDK to read and extract the information. -The following official sample shows how to use the sdk to read and extract driver's license information. +The following official sample shows how to use the SDK to read and extract driver's license information. * Read the PDF417 Barcode on the Driver's License - Demo * Read the PDF417 Barcode on the Driver's License - Source Code -Also see [Driver's License Scanner SDK for Mobile and Web](https://www.dynamsoft.com/use-cases/driver-license/). +Also, see [Driver's License Scanner SDK for Mobile and Web](https://www.dynamsoft.com/use-cases/driver-license/). ## Read barcodes via camera and show result texts on the video -When the SDK picks up a barcode in video stream, it will highlight them with built-in style automatically. But it is also possible to show the text of the barcode on the video with the help of the function `convertToPageCoordinates()` or `convertToClientCoordinates()`. +When the SDK picks up a barcode in a video stream, it will automatically highlight it with a built-in style. But it is also possible to show the barcode text on the video with the help of the function `convertToPageCoordinates()` or `convertToClientCoordinates()`. -The following official sample shows how to show result texts on the video. +The following official sample shows how to show the result texts on the video. * Read barcodes via camera and show result texts on the video - Demo * Read barcodes via camera and show result texts on the video - Source Code ## Locate an Item via Barcode -Searcing for a specific item among numerous identical boxes can be challenging. However, with the Dynamsoft Barcode Reader (DBR) SDK, we'll be able to locate the item quickly by scanning through the barcodes. +Searching for a specific item among numerous identical boxes can be challenging. However, with the Dynamsoft Barcode Reader (DBR) SDK, we can locate the item quickly by scanning through the barcodes. The following sample demonstrates how to utilize the SDK to find an item using a barcode among many barcodes. From b6d63f77743078342a3e0f3c03483a29db388c67 Mon Sep 17 00:00:00 2001 From: SHEN <62587615+Shen-wb@users.noreply.github.com> Date: Tue, 16 Jul 2024 11:22:01 +0800 Subject: [PATCH 018/223] Authorization requests should not be cached (#196) * Authorization requests should not be cached * move condition position --------- Co-authored-by: Keillion --- hello-world/pwa/service-worker.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/hello-world/pwa/service-worker.js b/hello-world/pwa/service-worker.js index e6b8ba3a..7e929ef1 100644 --- a/hello-world/pwa/service-worker.js +++ b/hello-world/pwa/service-worker.js @@ -59,11 +59,18 @@ self.addEventListener("fetch", (e) => { // Otherwise, fetch from network const response = await fetch(e.request); - const cache = await caches.open(cacheName); - console.log(`[Service Worker] Caching new resource: ${e.request.url}`); - if (e.request.method !== "POST") { + + if( + e.request.method !== "POST" && + // Authorization requests should not be cached + !/https:\/\/.*?\.dynamsoft.com\/auth/.test(e.request.url) + // You can add other filter conditions + ){ + const cache = await caches.open(cacheName); + console.log(`[Service Worker] Caching new resource: ${e.request.url}`); cache.put(e.request, response.clone()); } + return response; })() ); From ccbbf5c34767496137ca0377012d522ff0336f74 Mon Sep 17 00:00:00 2001 From: DMGithubPublisher <65145280+DMGithubPublisher@users.noreply.github.com> Date: Tue, 16 Jul 2024 16:53:04 +0800 Subject: [PATCH 019/223] Update main.yml (#198) --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a13ce48a..e6d513d1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -15,6 +15,8 @@ jobs: # The type of runner that the job will run on runs-on: self-hosted + env: + ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true # Steps represent a sequence of tasks that will be executed as part of the job steps: From 27571299cc945953eac5b5567292c4c4ed641351 Mon Sep 17 00:00:00 2001 From: felixindynamsoft Date: Tue, 16 Jul 2024 02:08:30 -0700 Subject: [PATCH 020/223] fix: changed license for locate-an-item sample and updated links (#197) * fix: changed license for locate-an-item sample and updated links * Update main.yml --------- Co-authored-by: felixindrawan Co-authored-by: DMGithubPublisher <65145280+DMGithubPublisher@users.noreply.github.com> --- index.html | 8 ++++++++ use-case/README.md | 4 ++-- use-case/locate-an-item-with-barcode/index.html | 6 ++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/index.html b/index.html index 5bff530e..9f0b5713 100644 --- a/index.html +++ b/index.html @@ -153,6 +153,14 @@

Barcode Reader Samples

+ +
Others
diff --git a/use-case/README.md b/use-case/README.md index e55a8e42..0f98c3e5 100644 --- a/use-case/README.md +++ b/use-case/README.md @@ -35,8 +35,8 @@ The following sample demonstrates how to utilize the SDK to find an item using a Additionally, this sample demonstrates how to utilize the SDK to fill out form fields, creating a custom UI with [Dynamsoft Camera Enhancer (DCE)](https://www.dynamsoft.com/camera-enhancer/docs/core/introduction/index.html), and using DCE to draw shapes/images on the CameraView to create indicators for each barcode that has been detected! -* Locate an item via Barcode - Demo (TO BE UPDATED) -* RLocate an item via Barcode - Source Code (TO BE UPDATED) +* Locate an Item with Barcode - Demo +* Locate an Item with Barcode - Source Code ## Support diff --git a/use-case/locate-an-item-with-barcode/index.html b/use-case/locate-an-item-with-barcode/index.html index a1f66000..dae02fd3 100644 --- a/use-case/locate-an-item-with-barcode/index.html +++ b/use-case/locate-an-item-with-barcode/index.html @@ -205,7 +205,7 @@
-

Locate an Item via Barcode

+

Locate an Item with Barcode

1. Enter or Scan the Item ID that you're seaching for:

@@ -280,9 +280,7 @@
/** LICENSE ALERT - README * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ - Dynamsoft.License.LicenseManager.initLicense( - "DLS2eyJoYW5kc2hha2VDb2RlIjoiMTAyODk0NDUwLVRYbFhaV0pRY205cSIsIm1haW5TZXJ2ZXJVUkwiOiJodHRwczovL21sdHMuZHluYW1zb2Z0LmNvbSIsIm9yZ2FuaXphdGlvbklEIjoiMTAyODk0NDUwIiwic3RhbmRieVNlcnZlclVSTCI6Imh0dHBzOi8vc2x0cy5keW5hbXNvZnQuY29tIiwiY2hlY2tDb2RlIjoxMDUxNjY0NjUyfQ==" - ); + Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. From 2dbc90228993d261e394a7729513e40ec2859278 Mon Sep 17 00:00:00 2001 From: felixindrawan Date: Tue, 16 Jul 2024 14:40:32 -0700 Subject: [PATCH 021/223] fix: broken demo links on README.md --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index e27075e8..d437f79d 100644 --- a/README.md +++ b/README.md @@ -22,10 +22,10 @@ Get the basic features of the library working with plain/native JavaScript or wi * [**Hello World**](https://demo.dynamsoft.com/samples/dbr/js/hello-world/hello-world.html?utm_source=sampleReadme): Scan barcodes from video stream with minimum code in JavaScript. * [**Read an Image**](https://demo.dynamsoft.com/samples/dbr/js/hello-world/read-an-image.html?utm_source=sampleReadme): Decode barcodes from images in mobile album or desktop file system. -* [**Hello World in Angular**](https://demo.dynamsoft.com/samples/dbr/js/hello-world/angular/dist/angular?utm_source=sampleReadme): Read barcodes from camera and images in an Angular application. -* [**Hello World in React**](https://demo.dynamsoft.com/samples/dbr/js/hello-world/react/build/?utm_source=sampleReadme): Read barcodes from camera and images in a React application. -* [**Hello World in React using Hooks**](https://demo.dynamsoft.com/samples/dbr/js/hello-world/react-hooks/build/?utm_source=sampleReadme): Read barcodes from camera and images in a React application and use the Hooks charactor of React. -* [**Hello World in Vue**](https://demo.dynamsoft.com/samples/dbr/js/hello-world/vue/dist/?utm_source=sampleReadme): Read barcodes from camera and images in a Vue 3 application. +* [**Hello World in Angular**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/hello-world/angular#readme): Read barcodes from camera and images in an Angular application. +* [**Hello World in React**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/hello-world/react#readme): Read barcodes from camera and images in a React application. +* [**Hello World in React using Hooks**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/hello-world/react-hook#readme): Read barcodes from camera and images in a React application and use the Hooks charactor of React. +* [**Hello World in Vue**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/hello-world/vue#readme): Read barcodes from camera and images in a Vue 3 application. * [**Hello World in Next.js**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/hello-world/next#readme): Read barcodes from camera and images in a Next.js application. * [**Hello World in Nuxt**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/hello-world/nuxt#readme): Read barcodes from camera and images in a Nuxt application. * [**Hello World in Electron**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/hello-world/electron#readme): Read barcodes from camera and images in a Electron application. @@ -37,8 +37,9 @@ Get the basic features of the library working with plain/native JavaScript or wi ### Use Cases * [**Read Video and Fill a Form**](https://demo.dynamsoft.com/samples/dbr/js/use-case/fill-a-form-with-barcode-reading.html?utm_source=sampleReadme): Read barcodes to fill a form. -* [**Read a Driver's License**](https://demo.dynamsoft.com/samples/dbr/js/use-case/read-a-drivers-license.html?utm_source=sampleReadme): Read the PDF417 barcode on a driver's license (AAMVA compliant) and parse it. +* [**Read a Driver's License**](https://demo.dynamsoft.com/samples/dbr/js/use-case/read-a-drivers-license/index.html?utm_source=sampleReadme): Read the PDF417 barcode on a driver's license (AAMVA compliant) and parse it. * [**Show Result Texts on the Video**](https://demo.dynamsoft.com/samples/dbr/js/use-case/show-result-texts-on-the-video.html?utm_source=sampleReadme): Read barcodes via camera and show result texts on the video. +* [**Locate an Item with Barcode**](https://demo.dynamsoft.com/samples/dbr/js/use-case/locate-an-item-with-barcode/index.html?utm_source=sampleReadme): Find a specific item in a large collection by scanning its unique barcode ### Others From 8838d0a9d986c0d59b6629bfe50b7f32133afea0 Mon Sep 17 00:00:00 2001 From: felixindrawan Date: Wed, 17 Jul 2024 16:32:50 -0700 Subject: [PATCH 022/223] fix: Locate Item Sample - license text color, and mobile viewport --- use-case/locate-an-item-with-barcode/index.html | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/use-case/locate-an-item-with-barcode/index.html b/use-case/locate-an-item-with-barcode/index.html index dae02fd3..e363f75f 100644 --- a/use-case/locate-an-item-with-barcode/index.html +++ b/use-case/locate-an-item-with-barcode/index.html @@ -22,6 +22,9 @@ overscroll-behavior-y: none; overflow: hidden; } + .dls-license-msg-content { + color: black; + } #inputs-container { margin: 2rem; padding-bottom: 2rem; @@ -99,6 +102,7 @@ padding: 0.5rem; font-size: 1rem; overflow: hidden; + max-width: 10rem; } #camera-view-title { text-align: center; @@ -198,6 +202,9 @@ button { font-size: 1.5rem; } + #select-camera-dropdown { + max-width: unset; + } } From 69b3c4823b482ffe9490b504ca4773fbf32423e1 Mon Sep 17 00:00:00 2001 From: felixindrawan Date: Wed, 17 Jul 2024 16:37:10 -0700 Subject: [PATCH 023/223] fix: update license to use demo license --- hello-world/angular/README.md | 2 +- hello-world/angular/src/app/dynamsoft.config.ts | 5 ++++- hello-world/electron/README.md | 2 +- hello-world/electron/action.js | 2 +- hello-world/es6.html | 4 +++- hello-world/hello-world.html | 4 +++- hello-world/read-an-image.html | 4 +++- hello-world/requirejs.html | 4 +++- hello-world/vue/README.md | 2 +- hello-world/vue/src/dynamsoft.config.ts | 5 ++++- .../android/app/src/main/assets/decodeBarcodeInVideo.html | 4 +++- .../webview/ios/dbrjswebview/html/decodeFileInVideo.html | 4 +++- use-case/fill-a-form-with-barcode-reading.html | 4 +++- use-case/locate-an-item-with-barcode/index.html | 4 +++- use-case/read-a-drivers-license/index.html | 4 +++- use-case/show-result-texts-on-the-video.html | 4 +++- 16 files changed, 42 insertions(+), 16 deletions(-) diff --git a/hello-world/angular/README.md b/hello-world/angular/README.md index fadb663a..e527c66e 100644 --- a/hello-world/angular/README.md +++ b/hello-world/angular/README.md @@ -85,7 +85,7 @@ CoreModule.engineResourcePaths = { * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -LicenseManager.initLicense('DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9', true); +LicenseManager.initLicense('DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==', true); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/angular/src/app/dynamsoft.config.ts b/hello-world/angular/src/app/dynamsoft.config.ts index 87d3d287..ee75ce9a 100644 --- a/hello-world/angular/src/app/dynamsoft.config.ts +++ b/hello-world/angular/src/app/dynamsoft.config.ts @@ -17,7 +17,10 @@ CoreModule.engineResourcePaths = { * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -LicenseManager.initLicense('DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9', true); +LicenseManager.initLicense( + 'DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==', + true +); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/electron/README.md b/hello-world/electron/README.md index 4a3171cb..341d7f58 100644 --- a/hello-world/electron/README.md +++ b/hello-world/electron/README.md @@ -155,7 +155,7 @@ Dynamsoft.Core.CoreModule.engineResourcePaths = { * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); +Dynamsoft.License.LicenseManager.initLicense("DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==", true); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/electron/action.js b/hello-world/electron/action.js index 18998045..8f553abf 100644 --- a/hello-world/electron/action.js +++ b/hello-world/electron/action.js @@ -13,7 +13,7 @@ Dynamsoft.Core.CoreModule.engineResourcePaths = { * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); +Dynamsoft.License.LicenseManager.initLicense("DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==", true); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/es6.html b/hello-world/es6.html index 60faa2fb..6ea648dc 100644 --- a/hello-world/es6.html +++ b/hello-world/es6.html @@ -28,7 +28,9 @@

Hello World for ES6 (Decode via Camera)

* To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ - LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); + LicenseManager.initLicense( + "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==" + ); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/hello-world.html b/hello-world/hello-world.html index 09cd8b47..0ce035cd 100644 --- a/hello-world/hello-world.html +++ b/hello-world/hello-world.html @@ -20,7 +20,9 @@

Hello World (Decode via Camera)

* To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ - Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); + Dynamsoft.License.LicenseManager.initLicense( + "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==" + ); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/read-an-image.html b/hello-world/read-an-image.html index 6652a1b1..97f27925 100644 --- a/hello-world/read-an-image.html +++ b/hello-world/read-an-image.html @@ -20,7 +20,9 @@

Hello World (Read an Image)

* To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ - Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); + Dynamsoft.License.LicenseManager.initLicense( + "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==" + ); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/requirejs.html b/hello-world/requirejs.html index 551f25cd..0d57b0f3 100644 --- a/hello-world/requirejs.html +++ b/hello-world/requirejs.html @@ -30,7 +30,9 @@

Hello World for RequireJS (Decode via Camera)

* To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ - LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); + LicenseManager.initLicense( + "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==" + ); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/vue/README.md b/hello-world/vue/README.md index 6b973f30..c957ac95 100644 --- a/hello-world/vue/README.md +++ b/hello-world/vue/README.md @@ -89,7 +89,7 @@ CoreModule.engineResourcePaths = { * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); +LicenseManager.initLicense("DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==", true); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/vue/src/dynamsoft.config.ts b/hello-world/vue/src/dynamsoft.config.ts index f31509c2..24ad1eca 100644 --- a/hello-world/vue/src/dynamsoft.config.ts +++ b/hello-world/vue/src/dynamsoft.config.ts @@ -17,7 +17,10 @@ CoreModule.engineResourcePaths = { * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); +LicenseManager.initLicense( + "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==", + true +); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html b/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html index 2c8ff87f..735563bf 100644 --- a/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html +++ b/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html @@ -20,7 +20,9 @@

Hello World (Decode via Camera)

* To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ - Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); + Dynamsoft.License.LicenseManager.initLicense( + "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==" + ); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html b/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html index 3167284b..659723df 100644 --- a/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html +++ b/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html @@ -21,7 +21,9 @@

Hello World (Decode via Camera)

* To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ - Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); + Dynamsoft.License.LicenseManager.initLicense( + "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==" + ); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/use-case/fill-a-form-with-barcode-reading.html b/use-case/fill-a-form-with-barcode-reading.html index 4ad0fc0e..15c196c7 100644 --- a/use-case/fill-a-form-with-barcode-reading.html +++ b/use-case/fill-a-form-with-barcode-reading.html @@ -70,7 +70,9 @@

Click each input box to fill in!

* To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ - Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); + Dynamsoft.License.LicenseManager.initLicense( + "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==" + ); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/use-case/locate-an-item-with-barcode/index.html b/use-case/locate-an-item-with-barcode/index.html index e363f75f..26a84b9b 100644 --- a/use-case/locate-an-item-with-barcode/index.html +++ b/use-case/locate-an-item-with-barcode/index.html @@ -287,7 +287,9 @@
/** LICENSE ALERT - README * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ - Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); + Dynamsoft.License.LicenseManager.initLicense( + "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==" + ); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. diff --git a/use-case/read-a-drivers-license/index.html b/use-case/read-a-drivers-license/index.html index 60011eeb..4f3697a9 100644 --- a/use-case/read-a-drivers-license/index.html +++ b/use-case/read-a-drivers-license/index.html @@ -75,7 +75,9 @@

Read a Driver's License

* To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ - Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); + Dynamsoft.License.LicenseManager.initLicense( + "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==" + ); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/use-case/show-result-texts-on-the-video.html b/use-case/show-result-texts-on-the-video.html index 4f937018..a7068ee3 100644 --- a/use-case/show-result-texts-on-the-video.html +++ b/use-case/show-result-texts-on-the-video.html @@ -53,7 +53,9 @@

Scan barcodes to display results as overlays on video

* To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ - Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); + Dynamsoft.License.LicenseManager.initLicense( + "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==" + ); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. From 96c7cdc28682abe5e6ba883b8527f0a02060571b Mon Sep 17 00:00:00 2001 From: felixindynamsoft Date: Wed, 17 Jul 2024 17:14:43 -0700 Subject: [PATCH 024/223] Revert "fix: update license to use demo license" This reverts commit 69b3c4823b482ffe9490b504ca4773fbf32423e1. --- hello-world/angular/README.md | 2 +- hello-world/angular/src/app/dynamsoft.config.ts | 5 +---- hello-world/electron/README.md | 2 +- hello-world/electron/action.js | 2 +- hello-world/es6.html | 4 +--- hello-world/hello-world.html | 4 +--- hello-world/read-an-image.html | 4 +--- hello-world/requirejs.html | 4 +--- hello-world/vue/README.md | 2 +- hello-world/vue/src/dynamsoft.config.ts | 5 +---- .../android/app/src/main/assets/decodeBarcodeInVideo.html | 4 +--- .../webview/ios/dbrjswebview/html/decodeFileInVideo.html | 4 +--- use-case/fill-a-form-with-barcode-reading.html | 4 +--- use-case/locate-an-item-with-barcode/index.html | 4 +--- use-case/read-a-drivers-license/index.html | 4 +--- use-case/show-result-texts-on-the-video.html | 4 +--- 16 files changed, 16 insertions(+), 42 deletions(-) diff --git a/hello-world/angular/README.md b/hello-world/angular/README.md index e527c66e..fadb663a 100644 --- a/hello-world/angular/README.md +++ b/hello-world/angular/README.md @@ -85,7 +85,7 @@ CoreModule.engineResourcePaths = { * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -LicenseManager.initLicense('DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==', true); +LicenseManager.initLicense('DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9', true); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/angular/src/app/dynamsoft.config.ts b/hello-world/angular/src/app/dynamsoft.config.ts index ee75ce9a..87d3d287 100644 --- a/hello-world/angular/src/app/dynamsoft.config.ts +++ b/hello-world/angular/src/app/dynamsoft.config.ts @@ -17,10 +17,7 @@ CoreModule.engineResourcePaths = { * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -LicenseManager.initLicense( - 'DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==', - true -); +LicenseManager.initLicense('DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9', true); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/electron/README.md b/hello-world/electron/README.md index 341d7f58..4a3171cb 100644 --- a/hello-world/electron/README.md +++ b/hello-world/electron/README.md @@ -155,7 +155,7 @@ Dynamsoft.Core.CoreModule.engineResourcePaths = { * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -Dynamsoft.License.LicenseManager.initLicense("DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==", true); +Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/electron/action.js b/hello-world/electron/action.js index 8f553abf..18998045 100644 --- a/hello-world/electron/action.js +++ b/hello-world/electron/action.js @@ -13,7 +13,7 @@ Dynamsoft.Core.CoreModule.engineResourcePaths = { * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -Dynamsoft.License.LicenseManager.initLicense("DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==", true); +Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/es6.html b/hello-world/es6.html index 6ea648dc..60faa2fb 100644 --- a/hello-world/es6.html +++ b/hello-world/es6.html @@ -28,9 +28,7 @@

Hello World for ES6 (Decode via Camera)

* To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ - LicenseManager.initLicense( - "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==" - ); + LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/hello-world.html b/hello-world/hello-world.html index 0ce035cd..09cd8b47 100644 --- a/hello-world/hello-world.html +++ b/hello-world/hello-world.html @@ -20,9 +20,7 @@

Hello World (Decode via Camera)

* To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ - Dynamsoft.License.LicenseManager.initLicense( - "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==" - ); + Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/read-an-image.html b/hello-world/read-an-image.html index 97f27925..6652a1b1 100644 --- a/hello-world/read-an-image.html +++ b/hello-world/read-an-image.html @@ -20,9 +20,7 @@

Hello World (Read an Image)

* To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ - Dynamsoft.License.LicenseManager.initLicense( - "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==" - ); + Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/requirejs.html b/hello-world/requirejs.html index 0d57b0f3..551f25cd 100644 --- a/hello-world/requirejs.html +++ b/hello-world/requirejs.html @@ -30,9 +30,7 @@

Hello World for RequireJS (Decode via Camera)

* To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ - LicenseManager.initLicense( - "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==" - ); + LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/vue/README.md b/hello-world/vue/README.md index c957ac95..6b973f30 100644 --- a/hello-world/vue/README.md +++ b/hello-world/vue/README.md @@ -89,7 +89,7 @@ CoreModule.engineResourcePaths = { * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -LicenseManager.initLicense("DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==", true); +LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/vue/src/dynamsoft.config.ts b/hello-world/vue/src/dynamsoft.config.ts index 24ad1eca..f31509c2 100644 --- a/hello-world/vue/src/dynamsoft.config.ts +++ b/hello-world/vue/src/dynamsoft.config.ts @@ -17,10 +17,7 @@ CoreModule.engineResourcePaths = { * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -LicenseManager.initLicense( - "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==", - true -); +LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html b/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html index 735563bf..2c8ff87f 100644 --- a/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html +++ b/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html @@ -20,9 +20,7 @@

Hello World (Decode via Camera)

* To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ - Dynamsoft.License.LicenseManager.initLicense( - "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==" - ); + Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html b/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html index 659723df..3167284b 100644 --- a/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html +++ b/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html @@ -21,9 +21,7 @@

Hello World (Decode via Camera)

* To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ - Dynamsoft.License.LicenseManager.initLicense( - "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==" - ); + Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/use-case/fill-a-form-with-barcode-reading.html b/use-case/fill-a-form-with-barcode-reading.html index 15c196c7..4ad0fc0e 100644 --- a/use-case/fill-a-form-with-barcode-reading.html +++ b/use-case/fill-a-form-with-barcode-reading.html @@ -70,9 +70,7 @@

Click each input box to fill in!

* To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ - Dynamsoft.License.LicenseManager.initLicense( - "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==" - ); + Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/use-case/locate-an-item-with-barcode/index.html b/use-case/locate-an-item-with-barcode/index.html index 26a84b9b..e363f75f 100644 --- a/use-case/locate-an-item-with-barcode/index.html +++ b/use-case/locate-an-item-with-barcode/index.html @@ -287,9 +287,7 @@
/** LICENSE ALERT - README * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ - Dynamsoft.License.LicenseManager.initLicense( - "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==" - ); + Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. diff --git a/use-case/read-a-drivers-license/index.html b/use-case/read-a-drivers-license/index.html index 4f3697a9..60011eeb 100644 --- a/use-case/read-a-drivers-license/index.html +++ b/use-case/read-a-drivers-license/index.html @@ -75,9 +75,7 @@

Read a Driver's License

* To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ - Dynamsoft.License.LicenseManager.initLicense( - "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==" - ); + Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. diff --git a/use-case/show-result-texts-on-the-video.html b/use-case/show-result-texts-on-the-video.html index a7068ee3..4f937018 100644 --- a/use-case/show-result-texts-on-the-video.html +++ b/use-case/show-result-texts-on-the-video.html @@ -53,9 +53,7 @@

Scan barcodes to display results as overlays on video

* To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ - Dynamsoft.License.LicenseManager.initLicense( - "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAwLWRicl9qc19zYW1wbGVzIiwib3JnYW5pemF0aW9uSUQiOiIyMDAwMDAifQ==" - ); + Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=github&product=dbr&package=js to get your own trial license good for 30 days. From f39bd68ccfff0b6657d27d8d1888edcaddbf9397 Mon Sep 17 00:00:00 2001 From: felixindrawan Date: Thu, 18 Jul 2024 09:28:53 -0700 Subject: [PATCH 025/223] fix: updated debug link to github readme --- index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index 9f0b5713..563b0282 100644 --- a/index.html +++ b/index.html @@ -164,7 +164,7 @@

Barcode Reader Samples

Others
-
Collect + @@ -174,6 +174,7 @@

Barcode Reader Samples

+
\ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/nuxt/assets/logo.svg b/pr-preview/pr-214/hello-world/nuxt/assets/logo.svg new file mode 100644 index 00000000..42fdb9d8 --- /dev/null +++ b/pr-preview/pr-214/hello-world/nuxt/assets/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/nuxt/assets/main.css b/pr-preview/pr-214/hello-world/nuxt/assets/main.css new file mode 100644 index 00000000..b458c93e --- /dev/null +++ b/pr-preview/pr-214/hello-world/nuxt/assets/main.css @@ -0,0 +1,7 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; + text-align: center; + } + \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/nuxt/components/ImageCapture.client.vue b/pr-preview/pr-214/hello-world/nuxt/components/ImageCapture.client.vue new file mode 100644 index 00000000..a4d1be51 --- /dev/null +++ b/pr-preview/pr-214/hello-world/nuxt/components/ImageCapture.client.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/pr-preview/pr-214/hello-world/nuxt/components/VideoCapture.client.vue b/pr-preview/pr-214/hello-world/nuxt/components/VideoCapture.client.vue new file mode 100644 index 00000000..88a9cc5a --- /dev/null +++ b/pr-preview/pr-214/hello-world/nuxt/components/VideoCapture.client.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/pr-preview/pr-214/hello-world/nuxt/dynamsoft.config.ts b/pr-preview/pr-214/hello-world/nuxt/dynamsoft.config.ts new file mode 100644 index 00000000..b8a17541 --- /dev/null +++ b/pr-preview/pr-214/hello-world/nuxt/dynamsoft.config.ts @@ -0,0 +1,30 @@ +import { CoreModule } from "dynamsoft-core"; +import { LicenseManager } from "dynamsoft-license"; +import "dynamsoft-barcode-reader"; + +// Configures the paths where the .wasm files and other necessary resources for modules are located. +CoreModule.engineResourcePaths = { + std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", + dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", + core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", + license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", + cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", + dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", + dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", +}; + +/** LICENSE ALERT - README + * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. + */ + +LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); + +/** + * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. + * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. + * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. + * LICENSE ALERT - THE END + */ + +// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. +CoreModule.loadWasm(["DBR"]); diff --git a/pr-preview/pr-214/hello-world/nuxt/nuxt.config.ts b/pr-preview/pr-214/hello-world/nuxt/nuxt.config.ts new file mode 100644 index 00000000..8d361178 --- /dev/null +++ b/pr-preview/pr-214/hello-world/nuxt/nuxt.config.ts @@ -0,0 +1,4 @@ +// https://nuxt.com/docs/api/configuration/nuxt-config +export default defineNuxtConfig({ + +}) diff --git a/pr-preview/pr-214/hello-world/nuxt/package.json b/pr-preview/pr-214/hello-world/nuxt/package.json new file mode 100644 index 00000000..3be20540 --- /dev/null +++ b/pr-preview/pr-214/hello-world/nuxt/package.json @@ -0,0 +1,18 @@ +{ + "name": "dbrjs-nuxt-sample", + "private": true, + "type": "module", + "scripts": { + "build": "nuxt build", + "dev": "nuxt dev", + "generate": "nuxt generate", + "preview": "nuxt preview", + "postinstall": "nuxt prepare" + }, + "devDependencies": { + "nuxt": "3.2.3" + }, + "dependencies": { + "dynamsoft-barcode-reader-bundle": "10.2.1000" + } +} diff --git a/pr-preview/pr-214/hello-world/nuxt/public/favicon.ico b/pr-preview/pr-214/hello-world/nuxt/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..18993ad91cfd43e03b074dd0b5cc3f37ab38e49c GIT binary patch literal 4286 zcmeHLOKuuL5PjK%MHWVi6lD zOGiREbCw`xmFozJ^aNatJY>w+g ze6a2@u~m#^BZm@8wco9#Crlli0uLb^3E$t2-WIc^#(?t)*@`UpuofJ(Uyh@F>b3Ph z$D^m8Xq~pTkGJ4Q`Q2)te3mgkWYZ^Ijq|hkiP^9`De={bQQ%heZC$QU2UpP(-tbl8 zPWD2abEew;oat@w`uP3J^YpsgT%~jT(Dk%oU}sa$7|n6hBjDj`+I;RX(>)%lm_7N{+B7Mu%H?422lE%MBJH!!YTN2oT7xr>>N-8OF$C&qU^ z>vLsa{$0X%q1fjOe3P1mCv#lN{xQ4_*HCSAZjTb1`}mlc+9rl8$B3OP%VT@mch_~G z7Y+4b{r>9e=M+7vSI;BgB?ryZDY4m>&wcHSn81VH1N~`0gvwH{ z8dv#hG|OK`>1;j7tM#B)Z7zDN?{6=dUal}$e Note: +> +> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! +> +> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. + +## Official Sample + +* Hello World in PWA - Demo +* Hello World in PWA - Source Code + +## Preparation + +We will try to turn our basic "Hello World" sample into a PWA. Follow these steps: + +* Create new file named `helloworld-pwa.html` and add the following code: + +```html + + + + + + + Dynamsoft Barcode Reader PWA Sample - Hello World + + + +

Hello World for PWA

+
+
+ Results: +
+ + + + + +``` + +* Next, set up a secure environment (HTTPS) to run the page `helloworld-pwa.html`. This is required as PWAs only run in secure environments. +> Note: +> +> In this sample, we're using IIS to set up a secure site at https://localhost. The page will be located at the root of the site so that it can be accessed at https://localhost/helloworld-pwa.html. + +## Make the app progressive + +### Register a service worker for offline support + +Service Workers form the foundation of PWAs, acting as the virtual proxy between the browser and the network. They enable offline content delivery, manage notifications, and perform heavy calculations on a separate thread + +* To use a service worker, we first need to register it. In the `helloworld-pwa.html` file, add the following code at the end of the script: + +```javascript +/* /helloworld-pwa.html */ +if ('serviceWorker' in navigator) { + navigator.serviceWorker.register('./service-worker.js'); +}; +``` + +* Next, create the `service-worker.js` file with the following content: + +```javascript +/* /service-worker.js */ +// Files to cache +const cacheName = 'helloworld-pwa'; +const appShellFiles = [ + './helloworld-pwa.html', +]; + +// Installing Service Worker +self.addEventListener("install", (e) => { + console.log("[Service Worker] Install"); + e.waitUntil( + (async () => { + const cache = await caches.open(cacheName); + console.log("[Service Worker] Caching all: app shell and content"); + await cache.addAll(appShellFiles); + })() + ); +}); + +self.addEventListener("fetch", (e) => { + e.respondWith( + (async () => { + // Fetch cached response if exists + const cachedResponse = await caches.match(e.request); + console.log(`[Service Worker] Fetching resource: ${e.request.url}`); + if (cachedResponse) { + return cachedResponse; + } + + // Otherwise, fetch from network + const response = await fetch(e.request); + const cache = await caches.open(cacheName); + console.log(`[Service Worker] Caching new resource: ${e.request.url}`); + if (e.request.method !== "POST") { + cache.put(e.request, response.clone()); + } + return response; + })() + ); +}); +``` + +With the above code, the application can now work offline because the service worker will cache the `helloworld-pwa.html` page and its related resources. + +For more information, refer to [Making PWAs work offline with Service workers](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Offline_Service_workers). + +> Note: +> +> Since the files are cached, changes we make in later steps may not be reflected immediately. To ensure updates are applied, clear the cache after changes are made. You can do this by running the following code in the browser console: +> +> ```javascript +> const cacheName = 'helloworld-pwa'; +> const cache = await caches.delete(cacheName); +> ``` + +### Use a web manifest file to make the application installable + +A web manifest file contains a list of information about a website in JSON format. This information is used to enable the web app to be installed on a device. + +* Create a file named `helloworld-pwa.json` with the following content: + +```json +/* /helloworld-pwa.json */ +{ + "name": "Dynamsoft Barcode Reader Progressive Web App", + "short_name": "DBR-PWA", + "description": "Progressive Web App that reads barcodes from a video input with Dynamsoft Barcode Reader.", + "start_url": "./helloworld-pwa.html", + "scope": ".", + "display": "standalone", + "theme_color": "#B12A34", + "background_color": "#B12A34", + "icons": [ + { + "src": "./dynamsoft-512x512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "./dynamsoft-192x192.png", + "sizes": "192x192", + "type": "image/png" + } + ] +} +``` + +> Note: The icon files can be found in the github repository. + +* Then we include the file in the `` block of the `helloworld-pwa.html` file as such: + +```html + + +``` + +* For compatibility on safari, we need add some `meta` in ``. + +```html + + + + + + + + + +``` + +Now, if you open the application again in your browser, you will notice an install icon appear on the right side of the address bar. When you click on it, a pop-up will appear asking if you want to install the app. + +Once installed, you can use it just like any native app. + +To enable offline functionality for Dynamsoft Barcode Reader, you'll need to cache more files. + +### Enabling offline functionality for Dynamsoft Barcode Reader + +These directories below are the resources required for Dynamsoft Barcode Reader functionality. Once added, these files are cached on installation of the service worker (i.e. `install` event), wensuring the PWA remains fully functional without any internet. + +Add this code below to the `service-worker.js` +```javascript +/* /service-worker.js */ +const engineResourcePaths = { + std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", + dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", + core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", + license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", + cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", + dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", + dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/" +}; + +// Files to cache +const cacheName = "helloworld-pwa"; +const appShellFiles = [ + "./helloworld-pwa.html", + "./dynamsoft-192x192.png", + "./dynamsoft-512x512.png", + "./helloworld-pwa.json", + `${engineResourcePaths.std}std.js`, + `${engineResourcePaths.std}std.wasm`, + `${engineResourcePaths.dip}dip.wasm`, + `${engineResourcePaths.core}core.js`, + `${engineResourcePaths.core}core.worker.js`, + `${engineResourcePaths.core}core.wasm`, + `${engineResourcePaths.license}license.js`, + `${engineResourcePaths.license}dls.license.dialog.html`, + `${engineResourcePaths.license}license.wasm`, + `${engineResourcePaths.utility}utility.js`, + `${engineResourcePaths.dbr}dbr.js`, + `${engineResourcePaths.dbr}dbr.wasm`, + `${engineResourcePaths.dbr}DBR-PresetTemplates.json`, + `${engineResourcePaths.cvr}cvr.js`, + `${engineResourcePaths.cvr}cvr.wasm`, + `${engineResourcePaths.cvr}cvr.worker.js`, + `${engineResourcePaths.dce}dce.js`, + `${engineResourcePaths.dce}dce.ui.html`, +]; +``` + +## Summary + +In this article we took a look at how you can turn a simple barcode reading page into a PWA that is installable, re-engageable and capable of working offline. To learn more about Progressive web apps, you can click [here](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps). + +## Support + +If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/pwa/dynamsoft-192x192.png b/pr-preview/pr-214/hello-world/pwa/dynamsoft-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..e02348bebe310ace87fe77d58e4e76dc581da970 GIT binary patch literal 6638 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 literal 0 HcmV?d00001 diff --git a/pr-preview/pr-214/hello-world/pwa/dynamsoft-512x512.png b/pr-preview/pr-214/hello-world/pwa/dynamsoft-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..1e0ec7dc683f5f9d9208e4e2faf5ab12a46bba67 GIT binary patch literal 9938 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 literal 0 HcmV?d00001 diff --git a/pr-preview/pr-214/hello-world/pwa/helloworld-pwa.html b/pr-preview/pr-214/hello-world/pwa/helloworld-pwa.html new file mode 100644 index 00000000..10ab1889 --- /dev/null +++ b/pr-preview/pr-214/hello-world/pwa/helloworld-pwa.html @@ -0,0 +1,97 @@ + + + + + + + + Dynamsoft Barcode Reader PWA Sample - Hello World (Decode via Camera) + + + + + + + + + + + + +

Hello World for PWA

+
+
+ Results: +
+ + + + + diff --git a/pr-preview/pr-214/hello-world/pwa/helloworld-pwa.json b/pr-preview/pr-214/hello-world/pwa/helloworld-pwa.json new file mode 100644 index 00000000..1c6c8e42 --- /dev/null +++ b/pr-preview/pr-214/hello-world/pwa/helloworld-pwa.json @@ -0,0 +1,22 @@ +{ + "name": "Dynamsoft Barcode Reader Progressive Web App", + "short_name": "DBR-PWA", + "description": "Progressive Web App that reads barcodes from a video input with Dynamsoft Barcode Reader.", + "start_url": "./helloworld-pwa.html", + "scope": ".", + "display": "standalone", + "theme_color": "#B12A34", + "background_color": "#B12A34", + "icons": [ + { + "src": "./dynamsoft-512x512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "./dynamsoft-192x192.png", + "sizes": "192x192", + "type": "image/png" + } + ] +} \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/pwa/service-worker.js b/pr-preview/pr-214/hello-world/pwa/service-worker.js new file mode 100644 index 00000000..7e929ef1 --- /dev/null +++ b/pr-preview/pr-214/hello-world/pwa/service-worker.js @@ -0,0 +1,77 @@ +const engineResourcePaths = { + std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", + dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", + core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", + license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", + cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", + dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", + dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/" +}; + +// Files to cache +const cacheName = "helloworld-pwa"; +const appShellFiles = [ + "./helloworld-pwa.html", + "./dynamsoft-192x192.png", + "./dynamsoft-512x512.png", + "./helloworld-pwa.json", + `${engineResourcePaths.std}std.js`, + `${engineResourcePaths.std}std.wasm`, + `${engineResourcePaths.dip}dip.wasm`, + `${engineResourcePaths.core}core.js`, + `${engineResourcePaths.core}core.worker.js`, + `${engineResourcePaths.core}core.wasm`, + `${engineResourcePaths.license}license.js`, + `${engineResourcePaths.license}dls.license.dialog.html`, + `${engineResourcePaths.license}license.wasm`, + `${engineResourcePaths.utility}utility.js`, + `${engineResourcePaths.dbr}dbr.js`, + `${engineResourcePaths.dbr}dbr.wasm`, + `${engineResourcePaths.dbr}DBR-PresetTemplates.json`, + `${engineResourcePaths.cvr}cvr.js`, + `${engineResourcePaths.cvr}cvr.wasm`, + `${engineResourcePaths.cvr}cvr.worker.js`, + `${engineResourcePaths.dce}dce.js`, + `${engineResourcePaths.dce}dce.ui.html`, +]; + +// Installing Service Worker +self.addEventListener("install", (e) => { + console.log("[Service Worker] Install"); + e.waitUntil( + (async () => { + const cache = await caches.open(cacheName); + console.log("[Service Worker] Caching all: app shell and content"); + await cache.addAll(appShellFiles); + })() + ); +}); + +self.addEventListener("fetch", (e) => { + e.respondWith( + (async () => { + // Fetch cached response if exists + const cachedResponse = await caches.match(e.request); + console.log(`[Service Worker] Fetching resource: ${e.request.url}`); + if (cachedResponse) { + return cachedResponse; + } + + // Otherwise, fetch from network + const response = await fetch(e.request); + + if( + e.request.method !== "POST" && + // Authorization requests should not be cached + !/https:\/\/.*?\.dynamsoft.com\/auth/.test(e.request.url) + // You can add other filter conditions + ){ + const cache = await caches.open(cacheName); + console.log(`[Service Worker] Caching new resource: ${e.request.url}`); + cache.put(e.request, response.clone()); + } + + return response; + })() + ); +}); diff --git a/pr-preview/pr-214/hello-world/react-hooks/.gitignore b/pr-preview/pr-214/hello-world/react-hooks/.gitignore new file mode 100644 index 00000000..a7c0b33c --- /dev/null +++ b/pr-preview/pr-214/hello-world/react-hooks/.gitignore @@ -0,0 +1,24 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.npmrc + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/pr-preview/pr-214/hello-world/react-hooks/README.md b/pr-preview/pr-214/hello-world/react-hooks/README.md new file mode 100644 index 00000000..5e840412 --- /dev/null +++ b/pr-preview/pr-214/hello-world/react-hooks/README.md @@ -0,0 +1,394 @@ +# Hello World Sample for React with Hooks + +[React](https://reactjs.org/) is a JavaScript library meant explicitly for creating interactive UIs. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a React application. Note that in this sample we will use `TypeScript` and [Hooks](https://reactjs.org/docs/hooks-intro.html). Also, there is another sample `react` defining components as classes in React. + +In this guide, we will be using [`dynamsoft-barcode-reader-bundle 10.2.1000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/10.2.1000). + +> Note: +> +> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! +> +> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. + +## Official Sample + +* Hello World in React with Hooks - Source Code + +## Preparation + +Make sure you have [node](https://nodejs.org/) installed. `node 16.20.1` and `react 18.2.0` are used in the example below. + +## Quick Start + +```cmd +npm install +npm start +``` +Then open http://localhost:3000/ to view the sample app. + +## Create the sample project + +In this section, we will be creating a React application utilizing the Dynamsoft Barcode Reader bundle sdk. + +We'll be exploring how you could create a page that not only enables barcode scanning via a webcam or a built-in camera, but also decode barcodes from local images. + +By the end of this guide, you'll have a good understanding of the SDK and be ready to discover more ways to use it! + +### Create a Bootstrapped Raw React Application with TypeScript + +```cmd +npx create-react-app my-app --template typescript +``` + +### **CD** to the root directory of the application and install necessary libraries + +```cmd +cd my-app +npm install dynamsoft-barcode-reader-bundle -E +``` + +## Start to implement + +### Add file "dynamsoft.config.ts" under "/src/" to configure libraries + +```typescript +/* /src/dynamsoft.config.ts */ +import { CoreModule } from "dynamsoft-core"; +import { LicenseManager } from "dynamsoft-license"; +import "dynamsoft-barcode-reader"; + +// Configures the paths where the .wasm files and other necessary resources for modules are located. +CoreModule.engineResourcePaths = { + std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", + dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", + core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", + license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", + cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", + dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", + dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", +}; + +/** LICENSE ALERT - README + * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. + */ + +LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); + +/** + * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. + * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. + * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. + * LICENSE ALERT - THE END + */ + +// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. +CoreModule.loadWasm(["DBR"]); +``` + +> Note: +> +> * `initLicense()` specify a license key to use the library. You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=sample&product=dbr&package=js to get your own trial license good for 30 days. +> * `engineResourcePaths` tells the library where to get the necessary resources at runtime. + +### Build directory structure + +* Create a directory `components` under `/src/`, and then create two other directories, `VideoCapture` and `ImageCapture` under `/components/`. + +### Create and edit the `VideoCapture` component + +* Create `VideoCapture.tsx` under `/src/components/VideoCapture/`. The `VideoCapture` component helps decode barcodes via camera. + +* In `VideoCapture.tsx`, add code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). + +```tsx +/* /src/components/VideoCapture/VideoCapture.tsx */ +import { useEffect, useRef } from "react"; +import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. +import { CameraEnhancer, CameraView } from "dynamsoft-camera-enhancer"; +import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; +import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; + +const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; + +function VideoCapture() { + const cameraViewContainer = useRef(null); + const resultsContainer = useRef(null); + + useEffect((): any => { + let resolveInit: () => void; + const pInit: Promise = new Promise((r) => { + resolveInit = r; + }); + let isDestroyed = false; + + let cvRouter: CaptureVisionRouter; + let cameraEnhancer: CameraEnhancer; + + (async () => { + try { + // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. + const cameraView = await CameraView.createInstance(); + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } // Check if component is destroyed after every async + cameraEnhancer = await CameraEnhancer.createInstance(cameraView); + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + + // Get default UI and append it to DOM. + cameraViewContainer.current!.append(cameraView.getUIElement()); + + // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. + cvRouter = await CaptureVisionRouter.createInstance(); + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + cvRouter.setInput(cameraEnhancer); + + // Define a callback for results. + cvRouter.addResultReceiver({ + onDecodedBarcodesReceived: (result) => { + if (!result.barcodeResultItems.length) return; + + resultsContainer.current!.textContent = ""; + console.log(result); + for (let item of result.barcodeResultItems) { + resultsContainer.current!.textContent += `${item.formatString}: ${item.text}\n\n`; + } + }, + }); + + // Filter out unchecked and duplicate results. + const filter = new MultiFrameResultCrossFilter(); + // Filter out unchecked barcodes. + filter.enableResultCrossVerification("barcode", true); + // Filter out duplicate barcodes within 3 seconds. + filter.enableResultDeduplication("barcode", true); + await cvRouter.addResultFilter(filter); + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + + // Open camera and start scanning single barcode. + await cameraEnhancer.open(); + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + await cvRouter.startCapturing("ReadSingleBarcode"); + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + } catch (ex: any) { + if ((ex as Error)?.message === componentDestroyedErrorMsg) { + console.log(componentDestroyedErrorMsg); + } else { + let errMsg = ex.message || ex; + console.error(errMsg); + alert(errMsg); + } + } + })(); + + // Resolve pInit promise once initialization is complete. + resolveInit!(); + + // componentWillUnmount. dispose cvRouter when it's no longer needed + return async () => { + isDestroyed = true; + try { + // Wait for the pInit to complete before disposing resources. + await pInit; + cvRouter?.dispose(); + cameraEnhancer?.dispose(); + } catch (_) {} + }; + }, []); + + return ( +
+
+
+ Results: +
+
+ ); +} + +export default VideoCapture; +``` + +> Note: +> +> * The component should never update so that events bound to the UI stay valid. In this copmonent, the useEffect() hook is used to handle the component’s mount and unmount lifecycle events, and there are no state updates that would cause a re-render. +> * If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customize-the-ui) + +### Create and edit the `ImageCapture` component + +* Create `ImageCapture.tsx` under `/src/components/ImageCapture/`. The `ImageCapture` component helps decode barcodes in an image. + +* In `ImageCapture.tsx`, add code for initializing and destroying the `CaptureVisionRouter` instance. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). + +```tsx +/* /src/components/ImageCapture/ImageCapture.tsx */ +import React, { useRef, useEffect, MutableRefObject, useCallback } from "react"; +import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. +import { EnumCapturedResultItemType } from "dynamsoft-core"; +import { BarcodeResultItem } from "dynamsoft-barcode-reader"; +import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; + +function ImageCapture() { + const resultsContainer: MutableRefObject = useRef(null); + + let pCvRouter: MutableRefObject | null> = useRef(null); + let isDestroyed = useRef(false); + + const decodeImg = useCallback(async (e: React.ChangeEvent) => { + let files = [...(e.target.files as any as File[])]; + e.target.value = ""; // reset input + resultsContainer.current!.innerText = ""; + + try { + // ensure cvRouter is created only once + const cvRouter = await (pCvRouter.current = pCvRouter.current || CaptureVisionRouter.createInstance()); + if (isDestroyed.current) return; + + for (let file of files) { + // Decode selected image with 'ReadBarcodes_SpeedFirst' template. + const result = await cvRouter.capture(file, "ReadBarcodes_SpeedFirst"); + if (isDestroyed.current) return; + + // Print file name if there's multiple files + if (files.length > 1) { + resultsContainer.current!.innerText += `\n${file.name}:\n`; + } + for (let _item of result.items) { + if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { + continue; // check if captured result item is a barcode + } + let item = _item as BarcodeResultItem; + resultsContainer.current!.innerText += item.text + "\n"; // output the decoded barcode text + console.log(item.text); + } + // If no items are found, display that no barcode was detected + if (!result.items.length) resultsContainer.current!.innerText += "No barcode found"; + } + } catch (ex: any) { + let errMsg = ex.message || ex; + console.error(errMsg); + alert(errMsg); + } + }, []); + + useEffect((): any => { + // In 'development', React runs setup and cleanup one extra time before the actual setup in Strict Mode. + isDestroyed.current = false; + + // componentWillUnmount. dispose cvRouter when it's no longer needed + return async () => { + isDestroyed.current = true; + if (pCvRouter.current) { + try { + (await pCvRouter.current).dispose(); + } catch (_) {} + } + }; + }, []); + + return ( +
+
+ +
+
+
+ ); +} + +export default ImageCapture; +``` + +### Add the `VideoCapture` and `ImageCapture` component to `App.tsx` + +* On `/src/App.tsx`, we will edit the component so that it offers buttons to switch components between `VideoCapture` and `ImageCapture`. + +* Add following code to `App.tsx`. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). + +```tsx +/* /src/App.tsx */ +import { useState } from "react"; +import VideoCapture from "./components/VideoCapture/VideoCapture"; +import ImageCapture from "./components/ImageCapture/ImageCapture"; + +enum Modes { + VIDEO_CAPTURE = "video", + IMAGE_CAPTURE = "image", +} + +function App() { + const [mode, setMode] = useState(Modes.VIDEO_CAPTURE); + + const showVideoCapture = () => setMode(Modes.VIDEO_CAPTURE); + + const showImageCapture = () => setMode(Modes.IMAGE_CAPTURE); + + return ( +
+
+

Hello World for React

+
+
+ + +
+
{mode === Modes.VIDEO_CAPTURE ? : }
+
+ ); +} + +export default App; +``` + +* Try running the project. + +```cmd +npm start +``` + +If you followed all the steps correctly, you will have a working page that turns one of the cameras hooked to or built in your computer or mobile device into a barcode scanner. Also, if you want to decode a local image, just click the `Decode Image` button and select the image you want to decode. Once barcodes are found, the results will show in a dialog. + +## Development server + +Runs the app in the development mode.\ +Open [http://localhost:3000](http://localhost:3000) to view it in the browser. + +The page will reload if you make edits.\ +You will also see any lint errors in the console. + +## Build + +Builds the app for production to the `build` folder.\ +It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.\ +Your app is ready to be deployed! + +See the section about [deployment](https://create-react-app.dev/docs/deployment/) for more information. + +## Support + +If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/pr-preview/pr-214/hello-world/react-hooks/package.json b/pr-preview/pr-214/hello-world/react-hooks/package.json new file mode 100644 index 00000000..4a7e6c34 --- /dev/null +++ b/pr-preview/pr-214/hello-world/react-hooks/package.json @@ -0,0 +1,44 @@ +{ + "name": "dbrjs-react-sample", + "version": "0.1.0", + "private": true, + "dependencies": { + "@testing-library/jest-dom": "^5.17.0", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^13.5.0", + "@types/jest": "^27.5.2", + "@types/node": "^16.18.99", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "dynamsoft-barcode-reader-bundle": "10.2.1000", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-scripts": "5.0.1", + "typescript": "^4.9.5", + "web-vitals": "^2.1.4" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/react-hooks/public/favicon.ico b/pr-preview/pr-214/hello-world/react-hooks/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ literal 0 HcmV?d00001 diff --git a/pr-preview/pr-214/hello-world/react-hooks/public/index.html b/pr-preview/pr-214/hello-world/react-hooks/public/index.html new file mode 100644 index 00000000..f358c3c6 --- /dev/null +++ b/pr-preview/pr-214/hello-world/react-hooks/public/index.html @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + Hello World for React - Dynamsoft Barcode Reader Sample + + + +
+ + + diff --git a/pr-preview/pr-214/hello-world/react-hooks/public/logo192.png b/pr-preview/pr-214/hello-world/react-hooks/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/pr-preview/pr-214/hello-world/react-hooks/public/manifest.json b/pr-preview/pr-214/hello-world/react-hooks/public/manifest.json new file mode 100644 index 00000000..080d6c77 --- /dev/null +++ b/pr-preview/pr-214/hello-world/react-hooks/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/App.css b/pr-preview/pr-214/hello-world/react-hooks/src/App.css new file mode 100644 index 00000000..4b1f0cbc --- /dev/null +++ b/pr-preview/pr-214/hello-world/react-hooks/src/App.css @@ -0,0 +1,50 @@ +.hello-world-page { + text-align: center; +} +.title { + display: flex; + justify-content: center; + align-items: center; + margin-top: 20px; +} +.title .title-logo { + width: 60px; + height: 60px; + animation: retate 5s infinite linear; +} +.buttons-container { + text-align: center; + margin: 20px auto; +} +.buttons-container button { + display: inline-block; + border: 1px solid black; + padding: 5px 15px; + background-color: transparent; + cursor: pointer; +} +.buttons-container button:first-child { + border-top-left-radius: 10px; + border-bottom-left-radius: 10px; + border-right: transparent; +} +.buttons-container button:nth-child(2) { + border-top-right-radius: 10px; + border-bottom-right-radius: 10px; + border-left: transparent; +} + +@media screen and (max-width: 800px) { + .buttons-container { + width: 70%; + } +} + +@keyframes retate { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/App.tsx b/pr-preview/pr-214/hello-world/react-hooks/src/App.tsx new file mode 100644 index 00000000..51c1029d --- /dev/null +++ b/pr-preview/pr-214/hello-world/react-hooks/src/App.tsx @@ -0,0 +1,48 @@ +import { useState } from "react"; +import reactLogo from "./assets/logo.svg"; +import VideoCapture from "./components/VideoCapture/VideoCapture"; +import ImageCapture from "./components/ImageCapture/ImageCapture"; +import "./App.css"; + +enum Modes { + VIDEO_CAPTURE = "video", + IMAGE_CAPTURE = "image", +} + +function App() { + const [mode, setMode] = useState(Modes.VIDEO_CAPTURE); + + const showVideoCapture = () => setMode(Modes.VIDEO_CAPTURE); + + const showImageCapture = () => setMode(Modes.IMAGE_CAPTURE); + + return ( +
+
+

Hello World for React

+ logo +
+
+ + +
+
{mode === Modes.VIDEO_CAPTURE ? : }
+
+ ); +} + +export default App; diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/assets/logo.svg b/pr-preview/pr-214/hello-world/react-hooks/src/assets/logo.svg new file mode 100644 index 00000000..9dfc1c05 --- /dev/null +++ b/pr-preview/pr-214/hello-world/react-hooks/src/assets/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.css b/pr-preview/pr-214/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.css new file mode 100644 index 00000000..03da581c --- /dev/null +++ b/pr-preview/pr-214/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.css @@ -0,0 +1,20 @@ +.image-capture-container { + width: 100%; + height: 100%; + font-family: Consolas, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, + Courier New, monospace; +} + +.image-capture-container .input-container { + width: 80%; + height: 100%; + display: flex; + justify-content: center; + border: 1px solid black; + margin: 0 auto; +} + +.image-capture-container .results { + margin-top: 20px; + height: 100%; +} diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx b/pr-preview/pr-214/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx new file mode 100644 index 00000000..e8aa4630 --- /dev/null +++ b/pr-preview/pr-214/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx @@ -0,0 +1,76 @@ +import React, { useRef, useEffect, MutableRefObject, useCallback } from "react"; +import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. +import { EnumCapturedResultItemType } from "dynamsoft-core"; +import { BarcodeResultItem } from "dynamsoft-barcode-reader"; +import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; +import "./ImageCapture.css"; + +function ImageCapture() { + const resultsContainer: MutableRefObject = useRef(null); + + let pCvRouter: MutableRefObject | null> = useRef(null); + let isDestroyed = useRef(false); + + const captureImage = useCallback(async (e: React.ChangeEvent) => { + let files = [...(e.target.files as any as File[])]; + e.target.value = ""; // reset input + resultsContainer.current!.innerText = ""; + + try { + // ensure cvRouter is created only once + const cvRouter = await (pCvRouter.current = pCvRouter.current || CaptureVisionRouter.createInstance()); + if (isDestroyed.current) return; + + for (let file of files) { + // Decode selected image with 'ReadBarcodes_SpeedFirst' template. + const result = await cvRouter.capture(file, "ReadBarcodes_SpeedFirst"); + if (isDestroyed.current) return; + + // Print file name if there's multiple files + if (files.length > 1) { + resultsContainer.current!.innerText += `\n${file.name}:\n`; + } + for (let _item of result.items) { + if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { + continue; // check if captured result item is a barcode + } + let item = _item as BarcodeResultItem; + resultsContainer.current!.innerText += item.text + "\n"; // output the decoded barcode text + console.log(item.text); + } + // If no items are found, display that no barcode was detected + if (!result.items.length) resultsContainer.current!.innerText += "No barcode found"; + } + } catch (ex: any) { + let errMsg = ex.message || ex; + console.error(errMsg); + alert(errMsg); + } + }, []); + + useEffect((): any => { + // In 'development', React runs setup and cleanup one extra time before the actual setup in Strict Mode. + isDestroyed.current = false; + + // componentWillUnmount. dispose cvRouter when it's no longer needed + return async () => { + isDestroyed.current = true; + if (pCvRouter.current) { + try { + (await pCvRouter.current).dispose(); + } catch (_) {} + } + }; + }, []); + + return ( +
+
+ +
+
+
+ ); +} + +export default ImageCapture; diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.css b/pr-preview/pr-214/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.css new file mode 100644 index 00000000..9bfe13ad --- /dev/null +++ b/pr-preview/pr-214/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.css @@ -0,0 +1,6 @@ +.results { + width: 100%; + height: 10vh; + overflow: auto; + white-space: pre-wrap; +} diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.tsx b/pr-preview/pr-214/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.tsx new file mode 100644 index 00000000..494a322d --- /dev/null +++ b/pr-preview/pr-214/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.tsx @@ -0,0 +1,115 @@ +import { useEffect, useRef } from "react"; +import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. +import { CameraEnhancer, CameraView } from "dynamsoft-camera-enhancer"; +import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; +import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; +import "./VideoCapture.css"; + +const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; + +function VideoCapture() { + const cameraViewContainer = useRef(null); + const resultsContainer = useRef(null); + + useEffect((): any => { + let resolveInit: () => void; + const pInit: Promise = new Promise((r) => { + resolveInit = r; + }); + let isDestroyed = false; + + let cvRouter: CaptureVisionRouter; + let cameraEnhancer: CameraEnhancer; + + (async () => { + try { + // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. + const cameraView = await CameraView.createInstance(); + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } // Check if component is destroyed after every async + cameraEnhancer = await CameraEnhancer.createInstance(cameraView); + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + + // Get default UI and append it to DOM. + cameraViewContainer.current!.append(cameraView.getUIElement()); + + // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. + cvRouter = await CaptureVisionRouter.createInstance(); + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + cvRouter.setInput(cameraEnhancer); + + // Define a callback for results. + cvRouter.addResultReceiver({ + onDecodedBarcodesReceived: (result) => { + if (!result.barcodeResultItems.length) return; + + resultsContainer.current!.textContent = ""; + console.log(result); + for (let item of result.barcodeResultItems) { + resultsContainer.current!.textContent += `${item.formatString}: ${item.text}\n\n`; + } + }, + }); + + // Filter out unchecked and duplicate results. + const filter = new MultiFrameResultCrossFilter(); + // Filter out unchecked barcodes. + filter.enableResultCrossVerification("barcode", true); + // Filter out duplicate barcodes within 3 seconds. + filter.enableResultDeduplication("barcode", true); + await cvRouter.addResultFilter(filter); + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + + // Open camera and start scanning single barcode. + await cameraEnhancer.open(); + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + await cvRouter.startCapturing("ReadSingleBarcode"); + if (isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + } catch (ex: any) { + if ((ex as Error)?.message === componentDestroyedErrorMsg) { + console.log(componentDestroyedErrorMsg); + } else { + let errMsg = ex.message || ex; + console.error(errMsg); + alert(errMsg); + } + } + })(); + + // Resolve pInit promise once initialization is complete. + resolveInit!(); + + // componentWillUnmount. dispose cvRouter when it's no longer needed + return async () => { + isDestroyed = true; + try { + // Wait for the pInit to complete before disposing resources. + await pInit; + cvRouter?.dispose(); + cameraEnhancer?.dispose(); + } catch (_) {} + }; + }, []); + + return ( +
+
+
+ Results: +
+
+ ); +} + +export default VideoCapture; diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/dynamsoft.config.ts b/pr-preview/pr-214/hello-world/react-hooks/src/dynamsoft.config.ts new file mode 100644 index 00000000..b8a17541 --- /dev/null +++ b/pr-preview/pr-214/hello-world/react-hooks/src/dynamsoft.config.ts @@ -0,0 +1,30 @@ +import { CoreModule } from "dynamsoft-core"; +import { LicenseManager } from "dynamsoft-license"; +import "dynamsoft-barcode-reader"; + +// Configures the paths where the .wasm files and other necessary resources for modules are located. +CoreModule.engineResourcePaths = { + std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", + dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", + core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", + license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", + cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", + dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", + dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", +}; + +/** LICENSE ALERT - README + * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. + */ + +LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); + +/** + * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. + * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. + * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. + * LICENSE ALERT - THE END + */ + +// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. +CoreModule.loadWasm(["DBR"]); diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/index.css b/pr-preview/pr-214/hello-world/react-hooks/src/index.css new file mode 100644 index 00000000..e9927237 --- /dev/null +++ b/pr-preview/pr-214/hello-world/react-hooks/src/index.css @@ -0,0 +1,11 @@ +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", + "Droid Sans", "Helvetica Neue", sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; +} diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/index.tsx b/pr-preview/pr-214/hello-world/react-hooks/src/index.tsx new file mode 100644 index 00000000..f260548a --- /dev/null +++ b/pr-preview/pr-214/hello-world/react-hooks/src/index.tsx @@ -0,0 +1,11 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import "./index.css"; +import App from "./App"; + +const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); +root.render( + + + +); diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/react-app-env.d.ts b/pr-preview/pr-214/hello-world/react-hooks/src/react-app-env.d.ts new file mode 100644 index 00000000..6431bc5f --- /dev/null +++ b/pr-preview/pr-214/hello-world/react-hooks/src/react-app-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/pr-preview/pr-214/hello-world/react-hooks/tsconfig.json b/pr-preview/pr-214/hello-world/react-hooks/tsconfig.json new file mode 100644 index 00000000..a273b0cf --- /dev/null +++ b/pr-preview/pr-214/hello-world/react-hooks/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": [ + "src" + ] +} diff --git a/pr-preview/pr-214/hello-world/react/.gitignore b/pr-preview/pr-214/hello-world/react/.gitignore new file mode 100644 index 00000000..4d29575d --- /dev/null +++ b/pr-preview/pr-214/hello-world/react/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/pr-preview/pr-214/hello-world/react/README.md b/pr-preview/pr-214/hello-world/react/README.md new file mode 100644 index 00000000..31a70c00 --- /dev/null +++ b/pr-preview/pr-214/hello-world/react/README.md @@ -0,0 +1,413 @@ +# Hello World Sample for React + +[React](https://reactjs.org/) is a JavaScript library meant explicitly for creating interactive UIs. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a React application. Note that in this sample we will use `TypeScript` and define components as classes. Also, there is another sample `react-hooks` using `Hooks` in React. + +In this guide, we will be using [`dynamsoft-barcode-reader-bundle 10.2.1000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/10.2.1000). + +> Note: +> +> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! +> +> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. + +## Official Sample + +*
Hello World in React - Source Code + +## Preparation + +Make sure you have [node](https://nodejs.org/) installed. `node 16.20.1` and `react 18.2.0` are used in the example below. + +## Quick Start + +```cmd +npm install +npm start +``` +Then open http://localhost:3000/ to view the sample app. + +## Creating the sample project + +In this section, we will be creating a React application utilizing the Dynamsoft Barcode Reader bundle sdk. + +We'll be exploring how you could create a page that not only enables barcode scanning via a webcam or a built-in camera, but also decode barcodes from local images. + +By the end of this guide, you'll have a good understanding of the SDK and be ready to discover more ways to use it! + +### Create a Bootstrapped Raw React Application with TypeScript + +```cmd +npx create-react-app my-app --template typescript +``` + +### **CD** to the root directory of the application and install necessary libraries + +```cmd +cd my-app +npm install dynamsoft-barcode-reader-bundle -E +``` + +## Start to implement + +### Add file "dynamsoft.config.ts" at the root of the app to configure libraries + +```typescript +/* /src/dynamsoft.config.ts */ +import { CoreModule } from "dynamsoft-core"; +import { LicenseManager } from "dynamsoft-license"; +import "dynamsoft-barcode-reader"; + +// Configures the paths where the .wasm files and other necessary resources for modules are located. +CoreModule.engineResourcePaths = { + std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", + dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", + core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", + license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", + cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", + dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", + dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", +}; + +/** LICENSE ALERT - README + * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. + */ + +LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); + +/** + * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. + * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. + * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. + * LICENSE ALERT - THE END + */ + +// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. +CoreModule.loadWasm(["DBR"]); +``` + +> Note: +> +> * `initLicense()` specify a license key to use the library. You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=sample&product=dbr&package=js to get your own trial license good for 30 days. +> * `engineResourcePaths` tells the library where to get the necessary resources at runtime. + + +### Build directory structure + +* Create a directory `components` under `/src/`, and then create two other directories, `VideoCapture` and `ImageCapture` under `/components/`. + +### Create and edit the `VideoCapture` component + +* Create `VideoCapture.tsx` under `/src/components/VideoCapture/`. The `VideoCapture` component helps decode barcodes via camera. + +* In `VideoCapture.tsx`, add code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). + +```tsx +/* /src/components/VideoCapture/VideoCapture.tsx */ +import React from "react"; +import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. +import { CameraEnhancer, CameraView } from "dynamsoft-camera-enhancer"; +import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; +import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; + +const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; + +class VideoCapture extends React.Component { + cameraViewContainer: React.RefObject = React.createRef(); + resultsContainer: React.RefObject = React.createRef(); + + resolveInit?: () => void; + pInit: Promise = new Promise((r) => (this.resolveInit = r)); + isDestroyed = false; + + cvRouter?: CaptureVisionRouter; + cameraEnhancer?: CameraEnhancer; + + async componentDidMount() { + try { + // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. + const cameraView = await CameraView.createInstance(); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } // Check if component is destroyed after every async + + this.cameraEnhancer = await CameraEnhancer.createInstance(cameraView); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + + // Get default UI and append it to DOM. + this.cameraViewContainer.current!.append(cameraView.getUIElement()); + + // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. + this.cvRouter = await CaptureVisionRouter.createInstance(); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + this.cvRouter.setInput(this.cameraEnhancer); + + // Define a callback for results. + this.cvRouter.addResultReceiver({ + onDecodedBarcodesReceived: (result) => { + if (!result.barcodeResultItems.length) return; + + this.resultsContainer.current!.textContent = ""; + console.log(result); + for (let item of result.barcodeResultItems) { + this.resultsContainer.current!.textContent += `${item.formatString}: ${item.text}\n\n`; + } + }, + }); + + // Filter out unchecked and duplicate results. + const filter = new MultiFrameResultCrossFilter(); + // Filter out unchecked barcodes. + filter.enableResultCrossVerification("barcode", true); + // Filter out duplicate barcodes within 3 seconds. + filter.enableResultDeduplication("barcode", true); + await this.cvRouter.addResultFilter(filter); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + + // Open camera and start scanning single barcode. + await this.cameraEnhancer.open(); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + await this.cvRouter.startCapturing("ReadSingleBarcode"); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + } catch (ex: any) { + if ((ex as Error)?.message === componentDestroyedErrorMsg) { + console.log(componentDestroyedErrorMsg); + } else { + let errMsg = ex.message || ex; + console.error(errMsg); + alert(errMsg); + } + } + + // Resolve pInit promise once initialization is complete. + this.resolveInit!(); + } + + async componentWillUnmount() { + this.isDestroyed = true; + try { + // Wait for the pInit to complete before disposing resources. + await this.pInit; + this.cvRouter?.dispose(); + this.cameraEnhancer?.dispose(); + } catch (_) {} + } + + shouldComponentUpdate() { + // Never update UI after mount, sdk use native way to bind event, update will remove it. + return false; + } + + render() { + return ( +
+
+
+ Results: +
+
+ ); + } +} + +export default VideoCapture; +``` + +> Note: +> +> * The component should never update (check the code for `shouldComponentUpdate()`) so that events bound to the UI stay valid. +> * Also, during 'development', React executes setup and cleanup phases twice in [Strict Mode](https://react.dev/reference/react/StrictMode). To ensure proper functioning of VideoCapture in development, it's advised to avoid using Strict Mode for this component. +> However, if you're still interested on using Strict Mode, we do have a workaround available. Please contact our [support team](#Support) for further assistance. +> * If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customize-the-ui) + +### Create and edit the `ImageCapture` component + +* Create `ImageCapture.tsx` under `/src/components/ImageCapture/`. The `ImageCapture` component helps decode barcodes in an image. + +* In `ImageCapture.tsx`, add code for initializing and destroying the `CaptureVisionRouter` instance. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). + +```tsx +/* /src/components/ImageCapture/ImageCapture.tsx */ +import React, { ChangeEvent } from "react"; +import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. +import { EnumCapturedResultItemType } from "dynamsoft-core"; +import type { BarcodeResultItem } from "dynamsoft-barcode-reader"; +import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; + +class ImageCapture extends React.Component { + resultsContainer: React.RefObject = React.createRef(); + + pCvRouter: Promise | null = null; + isDestroyed = false; + + async captureImage(e: ChangeEvent) { + let files = [...(e.target.files as any as File[])]; + e.target.value = ""; // reset input + this.resultsContainer.current!.innerText = ""; + + try { + const cvRouter = await (this.pCvRouter = this.pCvRouter || CaptureVisionRouter.createInstance()); + if (this.isDestroyed) return; + + for (let file of files) { + // Decode selected image with 'ReadBarcodes_SpeedFirst' template. + const result = await cvRouter.capture(file, "ReadBarcodes_SpeedFirst"); + if (this.isDestroyed) return; + + // Print file name if there's multiple files + if (files.length > 1) { + this.resultsContainer.current!.innerText += `\n${file.name}:\n`; + } + for (let _item of result.items) { + if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { + continue; // check if captured result item is a barcode + } + let item = _item as BarcodeResultItem; + this.resultsContainer.current!.innerText += item.text + "\n"; + console.log(item.text); + } + // If no items are found, display that no barcode was detected + if (!result.items.length) this.resultsContainer.current!.innerText += "No barcode found\n"; + } + } catch (ex: any) { + let errMsg = ex.message || ex; + console.error(errMsg); + alert(errMsg); + } + } + + async componentWillUnmount() { + this.isDestroyed = true; + if (this.pCvRouter) { + try { + (await this.pCvRouter).dispose(); + } catch (_) {} + } + } + + render() { + return ( +
+
+ +
+
+
+ ); + } +} + +export default ImageCapture; +``` + +### Add the `VideoCapture` and `ImageCapture` component to `App.tsx` + +* On `/src/App.tsx`, we will edit the component so that it offers buttons to switch components between `VideoCapture` and `ImageCapture`. + +* Add following code to `App.tsx`. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). + +```tsx +/* src/App.tsx */ +import React from "react"; +import "./dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. +import VideoCapture from "./components/VideoCapture/VideoCapture"; +import ImageCapture from "./components/ImageCapture/ImageCapture"; + +enum Modes { + VIDEO_CAPTURE = "video", + IMAGE_CAPTURE = "image", +} + +class App extends React.Component { + state = { + mode: Modes.VIDEO_CAPTURE, + }; + + showVideoCapture = () => { + this.setState({ + mode: Modes.VIDEO_CAPTURE, + }); + }; + + showImageCapture = () => { + this.setState({ + mode: Modes.IMAGE_CAPTURE, + }); + }; + + render() { + return ( +
+
+

Hello World for React

+
+
+ + +
+
{this.state.mode === Modes.VIDEO_CAPTURE ? : }
+
+ ); + } +} + +export default App; +``` + +* Try running the project. + +```cmd +npm start +``` + +If you have followed all the steps correctly, you should now have a functioning page that allows you to scan barcodes from a webcam or a built-in camera. Additionally, if you want to decode a local image, you can click the `Decode Image` button and select the image you want to decode. Any barcodes that are detected will be displayed in a dialog. + +## Development server + +Runs the app in the development mode.\ +Open [http://localhost:3000](http://localhost:3000) to view it in the browser. + +The page will reload if you make edits.\ +You will also see any lint errors in the console. + +## Build + +Builds the app for production to the `build` folder.\ +It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.\ +Your app is ready to be deployed! + +See the section about [deployment](https://create-react-app.dev/docs/deployment/) for more information. + +## Support + +If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/pr-preview/pr-214/hello-world/react/package.json b/pr-preview/pr-214/hello-world/react/package.json new file mode 100644 index 00000000..84e11d02 --- /dev/null +++ b/pr-preview/pr-214/hello-world/react/package.json @@ -0,0 +1,44 @@ +{ + "name": "dbrjs-react-sample", + "version": "0.1.0", + "private": true, + "dependencies": { + "@testing-library/jest-dom": "^5.17.0", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^13.5.0", + "@types/jest": "^27.5.2", + "@types/node": "^16.18.98", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "dynamsoft-barcode-reader-bundle": "10.2.1000", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-scripts": "5.0.1", + "typescript": "^4.9.5", + "web-vitals": "^2.1.4" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/react/public/favicon.ico b/pr-preview/pr-214/hello-world/react/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ literal 0 HcmV?d00001 diff --git a/pr-preview/pr-214/hello-world/react/public/index.html b/pr-preview/pr-214/hello-world/react/public/index.html new file mode 100644 index 00000000..4f81c0fb --- /dev/null +++ b/pr-preview/pr-214/hello-world/react/public/index.html @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + Hello World for React - Dynamsoft Barcode Reader Sample + + + +
+ + + diff --git a/pr-preview/pr-214/hello-world/react/public/logo192.png b/pr-preview/pr-214/hello-world/react/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/pr-preview/pr-214/hello-world/react/public/manifest.json b/pr-preview/pr-214/hello-world/react/public/manifest.json new file mode 100644 index 00000000..fc7ce894 --- /dev/null +++ b/pr-preview/pr-214/hello-world/react/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/react/public/robots.txt b/pr-preview/pr-214/hello-world/react/public/robots.txt new file mode 100644 index 00000000..e9e57dc4 --- /dev/null +++ b/pr-preview/pr-214/hello-world/react/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/pr-preview/pr-214/hello-world/react/src/App.css b/pr-preview/pr-214/hello-world/react/src/App.css new file mode 100644 index 00000000..4b1f0cbc --- /dev/null +++ b/pr-preview/pr-214/hello-world/react/src/App.css @@ -0,0 +1,50 @@ +.hello-world-page { + text-align: center; +} +.title { + display: flex; + justify-content: center; + align-items: center; + margin-top: 20px; +} +.title .title-logo { + width: 60px; + height: 60px; + animation: retate 5s infinite linear; +} +.buttons-container { + text-align: center; + margin: 20px auto; +} +.buttons-container button { + display: inline-block; + border: 1px solid black; + padding: 5px 15px; + background-color: transparent; + cursor: pointer; +} +.buttons-container button:first-child { + border-top-left-radius: 10px; + border-bottom-left-radius: 10px; + border-right: transparent; +} +.buttons-container button:nth-child(2) { + border-top-right-radius: 10px; + border-bottom-right-radius: 10px; + border-left: transparent; +} + +@media screen and (max-width: 800px) { + .buttons-container { + width: 70%; + } +} + +@keyframes retate { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} diff --git a/pr-preview/pr-214/hello-world/react/src/App.tsx b/pr-preview/pr-214/hello-world/react/src/App.tsx new file mode 100644 index 00000000..4aa79319 --- /dev/null +++ b/pr-preview/pr-214/hello-world/react/src/App.tsx @@ -0,0 +1,61 @@ +import React from "react"; +import reactLogo from "./assets/logo.svg"; +import "./dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. +import VideoCapture from "./components/VideoCapture/VideoCapture"; +import ImageCapture from "./components/ImageCapture/ImageCapture"; +import "./App.css"; + +enum Modes { + VIDEO_CAPTURE = "video", + IMAGE_CAPTURE = "image", +} + +class App extends React.Component { + state = { + mode: Modes.VIDEO_CAPTURE, + }; + + showVideoCapture = () => { + this.setState({ + mode: Modes.VIDEO_CAPTURE, + }); + }; + + showImageCapture = () => { + this.setState({ + mode: Modes.IMAGE_CAPTURE, + }); + }; + + render() { + return ( +
+
+

Hello World for React

+ logo +
+
+ + +
+
{this.state.mode === Modes.VIDEO_CAPTURE ? : }
+
+ ); + } +} + +export default App; diff --git a/pr-preview/pr-214/hello-world/react/src/assets/logo.svg b/pr-preview/pr-214/hello-world/react/src/assets/logo.svg new file mode 100644 index 00000000..9dfc1c05 --- /dev/null +++ b/pr-preview/pr-214/hello-world/react/src/assets/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/react/src/components/ImageCapture/ImageCapture.css b/pr-preview/pr-214/hello-world/react/src/components/ImageCapture/ImageCapture.css new file mode 100644 index 00000000..03da581c --- /dev/null +++ b/pr-preview/pr-214/hello-world/react/src/components/ImageCapture/ImageCapture.css @@ -0,0 +1,20 @@ +.image-capture-container { + width: 100%; + height: 100%; + font-family: Consolas, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, + Courier New, monospace; +} + +.image-capture-container .input-container { + width: 80%; + height: 100%; + display: flex; + justify-content: center; + border: 1px solid black; + margin: 0 auto; +} + +.image-capture-container .results { + margin-top: 20px; + height: 100%; +} diff --git a/pr-preview/pr-214/hello-world/react/src/components/ImageCapture/ImageCapture.tsx b/pr-preview/pr-214/hello-world/react/src/components/ImageCapture/ImageCapture.tsx new file mode 100644 index 00000000..4b5e25bc --- /dev/null +++ b/pr-preview/pr-214/hello-world/react/src/components/ImageCapture/ImageCapture.tsx @@ -0,0 +1,76 @@ +import React, { ChangeEvent } from "react"; +import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. +import { EnumCapturedResultItemType } from "dynamsoft-core"; +import type { BarcodeResultItem } from "dynamsoft-barcode-reader"; +import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; +import "./ImageCapture.css"; + +class ImageCapture extends React.Component { + resultsContainer: React.RefObject = React.createRef(); + + pCvRouter: Promise | null = null; + isDestroyed = false; + + async captureImage(e: ChangeEvent) { + let files = [...(e.target.files as any as File[])]; + e.target.value = ""; // reset input + this.resultsContainer.current!.innerText = ""; + + try { + const cvRouter = await (this.pCvRouter = this.pCvRouter || CaptureVisionRouter.createInstance()); + if (this.isDestroyed) return; + + for (let file of files) { + // Decode selected image with 'ReadBarcodes_SpeedFirst' template. + const result = await cvRouter.capture(file, "ReadBarcodes_SpeedFirst"); + if (this.isDestroyed) return; + + // Print file name if there's multiple files + if (files.length > 1) { + this.resultsContainer.current!.innerText += `\n${file.name}:\n`; + } + for (let _item of result.items) { + if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { + continue; // check if captured result item is a barcode + } + let item = _item as BarcodeResultItem; + this.resultsContainer.current!.innerText += item.text + "\n"; + console.log(item.text); + } + // If no items are found, display that no barcode was detected + if (!result.items.length) this.resultsContainer.current!.innerText += "No barcode found\n"; + } + } catch (ex: any) { + let errMsg = ex.message || ex; + console.error(errMsg); + alert(errMsg); + } + } + + async componentWillUnmount() { + this.isDestroyed = true; + if (this.pCvRouter) { + try { + (await this.pCvRouter).dispose(); + } catch (_) {} + } + } + + render() { + return ( +
+
+ +
+
+
+ ); + } +} + +export default ImageCapture; diff --git a/pr-preview/pr-214/hello-world/react/src/components/VideoCapture/VideoCapture.css b/pr-preview/pr-214/hello-world/react/src/components/VideoCapture/VideoCapture.css new file mode 100644 index 00000000..9bfe13ad --- /dev/null +++ b/pr-preview/pr-214/hello-world/react/src/components/VideoCapture/VideoCapture.css @@ -0,0 +1,6 @@ +.results { + width: 100%; + height: 10vh; + overflow: auto; + white-space: pre-wrap; +} diff --git a/pr-preview/pr-214/hello-world/react/src/components/VideoCapture/VideoCapture.tsx b/pr-preview/pr-214/hello-world/react/src/components/VideoCapture/VideoCapture.tsx new file mode 100644 index 00000000..013963fb --- /dev/null +++ b/pr-preview/pr-214/hello-world/react/src/components/VideoCapture/VideoCapture.tsx @@ -0,0 +1,118 @@ +import React from "react"; +import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. +import { CameraEnhancer, CameraView } from "dynamsoft-camera-enhancer"; +import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; +import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; +import "./VideoCapture.css"; + +const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; + +class VideoCapture extends React.Component { + cameraViewContainer: React.RefObject = React.createRef(); + resultsContainer: React.RefObject = React.createRef(); + + resolveInit?: () => void; + pInit: Promise = new Promise((r) => (this.resolveInit = r)); + isDestroyed = false; + + cvRouter?: CaptureVisionRouter; + cameraEnhancer?: CameraEnhancer; + + async componentDidMount() { + try { + // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. + const cameraView = await CameraView.createInstance(); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } // Check if component is destroyed after every async + + this.cameraEnhancer = await CameraEnhancer.createInstance(cameraView); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + + // Get default UI and append it to DOM. + this.cameraViewContainer.current!.append(cameraView.getUIElement()); + + // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. + this.cvRouter = await CaptureVisionRouter.createInstance(); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + this.cvRouter.setInput(this.cameraEnhancer); + + // Define a callback for results. + this.cvRouter.addResultReceiver({ + onDecodedBarcodesReceived: (result) => { + if (!result.barcodeResultItems.length) return; + + this.resultsContainer.current!.textContent = ""; + console.log(result); + for (let item of result.barcodeResultItems) { + this.resultsContainer.current!.textContent += `${item.formatString}: ${item.text}\n\n`; + } + }, + }); + + // Filter out unchecked and duplicate results. + const filter = new MultiFrameResultCrossFilter(); + // Filter out unchecked barcodes. + filter.enableResultCrossVerification("barcode", true); + // Filter out duplicate barcodes within 3 seconds. + filter.enableResultDeduplication("barcode", true); + await this.cvRouter.addResultFilter(filter); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + + // Open camera and start scanning single barcode. + await this.cameraEnhancer.open(); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + await this.cvRouter.startCapturing("ReadSingleBarcode"); + if (this.isDestroyed) { + throw Error(componentDestroyedErrorMsg); + } + } catch (ex: any) { + if ((ex as Error)?.message === componentDestroyedErrorMsg) { + console.log(componentDestroyedErrorMsg); + } else { + let errMsg = ex.message || ex; + console.error(errMsg); + alert(errMsg); + } + } + + // Resolve pInit promise once initialization is complete. + this.resolveInit!(); + } + + async componentWillUnmount() { + this.isDestroyed = true; + try { + // Wait for the pInit to complete before disposing resources. + await this.pInit; + this.cvRouter?.dispose(); + this.cameraEnhancer?.dispose(); + } catch (_) {} + } + + shouldComponentUpdate() { + // Never update UI after mount, sdk use native way to bind event, update will remove it. + return false; + } + + render() { + return ( +
+
+
+ Results: +
+
+ ); + } +} + +export default VideoCapture; diff --git a/pr-preview/pr-214/hello-world/react/src/dynamsoft.config.ts b/pr-preview/pr-214/hello-world/react/src/dynamsoft.config.ts new file mode 100644 index 00000000..b8a17541 --- /dev/null +++ b/pr-preview/pr-214/hello-world/react/src/dynamsoft.config.ts @@ -0,0 +1,30 @@ +import { CoreModule } from "dynamsoft-core"; +import { LicenseManager } from "dynamsoft-license"; +import "dynamsoft-barcode-reader"; + +// Configures the paths where the .wasm files and other necessary resources for modules are located. +CoreModule.engineResourcePaths = { + std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", + dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", + core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", + license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", + cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", + dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", + dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", +}; + +/** LICENSE ALERT - README + * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. + */ + +LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); + +/** + * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. + * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. + * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. + * LICENSE ALERT - THE END + */ + +// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. +CoreModule.loadWasm(["DBR"]); diff --git a/pr-preview/pr-214/hello-world/react/src/index.css b/pr-preview/pr-214/hello-world/react/src/index.css new file mode 100644 index 00000000..e9927237 --- /dev/null +++ b/pr-preview/pr-214/hello-world/react/src/index.css @@ -0,0 +1,11 @@ +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", + "Droid Sans", "Helvetica Neue", sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; +} diff --git a/pr-preview/pr-214/hello-world/react/src/index.tsx b/pr-preview/pr-214/hello-world/react/src/index.tsx new file mode 100644 index 00000000..625b6731 --- /dev/null +++ b/pr-preview/pr-214/hello-world/react/src/index.tsx @@ -0,0 +1,6 @@ +import ReactDOM from "react-dom/client"; +import "./index.css"; +import App from "./App"; + +const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); +root.render(); diff --git a/pr-preview/pr-214/hello-world/react/src/logo.svg b/pr-preview/pr-214/hello-world/react/src/logo.svg new file mode 100644 index 00000000..9dfc1c05 --- /dev/null +++ b/pr-preview/pr-214/hello-world/react/src/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/react/src/react-app-env.d.ts b/pr-preview/pr-214/hello-world/react/src/react-app-env.d.ts new file mode 100644 index 00000000..6431bc5f --- /dev/null +++ b/pr-preview/pr-214/hello-world/react/src/react-app-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/pr-preview/pr-214/hello-world/react/tsconfig.json b/pr-preview/pr-214/hello-world/react/tsconfig.json new file mode 100644 index 00000000..a273b0cf --- /dev/null +++ b/pr-preview/pr-214/hello-world/react/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": [ + "src" + ] +} diff --git a/pr-preview/pr-214/hello-world/read-an-image.html b/pr-preview/pr-214/hello-world/read-an-image.html new file mode 100644 index 00000000..d090d073 --- /dev/null +++ b/pr-preview/pr-214/hello-world/read-an-image.html @@ -0,0 +1,71 @@ + + + + + + + + + Dynamsoft Barcode Reader Sample - Hello World (Read an Image) + + + +

Hello World (Read an Image)

+
+ Results:
+
+ + + + diff --git a/pr-preview/pr-214/hello-world/requirejs.html b/pr-preview/pr-214/hello-world/requirejs.html new file mode 100644 index 00000000..018a7750 --- /dev/null +++ b/pr-preview/pr-214/hello-world/requirejs.html @@ -0,0 +1,102 @@ + + + + + + + + + Dynamsoft Barcode Reader Sample - Hello World for RequireJS (Decode via Camera) + + + + +

Hello World for RequireJS (Decode via Camera)

+
+ Results: +
+
+ + + diff --git a/pr-preview/pr-214/hello-world/svelte/.gitignore b/pr-preview/pr-214/hello-world/svelte/.gitignore new file mode 100644 index 00000000..a547bf36 --- /dev/null +++ b/pr-preview/pr-214/hello-world/svelte/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/pr-preview/pr-214/hello-world/svelte/README.md b/pr-preview/pr-214/hello-world/svelte/README.md new file mode 100644 index 00000000..a8a1d3d5 --- /dev/null +++ b/pr-preview/pr-214/hello-world/svelte/README.md @@ -0,0 +1,354 @@ +# Hello World for Vite + Svelte + TS - Dynamsoft Barcode Reader Sample + +[Svelte](https://svelte.dev/) is a JavaScript library meant explicitly for creating interactive UIs. Svelte compiles components into code that directly manipulates the DOM, unlike other frameworks such as Vue and React that relies on a virtual DOM for updates. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a Svelte application using Vite. Note that in this sample we will use TypeScript. + +In this guide, we will be using [`dynamsoft-barcode-reader-bundle 10.2.1000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/10.2.1000). + +> Note: +> +> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! +> +> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. + +## Official Sample + +*
Hello World for Vite + Svelte + TS - Source Code + +## Preparation + +Make sure you have [node](https://nodejs.org/) installed. `node 16.20.1` and `svelte 4.2.12` are used in the example below. + +## Quick Start + +```cmd +npm install +npm run +``` +Then open http://localhost:5173/ to view the sample app. + +## Create the sample project + +If you're planning to start the project from scratch, in this section, we will be creating a Svelte application with Vite utilizing the Dynamsoft Barcode Reader bundle sdk. + +We'll be exploring how you could create a page that not only enables barcode scanning via a webcam or a built-in camera, but also decode barcodes from local images. + +By the end of this guide, you'll have a good understanding of the SDK and be ready to discover more ways to use it! + +### Create a Bootstrapped Svelte Application with Vite and TypeScript + +```cmd +npm create vite@latest my-app + + +√ Select a framework: » Svelte +√ Select a variant: » TypeScript +``` + +### **CD** to the root directory of the application and install necessary libraries + +```cmd +cd my-app +npm install dynamsoft-barcode-reader-bundle -E +``` + +## Start to implement + +### Add file "dynamsoft.config.ts" under "/src/" to configure libraries + +```typescript +/* /src/dynamsoft.config.ts */ +import { CoreModule } from "dynamsoft-core"; +import { LicenseManager } from "dynamsoft-license"; +import "dynamsoft-barcode-reader"; + +// Configures the paths where the .wasm files and other necessary resources for modules are located. +CoreModule.engineResourcePaths = { + std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", + dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", + core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", + license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", + cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", + dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", + dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", +}; + +/** LICENSE ALERT - README + * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. + */ + +LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); + +/** + * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. + * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. + * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. + * LICENSE ALERT - THE END + */ + +// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. +CoreModule.loadWasm(["DBR"]); +``` + +> Note: +> +> * `initLicense()` specify a license key to use the library. You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=sample&product=dbr&package=js to get your own trial license good for 30 days. +> * `engineResourcePaths` tells the library where to get the necessary resources at runtime. + +### Build directory structure + +* Create a directory `components` under `/src/` + +### Create and edit the `VideoCapture` component + +* Create `VideoCapture.svelte` under `/src/components/`. The `VideoCapture` component helps decode barcodes via camera. + +* In `VideoCapture.svelte`, add code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). + +```svelte + + + +
+
+ Results:
+
+
+``` + +> Note: +> +> * If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customize-the-ui) + +### Create and edit the `ImageCapture` component + +* Create `ImageCapture.svelte` under `/src/components/`. The `ImageCapture` component helps decode barcodes in an image. + +* In `ImageCapture.svelte`, add code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). + +```svelte + + + +
+
+ +
+
+
+``` + +### Add the `VideoCapture` and `ImageCapture` component to `App.svelte` + +* On `/src/App.svelte`, we will edit the component so that it offers buttons to switch components between `VideoCapture` and `ImageCapture`. + +* Add following code to `App.svelte`. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). + +```svelte + + + +
+
+
+

Hello World for Svelte

+ +
+
+ + +
+ {#if mode === "video"} + + {:else} + + {/if} +
+
+``` + +* Try running the project. + +```cmd +npm run dev +``` + +If you followed all the steps correctly, you will have a working page that turns one of the cameras hooked to or built in your computer or mobile device into a barcode scanner. Also, if you want to decode a local image, just click the `Decode Image` button and select the image you want to decode. Once barcodes are found, the results will show in a dialog. + +## Support + +If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/svelte/index.html b/pr-preview/pr-214/hello-world/svelte/index.html new file mode 100644 index 00000000..6471fdec --- /dev/null +++ b/pr-preview/pr-214/hello-world/svelte/index.html @@ -0,0 +1,18 @@ + + + + + + + + Hello World for Vite + Svelte + TS - Dynamsoft Barcode Reader Sample + + +
+ + + diff --git a/pr-preview/pr-214/hello-world/svelte/package.json b/pr-preview/pr-214/hello-world/svelte/package.json new file mode 100644 index 00000000..839edeb2 --- /dev/null +++ b/pr-preview/pr-214/hello-world/svelte/package.json @@ -0,0 +1,24 @@ +{ + "name": "dbrjs-svelte-sample", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "check": "svelte-check --tsconfig ./tsconfig.json" + }, + "dependencies": { + "dynamsoft-barcode-reader-bundle": "10.2.1000" + }, + "devDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.2", + "@tsconfig/svelte": "^5.0.2", + "svelte": "^4.2.12", + "svelte-check": "^3.6.6", + "tslib": "^2.6.2", + "typescript": "^5.2.2", + "vite": "^5.1.6" + } +} diff --git a/pr-preview/pr-214/hello-world/svelte/src/App.svelte b/pr-preview/pr-214/hello-world/svelte/src/App.svelte new file mode 100644 index 00000000..78d16127 --- /dev/null +++ b/pr-preview/pr-214/hello-world/svelte/src/App.svelte @@ -0,0 +1,88 @@ + + +
+
+
+

Hello World for Svelte

+ +
+
+ + +
+ {#if mode === "video"} + + {:else} + + {/if} +
+
+ + diff --git a/pr-preview/pr-214/hello-world/svelte/src/components/ImageCapture.svelte b/pr-preview/pr-214/hello-world/svelte/src/components/ImageCapture.svelte new file mode 100644 index 00000000..1fbaf6c1 --- /dev/null +++ b/pr-preview/pr-214/hello-world/svelte/src/components/ImageCapture.svelte @@ -0,0 +1,96 @@ + + +
+
+ +
+
+
+ + diff --git a/pr-preview/pr-214/hello-world/svelte/src/components/VideoCapture.svelte b/pr-preview/pr-214/hello-world/svelte/src/components/VideoCapture.svelte new file mode 100644 index 00000000..9db2c92f --- /dev/null +++ b/pr-preview/pr-214/hello-world/svelte/src/components/VideoCapture.svelte @@ -0,0 +1,117 @@ + + +
+
+ Results:
+
+
+ + diff --git a/pr-preview/pr-214/hello-world/svelte/src/dynamsoft.config.ts b/pr-preview/pr-214/hello-world/svelte/src/dynamsoft.config.ts new file mode 100644 index 00000000..f37d9578 --- /dev/null +++ b/pr-preview/pr-214/hello-world/svelte/src/dynamsoft.config.ts @@ -0,0 +1,31 @@ +/* /src/dynamsoft.config.ts */ +import { CoreModule } from "dynamsoft-core"; +import { LicenseManager } from "dynamsoft-license"; +import "dynamsoft-barcode-reader"; + +// Configures the paths where the .wasm files and other necessary resources for modules are located. +CoreModule.engineResourcePaths = { + std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", + dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", + core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", + license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", + cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", + dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", + dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", +}; + +/** LICENSE ALERT - README + * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. + */ + +LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); + +/** + * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. + * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. + * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. + * LICENSE ALERT - THE END + */ + +// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. +CoreModule.loadWasm(["DBR"]); diff --git a/pr-preview/pr-214/hello-world/svelte/src/main.ts b/pr-preview/pr-214/hello-world/svelte/src/main.ts new file mode 100644 index 00000000..8c4eaed9 --- /dev/null +++ b/pr-preview/pr-214/hello-world/svelte/src/main.ts @@ -0,0 +1,7 @@ +import App from "./App.svelte"; + +const app = new App({ + target: document.getElementById("app")!, +}); + +export default app; diff --git a/pr-preview/pr-214/hello-world/svelte/src/vite-env.d.ts b/pr-preview/pr-214/hello-world/svelte/src/vite-env.d.ts new file mode 100644 index 00000000..4078e747 --- /dev/null +++ b/pr-preview/pr-214/hello-world/svelte/src/vite-env.d.ts @@ -0,0 +1,2 @@ +/// +/// diff --git a/pr-preview/pr-214/hello-world/svelte/svelte.config.js b/pr-preview/pr-214/hello-world/svelte/svelte.config.js new file mode 100644 index 00000000..b0683fd2 --- /dev/null +++ b/pr-preview/pr-214/hello-world/svelte/svelte.config.js @@ -0,0 +1,7 @@ +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' + +export default { + // Consult https://svelte.dev/docs#compile-time-svelte-preprocess + // for more information about preprocessors + preprocess: vitePreprocess(), +} diff --git a/pr-preview/pr-214/hello-world/svelte/tsconfig.json b/pr-preview/pr-214/hello-world/svelte/tsconfig.json new file mode 100644 index 00000000..5fb548f2 --- /dev/null +++ b/pr-preview/pr-214/hello-world/svelte/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "@tsconfig/svelte/tsconfig.json", + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "module": "ESNext", + "resolveJsonModule": true, + /** + * Typecheck JS in `.svelte` and `.js` files by default. + * Disable checkJs if you'd like to use dynamic types in JS. + * Note that setting allowJs false does not prevent the use + * of JS in `.svelte` files. + */ + "allowJs": true, + "checkJs": true, + "isolatedModules": true + }, + "include": ["src/**/*.ts", "src/**/*.js", "src/**/*.svelte"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/pr-preview/pr-214/hello-world/svelte/tsconfig.node.json b/pr-preview/pr-214/hello-world/svelte/tsconfig.node.json new file mode 100644 index 00000000..d02c37df --- /dev/null +++ b/pr-preview/pr-214/hello-world/svelte/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "strict": true + }, + "include": ["vite.config.ts"] +} diff --git a/pr-preview/pr-214/hello-world/svelte/vite.config.ts b/pr-preview/pr-214/hello-world/svelte/vite.config.ts new file mode 100644 index 00000000..2aeffabd --- /dev/null +++ b/pr-preview/pr-214/hello-world/svelte/vite.config.ts @@ -0,0 +1,8 @@ +import { defineConfig } from 'vite' +import { svelte } from '@sveltejs/vite-plugin-svelte' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [svelte()], + base: "./" +}) diff --git a/pr-preview/pr-214/hello-world/vue/.gitignore b/pr-preview/pr-214/hello-world/vue/.gitignore new file mode 100644 index 00000000..aa2cb9ff --- /dev/null +++ b/pr-preview/pr-214/hello-world/vue/.gitignore @@ -0,0 +1,29 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* +.npmrc + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/pr-preview/pr-214/hello-world/vue/README.md b/pr-preview/pr-214/hello-world/vue/README.md new file mode 100644 index 00000000..3eb7215a --- /dev/null +++ b/pr-preview/pr-214/hello-world/vue/README.md @@ -0,0 +1,384 @@ +# Hello World Sample for Vue3 + +[Vue 3](https://v3.vuejs.org/) is version 3 of Vue which is a progressive framework for building user interfaces. Check out the following guide on how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a Vue 3 application. Note that in this sample, `TypeScript` is used. + +In this guide, we will be using [`dynamsoft-barcode-reader-bundle 10.2.1000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/10.2.1000). + +> Note: +> +> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! +> +> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. + +## Official Sample + +* Hello World in Vue 3 - Source Code + +## Preparation + +Make sure you have [node](https://nodejs.org/) installed. `node 16.20.1` and `vue 3.3.4` are used in the example below. + +## Quick Start + +```cmd +npm install +npm run dev +``` +Then open http://localhost:5173/ to view the sample app. + +## Creating the sample project + +In this section, we will be creating a Vue application utilizing the Dynamsoft Barcode Reader bundle sdk. + +We'll be exploring how you could create a page that not only enables barcode scanning via a webcam or a built-in camera, but also decode barcodes from local images. + +By the end of this guide, you'll have a good understanding of the SDK and be ready to discover more ways to use it! + +### Create a Bootstrapped Raw Vue Application + +```cmd +npm create vue@3 +``` + +On installation, you will be prompted to configure your project.\ +You can customize these options according to your preferences.\ +Below is the configuration used for this sample. + +``` +√ Project name: ... vue-project +√ Add TypeScript? ... Yes +√ Add JSX Support? ... No +√ Add Vue Router for Single Page Application development? ... No +√ Add Pinia for state management? ... No +√ Add Vitest for Unit Testing? ... No +√ Add an End-to-End Testing Solution? » No +√ Add ESLint for code quality? ... No +√ Add Vue DevTools 7 extension for debugging? (experimental) ... No +``` + +### **CD** to the root directory of the application and install necessary libraries + +```cmd +cd vue-project +npm install dynamsoft-barcode-reader-bundle -E +``` + +## Start to implement + +### Add file "dynamsoft.config.ts" under "/src/" to configure libraries + +```typescript +/* /src/dynamsoft.config.ts */ +import { CoreModule } from "dynamsoft-core"; +import { LicenseManager } from "dynamsoft-license"; +import "dynamsoft-barcode-reader"; + +// Configures the paths where the .wasm files and other necessary resources for modules are located. +CoreModule.engineResourcePaths = { + std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", + dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", + core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", + license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", + cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", + dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", + dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", +}; + +/** LICENSE ALERT - README + * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. + */ + +LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); + +/** + * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. + * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. + * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. + * LICENSE ALERT - THE END + */ + +// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. +CoreModule.loadWasm(["DBR"]); +``` + +> Note: +> +> * `initLicense()` specify a license key to use the library. You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=sample&product=dbr&package=js to get your own trial license good for 30 days. +> * `engineResourcePaths` tells the library where to get the necessary resources at runtime. + +### Create and edit the `VideoCapture` component + +* Create `VideoCapture.vue` under `/components/`. The VideoCapture component helps decode barcodes via camera. + +* In `VideoCapture.vue`, add the following code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). + +```vue + + + + +``` +> Note: +> +> If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customize-the-ui) + +### Create and edit the `ImageCapture` component + +* Create `ImageCapture.vue` under `/components/`. The `ImageCapture` component helps decode barcodes in an image. + +* In `ImageCapture.vue`, add code for initializing and destroying `CaptureVisionRouter` instance. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). + +```vue + + + + +``` + +### Add the `VideoCapture` and `ImageCapture` component to `App.vue` + +* On `/src/App.vue`, we will edit the component so that it offers buttons to switch components between `VideoCapture` and `ImageCapture`. + +* Add following code to `App.vue`. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). + +```vue + + + + +``` +> Note: +> +> With Vue's `defineAsyncComponent` we can improve the initial load speed and performance of the application. +> +> `defineAsyncComponent` allows us to load components such as `VideoCapture` and `ImageCapture` asynchronously, which means that the component's code is only loaded when it's needed. This will result in a faster initial load times. +> +> However, if you're implementing server-side rendering with Vue, using `defineAsyncComponent` might cause issues while loading `VideoCapture` and `ImageCapture` as we use the window/document object. Make sure to load these components on the client-side! +> +> Read more: https://vuejs.org/guide/components/async.html + +* Try running the project. + +```cmd +npm run dev +``` +If you followed all the steps correctly, you will have a working page that turns one of the cameras hooked to or built in your computer or mobile device into a barcode scanner. Also, if you want to decode a local image, just click the `Decode Image` button and select the image you want to decode. Once barcodes are found, the results will show in a dialog. + +### Comment out the following code in `assets/main.css`. (optional) + +```css +@media (min-width: 1024px) { + /* body { + display: flex; + place-items: center; + } + + #app { + display: grid; + grid-template-columns: 1fr 1fr; + padding: 0 2rem; + } */ +} +``` + +## Project Setup + +```sh +npm install +``` + +### Compile and Hot-Reload for Development + +```sh +npm run dev +``` + +### Type-Check, Compile and Minify for Production + +```sh +npm run build +``` + +## Support + +If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/pr-preview/pr-214/hello-world/vue/env.d.ts b/pr-preview/pr-214/hello-world/vue/env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/pr-preview/pr-214/hello-world/vue/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/pr-preview/pr-214/hello-world/vue/index.html b/pr-preview/pr-214/hello-world/vue/index.html new file mode 100644 index 00000000..e9c29d99 --- /dev/null +++ b/pr-preview/pr-214/hello-world/vue/index.html @@ -0,0 +1,19 @@ + + + + + + + + + + Hello World for Vue 3 - Dynamsoft Barcode Reader Sample + + +
+ + + diff --git a/pr-preview/pr-214/hello-world/vue/package.json b/pr-preview/pr-214/hello-world/vue/package.json new file mode 100644 index 00000000..77fc7a23 --- /dev/null +++ b/pr-preview/pr-214/hello-world/vue/package.json @@ -0,0 +1,26 @@ +{ + "name": "dbrjs-vue3-sample", + "version": "0.0.0", + "homepage": "./", + "private": true, + "scripts": { + "dev": "vite", + "build": "run-p type-check build-only", + "preview": "vite preview", + "build-only": "vite build", + "type-check": "vue-tsc --noEmit" + }, + "dependencies": { + "dynamsoft-barcode-reader-bundle": "10.2.1000", + "vue": "^3.2.45" + }, + "devDependencies": { + "@types/node": "^18.11.12", + "@vitejs/plugin-vue": "^4.0.0", + "@vue/tsconfig": "^0.1.3", + "npm-run-all": "^4.1.5", + "typescript": "~4.7.4", + "vite": "^4.0.0", + "vue-tsc": "^1.0.12" + } +} \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/vue/public/favicon.ico b/pr-preview/pr-214/hello-world/vue/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/pr-preview/pr-214/hello-world/vue/src/App.vue b/pr-preview/pr-214/hello-world/vue/src/App.vue new file mode 100644 index 00000000..d51c0d57 --- /dev/null +++ b/pr-preview/pr-214/hello-world/vue/src/App.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/pr-preview/pr-214/hello-world/vue/src/assets/logo.svg b/pr-preview/pr-214/hello-world/vue/src/assets/logo.svg new file mode 100644 index 00000000..bc826fed --- /dev/null +++ b/pr-preview/pr-214/hello-world/vue/src/assets/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/vue/src/assets/main.css b/pr-preview/pr-214/hello-world/vue/src/assets/main.css new file mode 100644 index 00000000..77f7db1b --- /dev/null +++ b/pr-preview/pr-214/hello-world/vue/src/assets/main.css @@ -0,0 +1,6 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; + text-align: center; +} diff --git a/pr-preview/pr-214/hello-world/vue/src/components/ImageCapture.vue b/pr-preview/pr-214/hello-world/vue/src/components/ImageCapture.vue new file mode 100644 index 00000000..25392c19 --- /dev/null +++ b/pr-preview/pr-214/hello-world/vue/src/components/ImageCapture.vue @@ -0,0 +1,88 @@ + + + + + \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/vue/src/components/VideoCapture.vue b/pr-preview/pr-214/hello-world/vue/src/components/VideoCapture.vue new file mode 100644 index 00000000..f17e619c --- /dev/null +++ b/pr-preview/pr-214/hello-world/vue/src/components/VideoCapture.vue @@ -0,0 +1,108 @@ + + + + + \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/vue/src/dynamsoft.config.ts b/pr-preview/pr-214/hello-world/vue/src/dynamsoft.config.ts new file mode 100644 index 00000000..b8a17541 --- /dev/null +++ b/pr-preview/pr-214/hello-world/vue/src/dynamsoft.config.ts @@ -0,0 +1,30 @@ +import { CoreModule } from "dynamsoft-core"; +import { LicenseManager } from "dynamsoft-license"; +import "dynamsoft-barcode-reader"; + +// Configures the paths where the .wasm files and other necessary resources for modules are located. +CoreModule.engineResourcePaths = { + std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", + dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", + core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", + license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", + cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", + dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", + dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", +}; + +/** LICENSE ALERT - README + * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. + */ + +LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); + +/** + * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. + * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. + * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. + * LICENSE ALERT - THE END + */ + +// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. +CoreModule.loadWasm(["DBR"]); diff --git a/pr-preview/pr-214/hello-world/vue/src/main.ts b/pr-preview/pr-214/hello-world/vue/src/main.ts new file mode 100644 index 00000000..90e6400b --- /dev/null +++ b/pr-preview/pr-214/hello-world/vue/src/main.ts @@ -0,0 +1,6 @@ +import { createApp } from 'vue' +import App from './App.vue' + +import './assets/main.css' + +createApp(App).mount('#app') diff --git a/pr-preview/pr-214/hello-world/vue/tsconfig.config.json b/pr-preview/pr-214/hello-world/vue/tsconfig.config.json new file mode 100644 index 00000000..bbaa4d88 --- /dev/null +++ b/pr-preview/pr-214/hello-world/vue/tsconfig.config.json @@ -0,0 +1,9 @@ +{ + "extends": "@vue/tsconfig/tsconfig.node.json", + "include": ["vite.config.*", "vitest.config.*", "cypress.config.*", "playwright.config.*"], + "compilerOptions": { + "ignoreDeprecations": "5.0", + "composite": true, + "types": ["node"] + } +} diff --git a/pr-preview/pr-214/hello-world/vue/tsconfig.json b/pr-preview/pr-214/hello-world/vue/tsconfig.json new file mode 100644 index 00000000..5a2565a2 --- /dev/null +++ b/pr-preview/pr-214/hello-world/vue/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "@vue/tsconfig/tsconfig.web.json", + "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], + "allowJs": true, + "compilerOptions": { + "baseUrl": ".", + "ignoreDeprecations": "5.0", + "paths": { + "@/*": ["./src/*"] + } + }, + + "references": [ + { + "path": "./tsconfig.config.json" + } + ] +} diff --git a/pr-preview/pr-214/hello-world/vue/vite.config.ts b/pr-preview/pr-214/hello-world/vue/vite.config.ts new file mode 100644 index 00000000..7677e967 --- /dev/null +++ b/pr-preview/pr-214/hello-world/vue/vite.config.ts @@ -0,0 +1,15 @@ +import { fileURLToPath, URL } from 'node:url' + +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [vue()], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + }, + }, + base: "./" +}) diff --git a/pr-preview/pr-214/hello-world/webview/android/.gitignore b/pr-preview/pr-214/hello-world/webview/android/.gitignore new file mode 100644 index 00000000..aa724b77 --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/pr-preview/pr-214/hello-world/webview/android/README.md b/pr-preview/pr-214/hello-world/webview/android/README.md new file mode 100644 index 00000000..041ab8df --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/README.md @@ -0,0 +1,13 @@ +# Hello-world for Android WebView - Dynamsoft Barcode Reader Sample + +This sample demonstrates how to use the [Dynamsoft Barcode Reader](https://www.dynamsoft.com/barcode-reader/overview/) JS Edition in Android. + +If you want to learn how to use the Android Edition SDK in javascript, you can check [Android WebView Barcode Scanning](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/v9.x/android/JavaScript/WebViewBarcodeScanning). + +> Note: +> +> This guide uses DBR JS version 9. An updated guide for DBR JS version 10 is in progress and will be coming soon! + +## Support + +If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/.gitignore b/pr-preview/pr-214/hello-world/webview/android/app/.gitignore new file mode 100644 index 00000000..42afabfd --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/build.gradle b/pr-preview/pr-214/hello-world/webview/android/app/build.gradle new file mode 100644 index 00000000..33d838de --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/app/build.gradle @@ -0,0 +1,45 @@ +plugins { + id 'com.android.application' + id 'org.jetbrains.kotlin.android' +} + +android { + namespace 'com.dynamsoft.dbrjswebview' + compileSdk 33 + + defaultConfig { + applicationId "com.dynamsoft.dbrjswebview" + minSdk 19 + targetSdk 33 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = '1.8' + } +} + +dependencies { + + implementation 'androidx.core:core-ktx:1.7.0' + implementation 'androidx.appcompat:appcompat:1.4.1' + implementation 'com.google.android.material:material:1.5.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' + implementation 'androidx.webkit:webkit:1.4.0' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' +} \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/proguard-rules.pro b/pr-preview/pr-214/hello-world/webview/android/app/proguard-rules.pro new file mode 100644 index 00000000..481bb434 --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/AndroidManifest.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..f557697e --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html b/pr-preview/pr-214/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html new file mode 100644 index 00000000..f06a33b2 --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html @@ -0,0 +1,80 @@ + + + + + + + + + Dynamsoft Barcode Reader Sample - Hello World (Decoding via Camera) + + + +

Hello World (Decode via Camera)

+
+ Results:
+
+ + + + diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt b/pr-preview/pr-214/hello-world/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt new file mode 100644 index 00000000..8ecaf703 --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt @@ -0,0 +1,105 @@ +package com.dynamsoft.dbrjswebview + +import android.Manifest +import android.annotation.SuppressLint +import android.content.pm.PackageManager +import android.net.Uri +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.webkit.* +import androidx.activity.result.contract.ActivityResultContracts +import androidx.annotation.RequiresApi +import androidx.core.content.ContextCompat +import androidx.webkit.WebViewAssetLoader +import androidx.webkit.WebViewClientCompat + +class MainActivity : AppCompatActivity() { + @SuppressLint("SetJavaScriptEnabled") + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + + val myWebView: WebView = findViewById(R.id.webview) + myWebView.settings.javaScriptEnabled = true + myWebView.settings.mediaPlaybackRequiresUserGesture = false + myWebView.settings.domStorageEnabled = true + + myWebView.webViewClient = MyWebViewClient() + myWebView.webChromeClient = MyWebChromeClient() + + myWebView.loadUrl("https://appassets.androidplatform.net/assets/decodeBarcodeInVideo.html") + } + + // Warning: If you use online url, you don't need `LocalContentWebViewClient` + // Refer: https://developer.android.com/develop/ui/views/layout/webapps/load-local-content?hl=en + private inner class MyWebViewClient : WebViewClientCompat() { + + private val assetLoader = WebViewAssetLoader.Builder() + .addPathHandler("/assets/", WebViewAssetLoader.AssetsPathHandler(this@MainActivity)) + .build() + + @RequiresApi(21) + override fun shouldInterceptRequest( + view: WebView, + request: WebResourceRequest + ): WebResourceResponse? { + return assetLoader.shouldInterceptRequest(request.url) + } + + // to support API < 21 + @Deprecated("Deprecated in Java") + override fun shouldInterceptRequest( + view: WebView, + url: String + ): WebResourceResponse? { + return assetLoader.shouldInterceptRequest(Uri.parse(url)) + } + } + + var cameraPermissionReq: PermissionRequest? = null + private inner class MyWebChromeClient : WebChromeClient() { + @RequiresApi(21) + override fun onPermissionRequest(request: PermissionRequest) { + if(request.resources.contains(PermissionRequest.RESOURCE_VIDEO_CAPTURE)){ + // Refer: https://developer.android.com/training/permissions/requesting + if(ContextCompat.checkSelfPermission( + this@MainActivity, + Manifest.permission.CAMERA + ) == PackageManager.PERMISSION_GRANTED){ + // You can use the API that requires the permission. + request.grant(arrayOf(PermissionRequest.RESOURCE_VIDEO_CAPTURE)) + }else{ + // You can directly ask for the permission. + // The registered ActivityResultCallback gets the result of this request. + this@MainActivity.cameraPermissionReq = request + requestCameraPermissionLauncher.launch(Manifest.permission.CAMERA) + } + }else{ + request.deny() + } + } + } + + // Refer: https://developer.android.com/training/permissions/requesting + @RequiresApi(21) + val requestCameraPermissionLauncher = registerForActivityResult( + ActivityResultContracts.RequestPermission() + ) { isGranted: Boolean -> + // Refer: https://www.dynamsoft.com/codepool/use-barcode-scanner-in-android-webview.html#set-up-webview + this@MainActivity.runOnUiThread { + if (isGranted) { + // Permission is granted. Continue the action or workflow in your + // app. + cameraPermissionReq?.grant(arrayOf(PermissionRequest.RESOURCE_VIDEO_CAPTURE)) + } else { + // Explain to the user that the feature is unavailable because the + // feature requires a permission that the user has denied. At the + // same time, respect the user's decision. Don't link to system + // settings in an effort to convince the user to change their + // decision. + cameraPermissionReq?.deny() + } + cameraPermissionReq = null + } + } +} \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 00000000..2b068d11 --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/drawable/ic_launcher_background.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 00000000..07d5da9c --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/layout/activity_main.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/layout/activity_main.xml new file mode 100644 index 00000000..7b58479b --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..eca70cfe --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 00000000..eca70cfe --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml new file mode 100644 index 00000000..6f3b755b --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..c209e78ecd372343283f4157dcfd918ec5165bb3 GIT binary patch literal 1404 zcmV-?1%vuhNk&F=1pok7MM6+kP&il$0000G0000-002h-06|PpNX!5L00Dqw+t%{r zzW2vH!KF=w&cMnnN@{whkTw+#mAh0SV?YL=)3MimFYCWp#fpdtz~8$hD5VPuQgtcN zXl<@<#Cme5f5yr2h%@8TWh?)bSK`O z^Z@d={gn7J{iyxL_y_%J|L>ep{dUxUP8a{byupH&!UNR*OutO~0{*T4q5R6@ApLF! z5{w?Z150gC7#>(VHFJZ-^6O@PYp{t!jH(_Z*nzTK4 zkc{fLE4Q3|mA2`CWQ3{8;gxGizgM!zccbdQoOLZc8hThi-IhN90RFT|zlxh3Ty&VG z?Fe{#9RrRnxzsu|Lg2ddugg7k%>0JeD+{XZ7>Z~{=|M+sh1MF7~ zz>To~`~LVQe1nNoR-gEzkpe{Ak^7{{ZBk2i_<+`Bq<^GB!RYG+z)h;Y3+<{zlMUYd zrd*W4w&jZ0%kBuDZ1EW&KLpyR7r2=}fF2%0VwHM4pUs}ZI2egi#DRMYZPek*^H9YK zay4Iy3WXFG(F14xYsoDA|KXgGc5%2DhmQ1gFCkrgHBm!lXG8I5h*uf{rn48Z!_@ z4Bk6TJAB2CKYqPjiX&mWoW>OPFGd$wqroa($ne7EUK;#3VYkXaew%Kh^3OrMhtjYN?XEoY`tRPQsAkH-DSL^QqyN0>^ zmC>{#F14jz4GeW{pJoRpLFa_*GI{?T93^rX7SPQgT@LbLqpNA}<@2wH;q493)G=1Y z#-sCiRNX~qf3KgiFzB3I>4Z%AfS(3$`-aMIBU+6?gbgDb!)L~A)je+;fR0jWLL-Fu z4)P{c7{B4Hp91&%??2$v9iRSFnuckHUm}or9seH6 z>%NbT+5*@L5(I9j@06@(!{ZI?U0=pKn8uwIg&L{JV14+8s2hnvbRrU|hZCd}IJu7*;;ECgO%8_*W Kmw_-CKmY()leWbG literal 0 HcmV?d00001 diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..b2dfe3d1ba5cf3ee31b3ecc1ced89044a1f3b7a9 GIT binary patch literal 2898 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 literal 0 HcmV?d00001 diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..4f0f1d64e58ba64d180ce43ee13bf9a17835fbca GIT binary patch literal 982 zcmV;{11bDcNk&G_0{{S5MM6+kP&il$0000G0000l001ul06|PpNU8t;00Dqo+t#w^ z^1csucXz7-Qrhzl9HuHB%l>&>1tG2^vb*E&k^T3$FG1eQZ51g$uv4V+kI`0<^1Z@N zk?Jjh$olyC%l>)Xq;7!>{iBj&BjJ`P&$fsCfpve_epJOBkTF?nu-B7D!hO=2ZR}

C%4 zc_9eOXvPbC4kzU8YowIA8cW~Uv|eB&yYwAObSwL2vY~UYI7NXPvf3b+c^?wcs~_t{ ze_m66-0)^{JdOMKPwjpQ@Sna!*?$wTZ~su*tNv7o!gXT!GRgivP}ec?5>l1!7<(rT zds|8x(qGc673zrvYIz;J23FG{9nHMnAuP}NpAED^laz3mAN1sy+NXK)!6v1FxQ;lh zOBLA>$~P3r4b*NcqR;y6pwyhZ3_PiDb|%n1gGjl3ZU}ujInlP{eks-#oA6>rh&g+!f`hv#_%JrgYPu z(U^&XLW^QX7F9Z*SRPpQl{B%x)_AMp^}_v~?j7 zapvHMKxSf*Mtyx8I}-<*UGn3)oHd(nn=)BZ`d$lDBwq_GL($_TPaS{UeevT(AJ`p0 z9%+hQb6z)U9qjbuXjg|dExCLjpS8$VKQ55VsIC%@{N5t{NsW)=hNGI`J=x97_kbz@ E0Of=7!TQj4N+cqN`nQhxvX7dAV-`K|Ub$-q+H-5I?Tx0g9jWxd@A|?POE8`3b8fO$T))xP* z(X?&brZw({`)WU&rdAs1iTa0x6F@PIxJ&&L|dpySV!ID|iUhjCcKz(@mE z!x@~W#3H<)4Ae(4eQJRk`Iz3<1)6^m)0b_4_TRZ+cz#eD3f8V;2r-1fE!F}W zEi0MEkTTx}8i1{`l_6vo0(Vuh0HD$I4SjZ=?^?k82R51bC)2D_{y8mi_?X^=U?2|F{Vr7s!k(AZC$O#ZMyavHhlQ7 zUR~QXuH~#o#>(b$u4?s~HLF*3IcF7023AlwAYudn0FV~|odGH^05AYPEfR)8p`i{n zwg3zPVp{+wOsxKc>)(pMupKF!Y2HoUqQ3|Yu|8lwR=?5zZuhG6J?H`bSNk_wPoM{u zSL{c@pY7+c2kck>`^q1^^gR0QB7Y?KUD{vz-uVX~;V-rW)PDcI)$_UjgVV?S?=oLR zf4}zz{#*R_{LkiJ#0RdQLNC^2Vp%JPEUvG9ra2BVZ92(p9h7Ka@!yf9(lj#}>+|u* z;^_?KWdzkM`6gqPo9;;r6&JEa)}R3X{(CWv?NvgLeOTq$cZXqf7|sPImi-7cS8DCN zGf;DVt3Am`>hH3{4-WzH43Ftx)SofNe^-#|0HdCo<+8Qs!}TZP{HH8~z5n`ExcHuT zDL1m&|DVpIy=xsLO>8k92HcmfSKhflQ0H~9=^-{#!I1g(;+44xw~=* zxvNz35vfsQE)@)Zsp*6_GjYD};Squ83<_?^SbALb{a`j<0Gn%6JY!zhp=Fg}Ga2|8 z52e1WU%^L1}15Ex0fF$e@eCT(()_P zvV?CA%#Sy08_U6VPt4EtmVQraWJX` zh=N|WQ>LgrvF~R&qOfB$!%D3cGv?;Xh_z$z7k&s4N)$WYf*k=|*jCEkO19{h_(%W4 zPuOqbCw`SeAX*R}UUsbVsgtuG?xs(#Ikx9`JZoQFz0n*7ZG@Fv@kZk`gzO$HoA9kN z8U5{-yY zvV{`&WKU2$mZeoBmiJrEdzUZAv1sRxpePdg1)F*X^Y)zp^Y*R;;z~vOv-z&)&G)JQ{m!C9cmziu1^nHA z`#`0c>@PnQ9CJKgC5NjJD8HM3|KC(g5nnCq$n0Gsu_DXk36@ql%npEye|?%RmG)

FJ$wK}0tWNB{uH;AM~i literal 0 HcmV?d00001 diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..948a3070fe34c611c42c0d3ad3013a0dce358be0 GIT binary patch literal 1900 zcmV-y2b1_xNk&Fw2LJ$9MM6+kP&il$0000G0001A003VA06|PpNH75a00DqwTbm-~ zullQTcXxO9ki!OCRx^i?oR|n!<8G0=kI^!JSjFi-LL*`V;ET0H2IXfU0*i>o6o6Gy zRq6Ap5(_{XLdXcL-MzlN`ugSdZY_`jXhcENAu)N_0?GhF))9R;E`!bo9p?g?SRgw_ zEXHhFG$0{qYOqhdX<(wE4N@es3VIo$%il%6xP9gjiBri+2pI6aY4 zJbgh-Ud|V%3O!IcHKQx1FQH(_*TK;1>FQWbt^$K1zNn^cczkBs=QHCYZ8b&l!UV{K z{L0$KCf_&KR^}&2Fe|L&?1I7~pBENnCtCuH3sjcx6$c zwqkNkru);ie``q+_QI;IYLD9OV0ZxkuyBz|5<$1BH|vtey$> z5oto4=l-R-Aaq`Dk0}o9N0VrkqW_#;!u{!bJLDq%0092{Ghe=F;(kn} z+sQ@1=UlX30+2nWjkL$B^b!H2^QYO@iFc0{(-~yXj2TWz?VG{v`Jg zg}WyYnwGgn>{HFaG7E~pt=)sOO}*yd(UU-D(E&x{xKEl6OcU?pl)K%#U$dn1mDF19 zSw@l8G!GNFB3c3VVK0?uyqN&utT-D5%NM4g-3@Sii9tSXKtwce~uF zS&Jn746EW^wV~8zdQ1XC28~kXu8+Yo9p!<8h&(Q({J*4DBglPdpe4M_mD8AguZFn~ ztiuO~{6Bx?SfO~_ZV(GIboeR9~hAym{{fV|VM=77MxDrbW6`ujX z<3HF(>Zr;#*uCvC*bpoSr~C$h?_%nXps@A)=l_;({Fo#6Y1+Zv`!T5HB+)#^-Ud_; zBwftPN=d8Vx)*O1Mj+0oO=mZ+NVH*ptNDC-&zZ7Hwho6UQ#l-yNvc0Cm+2$$6YUk2D2t#vdZX-u3>-Be1u9gtTBiMB^xwWQ_rgvGpZ6(C@e23c!^K=>ai-Rqu zhqT`ZQof;9Bu!AD(i^PCbYV%yha9zuoKMp`U^z;3!+&d@Hud&_iy!O-$b9ZLcSRh? z)R|826w}TU!J#X6P%@Zh=La$I6zXa#h!B;{qfug}O%z@K{EZECu6zl)7CiNi%xti0 zB{OKfAj83~iJvmpTU|&q1^?^cIMn2RQ?jeSB95l}{DrEPTW{_gmU_pqTc)h@4T>~& zluq3)GM=xa(#^VU5}@FNqpc$?#SbVsX!~RH*5p0p@w z;~v{QMX0^bFT1!cXGM8K9FP+=9~-d~#TK#ZE{4umGT=;dfvWi?rYj;^l_Zxywze`W z^Cr{55U@*BalS}K%Czii_80e0#0#Zkhlij4-~I@}`-JFJ7$5{>LnoJSs??J8kWVl6|8A}RCGAu9^rAsfCE=2}tHwl93t0C?#+jMpvr7O3`2=tr{Hg$=HlnjVG^ewm|Js0J*kfPa6*GhtB>`fN!m#9J(sU!?(OSfzY*zS(FJ<-Vb zfAIg+`U)YaXv#sY(c--|X zEB+TVyZ%Ie4L$gi#Fc++`h6%vzsS$pjz9aLt+ZL(g;n$Dzy5=m=_TV(3H8^C{r0xd zp#a%}ht55dOq?yhwYPrtp-m1xXp;4X;)NhxxUpgP%XTLmO zcjaFva^}dP3$&sfFTIR_jC=2pHh9kpI@2(6V*GQo7Ws)`j)hd+tr@P~gR*2gO@+1? zG<`_tB+LJuF|SZ9tIec;h%}}6WClT`L>HSW?E{Hp1h^+mlbf_$9zA>!ug>NALJsO{ mU%z=YwVD?}XMya)Bp;vlyE5&E_6!fzx9pwrdz474!~g(M6R?N? literal 0 HcmV?d00001 diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..1b9a6956b3acdc11f40ce2bb3f6efbd845cc243f GIT binary patch literal 3918 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�(p-{x$&=IACIfoAR!za)F-^da-t3#0Dycnp zwO~NVXwXCl;jE<}>%@xz|=8fIJAB?>+E{7)|4l${4ngA3G|=r z2Dyv;VVWSgZx9Wj>qUjleGl3Ei9K4>h!(lPS%8VOG>Xu0%6VDz^O=bjJmuP7>DeUv zrbI}MlHB^^d?{zv6d=@_ZD2lg1&G7UjnVN{1}9WkaM3H~btX0GtSzB+tZ^qRgWo4m z!GmimlG$=wgXCnr6j@m<1gAL46#T~5Bnm=2{^@>|t&`9mkEPddj zAvG~@Tv~TAm2i%VW}R-g(Z0)z-Y|szHr@rk>4MAyG*Ma*7Yh#H7(!-5>DZ@8r;_dx z{prSe<>~099F8vsYd2xff7uAS%7{S)f(|@me3t2$iy&NEc7OUEchp@9A|X;;IA>8!oX+y(BKJ$EzV* znR$z;!L$s7uy@{OT~nG#B!NRraT8(X##Ho!0r_o@gg0CA-9H^;-uE&?$2$nHv_00o z%cbuUc-tCx$Uh&EZ4Nf4Zgqv)Y6>usG3>GeQnxx_Z6+PcbX-+ysbt1hQ`K1LDpOE? zrAhIZhSN9yVIAOa22gn577tbc&i3|3V8NWy&!tw##`}9*x}gtI^h1DzZRA>UuaJG) zaZ7j)dq!O}{?#8Y7~7i6fHh4{`pL?>-18|p!S75Y#^DM>-S3)vuZG+Q7l@ek zQP~#cBpWgg#mApc_sPYjpw8odQuRokmTkzcNl`^CcKB7e&;zViV;{Y{o^Y$%7i0m# z62%#1Lq!RC?}lK>%mp}T!3Xv;L*0v*>USLm``N%>w>@fwC+#T&Tx2bN4w(20JB}oU zuSa6v^kXi0xPs?pbaOHnyiqq6By1EZY9OZ^^QA>{q-Hsd&m`pbQ%8121aWG-F5xf zlZ%;B{;C>X19|`^_?dVyCq>n+41w7|!tUS!{9rHlbhX=SZO5CQ^;!Du_E7*`GiR^Q w)2!4MKjfSAeNo!9>IaV6aUZ*?W>} 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

UmY2RIYtNPVDpE$%vda+HD#3m z&VuXJ{BK&Qe+rBa7eq}Q(bq|tn(RrJAk|ztj2(i{d>nmQnM?;HF2k&9sA6up5tmjl z7lySlzMbifH17-m-Lwa_F&e7nOH?ESi3#ckR3tsM+jsck3`oG!uMS}|eAwVXv>}qxwq?QY%QJ0}r@^;fhuUA9W z*BVl>TGo&N004@xSiwDUXUvp51sVmqO3m)=B55aPwf@0=e}cN+$-BdKxY`YrT_4)0 z_d10#i44Q*rFr8MC>*)v$EJvz``(pb{e&*6k+b zsMz%($|1+8hn8c2?P(l@;Rb&CsZeYoCI3?2!LqjbwPXW3z4G$Qfj=cT5Yb%vY0(AX oeb?AaKtwrnc|$|zzw9vfvn^aJJ!zd)XFXqqy0000001=f@-~a#s literal 0 HcmV?d00001 diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values-night/themes.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values-night/themes.xml new file mode 100644 index 00000000..77300351 --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values-night/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values/colors.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values/colors.xml new file mode 100644 index 00000000..f8c6127d --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values/strings.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..5d77158e --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Dynamsoft Barcode + \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values/themes.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values/themes.xml new file mode 100644 index 00000000..e2ed77aa --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/xml/backup_rules.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/xml/backup_rules.xml new file mode 100644 index 00000000..fa0f996d --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/xml/backup_rules.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/xml/data_extraction_rules.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/xml/data_extraction_rules.xml new file mode 100644 index 00000000..9ee9997b --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/xml/data_extraction_rules.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/build.gradle b/pr-preview/pr-214/hello-world/webview/android/build.gradle new file mode 100644 index 00000000..ab2b874f --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/build.gradle @@ -0,0 +1,6 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +plugins { + id 'com.android.application' version '7.4.2' apply false + id 'com.android.library' version '7.4.2' apply false + id 'org.jetbrains.kotlin.android' version '1.8.0' apply false +} \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/gradle.properties b/pr-preview/pr-214/hello-world/webview/android/gradle.properties new file mode 100644 index 00000000..3c5031eb --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/gradle.properties @@ -0,0 +1,23 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official +# Enables namespacing of each library's R class so that its R class includes only the +# resources declared in the library itself and none from the library's dependencies, +# thereby reducing the size of the R class for that library +android.nonTransitiveRClass=true \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/gradle/wrapper/gradle-wrapper.jar b/pr-preview/pr-214/hello-world/webview/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f GIT binary patch literal 59203 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

K7UpUK$>l@ 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 E2O(~oYXATM literal 0 HcmV?d00001 diff --git a/pr-preview/pr-214/hello-world/webview/android/gradle/wrapper/gradle-wrapper.properties b/pr-preview/pr-214/hello-world/webview/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..dea1f353 --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Thu Apr 13 17:46:19 CST 2023 +distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/pr-preview/pr-214/hello-world/webview/android/gradlew b/pr-preview/pr-214/hello-world/webview/android/gradlew new file mode 100644 index 00000000..4f906e0c --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/pr-preview/pr-214/hello-world/webview/android/gradlew.bat b/pr-preview/pr-214/hello-world/webview/android/gradlew.bat new file mode 100644 index 00000000..107acd32 --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/pr-preview/pr-214/hello-world/webview/android/settings.gradle b/pr-preview/pr-214/hello-world/webview/android/settings.gradle new file mode 100644 index 00000000..e5f9d85d --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/android/settings.gradle @@ -0,0 +1,16 @@ +pluginManagement { + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + } +} +rootProject.name = "Dynamsoft Barcode" +include ':app' diff --git a/pr-preview/pr-214/hello-world/webview/ios/.gitignore b/pr-preview/pr-214/hello-world/webview/ios/.gitignore new file mode 100644 index 00000000..ba1ff083 --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/ios/.gitignore @@ -0,0 +1,90 @@ +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## User settings +xcuserdata/ + +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 + +## Obj-C/Swift specific +*.hmap + +## App packaging +*.ipa +*.dSYM.zip +*.dSYM + +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager +# +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. +# Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + +.build/ + +# CocoaPods +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# +# Pods/ +# +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace + +# Carthage +# +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build/ + +# Accio dependency management +Dependencies/ +.accio/ + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/#source-control + +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/ios/README.md b/pr-preview/pr-214/hello-world/webview/ios/README.md new file mode 100644 index 00000000..f1d6f0cc --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/ios/README.md @@ -0,0 +1,13 @@ +# Hello-world for iOS WKWebView - Dynamsoft Barcode Reader Sample + +This sample demonstrates how to use the [Dynamsoft Barcode Reader](https://www.dynamsoft.com/barcode-reader/overview/) JS Edition in iOS(Swift). + +If you want to learn how to use the iOS Edition SDK in javascript, you can check [iOS WebView Barcode Scanning](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/v9.x/ios/JavaScript/WebViewBarcodeScanning) + +> Note: +> +> This guide uses DBR JS version 9. An updated guide for DBR JS version 10 is in progress and will be coming soon! + +## Support + +If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview.xcodeproj/project.pbxproj b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview.xcodeproj/project.pbxproj new file mode 100644 index 00000000..7f7ce301 --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview.xcodeproj/project.pbxproj @@ -0,0 +1,373 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 68309E9F29F28D950016A358 /* html in Resources */ = {isa = PBXBuildFile; fileRef = 68309E9E29F28D950016A358 /* html */; }; + 68A0A94529EE855E00DC7D57 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68A0A94429EE855E00DC7D57 /* AppDelegate.swift */; }; + 68A0A94729EE855E00DC7D57 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68A0A94629EE855E00DC7D57 /* SceneDelegate.swift */; }; + 68A0A94929EE855E00DC7D57 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68A0A94829EE855E00DC7D57 /* ViewController.swift */; }; + 68A0A94C29EE855E00DC7D57 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 68A0A94A29EE855E00DC7D57 /* Main.storyboard */; }; + 68A0A94E29EE856100DC7D57 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 68A0A94D29EE856100DC7D57 /* Assets.xcassets */; }; + 68A0A95129EE856100DC7D57 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 68A0A94F29EE856100DC7D57 /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 68309E9E29F28D950016A358 /* html */ = {isa = PBXFileReference; lastKnownFileType = folder; path = html; sourceTree = ""; }; + 68A0A94129EE855E00DC7D57 /* dbrjswebview.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = dbrjswebview.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 68A0A94429EE855E00DC7D57 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 68A0A94629EE855E00DC7D57 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 68A0A94829EE855E00DC7D57 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 68A0A94B29EE855E00DC7D57 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 68A0A94D29EE856100DC7D57 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 68A0A95029EE856100DC7D57 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 68A0A95229EE856100DC7D57 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 68A0A93E29EE855E00DC7D57 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 68A0A93829EE855E00DC7D57 = { + isa = PBXGroup; + children = ( + 68A0A94329EE855E00DC7D57 /* dbrjswebview */, + 68A0A94229EE855E00DC7D57 /* Products */, + ); + sourceTree = ""; + }; + 68A0A94229EE855E00DC7D57 /* Products */ = { + isa = PBXGroup; + children = ( + 68A0A94129EE855E00DC7D57 /* dbrjswebview.app */, + ); + name = Products; + sourceTree = ""; + }; + 68A0A94329EE855E00DC7D57 /* dbrjswebview */ = { + isa = PBXGroup; + children = ( + 68309E9E29F28D950016A358 /* html */, + 68A0A94429EE855E00DC7D57 /* AppDelegate.swift */, + 68A0A94629EE855E00DC7D57 /* SceneDelegate.swift */, + 68A0A94829EE855E00DC7D57 /* ViewController.swift */, + 68A0A94A29EE855E00DC7D57 /* Main.storyboard */, + 68A0A94D29EE856100DC7D57 /* Assets.xcassets */, + 68A0A94F29EE856100DC7D57 /* LaunchScreen.storyboard */, + 68A0A95229EE856100DC7D57 /* Info.plist */, + ); + path = dbrjswebview; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 68A0A94029EE855E00DC7D57 /* dbrjswebview */ = { + isa = PBXNativeTarget; + buildConfigurationList = 68A0A95529EE856100DC7D57 /* Build configuration list for PBXNativeTarget "dbrjswebview" */; + buildPhases = ( + 68A0A93D29EE855E00DC7D57 /* Sources */, + 68A0A93E29EE855E00DC7D57 /* Frameworks */, + 68A0A93F29EE855E00DC7D57 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = dbrjswebview; + productName = dbrjswebview; + productReference = 68A0A94129EE855E00DC7D57 /* dbrjswebview.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 68A0A93929EE855E00DC7D57 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1400; + LastUpgradeCheck = 1400; + TargetAttributes = { + 68A0A94029EE855E00DC7D57 = { + CreatedOnToolsVersion = 14.0.1; + }; + }; + }; + buildConfigurationList = 68A0A93C29EE855E00DC7D57 /* Build configuration list for PBXProject "dbrjswebview" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 68A0A93829EE855E00DC7D57; + productRefGroup = 68A0A94229EE855E00DC7D57 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 68A0A94029EE855E00DC7D57 /* dbrjswebview */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 68A0A93F29EE855E00DC7D57 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 68A0A95129EE856100DC7D57 /* LaunchScreen.storyboard in Resources */, + 68309E9F29F28D950016A358 /* html in Resources */, + 68A0A94E29EE856100DC7D57 /* Assets.xcassets in Resources */, + 68A0A94C29EE855E00DC7D57 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 68A0A93D29EE855E00DC7D57 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 68A0A94929EE855E00DC7D57 /* ViewController.swift in Sources */, + 68A0A94529EE855E00DC7D57 /* AppDelegate.swift in Sources */, + 68A0A94729EE855E00DC7D57 /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 68A0A94A29EE855E00DC7D57 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 68A0A94B29EE855E00DC7D57 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 68A0A94F29EE856100DC7D57 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 68A0A95029EE856100DC7D57 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 68A0A95329EE856100DC7D57 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 68A0A95429EE856100DC7D57 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 68A0A95629EE856100DC7D57 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = KK22Q4GV82; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = dbrjswebview/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = DyBarcode; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UIStatusBarStyle = ""; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + IPHONEOS_DEPLOYMENT_TARGET = 14.3; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.dynamsoft.dbrjswebview; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 68A0A95729EE856100DC7D57 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = KK22Q4GV82; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = dbrjswebview/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = DyBarcode; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UIStatusBarStyle = ""; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + IPHONEOS_DEPLOYMENT_TARGET = 14.3; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.dynamsoft.dbrjswebview; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 68A0A93C29EE855E00DC7D57 /* Build configuration list for PBXProject "dbrjswebview" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 68A0A95329EE856100DC7D57 /* Debug */, + 68A0A95429EE856100DC7D57 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 68A0A95529EE856100DC7D57 /* Build configuration list for PBXNativeTarget "dbrjswebview" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 68A0A95629EE856100DC7D57 /* Debug */, + 68A0A95729EE856100DC7D57 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 68A0A93929EE855E00DC7D57 /* Project object */; +} diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/AppDelegate.swift b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/AppDelegate.swift new file mode 100644 index 00000000..ad05d455 --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/AppDelegate.swift @@ -0,0 +1,36 @@ +// +// AppDelegate.swift +// dbrjswebview +// +// Created by Dynamsoft on 2023/4/18. +// + +import UIKit + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { + + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + // MARK: UISceneSession Lifecycle + + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } + + +} + diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 00000000..eb878970 --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..13613e3e --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Assets.xcassets/Contents.json b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..865e9329 --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Base.lproj/Main.storyboard b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Base.lproj/Main.storyboard new file mode 100644 index 00000000..85dc8abf --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Base.lproj/Main.storyboard @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Info.plist b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Info.plist new file mode 100644 index 00000000..93bb4788 --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Info.plist @@ -0,0 +1,27 @@ + + + + + NSCameraUsageDescription + Decoding barcodes from video needs to access your camera. + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + + diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/SceneDelegate.swift b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/SceneDelegate.swift new file mode 100644 index 00000000..0860c7e6 --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/SceneDelegate.swift @@ -0,0 +1,52 @@ +// +// SceneDelegate.swift +// dbrjswebview +// +// Created by Dynamsoft on 2023/4/18. +// + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + guard let _ = (scene as? UIWindowScene) else { return } + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } + + +} + diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/ViewController.swift b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/ViewController.swift new file mode 100644 index 00000000..183e95bc --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/ViewController.swift @@ -0,0 +1,106 @@ +// +// ViewController.swift +// dbrjswebview +// +// Created by Dynamsoft on 2023/4/18. +// + +import UIKit +import WebKit + +// Refer: https://developer.apple.com/documentation/webkit/viewing_desktop_or_mobile_web_content_using_a_web_view +class ViewController: UIViewController, WKUIDelegate { + + let webView: WKWebView + + required init?(coder: NSCoder) { + print("entered init") + let configuration = WKWebViewConfiguration() + configuration.allowsInlineMediaPlayback = true + configuration.mediaTypesRequiringUserActionForPlayback = [] + // Refer: https://stackoverflow.com/a/51736967 + configuration.websiteDataStore = WKWebsiteDataStore.default() + webView = WKWebView(frame: .init(), configuration: configuration) + + super.init(coder: coder) + } + + // Refer: https://www.hackingwithswift.com/articles/112/the-ultimate-guide-to-wkwebview + override func loadView() { + self.view = webView + } + + override func viewDidLoad() { + super.viewDidLoad() + print("entered viewDidLoad") + // Do any additional setup after loading the view. + + // Refer: https://stackoverflow.com/a/40316507 + webView.uiDelegate = self + + //let url = URL(string: "https://your.online.website/target/page.html")! + //webView.load(URLRequest(url: url)) + + // load local html + let fileUrl = Bundle.main.url(forResource: "html/decodeFileInVideo", withExtension: "html")! + webView.loadFileURL(fileUrl, allowingReadAccessTo: fileUrl) + print("finish viewDidLoad") + } + + // Refer: https://stackoverflow.com/a/40316507 + + func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, + completionHandler: @escaping () -> Void) { + + let alertController = UIAlertController(title: nil, message: message, preferredStyle: .actionSheet) + alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in + completionHandler() + })) + + present(alertController, animated: true, completion: nil) + } + + + func webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, + completionHandler: @escaping (Bool) -> Void) { + + let alertController = UIAlertController(title: nil, message: message, preferredStyle: .actionSheet) + + alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in + completionHandler(true) + })) + + alertController.addAction(UIAlertAction(title: "Cancel", style: .default, handler: { (action) in + completionHandler(false) + })) + + present(alertController, animated: true, completion: nil) + } + + + func webView(_ webView: WKWebView, runJavaScriptTextInputPanelWithPrompt prompt: String, defaultText: String?, initiatedByFrame frame: WKFrameInfo, + completionHandler: @escaping (String?) -> Void) { + + let alertController = UIAlertController(title: nil, message: prompt, preferredStyle: .actionSheet) + + alertController.addTextField { (textField) in + textField.text = defaultText + } + + alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in + if let text = alertController.textFields?.first?.text { + completionHandler(text) + } else { + completionHandler(defaultText) + } + })) + + alertController.addAction(UIAlertAction(title: "Cancel", style: .default, handler: { (action) in + completionHandler(nil) + })) + + present(alertController, animated: true, completion: nil) + } + +} + diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html new file mode 100644 index 00000000..1aef1f18 --- /dev/null +++ b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html @@ -0,0 +1,80 @@ + + + + + + + + + Dynamsoft Barcode Reader Sample - Hello World (Decoding via Camera) + + + +

Hello World (Decode via Camera)

+
+ Results: +
+
+ + + + diff --git a/pr-preview/pr-214/index.html b/pr-preview/pr-214/index.html new file mode 100644 index 00000000..dfae4812 --- /dev/null +++ b/pr-preview/pr-214/index.html @@ -0,0 +1,355 @@ + + + + + + + + + + + Dynamsoft Barcode Reader Samples + + + + + + + + + + diff --git a/pr-preview/pr-214/logo-dynamsoft-black.svg b/pr-preview/pr-214/logo-dynamsoft-black.svg new file mode 100644 index 00000000..c4931144 --- /dev/null +++ b/pr-preview/pr-214/logo-dynamsoft-black.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pr-preview/pr-214/others/debug/.gitignore b/pr-preview/pr-214/others/debug/.gitignore new file mode 100644 index 00000000..92a9c93f --- /dev/null +++ b/pr-preview/pr-214/others/debug/.gitignore @@ -0,0 +1,9 @@ +# dependencies +/node_modules + +# collected images +/public/collect + +# others + +*.lock diff --git a/pr-preview/pr-214/others/debug/README.md b/pr-preview/pr-214/others/debug/README.md new file mode 100644 index 00000000..c89ff33a --- /dev/null +++ b/pr-preview/pr-214/others/debug/README.md @@ -0,0 +1,57 @@ +# Debug Sample + +This sample is designed to: + +1. Print detailed logs in the browser console to better assist in troubleshooting. On your mobile browser, you can click the tool icon to open the console (provided by eruda.js). +2. Check if your device and browser are compatible with the camera and to what extent. +3. Collect video frames for analysis. (Require to host the sample locally) + +You can directly debug 1 and 2 in this link: [https://dynamsoft.github.io/barcode-reader-javascript-samples/others/debug/public/index.html](https://dynamsoft.github.io/barcode-reader-javascript-samples/others/debug/public/index.html) + +Item 3 we will introduce in detail. + +## Collect the video frames for analysis + +Barcode reading is a one-time job, the application either succeeds or fails to read the barcode(s). For the failed scenario, it's possible to make them successful by adjusting the settings provided by the Dynamsoft Capture Vision Router JavaScript SDK. However, adjusting the settings could be a bit overwhelming. Therefore, Dynamsoft offers the debug sample that enables customers to capture and save runtime video frames for sending to the Dynamsoft team. With the original images, the team can test and optimize settings for customers. + +The following shows how to host the sample and collect frames. + +### Download the sample + +The sample can be downloaded from + +Debug Sample on GitHub + +Note that the entire folder is required. To download only the files in this folder, try using "https://downgit.github.io/#/home". + +### Set up a local server + +Since the video is usually playing on mobile devices, having these frames uploaded to a self-hosted local server is most convenient, therefore, we first need to set up a local server. + +We make use of the web server that comes with [Express](https://expressjs.com/). + +* Install dependencies + +Run the following script to install all dependencies. + +`npm install` + +* Start the server + +We defined the web server logic in the file "app.js", to start it, run the following script: + +`node app.js` + +Note that we have used self-signed certificates to enable SSL on the port 4443. + +### Use the sample page + +Once the server is up and running, open the page on the device that will do the barcode reading. The URL for the sample is "https://{your-local-ip}:4443/". For example, suppose your ip is 192.168.1.1, the site can be visited at [https://192.168.1.1:4443/](https://192.168.1.1:4443/). + +> Note that the device should be in the same WiFi network as the server machine. + +You will see a warning due to self-signing. Please ignore and keep processing. + +Click the button "start capturing" and try to read barcodes, the frames will then be uploaded to the folder "debug\public\collect" as images (.png) on the server. When you have collected enough frames, please click "stop capturing", otherwise, new frames will continue to flood in. + +Check the images to make sure that they correctly represent the actual usage scenario, then zip and send them to Dynamsoft for technical assistance. diff --git a/pr-preview/pr-214/others/debug/app.js b/pr-preview/pr-214/others/debug/app.js new file mode 100644 index 00000000..bd09d818 --- /dev/null +++ b/pr-preview/pr-214/others/debug/app.js @@ -0,0 +1,43 @@ +const express = require('express'); +const fs = require('fs'); +const https = require('https'); +const cors = require('cors'); +const util = require('util'); +const path = require('path'); +const multer = require('multer'); + +const app = express(); +// Access-Control-Allow-Origin: **any** +app.use(cors({ + origin: (origin, callback) => { + return callback(null, true); + } +})); + +// collect images +const dirCollect = path.join(__dirname, 'public/collect'); +if(!fs.existsSync(dirCollect)){ + fs.mkdirSync(dirCollect); +} +const collect = multer({ storage: multer.diskStorage({ + destination: (req, file, cb) => { + cb(null, dirCollect); + }, + filename: (req, file, cb) => { + cb(null, Date.now()+'.png'); + } +}) });//dest: path.join(__dirname, 'public/collect') +app.post('/collect', collect.any(), async(req, res) => { + res.send(util.inspect(req.files,{depth:null})); +}); + +// static files +app.use(express.static(path.join(__dirname, 'public'))); + +let httpsServer = https.createServer({ + key: fs.readFileSync(path.join(__dirname, 'pem/ryans-key.pem')), + cert: fs.readFileSync(path.join(__dirname, 'pem/ryans-cert.pem')) +}, app); + +let httpsPort = 4443; +httpsServer.listen(httpsPort, () => console.log('Page is available in https://localhost:'+httpsPort+'/')); diff --git a/pr-preview/pr-214/others/debug/package.json b/pr-preview/pr-214/others/debug/package.json new file mode 100644 index 00000000..9eec8064 --- /dev/null +++ b/pr-preview/pr-214/others/debug/package.json @@ -0,0 +1,16 @@ +{ + "name": "collect-img", + "version": "1.2.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "cors": "^2.8.5", + "express": "^4.17.1", + "multer": "^1.4.2" + } +} diff --git a/pr-preview/pr-214/others/debug/pem/ryans-cert.pem b/pr-preview/pr-214/others/debug/pem/ryans-cert.pem new file mode 100644 index 00000000..6939a9c0 --- /dev/null +++ b/pr-preview/pr-214/others/debug/pem/ryans-cert.pem @@ -0,0 +1,13 @@ +-----BEGIN CERTIFICATE----- +MIICDDCCAXUCFGlprxUW7YsQSmqXwS3fjySQwexCMA0GCSqGSIb3DQEBCwUAMEUx +CzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRl +cm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMjAwMTE3MDE0OTM0WhcNMjAwMjE2MDE0 +OTM0WjBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UE +CgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GN +ADCBiQKBgQCt3L/syEyB8B9O8Xhf3/SJOfTsoSs+3+/ELvFd07QEP0mySRjh9hUL +BjB1bWJXBshn9JBzlfGUjRtNkc54VF1JfjFgi7UzqqyAlAwfEMBbp8jUX1Hh9iU7 +ctTAHxcAicTWTkRmToXJBUhbgTH+eF/GfQTdnByrncprQfuqdPg2KwIDAQABMA0G +CSqGSIb3DQEBCwUAA4GBAKRRbXBhTS95IimKoIZq3RtVrjXpcsBn5ncyvFULc6Y5 +OkOxum5TO++XHVOJyalqyWpAQuz6i348hxTW6wqt5Js0UPGLGIb4Kq965QKKT+yJ +WnHOnzZzJxiTs/1uGFjPAKgdvuDhcx36YsvSQ/UnJvF0rttjLKOGI5SkFMgz1Ufz +-----END CERTIFICATE----- diff --git a/pr-preview/pr-214/others/debug/pem/ryans-csr.pem b/pr-preview/pr-214/others/debug/pem/ryans-csr.pem new file mode 100644 index 00000000..71cc8492 --- /dev/null +++ b/pr-preview/pr-214/others/debug/pem/ryans-csr.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIBhDCB7gIBADBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEh +MB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEB +AQUAA4GNADCBiQKBgQCt3L/syEyB8B9O8Xhf3/SJOfTsoSs+3+/ELvFd07QEP0my +SRjh9hULBjB1bWJXBshn9JBzlfGUjRtNkc54VF1JfjFgi7UzqqyAlAwfEMBbp8jU +X1Hh9iU7ctTAHxcAicTWTkRmToXJBUhbgTH+eF/GfQTdnByrncprQfuqdPg2KwID +AQABoAAwDQYJKoZIhvcNAQELBQADgYEAgwEY90gQQzxIonWEgDxGRBHxSk0h3UE4 +rTP3JggV6h0vXMndOrDXC2qrh20fJaWIHqbBtmfOF4NmPhQTSZOZ2fIjPBeHZqLq +8+K9iZPeyjnVIRyWkXfCPacoddTw2FcykRobgL6Wi/RoldutOnIDlTawo5Y/eXvm +JI0428mqYU4= +-----END CERTIFICATE REQUEST----- diff --git a/pr-preview/pr-214/others/debug/pem/ryans-key.pem b/pr-preview/pr-214/others/debug/pem/ryans-key.pem new file mode 100644 index 00000000..bf0ff875 --- /dev/null +++ b/pr-preview/pr-214/others/debug/pem/ryans-key.pem @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQCt3L/syEyB8B9O8Xhf3/SJOfTsoSs+3+/ELvFd07QEP0mySRjh +9hULBjB1bWJXBshn9JBzlfGUjRtNkc54VF1JfjFgi7UzqqyAlAwfEMBbp8jUX1Hh +9iU7ctTAHxcAicTWTkRmToXJBUhbgTH+eF/GfQTdnByrncprQfuqdPg2KwIDAQAB +AoGAO6O6zm2TGQuWoczhPvoi9yPDaZyLqiDFLaXws//YA5D2Jcs/VtvEMijoXI+u +KS4xdr+FAbFQ0mVpFT3L9qjx6p/lSVKzJ1tlVlp7klJzK0VOWmMojLrhsstp44ah +jZQdxcnlEDgeBwXj5m09fr7YFfIiyHef+r9ORqn00F7K+xkCQQDhy5k00dsfL5MY +oy70Ikb70n90qktnFXrgsgEeojG0j0OmJUdNLV6gXbkD4lEeh6iK5XdAEuso+Qw1 +5Ksa3d11AkEAxR6yMXPIbl+4y24TbIGAZwb44Lyn9DAnLm5qgFvMgJARz+kqlYyr +tpZ6cD1JY3fuF+umDlNPYzxGxy3kz/sxHwJBAJNiLDzYBmmSyjc4vPtKLH9PZTan +udQtpylnx2dRg5RSN1wJ1ULBLJUM2Cl63mxJLHCNW4uNTcZO2fOLsUw2KckCQBFp +dboSjSjawbsOfR6/jbUME53ebEOQoVVjoXq3IShWEYy4/u743w4g2q3hbAMiS+DH +CwMG7uNIJsRfVG/es2cCQD7R6ebztt858vYZzfLMLMsJTF2YQs1YG91x76lZLhNp +tcTTENHD4g9v/Q5MV+fhN0UuJ2ikrXULAgDmJMvAVyk= +-----END RSA PRIVATE KEY----- diff --git a/pr-preview/pr-214/others/debug/public/index.html b/pr-preview/pr-214/others/debug/public/index.html new file mode 100644 index 00000000..7553792a --- /dev/null +++ b/pr-preview/pr-214/others/debug/public/index.html @@ -0,0 +1,228 @@ + + + + + + + + Dynamsoft Barcode Reader Sample - Debug + + + +

Read Barcodes from Camera - Debug

+ + +

+ + + +

+ +
+
+ + + + + diff --git a/pr-preview/pr-214/use-case/README.md b/pr-preview/pr-214/use-case/README.md new file mode 100644 index 00000000..0f98c3e5 --- /dev/null +++ b/pr-preview/pr-214/use-case/README.md @@ -0,0 +1,44 @@ +## Read Barcodes and Fill Form Fields + +It's difficult to type long text on mobile devices, but if that text is encoded in a barcode, we can use the SDK to read the barcode and automatically enter the text. + +The following sample demonstrates how to utilize the SDK to fill out form fields. + +* Read Barcodes and Fill Form Fields - Demo +* Read Barcodes and Fill Form Fields - Source Code + +## Read the PDF417 Barcode on the Driver's License + +The PDF417 barcode on an AAMVA-compatible driver's license contains information encoded following the DL/ID Card Design Standard. Together with a simple parse function, we can use the SDK to read and extract the information. + +The following official sample shows how to use the SDK to read and extract driver's license information. + +* Read the PDF417 Barcode on the Driver's License - Demo +* Read the PDF417 Barcode on the Driver's License - Source Code + +Also, see [Driver's License Scanner SDK for Mobile and Web](https://www.dynamsoft.com/use-cases/driver-license/). + +## Read barcodes via camera and show result texts on the video + +When the SDK picks up a barcode in a video stream, it will automatically highlight it with a built-in style. But it is also possible to show the barcode text on the video with the help of the function `convertToPageCoordinates()` or `convertToClientCoordinates()`. + +The following official sample shows how to show the result texts on the video. + +* Read barcodes via camera and show result texts on the video - Demo +* Read barcodes via camera and show result texts on the video - Source Code + +## Locate an Item via Barcode + +Searching for a specific item among numerous identical boxes can be challenging. However, with the Dynamsoft Barcode Reader (DBR) SDK, we can locate the item quickly by scanning through the barcodes. + +The following sample demonstrates how to utilize the SDK to find an item using a barcode among many barcodes. + +Additionally, this sample demonstrates how to utilize the SDK to fill out form fields, creating a custom UI with [Dynamsoft Camera Enhancer (DCE)](https://www.dynamsoft.com/camera-enhancer/docs/core/introduction/index.html), and using DCE to draw shapes/images on the CameraView to create indicators for each barcode that has been detected! + +* Locate an Item with Barcode - Demo +* Locate an Item with Barcode - Source Code + + +## Support + +If you have any questions, feel free to [contact Dynamsoft](https://www.dynamsoft.com/company/contact/). diff --git a/pr-preview/pr-214/use-case/fill-a-form-with-barcode-reading.html b/pr-preview/pr-214/use-case/fill-a-form-with-barcode-reading.html new file mode 100644 index 00000000..35ea23dc --- /dev/null +++ b/pr-preview/pr-214/use-case/fill-a-form-with-barcode-reading.html @@ -0,0 +1,163 @@ + + + + + + + + + Dynamsoft Barcode Reader Sample - Fill Forms with Dynamsoft Barcode Reader + + + +

Fill Forms with Dynamsoft Barcode Reader

+
+

Click each input box to fill in!

+ + + +
+ + + + + + diff --git a/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/checkmark-icon.svg b/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/checkmark-icon.svg new file mode 100644 index 00000000..5dc93e11 --- /dev/null +++ b/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/checkmark-icon.svg @@ -0,0 +1,7 @@ + + + + + + checkmark-circle Created with Sketch Beta. + \ No newline at end of file diff --git a/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/cross-icon.svg b/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/cross-icon.svg new file mode 100644 index 00000000..b0f8078f --- /dev/null +++ b/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/cross-icon.svg @@ -0,0 +1,7 @@ + + + + + + cross-circle Created with Sketch Beta. + \ No newline at end of file diff --git a/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/dynamsoft-logo.png b/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/dynamsoft-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7967e8edbde77fcdf84333b58ac1046f821c9e0b GIT binary patch literal 5449 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 LnIX#&&Jq6u=Qz1) literal 0 HcmV?d00001 diff --git a/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/scan-barcode-icon.svg b/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/scan-barcode-icon.svg new file mode 100644 index 00000000..6b744cdf --- /dev/null +++ b/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/scan-barcode-icon.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pr-preview/pr-214/use-case/locate-an-item-with-barcode/index.html b/pr-preview/pr-214/use-case/locate-an-item-with-barcode/index.html new file mode 100644 index 00000000..bf031305 --- /dev/null +++ b/pr-preview/pr-214/use-case/locate-an-item-with-barcode/index.html @@ -0,0 +1,701 @@ + + + + + + + + Dynamsoft Barcode Reader Sample - Locate an Item with Barcode + + + + +
+
+

Locate an Item with Barcode

+
+
+

1. Enter or Scan the Item ID that you're seaching for:

+
+ + + + +
+ +

2. Start searching for the item

+ + +
+
+ +
Dynamsoft + + + + + + + +
+ + + + + + + diff --git a/pr-preview/pr-214/use-case/read-a-drivers-license/SampleDriversLicense.jpg b/pr-preview/pr-214/use-case/read-a-drivers-license/SampleDriversLicense.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7bb877f70296d8bf8ad6ba59e5b3a6424db062c3 GIT binary patch literal 533709 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

W|7EVZtlb3I9pDQ+xJHQtwunjqe})!y*K z-}peTjVg=vwId=cJ#9TYr@I}Jv{xSU24qhR^7W- zPv1CetYh)Z%=qAkTSrC=QRfU`{#~mNK}8otd@;0pS$%d1UU-_lnysv7gzC5CjqHd4 zz(KDf93(N+T!XM4Ysh0-f}fQ3(WP1@`t=0?kFgusU-6r6mdx|j%`otKM=tA!SYl$< zeoXgVsArXtA<=slirWn89HD(a7%xCT`99q^lzy#x>pJ@t+64Wt-DEDYyABdpBIicweaoSNOPemks?^;|#SYhP3Mz zOiX0z80Y-PEtqMgK+C~A#XbAi4aIG%vx<8e6?DgP(UD#`ol2)tOFbV*wr3}b*d?dO zhnB%D=OYU(vjmiq&j#8~!kDHK&v!K3%J3Afw?q~gUVSBQGVAtp*;0!vud*HLu}Sx> z2{-dDI4#lovX+!(i;&U3(y}T_4lzIv~c=!Y;moZqK>&uU4v+(WgV1|BB zkAWTN&cz+T%Q{r&f|G{P{P) z60Lh<55cz)DGVn5f>eiCqrTyk&j>)N$;dJ4fWh-oZ=N&+1Zl7ce`(?0Ze|-_o%`?G zxCUtYKl{M_fA*mo-+m0I-jN>z8oW7d>}+crVk@ zvNSg(-u-1>5nO)MA|1UsqPhLBBzL^1=jzb=X7(mf0d)Dd>hNpsR7B?5EQ3_`fy4yS zF;h3|-i$Aqhhcf3_gA09`kfN z_6KWnSKBL|tBtl&v^ALkvH8wiup{AqY~fjLZj-s$ zyt^l#%b~y)XJiE@OGFSz5esOefM*C8plhqT>Llblmh{NHuLHYfB2(2kn@KoBwQrWX zd0BCMjP=SsfBNQW$Y1itcTve@vkR|GK0VGpbgcxv;;dhzQAzemhW!-nOKLAY*@kHb zRK8&@^0e9#?LW#g$$;usIzt(p6{OHU-|s28861_6F>q))m|9}{3{b+l)rBulqa1uy@$r%5vAUA zcspn_wH9bj(2J9dT#`HMDJ;+dQ3Wcyg+MJJFUAvU;^8YYc%!oz2L{A`KIi3?AgdMO zJeDWfsz+~N z+&5+GcE;F;#-!w5cW~)G_BJov5j8zh2V5W>d|y7>=X7f`S4DCk-q^wA`i?ExRo|*& z;6hFQ?N^@1ygJktzQ}zmk85+2blIoR-bO#FsxR^K=jiB|M<<^qJUO>5+T|}r^c36x z7PQzBFVs}Kzd=TWyq!154vT?{Eij6fbJFCAp{m$XwF%yNwbVh+ES{{WB_h)6sK<1* z^~mTiwy3Flzpc^H8&{7lb{Rbddeb;rFTY!CY27F*Fu1*KFebdLSY@vi6&D`(zOXFj zvG0ftqkQ-ZKRJ`p62ZMn-5~yuB?_u)|6&`|)^1~dYqaB0^L~$_9Hvo6h56aOG#mf< zuRn&q%z2vdSAvV{rrV#5y`9v67;XAWTy`7S8{kUx=2}24bEY{>-)y9TaQ3@D+vb!p zipLh_rZZ8xI}WC|f-T_tO(%!rq#Vhu=@bCzP1jMZyVrah3ao7-F3KVINC=G)r0m^x z)jTd+w<#AX{9SQX+Pa@sSTt%lalg#+@{ntHX?;)TKHU{ZHYDCRLGL0PfNqZ%hzsWn za*n09r_AtwgdWTc#vSE%hg&H!p>w8O&pEuUs(=fJK#Z=mohV#_ae=ddn@DodnPQT1h zz18?mGS4=btm3~CNfsT*ShBTswgSyE0eke7ET%2`IbB0O=#BTq;FIl2A& zyAEK)Xsl+Y4eVi*pR1`0AF{BpvM5@#Ah^~B<**hv3ClyP9tOJ#O{=eV9j)95X&bM<1aIafP7xB;ZPx{D$Mg^wsbC z+wqY+j>)N3&tn}F@qQN6A5KS%Z$YG~t z;wSA=)Vy#nsk~D&{z_8NO2QW7^%I(sjlptgK?f=WoYP#-4*i@mM*<`u58e+94egZM zdTDZK$giMu-ub(S3kv79$sn%W>twA4!614+^vf`j$YL2#|CSi?xSGmeb_iq4Z{JEi zEKGIvcupRA|MN=EVY*>XDv0emB-|i*5=$d;10&Jjp9LX zKI74<@?lwFJL4}L=-jX@Mxt5&#;%L$6&VdeEJ6g5+!%qu0B=#$w-2Qjo@1YRU+j44 zllv1Y^k_l;TL>?ISfBf~!p!vG4OGln`Ede~GSF1m6pVN(lAMq2(f&cJ6GKh1vrWY9 zti#|7e~J5=Wih^@PCqa26kxL!8@MI;_+0V}vmSGKgvEx$m5PPJvk#1~?VzHh+w_$& z9&gu@&3>aXX)B(5EMA?PhQ;k|!9GyYbaj}3mh0^2y}YwXR-2s<^{I*4@;#phd>-iV zwhWi$rw=Lbu{-wI_1c7&mTkhTkrY4Fjc}n zg}@{C7fabj%Y_{c&F!P%!-k{J2O|gbuCYvDYD@yxfRH(yR^y&r!ibJLs+zD&|+b>FYAHw!{K4E+xW#iy9o^i!GEU|B~c4MY!RciHoHnU2E!F?G6hD z94==VWcFZO$09QyiI->Nwl)uY%DxraHAs7|cj5>(o;#hq*XU?lo1b{`%`yJ7@!Lo7 z@{&~6jXR77kWLQY%YzU^@kc!@jZ!laa|mZ&@;j;I2suY57Z=s^$=}P;3dq^UY3b<* z>e%|FTDz($Ot;u=S&}uVwl%wDs{WLG2wb43h)=hZfT__hKW&&(7;9n90;>wt0U!bPAMIi7MKy$)9_$nKj$3&4H}rN&8LGIle{r@2=7llwguH?aHLAWeZy*yEN-Rv#~8Vej40dO zA`z_}<3%KQKHN0QJ8x^JhE+U4d>LQbzb!uc$>)T7@Z3e0&Nu*BT@3^&>jbpdD1-;8Qi@`wlaAfA<=(9NGLqV>k;>Pt z6ryTgoB_8t)RpP!s3Tpe6IpzAU~spjbzS)O&97b6V-ryaF+Ed$PA2~-ES;DH&1RMX z3U`G11XJ&aC%KE;h$Gpe1JlHrop$-MNf0VDZPw2CM*a+-Gy1^^t3NAVGJ%2OL3MUkq6x_`e zf;64uM-*6pmMT%lu$|5BkGg^FUfXKZqy0rk5p(y41;=ucuaDICfJ=;5`mqrfDjXuQ z<&&L7wnu)Bu%qL9y_M5s z_(+F+#yZyn2d+8AC&a&2f3ohF0xDDg4nUUwqtGCWt>smz^p;rrSYHq-ogrUs7SCt1 zzZQ76s^D&nES+W^bNRvo6XhOl1zO(QqaqJZdG9e(`_g+%p0M$S z9sH=S9be9ubio=G)M@To{)5}kuk!c>oR?*Aeo-$?x95hG=uLH&VA9D|eJROfu72UB zruW(?9ZE%KtPGyIR=o2#vC{C!8@XdKy>A%x^(Y~3LQnA!HjMZe#oXyu%p4zQFHeNY zXC?A%Y~uAY9VR8WMH*KJggGN+-DI@|r%pGNHEP+PbG_&j^V6~vYkaU0i`t8EI9M~H zpI?M|$td^vB*c{v!=S$mCVjhEp58x4%G}37`D1aThKLt1RHSxhm{#_hU$!Dt5Zr)P5PS2B5|$dTMX1b*Oo3-|4vQ5V-HjC6H-oItEq zc)z^1($vP-a*5@>>^%q1eay?CqiF7FZ5kki{~Phv7lzSkdsNe#3IZA_PZPJBF!Qw? z#yZ&5R+pVV$5x!{@(EqU_H^2@M|btB@O3AtuU1{aUE3V`_T%Q@!?&Al<)$5-X$@=GI*N^f(ZW~Hiak2D690A<$J2Smv>{nVUQ3F#XdvE05M~ z+dn>kV}EpC1}ZL(QF^Kc55*A^17r|AH7q_w!7z98Dx~Q?%2%jwhQ|iV+$$^7mYyDL zGmQPBV?%W47IqZ2uC=wQkBb{ylC^1lr02zqZI@#<#hnb4XBE_9n}N0YhS$f>zL~$k z|Ax?~lGY`jXfzn2{TjwTC@2;f#omDpoAdL02lo;}3cYP@4A#DmUutf1ZpX{aJ=SXH z*0sLznwzrylN@gjsD8yR_37f5X}``Tg})%1lw$(@s##=5!#i!$j1~E{c{a;=`I`>d zs%=ViCo@_-o_F}BE)D0}cm=EtjxFlFUTa-f`@?l!$j@v=R3R_R0SBnr$t1!ilK63o zBZ(iv1$ju7$j{-FUmYq|A++hACh84$mZgu_60UeuD4!ftEo{)IeqJ;8gs@*n*~-U! zEa~B~9rriv2ue2cv-w$R;- zPH(0_HyW){7N};M=XaG{`H=AP?9+=263+2l)0hv?yD-*~03>fGHVBmCWX6b6&8T;( z$d3dcMrhS#!YUyzvgJ!o)$mAQd7hV;s`f|Gi|SFci1a-#uS_(LtXp?{{+~{9@$up9 zy-{)zJgAb7f8|r6S`PonAXacySO#ndQOCgG*Vq%}txYX9&n};t#$EF`81yrBxXXsE zC$vtQq?D_FiQDb*)Ym0GGwX%1Wls7jmzIrDJ5YJ^+h`E#br~ndfkX_zw&%eRBqtx@ z&w|nXN!dLj?z*R0!G&gVLHnEdACB8^a*5>W{_5doJt4u}F)gbe)a-q{;O_X893T7k zygaqpgnAe`g2k{l`*4U7uI=if-CtLY3&y&B{r`ocQ6gR-XK-ySz%Lm{0=GcQchJ; z8zm>`z)<$D&x+0t#U-yE=|_L2TRhW16^>{0Z+sJ$&z1)nQe>#gwVzFJky{&layE$N zx8H+7c!eVYk+Q;tIR&2rWMyCfQE)?+y}}FE@J89+55y53fzdL+j2zHKn1V3?Rgv0| zp|Dm~$TW%ekHS9<{}Z46Pi-;QT9EVGvh&{LWFkH8g#`n!)s9uVVMF&}o5(}gTje&h z#eCoqo!Q8KOFXh>$wIMWW1jK7PU;hhxumz_hirc?_U=Ly1j+*-l*%Lwicj}m%xb32 zDSbBg#60+xc;4-U+cLPr68zEG$q}y02fwH{QXb}fh=CVB>~BpaeZZf?%b~<%7S!d^ zi37n`gJ-GI4XPI?@fr67*uDz|B|$>d7jt^)gYw`go<08PV=SV&)O`&=9ACAm>`udK z@q2By_38#iEK@irlN%c{Q{9sKnY}~3wA5JK)hj#kW)FYiW(!wbF`%1aiV~Qv!a{-5 zDw;4jS7~yB)1CcIVX(UhKD3}M0)yHQq~W8&^t)v#m;wckXt$V#F|~*vt~F*f>CzSIyq1^O8mrK31yvgIz*+T6Aui z!`a94F3qXLn_A`W2)nfAiL|bS8a>6={sR+W9^FcC8^>Kgid>sDBqWh*U z^I0E(FGKvTMUk5~{VP#t6{Kv(Osz)P<2=~~30qcSUB>v8EoUDaDYSi@Ajm*2CU|~> z=ZHy{Zao_k4{(kik)1Gi@H;9v-gyIM+d1N%1#NOJvSwdF|fjUm@GN1z>5B5 zRltw=Hc63#q(11eZDGHT^_!Ol>Z_4a!(*Mk>=v>(#kjb@nm8Ccb&nJ;XIXDx%IVER z!%wF^SAk6dCgd=;g>&w<}UidGJ z^3$dIPPucENhJdULvTcia{zIH1VrvrBQKCM4SbUE%dnsPLs&*19*A2_d|$lhA+h3k z2WN@l(VkS$N_F0i>dniiHucK$Kj?!uFHbL8#CWf)w_>$vJ4V5_?XLC}Eok;i!TX*q z!-Huj=bzCT?J@J|0LpsjBTm?;s zJ!v^|;|H+UgM1fkwRvZ)!Xu5|;>w^@>!RuxdUaZEfmXQgCemm5U0QF_mGN7;z%n*s7hGL;9RD z`$-Noo;?>cdGfcNEmn9aFLP!=PcNbD?qc7g3)E+BP-qJB^eHZnF*E;D2iWf;#V^^c z010{VM;ptAL8J!Xpt20Tmed!458qbJ4-6G5Z@&9SU4_zOC?(hdkvmI70$yxb%@E--&pJh!A`g)Z44zl^F6cssb0vg@{Lio*35ieJ~ z`NaG4!*xgC?_#**f&wm%wrUw>N*O(F&XFEuMMILi1;9*ABbYUqzE(_kanO6EPpL{X z_vGTG0gEgrI>2@LzaP2L@A^eMtuwnTSw7(yn*BKEqs6_e(~IqUdiZWHj!?-G@rfHHUF-$CLwAf)(Jh5l z_<@k$ADxKBoO@{!X>;qHbJ{Wq;&c_sx4o}F@8;B+*^nrSF18?GOEU-55|`2T`T9BC zmOPx01jVM^jDzCS(~if;Rsh-1>M7w*ER}IeLHY~+ zO?zlU0L^D(tOZ%WO_^Ab_2qqSUATgVER6JegDvlP11;d$vJ;f#x+shIoG~ z@aK~+dm~gLi5R0p%?YwO%IWMinSR>xbDI&(uJ0Id0t4(SfJF{K;quHWA72HgM%dw3@i_9R`W`A@Z>8XrVFzwbcf37Py3C2WOa zw$VE}z@ncPJ!@-~i_2uTA^JPw25|Vtm%`I5uV=RD;u@u)d3(fnCMK+e*iVygHZu|b z{#phy0z&bnjDd|aZB(a$XU(7i_6)RMzOy(b| z_OD>d@=HcnsQ%dvZ4u0-zS|&8;6IW-dodOi&Ah$eOr1N_Q^h(YQ5JlGwCS!5N_zxT53*el!EycL=Z1iM_IVbMrk}DdJ?k##5yMzoru* z$aVflpb{2`)G@`<6I;KjnauNjGP77V+aTN;;ByOauY-cE3p4iD&`#aF zT!wiAZOA^q;`k<*7wk1Zb#~!|e?^oQ!k&E2jsTjY3-*H}X48-+|3J)tKt-PbluJlS z6+*Q2=dYW{UYXb`&d_V_8U>6WPMblw*G5X+k8&?C4|V&Q8l4)pL%BFbG{|VE*VE{| z&g|7aFSDP)C?`;h+(Q+3zrSABKRAw2f25cFuzE@v-8zR;KM0n5l?{T+MRV*sWf&Oe z+}S46k{_RBeyloS=EEh!BNa#HH#(&+b)(1XZ51+6u@96nzH3*W$z;7)H%7$%b(8X6 z@<%YI|0jI0WbofR0*%8Xu>D~`p}4Doon}f8-}E>%2r_zS`Wm9Yw&tPdDKuFt&-hOMQRkQhMLmekL3#2vM>);yhL`Jx)30UQ;+F9us% zbO^ant$jzdP5fliG*P5sHjuZ;zPdv_7W*ZAD!<b@|@2Q3FGKO?>^yw_5nUL~JyD3oyq)XaB8i)g#s@L&Ii~)yYb?)>p^d-SCdR z)4SsmB5+`y9w~1ct1Nkw@;>2Hn1jXJw+TsWOmxkSt+n=W$Lr*jk+T5^sSA@o!zBB9 z4ydFe5M1>OY})YQ^EkfA*bMZ>aMJ9}h$k=ZNAa$q-`jB>$KcNijCj}asS>4}!34EM zi*{!3Tl-|*iYCXXXmscA5hmh}ugI5lkKymL%W)rkl;P6! z)6Q58+F@Xe5P`(7g^fjUC22FMeWGHm30`C_JFm!hy2` z7F*_MUmw$t-{EF{{lxR?hd{hH1b0x^KS~yugT-BZEn@rVM|fNfV$0-ADgpp?R$Mz zPDW9*zko_%zw@KONdCF}Ox8K-!x2otK4K*{9r<(2D0ajiB&t_8s$9(MWl1I5vu2dA z_nIT6HV zZ5JEw=~Vl%z+aY`!krOeDuK2!b1$C%eQnTZt6ub4Ewe3Zp6i@Z5Bn9dl%qZAFM01X z@C(ylDDcT;9h>I;82eUEI-M+bo4|OAoUgh^eN;Jp;6P*Ij&arS10q9c#`;emhrv;>3Ktu9wMj z_ve#X8_r_g9;@zCZ>H$ur8; zE{3ieFSyI67H$-V8L?VB z6VYq;n~UtZl?|2H-x~^gT`pu?6VXVi7d}8`Wc2$gcl>Us~_{GP5xIH3s zOL(;D05 z5ts*^#E7{x+n2zmn#VwYT#JZ3fo6aB64Fz-3k@h77#OaGzp=~DKm}OzIhySjrY)th z3qObfBZv1)loat^Y=&~wQB{8H5EKELCk?VI(rmdhpyI>V6Y0`ztP(umS+44*Kqkq9 zT=0P_47i{mYcZmigMS@%e1_x6~zB-8AwFDAb z5aA3GLXjKxwP14Sb%Jcc3AlNFwd@7P7M#>#IGZ4qSHBG11y$ob;Zz4mnJQKosz&}u zeQl3&a5O+l75;Dl%L(|Ktp|Xvx4f>B@_WeCtO1UkhX^7bpDth48Em)-!c|A}y2RB; z37B8f%&SPEi(bfod+|Q_WQ{oyJS743)o_}}mwzFd1%wXx_OQ`?@NL;pEm8#B&sY7t zVOxyc{6f1)vqwQ%B3sbHM!jn(Dh1I-(mqH>1e^t0RY3^2=5b^1*(TDX6PKsc*waig zPd3|?@(>XeUgLvJs%(I#=~#gmUT5JkqG&mvHY`R~-2(UoyK9dSkdwk*uvM(2gmhO! zHX{E}4oXJNbZ$pO&L>R{ZwW_kgt9Ek+B*z^S!q+Bit%tdJoT>5v=%dX?0{IRuc z)+k)rg_rU6LGL9uNaF*Nk95)df9WR?qy;axte!OEmjkd+fegrSo^>%voQhrtFqdgg zSgAW*LI5)e@KUU-#{t@#f$uows()t2l!f zTYv*kABOv|bjeQ#(lnw*rLv_IIq{?H`QO02Oz1yYp7-T{6b@y`lw@B3&LBMv_BLDU z!#dO%Jhd50f@0NW>9b5DOH%5j;T0#QfB=;r)&^|lgE?>#6n&LjOnMx(9H8h2Z0v(q?es5vtR0S&H^_I#~bgE7&}6pNWzSK7D|N-+`2oJ=F)H zjM0hnT*ica@2Q}c#0=O-BzXIGm^*+R;B^6!4XR0?0y)Jty$AGG2X##&Ue6++DjjHC z4fezHuOjk;V?$l5@xtL<=n;dL;}Ip|Q`YPgKa?m?F89ybOJ#{eQMS33lWx zN(bN71HIH<&;9S)ZdlZd5C#Mgo+y+rG?iH*h*CzZh~;Mx!Z+-rABumdNckU~|0rZAPHt%P^E5gj)D8ScAx=(p z)WZd{+?yJX7p=t#0Nee9g!+Jf(%In`zyv@w`E}00M_^o9?NZ=%TWW#c0#T3Dt zVj2D6JSOObI%iZ{#0bW(W_L%S`$z=ucwl)GPRbX;ya6x+yyG7QhNOfzD;N?HRJsjo zqtfl^98|d7*(tC}`D;kI@P7=B}0?I_?<}*OkPRh*#|H@?+13)_)FaiznKJ=n8bs_Nl zU6EwoY(1~5(l{6CY)9Ocz^N>o!q;o-~AV1=EGf9V@=F*MqQACCd7;*8+I%DIxe z|DHA~@*xmrSPJ!l@*W_W?#pkUIBS3$!i)cZveWxL_W!l`lEJC?L0wB2!>|dM5{_6K z$tePmpPX=Z6aSZ+CYBRs?_ogJ3dG$T!05ldrKp+%P}ss7a+Y5USUwzOdC7b^%d`0? zAZZ-&Wr=AuEPBK%Bni$!%MbzSEgB}mZ;mdE2@A(q=dn!a$Zn!xs z8`;w$gEFU!mekx)w<2u_{u9Nrhcd|~f}Tn~Nqn5)Nve2lXk}9%HSie&k(q~K<<=V# z%BqQ(%m>#k`!6P$h}S0*f|mHJY~-XY368ZD|M*PP{-XP0^v`u@Rpatr)M$S6CVf-GTIDCM{gA$pg5 zHB?REbBWGy$on7NJ?%33veq#1YbVmh%Qy7%w95ShLvuA_%N)|`bK`Ua&CorX2VuKR zs@USw#@gRg2b9CANk&}5ECO) zV5g6BkISlt#@gQQSoyLpuqVSL(zl4GA7g@q_Hy0nCt5cAgPQeinn#A;ja4jejLgrR z(ZJpRNhb5S28{1%j(b*}AN{b!sIM(cN0w|;Dt@;&AR#3#TK>Mh(9Qx0P%?N%1^*`K zG7i0rsMh{svSFwWXAnf}6jw4|r9KVAK7F6cyRdHC|HIyUhBcLb zYvay1%8Uw(V?jlX9RU%Qrbfs(7DNP8nt~9e*8~I-C4p@jK|w%JqzO?G5D-EU0z?u4 zY0?A?ErdufAqh2wlzE@T-zoodo$LC)AI^vO!}&PZ=yvZX>sjkw_gd>-W#b_+8)Mcu z_Lw~(-cL!1(l?T)@HT5zPP>zJGoT?mqvQ|x#n1S0l__(~lw@O0l7UgCOZJ>joDIzU7DngLSK7-py!3Jqr6Nb|Ez)rnjuo#duZ*hLvD8?}`y{Y}uBhw0RK*91;3Cv_1QmEqEsplV3oE`tLJ)eQIQ#J0h=~wH-->vW>iwV z#H0Omf`3p$10fn`soe#d=g=&RV1$SJyZ zQMx03tM`^CQz@{ckq746QP)A*T7Z4}udjo9#bzp8e(d#!i{nu?|%JWH}x&#~eWcX#P;w zSTc|dr2qjtB+*T z*u+hjj_cQT9 zzzn1Mmv8Zv4~(-Z^8D-cYh#cB(0f1x=vihqlYuj*28wc# z-piJ>D$zgP|C>7h|D?_x0CoHwiQg?i&RYrn_^4%}%G`z#1qkhH*(z=7zg;!L2wg=p z%Bd_O+eW;m=#L-3bR+z^`PpgBV0p<&3Z^nw^T4>h=d_P{!ljd)@`mNpAh7Ot@nSnZ z6gMG;OmQmC?0jl5&!SmKEybj__0cUAW9X@N;15(V5k`d~oS$EQRYX?C=No0xwd+k3 zwKr`#c*N>T*O|C8k&(Hw8<7tNc+Wt)aQqRZ_<+Jh!Lnd#P_6naoUToh9`ieyH8*9^ zJeX!zS?pj-9!A$csl)U)qST^Ns@+%y5_jaP(>B^0pXuu*==oo0blTDvDtqMZ5Kb6`62;gZRo99gt33zM1{nbQadi~%UCi4%2=QtgBPSa1=P1%iqLuzA2KChQf|gF3+PJ*NuU+4ob*88v(BkWU`L{y z@k4}*;A(xi&IoU@SwG`WtkgLv^j;Z7*KgYQ+tru|x=3|>k3(3ZvPtRdIx82A!mE=x z@p^Bvu2#wX83VlP5U;_DA3N_N@aqQ(RH63<)KV)Eec{r1o{kqSB5 zDvGgKRLcu6LkIqvpZM%PMV$d_Q{G}w(O)Sp(Hn8H1bX*%!$v0wJUPPL6&1ojaeYqI}^pf`n0x$WdHI!?3W1O~~XZaj(&oMoscd9BzPhQ|Afv^>k{ZZ#qrTyenv}!y{Hd;w<%+TsrE67 zrDmpOBoB|TLpKKLv9fupk0%2Q~B9o>WggV&K~^Kn;Iq9KPYucjRGg&$!S3W5h?25sC8%e1?vo0HSw07 z7hOzojou=A<^`DGVtrRXd95%Ws)^@;?T8ML+e}*G0_4p$N-HT#S5+e!6o5YvND0H; z3I(Cp`fMjCy%u3SD??qnB)XgXPk`nL;~2QHX{?1F9ouNN$~1hJ!XZ2*6N zmr$iV1fIRX+zDFra{6&9RV7AV#q()R#k_o1)sz<{zHH<6f|~ZKvT00W}#pu>W!Pc7os-jsX)EO zxKXdUzLaUt@vGj`e^|=sUmvEx8Y?N!m@t$&7=lC-Xvxd7zZ?C~uN0LT9f9TMexXBA z*lzrdKIi}sIe)Vj|FDm_mq$1iY%#!PWHZTu-zA2wewV?h$9yBv%OI-QMA`H)Ul4FH*`JKh*0;E3U4E-$&0og zo3m%PH=C=OyUyn-q{!Q5C&Q#SQZ0SZjC>G*BYVj#KR?M-F*a-E$m*^^I2?1ch#u?B zY0WF2qc*QqE(fCv^gb}Fa1H>W0R3lIx;t!6YwO$S5x2iMchz>oX4YH8a;%c}Vgq)84+XLsAAmj{e4XK3OQw5@{>6jNzC?^~SYUmGUQX1a@;TI(2p!Rb_aqb1VdkJyC0i$+(b22A z0k~B`&Y;5&r_#zwqzj=T)d%ZM9nJU~=R>R94qEL`-gEB9g`l>Bu#E;(Q_C~qff+z- z`=A${8l^W0#|#g33WX(=Sj8BYcHTm)_XKWa_}m`DvalO$c7plepYcg_;Y-U~oMro5 z?I|Tx${RxP_@20}M}zYavfkcY*g^**H4ki!J&8`;0^Nfr`r~(fb^###6#FDbXLyIl zo;jl0sZy+EJvvsE70Axj+>xBq7xaw`1#mq#96_Glmap$_v$?=JRG^!N7PftO*i$fqsbA zku93ruKBn=%yrGmxWE6_(|UP5%X<|-8irw>*d5a>wIw?Bkkpcw#hWtvL@&w0#=7vi zKImxLH(bs<96BsYeUDX|U?g9p)C?%T=)awt;SiY;|MuI6#@?QS^v!Y)HdP^h7^aTD zDr^vEQ#8aG!o0cc5nva}&m3P%!5MWT8>!Dj4SSF~;dH>DRv`D1qY8Lv{saleTZar z%nULv6!;ZMaRB01xH`s}2d22Qn%U-g(F|*&g*l?~>52dmF7#$#d8ARb$)mQOD|HUr zwXD?iUFWp^PC1K~#fLjg!Q}}si(vxoM>=3Eh{%GVK`yy z*5|TMMw+z?EG8N#_k|kZ+ogg{MPX+bLB&TV^`RUmDp4sR6Y~v_-hS6nQ?G??^GNW~ zo(8<-nu&moxcjji(h4#oi;vl6o$ziNvHMLga!?j-KOmc*$q+YnXg65ovEf6=f1vKe ziiwhb*|?`e6p=s3kQ$ali8~m8f%}<3x7;Te>J>pccBgH4OY0?dYSx96cca0^;GrFW zl>FO-(@LXa?H0V54y;=o#i=S%)^`C!HjJ5LBm;#&hC@j(>SS!o_WGd#02{_NeU1tl z)oIP$<~9xvU|vk$=IF;_GF(>{KUhvMS>&c7{}s7^n)ng9d%Arxjg5j->Z|ge_EObO zAhMSgT*pYOY-NLR&spY)G@RYO%Dkf9_ePkpMn87c!)j+O!&UBkR-HD}_I+A<@%cCZ zGi_J4&}69xF^32@ zH?*p(tb4GQJALxpTJ-m#jsBe-m#@@r(%05A-FW_8t~@m_1^lnsKP!M$EgTRo(W|zK z>%bK-4qbflO>mD2CiH{2t$t(W6zgF3e)dU~prF<5H5jLrL~_?Y3hxE1@UX}%bmB-* zMM}u|c|E~QYp`D6LH*$0q!x#)MOZzZPFpB9;7zg2E1td1|KjYO>vdEWQoX$4?KeH5 zip+N3!LFlPX%x?~<{=vw)wi#()^Bk*!Vh~*Kv8QNxE$PH>#{MWJl10o6 zCyl=87=_HNGOoHqK3cxM>{j{o#{)H^)01IzcJBVivg{~78ydQiW=Ts^6Q@aagV7g) zvyq@ybj=SUNFYf+t02FRj3x5+15@i@9wPmxcnd@f2DWiWx)e&_)d?Iy1e;TKZ6X1ss^bROIw^=? zD@$GbtI#omya-m+2N5ne(82O|I&{$mHFoKODir2>Vbk+jx$7 zXRs3lz!|0QGmH+guBf@UD)S==b^~2iC*GhOOD{){kjWU=V$lN~@gDTB#sROe;Ww6~ zjLgW5UE4i>P(1+M)jX0KEvnR01(y7F$EdmXjAiH*#=_1Y@6Sj!PwPzcDqbe~xRPwJ z%{tLrLKv+`QrRJuRgd2fY)X2$N%3H5@n5u~R+ps%i$~097Z+r z`Rf)Mtu^j#V~@3U-O*OP7`b~Hq0Xk{XP4p-LKm^Kklg3sgXY0nmBxUW+XoReHYluh zA)%Y3-Th>jF?Dx8AT>i)rv@(eDRnd95ZVv*;fK_WeQwG#7-$-s+kN`73XL^c<8U z`jCR3<{Kn0Vn;xTy@uogKmw>OwLs=4=qr-R22Erg>a&&{;|*-YT}WAk{=R5zgz!>` zm4RtNjU2U5oXsoL3kRZ~83WXFjZ@jCw3P>ZECqCymCYJgb8{%=9 zd2|PvG(rj2uYxq4L&|bKe&8MJb=K{9T4du{>mk{ldaGQ|eVQg3z}ZPRrxxL`AK?#5 z4J=LB+(ZYn^jh7DY%nXR3UF_FV|KaseKnn?QOBoeHh#Z|$( zzVkmTO>zb&1^4E%%ivMvWUwQ|46qo0;Na<)&EyaD8YT9HKKN*0>w@7@J~45mBX-YQ z#&0DAU)!E_F4sFHIWxr$BggRm&}>E~0iRuOU$|}f=%gv<0)_E{H83N1dkO{sOg5SPY|Ed!0zYYhmVk zRX;g<#IPZHse(t_q_2rE_^brkYPTS5&SgwNd~8B=6o`L^A;gcQz+8(TNWK6KqBO%EN0Ovnx&W1&mW)VQ z5X2k*F6DxT76f?_7RpP9kwx2}L&S9>$*fAxrAMt7ACS zM3F)c-!cHN0m95M)r;fwzHN~Tan~{JJwys`=Exf`d3sCIOuM zzDg2oUYyf{QfscjDmiDB=%fv79jJ1p*_4)AnOWIbX*Fw=lpK*6?p@{od3czFoK1** zS|uVOQVE~YKu#3+msN8MVI1Xncu8oGg=#TBODBtzHJu@dpqE;wCSrmgDtRkDE9bA$ zwrKvLCrZ=Uzdt&mI`eL}EV^35TBBs0Ld^)!DC7#wp2hqdA;ORmBHKWsu#@nG9EuMD zjL4)mJ3(00uWG6B5dc$uwhia~i|&FM>bQ1N0o_Iv;XGb=Eu@ut?M3w^nwiPoR`Y%4 z+y6MK5^f+n-)SHe4+{lwV+6pBi!xoOY$RXd8Y-3`xhDZag`L0*3JvxTOMmO2uE%ax z6>vHjNdslfX6V;}Es;Qmwmkb8o2B8Ltk<;duzE6yZ;v&;pP1vXFACf%+K$kmiOp+F_E3{Mi`vh+lg^f${|o{}Q_?uGKub4qX{dfZ6p3=59weZA;d*w9PlyObR~t#RxcyS0XUEsE@cSG8?bo zBMj!io?ab5w>%jTcwfg_G!=?$U+H5;Kng#l^4lq!UOoC|RDQkPXqiK%uinz}^8L@+ z*V&)xGEtSe21h<~;i5o$jzIAaJHl7FHC~v;J>3P57~Kas`JocHl#ZsaK~h=`hf!P3 z&qSHzhLA(P9~i3r&f9NM;C;>e;qB~f+ut|6d(bRnr8GhUh4FY8mm3KuO{iGo|L!M8 z47XKh57JaeN?AoXvZs~bo*w^(%av1x`+Ek-IGL)JZTO4x?)M|JRn(l$ZOb*)a7jN= z=`J5x*V$@05hpJ42QZq~)B1$as7*7ObHVc59kR=q0nKxXV^MxHi8sH$8*Q{3dJ$>- zB(!$b?~z-F9_-WKcr~|j`b6b1&CJ}lxsl4?T1|e&zm>WYel=DJ!qf=W=gmfU^z^D} z_0!}jUzx3yWnxj@O1lrB9%#?58mZLnt(1@~`P5KLlYJYlXJQXN+WUkG z?m$o?dYmw8n>tFhz$04t##Wx6!w6Cb>rEXQM z+gG<@yA{0VCks3FAmZ<#(= z-!>Ip+LM-3H9tShdKY-@whwmma36e6fNxsDFIz6Ia<_0vZ5oL_bm+*n!x!95nX>S@ zF2qMz3mrl{g$`nMs@vWOcdechntw1~r&o$vuIMPs@sFk=@RBOm*tZ*!cm08&iZEo@mmE*OOqGsu^k@jwXdZ zRIuTP^W*K!h0osAvMtF2j-lOPd!n=Vt>AC2+D2}n`e!a3wLEIFu?Q|Rx4*I&Qdi_! zzFkXIgScugtw|f!qMi4UIG``ludM7Mm6?ZP_Naxw9tda$v7#zh1J6Q^rp$mdD?4u3n&Tyk-E>$Eap6Nm({9+GA5}jwidLgn9UL< zvc9s__;U_bvy$ktN;?BOROa5ycKS5klJ$uwRWWvSXQ*P!G3lQMuFmK^x7I&i_^w1E4up{g^he0ZaKP%;dJVobuvSZE% z?2eh7_*i9gwX-T0EUhYvKn*>Q`1!2kshA7>DtRdz8!zk2d~T2t%5vOv_JOzf=x6A# zFDM5Z5n~0RgikjOcWkIYJmf4#UN7AY=@|?f!cLXED;u+Pp`kL$OTSv*-0*u}?zTpc z$Tu%EG{%0DotrWhhWlqluJlS!4^n(@O0oJm1MD&EMQ{&Q4^)IEQ%>-R{%qd+{MXs7 zwWVZLKeqP7spuxjGxJm07RJ92-yE^&()&XR0hpxFhWms~v!5w5fFH@8C-WMbOR20?k}L z67(3T&U|84NN75xq3Y9v5>Sii`QH-!zn9>_DtFRf_t)x(5NX#3ZmC!{KnW^)Ca>Ke z{O-SE@6+@0X0Z&M_;W~!i)@?wXxhRakR5AYgo!l!Bvrj?CjG}E$C}1*%`<$a8z0?Z zkuccDEETFgj^G-3zRve9?$afzmWPZhv+LS%~&x*6bJ$00i!n_iL zqeIe*pu5WHo}hU?YMkVDXp$jZ&rqAAERPe*3~l*-X$b?Hs-PZ39cT&+;#|C2?|0Hk zSy_4R$U42aF00O3Wf`6*&_;ivJ_dxanRHXK`0ELWadqpMA(na3+}a#C*re1ZoJj{O zviJ|Db;iJA>bYd@h>_z*1LNWY--*{DEn~p!Wk3&<$1P{qj_k$*_wyu`E>vD@qc4n=)V%7{sQbR@&CGt^Hqp{nJk z*!~fFf9Tx&AUq1MQuqG zVwc=;nPF=9r)r39hiqsJZV4}gIu!omaw*I^RTZTMFRb8V7qA!-$60gP=5F7ya^wCr z<&zm32hTioi+6`)SW^n661>pVyVRegzws?UzaN@LwMs*&zhis6AOrI+0ZD#~VRqbn zR;NURjI}@u5N;#<@WDyuu)~9~o}1s+IF-KbTZ~hy9*NvC@~VCxOm_OlfZ{NehKLK9 z%$j?3z=kfS=9_dFty#dL?CXTc}MjubNx~AA}9_qE+0-ThDs zwzoQNH`(L%&^A3ut|{yjB@Pcev}oA^oO9Kj-H2UN=##31PRFP4My_M3WMWWNUl%dJ zjb_wRd2^vng@I%{tTPxjK(*$bwl(gqRMw#j-uA4E--840%E9QL6(^}8_ZG1emRfJ+)J#ffPQy6jGUQC$RI_2}9|8O;tcRyBg@F&4Hw2w)k8&Dh#Lq?Qmn2!}E(%nY7hfKj4oj)~ae}?lo4i1O3Z> z%*x~{3l$+_!Z>vS0XCl63TX4lF^^@_sU3|nNnWOTQV4t`tYz!H5{e;qGibCLG;b(8 z0r{Y2tX!~8wAXon3?=?;#*=E`pMI3H{4~(kYoI);BhGHGqmJ7wSVk`$y>n|%mp?J?PKV9 z4qLmHfm9-22NbS5Cye?fI1GKOpq_=Q7D*na45V6N+zy*4_u~vhzH1n>5XD8oKNoB} z#@fI>mcC=xL8=<73Z);~Ht0@IRVZIX3%1oU_KLR5|$S)Ji z3-az<@HGUJg-NLo7;!?RfcK_GBezj((o3ffl^Sg)>$nk3@Tfs`C2VXxhrkrY+1)}* z2@D6~?pttTu$|2_JI702t$#-De7bw5%*U1;2Z?00m?yj`u9dFDFoW@**|wY=Ep&tq zcEaukA1qMy0}E7LZk}*?g+&>z62tP!P>uAZ{i*)w>tJ#{P=9YijQ4;3Wgr!b_M)8& zJ{!<8c4E+xpekr@qK=W~R|1t2orgwAXZ9IhJzOdA#t|1?CUz~KSDigg)&T+pzOGuwX@ZW(NM zr9U@3P-WoG?z#5uKlv8aFowlZ~^;6%2yz0^>pB7lkfV=_wQf zAPq7ZDIk4D#R%>Vq-E2p&KnpyT!Mo6Z4RUDmqv?^Gr8ls9+xrhJ{&F3SwN+`2HFHY zI{M4rT{kj+mqBCuzwtET*nF+IX23evNTt~qY5$_)&< z1^Gzd@%8-aK*gm#)pwZv;;2mNPE=i+F$|BAG?6f&C5+6M?>3fiyY9ACG)vLht~VtM z(ZN*{;(cw***e5(b|bYZZ@myUGmO9g&x)V^HIru#0%*-8=^b$)i#xt)uHpOYuk4$T z1W|)XLDs<^FSaV+-bi9X|to{00UoT=6){@=5v3I6*pX$p1#SMFx zv=Fj?kW6fa-J{B0|5s48p@G*=Bm${N!_Ue|^7mI;=!3t-7>HvtrGKFs7r+*K)!G0* zNeZ(;WO@9OhQD?B7hV4HN#g@voe1EaSQkU@p~sMb@fU&N;C{*~sQx!lsNN?6^eaV& zk8S)3>=yWwi;4(q5eB4$#!4e`PcbSN*oA#MPehuRpM7S(4|D2u2<=X(ocqyFqh@>s zkDR2YsBNG~_3=r)BgG+RMZg4*OurY{bF+PU$&P6s%Rt^ne?m{ZF;P~=sXt_h@w4An z=%w{)UQ!WbwfE?G`NC?v6(Y&f&etMFxU>+F8A4tq>0upuC4}Z3@+w)tpa0R~4w1J_NnMEuypD{L?R^K+bneA zo77UeQ3Ozlo9CBRQsEVe&cW0hp}fznyq<*>pbul)5YEgK?O0{uZMeFzuFd=A+n8cq zv)Ard#}Zs+J~9_fc{TULxue)7RG!q_sNydT^PO{HW5WB&LHn z>R z;%lLy%R6Bc*$dAZrlfj@X~}i*NrCwDz?99;wa=VQSFFAMgO&%`#NRb|o)9VX^Sp^* zeC-cE57QxW?QW0^`6~I9K+etJ(1xrN3Yd|@CWbmb*cACfB$Y_%~eiQ&>~& zScLe%N|IqCgWB5u9gLp&F{7v|#`X{f6Q(RtS+tmG!+XpgKYk1g(rqI3q7hDp-N9PHc4{hSWYbuy4hJ&OCQ zq@?iN8V-T}UZbcl_k!WE;cfd(r)?o{cP8&b#@uw|L1PE8K&aM9-G#eGUin_ChNlQq z0g_QI>+-cA^%Ev1ZZq^qPD##O5L{hLj9YZF*#u2OV6rhQ~p_z{?Cf}r$X&gM9Lsel9EO(4?~VE zla9n58&EgV#?-OQpUpv)Wfp5W(qki)A;qZzgnPGHoPBxbg~}HYDc#HKuTL`D%l|9P zgcrUHHYZLPAAt_)JWXz2yf^DI)V^T!>^rhv8h7lY#WxVNVH-w;*Lwb0v4fe5=(KHW zV5biR0sX$I^P9C?*dp|z@gcF}B=sRfrN~$h@7bH*%~0=V z4h9sLT^bP8-Y)nZtvymsk`Ai}a3$51Soia;B-CUkNMxx5%+Z)2!hdKsDVb5(m zc(w-FoT0ZD8e0!U?^|znlqv&mrw~I22q&digZT?<1Y=?PNN*uuOpHqYGn8Kfmj(R>p{+zqD3L- zQ!;sgU=P`_><`fc+8~JcMqzivMM57Mq!D5_s_s+v&kB}Kgi+{hNgloA=y&R_d zLc#PT{-ofa6}QS(RqdHR^kJKX z)CZFN2}A`Q4kpv-W%OPLtT+4Ood(eCd&)#=a!MhoOXx;}H)+WpN@^vcf{TZYuaG&q1+4VP|2f>)uKGm?dT^w!Ja{|XbBfi+O za{b5Fjs8Dc9u&lXhuy&!37##`M-nfHL)cb560Zf-v58uX0^zQ*9+%)OFu{Kwn9q2W z_u2bWeTqT&SQ~q_l*@|=N%JnWxmsE5^C0+S(kmWey7lb!^5iN$J9y03Y zeIRUoh#@4t!?qw!TXJ+9K<-CYozR%ma&;{}UPKKbpNlP72!B&jZnz=EH^#jn1~I(( zYJ%6)-#cVagaou%-C^tvsKy(SWC#FC)s>3aL`Svx1-B)v9j2d~-t`D<8w}TPOOoRH}Xm0x|kwmZUBNg_dV78e$VKPVTgW&80R#LmsqO zkNJ_8jcpM3%9c;Iypy08MB@mjm3`AhKPaj7Y6W!M4e2&kyH&x@xJNoiKn zq!Z0PfN+0mlyi@+fah5v*QhN$6rP&T^BmEQ04wRKZm2bc)e1Pbog2GoO(r@FA5Z)9 zZ#*U7{oksKcjrkN9!%iIFfe~P~lG|hfIyJ4ce+9^ShaNh{* zgJ~}r<1J5f$6L$JSstMx`U-kMU_W8$#lfr0g*7*#wd*<})Jc@oPcnzaAcV+Wr{{9D9XlA1%7A|Qu~?2>y!fB>MH2?Qq*65?3VCxd`iEQsSQDlXAhRJNRY9t^vH-!al-h^M zpFu@%x{=~f%795E%E>3Lz$_L_aC~oF8a5TzOWbp6H(d>UNlw7i$$QTl2h^MG= zi3sEmBrW6 z{Fx$(;Sz+0YMvb~z4PQP11;t*FKjKs2kU0;C8$oOHgZBUPM^{$+}Y*lM{Dz-V9K!v;I6*8FF)!R!%f=P55d-2 zk))z4esFhe4uh+3vcI+h_L$?U0)wzOw!e6iaATnV>ElynkW( zI#f-VxYwN&)7eyeX>oQ~YJ^YZ!crYnD_qmO8i9^|qYJOzI9&V4^A5Y+<(jsJvSTlY z^z5gMZSX@(sO1jgksaH7M9e$_t*s>O(fe{Z*a$mk>9&Mgle+KjBkS9p5qCnzjL&B7 zIeoEnMe~syMOi@h1#WZ=vzOt~fzuk+S=i6A=vCXgz|X+NqJ24W&EJQ^&70|}fBoh| zvanNh`18scf+{VczgXMm+PdDXH_hG7K5vrTrq&yQ6MFqj`p30ShPuOS`v*!u7w-br z1LOw@Y7LZ#FQMF|`DQY2KXzsLbn!PeWZa7!^E1K6D}5IoYA88D1r`^VjNf#0bZwCx zb$$?a=)#9o4`CQ|w18D7))cOapUx21RIb(&_I2U(PWJl#!S$oBvb~je^m$zCDlOj9 z{+;8~MTNQUQ+sk7FBE4P`kP!Fl!YS!wRvF(QA>F%wRb!QdoIvbzrcW zMZ#@D-0iRtx-&Thvp=YIr&mwO_txf1d%CyXk38?SdoJ_jg>>+go>oyt2>mTtMVLFI zGfMjy=Iep=n19ntXi+E(lmuEjI_~y!WPcpZB>Z-__XF;J(zy-0dawDObkJN!J2*Eq zk>AwqR#a3YJSX=6ln=*F9)kG|1*qcC!*ha*N(w5mwKos<<{k^^{b;dA#Z*zraBECM z*IWNfUoTy@dV8rRGH0V_?yD6FRFE)D{g9aC$}fu?nEy*PpOKFTIXCGBbO2hChJuQ~ zUw%X{P*%J}MDzo(v`l5mLy`zR80 z#CT9hwtFA{2qb)O2O^lEefeItC!pV>E~X=81d}bQ6yUx!`1Wb)xWl}v@SPv0NKkui zUU`&YITT_S>MN!+v%S+(>in)NX=N0COIFOj`fJ6!BTwBfv85fbxB5Wdn&?UK=B5JwdIk^)Avm>FJcXAQ%*_C5fema!d3sQI7Ey-rud+0 z*=p2S+6!9)y7;&!Ek*{aaw4bOvId~_%ep8J9tBP0Bd@aUjXxFiJ0>G9BW-LR<~Nwd zho_(Sy!p^ITi#&Qw?gUoXz$PF6;e{+O34qg-#JsMIbzK+Q3yQpQA7+v8BX*^ONiZ$ z6!={Zo@?iZ;i%%jDp4mb+S%JRYFzoY-Gk+8kmUpLqc66VSUq{Ce0FbR`0=f7@&G|+ zjU?7k-b-SnWt3MK_(33LaO4+yNi{}?pI^Q#>9uahM%}ybg`rP zmjy!k4&a1nApfp01`^uJr+8Vb6NT9*H3oeVxhqUhoX#11-b;ro6Z$?d3}5sM+n+eV z6dj&2$RQ-+yy`H?-^83*@nHM&)bQ|^rsikte=hoxAbVs70H_Zg7Yk@Y4NwsL2_MAN zr$5+G3||=K`z>b8HnA_fcUwJO&yMM0BOl;YjGoeiD_&Ya%BJZVpC|Uk$JnQA`*M52 z+G}SDynayTZMy)t-LwQMcme_qrhLNEAG3ObWlWHY%lg`QFC0+g{5tINpEGGg{nrR1 z6-Jq*22RX(8|e>l-KQ_!sJHTb6SMbelja9`;_a;{=7wz!MlSpgUeXZKK}V$Zq%%c! z@5#{jRS=(WoF;Uv2xsc;Ar`}oab|1$?-+HJlFFEwn^Ys*I%{pc0}^&k4!S;R*mX^w z?{0z8h!@!CXo4PMXfI67z~Hq1SefN1@vGi6jgtA)GNKx?vKVKV2e%Uj`ub6k6)b)6bB18k;(Fz?13#i zrs~~7><}dej~ zAqNiccPf5>;cRP5X!5m}P!b%0(^+3hjhU0E=`U`$JTL@aS9ycs@N6`qmJ#i6>a=4KxU9~@pXwr6AsQ}` z_Q$<9zq!^o;p#aOA+OxSgyukLXUBbE-)w`h1|P*{fG1*ckPh{UbsDYfYI;Tc%tzzy z0Z~?1j_^2Tv;h;UG})`#pq@l$B~4wlc0TBc+V;xI+9u~Exo)4lPEy1a?->yi_*}1v zDS&QbaGp!6U=7r0!WJB<5_5=K>&IqU4kVk?(u77uCHhH{o^l`Z%6&zwGO-P`Q+Mq~ zYg|}(rc34BsvU z3^xIOs7qxcyA@F5&WM9>yK(j4?*^-TX9mBkZs+*I?3_tEHn?1lp|BhYv~uYCRYqSW zmJ*W4@mJmU!kcJ(A=}ZnKHR#qK^t``g?+SB8z%d{ z9H8+(9?FD%2?G>a&EL`!OFP=96`P6?N$NltT}^AC&!X`YXg;2#J6uuf5uPoIC%@0b zfVxRvZ;SEwV_~c>jh$njC3>Kkvue+;f9);$26AA&NuW@bDI5si(Ih=X)dc!_FtLds zpb!TiCtl_0G%)$o_~0u<||(5 zkv-0);VYqe?JKgK@E0*%>P3Hm#Yj{db)q444B>*WV;b0Tew2_kFLF3uVZ3LEbreoQ z+xl*g;pGn;vBFB-GG06jxNP-Up6aw7HWCNSvx(q?r(!r*5>s{6@W4yGPR zH>!ht;SV7}oF(-PCNx;aq`A#OcV^P2<{r57ZLQQ9INeh0=81?vj&V09I@%%jRempM zHs4b2e|UI#Jm&nH_?TuUp&#D?(1L+JS`Y1qImH*;+SPyen?k4Udy053ish zP#BIknGXj^I*+2cfhxT&ZeTJJXG=;dxuaWDi6b#<^FVAC4ImrJ_II%!P8YP)V-yC( zC+HgdYl_V04Zr#n-{@GK5Bbzp_KIn1%vf1`49cGsj{O)Rn7)Gj5132V|Vk0}cL&ON_9O}Ass+G&= z>7!pDL6_Oa#joFG9GI(PDW(V%g8o?h)z?F&;1~>@OmF{a&IY zlr2p+nG9I(r3K142Q@MHbwK0BDybv&;0fZmjv0p8ENSgaGm;459;^CQ`B^2nZRI=# z2lS!*)^+1rUW==n2R6AUqPg}JIjan={9O8Y12taX^Q|m6m|UH`F5k2zz-vw zrn1>;bSu4gqO`J0y--oP#qkT+4;I_M<>TX&h%INmuKN5zl6kWd?kFI0)`SV?#I>Md zN2dW6QPuN}pv)s(AOCx<0vyKFpd=wGY%pO3W^E}LdHSFN~8!PLKGCFMx`kwTSY}hK|nx7 zh>G-H0|bbO^b&f25F)*$K_G?fZ2wQ<@0|C%>%ZP_@5l2&mutz|?EO4d^!?cFGxDSYbR4H~$su<7 zMe3ESda>$0Y|l({8cMxnTbV*@)*wmjKf*J(@2HR6{8#*X<0r`*Eqn4q>*h@5q@v0L zI{NtJdO(+y&5NEnB5bWL)kP~B8AbgD2j7$B@H|1Mz;79Vnbcm0=?;?evqCTt`2>l*>JwL27n#Pqne`gu;g|6b#1vuhw)q6}DoYf>2296YQkSbBJ6te^Nf+GG& zMw-~ZrZRI!%6`Y`ARqH@QSOnKWwpHGYVeMLQF9TIUv@rs-u=h2`@FHuy1$0W!eZhT z5wN4bZ$#_}JH>(uqm#Hqwy65qkVHb0#L(^PHy4rAKThf9==tyy7g}-I)e$r++lZI4 ziRw?ylWO75H8N(Jo=!(@Iz4{ty3`-dl%j{vGFF%8iu|F!(2oHFD8Su)%1K$}&?H+~ zT%5q#mP2dBm2)@(Y*0VzSVP;mZb}cR*QBxv#RC~zvBcWWsiadea6xD+20U+SnJAry zDFW>k>MH5?5qorV>he4TLb3tj>Iedsarf|SHkJmiFPbvI4JZuF%!b-cj3Ixas6c-iq#x45 z7)m6eHbMQ#4&~^hP$_DVuwaSAn${1~+~FgR;X>u7o{V|#_u_UZH`i^f< zEVW+oO(pd~pE9DsnCDOmbMniX={I zn)o2ZJhOH6j6{%UuwLG1D1Kf4;ezH3R{Oh)&+XS~TX#KNdcm`k(Qwj|r8|5au_5e$ zhW`zAe?^%za)A{@X#38}QX-0ivA!?eoNXcDK&bW+GQfz_ql z7hvlyvoeF0I_}380dKwiL7IVGE-Ce}gzlr2$GtCqDV6eh5ar3|)kGB_Lw^abD93Za@j_oWuxI;?rN zRIm2RA!M!n{_ybK7MPtGU9!mK5~wX>rM2bTIMEk{tnUbV^6x6Exmp?9{Lie`7LcR@ z4De|F2{M)o@>L@Y*3a!QBuXNfCRGGUuNKqsPvz9IYV(@ znP*T7P%q6Ob3fzDTzugN|0+Czyg}Bc1I#9DgTpD zWe_;>+K!whu%mhlgxu)~fqYM*8KCp|LvBjE4C)}Y3Z za_h4YlOP`^Bbr7D;Gm;P+Q|i_IkQ9dwx#^f26nd=F}}Da=Hr!{YNpLfn@vmqZeA?j zU=9dDikig@knlTz3MZ)O`QteIA}hp!A3??JH9Nby zz<>L6D%~Jr4614U8R`0gNZ0X8?K4@Vd*-Oi%E_G7$^d-VmWY=*P0*6I+aCSmZdGQ=!4LlHG%SS~-k_1CRQO zP(Tc_OZ=^e!`CR00^|bNtG&&M{PR0|jDnKQ0~&YT{dQaDYZXxV_R3x|H<9tg&<-v_ zfE&?(<(z{OGlk;$vqUbvr%Dj+bkFx9=8mJ_kj1(7Wcg{liO%Z$olquM^wS(%Ud<>Y1j@N+3|0_EJKsI8P+&N5C%i< zD*)@XGZBgWFM5}D7c%-S2ft{;;|tHiS-MEa%xXpiK@ESvt8Ip1S96dkNHD$Q=znsJ zS5SG2`DjVv_auf;5@|wAPM_MV-?-6%o|AT<$NIq$*Bt?n^!%-{kI;=aBUIi4#1*1Y zByWR74B9q00POgay8(S@?V$#`3saZuz`8NI|AE0#Xc6OFdG#Z}P+=NQIRh@o5l);4?ScCz3t#D~2vCQtXU=gO7Nwd};w+S&(U8+#WlYPS_x zbniP+SZLN!bh}oHf;|@D6oX73aC7k_!SZ>{$s9D!cNZTqqgT#}%aMa4$lsk~ep1d2 zLaBeEO|Vyhg5V?jN-o}6PmA%fIp_>6vc2|x&cNb2OPlK_iq}_kM_EWw)X6|()2B-y zvE=pm`)!^$b8m?pfp1@Bncw}JhEl|6^k-xxNBaAfIS(N28}xm0GjTlhB3wJ|Ferk` z4GyM~$?6`%2B!FhHg6}J#4od+<30Vkqi-rx=fv09s|(K)1=&}+KgI7cv(Eq9|Id?K z_ZUh;y%PYGwn20)@;o0Bb;#<>mzT@1%g+ih=qIkHB7Za@(ObM@a$I*SM zq|9UHCgHJ1-JHT2to|;Qx~GTxUc#~NdFX~U+Hg`~Sx#97E2#b~?$^wr?v1qPcp_me z+%&JikX8)Fdu9@njY$*zLbIMQ#*=(qsRSIU;~}p)*17H{T-CoP)+oW(F!#d79&O!;SpV>+pwam0FU* zH&)9^GsnWzf_T;2>;d`03V((5t`j;vw%bN~s$XUg;u4xIy7#BXYD;5bpBF<=Q@x1o zhnf$a<&0k|MNYzheIzKAtM&zlGOP>>=atn+dg|Y<$Qx}>z2URqqXT=?owa>aOD!sG z>aUu3zEzSR_M!d^OJMuE41hn%eUIhF(<>8&NnpkkbW$eJ3lM#{6~VrJnQYz#GBXva zZLCs%)}ecobg^Jh|IyZj68}196{>x|P9rHlMsDNl&q>*_xyl>%cU=D*C2MO56luaA zsz7htLGAZgd6KE<6^{J8BWRb9ROnaY?H%MkWe-;P1%7hq=cEDlRaG*tY@6BQbQ}5G z1&~DV>;4*r*0LxmiFa}8e14>}aEHBxRL|QVSi*@_r{U|!og!2VPUMF(3hk3DXB_$V zEof9o?GKF0(|v95HE6;%Whk&Pb6OW`%NblVp>ZQT`VL^Pi(kj5eTq#%mu+DdpSvJM zVJ7}7f$x|R{eH0%OR3KyvSA_5_6_2yLVwEQgdcvBP}>(};SuoiC0$ZXx4)av_$qy7 zU^T1q;wJCF3nrGE6jZAJ+?{C^bwfiD&)Z-)Dz2`e|{*1A(bIe%92F zE!~sjo|M;!iv2sc_m#SOTRW|sc5jxIv(!N#zFYe(wmDApCg_bw4X)6`)?xUjcuNns z%{>4%XYUgXh!qN5{m;F5Sra?(*6^J!#*A;o_&h*!D#%otR@=B?-on$qChA-LKNM4A z8`;cbqHqQHZdP`!1uSBbC#Yphh2#EB5CFJC!SQ5&^($0%OG?Kql0)gSa2`*c4MKSR zVod|0zfXK(D9UhKkudEe&4+|rhk5C9Ds^6ZGsi>gapU$d7ug9UGU7GV9GGTw8a_N| z2i^4=tdbic26}n5a#}OVOHQ8zL#DSCsMS4J=TO`A&V%kParncV8hPzb^B2QP3d#m6 zxYX{uyH`uiubJ{J@+YsWhuk=O14i|gy^MS&N~hi{;RF-sV+;09Xsbkt4!jH5xQY9@ z?Z)jl<#f7fSO4HD4T7gdz5KSG4OV?EUYFV_uTt(hOE0`cUZ`GTTw^6~P@ zWT4gfTJ+GHoT{2>dLv0sx0{)kw{w)MJX4+-=;2V_YK}9kfAakIgRdmdK1c5^q?k2s zXk5D;2zSR9)bUo~wmAyQVHq$xKhY^iW`X}-HF0$(GoPD7=O5vslg2UxrVgI1_x;fVZy~upcDk76$^G6F95*N5>#i`$ zeFkbWp(1ywTlusCu*|(*K|{BJh-Dr$CAw$|<-~hcRuB!EC1^qfsum*4-MU(J*cmEk zOlA4U9$^uR(0`wR0wtpjzoQ?yakc4}WiPd403Cwfx56d()q;rD<2{V&4?fki#>mS$ zf#DrJ)RGAcAem|nroA4W5C zLF?iGUKd7YG_{w&z{xo*1G7*&uRbCvbNDnvVSlHEW*Q}Nzz8n#>domm>G{$bspNMZ ztlY^R^CZz3P}d0okyroKDS6@$G%X1{F&-{LxIaIpCcXZOQ`^7>r?Ha}mB`#!P^f&` zmrrTgdNP;-Zs}23G)TPVb8ljK^Dbe7x4FErE!!mWp+8$oh?B7TW@IQH+~zItV+5fX z$`@_qEdh06$pB9pN@x>05B8~?sC-!o#oH|1Qx1{5Qvl0Ma$bU!PAf9Wj}yXm1-0)J zmBn31494;L$??NjCh0A{UR)M&0PF$k63Fw3KdID((mA^(&`+%nXwd|trb_|n9S|Ay zmmcQcOBNDF?$}dX0w{Gd`_S|oG}C;8gPeCS^;>#YbI4Cm3m$5hV1K_C3@$tSZ*n4* z2jJ~FLhHd1E_!qLAn4D)ip2E$Q|yu!s8AINGcxg2T{k_m*V1=|OGI5EPPk;$J#oB( z?2Mn4o-jHD*{p?|L2T-3AB;{^ku3(M%JDn3yAzC~DVvF1vL9jS{Ep%lXpbM$f>;d6 z3k*6kAA0L@Y?;>2o!DpwMeln9dy|j^H&I+6e`xrPU3t|V?XwB5br{S>J?q5Joa&y; zz8b#~T54NxmF`;8x%>z8^JiffHWb>*C*v+kQ7wuy?#lzcCpyr>N)<3uyZOhmj}Z$L zBzj+OY9RC(%cd@YEuhsiH_(iAMJ2mip{)k%IiO*jdiuLKm$)6f`JF7+@eg6*xhan( z+&6^feoz#vMRU^wn!k4lqxKCc_B(DL?o*DC><$;8r|vU5c8ET^0?r5dw=pZk#baVI zb?T$kau+`m5{5!X6`Rm6QEKFJ1|x!R5Aw1pVv6{UH$?wfp`1?I?8TWYCRadT{g=_Q z6OmuK$$|XCpI)C)6W=R(!;l`^(ml|(i+_PSh_}RXgcfpw&%R|~77Qh@F@*{|;Vqo? z-KHrd<&5$JdKmHk8tr0;TyqC12^3oOtDBd^R@{}7oJea~T;X|G_(rfeubjPjB>*2%g zx}|7dJPJEoFWy}q-`#g$iHq zUoip{(Q{}49Kf&eU1Yc3*GVo)`JkK!^eJiR?r_O@<)F}Y!2&@z`BIJhA0IP{WwxP^ zI!{7##gIN&V=8TO>feice72vk3jFKzD2Z|-%ka2NW}sBZfJe*@ZL$7Ig7B~Yw-?YP zBjZ<<_~+69VfG))M9pou3;h-gKuH?}H%u-8e)9aXk*~7;-K3Rp4D^ly9~3m%i|1_v zw!onVqoe$pDF*uzbFRC7i@&y$FQ{JycSu0x&D8#_Anf1D>#j!4Ox5|V4DEzp9rj4? zDHD&}BqArkrW=ZAnVsa_HQuGg)HXEV(<8tzpq)aaLnRa&=tGzvcgW!Yw+I8@uKwPd~D$mW3drJ=7(QzNsliL3z<|^G70<&{`HqjuUKM2S!>a4zN}nMq{8^6Nl5E0X2(p#RDC}mCB#uT}^y-m} zsg8=a_2Onpo5R2?d7Mn01W~y^I?R(-iUwJ`yDKk!+}M3G?VF?cY4PvtrCRwH)Rt5M z_3H?W^Pu4)D0)aAXc}Y~N{R#9gPM>-G-HXD!pLkDm7`i*Umr27oGN|@MuCs0ZWb^Y zFQ`K*rEY8gSj{2ICe>cZ@k~@jtf0*tZQ+IGpl)o7d#svOB@g^u)Nh>4%v`x!O!+#4 zQ~uS4|N40q@=kw1R_i)jDYB{291ixAtXTt1Xo8SG-+RJEpg`v$Hqu4&LQzM-GD)IX z^M%)`*&Ns`52zi3`EB}F?`Mb}yt;Rdbn)PPgv={_093xfgh|&B{@j{(Pk3+cXK21C z%0ohULZpN&4wPAmr;0oPLx{GJ4h6oT_!b2#RKAowM05gDgC_FO(SjyJ!MvU1mxxFd zBk?}nev_Zg(gnj)2M9wB-)3^Y7!brw`kX>*GLzi#;jXSEKXYcT%)Uw9cg0cvXyASkj-K8 zk&#JxtiZ?e-go4$U9!W?79bDv0jxO=z7Bk0fie8;N7K>F4(Kyw;UE0vRa2@1 z`>1Q?XjfGLuLo{47WvIvh#4U}@2NswoN-f?3Teg~;IoI1$d!=ahc+vY??KvZ1VKSE z2!Wjz0yD8sA~*_fuFLu|Aj3m?;-Z^C^`A=(MZ{k_kw5HMRCczkoB;w?=xYRdn1JlX zabBtpmx3LPu#Vzg?Hufv8lmqNo+Mv%|PGIq@qlrqLOD3sN?y3lv~IsawVP~k4E zQv-FGLUbp(qFC1Cf+Yh_0M*O}jTL_Zqo}|9rVEajGdi9l{}es@lf7U+NXj7_Ai!N9 znZrUsH&ODG1}vu@Vkhztv0~(!?$k~G+V+diUk$M0BD!)v_>pL^B-thycC@_wx7e2} zl0~e1xG*x481Zs4`JT#PV5oQ;c@yfHhUV=q&n}sw)nx8HCFWfe zj6Mz8DI;9_0}Y(;{7zBN5S9W*&&Nv=qI;oLm~XW!k{DTVr6HB}+Am5_ZCIuE;YHA1 z?hBOQ;ChIoo6-Q4N;XP0zBezSwgbDcn#y}6Odz8xRVQx`7%nd*H49ID)vHsDROt^9 z?U^HpGc@B4%x~!gt1JwJ6vp0zTU#Mle*3gIR(kch9MLxcL3{|c2S@-4s|Hx_8G{ht z(dZvv?7f5-7$d; z$*e+GU^m?^JzlQp4t>6Ii$-uoTJ+04DtrHRW#o|3tDe~u>FbsRBlobB{gB%5TyR9) z`uTG~z&@Y1mMf>2CA>vKG3F0fC?v5Cl!lL}q^7Ol{{lLS4&J*jYg^K$H+G~V8_&b> z$Zp&yP_+JahycDnXg>}AHH>NGML5K?!Lh<_T_R&GvHnRG!ZSK6q%wZH=5|~uX~W`X zajwig{|i!@50SMI6XyX8))T68^Z2i(y$8w5((9K_+eaB}U{Mx)%d5Qktw5U@L#*dI zNm{zveE|hURjV@BUpC(?j&{3LKAwI>P!-E(v? z(tzflNu1&fmE}Y9NrXV|eAcWh#Xd1xvM2(qWP?I!J>>WJFVP=PVg_fsX)}y6e_&#M z83$bS%mZ>15mx^d(v!073&wKAM^}te1gd1BjY&c@(p=-$2avR1IVZ!PJ2>gBe$V&A zr;WM&4_|czKT6qg;)eLi{3F?66Uj@fsmNA@(R^0&ioEb0in|L`&`EL_Dm~nE!XOm);KSBz@Z z?mXSEnjb!>;#-afGT7E?Ky+N2I(Iw2s;1|4GWYPMcb!jPVEzL;B8`CGxe+q1#~ToK zNv06+iwfo#l8qe%2If0~PT)XGYD{c=pq#ivLOUA##Sg4n{;`Y=5RoK;K@CoguNADn zIWI$q5TPwqltmbm%(-8KW4xXK3EqMuyi&IN1k}K($kYN@TIKj0F$Tcr0CL57s{I>H z{5M}hza;YGvm4?L?LqZNwg0LAHGx`F4GW%~qD+D|ytx}y8^W7~N0FwB^>_7dJk^Kt z{I{@B3m~r9a-Ydi7wf;oz#BYT(opoI9SztWKQY4x%;Z}x4pD+c$uJhV;Z#KKk3#P> zg8Xr9(1Nz4$t)3>NPG{*4DDh4Qog!?SQI{jaKn3#5Jm}K($4SxxY1Z;|7%NGEn^v~ zEfd)g2twW!b1v6{fc#zWsX8Vf!4TV3kgGz+_OtS%5SB01%>%_Qqd`*#vs&dC3N7No z%kJarB%v?>g4)_O_=}N+bx^DdHvk06 zT3(3o+R)j8dK-CRU>rc(Kh1y*|i#hqNVb{M6Z4_fwOrBe_rjO641X+>%ph}#BxX;J7`5QaC*0s4 z*qc&%R`C1C0a;em9mG?|TWQF&Z^OvsL_L}bO|CU1pL5yoXNhNIU(dbV5FT`@S+ zBbm#6bz=81M>(F--%>Y{&6~hT>P+BN@*F|(0;+lW5^m~4@keBFNXDvZ%;Xz#W1uJ* z(0Xx1wG94s#YRN}y%;BKHBE)e$WwuUK?wcP@bmyQw7xXd?aB&1%AGIww&IJ7+tPyr z$1EL`yr;Ydt`b;zy;HN^a5Wyy&UuNJU$t5MJs?yf@26+&bB7&0zgbw-gMhmmLo2jd zGRdVvOcBDB5EF5Ehc{M9z5ItC%Np&F^&!Cg0rkV-;TVvxQkTR<=aYUc^Yw8N?1b;) z2aw%<6#GSMiG91jh9JUrt5j~p#>TMG$*1N@_~DA7BT~W13?4<+;Y-Sp>!zYe+u!Zc zii+n5p&=Ja)yMVu%6?l!W{O?E9zcD`!HYTMMybWhc!>C-xuC{*7Zql(W)v&ll`3-x z{M>s`FxcCsQlf(e#KA245D67wLm%1-4*gQ<=b9<*!tRb>9&=pvpA#<;PLqY^Kb9?B zM$Ax}VC}XIcoGiS8?dSemxTET*x}W8l7gVSh2*VV!q9_($)wvgp8M3r`yU#g(4F|F z?AwNeV7^rb0@4)0+MFSX*&cKW#CcN40y2kE%z_r=-UD+@;r|6%f_=Hs5Clvy$Uy)I zC2_|50HhGg>2Z;T_Qu=;=?oD_I7a%#ju7Cf0DN z$oE0S10`%%Chh%tT{52SN}Hi?v6UsV;lb{ zad`fl^Z=6@2hfMf05M&Gb}{uRq9x1W&%iRySy}kIxCVK6C5o2wm0d;^OgFB)vAWZ# zYs@DwXZv{nr6~XH!w*xkEKHsy1{_KWCvNSukrp^i)XT`jX13u|v)FL~mE2UH9neL> z-wo<-8r@BFG2>@}ks?p+@Xk^7bQ*~!*SEnA<--ha&`_BDn4MieHc*iGOgCIBsP){x ziEbv+G|bchNY`Njv7U?Q0wDLYeJeVcZ)6BInld@3{K$aA*>^GGieJu}!tzWK)vIw8 zKfN}^u1tVmsrzf03BtQ})9t|Fx0e&hr(f0Go5)Q%vqX@lQphi%Hq4kF?>EE~_@xnQ zwLGE2AXju3zERV0dfsl_d8Qf{Oe@vX9fd|Wbob>%4943OmehSc6Fgg%UZ=fspO@a= zm_tW`a=dgik}n6CN@e&d;Tu|Lq2A=xhxmx=MRx^p*6_VAuvfCka(=}Kzn7U1T0lCh z(zjrj>f&Nxy0OzoOfX1bu{w&}?kJC><~)|aZ23JsXmO+BUQNt44>_rW2@!z?%2!6V zK|09I&|y@)R<4jnT8eXXt}S{ZCY4x&ldZK?fHz^{xTaSt@U6~Q= zR%_>jW$ri4G&$3Ll>W|ELqliltr=1*JyqhvfOqr!gYGa<6H0USq8g8!~NC2Ju&&Nebk+Wwoj9c^u8L)@a$}a5^z@`Lpa8 znXsd{)JYUCO>_^=Bn3`dYkx+RS!TS!4on|vP5CcLnc{&0g_arll>XH(`i2TI^J`FV zvgnf3Qz?cqhKk(sJq}S@pFh3vx#hT;?0T^MkkER&-T}CHDJj1^H``B(jkpCz4_INh zy9gs;)c|YOd-P2U8z2|5MWY|7SgL=l>S; ze!3(Ex7YzprXG*11{mYVvdnwiw&M+g(w!QREC4xw5_lDCsSO|K2RWu-rMwB-D%RhJV(nu~Ng*n1xvtC{TBpLzO7s`QD)AY=b12HLA2VWDFT z4d8BFK5J&Rb_98=7$Pr8$A#+x?^*h9xAS$W+B257@Kz<2I0ewvjso|Rg^PybP}l2O zgH{_gUiTzlbq@bkRs*Gtip-$B+a;j=+*meA*UIQN2m_(%eoSo~g3G1L1Ha#w@e`sv7Z*&}nbCnEuC36aH`gP&Dt zKy^kUZ|-DXK+Ocv#ZS8d4aTj!+kAcO)iFc`IY%#~)Qid-jJqn~w4BdtKK%;Jc(^_f z*$pC1t3#Q#(pcAFa{epgB3S|V2dwcA3KLEj89>e+FW=I{A;~&#+NQsFWS5n@>7Ata z2M1TVyQl3g0dSESbfQ!#-#+5_HjC5t8;!e7^ov$MQ9T0!{2sqafsHt%C*dui>PB8-{~DWVB1o>X;p-F;*-mbdv0dBsixT6{1Efyq*O%G6*CMn-J!3JZGHFCj%K-1>LbtE&`>|}NkqPVh(jHQrX8T5+tGoTI4X53cqjqPg zHb!o{fWZVrN*ae0JI6O>{kz~g@92~C=R(wZi&x3Kt8OmSL)|yb9>B4+0!Ar zFNW@3p(9l2V{RMjrd9TbFjv2D`QkaMVyK16_3oQUYrGaSn{?*+WSuk^v^veRLDtiF z2Hzv_@J8Vzjh-+UavO)8kfZT@2leMy8af(2 zTYE~a*4)``?S@5Fp9g z-d9>^@Mjqjl+{Fyelhn_CCg z_+22(f8mfP>bW&pRYzeTI^DQHPy&WK3Ij9uM6=)Xc{I}H;7p=^YPsJ&FEq+7KL8X0 z<~a#*d-}RDYb`FAnzfr8JTx=AO;&us?oR~k1SO&YLi5=%6c0nAkI#8EZ-~2>R{He$m&V7j_En%e`o>3!N$hOE^seXn zO0K<$HnH%ozFN0?jy6N$t{JT`2diVgIoF4#wk#$2(J^O;XDIz2B^Uj>IoAc z33SPEyE(xa;g)lNjiU!sD=@%HpasTX3o7ZM84X_9WP9p@vPQ_V#o!fj2SAs%dxovX zZq6^FT^kSpT%}X`2axFjGB*`70Rnk%M|kzeL6y^Q!NRy*)5m;Go69}CzSdWl>)#=c zQ5&);k=cZl0=mRcFXilweUS|HyWRW-`tVb!$OO~p&18e^(aO)J3@ME0v8w$+mgoC>?Fb&@dZE`Q0zxEz`{Y;@jp@+r zet);+^t3bbr<=p&-G)+;eE?I)!-j-|fU0ZqAC`6`LDc{~x{BAYOeJzv_J!3hq%5*L z>&ti0?ZUwPI?osz`H5k#Nxk$YZ{3LgNY$QQ;U#V{>F-uv+Nu|IO8T1FEU{C02^ro) z5oyC!eS}}~#i42QVj^)#oSeUi)!uVkyauH(J3aJGNS{~trrI=i9d!_=hb_kzXpSa- zcy~lCJ#KgIh9d59H(B(bxki+;kTWCfXE3-gap9!d9rv4YULox5QPcM0uLojmw@R|3 z>Grl2w9z@5E z(;FKbn{G>#1}PwO00E3dZo(md65$rSe$aDzCAv}%2&!RMF!e=~PYD#@ zWthFHchH{7wRAGSFs7+T!7kQ0>|HqOK+K7{l=LAs!FBvWte;<`tVCBbh**ArYHUF_ z-@$7T{~se|9uAiCDnrjoeon>RJPT}1A96`W&;w}%hKf?zDzxsy1Qh-Z$lCtnlTzC+ z^gwuN>|@%BnsDd?R3iYH^aF5x_EdRE|wk;dxdGoRFAlO7vFvVYez@z zMLScB+S$LGkDWRzYvHe`YZYbo5H{hj1FxdtpO>c$)C;bH-lDNiRT~y?W=y8TU_(&- zKtfXf&44bKiG%cfYFTAJu^h9K+GC5pAK!Gwtpa^*@(xA;v)1A9_D{tJq-xrmpyCSD zUI1P@me7EnAP|Yr1@oXFVLz?U;WZ-=eULEZBdLv}+cI-cT}#*G11s65Bp+i>v`8i2 zs_(+=&%~(syExT-f%hr=&`nB!EGt zCsqy*>4Jzog7+to*)G2YeiM+{)TPbk^KZ>&DY$)Q#Tx%5v%RBpJ+#f&{ERMNfy=z= zK1FT${OS3dE)#=8Q`6gI4=+h zp#S1Zb-=p-Z3#G=tk*_qnIyhfsgI@GGNMV7il*2i?gqORss#ngc#T9!O;Mq>m&VqZ zGj5%E2TgyGO+T87z~L%_q1Gw1@Jw7oTN0gaLiEGTFU_Ey22%(7s_FrtHJcp-&Nq&W z3(7%frRh=}*i19`+ghs0I{9x3ic2p;rD>mkxf6AM=XM}fU5fC&Q&^Gh!ahpZB*Qwd zB&7!jc!Nrbe+8cg*@aU}gUf=!y=H>G)kgv;JO=~iYs7k^ga!bnmAe8s*l1c;`R#iS zv0!1}ZO==(IU_Up*L|;#EG@AX^YkaRH~H;NwWA)(H#Od;-*tY)UMA~r8M<^c2UfvI zswr)9lhhjQc-LI&3Nl~M5B3AB)~dtK3v|Qr=d^fSrcOdS&Ay`}LAiuSvOApTZ{y$JwEuOw=h-%{50WIq#_(WlV~ffFTU zlu15mMgH8M-<@myOxE5$s}^)o-h9JMyT)Fe^pQUIMI@kp8@&dE**|7h=+ zczum*4apfr;d#ZciCu_2m~EJyh^VQWr7R-TOg2F%_tw7k{S2Hk+RD@iE&xDgco*x~ zf$AH2&OQCMOSwf~aF>s`RgEg0amos}dU5v8EE%EAMga9NF7WQN!_fSDA-12q4KeYJ zYmzRoPHkjO(%-bCo?%v{5862p0I*4$1|f+Q*aT)~&(FDxG%Z&8M4PJoS~QJ0w6=Kd ze=hzaikAmqxBdA6J5y1Z*Io{`cOj1VfQfnq9X2}b8MMptb~itzZlJdHh^~ zrSDSyCYBUldbiD)jR4o{x(-P|n6?hme%EO`>&vs6O5www?BH$a>% z2z7NfgZ31W1c6?FwCM{oBP|_aC|TwdoU$<9;4v?gp;OQyh>*YSY3WJf=wu`2g+0BKwBBX7P~4VOI%kl%Vm|P?)Q4LCLb~cyVvSy@hWU45?azqY z)biBjl{#j7q~p|!<}B|suNN?{q(=0)9K2UmL|9OFyQ%@jgbxiER+`R(f=?qml3mHGICwrHr;8RR%< zeuXHBr&xZ=4h-P?#$5;kqoN?EcgxT=jP|xtbR|$Ow`%>O-?SQ0)M#%RU<-{FZ&GYQ(SwuXGb|Q5o~*6__2*E!tD1 zFBX`XPL&nc~b(MB4HoTj(E0lAuBz$KOkxNoE? zu_oWp4RG$q3&hx9BXr@Ezo`Rj+ezhH+t5BEpFmQj&6Fxk5cJ1jsBE14&~p^=55Ca-ptSGm8mm7RC<* zQ!4;95ir=+gZ;q}$gE85F3~%~H~QOSZC_5q$8e?VIe;X=G2wE8x%rs%CA0lOrITlw ziH@G6M7)KXQ^!i=ARL}0Qk)lz)_<*xDGxZPL?mikJBlsS4dN@x58ejC{+>ZA%p!Vj z#!|h8T0f+H%J}@%dhB|A%>~|tY8_LItS7953cBR>Dj+kI$w{8K6dn(EABIq1DCX)w zf@Z#-pYko-neg#%?5s_L!e>u18`zbV_S8N}wDJAe)DL%9+lt~JmVd}Tzddb3j8DG{r|> z<)8ff%FnOgb3GS){oe_fSDL((eSNwzAa4G`p(HQ>71_Vg-%DYBiwcAN=w=S+4rtjv z%l5!HxeyaoeWipN1B^X-P3^ufxA)JohM%^u*FT*;m*u=S+iTMsD=UlT20Noq%SolP zxE|h_DI)kNy22NyfvdhoEQ!Fi!w-ejZWReVe)gX8EoGhflshClgL$Ibo6jEx;-7@& z-BBJO-!eJPc;g$T(MmQxw>`G-9P{t{-O^N)Nysp^)kvB=eedfGiGUy<@BoQLHhzYU zuWkzJ84weOtu=9e+Scv9{!X6s^p4WKtDwU}@r2PQ%+Ji#=jn4bdgd2TpMR85ze_*k zS!c=V&xxyL{YUBO1S$_b1^QcZ@z7puIAN`B1a2{$|CuEbbr#$(!d%t0ZXIYX$J^jA z;daV7nHGf^fh$Nl^|;}AvC*e<-E~i`x-5@*p2u8bcE}Kb1VleTD-TsW2J*gdY%EnR zsygAiws(vy)?6Ms^6knDaZ{NTqV?QfK!M+^m4zIa@|njx85uAnONkVL3r?onZN7Ug z&p;TrLyc9!yFp~O+Tv_}?6pQkKx;@f?a_3NzSM#r=mBR94nbbAdG;ZX?zkw!(nrgg;n2rs;-P3TmmlCU|t@()Z{c zZwHjy&Xf9PLo>qtQeU+9rk=fi`&6fugr?Kyi*Mq z%m_P4ilXR?KrUKz@sD@K8=NgFVceiDBwl>gy8dF1)0{HVpPkUEd1iK7QJ%4RUO_D1RW$4dR9e z7;Ty(fON?ECET^go6F9Lq^o$Za=ONxo;|P-pBljTayye9ca+eWS&CS` z7J7}P$ulA48T0(~`B&9mS9WQAF7R#p?OGS=qWrNgtFsq-ZJ%YNjVBDJC(Go+g8^{< zYf)g)bzviTbS(OkFJEy?t~r8WQ0U~SUz6ihUtbF5V?E7rYp<8KwbxsIX%e<}#1Af* z5A&I9u4-t*#X~Pw{>qi5w>P1M=g^?Tw?KIi+5;%Fw3~8>1BPJD+zr27?xlX#tZ#MG zsD{cCF-~QdgN9*E)br<=K8-}(#~XD6JzLkBKc{EgShLQb)zZ)Y*|6c5d5!(T1PA=j zgmd-hcV-O;7EAyf9EoTOuZm45YS1AWk59JBXU2qo+HGF2LfJ$CNzO{Q`|P0a{3>*R zP6Uv$X{C9My+nMFhfoAJ>De3otJ26Li>3tH*M_e)n47G*7LdD^q>5vn&+3^{dyZwt z_{nKUM4agQ_u2!igQwTN7?SErJ%gKupAMba#1RtVNTb8deffhZ?Lb;FAL}-uqjcn@ z6&j^GbWo{OwPt)q=k*2aZr0ioZ?B8j=ig=&ZkQj{J+F49!1C1Ft)^0w(Vh&lu zu;1|TAgalrG=QquPSC+C;D)|t4%wa5xRl=y)?*z_7}uT)Z;x_`!j6hVT)oyN>+Y(` zKlb|KmebtBhYFfko|VOjJu9GN8SHArA8S};%0b^xKoJA6nNSSo-|o@CkkSKIQ5UWK zt>RsR#&iP1mWSllX(q5QXl_zaB?G%k(i!W06l}#~P3F&D+vzNe` z`2?ex0%c5!eoc~olLxk8d)2q#Y$Nn1J@O^ipr=t_*8U@Rw;xSO%KWoEA>s6&*=9B> zF?FWfG%XK2FqA&(x24QNQgk}r%L6C0=oJVpi8m2BKQhIL@*&i9Bp-dxzUZd^-h1aZ zy0|)W^OKEql6*%q=8x*X@EdV;sv9>@ma|)*{cCiWfz)|mEfdR`h7q)Qx$FGY%j_VB z#o4NF1Eun;0zJP!Z`(W`q+xs<(+lrzV{3ePkD!L?7@IR0_OW8nnR~CGVTBs|5zq>1|?pD z<1>a;tki2DalnsdymvpA*#V{?t{xlmJ{K&jAOpQ7M8RqlQJNOFU-s|JND-s`Dmq9d!o*mFSV)hyWOK)^l%iznqIt@WLQ zcCu@S$it_}{KF~))ck9qvX=mqkd(m9W*J@Z$JK*cN-TOXF)ZSfe~J>3vSh`^EckZ@ zzIYMWXdjK@wwxSqa7GWdeOXQAYL7-O8zGlO9c=AL^$Yo^cl^?d(;=f~%V z`XRlRd#!b?>v~`B>-5Y^ZnGw-ud$+ys99hjsv+Ug|CBo9;j}L^3Ip0bS`=*QatE@* zdj#Si-{D3TjLSm5(9QB_+S5JNH+|U=x%gi5Kwi&y1-E-;5wx!}oB3~2GI#eLFK_MU zH5=SsK6g;m(O_19f*0m23vtoPpp4_fDBGF9t90jr$(8sdoG-&vVO_vjF~erxCg2SWjy%Y zN+OMqiYu*>A9tuL{$v0zG9pae)OvMu)E!)p(+@CsaQ{Pc8hUN`wa4yJ+03vmS5NJf zweqLvaLtE05;1L;2X%pYd|#pfC#gr~-;$)7+v5?8Y^7>=@NwFW1cQzjmYp8!jO=c+ zq#3Zk2eSFtPGlfPabcd%XVN6#L-cY$_U5C#&^|InN*{uzDgVkiGmCG`P8%Aybr_C!7L%XK%%6SpI0aYxbTbMn?%o6vh3+0YxGpeK zxc*AF#rQvRjo(HAxnP_KHW!rWDrOUT5nDPrV;+N;I|Sj7tIADn7GyaBff8u=sFP$ZwH*vob(qKhAM*>~14hg#Kt+nIi#&NUqUD zO6UM?E{UX0h+60cU`2mfZ;fjwd;8~U042Sky>s|;wN^&-XZXlu1}c2(C)4?M$q7I zp2OiQ&WwAO%0V$?ltblU_2@Pd5STj%805PLJ26Wcn{gAIB+7Pr<(zVlKT%wGnvUHMo?2<)3k zHeq%Jdr zbu)6fYO4ZsNkPQ(hzm5GNEuOPV^-1aWcvbRI{_9$8G-SBr>eo|jdc#A%V&cJQm5*i zSt{KQ#y9*nz5KwEwrsrU)%PI?L<`oq?g-G4KS#hP8bIO;qq8n!{QDf`1)EPK@FD}H z=rrU{qUS_!6$>-%wh*m0cP7mYiE~v0Cby{Ci1vD)&JTUb9Yp@eh|aXmeGVc z+?tTb-0u0gxU9FK4bE#%?07V&Xr4-aa}L3Z0j(mo?)X6-))iDng##75D_E3Gx^O41 zW)^A=;`@ci6fkyPf6sx&9a6)t&lRydUWhwNuOk~{dy3&=WSJ)SknPV>JGom*tC{sg zZgQ4L*GjGic8CssN!SnieilqG9t72+v6JWefKq=)=4sb>70{2?&vQ2kHC@6idEQVU zCJKbr!xsGk6@L)O&&?iKrE&`NhBn&`1bWc|`2+InViR14g=O5mJQjE(?D-Cm(v&+L zqRXLM?x7(2yB)Fl(}(|#1Jh$~U|3alJH5jds#aG)>ChQ7lJOaHXSjBPG7R#Ejjs%t zI*6jmYK3ujf!d<&`QEHMK4-1e+=sFRSxo<6(}It=Ox(#9){{s2W(Uo$)SzxeCcS@Q zCD#E&;Ih54zKqM6Mgo}V1-q z184T)jDg&d%VoxST;?|pVc;o-reEVoAuz%>9G1`kM50N}4Y06-DjWPup0PnP>C_zK zTVn{d<_yyJG5u)L_vAQDVUzhz-=o;#q-En*-A(1tjB#Y%Pb%?-M@i?PgM9KU6qsn| z4JO(h!^)pM+*W8erb=CN$( zr;TEqo$m}RTwsPkrfS36XVM6e4pCcrNDBEAzgFU-HZjFXn#qsct0qmzv!N-3qF^q` zd}x7Gl$h(7V7tYbn-XPIav#iN{@v!{o;Pyg0iHR$Yi*wgD0^g0YZNUwj2PHPB~5*A z6f7nQqttvLQV=WGRO&iv~8GQZJu(h z{C)}W!^m8{Cm;lD3iTV8wsaqDGz z)8CzN=7GP|+N+~Yt%RE98NX=r-xh9>is~~p;bS9H+F&LSr`#{R6jYh-G&y|fr~IBB805DLtCSayVcHk`6)5k6T0F(X zbPusetOm~**@5|eV8q6%dU3$a;t_+(@N*Ufz-xDC4!X5;|Lj`NnukXt`33lqUbd)l z9*V-VDL0M(#8n zS(619A_w7@onhHhdNv92s1|g&228OBIxqJgMm1h?t4qWarHXPE~)Me zJpOOvKwQm%W8QL^y^N}+DgYe3iy{ey!Qi;e{U|+Y%`mT)tDgfV(V^Yii^e)%MRrV+ zw?F>@MtSW|Frs~&9!ZM$A5M)1^Zdqc9>bCu*Uz*ifr=-XwhUtnJZuO{>RyWhT<&fONVT`0erpAQ@b9Rp#re1K8i z0T;MsQu3rbE#0W)4t#vVFT2d|cwX@KT#}SDQbLwMehu!+t}oC%_}64dGr#&gO*HTM zZmGU0BsX&8>WwETIkL}H8}$}64ulB+XY&uBy7!rmivzpUXbX*?45;P@^@rbuJi0cO zQA6xEwT3UTUmw%F9&G6WVxQ+f1w%ouI#$;Xkx!MseSg+1{D!ssYTiQSHY9x!b+%Jn zD5x1p`>q#(JVFkN%>N=fNX*-1ak9ZK*%R6DSW?MkSnZ_bBZ1WHx9{ZCe!iwnu#=S{4+5t?_*1gAYAEG-{E^6}az>GT*8bxTa^1@%O_$66D_8}Ey|HSI} z<2F(!8CW3uIP`*9XZl3)4p^2ir{&3(!LtQ+L+<#S43mLmHIPT#)DYHC)j;=IrB;avS`5hHyCM%yHuPEES$Rhy=uT?v2y zJSo4!wYl4b_q%z? zjr`)&#mQfT2UlZ6cK z4Dei|2^-O+L&yc?*zG%3MWf|nf@2(p=fugmn0{dJw)ZXNadG`9edC&8;Ww@+b;2x9 zy6ZFTRCOhf`Om%0u>`5~Y1hk;8)05S`fqy9?YRw_+UENUuXIi9xr~#;>bIm*#FY}q z8Qn~vQLJm7z*97rc?eL>G*9BKo>1aEV^WKpcb&yj##*-7J;d^?)Q|~;$kpUOyW^-u~F-s$G3x|IVbvL zQo3&x`WXl?@|G#*Do+EhkWz&SRo#W7AFBAS09;)Y!d<=D=(z}$YjJxm_c_EWk?x@$ z1S_r&xJc!`e<8L~Q|sY9f?CkUj5@M>)|DBI8CJ7^NrqGXr6u}KPrI%h5p^usj^}lT z=+ch8#zY3UuYFqYXTS0*vOH_5?*I6frxWwwc;;(ubLc2i5Ayz#XKJJc)86Tr*Ss0Y zWM}Dsap=1O3Y-6gr9A9zJ+zC*^=}U*e7ao@3UB{|Ie3Xqb?ENW- z>Be110r?D1fsbisyVF(SW7hnl^KPnxi#!Fi2R#?_3R{C3S@bC=OU$f{B6B#~jOd?& zanhOgR^39;h{M2TVYTbDRqkwX9l78jcxwi%BVpo?KzPLdo!q z*#OoHDrbNZYZ~4LSfNJ)sZ0{kM%ipw@8kE49hOIHb%>KZ@ZGo%TO~a8qvw@YN}5Uc z-QA{>#&%CrNGDSMd${!1mnfq3Z{Nc1q9hEjqpm1Uh%Ki(q1QP~tk z&ns%2IcDhN%M}4{Uf0m6h23c|XiV4|%j$yqH^NpYG3@hgmzn?r@_YV?x=}e)TaXf4 z0cDDj+zs?oDIr}K%9|2j&HJeZs77{a!tMMwKYG{+bj{EWq?|4(>z2)mFH7s{ ztVI`_Q?_k_G|xnTTcfZ_v)_PVUIP=~YX*`OFfj)JiJu#cId zrK1AC?p5CptU*NBdTWk+4ce%z8|a8v08fntDuT+TK=Ay5Prr`15o8kqJ>FL#S)zEO z%>UKZ$yfXpC|+$4r>Q2nN1QmzoaISuN)|i{(WbZes=2w5^euX+`SjQzlRP8d-c>xZ zXCO#y?+&Rjdz`#FJk(YxD%Q)_zP`M{M829ux87$s-wPZH0q||KzG>S zGbS~!SLI7lTBSy_Sw8Nov~)5uwpI>jq-0fnvpsY9jD?3HC-*(&C-#s3l%CgIgB!+4 zwd1~BGoVKN?zp}!fQSXaQRir6}p8Ei(WU^=} zPf{~ulS=cb)|%|X9-*C+))84_rIgtTDhXfX%=>bVKxh*x&m_i}vp1GX+ij(m{=9~Q z%Pr1-mZfe=b>H;o-RG`yjS^Ej175#cAk&HHBwjwNdzhkv970XU>RaX*$8gocI$eI2y}E{!=P*(e)P2(J8zI3ISg|Pn~#k@=#>> zhu8jhubo(T>A=OG=~2%r7Rf&`+GKdfPI6Fa-uRS!Q`kN_uJswNBHN7Og??Iv0?oT~ z9VI+~9+7tWXa3_ESJFE*Utdr{VGbKd5Y+@Sxghx3fA zCD-rRS^BY4;H=wPOXA0alFGAc`3+PvQ4ldKH6bsh{QAll4h8v{bhUzmX?n+LNl*G} z+J?Grj_Mw46r z|7h~BXfherJ2xtExbr8PCdII?_|E46AB;16CTcII6-6C=wp?MhC50mEnjBc%Q37a% zA*{I&r1J88ayTE@uf8X;Lp)1^sCR}83rXg>kKgsYf|o8-IOn&$+Vq9N$w>*%KN6pG zCj97t-K^O*1)a~N!Q1GAqaky=cF8z{j!UM8W(uwG&Zg`9e#G~hklX2vZoYo(?()!~ z>gzQ0)lr(hhQ_~~;$_p)f{mBF{cUV*R$P0zgVuCGMGge+cr1*eo?xakFe4TMjbR)- zh^{0xi=lRzbvt$s={P5qbVP{u+(H*`wKrpXh+5CC zLx)){xvI!l(qPyTiTqN4FIJQyS1H?sB6A@UJjg2(pJd{r7Wh6Gd;VF9)l_MlT>X0 zr@P(^{uZG6xunMAb1s;A4S%f(W8bY~mR4EYp52pwDSG06cMvG}pdI5Xft`A8>5)iD za)6X21FGut8YqcbmSin!Xar^CoZ79(oC1GfEulnqUK^y1{0`bY=sy)VbvcI2qUd<* zO0}1zphT3AOo(N3bDFzNQa&4b7YXs~NynBBHWb~X$;9!ekSSK1ICJk|$IVAKeTiJz zns=h5Vuyn6BnAgl`%z%OkqHhc2IC}rQiA#Epsh3&t(&vsnG(sC%g9h^$jimq?+ zEm5st6y>P=VV9U)>73>DJ~^C_5uFruPkp8TQAK#ivr%jZs4Za}AQz6{p0XXA*`7>k zSOFUSRiA-O&39a$;?^)}?E}d2UaUT0JyyKFrTfZM5u{U0T)HijLFJCKxMSm~uj@`~ z=F35ZIRW`&>nG81TqLw$I@ zrLR(x>zxTpRSe7z>-nl*+JEU{YvoLB_(Yu?;AHn27Yw0}!#=DHGQq4ieIfL1(K&}( z7k$sV&+u~Ux)N;*4>+XKP_Ye7zVTXBjDRC&Px|$LtaSFC7fYbuk2>Y( z!4`yHRveiiweZ!3z6(%UCD@N5khzU_2l)TS5SQ_JLY7!8;w|(*WenRnQh&o!{pRjh zaCKh;r2N%I2RPKdiAZmFtY>2EZnh#PSt+=&aG_vO8QvxG0=}sqXzQdUr2#9w<5-7{ zPf`-!YPe{D{0Y<&_);H;6Dh?D9o{}#Ajgd*Eimac4#xX!+H8y85*vLja?6>Lr1&eB zJ)bKm-xdn8X8)|(TjVfwV9OK-yWO}VZ9&a#2w5#W*IbQTH8EBCx-G$Bd&y+*=%Al_ zn2)PKI=cU1l`U^Y&$$&vIXb(Cy%x=dG|z|E%qIYr2y4gMdnlWNr8p|kC;iHU7k=E~Uw2Wi#qpPQkNzHXXvlDQ zANOTLB>$1r?7nmcGZT*5LM;hZbfpaOVfG)@vhEJigkO_1=W&67IiNKk(!f$4+TFtr z>~=u=&kGk=73f)NDSFlB5n&X!+6BF8yO_bQzu3_dQg!Im`|!*?gQk1b$qEMs1M8iC z4!0Ps>d+7`YI_vcLJ_)R$4sZHZDl;2pv>!5(I4V2hyQz3 zt_ZSqd=B+o=}bUfrZk^k=tP!jXcR9z+bfq|>W4HO(2AI7$}|-k#xfX2gs}4jUR@P& zJ6AO=rq^UoSFph+Ap;%wGcZk{-f)@Q@ECG&4=Bz&Hm{E|F|*Oz9G!jQ&it*@-v(n1 z<@C>}nX)pOprc#ieO z0fC3EyxF3x{3JOxH9tS|X2!VZz`dQ%T`!u;kF0=GWstyJX*de&@FnrY@E)u_V_zQw zgX8=Ytl~N4H~*b5YCCA;5#$$dk^nO@bc(85rxw^Ot9u120dAHxjC_@Z&7392VE$Mr7|^hr$GF33VxdEcsZn5~r#VN)enu+d zB(mEpZqKJSa_TL*HQikw*Sd|*{;gLL0j-Z;z{%6;@96)h^ye>yPN~yH))_PC1i4Wy zvI~UtH>t8(f@|_hI_^zH=COjWk`BV0ddA4)X5nas%Z#Srw^zPhPcsh}XG~-~(mxmN zXs`1tc$ysr#8sEF)kxVN2m}9Ljus#k2y;mA(E2jqpzHwkSz{m3H>SR%`A=nMU7eK{ zO^k_5Cnqu=~SN!7{RJnxF+=VHV+f~=NaQe=8RI;s&doQ> zr_NW;jm)v{V0SP~ZEU%TDP3*FrwvaH_N;s9V6ZQ`=|YE<&E{9}U(av4S}9jzO)da= z49fF&C?;C)2uV{&4kT`sKrL*~BIVlapN%y>kq(JW%Q{&B;>N0T)2vR{1a?A!+khd0 z5?4b8)@BwWbrq3%;f22+q&!zIl`EODAD{COr+nnSWA#*V3x7ZW#kh;|Ujw*xya zLc!JD8~i_GKxC8ystTB2FzlJ)-Bz9-4ul_fupU+!e#(^Vl1wzbSGmZj;0qMfQB7(Z zKUY7A^i5hd3PjFYw9Zn;FGYOkDXa2*rJA#oet^As0Q|-1`o7y)Pa69tcY8fmU$ZHw z?y7UhffEx9uum|qA{l0og6Hs6-|=yHB1-b0)x@Jna{~e6f+tt!j81aNH0bHbeilI$ z4j}NpKYzj!yT&yRXQX>to%}mIyzbTYznV*Q<+k6!8zxJZ|4ghZf%@08G}7rcX;Pcu zJ4t=w$WKzTM_}U(pHhB_5jpTMG}~Rdt81!fRcFKS0jbI{Nn%<|%DSsp_IO!cHq6m8 z8XvhLe}9=E2JmP#F^JEMh8m@#Io0CHCRrILfwPvzIO6v)_4~L}VQ)xA$qd~-Y`~-X zjfvkdl|^5x@}~ZR@5J6}(!*H$u5I==C%pgsx9EQl5C!6#Q{APBfG>j(7tXShj@w+M zLPF`Gpo?;Npd6U4c`%Ai(GGU-_I=v%^?TcAG}?Y{%L-zcH}1_+PIswi@oZpQ@t2df zhj%Vryz_$YheL;d%_;vp!tHiQz7CbUp-rnf#;%xrT2TXX;%au<7d(Edd(H)%T z2Slpwsc9d}H~}}ZXZ(Ozuk1nn`FhK%=CZsA~N%)tdG( zC3fQ>3(ehfHCNOHPBH-AAxWIIltkZ2l88rV)&fvZ@_A!ku21W}XToVtRPIhpE85SZ zqI!X9KB&$L*h=Z7+n9tWH(qc#*s6Y@*;1#~+}h51yLQx-F8Tdrr$KQv!E&+6Ps$>O z+8p*C+%JZjWvu4^lvbM_n#cIx;rkF{$D>NPrfFQ$&*PCV3#7`~#=2D6J&QespiiHC1UK6e>=V>*~Cjl6FWK)E_UE@4nLx*OVHlojX)MTERAG#u%fN`f0( z27}UEd8!p9!Mc8~yKm;d_Bs<^0wab=J3O;86oX_Zy(uG-5+P0S8{&ql)eRx4_OOCS zM(V{hK@b@aC-h?fC^*82cCZ`FX=iJ3r$-Hn2-?BCE%B7Q14a=z-Z9Ko-kHoz?6O^k z@i_@Nw+~OccI(7rOV2*(=w zXXs(7FyW?ODHr5ytil4h(jEUYHxnLil%D$Zz?rALVEY}_#-A{8jg6$p&eu6jJSGUw z>@y1eSoFCH6mHVhKA9dSV6Z;EblBq{nbnCKOkm=Do}S}WY-aS=x14W&J+bc6=pAK?!26LBmPJhreoLWH8zE3ejH7gj+EEr^7(h{oDibG=bSTLFHi=0(hVyJ&sQn zc@JTK;P@NCkOa{#4#MdMt#65v8hRWp+vpWphK&KlkzP%5zL0jE5BqVtq@m7S zZZf52ST|tZ%NSSB{e`)g>UGNY-c|&{2$bnb!2AA;fkteml`WKQ5m#d1vFLRVG0g_8 z)7F^2zqA#Rha3ZeCYO{AoH?)93{cg z?4w$dGprB6p-e)x_F~(T*#t~VP)iU#b*h>hzA{! zmCH#+@txcBa@=g>aKfO(PT~JYJJ>Trh=JmW*okUiVe^(Px?^lF{YF9A=)-QDk(qd)L${D9OOu-YZO`62;B8DFb#V;!7-A7 z{{h{=`M#bG1z!4K0nJHsCk=hBh3ydVj`4dxZBQ|e$r$-ay)yyB*XMH zF(~;XE5W8fH+R}6u_h@sv+Lf!!^z1x@hPaaS3X7vTYguV2LR=Op?y4N5DnF;j3$Z2 zT+kbdL*K4W5%(7!NT^7m8{ELB%3-xyEM{ZDVU`yYlNWFlw%Qd${-b!e7ufWL3tA>_ zYYyBUiKNIkEdka=A1CLBC=Fo}Gk#Lf7>_ei8pDRr3@yLjUmRVBo39ffh&U#PU-^D- z-zaN*RP93OU3%=)R8`xio@?`$INs48UKEA@`&w>psCnc-ICKoeh!w1i2(rGjzOLSH zlVe6iuVY)6gKm~#j%A?T;DOindNi|QbT4l4lk7&@fqk}x7n*8}L3!%QW8sgs-B#e9 z56qo(*GwrG;+zeG=-Df(6W#;MXAX;gGFKBQHlnm2rHNngBco#97L&BNZU{YdCF&EG z93$QvNw5g)aCV#3YWcJ$Blk0rz2%gr$bI7)4Pwfg?{ev}7YPm_?qEP42tzLN{fWOz2*Fp9!7xioB9qjOLKF} zm4%0G*L=88-Mmj#zN#l+zm{dAgolzOd7I(ixCeZ{{Z0%QQ-ecE=6#{w4iUc!Q0r0C z&&lKv=?qQcD{`-ts5i-&KZ99%0zy98-N1tY20%J}WN*~U!Zu+vZ+&uzK;7ru^;vbf zV3FOcuN^k#cAKrNcb?oaqbu3=+)jRxKMf=ia1j5;5aI@X=Md*L%<=yzc}?ZKl#~fH z0!6!~C!;>~CXD(7?rM)=1jp=6h$$$LVpU&OPMI)wX?qQORk>fZKjWTS-Byb_c`O?x z2eARn>F|Eg5AX~>OOw;5;dL$QG@yj59^w`rm5n|;$<#nA^t>_{>IMyS1%t_;>ZY+G z3fQfGPzDQ7w&737N;KL<7*`!N+UcMPK-DI3TCb)YqT>C&$Nb9@lLt3Wl^$MV&~wQE zxJ^~R{U5{iWO@`)KV(V)Sc+5Ag7oeYgSB8;*DY+Dld6Ux`d07kHl~DfV zY?{@-w9S#q7O9ZmMAMggUZe|^5yy#d@ z6QzFZO@Kz0PIa+rJV*RlWG~+Ltl}AtT7hQpZEki&SjNXn4?IHnA4xc?cf{v$@fj1ZCvV z;v9^q1hFS602&j+YsbQ0)j+;HRiVHEqf3?*C-*fX*MK}NMb#R}H{bT3(*GSFk$Z-d z=TW0etgL1L6@Y@HNw-_XGaLM-vwN6obd7yKy~;mcU0Hal>}^Jm{vn$d+wcEM4vZK* zq5OLbuqG$B(&U$%V-O%zzRsg2lmd*gLi>H)(5#kSGv!BCmZ_ z{lc(X+4fRt_>I`L$V--HG^pm`)VksZa#PnzRAGvGDvEwE_vb4yh|91AW zQF0(RX`;Nw)I*EY*0`cc@A7Od-zfggWA7S0ouTx6^;a`{4;3y^yt1Ya$&~>qRq_L_ z6NkYxh7bIp)A7NKtHjwir?O|m_q4E{#amI|dmO3x5OB7h%4M`q#NSfNT%$?#69lol&D5BTrxhe zZsYvu>Af2kR-!LoG&0xHx74H2F5k56^N-HD*xJ%Iy#M>!U4M)qtLU12fAfEo? zU&!Tt)#566j--c6Ol!mJ334dFL+AMot6WZxjUgv|&yE-zUZt|uCh7y|N5Ss$A$5S# zi+~r`tE@;3nS?Xpu8%{paw1I|NR}g_YlAm%AgBqR@%=l6BDd2f# z)yatOH`2GKt{KS4QZSLl)UTAG;TeZP{%mH1B!qVi-@(nMa6$rYVkBD3X)Cj1CKXHq zqPfxbC5Po<^huyz<7;vKtyRLc%of*-{dd$?RA)F{RoviOqYh`{3mz2bpoXmdgK6qK zwZMPuh!#ZTdr)%sf4=MA<@o(m(Ve4uU02&*ef+1e@XCKmgBPqL>*^!A^RqAA{ZZb~ zx+A)+=H%I2xt_ybJeM=6^{83qpBEI9RaB&XBe27sdu+?ME=_CYvoBs{Gm8v)Mih-F zRZV|~>!}~s(%Iuqul-7ou8dJ2wvhi%*rW3ru-+w>By~;;_ndOM~>p=E-eNQ;>F(~U8jErTM%HHF6YuZ$WauXBS0-;$OnETuiD)F~g1B+q`?89OLTj8NCM{VIO;^>MMv zb(bYbnqXeB#A=lIq;HtuEWdo&XdlY+mZ}UhRS91ieRiazyS?o;Mq|5Nu~UJAV;Lu7 zy7qM}fFx?BSk3e}^hB{h2uKM_(2$kXOJbpc`@~w1YZW+!lUvb_%H5v1+7S+Rn+3O) zZNBzEyr6m8Pq8~Y3E-Ooe}_ykp^xrFKm`VKg*?t`V_0R)j$FMPyL$F8M-|qY)&Xm8 z2Gb~;nf+GI`GUm>Onm%JrA@k1Y zb|0t*=wGI>LyA($PhdN9BE`t5d%lPN>KNdS|!U|v$q zoQBOCc^{FEUH>U*kuGID7+;^SmeG1#`@XUQKHzW{FwK?sHKOh=ArB?2^^ORTEm0)E zy|sh&9j@SpiGIs3OEQly*pCi4CGHJ56S&wvoppL!uS{;detU6ENwsn7Uwi+4*l(8m zcYEG~T83dCM{!8=fUSRY3go`6v=%&j;EH?7e8iN+YSb_@oD9A$_$!h=Chjx5b3t0l zKZo*~eVA*O?RcaC8tp&&%kSiaE$>NyT5A0zk0Rag;=x&sxt`sI>uHOQ4;?0p6+d8H z2aVHLs|l>eto|O9J=>C9TDH}9cKh(v(we6UyLYI}n*Z9Q17%@J#siG#FY7bwm98@5 zT>a;qPQKb#`Z(dfX_9;=)Mxh>_N%$*Ijil&xn5tuWgJInd85(ttH}b;^PkVr^5FJ6 z5@vMQT_#FsP606(4NNOY<@+VA*b#;uqIFR65^Oq9NfLF0@z%VSQB|;1>DfI@|6Jd5 z1puVZT)*!9%>bbNTuwG_{-dV(e-hPL;g1ua0v!>Y@|Hkd@MLtyF^-fE7oOg% zW!S2;(EF7Yb6qY`zPt~hmPl{MS|D00mB%lZSE6U9yl?whH-)MImwbR@Ef?|jcc|%b zmfA=h#|sB#eriExeOB>~QQr4W%f^+B)>Z({?#K30Y@M&u2Xrl0O?YxvL7|=AO-ZZ`2s6KDu*0YKC))&G;$KP z^xr{i>4706dWG66=ugWlYwjse`a|jKOKapPvmQ}b2c04IO1@={L0#^sC^hL34C>YW zntANZc%SUkah2~k)|vT_j1KXrjePFK^3_j4wWAiv3x25+}zsq0Lj+7b5VblMv5{2 zJ3>Bq<<*K|ljRAZAut8}H$)jX@~iJXYY2ZcM*jCGKrrpLh&fxz+>Qh|nzvqiKC}Jd zX_vhxYx|x{w8!Nix7y%UCG=C1QwN?EZR@_nkjPoCW?sn2YuRX^~KP{r&+FxL*=Iz2GZ(>wSpPrRc+S7HsZT9~nEgGe>d*JQXj z=QDDDm5E$qILL@b7-5&P09!Z@ur29^lWVr|9 zyn3%50@P_GV*Tqe%%~zho1lI$ul7QI1QC%u(|pLWejXAr;oa$_F=#RJb&Ca4E>jTp z0GM`ria+}{HxGr8ZYJTbgFxDA=fYa$Stw2M@~Mx3_ALh<*AfX$pfq_O^Hoa#7wRj| zF_IC5nz{qpTdagcm#jhJyjv2d9}@Z*;KqN=Bu&>u)HSZdbI5JvFe>s`0_(K+-p}Q= z=TBCss9cFUUMiN$KWz>Ok_-uGGtla@2p>)V;M<(4hz`XzY4$K*PgH*T=?|}LO?zbf_X_3=xLyYe_{7e z=_~ySkvUBaTMCbvslB&HP%v0VwyO=he#0TtL=E)Bq$awdb(HPOY$+)|8(&x3~!a% z2*Yn9)Fqotb+K4ToPi7DD-y1hGQP;5T@`Ziz%UK1G1HH+*-ymJ_FD0lA$G@5lZxZR zfP}8X|Emv-GnnHRD6s`i>lK%HUZVma1s@!ASPEjzH>4dps#7?b1hJp`3&XYRyVBVc z=^8K&IjLBZ#Yg^dQh^R7Nq+;15FA&o5ra8Z0oxr^2S=#AIY1{snX$ z5QTMPI5Slto@(O=;7cNvCdo1$GnVoTQ#48o<3Mx<0OFsMicb$l)(ip@w_6N)X2gL% zWnr@_iXA|`^3S0v5X-OB)(#r7jtrL?3nc%*n?Z$Iosm$h{J9(t?s!zZm{|#p8_1vVqo#f92ZaeFZSc-|X^tL;Z&| z6C{2fB_Ko-CAslAh(jQ#A@L!0PiYO#q>}0oH?8q*X;_G_{_8qGE1n%n>%HxY z7owK5&r2r@m2X0~IH>i49#+h)8*svN-I1DO&&wkmbv`Bmi~-s(LSjq4GaQOwnR=o| zfzroRXryJfg6Kg{^AoPZ-svM4->IHw6<+-q+t{_y_j`d3dR2R76~4$}E66JHIa}Cz zNE|-#d-4;neLoB2S9VGxKOO2n<(LA$7Lv=2m|+{gpc}Xy&oadGJ=m@Js9lJTl@+E6 zCLL7&-6U+61FBbYwns+kymIUT>uAkGqY2T&(CsguX5&vqD%z4hREy?JC-kz#xF(bm z@;AtV2@g8P6#OZ+c>UF)bAI%;Z^(1A*+;aKzV4Q}=%o%@nE_HuA6b#g(fFKdv+!?j z={8$C=I5_~`Ec>E;fl)XccM{#xxt7pJc?W+>Q1Od|EHu0Wa1Cdp9O2vUxd3wjQWtl zH+|ge5D_9GO7)NB2s?{|^s}ef{Uy5ZzS_BscD*|G<^hKW|jAMRRZ(m(;6TP&lTT>e1Q}VQ0 zJNvf8B4ESa+)t9_5dHPFoK-q*@kT42n8@YF?l>Gt^5G%!Q0|VY@AFM}#3ua$$`I%Q zO?gzyPHR2fX7aw&W>)(PC@5@Pa&kTL&1GSRW_U2D`RDV`9u=2#ZVXw(8mxPak=v*P zy_nhrN!SHYTiQ7Mq*?3~9e0nIG|8cW;KeYeKBNHScjv?5;4^VS9+RHQjYBjBF7Kw0 z?>q!rqB<;XBa`cH=q9DQpP1EIY7N$#sAGVo^sEz5-yuomlqy>QrEUi^;*6&&#Hr?K zhFiSzji`5_0yI5+Vr)mo4?nG#JOYFFqdzY(u6WOQN_LouxmlX~_2g=?Xa2?&)pFR| zLMSr;I;sIBISlP%zH~qh@M{vwW<4ZU#IPz4DZ$k_*Rin))G5w222>Pfu@i=#9y_Ne$o zvVf^64S_VXsg+BGowCQK2EMy(P}m|g^1a^2x1L@UKU8$L#wC|^`1k?dg5Td1uih#(ZBE$(0l>|_TlE7}IN)-VWWe_1M0y5782oPlo z2#AaULJ0Gife;`G+1Wn#4*j2V-t(UGyq}(Dy&uj8mtBjx+55hK!}S|41HyF5q-S;8 z%Um;f#GjG9137=J`(W8@Sk(|!^}0Q?f4abVML0JVerdY>z6s^zd5ap>PV{wF!~@5v!~Nz)s;5Gnzu`X_5x;kGCKp!eV4%+2%$eOpw$Xrc-EA?u}! z!jXPkgnc1EQz<|gK`zA*&818#Fd(yGHKL~RZ4rSfZ3Lzb{P}oK2skPMI=_TbE(TZ& z4;icw5h!vm5JN7N&B6uB!IFy#-x@B4H$CMbnm@yxWbGwz=j!R9r+SjDil0&8Y=j~x z0_i7(*DOCmpNhiB0_mS9a4`j0+VoWMVp++Y|ArdltLlik{1X*UhJ=s|ydQ}&a$bRa z#IVje&=u>i3b4|(#qAV$6>e9stXbi}31T?;2%y!;MJ|w4WgAr=fJG08zzs5{QCbdM zGU{U|Ar=Gz6{m58r8p@7%r++@Y*!9NLYIS-+s8?vT+8l)J zRD8rd+==-(&l#5%WFckXkQ9she2?I!J_uyq=3fYKApu#54KG)~j;H!fv)G_ngkn9n zfJ3sH;BB?4k}Kgs7opzMV8;@MX${QWF7N!7@h)8xuA#Q4X2l=DwuuJuo94WQe0}m67a9V z>#}B%mB1G?05#V7r&WZ6@LvIg3^tO?95X>(Jo=R5;Eq(YL{Z=`pGHJ9B^VsTf)0Ge z2{uXW2%tbVs)sn~p#?Gq2eldPi@=fp0!E=fQ2LQN6M6+86JzyqCOe_Rg&US$mSZ^} zb+YDPV6$KMcgkqil-m$Rwv!?b4~8}Z$8byW3XULDSn(Q=+&V+UToCCdC_dtECG@g- zW5H#;(FB+ENlmzL{1AN~oxe|S*c7WIh2~5cePCD~>^2NfZXF9izsOMzcOFqlm+M3H zz5XEAjr53w%$zKwS8*}#7K6Nm5BP%3;X#hzuP)1gBUtf4+{P&6!Ju4`y6kuZ(s~4$ zKjA2(B_lV*JaJa00KeS)L9g9>4 zLCu1-a5n(Q{xx_TP6sK?s%djDh|PEw=m~{!8kUYDJ^x(acj0fh$gj!|VR+$+TOc$^ zE@UPDhdeR^gz+VSh2a2G&8X#gykI$+zkyGD05V=c8hn5> zxLP z<}?LZJ_JNhe0mH{@r9iK8vTRD8t5N6lV0P%V#P5h$fpL8!EMMbtmKW!ZJ<|r(`}0H z@swSbD-8<&{oKxAC02UiSdcXw1cMcJfG?8PQYe+-|BS*BSgPZQEL^f+EzamkjyYmK z*VFZy;8C$h*u6oJ?|NLrnOrcV0PR1}ybZXN`uA;=t2V)ZZ<#tOT|Kp=FTB=NVF1Vn zLD9Jm8@mXGa+fj>Lqnl(fs(C`G=@Sq|35U_De&BXVRk;KH&A3x!ll-r zZUmArU@Wtf(~u5!UWY5ZxI!-d2|zAkQ)n;)!HAw=vB8+ug`WbC(*y0+4caoPC?-Ht zMxaD1RJ?ZvP?rCVcH*qFMk;iGyvCg00J0B(*EGVE84Q=2oPW_}mTweq89M<7Kp?^u zkQEYKPRCAt;GiZF2N&Z0%|xay`mYv%r!QTQr`$0tj6=W&0eP}l$Wt50Yk`Kh4#@%4 zEr`#xbJIFV-Ds_;&J0YML(n6Cw;2BK$j!QM~WF3)Q;3_&g^*4~Ls1W4eZK2#ra( zxwE9-lG76>yYG&tRuk-oJ`Bbg?msbo@-zp(@^iW3S_qw-sRWghNwDL<@DJpy`(RhY zm3?tbCGEV_v7CbasR&60sRIHoe!bAaUIhlpBgZ=7yPKYisV z#k|fhrUHZz7gb1)>77K*VKo9V1A)i&>Nl8EM z96KyR#lS*Y1dk!kT)pA_`Se%iPSQ(Nk_~*92%k~^O{N#xx6gHBG^tB$ns1fMYe%tN zE|Es1_<{QNJq5q`)}$BpEOXYna4I?MRIP%ctJVE8SPmy(#D5sm3yO;pI;Q$i4$!hj z=ggK_v{2R;7J|KzlRS1%dv#i05!HHSF{@(4TsCW01@s5lb+1=B=cP9wI|F!Tz)3C~V>8z~u5Rk}TBDy@JWmB?uqWxc(NC(a41Zj6Gqz@ZMx~?vmLD#? zOG!uLuVynz0q{5%yD6KXSe0?)oJQ8btJ$sR!uZm~&BnLOhXvK_7aAeNnG8IfSdr+6 zt83M;F@WR3wJJWGI%gG_m@+Z3`Ogb)vTvi|p*iA;nM&+Y0=^ZwTtxq)6ZcecvO_%>0ad3Z-59IJ0+o$XROP#Ed15%IIdi-hMXH<#}@^KQ>H3EZps z>U`{Lp`;%)7>J~JI7QO0WZ^3aynHD`(lkA5{2K2W(S46gXPx1dCB${kI@=d8FOT@d zmh5`H?6)U~%?FWk__D3DZ3ffmC zbl*Y$Z*hj*YLJPab|d}`;m?3^Ffv8d9pzcQYnpp$h_}O+7k5V-0|Xk4K@=>wrg8>Wpe7!I|<9#vT&r!%ZA!{rF~y3e);D;p*n|~>#R@sn1YY~ z>Rt-(Kt#=p({pOARLt%5T0f5@-{Tn#p@D+1iF5ITY~5tt5?cQJ`rhK;6Q z0NI_Ua$Yw@Pb{|O;RmE?V4LXYuvS*U`TOI6fAs!hmH*LC)&DB7msdH9VEhE7BWI(O ztsS+DC|hDOQ^M3V-<8WBeh zex7w_1g5j(%_1lFKL6Ht^YegEt!2WBUg4<|{#SL&X>USV(*sQmOyivN7wzU_lKHus(qcRcU>q|HD%ef+@*Op@kwv5QQ!VD=uX@0k&#p4P6y(ic~4=D}(Q+MvI8)e7DXt|LSJt$~d=`dz06$*D=Rs?8e-RmjONWls7knyzY zWlvDhU|C-g7rJK{xY!o^xwNNC@3q+#kZyX+1^BHE;86|a_69Qz=G)XX?;L2-x{!1J zht$_tRJ;JL{0tTnx}p@LLO_TL;&`LkCPlm#jqP`aHj%`GxM}vd&aAMtloa%aSm-n& zcH$jQ5`rP*#*U&JVKcF`09Tr9@rM%Ht%}=+RyrU5y_&k$W2E)y2}P-*5L5#n&Pi4v zFTfyavTO_ICu}QW9=Jpc%y@`AGCm3{?SsaxWeoWg*a8WSE6HBUL6Cm})5{U>gx$e$ z0MG%P^G?ydvOpAerfvf9qc8kGzzK!w3Gb;)FsaK|`Lnl+5G(i0pN>UGb^U!^Ch9yd z@E=NdMrX3lD_7>+KDVdLjgwyA_u)q3yXS66&y&J_Jinq+107NJJz{cndNn=p6jX5( zdKES=T?Z6|!(yq4g3=1(_3na!T7gv?`ye~btP847*n6z-x}nN^qq|QVDKK0oE;IG< z<3o|Jj9%3Z+o>KZ*)3ddVV^*-?4@g4&r;n(ifUv z3C4UWn-SeR9A`2lz?UNP@bmFrS}(2#&z=Y<&ZjN)fJpwpDh+#`$M#E?L-fj_iLvBq zTf0UL^x^ivGX4 zq(gtGkj#E{3h$#{Cx`TyU|OY|r=%4lAS>f(64KihpWk)QYPgH!kT*zVlw2q)$d{SY zR+!GQVgplS{oS@ae;ih_-aTCBT>4-3Rv6TLwTJxY#30VLyajRLEG97mMoAVWh${IA zU!{?asl=9+g>>WA`{NdTLokEaV<=>^X$B5BFISM<@`R6VQwDGBSS9HKL-z4VMYswdoYGM>-1t}OphUNNN@ik%=738d0IgUG|(~6(zsC= zT%1Zw)OX;pV!MeAXKYSnSen1|OMCS5n-~+tEqwwp18^@nI4Bon;*=A>w1NPTs$jVw z=arN-cN{zVGt}~J(fk2mshIK&P$Fh#83Kf)MQI*r_lb3aK1y}DK;kF_sht90z_7WZ zZUeFonjzApZ;QZ40{|sprs46w%`}t=Bz9j~yXp0l(k!xH1Nldm6V$JQ)0hf!#W(ob z4rpm;3bVExEumU_krO*<6rX0tJBz^3ZkdFb2 z@?bx|v7HV@a^UT)0fdbDB11r|Ncq9gf!k}$@N@Gq4)?`3winH7^jTe9*sh?aA4BH% zeHotIo|=)7`U*6;$GDt#j*C%r4&@2pZC3}GM?IT{*9kR-Tzbb4$|rIVhXxIWwQ`(! z4<{|7Lio<(1=kT5Kc3F^Zgw2S>_HF-Z$h`Q%$*W4j-7Yb-)H_P!T!k3ONxD9YM|K% zhmy%q6l5}3WD3y9D{>S`7||8vGS-ydHIKN)sUuCQ036J0LmEMjIV>4WSve zZB!&$?Em~fhYvGBo`P5<2*IiYTD&Nc9qQNyt&fn22uxlib&}75)l6}QOy`qw0m6lS zc^v+z7;N{U8UUXcB%{mwvSb*VC?J_*cQ;@9z8%%k>%g7Jvwo%>YhDNigi z0vT?e&L>>RTd?cbGVDFW(a!eR^2!5$_k!@R13Yu;HFlUcr4A6&=HKc%Y#imvyU-LBcg(`Eu#n=; zyzJh~x=m=eC7iDEv9V#AofZzKsXcw1Qi+<9<3Um@Fo{n1gU-DV0JiB2C|Z#Ql;#0= zb6wg`zXc`f&0X-v$#(+cXY7m~)3{Q;4J^~g@Eyfe`9_EY^&|@^G%(F;4ktH`%q}EB z??PyuD3HETCtBLHP$xpG4=U9ljVy4b04p?;YkCZtt630zJpF~b?W|juWQ7n@W-xle z7vbBw?t>AJa>DQNmN)gDX@nXDada`{vd*fbOVj>T2uU$0!HJ5B2zWIg*o)_Sr#>PvPvdg`0X(s28So=9;887&jQ3W>*qoyT^=`3UGyh-Xc84K?@ zpXxat6LxBs(U?d4;es2vtLzU#s4ZNCoYBa;14{bXVbB>*WHwpW7n$M-gb+w+5=ge? z;Iv>r=4sK-?8fFUx*uxn$Y=Fl*@K6oJgDW1C2(nO5*6D&mD9J@*_+i<8ANw;7{2z1G z4!krD+P23k+}W-Lm9`5X`_Z#w#nsbHk9!KDAnhsKMlqk0)J>W!%Vx{EJIjZAV=sg$ z7g(Guq`JF*<<}Y(4zgzQX?m&~?)biJwcUF6mA>7Q$VKs}idAxehK;NiO_oBhM=S9e zeEMswo-8Pxx}aetJiX`a=1z^(K*J;{pbrKej^{T{MzN$o!-7_wbhZ$$nGPs(-DA5w zX3KF@!`d&A`2h1%z)6WLksB0lJ~>jlSO{8YK_zmSAZE&!iM6lHYKtpndDFY85RKAH z;eS8K0zOj}4FvAfxq*VlIZA-dK~Fm|RbfkT1>kVck#jb2T8IA_{K$y0q8fQ@MV-Rh^4{G)PzY4Qn^& zc{yD9)$TxUN8Jj$I!p8KP7iMiRg9d;l*y|m@afW{Q|eNCadKT?KFC)+(`4lUa-y@m zxR*W7qagp_IT!zxXVTarKUQjpapeVm;&ie<(fmMIk5^_<$M(JKdUdMENB`b>&=KP1 z@ivr+8dzfq0fdHBW3W)<35%`SD$#pN5))cIO=f#L@%deM|I>B%U+QIr6IxohrH8$n zI~*-fKO4B-erEZ(B?=(b2j@svaA>y?H3-f{j6C^5{z_FwqihO-@SvyYAilmgx;(Zw zHZ|N0sFHuGNh8guB3S?Xx*pQ~$Yj_4_hE&(4{yAPSpECwzLt-+==-H(B#tUvHm+Xe zOWw=DEfMSXNzBX2&+=8HV)KT2g_1`xweT%AZnM~dSqld?c*fQD%7T+p{akQV;`i+O zIk%zIHyJ&vukG^KMg0EMxj3y7K-&p2FCid;1>+&~17O$FR={EBN)BOhbP?;m@}mMy ztW4%1$egPL7j;Dz$#oLh3^TKMYYsehdP zxEg)m0>OWcNA8?}`Y#&iflPN}`xGO9yrPE|)UP!swJ0)m`G2YG7NKl!AyE%qJ(1FN zFOc1%LDcJteV%%s>Sg&91jjw=c3!#TKamuL{>GLSB?u5Tuw%(vrapv2MGZJ}H(KvesSk!@0%ULD^nVW19WYy`$O_mMIYk0lMtXPX|gD5dION@717J*=%Cd*(` ztIWsHHvQAh3e$W9GxZjP*4UkMP1Cu^5gfbeIcFolDzXEZMTS_}K2S?Hj>z%GajT%a zrbh5i!~}^mt@QqcQj3Rz9Vq)DA`D4_djR7|=JX9&F|4pMPZd#YRu&UYdG*-*E9Dgg z)~KUEc5;LP7YF`E6nF!>4A%4Hkcg$mK?MfZCt;4{cK*D(yC2q7U@0u{55I{e&wSCG zW1i#jnqGarVz8ET>v(JR*;j|{4!o#|U3YSA=$ffiRMefmKo#wDUPr*PZ;L|Y?Q~d$ zzDt4pF9@NEB)|A}1cz%R4HjPQv+4%6=La7N=d|p7eNHr?rD-Z2GtvT zKeLRXY~(somm^>&gIm%w{Gy>r3$&gq>|kMb$P7JrWd&U(GD=ddU!jyGBi;1P?5R1^ zJiM>nt}R+l4^4jb^ZNC63Y@wK+rOCtl3qi}(=0xFc3KZe7@byPa4>%e*m(mRNH=G3uiY4^m34+$|I2`TCE_D4h~6srlyK;>dGxooEu zQW`LpU{xzox37!Das{Oi5DUoi+zFb=F}1wL_I$wbE;Xe8+oXCzeIFIwAE}sBZ?oBJd`LpW~;V(^3+P+xhL}PJ5N!E=asy&emzo=y5FFx$;q~$I9JH1CO z`iYwIo`T%p+V|Pod|G|z#8rD#xc*R;*qVZ45K95#t?)GLmhw2TO@= z?pun)KxUo7!A_15LzUqkTJT=m^HE>;EBP+DH&VO1Qxa2BQ(g|g?COeEU>t8nMP;E4 znM01d|l}xB=Cjv<>(Wf0wH!fUHS(G z3I3-?1Z_?8HeYB>TZvt0O-n=mL&;nah~l9)*r}xM@Hu+~K>F=jBY`ibZF%%i`kr8? zIljYsqmtrX1_sXU(+nv<%i;iFOay#+h@1U#%|~pfOsXje14`aSZhsuS^jPnClj3LZ-+#D2BRxM9vc*xy#Oh8ODnqza zNWU~`?Ju`X&09NJwVv3jUqcy6mmrRB~C(wTabO^P^qV|{!m-oQjwur&t2<3Od{yF zR}U3BI^r+Zd|ULPQ?jA-5Vs_tCNOq=QnH)rg`Ayk2?3SX(Q#)V`zmU|9ZdREhRUR* z|4+o_m#omZM>+kxtmn{Xn%>PbuuW(5qYVPjf^q}C6K3trLZQu>_tL#)4?m5(|G578 zz}4uqo?n}%|oDJnt7K>x_@qWR=EI|D&OrCx9Q#6;#ZrjDy*vN;P{>Hi87V=Cf8j*`}=$Bx}Fs7(>mmlx@$`og@?uvsXvA&#ZQ`!B7RT< z#$zyvLIf*atVgd3-G_8mSDtF_aGk4mtXF;Iw3>KpFyiHv3uKr6%$_3q+6uMEYbSnx z>llm*L(PHUPXx##4H~Gp*@^aZo0*iTquc$xUrwRelW{;s?-5%8mQx z8jl^;Xw4{$zmQ3Fb@M6EU*hkx*Q7Z9@k$eYWxJnZV7z-ki_@u{jNr)Ld>t-D$G~bxM@7;b8=*tVthyxI{w^|e`HlYYPhT%z>DE6d zyHUaHJJs+=oIl-;iq(ZdU_D~f`~@RS(SH6ekUbhL()uN5F21`X$YtO^T)kYA=EVvFdt1_vx;2+;jP2 z`+}070k^8L=v_DbW<5Ri)zle{Wo<_x8KYs04B{H*J z)1nY|1KnUQ=85qNY2hvFk&F^#6Fx2lPN15LmT+XZ(|z>w?U!EWdh(PvIECZ+$scWx zp1W#QR_8Wm*vh+c{lfF*M$4bL97+w-8PEd9#q40Hzo;Jdz6*a*-EuUlVr1`3%pNP8 z+Ih=oHP?i`Gs3pP>4V+#=d}}Rucmppp5Gj4aCa!Qa_7c{F}Sfqi$HtooT(gj6#v0Q zE|f=mc{hjYa@tZU(DE!1NM_z&?MXVRDtmbkVZxd_Ag&Ib1^wlFhN28ok{~?!a#Kzi zW`j;vPO-dQuOL8sq8BtGef#=9<>vps+?=JbsgE$rq1RcWZHP15F@78ujN7VY?Hf7H z=`wBo!lTTXeFbqJuMSod;zVVfY`5Bc0ZQyrJ=39IO$=o(T-}vXPeGni&2#S zz%=Wsd)>x@Qj)E-mgwl=t}@E)?c=J3m?U)4UJU*!u`MEUF5$5;PI*Lk6%G7gjt2Cz z4=YH=#%3=6z>9pZdk4%`dZ)fa%@*2{`xIUwiOV)MU2Mq~Vy*u^zTGn?vX5-ZX5nT{oyJs*v|0UkLue3Tjbw4Wq$CLo!WP-q2 zVkQ3U{9r0eY9x3oR2tNCpHX2-&CC7U{W_WiqBwywuQM*WjTJ?P$mKRXM8GL(ecoxZ zt?)Ybq0R8lsi`OK@w@C&Qc_=`$(o5KdjA3784=(Y4}q$^dw>pHM>|IjoBRa;-S;IW zI{60Ji@wWstE4Narl)zjoKGv6W}YgUJwIzQsdK|?leEg3(eKk!vLdF{la8p zoIf~I@3bZ+xc%Mo*f!ix{^IZEKz^nKk$QGBwxxK;WbF6lI>Zl`Z5Kd~X{Djs^T z^N5Mvw6DxL*X!yBzk)!{m}eS{xkA3%mA@oSslfZCueR#QhnR_7X^APQm-wKLtThoe z4L|%ST}BODIN*3NxFkWK#MSF;jzb2Fl1bpl34s(7g2XD>? zICnp>fmj$vfFF-D547s&sSbMr%;)pa}#;l{af&t_3kf8LYAm91=52iRc za)MvN!dB(2qwx7vlgMZ<&H8#D{Rw{0Lnkk=B-9hOG{N>T?d>|O2bl+QPc$qLD;ZBeaD%O~Ema+3BXdE|Tr94B=y*c;OvIl&&x zC8}AoE*WN?jpZe#Mm{$?>-^SZ%fl0>$$t-+bJ{2)ad{kR0X(Zz2A-`~6OZszL&~;H zFLFx97MrYAKgMnNe9NZY#K1_9NHmm1NOzVEBib)n_f}TtEmL-RWwb_dc7<|4y-1Y_ zlC{t$E82L$SjnVr5I_^((76&N+`?Q*>XQEkVjq)9lVO*!@Zmh6JAkPo+kS^?lfBb7 zi|3VY!U^2W&xi<*RD0I-vVED*N|L)fA&XDAg;$nldsV7+YE15SDf+z9QdcXPe|Ys- z3yTeBl2MgAM>CXytj|6dx-^1?X;8WjNM2V>3rY*WH%ud$71F-~@d8$xXZHzfmBK0O3PGP}z4$v36v{5kJS zy8QJEUFtM7g!H?R5+Wgcj`L(iwLK(pviLZ^ZbKN4eQ0^1ns3YBztCYJ-n;vm=px0s%*cbOS?kqs9Ztx+*y)7FXrqAO@AaB=5P^U=QHS4B2olOj+au`N10eeyk8Prvw2nhnF!RGILJWsNs>-Z zS4xSn(uD4~!K<>NiVoVwd~5h@5ls#Lp_@ z2C>s~of>~{@8L)^nfX4!TM7&<12(DI?T;?+vsn8mAykp2>t^BMl@ba(V!HI(qCNZx ztW&;O^UBCDH>jBUaOxmV5M1*m zjw5?43y1KUOqvh23KR}%?Lh|N+OF@86V_bVbRq$VCdmktp)BF;cl7?>acil9M%?J? zobY-_;ZQ@H8%LyZk6W;ck39G1kf=Br5MjULFr*0b^ zJp}J-H__MM^Xr0tN7e?TR<9&WYB-bSc$q%H-Z!xw;j-Rb&J-ns~oB*F2T9->z7 z%T+Jt@NMZ;u($e^KUAEVnvzaoWO`hC7Sn_(Z>D*5)@UQlMAT=FS4rB1$-_>*)RVqc z@#|YZ zXe&J)+Jgn=b4RQ+Kul<`>OjqBOu;fpraP|kOC>MbLl@$6XB$!*-G@!IzlFi-DM^VBZ)rGjT+bxQIOwb>T>CgY0& zBu7HbHg%aLGL&<{8a197lceHV27jE3xU9Z6*C3G9+TFZHztK1ttF6R;H$$; z=G>JO`&puA*qgB%7=8_-{>+?<;ie$x;LwSA)9f$nK(y+;=|fhfefyibCAn#pr@x|i zfHNb2?!a1GsWo{(k|#_X$@+|a42@%lm<=j_jMHC0n`L{5$#puB#;RrIM|?YacwubL z7I$Bcx2Gw+8|v--$Sz(ETA-u%IP6zFD%M)Q>y-bsur;V%&YBz$RDTJPI5#_~4`OQq zp0GVz0&WrY#JgQX8%v3QS3qQ9WFLq1^xLAlVx*sKoVN`&_vOESfCFWU0gU0}jZfd( zWGQq)by}NeB8J64rJy?J6u3i_JZ#13!RqD8ouV19@#+Z={HiA{Bfy+z;qmXHt6W%$jls-4ZeU zMu|GpWP^Xu+uN4Za&6Fe@Hw5xXnfmlmP^DqxXOZcy-l#e$yFPM{Q{GHn%>x3K8-By zev6{#1ew#+Zot>Q3b;y;T2P6ShP3Zy$=wT(jkDUc9s@=8ic5g{!F;+Cx%_R>664z?<(FZC z$)~PZ-0+-yqDO1Qgw7!?`g-e@-sw9k+?qZo<@T}!puA>h`O1?oD15i~&vVV}2k*Vw z(Qk)dNTyhtLVhP84ChTp0JJfc)o(R#vR4>eEE9W@ow@M^z}C}N%j%i~yure0BZ?c> zrj$ll45Us&VvQ4&W}5iiS$E-L*~!$^ZT9tNo;Iq3%efO+eiqt989pj9E2A>&aL+kv z>bW#(?(t6JR)6YU_&G>K*L?q_t5b!}!pjJk#47FGMa^N|q_Yp7F2Aq~Dw5salQ>Fz zhMr++HR4BEYN`#=I$+tualPOGTO_!o>5d;@J#YQu30AslLyvi)S5h;fwa2wQ z#{O>OdJ=!RjSY3qO80eZrK9Hh0P3^N|B4Hx)i7Q;*TW)%7}yR;@P!SgOQIvpV+F{g~G&5y{E|3!UTY9cIwxx z-yuEvbN149&JG%VP@+kc90ILS&h3T4Q%#|y&6}Q7<4*@_NxTN0 z=)2ywL(QB03IN!4keJd4@_XbAZaH#8@QjUF=kHEO49OQKtqKvYr&ft`L9@xD&N8(& z8RJUmaJvR{S-|~NKRZ`dea66wuHzV;B=bI??`?l_PZO#H-besuZHab2B)TMZ6ebT^ zFG$}~>0yBBK6l6u^^0^gG62(x{Y=hyNhy4Z{!CD$x3@!F4Lx(uo_ zh{WfjZ29|(jbigfogu?s`gC`o+qX|$%DDe3Ne_)~pJCDHc1hq4=n%dYagS?<>*mws z(MUrOG!uTkx|m)rk7ykNK!O%NG{WV5Rs4@2l5K;21v|B9C2s+|(Je6^ z9;u(;X9BZs^6ZFTO-((X{?{)hu)27~I@;KLU>~-9%w;_zJyNn7K~eENF(G-fFe3I4AcB4Z-s~B)b>-@>_a}yXtuRON8`Js36*D>%o@W2dz7q zjKQ4AtJ8XN9ViKFU5%Of*)U36=fC?#xYz_fb7q6J^oL|wYNZW&6snx5)TWTK)l-$g zv7MB(3bU?i6^?5aN@e+AADh!A;&EZG*-FE3TeuEzO>ZCKuH=uiW7gL38(VSqpmG;v z7ZxQqS%#p?GL;b`goJ&j4VRq*|nc9DmF!sC~P8=^P!SX*?6rz4&= zlM3Nq5lfTi*Tzj!Pclssjk;{0RF>#>dndXQI5@e*n>SWlj ztAKMei2Y0V`iS6Pt=GJmwHGRk#05~@KSX$;IoV0yNmA{15OH*(C5><)O*X`-<~%UD z;aAi2=G&s*@db#_M!0(xaVGUGYHjnC+F)AIQoQif~IGmZ3Ev5w}|~<*_350o6*~uhK2W$LG1BOyn6F z0)LN&zyS*(@F-|f@NnO?O!xcPb;ko?z2ItPBXjhkZbZORh+-|mNpK)^uqWS;FsHL; z=_h@2XKvmqdv0Vn7&wKf%BLi(R+iZNS&>*^%@1WiKcvYj@lm_AYclbtM^C)(4xC5` zN1H7S?_if8s23JU90=3&aYAsw*)o$3QtW`b=UmwBTZ%9)+Z3#R7@3b6MOr?)KXlJ0 zhKYOD3?$&W=@&7c$`|i=KepZcTW;NcEPC-t+9H5qs7a{m!8m}lFz_npg*D~#B(Ur4 zM^LKRE!k({0M@j|Y|Ls!>Q@Z?khAE9o8e)VMc+MFR0?a4kgUW1 z4Js7dN|bT~ZHN$K%Gw<)kD&G9bEWQo1&ENBvL|z@zMdK9nnGiNTdm?N+-gO*{XcH? z!V<_p3wq@)+I?6gl8uiCP>Gn1LO_ru;(k7I$>P0WfFra_uyR_u=4@oJ^ z&{xM3U;Q5XELu^8it(dQw@CW)=}~It(f%tA#oNu_C@j$=UDA)!-ho0m)aUai54>=C--1axsdMz7J#W0{a8V(D z^^LD_OqI3EjV=bb83nKR&c3=MbeH)yqdG+?KI;Zua+*=~B&tg1!IYW)G)wxIJF5dzzep!2rO6S<$!d84KZ<~&ZoBB>%n56y5XXS`x7mHVhn(m9dVIQO&Q|pi*ZyVq0 zg1YoS$b7_xq6|fASMg~QLO071%aosQeHptwA!%R0Ugtl%W0@bu{dCv))fg)09a zBe#T+JRW#V5TD8>Y1}f)HV76wdJ2A=0t6?1Yp?F7zsZQFdYychQG04zk922lAhvi- zqhiYSM-w4TDL)_%7A+dbjkubX%UB74XJ<0BG}g$162!+pvSJAZQwOhQGNAAI8+3V- zmLk*9w{=`N&V`lbZ&d2+Y{iK_o6i}V@ll|s?`e+GpUDTiX-d-Q*(zf?eg7}mk>pYz zX8<48W3lOJ#_=tK{*fSIIs563ncJ?j6{x$YGiD zvn1BR6`HM6vVKN|UoU-gc7WqlL}6}OYr8CXS*cMAC0pz^`vvb=St45P_Yk+GReJb) zpD?;!ajM03tlHz3n;!2Nj64w5D@P?|Fb%|T%o>*xpoM}UvD6FNK>@>3^()e8gbaTxWog$w@yJlD7g7BZ z`OgMV{70^7&4UlS_vXi5^}RMl+VAGc4Qr{cj;cLi=lLYB@n!nGc=wcrtvXwx^(2=m+4g)5f@>Q;JWLkiGhmQm zhpR~0x7*$s_pJUbk9*O+-4}DKQSr$ERLb;AiE|k}YMb_SVP@B%i@2H%R<+eUopQ+q z*wgR|udMR#dQg$uY3%-E$;8yl&M}&U<(OzBb#j=|c+%O){>)1|pJuxz3&rCuo34hf zSddbn{%lrtTtv4sgGE~XLHL}C)Xb!<#z? zSTFC5?QO0+we{DdR?pC&;&?4oPN$;*f#S0NAN6F~1t|f{1ARmQ6rO}Z*0%32mP?Bn zGVB5YZ=iGvBU?e3lhkPw~xRdi#I`pmie=5lfm1IEb zeIf^OV6T`N92Gk(bJ0MCS;PB%e%Sqi!q7emui&7T3Q*{-(T1~)R!FVLO_O?IxD8?= zL0|$V=zisXnf&ZZO7psv!6@0p)(9yuPP@`^=BoqO^Un@RboSmWB@6j|58|!Oj%WTCl=~AXCfwE#Qz; z+8#WyTqI--pDB`WWfL0zD28JdBuzU&pszMdfOlikKyOI{P8x!S$ft>f(*!uVA|s;! zQFApAJNtSP9cDXvy8}jpnntJMM)MJKe0S!jR5pD}9taNXq@PdUiJmz1%i!Cva}&FE z1%MYwdp)K%9P|~Mif?*|YhVnySIF5cd0bg4qQ@_vh)|y$hPKkw{`jNPavoKPLYwt&PG?-&N&VVmot5%i6v$u^tkXXfR@yQRqTiS4?wSU3AlrUd1c6aW=5^cOAc$ zm0oxF4sd~c4g{h&`AdTI0K97=YXk$=A_w8a{89wzmbE}VCXv6m zNOJ|)5mm>}NGtPNL-8*1bKa`&mb~taR_Ms@dutsO^o<#yzc$wVlqXJdI{YYJHH^Mw zQmpF9rHrm_!)`3G9r|KB%(gOw@EM_nMkKc@bKAQz$6ocms=l)wCb zD%NTbzKPf6O1sL_c8^^zG`!?n?y!M-D6sfV*v|Kvkue^_9~}OSdp3y5-3!b=x37`5 zAKbo^G-MRqzJ-`zA%L?gGO`NF)m;7lb^Gk@xZ%IR?FWn&n404!{`a?^nuri_^-3TX z>^BJz!+;eU)@7G{>SA@|QN>JO)BQtppaGM4Q@K@W;ZOGFIQxc$1*Oa>opOy``l=p3 z0dD`5$i~)k!%Yj5t&dw24bKJiY0S7~#`N^NaAeKSu64?v{*t~Gf&M7ZXZde4@$J%Wpd_XtPz|Gv(7dh`S_gtq z_)EjMB`2cW_gq8ZcnvSGRZ4%=3AnxsoMNi+E01aUhpWX!o;q~n!|t7faW;wfua$bD zVHDvu%%Fh|IJZG`piDNs2O=*=<`oF_kkh zMN&>vVWt@F$}UAwDT){+6d}jKWF~}=#+ktw=kv@kgPAe++rgLJh#wL44lley($+#`C7=!aY zv`;(Hsg$(9uO1DUx`b7@N9qD7ou6<(<<#%cKT=3RuyFG zy-k(}lfV2}vY#<>y9olV@N4n#7rH4qfGuNuTENV4d3SlA(rwB}%j$bW-l(*fAeOLM zS9{_9bv^39x_9he<(ORZCT{0&YFyB}IN}wS#=!x(bw8X#)p-mug|`rUs4gh%1fTO* za|28gFKtHk<~7q&bB#;t0Nya88QR!S5rHbQcC%MLVPAu?m023Nf%xU@$_e-s|S9Wb+xK8X_~DyR^&ma4ZiI_edkEb;cO%Xzl*tu zm0X({gXVK9>3LJRG4b6LEn$+Ax=-Mqe#DGn9ODtqn*NrINSQAZUs}0gNgjrkyR;nD zOy6XAGv(eM${oQd!v`pWwqJpMA}RuP+lLZe9;m7mO;E)1tub_Pv2X-3#)|C>g!{x( z0wWR;`Nl#U4XIm^tPONq62mWoqGrrw4}1Fz&i!=LMLkkq#kB9KlI7RTVqLa9u{2+I z(zZ%z_kjH|g@gt@+`dHPR>|06S9eXP`r=QLxqb&Uh7%-8u+VcF51as&{NdaLlm7R}QZW9JJm|9aEeC_Q8Q(-0`df>1Wnq?^~q7booaHEEAfM zkdy&`!O9cLhMrLa;(1db5J>d8N|t3K!t;v->qXqpedm8#Syi&F$u2=W=<2|Vif+e_HQnOuG0<=St>h^EkU7t<1I`cOm zKjfS5liY=!>A}}C^J|Ynj1T0c;-#NdPjBj?he*F-^kC9gP|d9Bsr`zGnvH09^x!yr ze(<}Nt$HH&(e_rw4L>;m6HIR78jNlhFp9$5Np74jO?*KJ**Bo{s;ldRUPr5_qo&eq zB4j@RL_j~AR2|~_hZ9GzzmxwPyyY%d+mCJ@w$f>~S(v zd^)~Sb+k^1EeJD(A5MYVQ=^O1j3{YqS>8+Q=d93ND#^}ztfxG;g{Bc1zS)(I&dQrT z+wb{>XhF_5U-#<)m7fS$D=)AP1R`}PY{SYFnhl`^fT65{MhlJ_)~R8{vRN%OO|J_D z(tVWld?_A18|5)DwNH~uXrEpcEz0R#ZpC56Y856%-g|Z2>L2I-yx(OjhiC_(z(8^# zP`$$79(Lw6?un}fjRsxg6GoM1qehj3NEp3*BdLKwQStZ5@J!5Ee#teqr+Kk4h$`Lp z>KL#O9s733dAbqTU2*JicZ-wa%M@M_s{=1c2Bb0#TwLO+=y8*{`!1;;f^QIFivyA< zA8GLi=vknoZ#rqH`zB?m)GR}wbdfumYE?olvfa-hJWMxiwp>&4)Z*!JxgDl5I1G7& zsO<#HFl(S)G6svH119B>W5rc8bVevai!PjeFO63(yXrz3>9`af?#)}V=XtGf1{t$h zewaL_&P~=49Fb&nQyLh^+Rbn!=E7XM(s}>n#z_>V4aI(?e%YP6-pivCdb=C??4Q$^ z6R@#}WL?i}PY7jvnoNJI#yWAm=)uab+aB&WkQzcl1#yVWt>{AVLRYt$bf-*8z` zKx@QlB$ZJe>M$~J#J%B2&VEg3Z8=R^VtTTS8m)Kb?C@n`x=G+dx)5;=nYudkf7X1M zPQ3izH7A|%O!iXQDz|Z$22`idV{D4C)>GmkSE}Phj8+$~w;_^m^>wW{VnbmCer(rx<@uMl z$;;nsx9(Pyr1&11i2`i~FcouxY#@FhFd&Oa-&a{L@Hr2)m$E~u))h*1UcWQW0q>q+ z%Qc%XxhD0FFr3Xr$EEhn-6T)vHCNlYI@xHOzG*o8ebpoR=htBjoCJp{xB#T%f8y?P zR+l+oyEHRC1c#3;sQJAbyF5Z14G8Vr^m&St=$iTxK|k$waq#H(c2307cfC%V@zA|< z#$v_s;U_;w)8)|D!FrQSu|3uvP}DCN!u3o(?*;Gs3l0l^*Tuz$ysO@iS2kIXe3&XP zFG4eyQ<(iy<`p=aUE~_>Knt@R)1AzGFMRf5!m#a`VXe7VUYo7r(g$RczEI@_j1r`u zlReEC)o%_h7f6FdgwKArKZSYEEp%~#V{hHqm)%>QHjDSaNMq(+)sDZ%lKqlLb@R$C z(4<{B(|Sqw+Ra|$qp7HE&8?khPkAJn$=%RRY`p3TKS*qoAqI^>lQB9!v3%&Xm>fiU+f&m8nU=r^f{2x`@6x7{|&=w2C(rZv(s)^iDMyV=)%U$sB zqs2HMP?Z|E|1ujZ+X%h+qaX;C5CYCqUoQVWxZ4wF{nGzI%29-6pO@afMeU5XoM%WO zdH&dOA3Kv^a5u>bt^(ads76#o605`n0p(d7i6j9LdIi(;s8?x|w|rMK#3#EQZNlsP z%d^Tqsx{b@5UoH4nY!^z=A)5+43F6>Dk$EA@w}n%bNX&b=f{!-Da{_+RIX3I!dD7-Vga zf~?4czfW_bp)FJrVY)FsAK6QAo2>Q>b}-8)BIEDC9Oj}$7xyNQsVVCB&(r5l^#uFk z+#OEtKGSS|w*8O4>;oTdJ6;aH*_&{f39eQ|p+A-wTT8pKTf+X~Zc1U%dM?c`<4l}$ zGf2Ct+3N3iWudsYj|T2a&NvM3q%zMFkJ|grvHWYZqn$jmqmxo1mpZQNIKD#;Ty!u$ zCUF4o0O@dstNTDA>M&&8KdmBUGd9abCmqObeKeO(*MSH?kiSWhY2sk6J1M#6v!Cyd zitZ#2+T~&uf9~|;VsQ6~Ph9__zJaGL*ZCTKc)mss;D3v31JgT!RhUBC`S)F>#?r$2 zCr=emb9oiKSC6n?oL>dx#rz59t3 zPFZqD{;uy55w%jG4Y(tYj~7bCE<*LUGnz_)3xw0~FO?8+Z)j>%@1gQ2Jn|T%>5Vx# zjjQ_5S9s;mljVpQV%G=|F>ul6tj@LF7v99m$)s{dLb+ZM0=fb9K_3X`dpPy_Az7&) zN)iTdiIpVJeXp8I_!PD^g=7+jYmyxilv$;*5*@A&nn3QC%5I0OOf$6gKt-|-lA9`V zcBol%+gZCRIl4G<1m2RYZs?o2#1AG&qS%hw;YCuD5>>*Z#ygX}mxd~Ro&We4GF2E% zRfSd6X{1XcW~)XvBY)@E`?Vvx9zM@MH9P(wPElj^e(k6wY9`-c#0&(-dC-F4pP_q< z4TO52hH{RoASO>x9)nfTk3*Fa=-Q!T$ya|Z`+7cq><~*4PFm+`#;_gPxnQ8Q5Uq*E z7f%Ho%&xfqmU+fq__WSa-%iEzaL|fJ+t&VRNR?mY%>^QksF`HWT~Hboz#x&nGNO|b z1tGx%*O4~O@U;9FIg@?mHYLT`#vQ%r*7N*?NjP+U&4gP?gGEw=ey8o3>iy4!Hra>U zS2P*rAD3SW2UY{9eFQEC*TN%ICFELMuM08;nwp1Z6{(Z~qs~O42Rlt-N4#j(y_|B{ zIqWOd&!`v*X#EWcm>)UKQZB%t2?j%qaT77g-o3|9-$1%o!YJG*EREFg*1m+-0+V|b zUR@6Apql*O1@b7riHe01bpE1?UL>!4tUWQ-`$!R0-InAA=YI7V zFV;CeU*mQdb_y#=jnwtb224%*tNlw8e!AhTm53Th0Zdi@OF2S-a=c2=ehw%{U;1Rd zCt6N9R+nAql|~hXqc)n=q-z$tuN}ACKXqo?bZeoX)-{FWdhh#^G z{0tR~5zAjeDj3aXp_pDHPTG)QY~VXG&AFT8(TPPZ?}k90?4o*tSpvln8dF(H#UTc| z47zZ1XW47=;w)ySyzOMknZ*~C7eSt9F^va-5*KaU(RaI0vKLy#9BOMI(cmreB^VBdb) zHQ)7HCV;#>c^04*+1q}X^PjD;T3kiBiJu=3XH!a%;w158GIB*4L0XWZzG5FGStL%l zJ}CGok;UU$ovgAb)gu2*IW(f*WaI6}ee<;2x-{v&=7!@X@2-3)oU=&T6}w%oaTp|M zlq_#abQq?(SP8iao{P%y;6~X)qgDSiMUOIQ)lv*vh{UV{!YF`9o4EkrQBXekpVtNomhI=g zOc7qv$ieNGl>= zTCtkL2~1jx*W;e*bmeyo+aHg*;jhAIMs23KWEQuv>$+SF2t&FiL7UdP^LjUJMx!tL zZyKp*o_w5@mNb;j`l!77<7b6FgY5u_HxemAXXG4uOLwsyRXjNyF zD+TeyZd+`)>Q%-Fu6Q{4ipJGS9!&Y>m(YtDWi?&gJ8JqcP9x=Xl@ndKzpHgk^V!`` z75Fd&&&&V?br79|amBfCGX_P9uj~6ZuKH+p8Us2kW^o}Rjvt?w*H=!8Ne%ZL4Dku% zmbaD(HnzVnwR`#u&4Mze>F%F~ew= zVZsq;_m3sfrN4AAv=9?Nq`pt8Hff-YU^z_EGt z=+f5TpSCwOw;xs5QHb~gT#LCLG$vf+p5Qe~P6{+3_|O~VigwIQ)U|o6yNKcC@Bgm5 zowLJatj;Q{$##SGgA$Ro`Q`qd#zb6}M*4%)xA!zO&JpgeI#a9=eEA5Waig1skp+?} ze+#ixKpm!>g`Fq(PbixZ6wozTj4zj-%r)LIJxzAgB=D{Kqx1@hZX;j(;Ct2)W+hqI zoR(*%#08gK)*W(hPKh=EVfExVD9SM)z~2yS#y6!@Y=Ut;7s#pgz-1vGMpkW{-E{p? zDFNaqmrN#ABxl@v#-kTaahpqb6^B*FULU&F@a*%+liDiUdxmS;Jhs1oo7z})O0lOA z5{(i1RZuG}m23u8OV%Qjuirn36T1$%PPJ21=$rlerluQX+pz5IsUKLSITdxju4$!v zdr11R-Hvw1MvFwpyB795-#GgnchbYPcgZcv?lqh8jWY(cj&x#&O&Wm+s7ykW_KYTf z;rl&t>ITfFOPQ4Uk%Yg-QzZ<1idGO$>Qvr>n39E>Z?xrdhq#G7Y?&#r|VVo|!r;#*S&pEp2@A2qao4{%- zhxkeVlAddWRPq|X535jNS@e(M@z;0Cr@VLmb>U%kgR=b4=VU7jLlOVb))rR}_+Igd z>NQ_zG%ZG=`B*&L&Dg0KGOBAbr)~6cYRfmvvMHJoDi&Q6Lu$5ZwLPB1o-1gCEiVl? zY*%shw03rKkR$BkGP3&wIilA8)?{>S!vf_BDav7QW_Qw=dv#;t z+*lp-=wwm#^%3N-29s}e5qcClb8r1y$41nh)X1NW+$o$oJfcR%f;!vkN3vOpEY?G? zfe`&;3EOo{Hjmxh`QF+<+R*9h^wGr!2*0_c(v0|4TA`P`s|lQ%?FZf%Q1R+d@c?H4 z%)lSPvY*C0L#;-gb(LhaPmXAPMd)|q0dYB%a`mCI z=$4%Bmg>S^~jTs3LJ_A`D z=^Wb7to5D08pNak1OZUL6%58v#zQ-Y-WBFc2lh!k zeg?|mMKwXb&4hQHqKGR|GXs^MCQ7Dr=l;StQ*NE8=?@Yu9zg~msQSa+484U2Zm!qM0pkb9o2jMKXNsAweo&IORT?!$ zWO?DolJ&?wq5)6IjKEyY4PVC{pRxLqVxx*Odc@NFF#Fmb*bEAXMyzN-(m77YN6FjxLezm zV5j<>Ft^tvn^zqMktXMFOnVgGXgT0+?c0B=D3cKpmGF~>>I2y_f6Nd8-+ig6$!N+X z2w-=kQ)N5uPMs<5$z#wgbEFZ_{N5v(Od zWMCqP*C}Gi)&za;odVhlI8lJ?IadJ=tCZQYcur?%Mq;&S?G=HE+&|H31!a0lHrrj^&Y)nv` zLPzKow*CdA1B%GOOgC{0dlvbI6%7rm9wWWzql|x=-&|un!e`zMQI_V=t}Yl{IuLR? z*D0Yo8`=E(vyR{BZ1RquR}ms$kKu@qKKwaMzk_^PTLpO#As8E1y=SH_o7YY!aTYHK z=f8`)lmZ`7k!Yez&}1&qK~MchPxvpS_Qy>|-NOQTaA>O{jFNl+jR{z&G8uZQS_jRk z$lquzrOYyQbpsF-S7{61C>tI}-PHt^-7FgcTDhSKdXIjaI&y3$6!GPvRJb|mpDl;v zrjSiX$4EXTzeTR2)Szd%i^>QFgPU7D!r#iNEwt7x#)?9g3Qiu7b+~0}2RuPPYzLR@ zg67E9lGy<$D&lu)_hrTP7yS&X@n0~f4|?f^6=6C1exV|}@gAs!pF@K2qHodI0ZmH% zjc8T)pt6T1;%~wf>Mh|+T_c3a4~Sy6m@;`77&hp$x~l=JNwScK*jAIp4dSIs%bExt zom&GoRkN|C!O!qFp+FL6Cg7gtbZ3`)CcXdch9mbIMq=c_!xD@mR9OeHQp809mmvq( z#6+Y3-of#zax9DPS|k_OuDEZ$e69RR zDb|CCEoVGla*%9|_+cl8$7<_9y3`x05v(jzhnD+A6On-795w&f-F{uH&83eVqy{^1 zc?i$rIX3F9^xpovnTqXAhQ<%kf^h;GJ$X-m4!z;( zA$Z}lz;}Ib>Y=eE(zzhg;xWyCf*;WJ#LX2hx9#A=0oICW`(Gr;OapTXcJ4yWq=Ex* zYzh)z4g0aAo2?P10S>0-=Xupdjj8W#mL_B_ zEDKgp&AIK*;XGc>C(yPI z{Q1y9e2j8>O*cvf>Etsacop`vhYkJVVklCjG>`U*j!e7Ialu90DKDoJl{n@ zRan@O!_mO90BL$jT?!;fGs>~_s^P!qb*r@%UfsG=^GX@I03&X;?0|@Rbi`0M`;X8v z@h3$>=7PuZQg70zF@Bc8HxOZE`mkYd2sm#!CY!6cLloo} z7~*22(>ufXRU^_HK{piqfw=12k0mw|6uzRoR;sD611bQ>yUMWK_Q4JV+h6l#k0m~1vRrT}EcfuYph|L>is~rHO_tY7STk8Noz*Y3n}rJ@3r?)9 zc@S-DPBFE@zZ=VML`1&0AteC9YU+oa@zewE?%V&k@mBsJ@2d(9AV)n)pah5d-!Z4P zKS58yOqafAD>L2#Nk^z)I}#OklsFCum6~%kCf3CySzN1xjq*17b24@sIIVIy-Jt*( zi$u^&hJO{Y81pdW&TnG_oZ6~+EtDLD0J14w6{?DbDzAe=rd>c`k2CHi+fSAy%i@T~ zrag)o%^e+L{T@p&W1^4y0KRw$DsjIvrgw5-^uwut-WaGQgXeU{z@s|zQ?CKTM>n>o zil~UzBl_;8CF%%xll&V!)8Lj1ggqxHAmpHvWt^EOFiws*Ahx~R&|QmYh$lS4!hEJi z96)r;+U5pk5G=-qEvL51|L7fVI2&wa1<F0SZA0Ae83smNFS;#FXP z;2mCV__4$aFPFYg#mzC0dI$Kt!CWd5jb#N*tIk0nrUKps#K??0(56OUAyP(>bdjmv zdt9Dfh9GL{!WSTvg5*&lDuFXz7+5dDGRJX?2Y{Z~&K}A*--kRg>8JAPo;*URxj60N zcD%YJl*$(W5?eb8$%C`c*nxHK;G;1a=8iv>bbUsj4m}8VE=c@A_1BedAUFh;o`g6C zUXWmC1BMwj6c7Xa34`!@c$~w3Q3>6&W@;C8x|nRC5v;PA)+N(ba6!QrfxLf_tD< z;NFG+2Iezmu;_27$O!4kTcvPbN}z3YCd&}6Lzas&DvQNh!5-i#c_8|E8g?24haOaH zbLZ80zVEr|=Go2*IgXw+)zXzemaI#gIpCPka{r;CmjJ~~JZu7QPK*ksZ~M<7RLn@= zZUVD4I#llQU62s@8`DoS>RiCh-H#=!z#tcoF!%}(tn7vFp*ai@?j}HO2J60C+QHP) z;3+v=5BZrKUBLGxY@0H&*9${7|8G3|3ngqoZbCD2(DcW(v*EJ1=2@!jz%AvVkT(=s>^Lc8^)S2nsv+Z{;bv+*8Ad!#~g#+?^z_Z!4Cxh1oy_`5`9#&Ef?8 z7S)bqHx5S{FWVU{W)L2Y+sK|WRcEj~w_Rfa-iK60+UYcflSYFZ!`sLM=oM70I--w! zKMe-KGzBgj=A-5ijM*w1-)qzv{B|S1BBpJ$piaBqN4Yk2LpC~g)9;>D_wn37Mab_W zBj=4X797BZs8=1~5w`C(U9~nw4#^uxxidHrBUXX@(XcmB8AL$6h`~>!Q@SN(TMVu)sQOT) zLI#V-!GrS`t}?e1J2>GmCdFg9H_3+b?*z{3-Asy9!|O=Tc-WGl3q#`sf!@e*7|K@A z5PMPJ)@HzxG2H|^id*3r%PIozphR^RH2yK38%T{f(^b$-Mk#P~J~_prFE$*VG>6o^ z%2-%QJll(9d(hs6@hf*iQRW{y6nX-XSwkOwZUs}|FHQm`%nlcR1Q7FBGd6X#gLpvv z`T9xrA)wj2!+Lzbl8WF@n>}5K)?UV?9WU(Fr3HtVXed^H%V30PDeRH3nkh3Ws?zOo z;!>j#uBn=3)1`pte zcNM`P5Jrv(0N;_L5YtFz2sU7xFP`yH51?C$J2}5y*nbCG@VhOZCzD%(b0v@*_Qxg=js!5Je`-6-4Lt#t z;GlTXRDk}=)%k|A&|s~wL$ceLD&olEqi>IY7b3vXYam>Rtoc58XtV=}`r@Uvu+CML za`?u1jmMoD8qFuRuaSK!JEb7=RKZ0-O*oetSECNs}k)=XFXt2w#w*JS2e(di5i}@sNL}4O=OME{Y*hUG$nbF_k@vUhX10nC_jn3?s+=Sn?M*7)ku5kgPX=Ozt_-B%jh?{ks6sy~vUIZ{bC@?N%}xl(W)`b_X8G2}Z-fJSc037UN|cS2D@8=3m* z7uqf8{ZQ(K@)+RXNKo_GHKMA`1R@5+rtwzKnk&V+xhB;uvX7ZFsyZ>>5P4AYD^$6w zRu;)*fM&~w%0-8Y06cj13{s8%bWyNqpb2%RlqpT?MBIRJnqn2d{1;a4m^#Z9z5|T0 zUIbC}Mr@}z2APL*{_9Z`u_ygJLj~fgFh>EPJz6pq0|qI_QGUKWQ(6=c#6XpPENPnh z*@TI#83K(!JHmjZ)1w!=!d=|TQ+Z!FZ|MU%t&ow z9|(^yy_}c3fRih#cck&p>x$oVJ_2 zy+-&~l-$*zumcCnMNt!=L!>cA(hIjTwQOD4oCAlrW69A8##!Ib%v}-&a^U7!c?Z zudJzm-2wNk_CiL$X&;S5`5H5{u$3`MU~F?F{x1HzfkAR#XmN=1abt!MJMn%jE=#xg zeF)=v@#veLo1a=E4y_ow@m>Ycn1N7q0PdAy2RQ;S z#8JxA?z}I#a(jx-l^kNfP|re>yymP4OCL^i8O0>*-Sc1Fcjoo{eIm4>^s<-Knfhe* zpr@*x>lsVM<1QjjAwrOtRzld9ePePJRMxvKIDa;8mx-1!& zDi4W-D<)MRoB1T&dy(ePY7C62=fstkcP3POCT!f6n)7<9yytmh(;rWd4Ru}&$dGT? zN+}^*WQP-EB2ECW&_?R2i*`U?Wtdhq+$Zf-U3ct5eFq`CHo7~^L*?|-;N3@0FtT)V z-)200bM(osQ}tZY>MHqT$~mLVZtc4;Fuj)~JhYAQFeK41LR>mK7HGj@d{Zr5_!8#r zd}_4m`Rh9FiQoY%*O*Lyx^p{F;htRM?A$1MjxWoY9k5q4SXfi)vPKrTh&5*?@;9`V zGrG0Q_TcK$$$BepA7>>I_cnar@Pn3KZXJI_VxW!*2IMr}CTw!I3-a_z|)%&mvSc9ucpR!LnE71KWv6NA-QNOsA<#_>4cQ{4@dZg+){ zjFyeQPHnWqt+g3=%T_yW=08<$X~1^Re+ipy+t=PQkoHjS813_Bst~oTLSww(B`@cz zT%Zct0FoM`N7?KfeBkkpz-jmK=gMrzx|KJPL`M;&|}s^|#^uFM2=?Jm0V zHgfq+UB&I*yHV6FN~7u!qlO&=!pKXZ($al^ZXM%mG3wohCO*-()D@b1ogH&JJlUBJw~*Av&N)noD+Y zXgWRZ|9qPKPszq>u20Oh_8rHsGqKQPF@y5a8D-4J6QL;x?%j*5AX? z#m0A5Zh)Qx!5)5J_1ju^Q`PIDUYTmok0olIr1|KHozQQ0!WE1UA`H7R{lO7=rEM zcUV9*G*BYYKbCw5^Im}5;cy*q^0n{t=UjDhR0?6*mD9PkD8xjU@rd+I`{Q8z=E7?) zK=Qoow2b#ocMVkz#my+mesbF+b7TOn!yJUa@IEPn67qt{UwW0U513NbsR1s6!Ua|H zg&2o{d&=@s#IHT=`X@_FigveSuf?V}AJ<}Th_g7R*m(|K!iILQ2Fty>B2ZoMMFJFj zNP(cd-#61Og_G1F&W)AGCh|o%k;908y?BUjDnzNM+D`A8_+kvLe9(R1kI^>=Diadk z4?25C7J3EB9ajXB&MOCL)AC5lN zF%tFS>uOIy@mEUb+nzSG&Zf2^!KXjks-JmAZ_vruk)a4kY@zS`(F}Xwzre(W7{R>c z0Xrn*qY2h&UitHifzqp?u2DUu=A|PEwY)Q<)+2zr6;{>?+qW8oeYA2do>zFK3jFxtGZ?UL$s~=wjm;(m<6 z(dVevGQ`I+gj*%LO|B?`fxC!Mxyt@4zmGCyJ;mxOXR)+}pw)`zP-N_;9_lx#(r6wb z?o9r2hPUGIQR0Rv_q3es^yoBK_vDK!6)g|=BhYZ`OjZ##o+RiIb7scMfDbJTG0LdD zs?wM|2^SAG`kHo3uas-1%A$WPM)b-@}X$r_N|4r0ztOyd@R(~-qu7px%G zH98;ArT6}=0#{y_E-nxjw`v}wECeo;Gs?2d2@4xf-tJFbr?B_UKVNJ2YS|>`xmgw5 zX0nVsvB-&`Y!87_Ol{n!d-p&$+ev#2g3gEOdhDHdQt6~l1tSp`o46A1GSxjEaWPjr z+n&8o{j|dKl|sBjvo8V^bS{Mf{V`xmX+RG<)VikjNDV;8)~PkG2Oo_*(3|dVi8~?A)Oe%Yo?`3Rr?`1MYcN_>3nr&|o?ofD z03jEz$*^NvXqwSx@>5_L0Z!{npmeuD5v&kfz*!3j*jVgiNE3tOeV^i>s}9^^J(C@H z-u;qYD-aqSkLeD%69HW`DI)eqQy5pLcH1Qe-%Glf{$b_m%7Yq^oO=DLK;|KEr6=qb zXCScZea>oA0L++m3nW)^I1o(A_}a_AV$QzG+rgand)+ZqY}%mPIT$m#o`o;_%A0nx ztUK}y<&myonXL%eS4wQ4?a(vM_g_i%us4VO3!p_=H^CUsTJTSXReM*WmpEh58C-8X zpssF5`sWFkLPabnb=QE42)ejsU+evc-NS##muruPd(pYx@DaoT+5~~7@8>bhG0bK1 zDhbw{?OM)C+!Cw(R9sPNO!epHK5=cP8p;C7jU;}#-4b8frgn)BRd*`2Zu*1SVW$Er}V!lq!_?II7kv z>T!?w5uZa*U(h+>3nz24zBX}vFHLYUnaDY*CZW^cxfi2j5}#UeW<=O@(rLTCiswIp zlYFf;CBO9nXl|mxJY?NMh5%eY{`(a&z(s_%Ql?~$tR$>(p^)b*a_}Ur_qosktRY1* z-+d6*e^bA+aKU;Yb3gFYXDu8=2kY_L7td~UKX&IQr?3XvtqR~6B%!0VO)j)yuUgD^ zF=(!~{>GgK7ZaX_uI=S$yg%=y$ePUxh3I-d?=BY`oFrnl_^uM?d`*eocrhpPb>@~N z=cF@d6m7l53F0H5pTq`Sl8;=0WtMe*fHpvLz#Z8w?K{T!#Z_#xsM6^D^E$Oqyz(`` z%L85U=mP0h7bNy_SS=SL{+efd^B>bK`{ZBxi26Tr|BLuSGtYBJl4d)H()p7rFUyJe zI^Kx9QJZEYW%~O$KYC9^Q^(wDa%+dCh&w8$eG3!soMX5*A6Gkj#^O|4vvs4Xsijsj z*ust!$~TeZJc%zzH@Si>A$M>#`aiEf=2_n~;Qh}!wd{e;ZOs)5 z`s|6k{Z<)J`^Fd;kQ~|=Q(j*RE3wCOepyIa{!OVj`1LqAy)(?>IOjf5&3LsoVtz762UAs=@(oGe-E6E3h#XP0Zdo z%5i>n(n}`6G;FBB{}sQEJ9|Ghr#mDpDp#PXvzhuPlizD}^1!9Rly|o2AM}*=U)?6h z%%<>}7-U^1T#Otb?-fVQGD8F7zpu(!7)L!cQ*KGD)hS%;d7V{Ud@?8q4?5JMN_-aD z{XK@$l?(2|&is7=A+VQyeFrkxaeZ-}P8 z1DHcIECkWbu6*>$?W@}-`bxzEv#r;MCI=@zIE1y-miSPMk9fb^a(p;Fetq_~){4__ z5*2|_;TXInhcnX=Dw#6|N(Jvd8X40`VR|d01bb8$5qaF3Lq7yK>IXnFt*$~a91W^e zQtpI>)nGJ$KN$(-AdfJ$!yvE%?xo-W5^H(-QGz46rMm-}OaeZC$-Y~17a~8G?Y~3& znIqvGN@FadmI{ACOyM99GUbbMzD=&a$NQAy0PM8Ep9}1?7&%DB0zrWdi?XPXG?cz^ zf4qKI+gS^>XJ>2&LiF9L=t#m`v#_?~JUU z%jxe+jPSAX3$1R~*2}y6PH&3J#DlgDtvM&RlH8}4Q&ZxSu8iJ}BNCq|x+@F6;zvW9 z@V|zLkahUkRw^-q;IGezD`?ON|3qMiP0n7lk$w@eV=_FLJlvK0czROS*oDUG-|K0N z=Y6ofbIxwPcPe*cvg>oMmLXGasb^IMpAkne+PzCEBEbRTDOy?7C4%3}wvC9qO(X+b zZamsS@#Z#;d?f1oV@LEtK2B#l`YJMFD=@6gUI8G9|!`zNQguFDU*iz`%#!M+q7 z33B74A$HP;%fxxYSL{=Y4y}M@Y&=_ap6F?5?Ot50JhZ;%n_UyHvBH%xEA0-yT4&Yd zbX#qI2(c_FIsN|r$$aaX5b!|T2*4=pM;x^!Gq_R01#%R(v8PoUdlA};dxkO!$x6>l zA|&^{eAHS@EY!}r&+$9LYI8}2>iq1HpO zv*SdG{>Km?HmLfzwh$_%j2n5+_l+X!gP#ZUrM0q21XLALoL8)ME`Mpha5R>GDr=qP zGmAG{b>swen#mE6WZuPW0HZNUdL=n<>9EJZV|tGwHl5VPD(i#ia9ch{#fwoQEnyFd+3a#@qo) zI~Y?Usap0jpNJ=TE!ybHn~1ulq(HgIM#Gd$=<0gJA}`n_Z+7i@uWF*js;dp#$#$T_ ze6npaGDh*11stcq^anFg*l|D{00fVYoP%QVx%!aUKDSzDH+u8idphs3Pm$z{FBo%@2ax}AaicE4 zLpy?L(LHm}pU8nZWNjI>W9A#M5v=t{adF7HW=W)}N(SXM=v$x9VOCplUffOC)kurU zaMI1J{9bubMZp-&PK(#hCqtpQyoRIJne&&+jNc6Nof0^9uE z1z-Lxlb;C-Wd`=;&%kb__&EH*_D=D`O;`hELTyK>weHHkdKn z*UlQBkn&e;k1QZGwJz87`A^&4$YqM8mht_*A~!Y~!F{X&#p!lK>+Jvhmr`-r1EEm~)$fnNG&imQljv8vx$?n{_KLzIWP;> zc>SB4EJ8mObM$b~_P{4i4g0Siv5~_Id4d6!4(k+*MhFte&0Y)ihVhr+^L>drK#4-> z?d*-5=Y65TQM+O$dtD45ex?R|ceP}~zw}Erb@0o4qwnexiq*4`{Es!3E*SgMk<@>8O;?r z5_n_U>A@d))}{P2w|xH;BgA--RQfg@)QCR<7Vt`&z0AqtmjeBIcx7RpYNvHh!#;*4vqTlnYov810 z+b1R~zc*;9DE2}PCB_lpowxx=@Jf7v#nA$~UGeoQ6Xn#5I_?Df#kY(TzVu8Gxlnxk zG4Cc^W6Y1>UFjjYIoD^$-Y94wOYK!{Q@Gu$idJ#ADE0!B9n92&MMJD~;P;|d%f?j~ zjx)ciii6W8XUjs?$`Y>4`pCA#B%ylO=Hu*j&Vnc%WV*+&a#TfN?J^UU{*48e2wuUC zmNQ3CEwqdgknv84lux~U7mIR=e(LyVg7b@=avz-nlm;Mh;t^lUOagy&y8yIq zHF4$8IWb}w+I|b9$$_^1+5aa^o(2kkKzZhWI6zmx0sgNv`80Os*`DWY{C12w z81lfB3pWr3MY&<{g-N$(ES77J-P4rrE_QQw(ivftJ9m-W;CjE>>w4P_jl;#n<$BxF z-edzY1nty24l5MR^}eKbZB`Luz!0i~2G`e0rec^2qb^q#zy#;HoD*4t+I!HD#~9nS zmWA4evEXJd>e3SRn}YWBUnW}bJ8|yc7IT$TPWFzk?_4%GOP9x}55TxxgHfmn-xxa@ z;Y5xSPZgp8>zVz0Hrz8X-DVxz1@h!_ThEjc`92~yKn$e3?qc8W5hjYHT7nFJ*R@sEdt}1$Zw%NYT@>EW9h2DgsQlJ=(n9JIWFq@et0h2W~ z{VA-!5&kaT*vgJ!yE0fko8sjOSP3!1U$jHH477rrBPiIMVi&AM5#q%Cs`m!uUk47~ zT%i^Dzw$4qG0*?f1EWr}LW!fl_UoQ`#-GTEK!i|6+%r?fmBnMN2Z`w`*Rmy%--ujh zCjlnTzwX`F8o2s``@I-~~#|Tv+KPXH1+OfbGd1KS&S%a;eiGMh@+7amkbw zA(mi9O%4~x2e+351G<<T+HRY?86s~h0^-hgO6(lyZny14&DSdK89W#xRzim? z=#{$QJU?axsPz&Smeuh%pbMd4WfpxM!L_;1F`HIgM%C$drOx8=OpW|`D!GYW=-dLT zC$Zu+yW9(Z#?{W@-`91Pj}n$|PDvm>O*Q~Y>G*5%IYk^YfR?G}L9vWR*Snl@iok1N zwwE(uK!#nrWjD)B^$v#p#n-M9#9q>VP%6b2F4}zD2UVF$X?cM+v4fgk>I2^@99E$M zPCT(wEXhtCAT{9YXBZMI*g(a;0Mf}W#1DiBB0<7GiH<#&px)GG4y}LU+`m%yoMF09HRU-E3mh#p?1r9#4zc0Y zqUM=oeCh8Fwq2NBv{_*r4xVh`-(AaN&3{UHyLmY`ulc9H$dLS7 z@61xh$dv%?QEm4PD1x_pQkJc!RLC?5WkiJy=X%*@-KmWft%S+Ce&YHbUF3rqrN{(O z$MW!O+RL!(LQ=LFWU$UI_i5WhOs@k zAOOJ@oP(d!v!Rx?=lPejPB8-=|8VR5V_!DXQG7oRGQd>;?h|DSH$v-#U84V$db%*g zUivLwPY|0ZIIx$DioG!5llYPD&s%wXmr1>djhxoy)T{WvN2Z|N=F9e`Y$9n}nT1vdKSjmD{*L;5WGV5dS9CRNu)w9563Xb(bqDM3Df4(Hy&Gh5=tVAzo!>qs z-98UnTywcNFG+hW=EDDwPQ&|gc|5r}+P6|Y&qOZRSp99dGd#z3+HS2*u5z{~Y564c z)?%^l^@D30*dei$!=S5BsDh3Qn0ah!VR@Fb%Sbcm$#%3D`_7~dTqbc&Y$PGTP<~|$ z2foWx(iLOhH@v*S6Y-%{Naak9L;Cy! zp&!p>?y*PmcyqX|Xgt=d6Mw@K$*uK};jWbKS~&!iKeQR%aIh8Mod6o-#0b2wzS5!QAZ`k;#(^142)QVmgw+yc*x>FSTR(>-~B z^Td5KjHS%i4Eqm-i7i62 zx9Ygvvq9eJV8UGdbVFyaxtA=%*pyIVc9T4}J~!yy(nW-LtFh21x(6lyRVN4DWXI5p z|EOz|whWQs)1HL;GsuC$H$Uk_<-08A2obdKdhxXSKGlycAj-97c71WXe9q7qb@ImB zirr~RePY+RhP1fZd|v(F8vc(<2c@Kkv>T54Max_Ub#ss@s|t=^kXXykzsUXQdbyDS z;GG_Y?L_Je>r(=6a4-{md>bSF8C@0cLAe_w3MR5hBci+`-YvvQ)=){l=wxcs^vBr4 zUt^NhH@5~pdG2~%g8DeQ{iHP_`pJN|%8d47qn|zZ!$epwfB^lpL-Ud2tp&Q9F=soG zD$AOJfqQKtd@1Tr7a9EEQ^CJdxmytKxQoV{B}4WzKtQ>VG;HB)Ft!u3iZ-UCe{Y|9 zMgvSHd{WM86`d5Wr~mdedB*H{2Qb~R0Xasy$wgN%Ly;3;>@1~nV?cW$qscembJ5}r z>_?;bORjulVh>Mq$b_gv#(H-55Q9H?IU{?gEz_INSsyt& zp%!-_MNQJ>mB!__3BQcfcsFILVgqJV`MPW}=du2^r9j9T`wlghezCg`i2&8X?q>B< zaqW}%#!{#hy${4hSDX%#W*H&|)dnHdir9ZM`u)SxbGPaY4bAnCVjXq~U8mV^2O?83 z3-!9aFuFuzK{18aB4dk*^`Do^eT;gf(<@Y5zG{E(B zt?MpN{gvg{t6QlWt|-WnpC|a2PQcgRd z9uY1RY9L15$YcDgI4d?5ARV)jMx%ye;wlgiT(;`$Mk601dKppLTFu>wM?F0Z=DAG4 zE0qcw$d2{6OCxgg)A8nfL;R`8WFx=AvD0Ywjwur7KCM*iU#atq7p1i4+b%QTf6@n@m;zL!FTXSBMx6Mh6#y>q zPRT}$f(+@peehkp`Ybzz_KR!ljQ5{o=N+SB1q&S_9~XhV3@BiZ0;DO`fHcLgt_(21 z_4joZ==Ufki%DW$uQ%9Ckk}_Iq(qA_TG%rMy6g=N7Gz+wfI9TF5=UWcMpMpq%r_mSEf&kW*A0zM;?;kkNbwF+zi*(qRxbmBf2({Hhgo?#-q;JomYhX2HAx zS$x_KBW6?B@92KRYiWeER|tEo+~_uC#hA{|Qcp)%1=ZIDc|U&US_r zEmjAQeeVE=0>@cP?&{8X57buPkwWs26{;QNv09bVICXWc_^)|4J9Z|@&Zgb^t$r}r z`C?$tYJ};fSE1|z^Bh3%`BbIaPnW=3kh@2&MTAnLMVl77NDS57mu#40ljfHCMj&@& z3k^FIAwfCMkbbcFUvOJs5U#J%ImQRL^wH7Y^bLRzYzo$Tm*^0YbrHe zdfZM`(QbEzGM0WqZy=c4@u=T5k$2IDHVrTSYU8QjO-hisRG-kiTNa=J$*6A=K#s}& z@ge|~YSP{?R&^j0eRGCa5pHYMu`f}ZeMXs}&iPBmu%0&q^{VC#;Lb>Z)n3z0c>zMK zQJ>@2j4NVWIo=2DK?9G^50nb*)f|gwAa^W(S^@<(xN7*e3I6k3vuo@^hagq7%juHe zeqk{q+!m-9r;w2XuEH;5nXl2Rli!+t4W@t~Iq2`=OcM!tNDIKrpPRY~TdDIxdcT}K zeHrS$AT-lfTn5!%KmZs+{H6aK!5@Jmc49u(KRMj^z5v(hAdJ6`viz4!ozAIFNV-3W26hJOq?Y81tYpLhFKsxN%33^vbi z8GeEKZbiPIGM1H(EcOM? zQb}?+teQ)?u*#gTf;R{R{$|Z-*Nc*K4KDW{3Dy`HZC7SZpTNG4HPi9U(Ke_T33^WI z@YmY zF}NGU62yS{X(H;8Cz|~tt6c4TzmM&AwJu(dpRxTG8lvBIap7QiCE<6>Gv~`+f)2=i z5V5lSj^ph4Ccf%L)IC63YXZ3G6Ej@*_~`Y(-NzI-FqM3}lBaS4RfW=F!CWq6N zMao`w7D8zT#58>8rPb7@w$6*-B-COG?2*MNY2XQe3y0NmxuzR$9FJVuu6kqF+ud`; zl6dL{a$bRdp#`}C83X$AjKZ0FKqtA@gg!vFt{Zq`ku%kEeX1L@qpN2IyOg~|0;&vl zri5N;WA)1Jqux$ZzA7m={8@bBbO>o z6MZ=R0qR-UmYgp)`Vs&*@bNp+oqK7 zpnFInAFN%k($IS74d#&Qz8JD!QA9R$C zcNGxchz#D=j$IU1J5BcGRQ&y@$je2$XZYCh$PkXg?Y_$s&&6)#Pdvcmh|7@r7bJ3e zS~=Ji8rxJ@kS7v@7?w6db>0?0PW{R=)a{#}ipS*{*#^3@v_{VleMc z#`eRYS5R>E$#e)+GHts0jQzb7pXx0!9eYDhStG^D!589P3H)&=7)(hbz!t(NzDB7G zYLS4#!3-wTc~Yxswom;z%=b{M!246M6s^^L3{;M)@SGO`wy67~h)v+YGAFqee`@`Vj=k9l#6IlK`=AY|$Od@-yQ!wJ}v~ z?{ha|?=H2}J8d7Qn+|QI9=W}(1UaX=axtsj*z}y7__8~2PQ0!26=dN2Uqv(^_)jr? zsj%D}qS$Z8bVmB*3|)6DJr$6n7hi1S>4ntx(+W;Dj+u8CoHH_SrH2?^H`r)!sY2N! zGRntB;?R9T3ikldD{B@5c!TC0pMk^S>OC(v`MXz(98X(_1~RMXF^A34-@;Z|5-JbZ zEbJZEj6f**DJ&(?b!n<_jBYD_sa@OH+3J;7s3z9jNtOz0cB$0oXE7_e*5)e$pFY4X zm|ZY3GCsZ?>}O}K_K0Ft6NhKjM;#ghH7Eo)gqoAy)T7(_5c1~u&A}T*bKL@8$T>$e z+;vLSns-!fPcGMR6`HStgEf&s=xuX#O5z+cN)I?wgb|m8RQ_S%BuLA{gPA7=-kkkAlU5X%4dK>+s^O;=jVJoz#EF^KMt82#z`7O1t#pW9ibk zrTj9nY)(LLb&d9abn1M>){CS}`gI~p<{m3Oa)`;Qvd()QA8Jkzo56N@SRu7}!Ejs^ zm{brOG{bAik@_NVyXiB?Xo|hlbpm`1xkfiN_gJEn2gwK&lxT*ieD0!0@Gv&VwPvci zkefZtrWl2-f%M$1PVl`f6tqdtpy$S|whp7OyARi??~hj*SoCiQwb`Z>>3rTOS=-* zeEYWXq*#LjcWZf7Gk;nh;#>@=D*+{CF+6V(5HW8V5njAXs9xM-mP+t^EB`R=BbfAw za0|%PcLi+qw{Hs9@ewU!%F#WE8Gg5~&RvCYzSluR*=1CxO8zpz3tga7q4yd-70^85 zStmeHw<5A**1gsf?;l?HQvVQ_T+SRp&KVCG)j0?GbW(jl1P7o{PdhHjj*aLadx8s} z0r+NqtDquNTVb-tds9S@Z}!V%Lyi9+K;yp=psz+1j?hnKTH{M5H&eDyN~EU-JW!1z z*yJ6XBn}Fd#4|`NYmP$x7K?g3;^d(O~x82#a zL94b874euQFOHOB zg6rQs%V`Ip&)a?np>1-ozbowXuhh-iN3b`jp|l(5-;J0=c0VfsT#I5rh&_K)4VHhv z+^5KI4VbMJHmdBVDQ|(sb~Qhs)Y#DN3ZC#j`O*b(p3w4>o~W(tfpe-tb7A0&p@yA= zge`|T64p+i8V+0-;KvF_icr#Eq5%pzRJx-D(2_&ph{{<3&U3q9%DZ&?(#ttuYCp5u z!@hgX*nFcia0h~Ey_{M zFQ{6<9SyS+#19;O|E)#5Vt*n>gM}He2c#nxiyslzLs5waP>$Mc^zi#BeXUsGE^)S4ZRH*1g69QTz-Bk=~p0 zDuy3Hy8lYOCMo%yn1&W37>o!&cDpemJ9MO*esUBvOEM@6su1R|_I9`zg|fGy1+p~K z(WbB|dd2%z-k15SyIp8v2d7iG2RWj6K|Iar9dsIu`EF&dZ$<3YCDBR`3GYl{a&_&V zcxrNqB|cMGe&?4C&3DCndua7BQPO`NQRe#H2SuG#>e+1tK>@ey5>sMgPK`>GOOhPV z!~!|H%sjQRaZ&h?c6wo!Jv6SpV@30F1ylUHH<*gxM3EY07rK~ArN@6iL%6n>T76@E zu9i!qN^GvSESS3D*-I2WW?6kBoD_Y_a|HJ7N9sgFHK|H5+J(|tUbUZ@M$E-h-_|<|X|u84Unc?5 zUZtWG9RebJ>w}QUX7RlxDAL5nyHBDEVb}=|4QwDy2@Qbn2mkKlO$X;*tZdMS(JyJ- z)nf~w{k8h3M-9wH*BeQmk1{6esRvaiD*y!K@jD{}0!0@9eQ(BX1>p*itNsf9D#>}L z{ZB~}vE=wluJONrxvO*jJI^Ys^a(B`eVnn>Wl>u2jX-u)9+HoscQtsL@A;5MN445q zAkuFbKVa2(ilh>rAWR?#!vp`h3Kb>o$TM!DX4k)07`k^kQ0xYHrl2;V1F0F&fwn z+8bJ)RoySXivH{HiWr6PE#X^L)Pe)@{e97lSHMn!R3RmQ#OuD9@Zrq$oSE^}Q^~|{ zMKKijyN6Y%)S@xzXo9n6h&80~A(>8GO>$c-U2GW4+A6(auH`|veah~WK|@!cr-Xa4 z?`vPOEybAiX<&agFpXq_f*;SFA5|y+nRUsd=UU5!z0b}m+#i%#yZ$~Q4-7Z?T)GF6#(0(Q{D90%=_>7L_CqjJQ-JqR%3#b`R7$|N^S3CHSR?rPIZd>bEn2?Y&m^?@6VZT4!gShrr8bCvZcQpM&);9 z@snJSA2S)6-`o^oY;;gIi(&3#lg+Ru`^x=Sli}mPggk?xuy&MxrEv2ki2qTeCn$3t?__Mry;C)rGI?PzTsQ( z`?RG9pA|uRZ2B#s9mf7oDQuL=niEJuw_4e#|1EH z+EhocY3o-Fo@Vvc+(Sz}Z6xJVeUtVX=fsXJ-6?oh!Q;)j#A8QxN4|S^%=qh*m`=@v z7#oCGS1}i6`D=g1)(9EEuhdmeqShn|jD6h`7q*jo@O3#wW7+xET!xB45plS=e8Ux1 zT;q4=H`PWOnG4Mydc1XRUWj}a^|jr`VX!qL?x93=cgn+CF3gS5wAc%e`Pg~Q$BSN% z@0RMb85MI>dne3N!&2OQ)#B&^<2ZVgPiQ#V+4*`?M#b4Iu7Xc^qOGlJRA^|a!}Ewu zx6^_-txqI6G#?r;Ks2cKYd--n5B7tK)i0WM=?*Wshcghz8lqZxv@`b<*+8K4R;V~) zcL{T_w%l1Su_Rj%a72iZew|EC75I1xe01y+U9(iP#fsPRICPNq96FYdXkd>l&69D$ z^L%7>>7i+I1nA+@|A&nTM^Qde(HQr=t>cD;J%aUFT$v{`egpL^9sT0(9;?@r_l-51 zVJy?$opf+Iu8G=n<<{r7zG9V*(vRd9&Q=U3Ow>A|LurRfHMyLns=Eic*2Z>=WWOb( z1Lh5;BffUXWeYu=igmK;jIF=bZ-2DA=YWOd9{>H}U$WP9SB8I*phIRz-X$3)4=k`9 zYNQC2c!pkdrjBnKr>1$POgB2q*Wd}OF(AuxpwZo{(wQ1~s{*IGz35m(ChnSVIG`tGdxg#JDbe?92@5DSD60bpW;9gTwxn`js^eh0@!7 z_(iRPSm6WqHzu;$UUu7HmHFIRQ#rc#wb!X)lgS5=WVxl6Z5xaxHDZVLmB$iB>7bHz zzKi)>x6^(&3$1w!kWLqF^BZI6mCU)}okQ|0&i1xW|A@H*4|N}|`|vs5W6PHJkq!l6 zpNw~k6;A#K7&x&9{SFF;U=!p4_z+H=ukjP9318zt%Nsyv4o$`Hke8+vFb2M!2(Icd z!N_y(g05oHGRXx4fHo>rgopBucK4FHZkR%H6@!zhwrhPsota|J{2K$8=1HjJ-(?qw1FGQ2J|Q!kD4s(cKz8d0UtYx zNwaxqfe#q1JowbZt`p32R39-~8j~3G+vpz1K#&0Yt7$xX)F+^WhNr|~($>VGTl*NTD zx;0T>?)Er*))cQUt{mPc3;?GDI4EafTS!G)@d-E}!wN9JFq49*8vj`H(5V>fiZx8V zTnt4stgJ_R@Mu&_fGbsm(QKhF?gNs+HZVKGF>zflpF|hxkd}pFp62L zc3-%GehSR<_U#;GmMdv|n|HJmo-ZHPzl`lhTsu{C)8ueb164;f&*Y269cQ9nP`m9Uw=>R$?PWtFn)NShh+IW{BE< zT4l8pQEEkwS%ue1R`=9kHZJ8I{yV6o!aS(ly#3t8@VxWy+C2U`aI}0_a@viIKt`(; z696cEp2FU2LTCxIRV2uEu>fo@EtNc{%>gtBEIg<}P z*Dm&dPKgS&xNzQm>FuSup_rqv7{C3>Y?jYk&KZ#@!}1I}FXA3e$CdIoF^I~88xh8A zOx$?m7{%8yHy^UcVBYhNopqXASo@J{zKipu_yxr_gYMANu2ND_T(Cb{l4nWn7?Pq~&FD&ALsXU$gDHGbZ z#~yi^sx`_K|#%$3at<%Ac2S8l1keJn&YMlb^ST z?;+~xV@y15ng6{nR&f>@m2r0`xd~}}4Z5CgFWzV_u~49x>T8p#t60cQn4Ritn7Urx zO$V&ZUL9pj->XLq-c{JTn0nlvPS8nFin0Ip(!^7Iqv>22WEIxn8!%wiLJ^tMXy9s8V9Hkz()7wyNU~ zD#ypf+ONxN#H*%H*b63iF-JbkYhv9Y?3kbawB~cv!XtLZQpHlnVx4!HglK;&3 zmUBpV_u@&1kT6Qll80}r+-7$Vj~0{D9~^eCu}s(`M&>+jL-lOHO(iOV1~9tH_gS$O zfRJOc7pdkM)!Z#GS|8r)OZJ#)tOelegt8Q zDJd+ZB0lA`yQ`#Ud2;%DMA7;4CMOC{o1QpftNYl-VV74>(FaLy&{G8O60Igf$fFA> zx;gi8LE|uUT#psSr*`X7w&n;@)3}Ldm^V@FweAMh4STi^)%0t3C`(7Cmvuax-O`rT zaY5d=PQ35%rLU$Ey|2tRiUdlo^f2TJ#*v1Xte6|dM#R7)vI{f%g_GxsSNGh}nL*Dq za|N!fxq|B}+!pud{@QwBM|$G?i}`A_ctcuAgM`NBm&$JN7GGhb{zVKT8vXZS2%*g` zS9y`k(e|~~<)$2o)h^~fRA_+FCXv2&_8bpSR=`7y#&<*G?1fEr7YwXUT)F%@?bg#@ zO_J^xigttW<+uj5mu^0k(9f3rEcUbB9|-BpT2?#KjndrOOKo**F`hY)Qc|C%Q%*Uy zn$vrGouwi1ebkj7SGFeqI%wz^-D-GDQaWu9xOUmEm}(2O9iEDfjeM#$P~txFd9L`zY)+o_JbX9L-IoZ? zv%;_BK7kvyt(AS}V3=8ZONG&H3kNOpR@1eTqTe>J?Zg{(p z-maWuvv?i-S=W4PFR|I-*V)1YQ`*~GCzlzCh9z8u)#1^$qkFHWBVJMgF%dKQT_d|Z16 z#t?Ya)GHfV1&24kqaHhQFw)&!;!)QCkJ?t^|8`;5_lQu1$N}xxi58+;HpnKC7yo}k?TCA?_kEYhj$P0uz;|G~b zZQ18@ZZ&W76WfK4V4xAO+NfyS&%( z^&bw&FC_LLFA%8W=UHS@Ge zb=`m3xLCxn^4|6;E1rm}67!30T~jny#4yWU9~ICKZh9fbnS$KW51Q!r9a|1A14B ztUsmag9h_g$=aThd$+%)c_`i{tm^DR-5 zl`logm7ZNxE7u&M3Ul+d8)aw3upP0(=s8*`|0C+yF!!NTlRv|-$cOp4C{?bDYVXN) zvh$3x;;#N)|6pPw=eVC{!T+pczF>LgU<&OL8pN7vq&K4YUnP;9jEW9l;@Hf0nB}Qy zhSi{U=_Zn&&j#S4Y^rB!wiICJ!cwTs;+o->J7&- z=4JHE0r?sA1NUA?Ul~sq``XrHLiMp>wX?!L1`>ePHn_txGjV+Hk}ti8eVmU}yHZHmLZqfKh(k(T0@jd>j8H50O-x;Xt8?+Ck8msSpD(C$9t7v{0Ck;lH4zQoT zn##S@W``CwVuWjMT9{9|Z8mDp%^xVc`D?nNGTZFdjmGO?gN}C!Hn;vQK>$R^Xro%| zXA`uMLg5!rZ45WiXvunMh6ccPSq{l?8m^r#iOk|6F_`D$*2Ids{N)~kq@Se z$*$As>E^3@Q{sCCl+^JYV{8b8GMP-tSGYapxbJh~lleBM^n{eZVDTdUP>1C$K)iAr z^rN8PkhFc(oW_&b8QQnQQ9N0%^@ zGtNUDB7Qq+%F*Lcr{6N~!h3=%$J5twrZ`UR{@p#5tkd6awU6xin&{y4@Q#13@fAsQ zl?SR|UTpKMG4qOEAo3%7tkkK(iAnKS(xk?yZ?Mq~~UP zJC{VA45@gX@+o=NIAE3m0RHOKSU|0MeI4L}?)QQ%vVbQryZ+b2Er za;i(T>HTy`bjXa=SYA@;ou!SY7!d#6Lw!i-69i*_-Ex|45N~+>^|1S3!!7OKNYq{v zxu0arNvxKO1BgAfME~j%`7X|TLXW*5JxFqLDji~L5DSW;Q@tQFR_W-Z-beve)6rA$ zu8k+>XRofzid^oh)n=4qS1k_dM5v%vnPjKQ8~h$oa&P-P@p=x&O^Wdu(xKABUNhV( z=jD>_cijwiW~@<By$|KBbm8tn)A87AE z?V9x1If^}(ZGzDkGGe&}u$-|+HFKPm)7ll%ZPDf3$86%L-1%EcFYjsy@tE<45BuU1 zd=fX2#4zn`H1Dd}G+_Fj;-?FPDsfA_L}*|;dh2X}kMrqJ^^s8rQPp>9E<9GGOr3QKA9b9^qxi{F}GU!BTQue@RN=S1^B# z@Wr@35yp^azo-!CB|~j0<|V$V{LmJb{)cW+7&yZ=m{2<7h%kmvdmZ7l6e{Cxo8@iA zClNHMM@-TUf?lS4c5r={^{(^gUy_P&=ed_aMo@$TF1F^hjMpOUJFHM%W<1ll&~h^L zNB0N)p>CpC5ed_A3!~B5zPR-@rIhjA^cVK@>9F>W8)vW2jU;tjm5w4L$6}#=Qj>re z%#q>0Ir4oVl5eUi)X0~ zch!^cr-kkXWBEd#L<-;5CX3Y;MswC^1gavxLHuaunjq~sS-afkwrtcsvy z4ymof^n9r0b(zaF2 zs84J}=z3Pda{ZOu(B*Ou>=oPq&!5g97IvzMx~57q_!_M$0j1h&%LlT7lOZ4x-JB#a_f=t%Rm- zy3zWuUf)CzHrIvo@Gt0eM`zZwh8_leiqtf!{^eVI{I{2uK`9?@?Q8k^SmKoDv4=J0 zX@kw**&}*$MuY4|WH=20?-0J9l3N^t!%KB>UuLX}#$^|$n%U&K>x0vJMA7o3erK<* zF~rhj+kR&hqyYw$@%_Mb-^r)0?-A=Mk-_@xx|V#}7i!{z?p z+|9(7OqS+n0*F`kgYZWqm;nrxKETUu6TY6l>kNZQ2V!UpD4f}7Q0tndfKyhKX`R2b zOsg10)N1udDdZ8_@P5yKpO76^uMy%@!Xy$YK;y75(gsADc3YGxQXjZV^?LshtNu6It$mQ}Mvqynwg zGWHmy4e6Ns;rUL^d$sbFk{{mQ8!G9&e2?Z)q!ardRG4?{JihqB&hoOAo&FK=Iq~KH z?X1x%Ed5t14pIK5rr9tHlpDONc7_EE?}Oy}Vts=lYh6Sh#k?AND^PTrv7GE1OXzmb zEl{Z``Gh;M$|k$j?7@)3r4K1v;>GHxodFz$UTxcUCe@sOg`FN;=m{@&>$YNrWelS3 z6V~Y_T^E*fHyBr^JHWBQVyyBC9xt7E{|3yV98}+#5}*Dp#?m3h{?_f-utaJr(dU!0gPs}_wQ|3SKQa~U(P8pGc8R*Ty;WYZ`ZO4J*xJ;R%J@J zDR%i*%o#I&ePZo~OrGX8*AtDoyX>Z-5Pk7^7)6}_bpDWA@z*<%&W+bGtYP2V@lpNG z6fcFGVu~48RcNh_>Z(-V_`PsB;l)8VMyW?S2n}r99jJuh)!l_Ul48&C6Ln>NJA~X6 zkWe-Fvhs7cX+$dvUlL37aVn|FdQ5vr(b0Apr$Kk+CZVx?1X(O}5>!O(k z>D;w|a~rI+>hLzl)mOS4b$sD8xO&YuN5WrfubtC}9WB0kD<~f)VRDOGpd!pdh5g^x zAI;Mazem6Kw)tQcH#0c$HDbzgN%~H+R1TF={4TG04!dev;ee)+#ivn~dW>TRdV~@B zoja9`3e?&Wj)mqjVNj%WUGKAQ&3zB^hLTho$E!{h*4F-E!%P{zghE}wF2&F2|Cqei zH{D=@+5Rm!UHkky6gqpJDkoPonKVm8%l^!mm~rTyKlT2|-|0CwjW+s})O*nje^}LH zM$ri|%CF2TO0HUYX~i8op6@8XX0YJN?&xa@W~K7XnVTim{TE77FJ`aND;$;e6qI6w z=?&W(-DLS&N-{>(NDm8oFO)Ki&N=_}y)d?%Sy@OQDv4^hE$+oE!K{&!@j3M2UQNpT zZ{e-=NmAIwA;Y?Uzcbu#=Cw?M$bXJds6BSgQy;OP(CF0IQh3sLbnDf*0ORn*S#rtQuA=K)2kE|JDXtUpDE6awtBTBhhAwdfN z{79><{43WB-+qrw|k8kfY@y>Jr4@k@fEmP)0hA z0xBNvLi?a47^JOc|8XYU?*!$5WF#oh3HT-_dO;CjXG2ru2WX-ah~EeS<_a25nTss? z#vy+dp_sIPJN_%R{5!P_hNglHUlz)J-;N0c(uWehkqp<9e?0rA_jZ>ub7D#HxBbgo z4Qwv83(_+R_-6`4)3$b#)@7O%%(r`TC$p~Ji90hYl%%3d@W|O@Gu!npLO9s9a^pGv zYZB{Ge(brn%Ev46GW5i|h{6HQ-sTOP#coVehH|*=_Y7ZAi0e#qks&E$* zcC4B8!!NZ+b!jTI`3}7fZCCfVen$`q>145a!%hg3UISu}9N02nYyGUuK>eSW*2jyY zF@U=i5=gJ_kL1l3CKM zAbA8i-qrNxg;t(6mMk2uL!$oFN8tR|U6Mi>wJpFDBwFm%PfQ5AR+C4Zg+I>h9qUIl zcsL(W{^h6Zx&QPZ6vrdKR^|Pr$(NjpKM}mENoxEpIHmqSjq3c}Z0_m<#^21$mD;Lt zX8r3WPKUt>|-PxFjCOCPn)Lq7Gytlf^zPa z$wV{*gY6E1hR2n1BlbUi{D;QI%usL704^C%{*9XJ*=v89NCR$pOIVBoq^#s&kgO2q zXt~@F|EWi9mJp&%@f}>6c@dJJ+L_3>P6MCWw2waJ$1`q$FBbQLo#ANi8A{~h3KAJRkM^EM)UWb z{#1k&58=^2c-rb<26d*)U?&2kEtmmEmKEpiA$-l=Bu7%tA!aH4JEoZq(xOW>=K1xeMXw)K!0m7ET(P1#`OZ>wf z{+Bc-@|M=Gm|S^8YR@$7TvC`L9)n%f7r)0u$Q~!~4CEH93lA!fvG2@&fA^O*ZN39* zv8{_d;GMPHbw>;_7;s0c=j@uI@wTr!vH^On^D}nJ}tGUu) z_t&f*T1HHsl01)tG)S~$$iPairLU+^lOHE+cdy7#7iX?E?oO14OUV4)a$>o{4lE+3 z^=V+N(L}T4I1kGMG$(jHpespUi1x>$xAL_!&(3m(=3O^$svs+5A&5+gK$3Y^$s(F@ zfAHcsra0Uq-$d`7YUlx|UcPaa= z-fp~*dg_F_w6fO~`}vI3j;ALOsdw(+4>^gS4;1DntwA)Z^BwEZjg~B+;Mx z+pNGbU^YURw+a84iv6e3MSS3&^#woux_!-QSwq%u^@t5rG7zc;@-up)5YwW}6;(tn@RNwY7$(7LftIp$9d7i^UGCVV$<(;Bemnxlwfb z2xWC8@wbMj)JSGz5r0Aiewl1q32p9vsi{2tyRjN@y*ehsO3kqRo+Jm#JQ&R2cbp_p z!#?#~*GouRl3!F@z9Tuyg;2TrG_6syw4>oRPMW2Dd)00zXUm*rhncoW!wn+y>?OJP zDOiEjyl`z?@7^VZR1qa2?U~{*`bW4lk$Yn7lw*LX`2Q!d=(V{3n5ge#g znP_!sXxQjZ81!iww6N9oBP41825RBlGA)kWbjCmfu0JE)ah!_N;|cEK54eXnV!t)- z1!GdgpX}^xQ-114kzx{R0d^p9ZqPfTfH{0|^)L#gIRl0LFW^q$$>^2aO`Q&TZ>(Lu z{rmibGcFDNe1K@go0T)AiblDsIWPb;G;Z2pF4X*-!>ld&&F_Sy%_con<}2Wav0p&R z-?67sS;&R=XvC_jr-hkA0;EydN{Oxs5a&NZ=WPdQ%KKNUM%cgF0QhJ@Q?oLJr4q>} zo-##46EK3rrHOC6qYN<{eHDz`m=G$pI{ME)fG<%5YRnyG!%}Nn`P#$yQ~ly^Nj$Ys z;Dg1W0h=%011GFq;Z~+LY+iQedYJ9qv!~}4w}Ii+5<5iVnOH(yOZqNZv?QTz-pmPb z@b!_8I}}&_=yp0aI(%EwlfJxsTiMU=V_5Ujn7@r=PdY1)@yX-J#$)`*XZkcG{6KmM z2w!*bwBw&=c5lA~ldiAbE&{?wPK*}r=@|lRu~q7?eE#usPnCM~@8SHlb~tQIuHjsd zuOi7ue*ojKsG@+Fo(}%Q zLsoxxSo1ftdJHmo89^2+o^gL5cOX+C`+*q){(B(Z^VD)EVqSf)Xj-uHosC&iah=P#7x$kEZ(3t1CcKPvTguk2kym|oDsXN982urz5Gb|-* zAcSVD{G?#-|ELm)*mX)a3iW@1T<3Qn@V~F;EhG;IKaFRAVb)h4janfdVP)UaeKn!` zA3H9HM!R)8M@Uua$pu=^BU(Cc9krocIP~D=@Gj_}M?sx~y~P>Q9alMu*1R=_Yqsl# zmcZX`)sOb}Z}}t-dVlyH_lFPWPG2xTapF~N?kfMkrA33NuL49aF1nO84nfYsDmO11 zjXy;vMo0(U_B1G-wc4hb|L9HT;a@Fx(vCg5W{KWL0s-Yt=;s@#uZG$=<+uF9mSd`E zhdsUI(8^Yc&J<|pd)?`Juf2^39VyV)?i5bXh?da#>f_mM)FG_UVO(P%N6W~#KXw0s z*^^fF#K8S1!jEe&cD|jasD*kb^f59HVLt_V58pE>LS7Jb%-cxU9RI5>-{M4i9Nqr0 z;YYVxisK(znIGw+Y$vBQuZcorv}di*km^!Q&!^v0Jv&$>D=hwyW3i{f^&gI#o9u!! zbw=2TUm3<^ICHQzSnvBG8P+TB5FZ~h5Jn1YL^&FwuFgA47)KYgLA9!uR_6wI*Xczt z7JjuQ@kxJ?ysPa-GlZYBh!|VjHk?954VPXXPOrg)fWEl!6ie?54{pAXO8N5gX2 z-RiM|W`z!g4&m`qz1qExIMq?XC-TzXG<4G2@^*oc+4J6?+t-D4%iJb5oo3~;6e#t0 zSFZ1a>P=gy=Q|?Uj}5+{)PrknE=4$vbS+lt)3YqUUfo6X2A%ZENxUeOgLa;1hqzDm zBAo#mN6P)-zs=bAkT%9b+j}2TXW=s99!7&o-`qNqb84onZV{ut=WJLtd;EU=@I#^t zEAA8HR8MO`%D#I^Y1QY7KBZ-B8u~n6c7g4+dzYn?m$G88i(CHf>^o1gukNYnsh;}s zaBhV~luYy6&- z)6U-ecR9Tm6ZNxPYcV!HXoS;!FTc}EEl~3@W%r+}n)_X#iJI+;BBU`~2pTY&_2+yu z<~>xI*1+}tKRFs=&*DFY@l;DbSPM)U4Cw8qgaXiv@tkh`>l{2{4dwkSC36KKSdZl} z2UJYdDjM;#CM5_OFxqVCBr0i4Tuw;NbcWRFxv_DGhnBUAbtvznhJ$Z zv&kc0jgZ!tB=3t2i_Q?=0xGv*f$yvc1JCKfla?$^o9yuX*-_H)PYmhlBX0zu)1)tcQSD4;aTq9g)~jqIcZAwEP#cLv5KUVw0ABzh*@Ga2hHH z&dxhg0j*57W^b>Xs0w~~A4vOud&W#SK$Hmse9l*Lhd6%_(%t+@7$Yx4RR%-Z^^VGx zOgTUOuthjfj0Cttuo7s;QYJM5A4X|KCqlr0G>{VK3OyT77I;Jp_acRUQV%p?E#B1Z zIuJBlj{Rr$9CJ2^1WKa)KuNSG>0hap=2d9%7u#WB9SG#bcL@j_0iK@KEN~7H{%HQs zs3b5;Q5;oImccS$Wt{IL`y@0$Q^Okp^zQQiu=n0kO>XPHuxlw|M@2+Mh)YB)6bnT~ zh%Of*BA_B5L_m;U5{iTxvIGSIAp+7wKtYPMP!k|PR0O08NC_bcy(gha0;H@v6ZgLN zeD~aa#yR8e@s0C+WB*AK<~!dx=kt5Ye4gJUU=iaUf?(E~)1ZB;eoNc_PC^Hg$+I8x zp(Eg55Dl2+edDm1pUvgTY_O_LOQq8qXexTe0d!}|X?e$A5k6!sSh)3g&RPk0*3)xn z>>`9WxAuS|01Z4BEY`a42X$9y3yDhTG~%cHWzddK75o?ymVN}wrwPL)XqvDkAMM|? zdELd3M7Aa|ii2~GYvV*qK- zt}k*Uv^>etTIY8`b2t~!5N%=~{^uj1s|M=4>Q??f8o1~JhA4>5YM{@E{oKy8A3@AO zIA1)kll=(I^!}fd1=)YZ5eX=3PKgUmXQ4TUysLsT8~)ih+G&#Lv-fE5qK*SKWh?if@;nAe0q zy8>OPKybX%L3aON8@z!E*@$hy2+uNTcAZJ2H$W~LPVqfb(pUJ_TojRm7JdhW_45G% zFlftzeYWw9{;A3wJkG;nP3jpOzZ6OyZl9Oz#gcCHcmn+zXd0JE*Y?d< zN%Hn9j#=X4*D3y)aj}XCX^u4tdoW??8oe&d= z?SJxh1Oq_8ilO_Ly4N8r;fiC?pFPm@KIlR=SWO2$ls7eo?*yWWFa9YHYyf1QV9}3a zLjL$u7X<5_CuuNl{n|z}izWPp6_7W9*EYT#u;S^XC(*?9qiH`MjUI8P0XYnTu0sBH zlHa3ie@gJ*MHJNL0$&r#7qyD06a154I(~d7;zG^_zl~F@%NzVQKw{9)=8fyW8VVot z_wu!vPf%!e@!ku^(4{~?Fe_D1`cJ)b1}JE7b8I#DcV)EC2b_sgfS3S6M*p-$uSy4P z5K4E&ufiAjd1FMRwPUc{-{N@a=b$^9Rm;zE7$Q^n(8=ur-3fL9vifaTB`DjRTXPZ) zfdgugpeBB9KUMgi0sqF-6F%eL ze_We{jzip`(^D7a@j=(^oX@Igj1lV0xVKir`$*ebE|idoE@OF|<@cp9y!T4BbCI8H zGvk6BZTHmlhu5)1!H3g6M)(i<58iNg`eTufRvyrAA@?o%AdgnpQgHO@&1Q!#jy>{m zxm@_mj*YkSY|<1iUV~e7W$eOyg%GE-;ACc9U>IHVg}83(o2suv?d?)eog4LFi57`I z(Su}<@Oua7N#?3AmbTiY7P4^>gD|J@h@fJE^h5Iz<2RUD^44a6^dHWLT2nqQ-oH@`b}yNbr1#vW3Ms~6Y9x%C0= z%UiYTl7DTu&$}@07X{EOl2d_sK_>2rm~NiP&1`(=`F*V>bcOQLR$W5v{8kH+^bGE- z)oH>}JacwtS(X{)x5=P4E=+$8IeRJ0+xavt4IhBDHztTC26A6mE*gs<}Iuo_$ z*_;A(srVkTUWcoj9v*q6;&M28|B0?mi@rvs@6V)E!p&}asSX86IjBCM_odkPde~La zJ)9k7VNVmTE9_~DQg~R-7C(2*-7Y*(FVUiAu<@>eQE4JUefUr4uQWq8#y=ReTLY{G z*of7|gvbf`CVk?|urZL{b#XBOgQ(c4za#Y|Np;0IPL0Cf3A-BIJcitF*L~x}#?Q8& zCYI>fT;=4f8D%kq_^Lv*!a$h%&E&Ux&gaSEjzj66S}o4 zNfqq`{d4wF%o)(Fvxbv_@o=z^n^XP=viT1_{^vMt-~PKfZ6~C&xV3e^vZFa2tVD0F z%<7XN>6B_{DB3STvb;{^2k{}Iwt*`yh9OrX#s~zYYeC&`E6`gYJM88mtIFIs`t*#= zGnJ-8Cj_Vmtn*bT+63?s{Cie^0nB!Y#eTp#_fyBx7J7&+t^Adog^i%^7Htd*GNsc6 z$olP5@~ZX%(c?#7kD!X;Xy8MT%Q659&Oy3bhPVBYyf<;l#g38J%vLlORR399luwZ~ zyxfiNF>if|HR<|Re|O0)|KOX~A6f;7tjFzaDheJ#HJ9_X88Xo`T=rMZXZTqp$n|&a zGXOIOO7?N}U0rWP{l%IEmQbBbMD z(DtX_BC8BJ_0Uxx?Ack&(0#CHI><+!9JDf5*4^gh=?_7pX@>ZMtO(nlV~+I#&2{Cm z)fZ+Y1Yl$>biO>$X%*PRG|nPdoHNG{UPlyF$8kn@B)&3lhz}f2ceP0xe*x_St|%oy z201$jQO=pg>`zyDT?ZDD$7E zAJE_g*dTdIJq=8mxoM>jbp76_!SaiTi)_N&9 zj5oH+stf$bx6{OM+I}r%a4^v%$JL%iz~n__kFCnH`*|WiXcpe`?0QZa7Z5J;X86Ny z?L^)%p9y^B)BGj|m*&Lol~L4kQVjsd3!sw#A*TOC*Bbz1R+-b6{!xr4i;gDpezrKj zCi)-{OuQ$>v<#LlqM zDU@_+HTD<77Y87i6t=q&ynUtX0z7#3jg>xAzgI_#1ai>HWd$dYZ=~cs7~9NK6GLM! z4YnN2yL(Gt{B(%kFNOjekAhi<96@`~ElUP!35(*O_}Dcqj!Z9KcW^*LuX-D-4%X^a zSV`j-n7HaD1RRy~>Wiyl-9S`MM3&0^T&I&!YUg4V51kwlve*D`{vX1?^g{;msnvG= zO?W}j`kJKRQD}s#0WE9Lw|0zz66w|a0GdXcgvrLY-KG}=jnH6*8i|?YAAW&!?|b*| zw3T-OhNn|+{odOP0OuKqL>Ts_PnYpT0PUXv@vjZPTTTD9fhP|5duR+ea9gy&mta>r zLGUqsnzM>v>+v9%wIY5`Hsm*#44Q|d>42yM0qQLYMe3D}dhPF!FYcdM_?{k36G zXf8f>Scb|}Z}(sy?^%N3PdNcQ%>J@#c%CAZ z;(^+%#hfh8MifJNI4LlQQjeCVkjw1s*qg0Z0l(kf+ugi|KhhC8dizdhU+5CvXS}T! z96J0Z1Tye3nYKsk%)=lp1m%-HLB0Qvk?QSv9w_x%b>qVv`#g*nyrcNtpu1~oQ{_o# zq~)O-pd!KkgYH?CTSYq+L8#`D*I&5M?aI;n4)iCI*P-{;Eo!fGqvod1svtzTP zx0-FQmr@o8GO>;8KdlI=kPXKzN2VF+oq-_(u%H~Lc}rH?N_K0D&+*p5ikEO_^Y*fG zjuv6N7K@w`l$YXf|0p&hy84g9`d)svZ)llde~RDq0R+GN;%5}ASyJH&aJiBX-fXC!`|n8 z_w#yY%y;3S!0lwMZs&v8Qcn&?mbM$(gIK=;=r|!Wk-UVoM8Hgpo-yP!@fH9D7#y-h)V1Q)izc%av{c@K5YJ&tY@D5$g*L*D5te=k=ARb)@5fzT@sE>%! ze8W6rZcaaOFvV1=I@g2rKy%kb6P>>DtYh>9TSP`y!$MEO)xGf6<@Fu>MXo>8}kGkok;Xfc!WJifYk6bb+FXddh(gL+bhDRZTIB;o#LV!6APky!x7c>y20f3(-Yp ziVRwuTnHEyHDtm2`SQHMdCS7po^Bqxj>TN8(YgkoL_dMkb4p93LiTX25EHZ0&UMrb zXk}(zf@JUE=p2Er+O5$u>eGOE1)(5Vc6=2sdTkG{iLcHB#Y_gN>irfVV#HrYZ{Y)U z_a+iKUhYCg1);2q)o~2PD7+|WqG_n67BD%w(dPl)1&z%V<}7x)a{)-FuC5j1MGWQ# zYQ>Ymp=^2F2Wqh680Mfvw|xCG!Kt$pIXRq{M@$*-vUx!Vj}*dk1eqmRV%G`fgjIbRC{CP+W;Qy(mI)q$N@ zM9{ORcYGX3iCjJY2vS*0YeGiPH%_ql0Dp$R+%>(+Yq*?_Fw@)DoPDD!OdyxLy_*D( zaj_ym!)8TN02!vG0cD7y9)??Lzchdhh%;-l_ZD)vKASX8uf>6)(>+Aw`lye+$*Vhd z*7@1{NS7*qIOZk`i?Ue`Ba)waO+7Hfv9yuZ@Wl{~#bs;wwp3Dyzx;WiLSM}kCRV%1 z4^-fbB?m$UR8PBXsrJ#plqnx8M)Y# zxsHB|G=RAq!`reuW(>+nDANj0SRO$-qP`#gAQUi3KiGe?%-zK1%srLTzUJ-sn)P)y z-J198a%l1N16D9NSAynswEpl3^|g>zUle1B%4pFL&zow6*ni-1}bMb?na3 zj66ZQ%`~(gOk1&PhyZGJsnh&)K|MMlD8-3c#H#nsZf#&I{TM8Fcgr)^uOMh>g>47* z=m9|qDRv`c(GjK9&bAow>v@0P{U|Op7_IB}1S*qL)d^aH((&{IXP^*u#&9+zWiG>= zBGP-IE`^$s7mX@2)~Uif+`mn~pk^>Ow68)#dFL_jidX0Fy-#|5+;nrouW3JzU^yVa z9e|m-xmrZxaQs%1hB9IVmnNts*%?hvF$GId6`fsAr&r)`EScAsJ;CHv1?|Hs<@fFt zH|Xo>@73OW>XeWrK7>EFy7J9RPOS)P!;J)Q$)v}H5A7qANtO|?g=&CE;{km3U6Y;r z4~;|!9^WUa@jP>ApYIDgV3a8NTyeI?#Bgt=?t5XSN92EC3izz}7Q zR04uA;;BVh5v3PQvM)I|kD6{(iJ%G)Eu_3UJs%{fJNVkOI6A7c7to?c~%a zCF+t3w;G`y*2HMKG%2c;4k+lNK0SY5l*Nhg)1sCpoQ%5_lPSpRn)#&*EncS(XeBWC zOS=F`Jc!YwnN16ZOzishnY!v(LuMG;VU@`C;`H!7l2g!}PdwlinDQ``wYnZ=-evQ^ zZf5~5rgN|Y$$K?8z>8c`&a6fgaR&14cNuM#9l&cLp*~cU5VFIhLqxXD>S&;z%1Dw7KE1SL*k11f%j`-eZ-O^@Vd zfSQq0pkZ9>{ZtEMA@%`oV_-)B?S2zTnQ~Ns>2D>V3nkj{$FAm9__jhpY2eAe6y-ct zk)F5dqmujn^wyVTvgG#QFDCG9ZP&MjCYY0cb51^)I~@Mz{nV4LUpW>&3;AVy(p z9ln2QZS`ucIw18pm`bYgiJo75_l=D4hPU@tE~#FOs;}}<8fkMq)K=%??%=r+XKd2f ztFNeUd<&~k)X~-?SiSQ+*ms^;7g=1S7c@ReMfdRRDgc8c$o;FH%SXb8=6KVKEfIgWZT)?WFlX`VKh-k>E?GtpxMT!&x-#z&*w^*F ze{IkK#D(d+U4ouxQ|k(XFDac2^tuZ8hE|WR7MS>)EIzm;2tnm6Fh^+PREU@`5dZi# zbR-8IpU9gt92Vur5Sy&{{aOM8DifLvzyXG-QcM3@Ti->2rmcw<<9G%=1GV&IU_kw3 zuQ@XGy&?thd!Uf}QFOc-&sgn8Ta%oG^kbDy8S@IWEqQOC0%dnb=q^0@JKo@gc*FSj zc;gD65#kMCuo2=-xBze72=FH6f5V%fF2T27p01`YI=G>8pp2=;v_Hv!-259FxaRg& ztMd9QeW!Uz7^WyYXO+F~#o1XUx()-z&ssZg3K%@25HGF`p*f#1wG;qOqc*tI{QsNd z_)m3l{;BqgE8V&^OUN7jyN2UI=0!W?{`?; z-!RBv42LsCVvyxYIWlIF8`Sfq@;eTTn0{b`z1bSBcD?Ftn$8vOl zp13mq1~;5XN!Cy8PIW3>$2yPWjgcA>VMRk#pgh&RQbF5(xZumfTqnE2*!>@3Uq^3A zZn<^{3#7@LQ3)i|;$k&H1LZ9#7|WOmpC8&z&`9xJX)<@M#Z(i#ypQX++lzzh^bzub z2bNYr43SnwTjA}(mUh#-r#!tq=lbuQ7l@`eX_cbeZyWTQESTv6U;6n`k4w->#MKW44fxhe`A zP8?tC+E@?krH~&n^B3U-mcju9h{~|0^ckQQqE>) z&t|5(_TFK*k^1&&80?IzWQ!;owASki=)HPR9zPx)|0(Ow905T7b3q-H6VC<}Ow+@I zXQ{8|42U!Q(!YD=-n|5MxHta`nb^2|aA!j@U!)wFroIQi2x(w%wk)d7r_YRWB3eG! zqwe0AM+qG1jWoeAVFm${>1QtG-^#`Q!;b@AqZJt#iwW-g>P)o&yxWT9%wXiQWUW8* zVrdI#^qo+vohn?=7UJ=!w`ZY$jwdalqQEhL%P zH@X}^LZI^qia+i&$hFe0;9;g`bSnnQZ@Z3>-vtkTy?Pw?SX|_~Zp(|ks%d?fBdykH zi+p@(4vE+XZtLW4C|lEay=q{qe|-ZtDf6~b%a*b~Sa<11G-*I1e~f6zwI;tx(r>5@ z1@3)8qVY%G05ph4K3}1et+E2{s~^#6GQc4y3uMqP{ut0lLl|UeDAf{ zpBJ|0)mI(0jrP{LGjTV2QQxqxY>A?=IRBwFBV;*=Y8s>dYsS)niGYl;25($Na-nPz zOf>rRXLHT!?r*1+BaSr@J%Yx`@b*gblHn2FsAlctF2s|Jipl})AF%y%K8h9P$Vev_ zC#4C3+0H&=7;&=;!Eu`{OM<1inTRFHhuA~Z*hG}|82U21pSrU z=cDJ@QPibD=}y-K8r$|oaGw*LNjawM;q77%(e5FfeNDELyfG`SmG5rWB{MtW|3$Ii zZk!j1tePm~I8)PK7jEP)mqa=bx+y8X*q`Dy$;h)Set&dR&E!P+%X`<=co8GNL^RSq zH(sd?FIkt$6?6vGREOl}V5+lVa$F8>qLlC8a>h z)*pF~o!5*b9c=Hf#h;if`Z{>y}YV3ej$1MLC=C@Ev4WjO2K=N1W44FhW^TM8H z>dNt=YTNPOTP1s`bWTNi%zd|oK@ypV3Y~!uQmBeV6p4OhZ~eAg)Z!fl3O7^4f2=R^ z$+Qle`{SWzM_;Q)+<)&o5%GuPc*Gwz*u&31Xy06xy^)EVRdn^u|+r35h zNXW%ZG=;eRpB;U8S3{_Ep^pAqt}HK8`tWlu-X zGT$^9Y|OfZDIqv0W1=G-WJy}gw|^qMuQ#%FZV)+s?eglSZPV_)q`YWMb%Eo_-Y4IO zH*2-2QS!a0$79KkWB{u1+h2vM$AA9y7n|II$H6UIv$y~9;K?`HG|d*)GFfAbx}nF# zIi~^En%PqX%10zOK1Q|l+SsLo@3&J%8VaY~t2P!DL30J!ur3(Ti~+}iq62p^Q^Tpe zR1(ic(gv>dV>S&((zq7L2t2NiJ$K)yV@1rCv6B}uSGb0A(m+ef+YXoRdt}eJ=*;3N z_zuqIsb25w>pZT@F`~z_7MtIEIzClt={CBS9eOPMh1pH*V~I!AO)GCtFKmaUp57Z7 z98u^ss=QZgofc4}KY^%e!d-5nW93~5^>noqtqHV`w-Z7ov8#2Mk+A!IGs?jo*}R#i zaz1E<+^0b@4{(%MAXt>^2J4jlV*QD@GR8m6$SkpvIAhh)vzGGMQgZ6}{x}rZ_Z>wQ zh7}pOU$Bpa%B)puxUQ}qMhaNMyQw}h=^?_H>o4qrrpQaG-WCdv_pTmo={CG}{Q9}e zSZjJ`CE0+&*tCb@dZP8@sqOD$F2vZxjEP!4O?FX{)Af+ThFx~exHVhD#y{pv^E!CV zLwq{nX^KPj5~;Af?`~VkgTV(1FI#;aq#K_|p-?X?LlAW`JMOB?j5a^=*x54Z)mymL z5WCLBbk^n*eAZra#aGuv9ewClZS<@miHr373NoSYh`LtH*EiwY@S zU%wo!<7Q9TPw=SF@^YVYe*YFx(Rl5Ssh**p;hq+Yr}d*Bzg>-Ea3$D;5i_{_}pu;hW>oYIUk9#mrBcyhV$dNZzD|?^l@jjC(RiU4bn3k86y)f96SgO5gsq^%UQ-w48@#78XC`EoTv0J zu;0%t6`ID)QVZ6+BInwSB{VP9YlnPgK+ZS)xP#~5aE@lsGTv#E0F z{_~M3X=aRVT}*P`^0CA5j3A1S+UwW9h~Rp+`#R?vM?LSGGBMN2;Ywl_et<-deQf*3 z((?nBlTEhguSvh6T+r$pgz4m+so0}=ymL+w(+6o!9G72OZnJm4f9d4O+!O4b=qAjo z)^PKf9Mgp)TVHbH>&@=Wt@!0YnETa3g9l^|s*2n=f}fPGcU-t-_c)0k%p1LXWB2pk z(Ckblh(&-s0fRTa?M7FDsrI#ddsThSvFID|tK>M8EVtd!J0FUC;zNb4XF?7QeT|s= zP~qO=eGCmtpF{7y928U|Na#1{Og%7oSiK#ayt!R|zvXx;o>{#rLc{2*lwZZ{uqib(}tmOFnSlzixOZlL) zA;fB>HXdQ!kzG{vpUC+8iSKlm2_lcMaSbF9V3$FDL9n=6fUX!P-VfCONuNN^D-y}* zr{1^IL5?{c+&y==@DPH=q#tQjyk6xBl>96e5KmhhZ9zAUEV+vA2)A^-N__2k{7xF<$B&zCxWTsf+Vtd0Q@p>*>FyZ{O#}GS=46Jc}e?B!F zEqyn7Ukn6YVd(*?fpES)aXVkR9$fs7D@cWn^OvdKz6#N5iaj`WgMqpA%MG`bD_N7B zB$|xJ4{uZs8MZ8E7>-RKN+f3&ez{98&@z=z$@tQA<5h25S_3`(|%;pfadIkkO4AuAL0>pCCHhm5) zDVq!kiW|eV6gJX#mi7OTf)@JMR}w7NHEgXt@~am$93Hw+D2Zfgmohbo;ior)wSG_E zwbK3D;4VIPv$Kn_@D`)6rn{X=mZ3Md9;dyQpNI_L1UM?}Z5bToFPI+*GcP#q19KcL zRg`}3t|zYJhjL%aXUHh*p6lOp>u~A#)>_h}luJ9?mtsf5qo$n5n-_f)vio3>Gle#l zLrP2^BZ=N0Scx`uwE&CqJ3~tSCx(5uhL@p)|y5OV(~V&;aS;15E=4oss+LF;%>TH7TBlqimjLKu3F}umKZ!O9w65 zpOM2~rad=)6l$M%B>rnkV(mwgA0%<@yxpW?#GGTXMu2jp!ljKvpN6-_yN&EM*o09i zt?AL;d2>$Yw^#9RPz{`XuO{k73Itu%Nz!s8t<@tjZ<6am+-jolxK%KW;H3kGN)ujk zxbJrq3+NfaWOxnHaj(^{^YrCGDO38(l43g-DYTy0TS@LBBL^FBIqlXs=j3v&Di`CmZW?>w_?tHVKBr?(61MIt9_c#Q zSiRA6>;7Ss4#aSgUDVJyoPrVwuc%tLO7UWd4tw;QRJSr+nBygSNfd}ki3M6;*Yx;# zD7Sk(#ohK)2_f>~2q5fE)vH(!8Q1zfBVByppk|$VgNXQJZ>b57fm1z|j_z2qgq*A* zjFgfV{+Q;wME9x*yTP#?I7lDtqFKn5iajT)UP+|uJkS48Tvo6*ylcC`-ut7m)UoG8 z>OnP18EPC+l^yWBVFF)Dc)z9eYJh?rUL&gW(UtCjCTN#N)Tp(a2TJstzAugwST^GGBhs9m+N>69C}pgNZ0TvlNg zn!UGT>P+nfVM-5ksC(;_)t*P*Ibo;X*VZ1Ltb07L7UDG3J04_JTS9jA(ejKbR2sQo zRFE-2bevb)`mp*Bhwx(+#9BR_`-3-L#0JGRAJ`R8+5H7=dlvtr=YXYXZ6Gu$-a-@6 zX_f5Rb4o#X$&27fGLd^CavfTtzH_J9H=Lw@rF109BK(o3E?Z*x>*)^eBy>j6kIS%? zEqagoK9WFVG_!-E&F3zsl;NcO*@~-uAI56|)}0G~*DENM}5;cq%;?E`y*2S$Lf`Ap&^DistUsllH8s%aC(-yekF8IIoufM=cXAQa-QBAzg zSs6UdBD1CxBMH;zx2#OI!#omqVBEfI69S1Eso{wWu`O#!BM z*66ASa@izn)%LMpO)g~m9iEX;`C~_8NYpP!wvD~TUhrx<9uQCtxJ#xw+{j3a7hg*v zBj=Lbtj`tO-}n+&zs-7X7ep-3WT_lbE@Cw0}a@-9ijSD1h%~u%KqfT5RtG}d-r>OC!O*> z*uQO6Xgpv`eZcBTie~PG@22m5pnXjC(~#23)6MQLzQLMB%8B>NZiq(iGmup}>VBs& zYc4H~&0DL@p&_?x;>l@0RZ1IqUnL+)IdClN-YoN~lc~)w{)!(26Ai zMz%I}D&OaMRW+uC3+dDoIJSumUkffB5|&o0#yv2g7Bv1YMDA#}-M!v`WUPW;rT)ke z&C^y}HhE7F)-(Eoc4^aC!IrXPw^i{^_H}RBuZBz5S7m*;CDyxhpa_6gVv`q+#9uT* z+^wzF_uvo`j#bsfC5e1zg}JB9v~gag3`zETd|K&r=M+9&B4NMZ$A|Q(_N@GB!q2&( zPMn-dL#?DzXusiB3`m(NqYe$7uQp?)aMSF4(jwdjT-p#xDi}i?j*upV(N+y(G=2?3 zGiyY@-aL_)M@E=TE|HB;6X(Po9Nram?uma9$0M7=wMM;@F*DaeO>YK%Sz%o`hwK}$pDVCw2#?TK+a9L&~1NW|NXtttxEBKoQLV5 z&4kWH{^(~rNZG3p_(LkH;N43 z9-v06+yxuNeZbi!bnA6ylb8=RGJougalZ=DYy1T|g1SD#FJ2Fjz~#7bgPZKLn(o03 zIzBP<=Zp+X*uT-Fn(Xb^4(m5U9{#vwcWE>XN>F2+AI09|#tq)5&&2>1Ey8(66Yow> zde#TNtf6j_ar^JMo|LsLr7ZM^p}nwh?Ml;F$yk>>7_>)6WtQMp@x^h;&`u6?HlWPg zT_pz`YI$48j?v7kChwh;&a|r}vBq5ncBU2%sbwP6319U;-%u<%HfhnC$gu3*NeJZ8 ztF?(s*`wC$x^P!rvhCbWz)A!>7YIx1BM{ch#Ezhn+!PR+16~A zsV!?v+X@Y>nPQ8eIjW+{)zg+RGM^c-oQRKe*iS3dsV2h)5mGcoFOj%roOOW#)l(^1A&Fl}#;d%Y2B~ty^FEml&E9q2J0$W%J75yM0~p35goUlN7Hn&4>Ue z$D+z{bnfN=I2lHkJ&FvFD*n!G#ZxY-z;9dYQ zs*b_jvKH&2p_@-Ax`lo=LR9^++3B*B--LIn_?;UWCb>Ee4xcH6Bvc!V{BSa7B1o4s zF{EyJr*y)l>gA9H9QIUexXHU+OfBQ%B6Ss zGylWe{(qYr@PB`a_x-<{o%#+k=>`}LG(wEs)u3Xj~I%agj;on&OVc?ou5=KW!>)S z=#4aV9LgFqyX-L+BgoIlv|b2XBXd>Prk04HC;hIXEIKNRY9+PAAxI|GBPX}p(&rI& zpvO7R(3<%Gf6v4%sDT>qHz;PAN zZDrAF3V)?($#e|r^vEa7_WBm7pV!M3Q9qyfKzoeIXJAsOz+DcSd5-5w;IhFtd6 zXWu-M7JFmXI>Fq@Mp!SHr@@4*nqrn>X6ibcS8$uHVl6m2p1)-t;+|I}N$2!cwYOs4`dVIn*)Vpxq~e=MLTpC1`gH_I=$)lps$a|HsxcuU76k66 z>hmS12w@r3>iGfcSY$)SUV zy$75Q4xeP$s~4+@NeR6Se^>Pe1`(q!Y0oI6gtmJ^fn(;Q=KK30{3KBz}#_4YkIy8 zOY&u88LHhpY`4on&KO59@Z)YuRhj$)}vm|mgtt0;?~B(1t#Uk|0iol(p|l-rG02QQ&G*Bxy${U_4@ z$l^NZ3hNXKm7>6u{LzYOAZw;0ZQ3oR8-2keg-9UiVXNbu$Jy!+9?QuLHZlypQj!Xj zL$E`tmDt#|p?IZTiSo&zH>*zO=1oRRAaB@tjA?;|?P>v~ET5n8cMlVjZP6{A>ZNr$ z)*MFAQ2mehuqC3?imm1m&X~KkqvybuM?*PPkbu_;z1Iy=AOvmVd2?8BrN~U6!5QYRYQ6kLJ6z!oaul2C=3Qv9 zZ!NHKTb0uvyT88=PHw$4AS{ud30nhs!k?ek9Yia%HC?j~7%Sl4h7YE{q+E+;)W$2{ znXk+5=y{}uyZN^JS~NwmhLiKK`C6K;K~CsPlaG=!7lj#Dk1gu}&uJbsv8kOIXQ8>M zm*?*_X-}KinjPw_P-}E4Ugx|&t8pF@bIU;IoI~e0lJ*rvO3lesS#8qmdE}f9!@k`f zBY+zjLok~T@(2-JUZq;e0y>a{`b>Ii+>+#&{VW}ol^jxDtN{@%*HD-3Cj7NQwmL2r%Da0bIK+A}`xEh%@06mh& zkze!U>UVOR7%wJeomU#JHx5zk@M`LY$el>h{3Y*HET+@JXMDhNu0dNu$@Ji}rq{Wr zV)A2ELd^tDW*!EzP$4$qx;gV(I`m_2!+P0R?XxGMcc7<|;xFlLFrTccfLWrPpcWU+;G7B=DuA-Mo!8RTW~tw;m1> zyiOse>6;ZG$Yl3JnGOQ&`8bhED1(%!AsN&)-_xf&G|szDu`TbWA9}TH>(Jyjq;FzV zdgy?2-iev_MG3EC5+q_BGaY1&a>oVP$$w0(d85w+z2@5kJE0g5{#Hx6vXDJ<^PmAo zidx)uauTZWPpZd+8uGdV(!l>kP&*aI-u&u(`w^A4s{MZA+|lcBQNbi$@vW@d#y}(~ zdH333e+_UA&<8m{NRjU%vw5e7k#Moqy7`7}eYs!hVvJBO?Ksh`G6QkAHxqLAs^p)0 z-2_{&fKEzW-Y`R(NLh??=N2+icv4CkR;_PxP{V|{{d*-UKb0D1>yvGHSxL$K7IKlA zBDU$rOXC|dNY{uPB@fXx&{w zLVSj+K?NeqLS}8yHsLYiTtBVo`HQuunCQBfP&0%R6PVl+rX!-uzpqIVf|MWI zcdUsQYn*nPS8N}!=9D?Dgbt9&iQ=FK@enz=0NIZvSr7;O4u=kB#d+$Ov3l+rW!^UW zu2-;nUl@YPL|SoAgbe?+!3=%Q)oQ7#Xn-cmmJgiJNX)C2^Xcmy)U>wfeg#{`Ik5th zzRvl`7*@G+de4$=%6vcRB-@fZRaGrCf4?UEd*0Yt!vs7}ws`j7c0p}A%``Td^3VMomuGQ9AInSGojPK6uI9pSc zO9kU~bHoywrb-UfFpg(37R?I0cfk%CkG>YGY8rRSD9FrR_^z|_4=rb>`10!0h4UY! zFoN~$!3b^-XL8QQTzFw(bjq>R4?2 zf77o>;t+24@|xCkq783!3y;g^KTsGMc8m+TWdy;ZD7h;*`i?qGTrSVL2MYg z{&|Isu=k;EcNkN%9Bp&((wGv_GwNHDt|j_h_fd?Bz+&@dbehN9mkK<8H&IhOf)VJ` z5-Y*m{Y-+@#!Tw8)YYwCT}-UhGGXB${_tId8O_oZthcp4Q!1pDc`H=y7ViAE-^i=< z=1OG3uDo*Ni42>Hi>K}_=I>@7G89PT#3FPY*SHqBNX!npy^ zyZT4!QJbYyioTbV!yx!&a>`EKIE+r=$x?|JwC;hQMeS#=O+%q$KdIL5T?LVYXWO~I zef(>~xpBUUS#A81`W~7Qiy`}dlvY7D%zrquRlO0t^IF2kYck{TF^#eLGUJ1nTu~Zm zpFr%()ZL%=)T9Z(E2ncZlFJJ^019d?`{s&XuZfrPuQ6+xB#R(kN@T_~FTanFkg~G^ zU1R2!e@$%+#UWd`m}+ZToeeHBzq3j8c><7(RSDC`P2`jS3Dh(nbwJ(UiwpVijnse z(%2FvWB)d{)A~$G|KXJwBfT@3X%0EbnI9q?GX#1+^tT_7bl~5k5dUj)|3Oe*yJ@1c znG&|pI%eg`&7$wP&gfWS>&y?*mkDP$+d_86Q7`VeuH}EYhOi(y!)-+L=5$ z1NE+(CbwcjPC}zEVnRpu8w!l+rmHS5^`i>5DD>6Ed|kI>tv^|Tc25Zw1#Z?#SQ#+pt3&%{Fxp~A? zVgq856T{#l8jFZ)qNVoJmy~LYsLE6+SdrRyvkL?z)Rf^9{c^G>PD9E3!%3+}CWnaC zH-Ce~O7HwlNm!U!*~MR{F@<0?C%o;?o8v!B2Y7)_Sb;YAr!5SkDyko?DN`y9LI*PQ zieXT-)l^#A3tjD4N+y!o{vwH2vHPW;eWvqz1;70~3MFu7OipNp@Yq~kA)1-e085$; z&yb7N(vWXvEX+mE&s&y92GLWWq+l}LrKCLJI}42oPRoj+Ljl2&K}g95kDOTLq|3JV z`_fJ|Pd#{sI=W?tr>=q}0G@9o0{{Nwj@DJo>$QsbAw#2YzLvp>qvJ^JhzAz!F&LWmP9%b7*QBwFLn^rikBmZ&?p zFuKp=_R$;Nw(XkxNZ&~yEI&@sa5n*d)^KK{YwF^_1q@@wWVoTP$EfxARr}bRx?3YI za9yc_DWxopjWg<3?H2Q^w2Y9U@;(mLoJ^J-a*dJ{_3Y}i7R2G`qruJsiTExR2CZ=S z_LEd~zH{oFO3X{KA}$0Rk2z()7!XT_Ov*PhlGm>FC8biH%<&foR)NfyFKR4>?2M$| zI}q4HxZ49)K+-xG4-{qYLLm$}Rg^6hrm;)7=rn-Q3C)7 z;ApCFP~%?i7h*C-8?8Xcc1sa!Sy)#_jTOqro;HnoCwg}nhx8;!5!f;sa<4L);WyaP zyaD%aw_K;i=rVmhIlG&LBll%~TC6r9)5 zp-FQdSqdLCU)TeSe4C{jH#T#w)OIXG@wU^8-QQKTz}EIsFmJ)h2tx3ef3{`l6$7R= zboEZ+(jXtEnQGR>`vAJD;sdao9bx|7m?l*EQ!1&W4kNG6uKYnwt{ow)vmcHwmG$iN zX~?#J@MU-Vjfs}4zXA^Qq>f>}8nd?j3Ei#aMVw~(blvc$F`Sia z7yY^Y`>e#rV;)I0lQV+^>_%Of#XbqIkx~+*__d?9c@M8aUD&c1s$wNqt#iIcqo;^P zd_<>A4Wu7pHIgW`^|(QdgIK%*5`EY@t%)}JxPNb50OqK zHqF=05f?(FF0^Woc)WBvu(|ipPs>(k`Tra(yRE(qN;97w2$biWSRMUPcP=n^mida@ z6x8QU9hhG|S9=lkv(qdOrBNrS(@mi4V?k?QppIyY;=tr)4R@g7q^1 zK<~oeXUMGuD=6xI?}w-!^zjPX^Skx(LEeXAaGm6)kBymEu%x_ukT9BPYll>}W|<5Y zVn2;`n!wy4P*po-~ z#n%+uzL8;HIz43bj^@gx4m~qAmQZN>aw;$Q%j*pWmrhafwJC{eh4rXOMQUIDqly>J zn(b{RpEjM1KBuQr5Yrf3Qh%;>b%89H=TO^1gv3bp8C0`3wG{nQW6;a#En;b)W6w6rz$CB9}-z&o%`efBTS3M)IwEfnTy*+kkLygaNX9wL&A1&QEW6P42 zx0`W1(#5;8%MM9HI*>CKB>WRUx!j5Xf~7ebo?YU`^ugiM7<2^&1KFFZmOokcKbU*3 zxF)kVYSbBfgRy~%kWmm6L<9ts2pI^e$3E zNFrSz1ri_xLOgH$f0y66I~V6R7w>QHon4-1t@W%&Z{UjKYIu#_ho_ydhcW&Xp|ty!`CNgF03Ev2FMB z!)Ho#^k#ehHWGR+cDofYOAjzn0h0=+1-vM~_LXNw);2cptv71Oa*Ze72ElsWLvVLK zeE`%o&BH!YGQ=rM76e0#sbPqibS!*&KM=#(T;e_kbQPd@yEoY5m!lGERl==vHPF|T z#ke`;9`v5+NnAsx-#u`~NzBx@CDqQH3_u$cDm3A*^TaNwwxA@j61<)oI%*83RZG15 zGwHOVomb8Z5J}H2A1K=?pMUVz(WvQkn0Q`-mFyrw=16=r+B%tpcD;C1Og(&felKNIbSz>lmC8!z8I62t@Mdy@Qe)Q9|ZI=&0v36&bzi7+0 zp=)|X3VTs;ib~4=qV6hzIJcUl7K_D)m4|OIJE?9fiBCgJY9!Wm^R*v(VJ#j!Y(I1L zG6nrbqgkPI_b?kThM9?Y88}$TDqDD{fM4fZTRp%cBv@+88C@^x?L~-j zAtou~dN^>bv7g@#3D*=a^|M(CKe^kd^*UNnL$AJcXDGMUaK7q^wI_4}3<+tCSqa&U zq-lSi9L+j2VO6atuMlj{Nk9weREOS%M@`3G3Na?WENMZBd8cIGe=QsRr0K(yULRKG zjNC}xQJHG&m+hy>!%@_z+HB;P!U>!2SZolwYjT8K_l87I!C>(8rl#bB+f@euvv#J#+A z&!Gvzf0OCbKn)yN#EJeCrM<VrCkEFWc~?hsw%Dq=qjJ2&z56tsq;kyITDF@*&@5lEy4LoK81 z(Cb(0-1@&kG1kIbgeL=bexh~kE6YJC$a!`5c?Pm^r7N|CTQliD)T|UvMO(Qj)2cwE zdp+Wod8c60ZEkpN%=o1)bcs?J~o- zg-XvD#C_qIjGY^P;^DDHYz@xsaH#@K50pN-l^N}8;0GFfm0ZzJ7bB2I(@xgE?WdI! zo0avai4Cfc+34Z?j9Rc^T95u(tOGd!enFZ10v)vg%eq2pehiz9JU3-$*X%aRPO7?o z+nZ$dZ@7~3y6V&Pg)_=x@Q>+qA<~}fmSz@ggC$!&KaG(%lZj1P|AY=1Nz&CiE80Z!$iS7AdnGU)K}>7cmmLKlONBmqq& zjQ82Yt!JYxw$`N-c5P+H=LW!?T}`xMntWfQZq+FXZ_RUWc%tq0ckEImPJwg2;;y8= zolRFlCb1ju#(B#3ul?~bQpE(ndG$UXG8%*rKC%Lh4S~L0xo8_36cp-& zQw`SRSeVq7E|n0C9l?r%YlT4@hn|lt$fxPbS{l1xOVKJ$V)HLo>|LubtXSlmuUHli zNfe_iZ%$IdvB?us76V?jfS~V+>5D#JtX{{5e&ma3lQmD=djw) zr{C$iP9e(bsUo(?eZKU?+=8;lD|vY(h2iEBl10ryZ0W5Lr}^?#A7bIh3ze9YO@}Xv zn%h1t@0^>>Q;oHk!9G z^HxY|5%O{rP|f#9)WZ~!`=xJ7mb`0_;)l&6o_RbqgpE`kBooEb*-qR;Fb@`l4HH$Sd5<Tp4+b7?W>+Y1jLe6Fe;zEkQofSd3&gZ!WUM=mR$qs3n zMQ6WEaCJ^e&X3GcHvOHur2_oZgZ1;xZ07Sjx?~6_?dziYLj+k-KB{N9^?k>JeEKoj zTn*c}9)t0RN>}0PxHyX|*%u5GA3rU=2<30El}I$q1o>dIi+e+`6enK)i1d?|@NsHV z5A&MfoTFA;Z8x;VhEZ=06Nxse#)ni6$3;IIU8?rh&^>#?=8DACx%@c(N{>%K)=)N? z+ihr|iOy2H%W_Em1mT9}3*QuBd2*v}sQB?jR2A4tM$bBy*6di$#k{E)=&iDM7 zO1-M1iCH1&bJ zW!z+5IdL~M^&%|-h%FBeIkMr(DNzYm!lgZ23m%#m+y5psBcc1u$Kz&?&3bvL9s>HOACm^r`HgR;paW`%zk1h@jg7>wK_BdQ0kk z4V${rwJQ^KC1W=HZPm|(@%`|{wjf+7hbC3%yywtRH1^N1r6q?M-s2e@^giC7H@H1i zhdrI6_ZGFH7K>ql$%Pf`gbZOdePcO2Q8Bs8Cz6vl-hT(peET2PXT&*xACQ^V`~vvy zjQ}L94C)=F--l!6D?nO}T;Id4N1$t3oEp}w9G;I}avr5LWKqV!sQvi$s=lbgD0HC; zw7M$6@j0_b()e#mkjW+fK)=^=mJ#P}?hz?#X#$J9r(nsG1X)dId&J?dzN^JX&7h?`B@L;w>LG#KTQ88P{uTM1%xrM9Rjq_R3@{RN+&L8W4<|-xU zJ;%eP+Nr6%z05yrNCzJOlRU)VwLjH(K3UbTdCo79S)hJ~$MtJB2d_LpKNC4jFVp<5}+R(FBSzzATb3j%AgKH-( zFqq9emveaWz^`%9^wnZE(ri9xcj*X&_Ez~&)*FkC0az9)zB1*IX5h{V6C0&-nU{ZK z-D5z>t^_2_>dX>_d);SAs*jGzFX@D3(|8swUfG!kt&mMbaP1!$eCne?%C0tGX@9O9 zhMENXNJU%b9lBVpvl#zvF^R@9z9cVf2$VU%?+iYY+0m-UA9E*l)NC zj9kmH4HxxfCFQECZvMk@U0<3z+}kV|Xuzm^XYQGh^{N(~GS1Lr|C>gtO|(a|?=dQl!Vk_-|r~Dkq+)v0!TeheQ(q`&`39X83Y;*H3{A zT5LULCw>vp9y&%AIdgf8(A2$t_t>T7uYMqp1!=ad+8x5!IVlgv@Nb_=Qxc`}^5meG zOhSL(R#~lUOU*%3bopKJ-o>;N_<05jAbIwH;JD@p5!ixVwk-WS6v#twosF z?IPhY!KQ-vmj*q@$7vqKLe>XP78Bz{FBV@JO5eUg@uAve z<`UEQI<%S*XoP4@?H#>ztp+w(3g&pN3Oj;0cu4PS8}$>yGAito7XJmZ=estj?m*DqGOyw)Xa_ zZkNQSbsy0_bsBT$NsUKqH(z$UTIX0-8{Z1JxbghaZ(KGee3hf$a+w>6PyDsd_y^A+ z_|x`W3wYIy#yu!y$UU=sOnr)z&vft{cAPkuFqx%@Ws0UwJZX{I^4rZxcOGaJGL}`> zE(w=Drk!xk`kXEQ{~6{M1dS|(Kv*7}{oGnC9>D!7dVUU)w?l9$@Z-<9;~Y73(9)uy zk#h~v?D?=g*w_W3OdxJ-wD>gHCyCn{zw0s@*(?83>*T`+XU4Adhw$OUB%-w~GkPAx zvI6MKJ{^t`QW?5*iqIgCThuL>iMoo#EX6-#$cBv$&(zkP-BqX8^#kl{B;Zwda=!zIseh-+JvJ*#D%!eT_3Y;@=OTICscSC_X2r26BE31A0Ud+F)s^P(8Zi**Lq_i~}&^Y3CRe}@skW1SY! zbCb=HW3oA6KY$>sm*+_lufdHzl zzgQuVe*8S9n-K=wB?}SU0#(R7lJzfDFM-(NWWhX)2P5)*41)jTIf(d4~>K3N6B=F{Koa3kHDe;I0>bm4C?F!BaIiP9hKh7cT}zb1o4IL!;{ zNA%WZFj&Z3d@ukqhbECl#OEsw{mI{_66R&L=$^Re#qM4r)rw;T-RRjjjcE&oPhp_R z5yR~jhuKc7*=u2m>a?gogwb)!+VKh45=Rtndihsk)Kqxh7ZU=HwIN|!D03fqe&NnZB+9=^*SnUjGos% zQ2MgpL~#TP;!iymaH3CI!gtCoiLaf>tqEdr%4R~9xvgK!jF+1FIMwXMX*#c$GFknG z;&(f90#3c*tSbF$Uwp2piO}5<(Hk{R#LG}aJu}05r_OirKd2mhqnDfC77TFPZ(;Me zv-TtM%z`8&jT314PEsMK9^=lSBo51(3MHwQ1JLg_)p*QgX1OG}c*WbW?QH24c@6$) z`U?~R>DRbAO6pi&L@gAu%z56n2XJ=w?0ivZH!Yd_)nCkg-m?|gl~YVo78tJ_|U&sJ+ZoTg#&=yHl1k`F>JYlxI3 z)b!Agxc_y_GdAO1Ge=GWF?rf4E?~2sp^gO5j$EKlj=z;tklmT6c{aCMZh)ugp+jNq zngH+taFwKT0b*=M8+8bh;@LxLTi0pXDO~{gL$!Lea@MN=SxGEBmq2Pf8zhu%$&EL=?<<2Jp25bJvB_b3w}gFfh6w*5nbtXxhO zEyJW}h4hLk^+T$|Ha@^Y=A`ZiD?6Nea5$ON@mgV9T{^NRlbC~QLgcP5N#7s;IqF!lvQoS%-ld_%Z&TpcSHM2pTN#TVh^T`kNI3_ua6FlU zb7s9m@2pDe1EKSeXw=^8pVkBk-JW@IIdIuYCi8oIDR3A|qs=Wd~6g6!BSErAw`CQo#u)slG)@ z18m3T0X^k=Vrs$2g$IOeYCBwQLg(T8LCxehqcn4gPwS8RC2jeU=^P`wi04Q;!~NuM z#%jvpc|sHr5xr9t)yw!~k-`EMfVuy=7%H@+%EBmMuUOu!{Jgz2*$XSgun);RhfgV5 z80!xlH2pWbDE)~pH=!T2K{ zY~dD(=J&KH`|EwwlHY%Yl{CNA@9l%{$QH*I=Mx+I3ly4aMHLK8rPGUN?(+}G1x8jt zWwNyu3(T zAB@yE!8zfiq<2v1Z&%QH%d6ps3x3~N%5vNqWG2FVGnI98dj^e97lyOtI&t00S{SKT z9)T+No>WEY*D1nj(vG4RSzlqaRwCHPh1#&X(-pF`UcddcRHF%C@gOYRE^y9{dMT4~XLz4F4%GLzAuM_TbEdfmYcEF)7?HjI06lZYJPPF4|EqK%<=7 zWgWGOpUC!0PHK5^cZaMQvFqPr{@?Tj;qzgCbuJG7 zUhWGco*1zp_Vo)ld3)(CIcv2^U63XXTV(Tu?pk^AOhQFUVUh>+2)_n|Rh6vTa{s$fl{8m)`_X+p9bn zNlF8}d;q|;YIspbzA=uj>u=>rht*>p?jFyDPDF65=U>pN;(FI9(V>SFnI`n_KyG#XPK^lpc z7Do$9c9AE(bjgJMp0s9Q@HZNLh=S~4ae}#x+B?v6N*~bSdRA4WR>o}{4Ve6oee)Oo zcUCp2>hpj}$IQUk*esg#aKFhRpZB>1IXzfKN2TBK5qgsY1Zcc5iqL zB#TgS^?=e3ug9>>J=8z;Q;)@OB-EnEw_1^cz3@Q}!79;CD~fb`*=)X}HODu>xc8Og z?``t|`LzMLXajUN!LRe4iRgmX4!LeIR!IMVLfNQ>sByJj?AUwiWJHT&Em3+XF?EsDQaBoe~pwIOfGrQ*B$mLP)_ zUwCj-zp*<|MjV-$iBo~yt;;z1 zbGPZ}quO8lP84?VlYOg0Ncs4v^Qe!MLp&(=Nv|f9t=2Y5%>1KXy7Y9)<6ESJ*jFmT z=1b1I@sqcHfCW#+lp~*NJ~(k8A*r1IR#c*Zj9#AC#(>W6Uq^8s!2+A3f(NNU@-?)u zYg@~_T%DO>Q!oXdfB}7c*k{*t*ar5W1{k81)dd&-s#jNNy8CU7#UF@fA#gSH+$1l1 zqSU0g$vegn?l*r_8~!!^uN{;yc58|GhVY?LF1@7-N38I#2ml|d^pboOA%)r5I*))W zZr8nCS&n-=%6XQd{nI&@A6H~=VY*R3L=X8O#cKR1n7-%EDpvI=QMKA;w~^VLy>FS7 zML|Hrp3P9t7fq*vovShj}!ucU~;_vH?r)s-p2jJ^ld{D&MVB ze-V6zrvdsCpCM=f$PD9CgIsF-<9CGHV3fF*)=O{Oxc57K$+JE1VD)cPNxpGX`!zIh z2x~Ppb@fuYr0Fq>4?P#$a(AE8j<@kYXK-`~8m-{H{3-Flof7ecs`5ojI3O;z?VL0x61K6muz^_Tbh zL*ei!k8rSD#7descsB5e>tb+<^25(vX|C5-Wh6^&fkCb;A!qI(F9SiQt;YttyP}E% zG+L6mWugX}O6vv1tF^F>=djHlvE^QDpx5<=B~PDRjvq4Uh@9S?a5`C&=v4Akre@%e zzWY!mYt6WekuAXPE{{C?Efm?c2arg>s4ao`O`@fAT(q9MgG6aM1;6h6q2k$#tK^)r z3je9tvcBQBo9X6jBT}~uc2r)R93@GWo05V;`pcQO;+wk8#THU-Preec^7`>? z(9x;Q@Z!joF~fx#UpL1{r#Su}wDJ|h;9igTk!sE5CULwMcXAh6%n+JPIXA8&I9Is3 z$s1k*<20*;ia0qa^nEO0WSk@u^-vpi!Diqd3 z&MCqM80ixX_)fXlhT5}vi_;%Q@80a10t|N0$fDNR~CjRSafK4al}@-{_C@fn*DXa_zNKR@gD`12QdKe>JSHn!5U z1CK}+x+pUWzZW-v@<~XoC`>Fce^JK-LkR6X{9|$sId8SL_6(m6V$BQ!ZHcv5pc|nV z5CW@&!zUZS&GRoHGI3jcFTE*La5#hafTY~%4^LQWC2v@*{{#4Jl_4M50|R|)hdGj)Hs8rDdzf7Z zPMF8a$I70;sqNV6>Y$_r_!@9WzqD%_tb}u45I2&ZiRaPPyE95Er3WHQzK*sf733A> z6#;7C97X=LMS$MRdrT2d1Wa(z00k;hC2~d>_=OIlwKb|Nm+HC59tPKBVgk(?w{Vnx zdgYCl<%gOdi1kDjzmJLz*NRI@i%z?J%)ci;TsAs9WX1pFKKxpmej_mBFHJs|nXGvf zOOf|%H%V}PXi;TN?bWC&(*ZHRCFNiS+j})8LP7q(vUW$*kuUvSY!aPPaR4o1XUo&8Ho2_a}t>zoR0AREDuw(G~a^=$=Rup3hbd1#?StwpC&a z2_dj4j`pQTU43>k)uc_G78wN-&drhK679g4M`MWv1s^Z%T@T1LC{{dm=J(SeJR`_l z=fNpAkeL`mq!Mzma@1B#UCJaFw#wyo5l9Z-IIu$7OzOv2{eD3Gy5HhMDIqJKG9=v z3wk{I!&UPSMb1^mG`sLWSRZ5CrMJrc5C2}-p)|;INnK|)9?7=tE}($JLVZC78UR1j zxlX|b!5yqV@xZk5A$*|2aUoXuq$pJ9s{edNkI|f0qNLukBU4Ai5(hxL!)n`h%;=?| zPUzCrHNjkOD>kPLkR5VciG(AHBnR#!cGrWAbYgHVXAsk)#34@)=}UfU$ga<^B!pL zPj1Ixt&K%5yw$ALr5M-6O1jJMooY-!;o*@IAnVlZdU?vy?o!gbseiIz|6CLOYLcR+ zZ8h)#v9D5|btw~8!Eor?+9Jl^)5P@nz|i&6rr)2smOLz<2H*E!El2589x@d6GGFjJ zRqf6ZWeF}u7;!&ypdi*$jstgvci8_dX(%CoyAY7Go^dlO{UJ6+sCHomoQ&H|Dj+IN zY!7Y{#%|w9Pdxgrd#|YaY+ZdkI;k6j{n_;KVy=ISz;S539 zDVmk0c+VB$wBmKrrxO^nygJJt52z`V_b)$mzb~Es1(Q`&t0|Et)7zZhvfDV2y#%;H zr3`sk6Fo3!FhY_(an!GddZf?48ZN9`9gFwfn^$^=see7UoJJS1eFwjhUxThkEq-R^ zF7bE(pwK7Mpni@U%MoSH&1SC@4GyuQ7bcjj$$+>w9GS_N*2&34D|m$ByQvLBPwTF4 ze)Yo!^pfCjr!K*SRz5#w8Vvt?{iowWb?L3-+e96yw>-d3yu3Y2OOs#~{rsCw-FiTF z-?C_-byT;L_a1)y{0!u+kyRb?I z!GHVaQ)?|D3U)fL_>z^)?D8cA8nOL(%1{q?2)^tk#&C7VXepCzzV`X~0Z4tnXI=r- zGkKJFn3Em6%u%Y_^3?E`a<}6hK`QVX;^mk`=LJ=N;cj>tnZmJ%pk|HKA;4NXF%_0s zl@FuiEZuaIFENhk#FXDSLAyyH2k7CaTEgogm#-mT`BF0#JvApL3#POF7z+sknhadF z&=>|HM>wNtZ!-PYzPO-N#nhKxhV$OO%dyj?r}t89d@a;IXas)mYA8|bt`~~SzT}i~ z&7|T$smRfbMzChHe~+s+J?%{zo4-HX4PKI<3RzW3FtHuI-!sei;DsvRkB2b4apMHB0DbV@DuZDz0&0%^{G7r)Ld!-65q4yB z=}sMsGH!46bwW3bTSpwH3Z*2iub#y%v=l7&O_*T^I`Y5jFMBDc>$FMSzuXiQtr3we z^CD+qP8CjTxAzr>m|i@$Pzevok4_5NnDUqN*uvQn^Qzy`#!pAzp&^c|b))Antu>x* zvFC7oP4qxG%ueqw5A6E1Q|&1WN%AnEa?mrywjb3T3I(8}z%3IMe{KxVX0MOAR8iQ@ zO_&r3)!UocxC7e(YU}D%;4>sVh;22qwdF2z^4_`n$$K_GJI6qLJ)sd+ zM!Q)O{OHOxwy@1*Q)vM__Ck%^HrL6u#qfbOMUJ0*A)^t+J&un#S;_ZGU452+!s6#%^ z+%L?IzUFR>neOe=vb#%VYrbm1D4eKig#u zpDOxsudPKHH=9p9M{JSaT7-Lqk~^N2JohHrpfjX{9|}obkW>_(%}%rcnpekOAGs6C z;)su`tuy_CG!TAIzb}Fn;>%Q7C52DrbiU69*1phSBAa$*!}g;pijodCHjRO+w(u6S z@{04dMs3vyxwY2#%1@p1#WqB0C5D7byBl8VaU|<<_<-^wb-c!@+T#2Y!v?+*RFahEEH5N)f% zgo+lO2sl7$;4U~l(#|fZL74)fDz>Xf+00BNxjot|2(e#h7TX)`bsqfY^ux=i2F~^N zxT~HvFYnd6{F3w`DTv{+S4RqE0S-OC_C47mTB*e+`|AxT&zUWxj#Z*ZZMd~w^>#gFdL7+_t>U@)WJG=CF=je z?~VUpkhi9+t?JjokgLf=k_{;`y?0&#yn5Fpz2I|eE4!*rUdOb~6KW=L&UajDt*?n^ zxG6j!mbFTI6%IhR$=~Xg@b1iP!8DRzlh@so`O_j1`|qbx>3v}rFtxiMVX~zUUr{d! zE#4VuP3zUVWU=ig6^E|Sh5u`Zk!1u?Zm|3(1V%G=soDeTvvN7fk3YOonb13MT5L4@ zxznGBtmMVWUM=x|nfCGI!$iDu0Gqx!G(9|E#v6vIFWvB4sO`mUea|1CI4~qc!d!59 zJv}|$yrqJD(NJAqZ|Z*GaxAU<`_^~xQJxL*Z+sdBh{F^FW3!OsqCs5VF5<_KxA9O7 zPPd0k;X&xs6yq{PzP~y;^EiPNK-`{!&1u#6+enG)XkL9N>Zh+7Yp*2#L``Ez6m~_N z1LxY3)#i*@YVt^NaM#>m&o*tE7~#xCwr@~i_eavEQ`TrLONLqvI}?{%o_(RKO}v>3 zs;R9+JDqV@?-noZ8PYVkzAC+J_m(hkV}Zq^+560W4lYh%{o3+TVYmL%@_ErAB$QVA zIM@_Z7u|Ls6?tSCVRAr&jbUfnZ7o8uBa|S$zK;|A_a^$jSu+yhnO5)`O;@yKX={U~ zqYDO|u{b7&aBXMR+oN^f#f+~(Z$yW2F8ks8A&W8;&>fYfm%sKYLKY8Vb}DBzhhB=5 zs}?@v#*;?Ri!Q6ngu3|bmR4d_YrXVP(~V;3C?}wc?v+#z1Jk)8yK`ec2T$D2>>{l{ z1E(Su+JjWF@^wBzwu^Ed^rgwPi*E`j4ZTo+lvWB%nx&Je-SV+IN=6HKxjaRfNj!|^izX-3{>;9WIR(GwE$SoErkJ1ht&>DvcdgZ# zvlV_PDNAR-5$=^`SFRU6v2GGMn=!V}0*4c^Xgx!O9yPnOi)_$qYI8tawPAdkPg&3u z%x!yS+?uCuC|4L;Y!M^jIYc@RlUAXU?$BUiKG{`Gw$4k)FYi}audd(b{wdo*%QXP~ zc#^;Xz|EzsY1c$L4!zwH8}IqOva4T!PEjj|);sl?(g^Ch+??qe1Oibp)$g=Iu9UA? z_P$Ue)Ojq!&8_LEn~dv%f!X8NYDAJ_>PsTWZz*0;9^AD2ZY!-;f>0QWZ$LRx6>vQ3r zMe;oo#?r)r3%RF#I&&s4qvnEJ2|Gx#+OXXY$_qkht4P>P`oC8J1^vJLOezn?{Mv_k zhP;N{n%7vg>}xKCk=w zXi?I)N>^cis(BaEr@_&2K&EEz@t#>>Wl6r)>?qD0*^ktgJe4kx7v|{TFQh1yPVLWk z?(SBC+Igq|G$T3fRBfM3C^I^gAY-czlNj^F(bFLxXq!Gp7=;Bky9UNA*Cb*x+?xXwzj@g zMZO`Zq!vMA&?^GteILes&i$M>6$S?n8_Yg47QLs~+s`t2GG_AI^}|Tnop(CAX=lib zF%9`Lw7AIF*vhV+h9Y`g*DjMEABOT9#P$%R0{yL|NZQMZ!)V5~yCUa{-6< zOZO18C(FB5@YgBJh-w*GJ}D-y|oRjG34X@qvvKc)&?3dB`f* zl4q6);aDRC7CX7wtCyU=(X--lDgssx80+s05`Mbn^Wxiun zV;?vHD-K1UwI}lmQvdy*Vt@j$SJ|@pqo@NoEu<_c0V$1;>xD+_;hT%uOZu>-m8sA& z8YC8+cw>~a)ayY8So_BCcv8*t5@O8)GEaYIMjO@_?Sw_c{JfVxjIM$@Kfc*EIbY5Pg% zbSI;AqkpWm`9QMiNp27Ry(EQ`IS%SuD&{E$e;Nq>3!o%!nzMSoH-==66XH5ZzCL3{ zo0hN>JP|*K-RNQ;A~cXnEi~&$yil|vAOPz}Q+~2Djqi@<#P)D@if zWn;1z;vj@2&S(f~3W=06)vS58a?OliAKa+?Av4^jjjT1f{-iQ6L)_eJQe8eaF8r7bOZThX?-^nwjr>SOSvOkM!4ajr6+ozQT+>N zKlz)zGEWBt6+P!`9(BUW?-AtbDbs(fMfrQGbdc`(Mr{cI$J9b)gR3X;cfc+MJ7+#A zJ8QUk;@=R}lMsal><(*P@N7zi3O4m5G1JAxXw2T&&+v$8t(&uj@W~?<;&sj-{(^6B zsegxmSsmb1;op6HOx{)Wg@I=AZZi1rlYOr$+KvGofzLg$4IGWNURc{}7t>P>jttu6 zpN~=s=MnOzBDa)xfd=SE<{AKPK=l{K0H-DXSvL09zDHLIcUM!QCFCPqyKuW_+Pz?+ zZz%1ke)VGE-^{A-Tiz3VZzDcMZdV1ho~4OE)|xOy2v`WDG0LQ)-&w^8BX%Gt~Gb3bz%F)3e2bJd4!F-|c-9v&M3 ztr~kHJg(o;G=L%Ade@Ba5T^B49k~d>&hFi{4_oR(9F&lO)uFJ#H$t|d9E6Pig*>%IwCrao3sJMN$ z{#>%+!(&im0|x(Tg4xwnW0Up+I%nYkIG#bKwZlFN$oYBNg?%O-2Ydt|7c@0LlEh*5 z3&ov34*lrKt4BKMG7etO{2F6;_BWwq4$B3G6i2i|a7?+0JgW=wsYdV{U4h*4Hg4e* zX_NP#cxT7>g??*c^BG%s$5=UuaEO#RPK!-W`RvAOl>dy3lZe(=?=Lq4-d|sJI&>Sl zHPQV9P^PF%p(I3H4S(&scC1WDza+BB`CeOaLcb9mmq)Qe{q3Tb9|g||8EXn$y=r8p zzjQYC<3{T3H)BD-8NW|<=bfo-d=awClJnvQ@Ek*E>$S58*5M&XMam7_EswY|pl4qb z`y(-~(%(r1E@dD5ip0@PMq1b@Y!WHrf1M42yKS|P_T4uzw$S_ZJ2dF?M1J+I>fwIG z9A+j{P_nCRJynDn!gmvcgyCWfri?wN+X>pbV?yFD{E`tKo)Y8_297HVJ%(4+gO1BS zy!q(P#Mh018$AA2Wj7%cAkN&d6=WnhtQMb!cfhkwZd+szOl+hM!7_(M_S^SC>!oYX z){7wR;K=w%*>S9`7obnRADjC|M-nC@v$)$Ry_9irC(56{dEWvKMLn><;{m~)91v4@ z!I{Q+%c@*VHFr@BtKu2LvrDJ4Y~!Z(kng`3!=~Z;?Kc(&2hC=0-9BafZ0&W;*}jW` zX=`T<4Lk0ieq6&}K#d3{VC)gW@d!RrwEYhlzo%H&STWI82`FxI?I!FY8=tIs6T8X0 z_bM%ef8lR>x6vbJMb`N{%2ZjAcjnB*8Nd%L_%M@52Hj9GHAZYMbq};LJ&Qthsk~CX zERz~G-SaPO$TjAkt=x0?gXwM6U^PAM?rQiA>nF8olHrz!|04O3Vm?|JP(r`z4<>KJ zxUIbV$lLU<94V&CoX|p)+JrS;UC~3Wwi>ZyW+r_K#ZvEQV4=qLelU4_-f%rl!`1@)$e(Fy5Ev$}%hh91vtmy&^R=Ngp ze@Dc+cm^}OW^Og~KI`f_c;nQA)EP}YFpO1?%6Mzfra+%hO^_nYgbQ4NO5QUY*>jx` z>1xE-&l~&sFD_5+${j_k2)e*c`r#)Dsn)Idn(apK`kYdkq~dc*(1p^Xpnm>I8dHNY z<^$@Nc_v7u%7n}=9OWgAu^90kT$o#{_Ea_J#)A;8a8giUDtvrljzpW}7~^W5bjIlD zmd3T#8JVw+@Bd9dr_Lc~Zi!f(nD|aW#udCs=jdrLqrJE>o^k6vH#OyBzRYb^ zK-}Xhlduog42NkSb#LWs)BQ)Tr`+Fn`hOgu8eS3bjll`ehi`6wWxH4LiH9HmksS8icH#baUHuyHyre}g+#>HT;?3tXi^MXy4t7=ADlFFSg$s6SU+3*fV48 zgu$ld7oKgF+~G&m_}G_mrFW;DgPz;3Wrd;r7X%>Hpz3ua>WXYj1bJ{aC zBQa#}l#+AdqNQ6?+HZyDfA|<6E)KFs%7zYcjJX6}Xz(D#RxVWg ziSObQ|Dhheo{<23HNcWS=BH{HI4lXaCr^ ztR_F>e1PiNKdYk6{mKgjDM8YQx=88G!avN6J@wm3zxJJ1QKwHe4ius>K;*xkAN@y* zia^&Fxb{Vm~UFKa}1>*yzqLT}5R^`&mq z=xAz5gaUi!n>@c_GB&dsCyu-ompzTV#;$Y=uI4$V?Id%ASzzQQ`DR5^a9QKUvM~r- zr{EU0O)&Bc&CO%b>auA=`_R#tdg<`85yRp8zw>o(8h#r(*iEf`2kHB@ui%C4b(JNf z;8LE|%M;EjbNB%<4B@Q#bh)~I22RkZ$ft4L?7PXD8JjIJ+RiHEgY~1 z2`g@bmemHle3AK|=6~(AAN_)TpxnFSIpGNM@jcib*csZj(&R#e?Rezx@W;fVW z_7d~hyTu3m=Q&dyaPpM)VuAnzUm2dWCQjhH?K=@cl^U~rv(oTc(Fm?9SV0^>Y_&kk z!UF!0h43!?yJt0lxW07Z?u!uq94nCWw%gD`^WbIPGl~c#&3Tl*`BR{KnbbAb$Qvh) zW@#RNW`yY5pl`IoLt+iBGvjN}2e2C6BQUDYkHYR2_2+%DajyB0zEVHUnZuSLqWZrEBJC03 z;ni4KA~m>={zpMlSbjU417MT*rmVT#H$*79j;$QN#TUHorZ$OhKP~BI<5gtN8I^Hz0ioe7y7+Px zF~_{myesQUt%iQEM^*aLSsCK#*BLn>{-=9W0cCEUiAPaN;=@L2zsZ%F zn!&xhjL!+oea)15#688HT8jcFa4=zrk35&EdDU#$#^*j|jjdx){*lI)>GIqb2k$`J zX%ufYq59 zqrJd53J{?1iSvvVDoO~*;J}mReda%S06APqv#%|@L_0TV3LELleLXHwU3Gc&dThP1 zq)SO)W1#1BAx7L^+v`X~nP<_Gy0@alozo9yF9@~oKDe?rgMDj(xBtI=vW$;ZNuCHI zoNb3!(vA$K(WgoHOWQtw)hqB!Scig#89OM&OVp+TZ;73Xb?rm0j1zHZEsT$67@wpRc;LX)jg#!>wQ{lr-GNo)q2Yt&Z~YsGQQNfJEipbcG5;Wa7E4PVSe+Tfi-uyY9!K@iHqj$+zJP zJ4a({cSa;y-?U9VvL0zh`!#E54E}l#09ZladLM_LYxder02U99XRl`UHLQSNWgp~S z>0I{+T|p)Qd0LrwMBt2UuVmeXKhfs}By{-$*@lC?UmN&v#7Dd*;EYD!R7I_sG2cvn z*&~wL$tJLQshZF3a|+-O0KzbO;7n?FSr_jyUMUO=+<93@bqudLf2qXY8!C`9;Urki zJmh?{?wecd3MGHyMr_l+&F;m|D^;w!9W1O5AiXz_O6d4F*k9!B#?L8sFo0x~jI9^& z9s+e(;{`}|GI1sh@C_kbZX>-=}yxqz3-a>iEoP=3gIv5B)k+Z1rv4$l&03nl%O|^^$d>|4 z-d~NZd8Y2aA&ec73_PRJN++#NW0=QbDidP@qm8q-lGr7Jv3gmQs}FVB=6jxM%#&JN zSpw7jv%jyVT@g6>x>zB-cm7(f<$#OI^%$oE)?>3(>1QVf&zy_UOmT3q6pH?fzSe%R z>Z0ZO=i>iSbZFS07kWG`j?`Ag%zM7 z=xgZ$`)}W~F)p-)rrX+Z&1T0!m`e&p)@jOiDE3!j(EX%La8(6o*{d^>^apoIkv0x` zq~8!i;uo?NBz9bheo{@iSk0@UgsPLisy$G%xNy9rgZgmI^mIkrC8LOEw3e}iv@*-j zQO^><$AjY;GPsQvRDSCU><0^E+O0vt{Ykz0NE&L?MPdG?Jz2Q#WpffF^$NiDR} zZec#}QYUej6OC0z%M7=#6CxJ>L{D}8Q=Rd6bO04E@bYP(J7!w}GoahhRTC{O)$#+6Fxd5M&x&&p95usdETGgfN$ zBHf2MPrguvsq?FQ*;-VL(N9e6bLustgxU^g_lwLqk8Y)|pM%OPwf?3i=o(h@+nZI5@FfT2=v*t%%v;&d^ciNmttvT|5q}@Mh-fBm-X`HBrm_Qk7W5G zy;)Zs{2Ip8{Ji0?xe61sLO(1|wzitUn8Dn=5$%EX5gkj`bgQa$eq6KWD#rikFcLPV zZEEtpL&+7N=mxe&*lm4TBToACm#6%bJZk)koKE ztXvyGqchfLUN(?Lzh=Z$-@k}KH3!;6zli3VuH32w!(;o0CmNHQq5sHz zo1^Q*vpniy#ywQyy*Q|!vOxeL=jjDVbjJ8ZPRtB&M5Bc@A$eKldNVJ;$swi-rQFE6Z|=v zltZ3-3m8#Z6cWl<<>VZp)j*0J7ONe2W1cXZwp^qvR?OBuao+R}&PzdoTU&IeS9oe->x9xN(ZAkIDID~- zIe`=sy%ATTJg4DfJHP}SnKzmPYjo93M>loV9fm?N4mDbF5bCF`))bOhu8V(Q2#k-= z&TzuLUn$$%@*|1C1isTCc+;ro*Mc1RHH`kLQaf%xYIDV(2w{aL!7=2<#D8QWK*3~# zF7HHG6lHGO?Wk^VOhS-|#_G3ICFe^M?i$-ckiE#&j5@E#XipiA~zXGHjAfb)8@*O^(7(2>};#@8I8_luN+6&S< zG$tXkE_OJacm@HLmU4REPm&>ks&PHbGmebVvbk9iLd1l9hK^q zSed5BR$_IfgU9WDXO_13$Xken|7uQc_{7pgFahQa0s45{8%SWaKehXjlw`M`e0S*9 zO)l;2r;k6a&!TVw$LAYJN(I;qv9ud)lwiX6qkc%xfu8L3uRJ;K43oOysmqwTuJkH9 zHy%j%ayBlEUEDfGIm#J?o56*w_)g4sXGj5-L2J<#y(5t&Ec{)FD_b|3EVh8vlbMFA zBI(}f{ZkZ$V!qWrdshwfqqWv0Os3RqzV&_!yjEAziH4V=6imNKEO9uvpxxu3(Ea3L zTZge0JlfGaN9l3Y^fX*dJ3Z^J_nW`nFDVO^3@DM*zS(j?4(@jxkhX>w<3QO3R~H1F zSW+QK_i_zq$2neLBS8ZfG(VrNDeZMcW|ru~5S^RbTF`)pn?6ec?L?8lW*##WwJjG2 z^AZ){=f$6BK5xJ$;Ueq=gx@$-M?a0VKCu`!(ZeVr&v7d`(o;%fp<@&=mWt{33jSKa zqu||gW;>}eAluI4WnGBl{*hYYv65~`z1(yCX#3{F-}2G@uaVs8p@c?bE*HDVju>7%88pfnc~|?Mp#Lq3-q&WBxU}q@A^JH( zDj#3l;BXM=Bq-o#qodhy?kg?Oj7N8gy$1re5|fQ!;FBfPacig7A8UgOtAmf_840>U z(LWY06g*qQm3ur$&labV#}n0ZDZzJO(FpdJd(Z%=lM zYcNMs4K)?a0HV`J&Y>sVo@GWBQm-+XL7kUfKb0FY3N72(bf^yjyZtfhS>j&#BYGcV z9#ZfO;xvSNN`ccZtFmPrTb=F%oa{~TEUNuh`Z^^)Yh3T_AEUJ`k@qx8`ZziE4g0V| zHsg~~SgMTESp6r-0TOPxeD%6nbTyNU>vv;N+Pa>I$!vgwpRC!cx&o~PqTq1mTix3q z+ifoHH;aalZd@4hpW}G_E?d~4dAr1%yE~74WvMtNDBadmj>BG9RPl;@MoR0-zZ70_ zfyE&;L^3qt9a)nb%5tQarM2Y>y+?DLTh&Kulm84-oca`@B_&Tkws&cy+F$l~@&G(+7NRemgJIb589w7h20t$o-!qVt5y``?TgtF=`I zV!7`IB&W@=(+;#>uf(8;P6$Nj?`QX;j@8W3#vq9cJ7eRJ)OE6{F8RA}w`8ZpBx#Q1 zb0MS46w(cKDk35YpKBTt2|*v%F}1{Ag0^9R0M5Sx^9u>uw{IKt?_pq;y52y;)OtTK zYazfLISYtqnUb57h4UX%3t^)I)km@CY39q{I%!!QEte#*lEnm2SM|&`;|kv($!5YD zTj)`+NUvFXzL;N}1nW0=knKCK5SmC~gpl$v@ZXN=Sfx@C5$6kL54#cvA6;1`kZ(V_ zn@3-E{m{p9l;Z?dLS<{rN>j&G<8+Ta?g*#%sNql!jMW zzzmqo#^inZ?A`X8930idob0LRO$-5`*DLGu-JRU}ikGR16Gx%Wgq6?LwQp4MZ+##q4Gx6NdL;b0 z6NUX62+MOwe=mDocpuVS_v=pnZ$>%%<(ZyW?Z@!r!^gmsW6wIyNUii4&{|D$AH6={ zVT&Co8%v?>kC7}u`Fw9P(n3M?kmPz&-`)St>B@ZzG zAholy?l*Q2*8>*(|o;7r54SMzJ5M_7j7$MNGXSAzgwEiZ3!ccu1A`A-nZsa8l#+u2Aj*Fr3>_~-;G4$uGnvb?om?UJ9U``bAr z=BSy?lUD44W!w00HMTn)3ES>{bXUkeKD#4w!~ehksRk1CfHGsj$@ z_sjNItl1_!fz3hfudUkLpH5Sh0Eh2_JlCiv^blNK_QGgz-1JsDg=m0b3XnQY-jPM` zhw4odZ$JtXUuQ0lqJkj&thWSWyXWC=14ZY&V-Lz(95K0gzawVPe>let0K$$OG_$kkJ|WNB}fdoo+yNBaWMBB4Hzu>){xzoxfMGjfvE^sBx0Iu=KN4Y}z8AF=eK z7ODm&8?*_21dPt~(Eq;UL6SgL!%fRr%Bww%BAn(*_#x;F20GY>JVZKuri3ZG)wo~T z!jd^MTr=_^Sk3J8ONDd0ffX&gA;tzLZKidIy=%(pTA)M;8KF9}p zVQOm}-Xu<{F;A|b6&-7|JNpUs)5^B3=|=2G$sX%vcz-d^320M%}jMbH8WIm12iqQ-nn(?J63z9-;?`! ze8ed!k!`##4jCDTKT33LSx5sp{|>CUH1`EzWPzf zU67f<4nn-8@SsW&7LFdR)2 z zf0}D-e&$lCy>Y?-YtENgE}bH_KLi?^8!;Z5BqN{^ky9E$?VNp|_iA3`t!Vr1r`4YK z*mws>5V~2xzXJNZEs{a{CGextw+xe=V&jOq?5UI4U{igBuk0Gsb8%Di$YfXBcHz4NvG0!M__HT0n-s3fX0Vp z-B~|RN{?E~xU12Eg31RA7>TD6dgIpW3LpNN*zLdO@DFA8SF;UR3$U3+odAzM0dyY> z?RDuY94VAS%tTe8M;H2fL4fYyCq%E4sx1NuNLlG~UtT}n9G}xRFE9V{nqG#@$B3cb zUV#w!gT7Xnjd%Q(l|@tkzbH@*N^DJ`E=&kYC#^sWv}MZ_07jMW+nBHHH(T6Qs)NKA z`-$ssqnwL>T>YBUYh|hOrTWgDjS|Z4?G}U75Ll;4#p-t>=fPqAS--Uv(AeBu40LT= ztmZM3Hz$UCG2>DYqLVR+ahK9YuP>U-)<;!E<)oJ{8A``3{H zG+M&I$U-^C*k57;tLY@5fBsclXnxNGC<+fbvMv7Un0wD9y?+8;Nf#av1a{2tqwHAj zl75QFkFcKbe4ZVmoUr3ZfW+kYjC$WU>ZCzONN}VS$Sl6R%@nt`qg#RbgOm4e)0aKy zBz^-~m4Qwe4e?J@F!>*gkpK2cH5&Q{c4ZY2ov3SL)#z;KrXF2L+K1tkp5PcKpN|Nz z{^h#1dAC!@T|qUvay9WwQ=HcG5PGh)cB zmyfe$P;)s+G?pl40sudevI&Kp+%q*r{g?N8hUPpwz+R2EogEAt@!4=@hp+X|j`s9G zGHXqS&xFMhwUPT137n#AxrA?|3GqL57SY*K7c-)z-zTPAPq|l;Q=EH3+iqoGsUJ9+7>z?9 zYkPZ`kezU({}YUJ$Coedqiz}H0Re4`KPEX+`}v*q#Vlpc7qzrqyO4FuY)%Cmzk4GT z6agb^`0m}M$>aUTM%$sURroITPVJLYBi z1cNt+#I-DuOY4YNvd@K#L$m5zr;^TpGFko-eb_F6g4B2uv3F)W>bD9mNO5bzUNCvc zFJVfEs_}+w;=_NcYEQ1E(LTiRL201drIMekuFc6OJa z+1OT|?yK6(VEk|DCkOTe-Pr~Xw*#3aXo`48*Ai#lK`7D9N?-rx>VbgCvRy5kb{*NU zz*>z-o(vA~j3uUX=T1L_#NTu+CaJRzq0S>OTHfr*_P6b}uX zZViz9New_bT=V@oXsvYL>TKG+6m@?$#oh2a;)lG7jMc85q`ymy?8Mm@^j zvSvWJ0$W2HUikpY64~zbw&tb&KY-pl&`7XGE4*MWGa9RTFl>%SnQU`IQ;01H#TCU; z(|Z6?54a5q-TK?jcfi)p#WgGEjBAGH``zsQb3EG|0d%zA9_M0~%D(Yj8t~k9-t}f~ zBU8l99b??-^d7tISN3A3A^A5Ynj|evsTub+wnbd(>>HWjN4@Ph_M#nnPixWD^{|Z2 z+tA%_0s4DId7&B*4498u2FSKcWo)ga`oIDmV57^+oxZxKDC|#JV_%m;3mdAnQ-h)W zxVr7~6LHO^Rh2~L^C|buLma)?AzF7lgXW{E(&u)!{_FA>YHz`GWPAKv!zfj;@hMVu zV|@VtaD$<7s3t_S{t=w?=LiPX$`}_YtWX9_o(NsyVR}4P4|&sek`m*$TE@pOdmTLI z@yS%pbeD4P{|pN#(Ev^WH9`Nvsp<0j+}>ry4T`#h)+Zwoh}Dc{pRy0Vq*YO?Yb*Bc zL@+HkYH4RDB|}5+thbWac}pwX!HX|T_7s&e$TPeE#J3gYEld1{=$7brZG)}$R>{aM z%*ams@QxkK0t9%fV^RISEAj7wW6*AaWvb6+II7pZyf~)1=fkB_OLAlEpWPjJTyS_d zV9r9icWeG6UN57brw+BqY%qzY-Mg}5H(D-eh?m!z;m^ubKMacP3rtq({q}oB$Ve|g z>Y;oX>*ehV+jFnFdb*|XyEhqvUBDgG+mBQ}5}Kskqn{`S`sN82K2o%k6mEuZ#2pQw zi`$ABTUe%l-8Bhdp%UW3Fwi*SQpb2K`- zrKI)jd|6pxi4U;kvRmA5l4xwh@IHgv0GTHtbShrVcC?h+%*(rhe4q7^QKwE6V zxPu>`JPtmkXY12YjK-ua6C12Y#k`8OygV%zs)VxJUvgBvRx;#EoG(O*%%@7HdKQ(7 zd*5Fe*?aL?WD)KT@}qL6(&A49e36lXll5h`E%aqp*S-*qeNTcPI*QdioqqZ1@EOHw zAV2`$#U@g448`0(Qq;`wV}|3Ggs=gR11h@@n4~)fT=5rp=2S^-zshadI=#pIUkGFq z+=lki3iP)v&U*X{G?g55q|Gz1^fV7V&`X zyEd~Rc$daV0E@6VFr*o@Yo|T>hmRmVjy>Ta?NqC3%kk0wn?`9Sf~*5>F-2p%|7_2F zxs%pjbYanb4>Nckzy%KcEd33sEfAN1Qz(Fm_}vRTh6w6In6F4qEpBPW=T)`%=dTjU zhh?GC3{vVNSGZ9uMj)`tJxc4FpR=dj`iaoSchmpq?uM%n@N7PSQ}&I<6D*{W{{leN zr9XmJdn>oEWOo3}w%(Z#);I0jSF(mzlm?qN!8YpmGxI7~bHZm)QmE$9Equh;=gT6R z;z`SKmyhgGR?6S=JoQDx${~Czi6VV zM9*IiooEDxXhUeYG0~;(jeUfw*(&SlB|_HQTH`CHC(kGC7Rpz%MfEeO>*efNlJVy- zZA9xhXaT(>U-bJbM^zf5tz0gT2@N7YgnI&-egHk|oQhyGN;IrSTo9E;D-qr-v!zFyt~?p!a*O*;xL1@`OmX zPK`#iiyu!d&fYhn6>{L$i1JD7sok?RV9kDZQ{)-)noowVsWG=*hT#YXd+Wy67ls`k z;c6Exvi0O1Eck*hG-mtRBGNl(B(p$Yle)>S!(YE-%=6)zvKqD zytCh}ru@N;AnpcRe+&%dLF^|8#pO6+ejCD?E%j?Bwh<00mqQ1FJmgqyUMJ9cx7{@6 zJ^4422=!*{h*$DxJ-I<0^QUoHU!KS1xg|c}0l#Pr~Ljo4U>Jz_#`||s&sSz>G}ecid>Pzkahz9?R>m$GiZ<)QLJ#(MM8|B^Oxx! zL|q#1#xTnr=NNl4Xs_y5L1QiqM*(F&h$6Xmy~cr7Uyq)LCSHk<)_&9Na;flh*VFZn zr%Hx5e$q}?*6IJx615#bR&fBS0>Fa6tHQMZh|Bm5B~4HTu|so6PY+nUFZVZvY#m8Q zAdRi2UZMn2rOa+svu>77l*lyG#ZzwMw@Ss%W;_y78&NYk2)PXhQVUb%SvhV~m^rtV zgx3p!f9J%za+{X{J*iWF?KY<%EO?Xpa9RuHjfnX|I^5vaH>fdA5Lss63H~^wnBAo& zwLdx0s{3m;Pna5mY zR5&eTXGAF^TxQIv*4S3S;_2YrJKIn;W)St2m>YulN!?Obz z;i`hsv~@xK;cF~g$+gIQtQi(6QOc*FoT{b{f6F^!*pS;F+9+&zg1_<4HbG@x-b8YD zU$>$_?Cb!>df66hC{&-j-iY*%gD;rdWd}kPr&5-5;~N5_=!%8uRN|=f_nzhoEsM_@ zS=QcD&tY!I&fuqoaNrXrwjVx!x>9>hF2!Ou6<8FUALHVR^hAO1ND~t5Y$!!-#n!&u zQp907Aa5G9oiqdqZLU{^dqJnseRIp1`0AGpg|A3SZkRBYOYI|*UrN75U~eqMT~^*J z6yu)Gn0tNX@@4xY%#|?25DW`hD`(hu<;)r@I&V-3qzJ& zp@b$&33Vf>8>#JX-@GQCEj^zs@fF-lREpih5Qy|<0PTyL*-}rSZQlnsM98dnA^Xo|Qx%mYCn zrZ7s!>vb9dY+%$NuD3nDL+6yjnSJ%Ub>!oUiQ*8s_g=0V}sMP9)V*JZu7RPAy2h9Ylf?W+0Wl@FFbY8@Vp%Xvzsq&%@u ziP>TKu={iQxA@AN0(G?d(6(6|a;=#cD$;N1E( zoyZoAP%9k}Z0yN?XDIH|T0T1BXP5GD@>|I zk>oxd?%R&>v+?kw6YjtH8{K$02|CSsT(tDxKF>K?*6){@q)Lk7z$(l5eWGdJ&Ekt1 z-g&VRZ2n!wyeH0yG8H79>V4eAcamW&F<9zny*C+Jbtc z;%tiB(AO6Htv_otvs1~8cV1ZDiH*&O)1t+`D{HcZwH-ZLp-{EyR9p#jw-;4+0yGc~ zW@BUZw5G(B_&3zc$nU3SnF9AvGP=(Fl-iTE!jH1pv76~5Bb(_dV^G&ur7O+o_ub}E zORm=lO#u+VIF?kWeAM1X)$}14j$SSq%=!(&tP6p_5O~Fx>;Pa zA@+#cbO5G9?8cj?a7J)H5}>I2&y>8~q@i<}_|m^;N$XG~5wwlGMH97Mk1q9GU9M5l z2Gw9jPu|sN?CylD@Qe?|lTb7H6`*^L1x;xjvzv--lG}XuQw(UnU1lj%;CIAQAM?L` zuna|Jf6nWsATIB(NeUNffOOw4klk|%_}yMrOlo_EZh`%{Q}l2{vf;RHN*aH>#YAW^ z(Jbb7=}6;t!CwT2*a8FG_ShU#wt`tI<>MkJr>QYS3Wzne|8V+D`l8C80^f3N9T>~R zeKpi(tyj$PTKTZawH>v=+di`w{J*ayV1x`Vp4=~5f7rV+rjdEeK-t9{*xiK`{|X9L{oYm9$T}yv|C|$^8!Spe%45qbb6p>m`-# zCp&`%46dmyF~2>%^2_APsr#6!CV4{I{5#Xrm!m}H!3|QC;+VP($tfBOZHMby<1nXv z>nJ3L32#Q76Aj~g6vaP)4>~BenbKMBKx`avyQqo#bdo@g_G)OFL*-a+d+MNw(Fs2N zLvi|}OsxQ)_2i}dPz$+wPF#5f@1{>^I@rl}oT%Uhlh7DglBX??O@ub!;ieFnY=?JN z$1MZF$J`fmiQI8`z>Ce7V+D7WH9AWfvcfdK749_$btXyQsr+7F2`?Q` zRL;%lhSpb(=YB6nNpQT#8VZb}7=zPe+7e5IhSHV~nETYp8%OTe7Kj`VE3;xH2ghdw7i8uOb21z9aFS24L}kl?lCq1nwV2wu(s-7! z+WKrrzOadJa2I!?FwyF*$catgr!CoQ`*!pSeg{d8X@h1%Vay*h>&Vl3R|2JaNt{6| z#vg|B5J62}fG5zJM)DcqBvs)oN>@XZ`2_fzlPwZL^>5+lKc6YdpK7OHDT89f>ZCVJ z=5C<2K}C@@50GP3Z4o2R(cMz#EwWimYWK(tDgI2>N_HnMsy~ z^Pe#nrro2)>o8-B$;t;KPdWW_5kPf~5_;D|i$Wwj9aK81Yz)3w{mE*i`(!E6y)L6~ zA%NwTrldr>Uw(Gn!HCIR?|GO8acR*6g*Seit<4h_iF3KwlR-{rQb|r3de1Pk7IkAa zOq3)~F>8AHQ*eeCd}p-T=l$XDWZ4fTIQ=UGBB(RKtIp(rUpL%KF~|5M1rXR^oQejN!?y@ZPt%eO9TG=#qX^>w2N0?mX4siyM9oA8@{UloAxyY zyjJ1jyQBMF-KOZ{gg6xJwXi;#+c)`gi?;c$3Ce9SQ_?;(fs@jILlw(Ngm7@I0N>`B zKmn=1vB`_yN=Xh9{p5P@ec8(6nburCKRW3C2MdqjI^xCO7jMV<)2yc)ThAp=o~YT5 zaV4qAKXOnCWGg<`Sguk3VMj4J3o>2iAEg|3eI4|*D$(m~EDt`^G@1pV)_18X+u- z)JprQo=8~;A^TjpIPnyA(&VC%gX{CJ*rXqCjP=sXpmy`qR_9Z$e;@%Sj2|WpD=2)- zVugko|2e3^Y-l-@q}xQ!xDM-nW;InhDclVCmqIFCcQh65uW79zwDlv8lGH$Yt+kX# z&h&M7dbP60Dta>vS-u4y>7V!Mac*bl5d(A+8U}UvNG;aAua=dtZT%LPj+Ucem1NYa z{OLD{{pqp}ic|!tj=I0J{Pio}_`E`m+OUo9;DFUn9A!;uvrf13oiX%uiEr#aL&<^{ z{~9HC5;)S#C8li2>oR6g4x$ z{-Dl}fJF*7{H$C9i3X=Zn9AIr!`*yH{^20fTM0KA%Yss%U1=0ncG&m&cGERuVWXm` zqE~K6XhQ*oJv~3VJ|#&^-jwi5FgRy7=z`(Hk~4~@PfXo0s9thCp|@{mwUPJfJvOZl;)QEfOGc;iKAK}xTU?ZwA4p9veRW<1iD$FQ-A}PG zh?}(gdLTZc@e>!V)ETP9%rZK#-TXCiM5X)fgsu#FQ67ZkrZJorz*s4d0D!<3*31*J z2uEpKaWJ8GJL5ajHqQ7Llp)CyDfFM4Z$K}qCY~NFRg?zoj@4JcXtM69b)TZ#e`2Vq zQbV8moOKiO#lc0e4%5g@t)sDKLg$}jsQ#EmtA$X?g561qkH|6pRAukcLdd4}+s0m( zO)F=a#4=*_H?LxKFaFlKTKctrb`0Oo?ga5ZBTd1S2EUwEwSlh#!xvw6yw|zy78PJD zUwudZLWHmQzn%|%$Gdce`_j*e?mzwCKKrg*=BY8OnWw+wI&9zZMI;NYYncd%^B8e{6xL^oYB zKLu44?>t6Gwh@onbW)2z#T^p#4@pZwXifg)UmWp)Yl z7?aXG?*|u|ZtU&#?uj#xI@{Gyjq32WcuRz0)G?Hz8z9kCl+T>P<+DJN@m3<>&R^fH z@0RW&S@wYCXZ2QXJr>6kdOM7i#mq1N){m~{))B@PJMr82at!*veI-kdu>G_6&PS#3 zbs)+V*}zkRV{@p)RDKm=y-yR)(5^`hSTDo?bMMV+4Z!q?`fFZ}=5rbAl6 zN$vFOYky*+voaEWGgT&bJGSZ&* zl-lxzWac>NM_KLZUh~KvJyLVlAVA^$;PX~@9A!sLxubrYDpa%Bc)jJStrHI*zx1)* z7r|AumX5emy>vF0)nC%TSTGeMKe+Jdx4VrfyNHES=WoCZ$7CawchYxA{|b|N8()FO z-}0WqYm_nhle%4Aa-`Jb$v9IldfhckoQ*3p>IvWg^{4tu>FMFB+jBLJyUhbTAli;t zchj6J*#Jm(czT6Ak=V52T(#UkFQP%Ga)>w7B`FgeQz0pT?gKIhm?wr9F}0jlIc*Z( z>{?|zVqL`}of_8OSGCus@nsL{XfjTXH-*L7d5O`#cKg9 zAktNebW}=|sv=DUM0yuNkdh!EH9!;vq(*uZ5JY+}2@pb5dRHJ22uY+1By>n1A@@D- z{QbT$-kG|h9PZtq6$)L!J4{g4#4O%sY?lChnH<`RTHIRY;3^NA^c(QtR=)mz zGJut^ktEroY%FVt+@}VvUDuCz0)f47+J(iiv+9|=ToQ9AjOHeBs~lOCnHttKm$lF} z_6z{KF1qz}DwcS6?L$c0mZys+CeB*V^M(8RUGk!aZxM8jGC;@(d50AF(usXWQSme# zC*wA2?sJ>-BTKy!Gwc!zuN{|H-=_m zR?lYq*}K(hD7|hK4H|fprh|m{UE`i{Uz_~}=~-QKcYLEBgF>yZNr*4kvYI679>#h; zbXx>j6$J!_SmtAtKhk~K8(r~^X?S-E-X zs}eSi_hNxIqip(wOc~(NcGHraQ$K~Oa-zhKaadl~e*b;=W?N>z7K|gMX2dERIeO9L zw3A1Lm~*E3VVU_mO0R~g7YqnoeSrO;a=oUAEp22=Zk=-mv(*he_Y(jC_bN4Iuu8?1 zNjz`L2Cv?UDE!l34$9|(%qay`(V3|dsU6x2iEd3IiLk@8)DKgZ&9T3z_SCm)Q)op! z{$Oj|b^wJ~40^*xBV7$eP08aciz;gt&y7Q0WU=C6q7>|>vI(ZC3SzGVWgGg%@-uQW zp1L3HqHln2RnTk&EK6{}fX1}P42}anB!cPmsuK|%!CADet(E5{J4jRK4>akjm|!yk zC7!X;LbCHS8zA286}w|JyWR-ykiIBsr2Wj*>8;UWxX^~}U56=FCaz%SeWoxXOxqo< z&b1G=*GC1#R)Pxc259h&As=#l!YaBayWNBFhIi{SR#m;)r|B%A$Jnf%)*oRN9aT~k zk&~{=fBi#;;9<&aU}C2lRaX#-#7(?HSrR@AdHmxP3MMSRT%x6MI=5@&rI%@bYI9Cv zbB5brx35WE@$+`+EukvjQc0v!qQLM{B!yjd|QF|upL(3b?`qF zMN!W*KMZDS*cH2aAhSz&CT5Fol-1Qh7g{m(Aa=h$z__sDJkI-%r1;-kjR8LVr#4xx z-jSz==V#y?|DK7`p}*f}KYY>>>ellqLCIErste;LR}Cy{sJpe6B7j}0%1{@k>oq~! zig&ZE$y1(2lvX0my78~uk|LsG$)LL5sg~E;<(H02Sfnf3)Fk19eKXAH@C<#xEH*J_ z)p%eEz|c9tpV5d(9b5uxauUpkjD)=tquW;}`2>yq27mknH>;vkOMBhAO?Pt!aT5}y z`;6LW;_~$k9P$A_tj#TrpVaq?9{pq}(A3vfKLeZAwLgm-+B!K%>F4T-z4@IrWfU-= z?5bBAd;iTZ65_i$nFg7=Q`K0vqBwz@kb*1~_YZE3>FMAy{MnQcE)n;>6d&$s{vk3{T#ALf8w8k z)gUnm%@83InTH-~4_ogoXt_EcK3^GZ4;s8g`#LJPp01t?i6r+il5uwp z-VHi0)f}`ndfR3rb|XN?t&z?9_d#~9GqzXk-OXi@}b7t*WKd08bxJQ^LKDWZMm6wN@*I9B614LKv#^xT}J1g zY4a5pJbq#N{C_<*Pr-gDN==$E%nVfTHdRkuWiAu{l3VM^uRw-Do-p`56`7@WhfozT zg@Q$8ao1C|W+$Ah_~9|GzLis?{I8r(m(*^g-JC9t<}7}6c>I3r#=N4k98B4-*XbAi zHpysaw)L(OJ_>b!Cq2TQeL!`t%DJtz{NLVo{+hj3Twa;0ij~jk75YagGbL9m@eJm0 z!`X4BAH)&W`%dfyy@^<4zBWCm&}*WrzXaQ5Fl|U2nAElQgSE|~FZ3TH-oF|`Ad97Y zH#bNK-mCP8iegv`cF)R^`qIuW^UDLXlba(@-~gN7+xl9nC1VHNYC`W|TX zxL_Y(Ajob9mbeb^jLuE3xseCz;MgkiEnfR?J~$}_0kn7-r6&1y7xY~CK6?@7u-#^5 zKc{mXh|7rJ_l+zE=8QJ@$bkWl)C}|@;Gw_@4G%FdXIJ}0Z~>I2W~4L=sl6?mD6g)7 zOod4@lw#J(kesJP=_{E}P}q;5(<`rb4cPdCdfU6jbw7Y&myY_M?wrJFI78Tc+7fgP zC>BbO9``IvS+P%TpKL#1`+A_O{zvsNY?=`mO>d>cb zu%Mv_@pBBT5iaE17>B&I8&60Au5pTAelIky6i-Lwa$6dI?C;PO5&Jnd)^jX6$MT4X zsO18grc1sCTFc3>=?Cd-8D*ti{wzLw#?M{^<+nzCdpxPu+r#jp>Fd@=lnBR|l$q)_ zU5*Q%3w-zt z*mq`TyQ5+nOb_vOD#I3=Lqe4m1+{c@aT%9_8*m5AhK~x|gyLi8TJE=9;kcoj39? zH6+Wg&ZxToy^cS;pJ7Ls9D$odA&er@fhyyDDEIGaYE?Hp6`$nf%zQLHYOMLGbBD{= zVbfx@9Y2~8gw=(GnU5M%Fl!KJ-y3y;4PH7z(e^XjbBCW#$8hdANg2QQl2N`UNHe7N zTUOtV!#058=PBxu=!z?9tf;6}z|zYV7>!7w^>TYk`C_e+o(~u>HW9!fv!FOqIy}cY zCoD7f5a+ycZ-&jn8DiAuo(A8E>T0c_jK@GhBodH;*i`Y%DOobdq&kN&sKo-M}DZZT<(YgK7&!B=m~7*UHZ`b}T-eq#tU z|Ff3u;r3?~$Lzg)`9{&;h^5uk?-U9eYu&|f^r$iLm78OSnTmC&TVdxfO%)^dLrgb; z`Apq9H)%g$zDT^hr{V$7e9-zEpg%)T0P+IUJ2;L~`3sk=97RNpm)CV>z1d-ob^FiDn(4}q8_8M{p9ci&{p6fVuLYa&@El1zL$udl#7vLjX>DVwzUvx6J8TEEkx|-* zmF$$XCFz5Dl=3SLHKGMcjx}_3!qQ_9bi2jfn-gxEo}-(CC=xOk(bQi^Il9DGNQAmF zTv^(^E+ZFaG0_V?g1s8vFLy((xdy{=cMah%4oRhr8J+y%cz@fqD=HV3b@UC2 zx)Tx(A+|AA#=4H_2Dq*WE|f98(+eN>$Isy`4Ck%a$6q?}6q@H>RRg5H2fm`0TarXd zy;02o_Qg7@VC@a}B-AwYP3=RMxc9UVspR_Ul2hmG}^~ue)9`wQF zLWlpdrIX|PmQ(xQMEvTU!9bgjBYG>?sRm} z!|dmer%ce37RMQ4N=X%J8lLv4v{>p-f%)K@A)d|qPa@XWo}@_0H%{&De|YwLMoa=2 zs_>Z;g`a)3)Y{3Xvh6j}zkapg2uoj@P$nIS!+zce`RlyVenC0FPKLrSA#MRi?RVkb zgds+9^O)?STgKHf0|hh0!l&FxS*{XAH=Vq&Pq+tRj)fI_|u{_>ZygUxbr z?}7(Py7W|lwI`<~<($K33+WMuzgTI$_iSf%U<$MT&2TXr-M>U zRp7xZU|3ALZrsXuKY>19SDn5Pa~+R>tl08l;TlPf5d!I_p={SUAnP9 zz}saNiH{|Ei`~TLQ_Butl3=(eN+nv)jcvxvWZE2nHxl6uY7)cqpfSl}rLRa7{C2e;h0}mB#Y+mHA%s@ZWljFhYhht^ z5(^6Y<+nKoF29tRsXT(l)IAV@B4o(4uUno#4Pmngz5weoVqk)hbFxr!0P}&v{!HRm zNO1HI&l6W%DijA4cls%&y_DwY!7g!q?R3s$`T92RQE7d@$MG>7hKI|rU0Pd>es}(~ z3NO5PF)RKEJXnQ6;Plv}O7*rsr+hJO2Q)l&iAg%j8J0{ZMpaTEOwBXpfOA4nTFG$l z-cFTvu>Vh|J0uA|s@AsM<@w0ICt{NX^Tv|hO67TwGsO})fAzGY`Ui(wzA3t&Iw_c% zNM36btNbIq(XXU<&h#KSO&_+^5b5dc)AX5#F-@DWjVvX|?NRkZub`04W>RMMUSXfq zH(DyBc~ngzt}+^obdK@-YkwGxhcP+1b^w(Xs1TBwTCDYcsYLvp8Gle)(_e|#xM;o* zQ@(?D8-jkG(o~BE`T7l$%!4IV@z>s$FR}C8b3&X7EV>bxBfRIhHy(U{PiPCt9>g)4m-45Yp2S;W*tMJe*o01@?leIf%F4QK42q!y@9D<1VI}+cZ|9e$ zlv z#l}cT+YuIHXSD2!4g>P4>*cbGXBv^Bm-#b$!2)kPejxGU+WNLvb6JJG-Xt$Gm};clNBx4a|aMr4=;&xF+xp)>2emfP6%vhe?bV4UMrs3qRp}I^!@XbG)+zd zl-CFLjL*MO=LDJhivC$aCyYVybEg!c2*n-y=ceQ9fR+ zTUW->*47iNsdbfYR|p~lgp~Anah3^(m;JZULxR6zHr2-&bitwm3}XAp;z3oVXFOeQ|(meXN=;6WRj$h=!VmGt<;%; z)q>1(Y7M#ThdkA;iPaVOe9bVyl~0utO>=2Mb`tXlO(DOvaqzYEpxF56a~vtEgRjLyN? z+;)8#?Vs@JLKQ1IR!_J>DczF1id2Rwi?4iD1;NdReI_7g zlnxo}8OoXXM7H_wnDNZ5dpcjsn1ZIyZlqqeX6;I;>L^@6fU^ddkc2aN0c7x+^GO>m z$EJuCFU)O2g~n7}(fGTp1x5x>s2An)Uf!=<>t#^;=zNU0ew(fyn>u=qg{+F50}=7a zVgbJxj_5-fXwBCIUndsgzs3*wg)9sKVxM5kFI=zND(~H$=o&3%VjgPmH10zOa8S>d zYLskk?L~$&4ZU%?#EGIJFkLdGuFSM}Ao`0WnTp%1Y$T#$8k9)0$(+0}1jzmsIIhE< z1<-%jL8mn?`-?pJ#1{*cfcwYqx zGV1Q!tE#NboYxI+&6j6U+AIVJ{`37RxvxT|7iB^gQzk^;KIjRqCYifT6E$G&ECd+l zRu-fI54je;yHVr4OA;XQ=xxV%Y}sVxiu1jlgwr2xs*hn#Ou8t4D(>}Q9Wl?|8`_i& zdDA+Y|vS#k)= z*ZKJ!J1}==QeT+(2QotbJ@xNbaQ+}`;V|~ahNH#ctoO4?y;l?MS2h}E#S^}M$-v#o zq#(Q|wzT@#@Km>X>AET9(MIc%d$ayiO?~N}vXx!2GA{GB2*s)Atr@;goU>A#H1H~k zKjWVORCLypHU~BY`1bWcK&!cmf_LzxcCm&xm7*eDw$q+@C{Edai%zVY>!c32wBGl$ zT8EiOlc$@{4iBiN5*m`@Z(cZfpecKS+&Tf7TD&PYvDpw8kEO7TC5g`Wn-Aly z$%=?tn~7D$+v=-jF~1ujW5YJm^}N2j)B#XZLq`SjoyYFC{1ts>*mrwlyYGVC*O+-e zOttTEZHZ**hURrb&qUc<3VU*{Ya>F|l+0Rz^4FrTV8XKTdJphX&v#ByYHj?dYvXLOYXTP?uU{|;OPLinX5TH9&-s5 zdv*)^CQ~xJ4tOWUtrGlm%L@;UY|VJ=A2}wie2E>Lh6P21?-anyCDs;$YNC+2eu$9w zDL;_YFust}48w*TLqIh=Uom(8^&T&#Xju@h{46IdtP<_~wG$Gul9|Z|qk5J!yI-tZ zDsFG;ZzW75-|11rN2CeX7vI``>Tu}_K1+ZtQgtH9Gc6@4b8kWH5AM^ce6bA~L4#yu z!_$kw+B!+rnmS-k&gY4s`g#LvR=kfkhz`g6cdPkoA~y$PdLjv$5<(&8(O7k-<8!Gs>K9z4a$M9+(YqG ziPF7eVn}|X?UP`!pUE|~8!V0GUth8dDco#r6g2hoJr^L|l%LRN(NF;cuC;9r?zvSX zF*x>>A$7wqH77533*ijQYkK7Q)UnJe8=Tkga5g}JtoU5 zr0U3HeYS~fZI;%OEYTqy)(3qF*gw@pBOIBue#BMb#3}K`P1rXyrLUDbWEkwQ)L*zm z%m9~++5+xP&!QwGg!12?X+Xr|ero83e}7(m^}NE3)RSjDoCR593xhJ7i;D8|!*mNG zuJpODP;yiKqC91YlB%i07p;z!@Q9r)F8u;H#t6k7fAP5UV|(~YIA2|#%E6kTy2U0{ z*3#aSIOB<|D&Uf{v9;;9vMkDRwTJJfahaQ6k}~QPX=+Ll(iOhgnQzD?`ronHz5V}= zRfhb%%>d@JGi9A&w`6`MamI0nyx%Buo`0EC5macEK3m>v@?gFIUZeb=27B3P9=TwU zXm(+^OIl0a^I7j`vc6QUxznAyBC9S<){%|MZ%tTF%UCzvy023rFF8B#@Il5q@U<%z zPm>>FQ!QI_n7}>CN8l;FVzU_CvJNuzr~Z3?3UsZY;PI=@Hpm8til0&SskxWBYx72` z-{a*Q>g&?@9JuzAb})2ciqdnn1U^1xKjz{4e`B&eIo=1O`<>nd_;B`%r2mec6rJ2n z6r@UQ9aPbjp8j_XXAJ|GVE-=Xsqy}I3_lJi@sID5`T#P)JB$y#)ZT615R0b&_xt}f z4&XySPcvV*uZIWK!vCfXS#5H~c7&fpIk!p~^a^~iSA*ocJC%LKo&O5db+tUy{CFB% zFr#w>`@Ml<^WRd}*%Xhz<*Gn6umJIgwzRS3x7{wt2Qq)OOAlA*JE!F#Pg{6= z9(rO7MyFUub(0C0)8j%uP(-WL#cs)nV_TuEUpP|EC#n z=^e!Zs;Jcj%gBk*Z2yldPt0&X9f3{8IZk6pK_TxQ9sR%}=as!9U5voEXJLF!CViUx zmp)#(ec{|ue^v_6pY6-tgARN6t?<}~sk6E^W2q6!)ubv{=B+o$%KTKOAZOB#7oa}y z-Cd<@GrgS4NtMDn%+j zHZSQ#+YE?4{1#&usCQUl0d$yc7*}YzBZPOd9y@|Fs9Gc# zczfUUK>yT<$-4txLi42YhN<2Z90Dz#-nz89?-`d}wN9FM z=?rQ3{cAgQ={=~GT4{#4Sko#6ZpNW_E0F#cde{`a*^@3Ur-l1+mfYMT`OfcbzgZoA zq-E+p(Ds7oBb?PMo3+c7W{Z^QoC>A}fZV-V7hW~6?skL1Fn5{TZMyxd+1pni-zyV+ zvDxxkQm2!wyLeRpyV9{Jy#N-jp=q-k`O0 z&oo-Z$cWndyp*Nv_|ZDs0<9%D`W#LbUX6+g-G)D13!PfV++Ajl5DwhyK(dZI7=m)2 z@xf0(B1Iaq08sUOgky(c?4?Cx{klyz5C6GuQse%){Ln`fi(T1nfs|#t?TOn?u3Hy9 zR%ch@vM2CnDrlbC;g>>qJf1bHT~sT@=HudpsHc~|g&)v?<MXnaga{Nlx1k zBERVvp|85E^jcZP1b;;hqRWADwzu?UhIpwPVr;cz;TD#YW69{6c7WbBzhg03hwrJg znn_ey>L0!%({$;~i%UD@;= zk^af97jal+&Qkt5z19v-@#=<6D3a9lRN-+6c9X~NOY$woJy$fL`K z?2ugj)OB|R{yRoq%_}RZT84BI37&QSX7uI#<%tqENlB$O|Hao>`umrr*ddJ*eWHr_ z8FK+oYebGbb(cT{%;i?8;4~&Xv){in7pNCsQ%6l=-ogrrSu2%T=IOG5GMYMd4dQ}{ zaHB`bPX7)8GmA-wodIsdDjtv0I311WH9Q_ZNq0Y`$pSiqM6Ak0o_XIkTaqlIz#@4$ zE-drCpr%3eKbq%Vd5%9neYBXzaO!87ygPy%v^W%Zv^mlyAaDQ1QoX>r3EYFp%TLC;SyK?p zijaY|CrE2D8SVv^&ND;3b3;^4kSF`)@#7~D%jSObkCNpZem`sM!4lY~2C5FmaiZ;y zB6GAon2#0`J&D%~cz}bNgB?TVw$W@SJl6JKJ}M+B!`Ss}^Sd07;YyG4?!5WkW%cg< zrE}~@1$+{!^%@{#e%m&@H~13`wJ|=&W(Xec(?EKw5{5%uC$YG*5>bE~n~Jm@KptL> zHI*8v@sDSTAXlnHrox&GO(^g8bENMEVp=hb&F_h=V>p zUw+A1cv(Lsr6_+QBn0=`VWBhzvMN?wDl)luFG)mSUs_*2^e`NJO{?2Q@H&E}t7`qo zmqx$`xyaX9)~ECp9yRzFPa~LjvM$GlS(QvImZVBZJTgn@@xL*bc+`Q>ky)Tof7uJY zz8g}u$@O&~)~eV_oZ`UO9Y@f!DirNsJ%0@?jgLn0Yd2NXLe|0u9XGPV(gc%B!jy21 zkCP+vP0Y^;y+3T`o*NVVbqIRS!O%zF`K`bfEqlXp{xsG8AOjYsF31E()?R}iWX$&B zNQf^UMmW&~`v40V9B2M_3_S4TfTaAMjsdiNT&L-n+M>on?5(37l56*VklmNs65-;nkd+u^vD~PzsJ)ydgKOm zh95bsdYgoQ2x(ml&0k?#!I>(&!S3)1A$HkD$#Ho`wpz@`Nuy)X%E>Wge(8xtcWK+< z;S5@aN2_1i=Y6xrzx5l#t8}i=ANfKV^W2lIc!`KwL65ZB*@SCZX%m&-zXJEGS^KDD zST(s>j1AmVxYQCk)}9MwjwOxi{S$fnb%DFujyrJO9YLF2L2sv}tq=@GQP7%9$ZMgS z%V`@Wl@;{uYW>C2JVJef=a$^Id~3Uml5jq(P=q>r&}@Afy{}45 zEZ7YfGM>y7Vi-0mx@h`_j#H%I8(uu~t^XaXz6G_4^aBW#92QSa0wwT+9PU_$qrm-o zl@uk&!F-}0S-dB>ku*!{=7~e|YQD_{vT&ucl?R`}h;m0{S_q|OYgWj=_*2S*zPB79;PiK* zuT$5{Q$yB&$|R%SM}Q6=qi~0$@y7G%PRUYE z;Zl6jGBfv;Px4}E&{`!TqIbpEuxTFP6nyuSnQWU?Y>Iq6U@JE+JGoTm`ni`6Wq-I1 z`MHZ;jFdX{d+KRx#tbQ@J<50{xAQDp%bq1tc^6z^8&Jot}`+kd1?LH&p;VsDVEz)jKbH|BV`+azNT- zhivB>{eiAkSHDqqf%%7WRqR4!k7^?l}m0wkNX!KI+9{y@CqTA7L(Pt;V zhr-9EhVB=Cvpb^fdW6c*;$OMc9;G8q^tDN1#+RDc7g zZzZ>_Dkh6}+OyN{3$1Bvr%9!9aOt3$#&f>)MHahe!ob-0+zOQqCTAXtr!mxs?LAq5 z6<~9oHvC&*UV&xsEls}1rHA*lZ;BJNrj0CTzukqsGj&X*ZG+J@0!7#QK?^{L^u6-^ zhaYn-uUAdUCR<>UT<%ONBxWo>iERwh%28^bNHqKQp;1)$NJQ5MxB_2Qli$U>Alv<+ z$in%#Cv1_}&0qRs+21hxY0uXLI#!x$ES-mD=5Z*z7nl*hF!^lOr_$XOFKBAuP$ueB zA8CG+7M;6iy(WTv{e+|+XePJMieBM=2(8zt;%_VRH8f zB_t#2=b!1So+o+Bq82BUZlV5{3w4K!ok_GhDv7>zedft>zR93!pcqG4GA0coL+Y9&wtPH+gB9{Lpylr|s zHA#l#tWds2Eq$HTOR@2U^ z{x+%?6Gsr0?s`?3yvmOc%P_lj?W64B4f0%>+Rb2#zb%OUq3tx_4sf8HO}Pl^AMkb2 z-x;@?M_mXR)I#7_MCuU>H|qS^Tl%mA%sGLtRJTG;tWfG(sG zqIP#1sH71jO|o)>eYLfB(rnjQJ5#XF#>WbwK48|G$bpw*waxySMn)=Oy0+Ps?MG00 zxa(DL=wG{5GMGN4e6AoU#>sEd?Etg?lp>ush6jQDKu#fF%jNs%-~1uUb@uErP2}N`xY)6N;?JAgekQjVqBJ;%YJYL|4-R|Y zX2@NXtm9lVd5QVxU2E2O<3%g(tjEr%~J1s9--}7{te}sPC?%tHAXwb6-dxA zB>r>t*H?(K#DLYTl~Vrk5nh&D-h{RXHT$_<#^CPS1K;{enh#i}BoY+~|BQ(sqG*YMI0Lp?qH zv%>P*>-Y06UVK>k_SlJ|at0gKz7rFlD{>20f!dV&(rk=DFwY`9QZJt(gqYVrjaehR zM}@sc&1Y(|R!(K-ca074J+6`xi~n(7_^s;UW!nOQ>{O3K2_COO6!y}nzv=4kJMp2a z6Jsb(cVD%icp4j;aNDR*NxHA5n)dmWsIu$gY*%Ns^vjcPcK+e~S5W7F&vEw%o4?x& zRei&8(5JsC6AEA2YklyWvOD=Egd%I@(WIQ3=2m}s7%^E$rvA*Pu#nu`N*v|&Y{X-| z@BFR1a2QDnWkzY=Hhj?jkl&;O!baT}6g*^SzcY(HXt&5~6E zf;;gRo6!;`Mg#wHp6FH$KKh19zPbOZU2(e2k4COAuLs*zerLR&!X2!T0v->(U5@^& z?Y|~v5Q_1gL3(;RI!}6PPgrMhH+!d8N(3>6&9EAuN>cNLFYBxxKF&AA|Blg0HlPTl zEyo=$R|e#-LEmzGP113YwQu}?$Cg%Gh_->_b>Js_bVv8Tnq9jYd=o#iehv?Xl-h)x zcxr5%sl?6m@0&**N5Pv(IR1+=rMt=BY*>t+I|=n5=aZ;v+7+Ux&i_IjEJ8f>eA6|?(spx#@ZKzi<_t2&cuP> zD6b(3B^q|#`~_8D5-3fEQS=XDzcIOYag-IDMT@k|D#3(<^y3xd^|+ZKPe_5{iT2FH z4_e^j7c5VEw`nfNT?Oj8dSxr zYbqkFFZ{Y$DE-%`$1#VoRHG0#iE?zJFbqZ}vV2a|`&F_;OF_n;`>PK7j|ARKw{l&r-qSMGY$9CrCdS2xAVh)g(HkS)B zH@X1I6#aG%n!L&|ra5e)P)N}ZlB)W~LQ>s&eO4k|8M%SZOTt5WE0kS#{UGmi*IjU^+PYm2-K%cvrmW9mv$qHSy_LLN4^mroVY=bK=FtOR zVL!jLg&*Bs(#hjvE9YxZ4T~O6syyF&9A(YW7KWkm#Ljf^#1>O+Dff7*8sD2j?4AgI zlsmg2nk?{lRW>2J4ZWL+Cvvw8nBHH>p8l1B{~fC48!zB-@Z^PUt|>y?OO3}ZGdg`P z-zq!_jD)?uwis~FCuAOaZ*OvY$vUf{B~$13TuOWDCZ13`*>OBk|Bi+BrSH*}AD#SF z@~0Hlo99~bT`k^Sn3j$}3fm7U;~s~43X~1&;_C%IDaJDGg4TTHPv~?w2{HE7@6@X> z);Q0WCVCnE%iOH4a5CzY*&;(LD~XAzmMNOY^smAxq0_X*>Y&Iyhh64FiO2eNTc;a` z1rxIH&%u*H?=pUlP;%1%^O?{memVF^KQ+Y|A={4;Y3e!sG?6=${WqMyKbyF0`9#WX z4pPwG6%lQHTxl$dTqEqoiFce_##t$ponCja;dFvZ?7IRzQy&Ef%YWEkgsu_iH`T8} zk^Kz%nrPdr!EwH-hRZcpc7x_WQYr)OQ=6dRMt27xZPpQ8M;F(Me;^~5J!bayCHOVm z5;VgxI)I|4mqS<0&FWBd|M(Y5DlEziY3-ra@QZ0v+~f$*EL%I%jJK=E+q%u~^EMus zEo2n+dM;>3l7kZnrqD8JX=m;02)_kwAyI?!(P8o81Y29;4vJKsO8tzjx3-cRz6f?d zEj#4I-J&xYV729=+mi!w@sSXY>`dT3CiSmI3OaF@1cAnlEv{0Bp#8`zyXyrlZO~QC zLUJmi^;kUu1y8$o*81eWDFR{f{QYZ8*eN7(-T6R7awY8ax1sH(^xU0+PrzJ61%)Jw zLaq7u#=)S$ReOC~?3XukA&zd#UIglITf(~MmskFU^Ih{!o!a9efpttl2s|kzI}Nv| zv?p=B@JngG5dwYviv$IkdcA0&QJAf||%5YXz!;d*LX+0#wW`lLy80Cd> z>2f4@@+6pH6+X@2@b{jzd9}D#!cds0d#In6tSO0oP?hQlW&RucGsA-mGdKS+lIY@l zZS*t4l(kLs-^gHkd!LK2N(0q?GEgx2o)&=#*ry(}cBT6HqA_PJzs?ho=^%6^aryUo zJC3a(n2%(6tFXF3HC{J_n6IwG6Uge|4x(8vkzq>*D_eq|l)({50u4GY$WdBSQdZFI z*_zF?h3b8)7Gl-8ULH~HiAlrU4iz?sXy!+AKF(}jMF+jq=_h%Vb6=QsCIrqX^E2HI zbQKskTW1C?-CHCXtXfD%F26 z%jL}($L1}<7zGr&qh**sA8NMn@?B0r7oRfDPgr{<<$Bh;v#jskPOsZ$k~Yuc;4ddJ zfU8jG$|QSs5ry{@4(@0gs702J6?K}U?ev?SE-&m=1cgxR@D~ir6 znzL*-Qcz(&?)mr9h2+m0gN&{kHR=^QOp#KrXI-3^IsH75CvmV3G4bHMSM{?MDSUh# zhjD27&U;IQ1P;igC`3u7ume>T3)oK}nkTRjP+Q0JteuXsaxsiU`SzXUlajVm+slV?8pbB7? zuEG!Hd{{>v_?N-v=^)d)(SOQpCK@z{Gx(+6%WR7=BG zbg+ltzy=1}Y7vF?%i4A^_`vtwDKc$YR{O91UV&PC483Myy#dYoN3#_nb@o~{^BV?7 zza2nE2I>*5BWDfUdPD1agJUOA+AsbvO&OEqc*IoICmJ4m5M$U#U9+M{h(XI5l(Xgx zVbl;m0WTZzI((OS?Z(K=?NMoM9g%KD75|1F^bkgEsOQDy{#uPQm?;s!73YFZ>$UI! zLI;5`Ku&)2Y5|o<0x)^* z&05>QyWgl2>V`;nIwYm5Yvb(&*zupZ60h7X^>~589 zohHMx#kWn818j7^aW;}y@6>XGY;Pr{2CB8W;(1g-r!!jfPGJX8;h1zALckrl-UOAN z6P@uunWecl=A-{{shi$9=W@{p3vlmyRp2adBxi2WIdqDOpcC)lg6bA>|DfHXE1i>%Vpj|X&7uT4x}Vq(grxElq)+T*OOlXn17# zhHT{SA`1Wo3zLY9VlX#KEj8ZvG(AFyvk# zk6){qjUt(KaLnoFu$GchKJNLw{eHH(PU zTtgC)N<<=kAATR+|61?*e}BJcWj*)v-22}9zV@}RYdPCD+;ok21{(k3vCZf8Om48v zU0Kiat}dH_>(65}PLoU#%}tB^9tIe@ISHzAXIHRjGV2qs=Xw7UX@fzGo}C^-5e9RWaRe_GRBA z>jVuS{htrX$voY;4y?)~zH@a3(H>F!X^pq=B{->9Buh3w>6t-VFC-~xOROlm+pVa$ zjdtGF-cLgoD3Ve|wQW z6PwS?>lR(XtoL=weYv$N^?{cUixaJA}{W^ZdzLBY&i1!<7P~FaPb_A^%GDyW` zMU!Z#yA7jSR4Vko4epzr4aemg5L}|F{aZRH>Yj5Q&C;7gY`Z zG3Yxr2{A@@tnH+|CFNM8p>g~_NsJ{qu%bl!h}k{Hy`e6&+%_4+tffI-@@5KpFS;YrKPvM{8LHdplpo#Yk8;=DaYXH#O?&Z8pxQZmQ#P%J?iA zLu*ZU@g(8N@Ss831pYi)+@jF5WMw7$O**=!;MQ*wg4o+Do2ozDu*X#Oug4rXX=JX4 z@$z^qCwnnOp01&Am!&!dC;NkMn2YeeB)xfg>SKnfmJe^82ePvCtACskF1HOk!^(+c4L0zRB4nNZoX`vHms(#Zpo?1x-I zYCNU`l?IX-uwfk%5CBRuO8{TYH%k^JQmVBI&Z}e|MGpiGSkU;Y|3&3H%OuK;W$S)= z6ZJnW4AmJHqmgHa)W*KliQLMedt+VE?nI5gIq^|3Rr-FHRbr0s;PL(&OK|y8bqK+% zPU9TjlXigq__w_1-c-CvSPU;5->o%UWx0ymt z!8(a<)HcKT4vnnjO%mWfRahvL#@Ck8O1)0eQHeqpqa!%ImL`1s16>t{C51(I<(f2P z<&3TGy6oW`CnW%Fp*Wtt&D@eK*A7twD5QY8w(%W5`9CP~K;w)(Sm`{L!Db_5k@5FU z8(Lw}-Hhs*aQx6t09^nj>-4eZF2uYcG!FeFO~VvV>QNe6UYoZo9Jpsu7Zv&M?<`Gg z2emUl8YTA-$hxgmE)}1K>5mwQ{@ijI(5%a0)vtP&%B^z*v})j`4F%FpCV20b7J+vm>jSVD}%TKsRZE2=fhgfnA^SQ?n0 z|1rFfo*43P;9GgglHKR|@wy41nF52VzX3kiNx++Gtt$*k$b!ZmY1qioEW@DHW#GZq z{NSKPpXH4adne`k?ImAG!bbFzZjkNKJ|pY6s8Fda@ej8X_lz6|PygBXp+GlTqgq$v zP#I!cHLO*A`_x~$pug(B07c~9m(jGhXX5}B8ot%$2x(sv6kTYmaD_dHc?@%Ei?`jr zMAOv$o&Tbs&oh`}dc($c^Rtqc`!j}?N6l&exg3EjCxrjbB;CgWZ{c%BFKsb$9mEck z7S?&h&6x<-$e6NvvT#}Jze2tNoYrB*Xy26CsHbri+jD~ormIR?N^5m#X=o3 z-S--BrdxnLz0Og@t-7XWNSt)Eyp;QH+*UgHaJySh0jEe$%fOb{IB7MZms_>G7U3i_A!cA( z2Y6|Yxq4q#c{JOrBpFCeKt@dv+ficTbDy*CTn;gQwR$+k<>MupXS@IP*^{FU&@;_? zq0AeIp^6rJaUi?i{j={^4kw9ll>aLS(WvofAC1h?-4QwQ_SjD8BJX!j5?>o`H`?@- z=gABr&k`x1WhOu5^lyv1FRo}(E27dkcwth@$Aj77J4Oln1cI`zg%j+DaR~esEhDh; z2W{5&1#0#{T*z2 zlt|2_)eA)x1+bIjb7dv-MWsbq7NMG%pJKg+?vM`eHZSD&^2wX%K!mEmE0B1E?QhmM z{zY26$5*xnxgnuCXT`ChXKlJWI|+6V>NnWLG#xrN@eGG_8ha*3X=_$@)Dtr_OzyR? z?y^4fq};aTGktfBck#)FqZFr+BQ-)c~kuy0v+t|6pNi9$f%xT+zY);i_ znY4J6dZn5fG5^Kym?y{Rpc(6aceBIA)v%YA=hc*VEh_^3$F^;NoA9w|vVFkseTe2g zp3>lnU!Xcr{^}DJ;gQ zWsXfx2Z{!S42LIJdmO@CG&tRNAkR$DSYWrU6<9$aYe!sy(lSZaTs$+{=RLkBFLB~p z%OHjS6Y#)SI(&T};)EW!RkQK5MJG@5&2%qobJ(FNXQQM(8ykr(Z?CiuB`0?AVS|6d z4=*JZpZ&A%+2UT#uH4!C?oJCyeMzy%L!p~++XZBZZ^T=IrJ0jaYy~N3RAqss9SjC3 znPLTM)uTiJ%{f?mFcKt``D12dv;Os+VPX8<;S|2*$tCNivls_R!iq^7k_(VdisEKm zVR>bav+W}m%Z@fV6`?NjAU@scV2xIQx3BhSV^!va+^m}5vq{ZTJG+{$3xfXIz#h)W zmh%F`?5N7Aq?vVcCHxN6ECnRGaqS^FFsOmxkPzdS5jUV0g%q#?N5H*inM(5yCNP4M z_JXOE>AJe*O6jt@4NuW3$X|zkKEFAK+?e~{;Jd?K6XgGcahLvL%Wwf^N(TA6ax%_! z13d54+3fTXM)S8^E5*I2TAXmGXmsteU`lUvt|=ldGe}sl3zaXa_Gb_Ey~(YEjQb)7 z3!{`9-?tg}sP4XH8wr@Y9CYCP%X3d}j-U_TEje5LFQaddnY5Cxb&UNRkjGIfUv4R4 zA8cu{ey?o8N?)b;rHybF#S_^Vv-78k(Vw1fy%+Gbbn&|Epz*F(@er|haoKxV!rbhv z?!Pn{!oamyi##CChIKn=TlbvkA?%v~?*D1qXR&3ZhiSt^6$0~zXV+H~H&z~-wB=Nm zed=%p$Ywpn9p`HG&yKS_Zt~7AcwBQKkU|Y5UhS@wikNOoMOvH(15ZQ@8=cahfJFf!!GL$D^o4EOI)%GC>s;oAwKet52~q{S>CG~ zsaAa#<7j|>cYv_hozkzJJ=~|8psU>!p~T(FCHPI^Ow-IeVUtD6!4g3#B<}7#bNRPAa z0cALe^8|hu&aqF^;}CgO%ea!1FSDwg?|#}e+#wx&kcStOc?k4V435Tl{3_#cabf0< zU&h{<9S^y0b^3orn!4jU5f@#H&I2kBHfWY(6h?W^zdp%^)>VGs$zovYN*QXeI(HH+ z(xYYcSqBmq4eZ_0zS`NRp4 z(&utMAG}4bocYht;UsQ1U_uZ5JOTOV(9bE*#({9?-m)tZ>G-}Rc6gXD)f5eM<>>|U z!7?Rq80Lvx81>s^5LT!jY_M^je}-g@l|Px?y%c=AeTwMmpq{W%u4d19A6xq{FYs$YTRPn7oiR63Y3!HV}pYA ze(B)Xp6RX`od3UO$b2pVk%6FZ^~^ArdhqXZL`zs6!70b1z^;06)44GdGJ-aY4uhPE z)#);#Js?iHu2wVH{nkyc_|eC-!89qC3h3@V*Lo|5u`~k&T0}!HbKpCbOK=#jQSbQz zWGKjc+@YV7r$&F6q<$)#)&f151^lVJt;g|vg1q=gIVj4okRx z`Y5XW63qtn~co zA(G!t?5f;!l^W9h;Y&|pJfFhn{H&B`^9kC(XUNCQpcqHDqPbs~V>}Y_B-Wpq2P%U- zpU{3Tk3Q_RS?J^gnY)p71&~;8ArQ2Lo_z1SJAY&>xrE!faag5I%4c^)0Udw#T{e5u zn3P4JEl}Q2#=5y*COPWjU#D<-2@?*v_jgE>mVR8NrN}FJxLN;pq=s7-`iV4%T| zaKywkFlqtq+ld!FU5sxQ+!BWG5BKFI60#>F1GZfK+2CVWP}k5E0&A*^^J*Sb02%t)h%_G^=*X@{7JY8UywyFWaiI>1M@ zT;a5bI;75eg~8!@`Ah$P%)4{nH7)C0#X^`ZFzkn)2e2}1E2GO;%JyUfERt2 zP{XOmwNhwG)AsrbHlk*i#o_{w$0t33Obz3n&e3@bFyRELM82Xh!oJx171TVYjA7F$ z9Wh`-Afphy`yYFNivSg%w?t6W6Rpq(UN9xqqXa)(Gqa@fV6hA-9EPigL#x!=q;Ke5 z`kaRsHZiktO>+(r5mtb)@YX*sZ<&>1HBa7myAcabix6s|69Mofq(--JttqzDj(_BaIsq+^*8;X z^mml~%dZcG+zux{Y2Dv7?0>kNcYhP=?KjmjvDG!c^I}AMe+DVYN-J_s;7eXXj}d(p z?fkKKK_%0#i#~w$hr^HDA0wXDJ}cpP9A;zCxFXrQsB+G*=FE?;|J-v6Be<$hbL)G~ zs(!^x6?|7%`#6dSJ0l|2zLOycgC)w_6`CC~q&T>k9qcXYn{E#%lBSN?)0*Fp*3`aic}DeiY-s2ZuFa6#?xe%wV^&sbA^-b^%Kr4fo#^X1Z+C&bPw5h@EbF| zt3mISW~6voB=q?2tY(#(fe_``wo5~T@ds5|=D1uY(m8Gl70k>X$Tr;);qeWGIYAq< zeLCGPwEgZ_p&(Z!cH@K~Y31=*2!F2&$!1zdfd z>p0HQc;i7eN3e{UzO}K4^^q3JRPwAES(U^PxQ4D=g)a|7qV4!jZw+1reA50db+dXl zBQO8m&WInQ-~DGFjQo^GXAbo^Q*1B6eb&kck$=-^@6>Ph=Dag?kNF;a&?CwFRf)7# zlCaX~Yuv&+%n4H))mK7J%)gUXZZ!Vc=L%>e5;>m--T}r0dJBl2{sAJci~yW2-`vpB z7LjVB9G^-#I!E4f)6q%Lk?=4W>f%~VPo00lDNOqJR$OjLdD#Fs>YvH_kDm+g+~9T% zJRIzU*H<#Ikd$x->{-l7UJ3xfpZ;BUuT1uc;SulHPoWDgapN~|>6}uy!eGWwaJ9|_jDEIK*nRC|jmSa}=9HP1;XApc4<%)V4aQW_Di!*H$EYzef!PYlkp`tstzZwsWm`^ zIJog~2xi#9ae4puv`K>xKh+vNK9qc@I2fANXhc-@Ydm;AM2JXAa<@^t@a@}J?N|5zQqwKHy4wg09%; zDe{|%YODE4y*`&<-js7n`_qT3s0xJ6Yth2tdT6?ks0|BkKkb)#)bRMmr|N5S28lO1 zzkLw7ELlm};=qfCG1$ zR1<`?k>YogZ&~Z{>1eNqFK;J`&2V|s=!|{3ky9x)Arsca*a0kyEYPsezlVZ!ylMRO1&1b zi|qK1r>#5Nl7g5>3a(i1SR4~wLkgObovVBa-7%4zh~;+ncsZv^h^NTKF11S0`tnOA|m-Iidw0j zRJ1b>MfX);;2c?+Vg>a+8|hv{U}vB9JCGD~9k_lgDS0N6TfGI1#2ZdR3m#wJ?|*Ir z@zr+K8YIk2_%M)nTXDnqYRA9{c8vPjiXyvsjMsM>1_%h?d+WV{;f+2K; zq?_hIw>OvCsqf2I74hkPFwX!FRb0%J18#zT&t{ay_my50u~yD+1oNmF?y;@&C+T8Y z>XU0C*ZjAdE8#xwiKjm19@IBZ9khZnzwfx9kq>X_+S4Pf*|vFPnY51r!O6 zW@6>$aurk9`ilCtcvR36sC(n&v4%z0^G1RdMRt7?D>^yh2l4y2ceGI~WT!|xzmfm^ zWxGpWQmsGKUEyNi31KE@MGqdp&FQ_Kw$FhsE?;K%eKrvUSs2}Wn$saV4p&w|8HlNK zii-;4wQ^8br|lgaAaLta$z?wO_?lR6u-$=WP^CBbXfLM)4=DGv zjNNRS^izjd{-T%Dw`>q*KfCF@ww@ssibbzKM=fVzuAIY6E|FpI+o!vf6$})5ZM#40 z1lq6g;dO_2-NCcVI!Wv{2lV#bLScU&?2yrs_(JE81`B6zarFIGVbkKXS}*9<-ITyp~79r{cSZ z*#;gf!M4^x2wQ62@)yfROIiKF-vpC|$ttQ`Q^ky4IswbVV5Vs#!5yQzYBnz8brkjl zr#4_=)W^dc-KLUl}PM8L^2jDC+w9Ga)Xbf|{;l3}~DVWa5bS*y}Tdjm5T-{89%&^wDAqO<1j)7bNlq&Yv*~w(498c3A8IiuGsK{) zjpd*D4g9p-kJr|lxJwnnc~ikTJt(L$*kmqz0xWu{p~+BmMY%l9Bk@{gzW9ORg#BUy-W!drdJ&AvfE!`?zEJ^(#H&sp z>+u-%P@?~RUrHfn>g@E&wOeOdN7{cTct+Xq`kv1LywVNoOZ`ND8?dC*INF^v3l^VKj7*C(C{rAL;7OB`` z12f*t^eAH_Vvb=ueb|2zCYJG*os)`gg?g%uR3tXVvTiD(b}aaHiJ(yG6nS+gB5#)0^ck>Dk!b-MGeNWn0E7QOf#?65i5;mT z3~S&z{TQ+2&Hd6M3rMIS7GyRsY%2)# zmBT7VD``P`iI7uN8GP7#R^4NGn&?s_!*7f7*Vfx$!4_0FFy$9_HSc;=33rz&kisvO zl(Y>sGr+qIGZ#d*liQztAMsljr~qmtFwHkJd2=gdtl`sERj|;uAxF8Hm~-LgB%U-p zq|J5JGF)yM?)TSgSBd79p5kfjf;wdlJR=+-mWofsjzwX4r$Z8X=E8iRhwqa*BH19@ zAMbFm`%PssB%&5{bW=z9NzXcQZuC~b(vz$#y2VX?j}LwP7dI_5AE$!=lxgLaI{2F- zn|DtuW5MZRST9ds%ZJ?*2B(M*lCWhUhS_7viue$93T*3Hz3JcAAiL_#gn2=zwHabB zzRy2xJZ0(Ob_E+%QR>!jD6rnNH>rk-V;>H*rN^>mx!8bQgF&Kh1UG+~FO?2{0>usf zK=vY0+qw;y@eb3q-ZieefJE#U%C;k>V4@)x_x9`1h>fefS3yaNVNI5HK!>@S`+4!* zzAX%3bq~Bk9M_U(&m*qu6s|eFL7oG%tb^3oh$AH1G5GL@?V_L{+WlcGs4+$A_fB|i z0M-->@tu(V9OL5NVQDFUJO57A|Hhu|@b6pfAz=srvON`sFv;Pfs}Q|+hd)T@_ z#2Ir7ga&F6wLXB}g-8@=3CQjNXMljiPyQAx(>*haovQ?p!yp6;JEx##sWKW zP1pEnm`jDPtn_VjC+l!(dEfP}{!=ULk|C22BlcfT*?!1gi{(E7u5tqN{3K11faLn=AksX9~!G_hkwSFV17OT}wO&mXVDEsgxv z@T+}4#STwOm~?o8-)J;RdsQ&;j+0+Kv5o$iqpHovCqy0}v$BZU>+wGL#f{j~U&pHg z{1-gCbz?wv$qhb+n5%xi*-w8O^@fCb`LwsAJl)Kdd3 z8PUs@U=P=jDcZS1NV!r?*YYM5rrHWV?zXx3t(_V%Lb!IH9v;*vB=dagh+h5nu;{C{ zmfNvjmk?3bT_Pci%DWR~LCWl6V4`ai2>$oBbUn7{x@Dz0qQh^AZa>f65hCW=jy#+6 z%c{mKcJ@OdS*zu^+ma|IJJRo`6l!v(HKk+h;=!X9W)@rQ?33n)Q_Ob5xG=)tcTuNr z5+jTE6se&j=}sRZOX1U#d^TC#xkcz=n+Ms7JL6a14pFFUlhzZHb~bofKASJ4>7h+_ zD-wcRb}CmjrP6Capxx*5KpxO>-}Ges1%!uc;CMF=S!!9&v1Pkiy4Ao#A2-O=5Ko8x zcyzIyX7ZvTLF?JLMlG06&HBu1Yl~8;yKf@(H1A9UAv@?C`SZ`dPTd7C8L48>?KB@y z2MC`Tw6|;lh6gQ7TDJl}xs8boSewR^gu`+pY_ITZFae5BZhl5PWjnU1`5jcRe(52N zru38JY;tY4LsCIwpSR?Ok`O)n7c=bs?7Nt_%-%nWTT)+}t{-uLG1`lqA;wMTuL@L7jk*{{L?D&ngiS5AtsI;|HG zi|j>Q+@LM+zIW?$b^Tr8l8?h;wm?w@WMKv4CeQq&>VLml^;le$I^pS66PSGIt~mnO zAgfP#KX`CZH?~m6*j-1AY1@sUE_F^RKYFBzmmPQdWi)T&O2PE6WSr#Re*he@zqkf_ zO254S@uTqIq&2vEgXV&Hi`PG=v}vml*3J5b;LK$_0C z)qfseEd0v!Y&WH_|6&LoCO_k@4CzV#_Yo`)2fuA*bCEYIFxkJIady z+SE(?2{jKxb@`S;TBdVi{rYOL^4=~U2DKR+3(N(L_QvHQnWGRpmOd=bPgF< zN{ya*VxuUPYGriHln4CT7#>$WEau8>N6grY#ccf9wRb|c4`TN}34JV~- zgT;*dVd1U61$=)?(Z~J5KpnRWe^D#?J(5f8h2KwWhmQxIJAd0q@=ZZvX=XW}p<&v` zE~}gAkrKks^>?csOXOFF4(nRLM&~wSfCDqP@$C%)bUHR_U>DCCRI{Y8s+GlZ>saLy zmB39RC-i1~uSp%#`l9~7VU>p7a@kR@-QMegUn%c4u2w$6iEQqleJayAlgVKztEffi zDxQOlU(1|H*<|?1K~RsYY#h%iM?Hq9dX#ckIR}`%)$D18iQn~-Xg4!6ICv&V&|*RG zXZOh9e;14Q8o{+};K?*~GqklBMfsuo!itM|)=sCiMCWY2QA5qrs<|3%+`cX-WvSWU zRrww9caD?)58IpOb?SW{56(N7e;WpPXZaQRs(lMlmH+H9xE`xR8QScnT0{!)Wu4N9 zu$G9k2$h!Kzq)&GgNv~NvwrHU$O}Ye-G<=l>24b8ox@*B?W-NDiCwFd#&=~T)tTzR zlAG!}S5@@H#IBB}Iqsf!VmupsU&jKz6GGqmpgTi}0EK1b)Rv(uwdRYyk<&qEXSM)c zDSmvAvFr*uy4`eq)%0@@1@RUa7oQ?WoADw%mV3ZnE|y)9oz0Lb%-L%IP}@4ypJKD6EAuHeBo$VnCBT3doKN2j^)|E4oj1hc7uEYMb1i!!}lQpcTU~R z!~S8Pe(BUuruc$Kh)z9`D7Zm$=qh0SxIhr&OO4jjAc*b{ruLq7Da2Q8XSldtd3P+K zuvpMO=gIt8jcjMlJ?AWYU*CbnaS%Y#{pJfJGmexD*aPA7J$Gi5I9b0kVPhUv^r65p z`a_TH$;)|vVYPIx#7>>5ii!WT&pGWySkvTQ^S%NO^hAsF|Lm(V+|cEnB8~)!{jGC* zQM1V39qhQVh2@?MI7Z%i-G~9TIgYILNAqY(Bh!&rb5VHAS);#4Xs>z!3n=NR^o6N}}Ys)dp`2Y$i zCj6k0!_}j$isyr56cwx+w!K|LMS?0ra6pPj6^DyCNdK3T-tw|E4;_WhKH4NVX*gH% zsq9lpj7L%F=aScXBC(-w9%^c)RDL>f=YP%lOxRu6gWoKM32?_?O6qZc={7s*!hzfU z#+!_~f%f5Owjlk@iCpm%hNMt$z-%Th~)fc0=wVh<<;I2zVmSK)QGk z-Ck4}H*7g+A)_AK|HM%JJ>OV${wqQ$mkkH#Mq8JAR!QhS+&6 z{{r#pr*#fk+Z!1eB*v7C>=ul-9wBrQi(UT$yXxowwGzr@ny! zI|HFX&cu0hM>)h9CY`-3Kt}*tk{rDw)!O`*NYJjx}yuH(^-l(m+% zRWaI_=)2|%t|oEQIidLd<|&`w4D1hQs+G0rYaKaRP#hz6-|o;JMaj!--G`k)9e57v zM6gT3RM)2F?LhC42RM;cJmsMDy2+q#w1prpT9b$l)@^kpvz@9`bd_7YxJ_h|Y9{RgFS3m} z_Bg+)1hWl4g25=*FNMu+aDtemTS4cVw&omgMkjxycG>TRk(~fNlNXFjr6=gqbITB z_KBGVl`-4cPPf9{uUcxxHl+$IejOoqI^lKfxc{*O#&kutBWGc5tivv@+v%ve!cI!X z0$t(f6|Bq?W`gP3T7O$*-|RLK;^Mz~DCdY#)Rz_m346VJ^@3JiidW}$kHH2|2BP0! zF`f*F!zV+#b&!DLY}&N0M$65h{&u!-43P+Of%M@T*BNfV0O7XQpUWJu53RJXD5l@t ztMswAW0YOZRsU{DLDQb{-5}AU`Ev<8S0`=YT*~NlTF6;HHs9X9B{`;htZDpoGZsE? zYL>5V(Al>$!I@KypFF7UA@3F(1_-WP_aGMaLK{k~^B-uATnp_kD$l)Gl)pzI0kkE+ zz+6ZV!)ZManPCrR7X;Z1Pv(-w5E7xfkNw1dPQc^JSDE-uUSnJnI(j{#N7Seirta^1 zoM`=DkF~zFUiA3!y52hfyN{itcUQf{ps|U;LTz%ig$i!VcE&ufYfA`&0ewqKa%iMW zE>fvmJGtzeIjhDxmK7gF!7iKQMssK;Er06%!!>)8p_aSN*2YSzXCgGG02!gY-HXDn zWk7urwWLNsT;tv1R&3p$BrVmnxMK7v*-C@U%30XcMJi-*5Vq<2VlZ=J3Pgrv^g9Rl z`1bX@>ZeXU{b)Jo{YdHY9G~@ZAnEDs)-)rLzjUvM8!YY2?=f`h4)Nfkzc-QGOXRs= z8X(*VR07dDXPov`pFq@v?DUAeB(B>6Bj$mgI#|0+Wmq_w^-mA?kp{6oLejAO`dNm| z-VFpO|K#yk!aEp}2VbCo^7pGNppyUE=Cm`kuj3UPYQHgybTPxwpSb3KHL2OqDm07S z;on+I+-&tMla;c=99J>9Q>*_o*I_S**%WQWv4MrlgR-<)Xx^1D2>T9Pv>66v6;pPS zd9PaZeK+2UNiH4&)9@>OQ1_2p`Dxhmt)1r--J~oO(@~Qc@>Ay$^+Do` z%64YEDL<~;Z3DnwRY=v1Os0?QMGwI7@!>6vx(|iGMXh6akAXf~6r9lutk{H+!!Ck> z=-;*gD8hxS35bykfF-HS=>Uma_<>T=>j{ty?^GKac2<5KWJf6k-acbx zjcX^#KS#pKW#`51uLsu*(TKbR*a*2WKPrF>)wBdd6{LH~4rPNl=Lvhfw~If?VOXPC z3FHTHAk{O3D{ygb9%YN=pJLO!K1Nl-Qq=hS&34n99O4^1;vPa1x|m>h0Q8^jH1m#>c`>(zYII--a}m z`Hz3L_B9{AcWxKu_-MkgWfKrr#8Mk0ENRp{p0}6@mgRYad4BLm*lj?t^0Xv9a?S>5 zCn*w*%#y^|3{-PdN2LdGb2Rg&li9m2zv|3(YqQv#HR=3pJwDytM}_h{5Z6$PmU-WS z(hSX@?HJ&7vm!JvVWS^Gv|ra_oGc(XMk)ypQcpXe(M{>Y)b6C!HBD#8;#5*i z#HV^(8T&;oex*IN>Nt2~cXP+HI#5~U-ql$aV`f6PdudU*n-a~iEseO%4VwaV2w9a{ za~P+vXWg6Ordoc%m6W0m=O>~E>4HILtU~yUQQy17eH3%E3!^@!lpC3WvqX1K*}^q5 z#uV?-PVE#zazne8JE|GUzR$wj!-8GCHf_Ix-s1N!1Ny@r=>GjOX4ca3XdPP@G{~K) z`@qe)L(!ctF!jf^itOwom!zXiw%K0iO-5=Nc^IVbEBE4HpkVizQi>I5?&Oz zrZb`KbZDBU9OHm%dCDG$#p*sxQXciw7j2PVQEf{Mby(W<&)=u{W!DZ*6Vw`GTn zybnZThlZhTV)2*3dywYJ;G>`O($NoMJsDqizj_J&ERg<`8K)32i1iPS1+;$3q&+}` z^`z&0TGLc2Ve4T+k*MI@h>ePZa+)GuKc{Ci_t1E1Nv~*t{KyIGd#%!9y>$e0K9|v} z0(;{Hca+nR08=^U_Y&QQXNkXfIrsUN*bJSck>1L!VYi2hx-h}pr&{MQZkgr5_JYHi zQ>Ob%OJR=lt)pY3Kg_#s3MxLOl$1!G9I=*K-mQ_vb>|t}ZxMG`WG|Kt*$EhnT4h%U z@{~(zau|a3rN|w*?AA%2ZfZx zioE`a-2K`GO7XlfL@x*rJG42aMFXbJJ-05>ZBI^FU%ReLXR=+_UHo!3A~JktS7m=a zoyeVG92TmEE&2G$HM<3FdZ0krj~^m8&JCSGMQJ#AYXh&b;(0^}K!|h7bhycF*G;y) z6U6dc^TUiGu3kiC%ukQ4a2>w`Zc=M8(c5ZINkNlZWRwS4cgj8Ism=S_W+Gdf@d?MP z22`XH1$Y1L1MDxxX*Q4z)Rpr<+M%a^3U&84@SKpMx*7dj+KOpwy~vJ=IJ#aH2ZdP< zu%Gj>z9}tJTS7eef>19^icCo^^-7V84?1PuRfsG7WVaXH6npN5PS8A%K|L9-3a9To zWQ`(vBiR)GgUooOnL-SQpr36r8YB3rJ(wcS!p!BS#3#4+`4 zV&*C$)nVD3VfHL2UFNT8qQPN;y(KC*SS9;Gw#apxFVol7(g^|wkJn{BkX`YXMuL*Q zw3^-h@dBK&yEP_M=RE1~Ewy!UQ-o32hb_!FF|G`T2=g^=Cjxw~gUzZ}aaYj(e@8>d zMqSjEt?wzSliOO=e@;?TUzfU~kRbDvipcZ7Guf}t?7{)#11#QYQuAfm6<(4^G`aU(Y|!1F9i4;7&bXp1hD{_v5E*iy?I<4TI)gQ)s);?(9OO zD{2z&e*bl9{aMEzB(uX)q59Qx0Z_sap}8#|=3cBW(+*k`8*0R-V?`yb>bJOR{M5;- z_IM1P9x;OyIw*YzD?E9v^WP-PuK5p%`$aot?dHO4wq)oAi)RSiEyxMs#}&!7zf|w@ zEl&z7NUxSoV7>kA8dOFbGRfYQzTqZV;U;j{ydR=e)W`KvAAG%+V3w4ocIPF;exB;G z*yZVv0ZFlwaIokUjJ^FKcKnV9Y~RX>?=@x@B4=*TpBy( zz&khxpZu9d*u*DHhlP;znS2oLvi!Ip--Qt60RmdQ5->KcYJ zOZ&4=M(3Wjg z9#0`wE}@N1*SB_U>+tnH&;Uw?&=ygyE6*()1q`4@aDS~tG_$qn0`d&42;ZaOxg?_J z>4_Y(M}E~YANtFG?*w7JYwRuba{~(a;!*c6C97qI}|BgpSLil04P#d zUpM`-l#WRZV#!ncr~?Y&i!`Q^=VEx)hn)rIYDdV)=7=*f3TQ17vo|9a)Ai)|a^r+= zdhL#4x#7>ru8ZG~4WWSJx;-%k7XgDA<`LT9ENtOK(V$AC;{#e#c`OZE)DE1da;8AN;b&W4KT=omV>sJ={syf+W zEBKI4Rr6QK%jqT9RE9gbQo+Uhgi$~+3y)X2@LJ7K)WQBHLa^COUrqmvu}hSMibi~6 z6cqQ7B^v^LM8@^aC$y}lqBHy2iLP}hB|}PIGuU}ZK55FnpVf`22%V*d=+tb}7oj5T zylMN8vx?w_G0=c5+nNRLdhglVf@a^rX3RretH1&_bD>K+hq>|JkFXZUkn(0Z-+;k% z)g6QAiNW}=t-Bu{OLfH>9(9z>x|?bWI{z!U=$>Ch6I;Kfber*HO{AaQ7ntN4^ll_q zkU;8is+paHYlY0i5<8c5--;RGnGRxyF8n{ty;oF|X%{xkjD@iPDk3UEMiEe?h%}{T z97F^KM7oqHy(N(rgak5zih_WE^d=y^gCszJ2neAgy@Vvvr6duMgpd&bC%o%F{MPyo zzr&nl-OpWix%RcMtq1fwWJ6mn+xL8mQ04Qhu zxZ|WRtnU?gaOjnIkF-WOctz;g9BP;83M{aHIc+axu}Iz4!8JC?ku0aqM;sv4Nli60 ze!hRdpW;lCgG(3~=4CdcF1?o|9|$oyOj%yxBr>y~{pOQ*NM9RV)~^Bi&<11A;!|<+ z-wA_)^@LRE+}s}|!URNuiFIH|ozcmh3)o6 zp|W8*yEfV7osGOZyRzcf|J))tmrv}Fiu(mWYZUt%IR3x~;6g#|Rm<>Ow| zy{QoG$nL-iEgsl{REDY`D4c7`%b}--5ZMmvp!dH>W7UF`?#}v(u7bWm^x%cq$L%rw z9U>3>CynUwecvuEh)Dk&9%Ch4{pVzSov)&!{`bw$|H7TP)dwa6sjF`DgggPop4gp- zf?yUL!2UJQ$EJcWl&D?%?z6{M-&{zT>l_ZRNS^ONJU*&{h-euv-BUAY@Vs85pKz1W z_2*S*gk3}8qhv~j{Y18a?+Mo;N$*Z__QeaQt6fC-(+pOeN@K2AR@{7@R z#QryBgihfB3v?$T0&P42D4paZF>;zT^;L!OHF7_+KGn5VZ9dkK)@Qtw499r5`$n8- z=<iiOu7)1zSSQ}G0)=WPdqpi=eOts9p%P{Mz|*PkPl6=a{hR^+eOD!R*_ zq0E_wByWnMyay9iLqsMsO~zS}*imiqpA$|@b#H3RXxI1xG7>sVgj{O5vsBYORPPs( z;x@BZx54%k%X;9j(6fYD4AFUHC#`=<_U~}1288%Lx;{2Y3;)Y9&@%opHEBYb@XWqq z+BTj2jk%e6E>*QGAwRQMOZ{YZT~pYRO9{(#%GDsv=@vW6UQ)zNb17=+$E_S}jA!#S zf*4(QQZ2u38Y3Qg1rzlgv58rlLlUDTeX!HhkXF@rm}N5c^f00EMZxYHb?nH>$~E-% z-dgDvl9h%Er+_aqUxVihyNoAS0WoGL5wP*E0rE;#_l&*Q=UVNc@qSZm6^>@#JaKw2 z0F!VLk2>Y@(r3=&wZ`j;>~jLeS3JfX1>KmUDKK@9yhWO8bNEw?1-8!GZaOFI#Hm}y zA4)Y|>*0^=ot23wcGSB!e{ZA|9SCVyuFJquEn5Rkk-y4BxH zyZT^QX(Aw3=DrI~*6>&zR`d_ggCCgzM|Ah5$?Y+&lYwlS>(Uw(2SfS@k^<3CKWBM) zJ1tu$m2t&jL{He`E{8WUxq3$`?Vpb`m-q0EHXz8_;4oAAyY;bW2H4&2Y#_oLTjW-5 z1$=uqv1{)Px(zR!C(on1+gVDwW8bK;Ns#N9u)%3%DG7AJuCA}?;n-5gCv_?0FYE8L z9sk?QzwB8v_jBwoE3b=>BR}05xnM2V$Vi@gUN#$%dTaQr+V}4&XKIe$xqc_1GUF3R z>H4Qj1rJ>=KKTx&FxjmO%j#t9ScXvOweJ5ui&bpESTnJ03{6xiKo*)=sc!^|X1E*2 zA6}nsZ&{JBkzavqG=SFOwBLL!hMbfY`de-NY+BX^=^->E=f#lG{iA=FWs__pOU}Qo zw$*og>hL)D9e1g(PB_J5EY9)uxe}T9qxWR8uFj|3%5z&3$XZ5{-LAT3mgK%RunV)i zl9Xp2^T)@wqQm;v&f_W-wLdb@+0EO_&80*NlwsMtbS$m*lz%Jq&%{$C`@REmXNJ7& zeNS{`&b_{zG-sWgaJ2X`F?)@R-LBq6j(L@%GXp!O?UI8z|Is8W=zC+EvDlhhN4@V} zgGI-l`8r9`u9+^~JIaAghty_~$I=N--jg*Ox(!%~1)`=Ie`*nF+ax|F&F0EVQ%W+N zmaJf}!)k$V!2J9K7WynCZC&n_&p9$MrX(egr_pwD!*;f};Xd0-4X* zgHnZ>Lu4@q=@+8KwYCFPte)>kpizp&->3{k#(j4fj*Z9PURdhq)Hw<-Zvef zG<@t7-=77EYb6qs$dFp38Fg8T4euS()al0F_7J;n5%l27fx#{#NH&R2egOI zMsrT2drjX%&y)@_@ZVPelFCykm&lPUdAS1zMjk@Aevmb^0-bw!Z;)0TQn~`RWYT|+ z{=dfV1cI+*NH1^76$^0gis&WPT4vzG`C#3-z{fPB)JdGJ?{Z)w$aASC^(A#XKig$i zDFmH1eM`xWu3t|yqsYqog=yOfZ&81375p8;--Y_4h{V>YR66~v`}VtAiZS3z z)&7a^A03R$yY{N$ON-5lV{ul@t@TU1f2)XPDF9W&#_UC>(Ga}Rr1*&arqBYsJ8K{r zgIlYU&MWVnt6_BkBLv=As`DGfm6rBeL z=rr}6oXv5EKeH=WF%Kp$7gJPR@{@hc1|%cRW-njr<{^-Of>nO=B}8-s;9{E9U9>8G zF%GYxSd8?|91vZ^+XNo=LakTe>Cq**QRfmTlC!%9<{HUz?rzrJ93gm&vqZ+co-PaZ( zX!|rw%WY0NK5^L_t)TsOrlArbon2$|FT%Uval{oi|7X7`?N*%gnl}D}cfn%cD4|+y ze7@IQu3@h`i)6t%zT|5dtda3y4gx6MR4|X9->t^owU`Xv9Zm> zjd1v{g7K-H{?=w$%~()lwXNSgMi%vY_KU?fRift;k#0I_b1HrWc0LV2)4sMHPmtrm zX`?0?_?~5aixFDAauK)1d`jbHeFel@`z-&Bs8u7=X2gagYL(+HmY8=9MJH3d!4Q~0 zb;6w})wA%qbMI`%&kFo=j0eu^9ayT|yvj<)aG?mdEkUjkM1?_br)|*PRQDFgwUc%2 ztwxa({u5)vV=(z)*KlV<=QYVQ3#B$S+c(PwMtTSmzBZmKtHr~Ggnb%^2I@5TF64Rv z3s(hj;^j3wzMh*;?d*BX!k2g9jfJUAZy!Xqx)$f7&P~1{VS9+L18|nh%^2>&59^ zi=G-5MuBFCUiC`iL8DQrY5h`3!buV3 z`@)7U`y(g++%W;DW~=yQ@+LJios$aG7{T`g6u*)ODN`+9b5_Cc*&)6`A#dY)^>y`) zVmjX~6SCuWG&qS03SrqGHQ3uK5u3A0zxuU~ueN}BH8wyuEg8S*%hKfFLN9VQE7tId zw#X`U8ff5%UpiZL(>BPlgjn{|zFF_guky8~q`Tq1)U4Ku86Q)+amRq`4c24MA@fw( zcj=Pz;#WuiN2sxC%Pii+IisGe$`@~i*CMQZIHm2gzTW~xT>?4;4l6s;GG@~A)NLZl zzI=1qWtX~ptgImF^aSL>v<|Cn-C5{dVC}0;lx6Ml?8kKW;K;1Z)K z$7xuFcyk53|UF{cfQx@#t^D*4^&o$#P*`tXuY1jwHhuRW( z81B$9RtInx6YCPQTz|AEuzB=OdCIV@SS4dQ1O=y~KWOrYx?-0^5zB#<_ZgV+ne;;c zfKW|X0F4TidNF&G>8^<``ITjDUs*q#i{sr?hkN&##8penJAeGtL?K*E0^pFBl#^Jr zujTRv5rf5G^?|OyL57RN>eo84Ijp=fr`Nluc}(Yfr;bL($hfv?@qex7^dCj>s0*uA zXaFDF%%y=MvgPm@fNByatnXLylWoPVD=Y!isgQtL49qGJrd1AdaKHC z23n?{UkC}+hcXK^k{;VZVX%0s$T|t=5#jx-e6n&8fai~VTNhfyaXLet0@d7t{As&8 zx5?sv07bvX%F1e7X^kg4PrQZ=#%Lr2KSeA*edvNPmf`z635~10akHf9mEb~oS;>dn z8ea=?Ay}Tv$=$|o`g48JM|bZxasNP_WF`C@DE(d-;2M~bqP?{#=E7Kj$Z7C9zGqKq@gO|l8kBjE& zXu;oNCvSjXu3lt&=leZqId^sAa~5#Y-_CJb@NtA*^h^7T zTeyJjiQbm%o&K$erIyVp-15n^osJ=3FHsgdzxmFz_0x@7Bi6*D#xlF>Zk%)tW-6*X zx+rDo#&nL&Zsfijz8HTbzLd9CdE6RH5PiKeJ%qiH_Z+ngH0R42*Gxks*g}UUao8sA zQ2=g)qLcBG1=C~CcQZmoF@BnrUQqGW*ut3rb74!vo#~f^r!^vg!dG;$>1iLHkFu2k z2;x;NVG=MtldJDf=#cNOVz`AM25sClCY)*9o_Ijusp&GWgRF)gMW0+ZDm z0J$&J2+yS@pOee(uuM_@(wHC1TVx(20_g1eV6qrA@tg0wMxZ;Yb!RP{ZjxXfk{jNr zc^?|M+yiZ>W2*hC?6Pw4J%;fSgV$&fh0hR)8&-PJguZ$?3q5=JOD1N2j&>{Q@GP3v zB;;oXJ|okdnquVkCoRFhs1e*v~#-1`f&v}QL>?D!sxtgk{w+Betlwyw&q_?>>Mduhiaw^%=s zNAnG^A+>XW_?t(^?~@d%YZPLoqE&?6iKWju(%&8aNx5nKVamD@x@Dz9%*^^QS3L=O zg9jD)2KWq(nK1IMrY3{#TS^vt8os`BfVYn`TYy-sPWLp<%@w+e`1A!T-u#MqR>LZ> zAlO^yfS6Har&-hBT4GM_Cq20!M}>VBh&h^5h~`DLCs}!%Ssgvb5`9&mqXwM<>RyGd zu4Gu*E@QJG0nqYFAumoQ1s=P;D?d1a(?9uYM*a;g!`xBM2;rGMXky+1J=reD?D{OX(I${{ni`r z-8dp#hJPwI{a1p~9$>G^Avi2c0Dwn9ap*IlC;eqSP$^vd)Af|a`Ff3I@o&xW>W$`= z|E8N?ea1+iiV!hq!lh$mg9otB6rE>%Y!L|}_w`;)KbtT0@bp~sk`3Ki+YkG&is`@k zj)T)Fu1vw*?q5s~v>foUqDa9owXY~^t~=-)Q5B=3Gto1-+mtWlKqE)5>DIG#&p~Ws z^bMHKS@%Akyt84X1q#|v&xAQ5Tm!TsI2rIyThy3n;KdT){_1_)dD;$g%Ll>e{{gUl z>_z{}$`(3I3QcVbAb3&VjR-_oym@KB@jUO1aLB^kJg*d8n@TI`e&K~Lo+ITLlzkf2_*7H%C++CBW z^GR93u0=8NuX8JoYG|P4d^>ni8egdFgTwmYyx6CSM6HRJY#8~bDQS%1gID=C>{Ss+dwjMQe~Bc zEH|!PWAfhHSPB|&rHe)+$~Er4D18?7XL|kaasd~{QLiY=pNbDu5LHZEq4iFkJKrDJ420P&Irrv&!B zGjT;QyQ1IPPKbwWgwNAh^s_BTQRwyy#_FdV_M#{D(yiYr(EAEVoh&cNpNXRyHL&fV zbH0f;DtTG7MW_f`8u9^r0UZbKF?fH`t-P%WPW!=BA$FY2Z(gfPh}U_%xeuO6Q%m5?B(P zXf+U;&2_uae^a=9ZRSdv=ic|! z;u3_~nL?_F&(hJ+vXlks!m_k*9=PIvIM8kLHutIhEC(3YjDpa>ncbUKOXwc*`da90 zKTU_aUatNpiOqvqKz21dHV*+B61 z!;GcPN#$D01aJZ}+u}40YZMgeH%|LH^(oKEy2tOUWqzY>B+uz@fp!*0Abq+E*j|8dClF4`mP7WI z<1~G?U2jB$AYMVfRK5(D6i>kUB5k!NaEh2Brnt!Au`jfvX|jDCP~)-0oUe0dWC|-h zt~u25_EMeF0}A0_*YS%J8zX4c!iFP_K<~-J=KEJY#Pm#2Nj~_kplwLx(TLjsXTbkmZev z-NA0K{kO9_y}@_q{W1s5>Te(`lBE>BQ>Ow^L(rr6Xwu@u_T+<#$#v_M+@j)UbKfI2 zPEmvl`-It3p&}?}pbP7kH~d4UL1PO5YAKmSXcIPUg;RS5XS6*gY$ZJ%nVsuxy>(lk zp9kBCgo3|gEzL(v?l%^EEJ`5M`(R&-O6ZT}@&d5cFFLwtIdTk^2r)eOMV^e7qk1=6F1k=hv0C2tWhsGB6ePA^`C84Zhq< z-FOtfp#KGy8C$%CR9v9%+Q$}R4S@-FuB}F?1eahOd{G_oD9d2$+!Z6qky+>KfIQwO ze-$dv)@lZ3Zx*qbqYy9?w57qdv7g<5dk0R0ZtIZO@JY=gn}smOr{8?yIMG|L+o2Co z?0L_H-HsbL_K}BU>31V5j^518EeOs8TA-P{| zqVL{LMP1@;t`WFPnPtw*-fZ5vHbW5!y-$}YBoPZg>*ygs?zhu^loOh2Q_gFrHv^2E z#yQ!mzUlOeU8amd!}qT3J^!+|FlQLfpUVJ{nd*wytKyH6zmFsP<_Y-Jk+H6{l zO-3J40!U1S!F0iIKroOo8B!H$0>7}+LA{EIux9Xe&gM>P2TTy#HLI#kVHffb5^?G= zg)x>nF}X+Z5kkD}?Kk1P({Xpb2yl{_2FVo2*(+<{51p$?l?$h>sm$rb4>-z!chr_o zB@Hr>A_jqG7m4t*gQF0x_{-7nh`7r6Tq&~I`nste&u7$ z!SUhqOhb;{jJ-?)qb~G2=^IlESEz(((VJbVNr%7)6F~xRZFw)J57|^VwHq{g`%znJ zlaD@+)a`$V`xH2R(6YfM+8a?xAP>^;i>h0SMaZM57%_L$Cl-7Ie(|%8_b?Og1NEZ+>Mlah#3f3qL7@H#1eW{1wT^Rj;SBuQXK+oe93 z$-2u7g?z@f`yj>;o72eNnjcK{kYD`IX*L?AP^f+4&})Iy1$aW!tIS8q74v&FxE4+>3BbL z^h&<#YVaLmrMRMp)3|B4=G!}Q#v+-PYWtDhb+$6g2d&Hvd;HFGBvClZCb{3~?;U!qQeE{AJKp_V{&DerV7fJRJby$b# z9%j<+Z@vfVjxll*j(2ctSGB%PIBqGq$j;^_6@2V49^E%N|1f*$3u~NZ9Vc(-*2V~) zjb#1HNtk43>sO6lV7UA8)oN>V!XNtPo^FJG zIr+G4$$c@1^A25H{gCo^EP!`{71BopIymo|u^v5%nOrX+5BI^!6x|sj2Tf|uYqb!F zY`7yWx>z1&7=pFA{2_75+uuLT`e}@Z#eH6=6u|EX+&0A}?VpsTiQepFP>*O!%VkH# z;6TPCd2izzNbS0PxxzPMNTH6t?{cZ8&=Z)>$IhkNfFP9_9O0V1o`IE!l!(TXTUdd{ zWKRD7CMe%Px1lt>0C#r{v?RZQ7pG{45W!$@s=n(wcZnXuSw9M}lI*t~bc4QY_QDbE zvmV6^43UgWi-0@6Bu3_*&v}~`Jk#Pa*{XkUsAHd1F9%M6Z(6cUHYZrpC^4?By$?Q^ z{|Fg!E_wcMN_r&{7W0)5U~IK_+~1P9CO)7R13xsDo)Bo2woY3L^Au`oGd*(klzuXG z@!07s;QEgDKR5h!GF}7+UV!(SWTDluqCKF* z?8|E5(BtG|o-pxw{ckwLEgu{r=E2OQUE-PXJW_g0R)VLK(({Jb)9oWqets}Iq;=4w zV4nnA;;qh+R$nyXC^3F;?KQ(|LKV$XX^^awoG+8e5wS+3$)3>A!~XGfv*H^!%gC$A zg;%jnsZ)#)wMSj)!NIyp`FGzR+}!WK6$fyGh1+Cng#2K#sjG%ZjT`!$ZhSabKG_ib#!S)nrTfz?sk+vaS&&x%g>enf zML4TRi{4l0Aeec-z^?cP#k7%ps3^pJa6^8VN#ryRans#*%8oX#35UD-`RN@}0z%-I zB_1v|r$K-QB7g~Oz zgTY=cR7>Qc!Fo5}BzpqEeXhDrUGc)1Io0?j-^Vv+!&epL*2l7peC^0ziqE}uOZwvg z_cWLj&-P-~JkhxY`_1<*eZE*@qNUMH5|79V1QTr&P|)Loiz``OZI^E~9dHH4_%Z}t z3ok|wI?l&r#XP=JES=ly96oUDFSkkTLZt(PLdXsaksqaq24cicHfTgCPgIQ#O$>Y6 zZJNR#RN9QVu4?jao1g;Db6x`dnAbw#?_%7pVjPJrat_M;`iV0(hBNk1=Y%p+UlJ1s zmbQl4;X`xEvVT?zU4*OSOdYmz>P4LELwrk^TK}RGF=r$h#eI*u{%CE8sZp;pX zJZo4chuYO=dr->hku|Cd()aH%g-=Zi47$t=bo3!b5;G7Ob~wbVz5$ok?p{;ZgvH*A z1*K(bZpp9!?;{O)3n*uTlk}f?bE{b5BkaP0;EF_i{UngbXRrhs0*xu;?dIg_-DGFj zK+ZbH)hv{OhPi_L!);lNE?QW;&nparTumnKjoHuKnzh;xE)rWrdu_kcB3kiN zNO6s&>VqAiw_~;sT#J=&wluIJY({JW<^1k-#*eg!W3~;~&-RpesS5}`CkQ?qI(I39 z1A{b6tD`DwdYkA;u_ndu>qv*nc?07#W4#+mAx@%x?TF3`mp~>o=)bJq}NeoeSe*qt(dE7sgL|JY2tYPzLH<= zJ&ZYDI{C{9qlUXr_ymg2w93Q8R^@4**tV>oK#2*KHYSkSuCTR=exEI)Y@;>d%`omB zSjWF(pNAEZ*%9EZ8Ji0W*=KRMP?$vPv@#T>X879k{8cqq-D|oQ#@lfwMvpvJawD+{ zrY%ORWM+~&(uk5GaZ4&q`u=Hj@tDuHX(+Yv`I6;Z5$lV!@+B3e!m_f<`cfe)tYbk8 zzo126cm@WyEQ?fy9@liG1PV~DlLb0^{(2I2GeXIm@eG(M-&fsN`yjo^azy_UvB|GZ zD$B@_dj|-1W3xjJY#pd?0dkVd;7p|EoU7GB7Od1KQ1K4)uyk%|F~w(5)|YjB0DdBF z8yf)C?$A|p)3&gP>|8|nnLm-eR?>gQ;9{D_^Fzj|I|Af*gzGX3V7D(AN&E<}D88=g zhCnQLp(vgKf{K+@Vk0tH#D?7qIx?*P&Dp37U zgFLm)iE1{SKn)ELvC-mXN~`gE6;FSTZ7aOCpKxo4{2uo8lK#W^#2iJrkU#cX*#m4? zMt&{(Dl?c-yk0=c&zd88Pv#J@28xBBW6sS6IWNQn6PfZQkZ&>fiz`kcBf>-xF;C$d z{^|gg5xo$y2`=M$nE&Qej$KOMTn%5+?|&?gO_Q3vBpc;OY@q<=HvX91YiKy1c zX4sc+WX~&ftRLqqE3C{b`n0OkxLWaY^@99gpQ1fna|UP^JSRNT8skxBoj=Ws)mSuj zMX18JO~HN;{Yt)+`cA32+nW zVPc@#V$Did&Xt|m&zkX3&lc37qTWz=jQA}q?nZ2Yi;>e}psE79!+RP!c6hGa+*ww@ z$Z`DW+jlgFf9{h*dIRcNUR2*)WlhDe(8j-_ zl4%Y@q^Y4{Ttx6PhGWZLrQuhg!FcP~OLxGpmC>$+%qs8sSiH|qON!CUNxV|>q-g8) zy%0ZwOl+Y{44l9Qg|3-PWQq(f0=WB;uj}~Nd%~PyAja!l56xQ-%>|?qb^+!C%qfp4 zxRVg{RE^sj+p@Ai0zN4yfIHYhB@y*xoS$x5uX<{fQBRG38@xcjd_`xuGIT9OjlfC6 zX9noEH^LX?<5;+#$y~9P^F2nH>cOS~h0j1~7TV_y!{pn!0RO2$`LEsJXJL+FG%J~kD3q|WT{3my6 zZUuJ~=0{!3>emvmu+``|kyPPvL3Xu@SN({%_zScadI(PjOYi{D{|x|eV6J7a0lzAd z6kC=eim?j+peP!p4WtC1Rp6ze{42ZkI>VdG}%!2?u!L=Dp zYxKdql0p6Vgt+itnDtestX%#uzclWkU&T-#&in#iwW$zM_c=_)^2E+v@|84_f8xmH zs_?sU(l*EaNR07|)?C0kG)dA3gF1c4L_9lRd%JGp;+ETWniYb1Lh4)mvC;-^Gqv(S z>2#|<%EqzAT>(sxN3h)7a}r&mifZ!HEna{ig%{%QsqfCPN71ZU)QuTDf6F5{t+=8y z1P@vAwGpQd+xT~59OWh+xhdPIOjnONySz>-#!AdY#%5fl_1BJ#5yEdjmiM^a07AKSm@>#n8>V|Pt|Cjr zQ{(7SS?k53(z5c@@tb*iijq}FkL>R7=hNfLBo4lh$wakVwBZmZ=x_*pmZ( zI4T{P;rffLbTBJcX4*eqwl}&!UP_JVn|LNcp-N3gQ9G0IA2nOQziG<#?y5Uud_b8$ zt^Y>G4%esipPxFnzz$LHt!?Hu_h+#-A?i89WU_f^j=}in8_hP&(;!e!)kcnLq)Wh5 zNhw^;?XKthHm0_91s{7kdkV5$4_*gL(7}r`Jqj5+K_j@>Ce3!=<7Y;{B<6O`|CkS} z^@kgc*a|$Dgubo09zXWz9fLY3f4Tp(w0rT&N={l$MeyVEj~k0*DqNRB@;)Gv5f8cXf(yUJ4Fy9}kQ%-kXmhiO_eLyzCtN4Cq`%znlwl%lE$zP5!B-#)! znyM}?v_e`j;g3B-1c&c!5L-_(%~}uETRez}fp3H9u3T<#wzdwEsXjRHy<{EMQ-l&6 zY|}=7OM+uX-WQclXS!fYq~A4bD|ZY0JqTML9%+|`YpR?WU0A&oZK>gTKKT4m9rV_O z7LCJd${h5Cp4k|C^53aPr!PNw;)(cpqw61!vsZFE<2tj=@dyYGgrx*<|Bd+2pmWg= zZ+9@kcV_V)tY&mu_}wSxILE95G^VBirq)JntrpYF-hQU{&R={7()mo-Le98nSmNmTW42|5Jx=9WX`QAvgPp$UBxji?7l7^(z9Z};m4gJ{Lwo~;@2(^z32wY-e z5#s4lP(2TpU2~>2vZ6LX_3ByIDjE|O!32rn^$Sab1?yUB?Q0eEHFD&44_5-Fjddj3^+qghVIvnW9`L&~p*OZn>p8_ej$iQ{TMcsoh z3s=j_Hx-N2MV$uI3;c}C-bOji1x6#56C@8(Fu&Fwxa!wmL+*;0uJJwbGsG&D{sj3a*bHDOebExRM6mj*26ilgnqRD;G< zM_Wy#_ho-RVYXQGpH3CZnp=NNLR3Pf*R|-Di%QQW23z6axJ+$~vb|46f7vqsONw*O6;VPMI4DxrM|oolKS7xiwTo>9d(^+UWfYNGg@~`m31`Ur+sXL zo_w&6S6Q)sN-oO`*yAzG3y?vu7wYQHfhjRc6@vC{r@HQEGjWXV9cXTGS{9cZdqmK7 zQ54ZKKQp<$q%UeDAaLPV-NCWK_4|vK5a1rKb_0Yl}#bo4j# z9<pTSn3j@~q-@1Qaw>^8yHU`E_aNR!ZZTqebQ-^K9pbYV}#ky1(*Wm|;`2k)E^Z!;#L-2VIf>+powqd^-9V+s|*kJP~jP3Zd5#p}*Ff zB)t3rI)~O;_Es~O8#Vc1(31Y{*coJm^LNbnT9-?p<*`5Fr)@lgryKt&Ec}#x&N{wE zTWeMu2p>N#vtl@`RmH{pjcYZb)=Vk2`AHMp+{pY58}}l1x*xo}Qbf;u<>8cFwuRYH>wUSq?oKgxiqOFJ|L8{F zid|mY1O(>@_{CZ>Hv$oYhlOT7{Wp`w;(2DVXT|QGy_~fWax|8=KXlC|Qh`r72 zj9}WAvatLmuB6f9Q)!;+)|U<3_5)~>1oYrFY~E0aT_Yt= zq(_}>^v!%~N+HJjSbRsudYVEx(#&?acZ?!@bX|aQMj}%g9eg>j&@ z?c5g2yF#L-R8q${de!%ArN||@fWvvb2R|9hDgtca1<_XY;@d_pGT=eFE^Uvttun2JQEs(WKygdByo55UyjoH3^zL|YU zQ*1%V2c@|)OGICNrYY>fq<924OsQw{s+hU#jPUf*W14pd6&s#X%2 zXk#e*;7zu?xl4DeR@~0qwWGW%Y!SfO#HY!0S1uY-j^hfStQ%*N@gka%%`1(`i+YId z>2&tBNu)B!ZnB&ZRk8MtI|(QWV0{`cjCZut5=1w=jg4=5{qRU9X!QJy<(;n`H;~c~ zlHpWw4|Z>w75VIi;Bn|GCewC%@HUjRaX({lJ$fvKG^W^~d`>P#(VeDU+Ms;4QK#;U z%c{q8)Wrw*;L+fjvatUt3*XpTNugyhZ~tO^XNkX?+R@n^2ml1`nTN@fH#5eCoT=pY z-tX=;wxuxW3~XUW4FBwQ6miNh^-5fcugD{VIR(R{;TE1HDFF2*a8JJlCcrIk!3H=& zEP-*5xLT#Y6@n1#U(iF@3#dhck2S3@$%GJ~2)xR11v07RhQO?0H}dmPOxJMJL&uBp zCCzi!Q|1L*c)3~;zRwI0b>1ADSKJE7-4Xc~V!u)8=dUW{^UK5l25Vc_PMuE8q+2uv zcBnsI)HDu!RDp7F*WU1&m6bEMe1x^-y`B4){@t&_K~qVTt1UNBZlBtmb@Vw= zKeA&#XvUX#8sTh7q=pHS>HVzIFzKY+6u%hBv4lxUhsuX0*P=2tDn1 z)_s@3$)C_w7UF>>R{TvrG@}DCSu_*%pl--)!QE3LrK@^SOeAiC74=#baHej&*XFG}5FIi$&;sX@f=AVw5gLMu=ulH$=)wY?9dXK28^lI~MYD%0z;$ zo?X}oaIw7d)notF{Dn`n+ImTaXYGY^I@!r}k~@?Ud~f<(CEO|iqQ}(pT2^!YPCjCg z(PJRJwBFK97SBsu)6fbz)9Ec0^01(DUeX3DC95YFrar;@Mmwwls&S`q)3sFDV1uwg zA;bc*bg;il)DJ1%W9r)>GK~+PBRw_D7_}AlgJcsKXN>eHq2 z&po^JBR4w>d3NQ9jv(p{jYgS)$UmX$Y;x_ji(jl7FZNPHTcW-%yUYoZRy3q2}_C{6(iKg zfj#mjHro?j5_uHy@CQ4$#$&I?d-qr4ZXhGozD_*Wct4u+F)>UhUWNDYR|fq!-*%8S zfmSZwMvI%h^TtCIamD`%NFg1y>gvJUumb_xIuoT2E`LZ*s6o)I0?b@65`Wfc5599R zy-_t{rr~_`4SMrU6mNU}wK5OXHwh$v%Uy>>Qe!^TDw?~-E$4rzQy$UFODEYkF!=Lr zTG1j3Kc-k(o#%5aUOzhH?o{L<`Q*SKgLs}5Qkn*-a4#_UJ;wb*+gL6e*+{1S>BOoD zf5ta@XxU6=p@Etle|NjZ#7@YR4esxR3sPn`gH<+;{1Ga!-+ExELucLJNSN1FID=n^ z=xTYp!`5w(EyyF*kx0bMkg?MZyCu*2>Q2`iX0o%tv?msY-HdAdXJEDH@%TQFlM@J| z88zU3T9@~K_NzA#V3rvvz28{`Duy%4s~ z&U?I!)}$}xalUYcP$@f78{yyi4N*ZfaxW_;Gd8l5TCqWZp_?j6Y$wHabhysBC?%{bvIvkfA>2*8R^;h!>R1ADqh`u z&0AuY9`k-@tIn8BCoivN#ZH0zO#V?%e#VdM+cj>R0d?Wr$kj*AUK>D27_>mKYEx{Yc{_piMy zb#JwIxSCS@cifHyV8FjU1UxABLZMIl#yBJ?`@GqLh_MT1LHsn5QYzXYHRE->0E4HfjeDwa>Xl?Is4Mc(&)e1$-F2&-HGURLo3+RzQH3#hYFu6(xcquR0sppqL6i zsU+TEvO&DISvZeS#IKb;?VR7$lp$-o=n=OYWFu{^t!(_tbTb9Uw3=J?8wmGRmy5pd zY)mwa`d?P4L#C0_cJ^vzHAP!A{mO#xS9b8QeUiUZ+r}ziJf9Q1 zykYlL=a;NoIy{G3qQ-Th^x>OB#eke&aZz!@stl3+Xt|NO9QzD5fTyl^vRmPDS-*(S zy#-fRpp{okx$2+bTRDQqg^#&XIqf{Ih1iQ%V)B16e{+@I70FE!P?R z|4;=#l5bV~0LnMJw*F>;XDDRbaM9a!n?%U7Ww$QqZb$;Ykz14eOyB0!Tc@Pl;F1uj z))(nU&A{49DSUr?xiI~k&-nSD%ez0dd6(H-cO#vZ9Y_c8DlK{zr1zRXRN~{uALuBO zFh*0e66?SZr$5#q^|@_XQ(^)F{L|aPaqGtm`YYQBGO&f02D<-!Ou2j-o0xX1X+Q8R zl>3^!` z{Kuq;w(1?<(wfPweMfg>*J_C$GQVp!SBLJ2{Q%~7N477(CSPDO;lRwLqv`oLO5o51 z=O8-6q68`GUqD^ot2WX>ymC?*gqWQxe`&xC+7Cw*F_Zz&tMrKjlk7rQPU}tsP7QDL zuO|}eLj{HiucBx|CB-P}Kc1Rmitk9<&-bFwkB1*_D*I3(bx5dm|9uSyR=1e0Q#Uq* zvD|+-|FF*eTtnQ(FpRg$C-;^oGaDjjKqsoi2;Rf@D+;kV#WHn)2hXW-*qXlz)qVvG zSq%Rx&{MZ>j4j${@B{QuErOf}JGFS7CxPl6#tST^O<8+fRLA$wQ;cXGc&@sNSa{%) z+M<;Y)P5dcYja_ovP1v;u~Wl2Q0+eLo3lsB)sHbACkPT1`$cceNF`gA{B`h!y!Y6vKGK47RX=&W&p>m%!o!@T+5J11j3TqNHG|F~WCBwVa_tjz5QFvge z+y;9N(xbzg`g~I>>F0`KO!E{GX9a4!T3V_$pz9kzcuWgf3D2D|PsxZ8yK3>GxO>*o zu)f&qYKilU41E=E%l!r|&x;#KRvo&nM91CVvV*0(QOSa${#cKRUyo}9H>7`q{iXJ- zPho(3j`X6zno9l6$7w@g)(8s9fl$NMN3uUWzP1U;-Mwe;4CnbB7kCut8qiIOGFg$| z;E-iQl{iu?(<$VL|GHhWUDo8Jt<{qS^#{Zezu|y_iOF-Q2|t8`vM;TFY@&Yk=zMJM z%&o`RqBL8*BW6atP7!|>1Rz`g#+KEumDYL5|=KHOePzJJn+q?dG2K zU%rJZ*lYd&n0v3NCetr`RL4kHeOGzRn1PBln6#)SO z0RbTjNbfB`NFpM=NiQKpdQE^t0wE#u|HALwp1ZTo`rqavYklv#-(8;l>}Nae=s_(! z<|<7EgES!DuKJse&0m?Bq3hBovY}6GllbW5hKl zpXg8>Ri9D2oWKp<%K9oK0%|c^F-)@>#<>}5v>0DX?#e%Kf1f)+9|<&Oda8?!9vuVh zniKvCwtcrI-N7;aoioUg*BAX519ep*o(v%Wp-lnV}yn}`F&zeDSUX&&6%^0 zvPqyc6q0>>gRlS@3Dd3B$nd3XWT0iYw9gRvGm~FVU;5NHJu$-SF9=+?r(fy*EjA!j%r{l}Bv|8t;r?TFB{-G!}u{-{27Ec3`9NOTkXvZ1nGwmmSg zu64D<8g@nKhNZFY+b&oM<5;|yt+2F!;`c?pKb9g;+z>k~H$W?%<#erT>30av(eytv zBJX(2x3@m0?)Od!BVMcu%{LenNo~EKVJXPed)7IcJWe*|8TeK)dfzR`;h}>mHWG*&5*TCzP^TYF5r_R(?UKv^fLj7O2xdz8|KQk!)2*)5WRjcwE9rg#L!|UbK7Z z1rT^)4;ys2xr1*ivvso^HjgQj)TW=BrJj=+#Tr64I6qn!@c+W))x;|psvB)j{5ADM zHta6rM))1aChc>08!O>KQ?XtagEkhfg|2T5Tnb)iaNmB+C+5s1(g&V5LXB;wE6l!` zUgc%JFKbzcj`gzNuFC4$!HmkTuXZ^z^7hI|o0Qm=gf_35%>k=n172#EP8K)VeIY*! z^mq)Bi?p4@0&@SV4VWYpd~z^B3nouq#i+C-NY zS!WLFJz2ka5R((aBxx3N<(-dBz`mgY8-2+eB*OEO2*IqrfO1bC=unH3pNdkig@JBL z*SgQ5UyQK*O{MBwiyIHj3=ipba-;f7JAmRQ#U=m~uToeVS|eO&t}cZSVFhP+1lX`M zR_x?(Z^1)c(cHurpR(n z<>kdC9)Km4aTS!Zk`3OdmlTl?>v#f%Q%MqS1z{bc0Fed=<5=62{;9Nb;zYtr64pX8 znaFgBnz~g~bQyj0Zq~_3+b4;GIsb4!tvWC)klhN$I4x*kPrRE7%ZwW*mJ!MrRIjH1 z2^m8YA$OS8D5iNuRT0B)Ri;6{*KC^fI@~EfSE>B{#CvWPV)u}Z<@gac3qUWmZ`+VT za-h^P+QLd-Nlu@$Y8O>2?{_Qp z&rsX4SXf)D`pV?)7P}cB=sT=Z$V0-no9ghIrD~($VH4;{Vt%nkd&PAR68}Z^X(c*> zENJ-5_-4W&B>jx=O^OPSxy6YKM-wu~O>60IfVV(VLkh6uF7#`F7*E>5U@+gL+zKrCJ5OE?{wN%RJgL5Y`e#rvt6L zq(x}UMqJ(+`aP>WSH|1lQd^+r8Jv}p7nb1=yH=J@a_}A5Ps6D$PJHGcDYuCaJ#FsQ z^)9sA-Y6>Z1H9KhQmGl)Ni5gckZYWTs#bypJV8I8xu5-(Y>nom1Ogc_e!Fg zhjp;q53M!}DVWoBVow2c{d4bh&d8o`WI)mE3AV;sBjW=}K%P&G6pNn*Z_wiLB8-4NwgZfF9 zL62J;JpTZ!giQi5Z-MSHE_dC5*_*%-f1S3@fJ%2%UewnHB=LRkx z6RtooMnD(hA-_lD_a?_re_!5+%XGSJFgm^;N!m9~&K?JtfT@LQRqK$!!TAC~bsd>g z`uA&okDTv6+jWf!C(D-%C19l1RS8pLzvCtx%)RXe0}XYBTT2MWbzr-mLpRRfI2wP4 zKj2yM>A&|U_fsde+rdp_*$sP)`hSPOOuwH~&{7Xy?YJ!hRDO(ttfu;^EZv}JX6BC& z|9t7|o+{vf-z`OIpew))l@6w(*5jj)sZ5hm_QU+;>G4(YqUbc%-*s`PZu>hd?1$v) z{z&S|?-poQMd2hVqH^X-x2vLdg4qon6ZDn8Q*K3kJ82;F{CJnblFF7~QR9xvpzx9E zYEjiy`lGoEt3B-49tP?O8!nj9wxQ}G`kZ;DQBw`G<0dX)d|BzWQI-PFhj>AYc`sYT z_hU+|uie%U>&R7;26(SHZI5Tl{Z4ZdDOa$>CWwe|PG%LIBO9o`Dru$)0ycUh-o@@00Iw4hrzl zxZRyC0$MCn3PvaEKy=Wol#}YE9hM{0RL#uuN*WKY;Q)PR-Pqwy4#QHB34D>`_ z6aBaOUIR)}$0anD`5JqLgxjA8E?pd-@FMy^UMbD0N_6HG+dXy9naGei|AC17Gs*m? zg`Sz2(6PFDi+kJt{a4o%vsgVDJIek1ZTpSgegn_X7+<(~+3bGwHLGa3J1WCsdOR%_ ze@v{E==8CUQxqz&LK&j9Q)mcAwkvyf?#8r3Rmzhwgx`hwPsLiXmz8%FcjGGb&kAeH z*By8EIXynHd%AhGbgP;r^90%y;ucuP9M?pjX$lNqXzhcYHayy>N`dP0C1;}zWK^{8 z7BU;I@wq)uAaO>s`~;S+3EQ=vU!!(RRdmK0XO8bXS?FbkQU`Nh11rU*Q#69z#`wGLXL2E$ zPXVxQg0rIyiR_)%>fk8vnI$`jbdMld|?N)M_bYf5WX@rW;gG^ zjqiCMuJMwQk#dO_NJ=!Av3g)T`4hvRhkfHA~Wqs!iMU{nl!UtfFJF7UHHxwh1429~_`BRwQ-{A+4`}xqM-P zuCS2Wa(ZZY0@x+Skr{g8+u$R7Y^ODFv2&706dSiU^mGl(_m~UG37?^l3*khRRjjUj z$q9AbctCia&;=44N0Sg4yBW888J@2~D0b<~lN<0<8$%B$8B z%-BIeneuS$+ccX6P)lb16pk=Rw6DAx;j^Ba8Zsp*BDFZ~;&ovj5m&QdO*BJ_1M zhw5D!tSBArq-A0Gz$Dvfr)48avwBvb!?AG#Qha2=nRrPecUtpyk#k=A2B)c~ovjw? zf)tNan1vidKjT6A_Y>iYX-o#gW|p?j#HTIds$HtHkTt z+~^BWZD-wow(6!Fdan_QV=^LKcZidCZ^lr_M|<45MyY&F3Q};{G|D6RqD@q{eP6+P zl&t&HCc{8qp>n${rXG9EtImdg8JIl~!Yjd0Q6%z~@*-;Qjy9UKYuv5iia!x}%tGvT zO4#cOhp@>2oOkp^i#T{E>hJ8X=)kytIcNV81g6wi_6n6wCCNK)dN|tyDylMpF47XISKgHyLBUtz`A_J_K5kls z5T5LSQ}QP2N~xn^v|gRO&K&XFr)k$K`i9mLuBkkNrncRXE%t_Mw28-&%d^T|)QQso zf1xR*sUHyG%is_@ke}Ki)9Z`3g)D01o6FWu9`;21?w@slr2Z8H^F4thQsjH?E&e7U z3`5btqfk=b78T~`{)UADQ1NnQMww$O1@~f7krMi8)ln;aCdmyd)Dsll`R`HZg01fS zf zjxG34&NY<6I$-&Z`A>XCU9jMUw%^K?})06v}=_?Sqf41Cy z@jq8;W4;51dK{1KZ|TrQ_V!m*DMQKljjRcOS2DsoIM)CpXk7m6JxuOcO0Yztrk~t; zPF_7kIK|pLRbV->Ca?~Q%cSSbfDJd6LvrfzPCx>x(_a`PpaOc#@IY|p zsfyB%F|A@&bO!rjO*+*6MMa{3)P$(0>Ie0*l5PrwSyS;rz3ZJM#8omnU)&($D@_+b zVW1u2wgJP;C3=57Cwxa}KXt_fpDl}CjIo(0#hS02e~*a%u8O;I&tp4L2g`;WEw6`d(*k>V>EzEfj2lf4rRJKeeD|nAx^){(0YF*dL?3CMkgrD8f~m z)mmc~4x}lfHeV+=P6gMWv`dO(9v*DqOSokO-YV(8JrJ1Jf^Mt~vUr!%`>xKS_)1^h zPP+>zVnM2?)u=|Pl`(SWK3KO{Nr=7G4jSWJvmcjS7`-3xDQOY*<030ITocsQA3Lza z>?}L~+kYqZk>oSfMc1=s*WfYG5}hnfj#2>&aZ=7 z6njtzBDt8z|G%q#NB?gltren|s@rLy9B0v)t&GqF&Y${5xBolz_<+zdB13_(B1`}+ zw)3V4R1@Qkrzs1r3KS>@SW?SoQoas1Q zVG~mqb#}-ByXk#(Q`*cb$=1L!^0>a3#A!fOxBRTL;_hf-^cA^5Q!Zxqi2P|^p`Ia1 zV{`1u^2?j3ZuDHBC>9yvLj}hR^KB9fZ$>%8qT z**RtHHtzKE!xK$iZ?aDK4%bw0%VK*eEBKfhy9~fS0eJ=hoI$hHTo`0W_}F(!HK()u zAtFnFzbT|!$zHy1xwQ2o+Q$b+>OHBOgQu3xO_j;#)r9hno1ZxGp;O}fBoT1Q$_0lZF@kgNw8^U8W1%Wa9myxsXjNaeY z%{iaj7a4D4Br$8=o7l*JCL;3EgQ~Gznae(rfFTCNbKEsu+~E4O>zund|EfAFX@xI} zAhDzNU9O)_e-^-)YFR(YyHk(hYonHzP9cjiG?qp@4>l434G{|0mr5w@9#(O`M}Q5Q zYQ@V5@rrW))D`r}v>lkR6+Nl*1a(b&g7L!F#bboFTOudl)f)9WW!7YfS?-T(qYKtfl5KB{v$)Po5?zbAD# zf#CJt-(wCtb)>aPjr)x04vItm+i9Xsyb^A$E>0c;*MHt`VdG-q@4R&@*wc3#532vd zPwPCATj$HglkG)znP-4M0<s!p1dWnqrr zZbS?R*)R*=bmT4n@M(;mOb>xi#7L%}f3!6e;&j0N5hrYZ<>-W$TDVt!;86}}c<`vexrk3UG4$PV zEjOhdkmFc57}RrsSp5SKs5&nmIIDOFk6h0S~}{*)&aB^^7}xqp7Wv9Dt0D zuiHc(9@DI+tDl7A*ZS_31UwtIuwGbI3P_HU<9B;3$GuF%)>0l;HwP%Q*w=y6pVv%c zhBI6Q#8PA9W!Y!@)30+`m0iQkymv5p@I|xLGH;k1LpR7O>VpCze6ct zyTA*>#9&?$ps2!bS%s1)pM-@};O7g+%zXO#$Ez3p5(cBrDAi=-2Rkn>dRiDMjcKKS z5I-1S)Uog8oL6G!1cF+dY`PB9SjB3pg5nrO<~x|akHb)HHCf_oS*MKtg#q*z8*N=& z;3!Pk_FT(D=F{s+AHHk*S(a)g7;%7`A32Bm{+xv_*KucfuqDbH_g+HUZAZ!f=$PA3 zg`;#9h)nI+dYNaM7P8x{a^>Z_L9EB%+FW z!Z=PpKThuClZr1gN#lUQfbFM&yLe=iTt272!91C3TrBntg}sbFVgZxPx`=7zr>2hYRdm#<6*G0W z#^Bq~KyX9)pGv=wqA=%Tk&P1rhYt@=;JDt>%5<|ItI5Y~vPOx6=DWu;{CzDbs5iod zNhD?ge!=}^c6yTfSeTfDg>A(%bua0O*E$;ckZo66hxdy?S&xcuY+ZlY=W;MUz4vH6 zZhtwhovi(0!~sIm*2A+T^H-&OamAx7(aONU6|%Oyt>yMZvxkfeKfk%lC=*4p^B$bY ziIdG#5v=~PijmeoU|YOJX~e%-qhp!wq273%E?z0`f zPJvQ`A|?BL|A6V=c|>h*n-6ggN>o{>3uHaKwtd9dvboiIvFG0}A0E)Tr(+L-Z6pvj zbEZ)Jogo|L_&?YW`cMjHG&N632X;&fr&{As5Uy%PW%G+r0QHCOOU%N^E><)9A23 zZ()wIOE=QH*k5lNS{Y!J_iqSsN)0C zkJ))lfS-0!isQzT*N$OVB9kf`2~N(8oyTwj-MuxiZ)Hsmw?*f})Ww+!Brb=gjaFLz zY;TaNV|Zy%!YqF;tcZ1wy8iQYDZLEF{nG)F=>bGMK(6@i$8m({I%o53LhjYHQ z*vtab<5}!Ssnw1An*p`w-$U@T>%E=!(P3l%7F#OaJnw*LK%m^U%&wbaz%v~2yHbYS z$*lk2ax%J2ICvE-}K!og^pK+iuzF< zON!T?Dv=^y_QLDH%7#|&$0ypSupdmVtYWFp;%--J5U zfofTAuM=%wX3QZh{-u!PW(;I0yMKPZ_;a*RP>=Q4-3m)Xn}hyWSv%)!QmsEraMrZ5 zw>E|;4iu|b8|{T@@ml-NXb~VMlE_{y%kOtnytUr$3h(>b!A@V1|J>)Q`dh`8#|^I3 zG7RN;suFJ|Zd*{8^&lRw?qxwvC=2MKz!CH!&cFMS6T~4e_!xMd(?SWIrji9W{G96E z^bs%G84r!T$x*1s$p0#7n|W5>6?O=xXME>gUUPH?AJ^&p1bQ+jUjj{3p!=xb5|^}V zxOD`t0n9LUnrt&|hdnC-ZQAkQCvYwDin<2ay5I0LSx##QRF3ev+uffS7r|$stKy&% z_Fz8UGPZCw`G6$ixDKsY6MawEEac4qs0Q(7kg|>yYVPj28n<1ykuc2p;H>O*PHz!W zkcVp55ok>b4s2tU_AUa$WLI=|s?Boy!1tP6e*v)q>B)dtiOIKMPTS5z53h(6pI!wKB!u>hY<_Q}s?v z!H=yznQ6~SH#6Z=!jad4Ns;nLJ-+F_=`=Tt>@ZHdxoKQ1ejtef19Aml2tcd;?@$iH z=84kd4_pxO~a;fnhozIiXJi09MyycJktgoNe4B#1Y zgl5N;#h?GD=z&J7K^Txn6+Hq3F}KjD9S{vnDche;Q<%q9HKN2w@ZY2y`jL64!s4+t zAU+CUZtN$$;_%(eXvwQn@LJ@@+#R_|A9Su9|CFf`ezGVVD|UY{Y}=e$)Y@p1?EQ*y zfTT8zEqU%UAx(ru++W+OR$$}n%C<7po1}Ki)bd&V^ClKP2%#EvNOL4L?8_K7=Su4O zgV>DGsN^=PG45TLwW&QXKm2Ms<}EiFxs%!+SFl?NT=`~sI=*fkPn1}d#gm*|M1~^c3d{*%xxjdVg3=7GrLajo6HVUo9y4@ zj?>Z1OPCwjmbnf1wps{8=)!#2L__JwP*{95Ruej_7Oo%~(=}gLXQNW($83UX`p#_y zPfABEyC+CHy(~K+qL|nQ=3e!%0*C*|Fm?zJ`WR1>TFGjpY7cDDQGqbeoxtu%hlQ#! zMPhZ4{{(Jst1RLYjxqZLq1x3eR7Wn#^msMownbliXq_$dzm?LK<#YnaimZq~w$Arf zJBp^y#IRF2PWCQA?Ai%U<)fovB!fw_C#ojDI43^!#%{mUT$(RO%#mfU`zE?{wcIw) zy#45x<)6c`+=>Tc$o>(25B2?B$lUzm%p|!x@)!6AXMY!CTvzwngtQ($Ijw2Wi!0vI zbH93NC;6z=X^X}92bQHGqVjf^{l+iDT>-ezgiwEADMh=jH0A7YHPrWFfCPJi!Msf( z$!#qi$=WR()%45o-BEbzlT|V~!fGpaV@q`#)KxI|=~*qav`g+et)rHD#{8DmIPGhR zN8Mr%ZTPUHbv6rv0;&dO)xJlN9Ru+XrG zIW^;1yp}?X7UJ0gNBc?LFLF~%nLGo)oCsOzL~{D&VW*>0yDLqmVx7_f0$ zo+~PfGjP18!wo`qyUov=;c9lM?>!nv%6u(}hWQ~gnpc5+o5!xWeI*KtiQaAqcYsX# zI1+z|?WagY?p~07`SzOE#X%R(9B1o4k8sWEM7RSy@{t=LP%p`r7z(B8G>qFmX4n%{ zQ8v`DnY2lJ)Rm0R?O1mXSv@+dp$~d_%4fTlb+)lFudK+(lCGn@m}tv$H0A&-8ylE= z;v@WGgryAICR?rdW{zbdYOWtU=j8*%5kEo-s{`Al(-y%q_DCPdss_*L(=XG%%-3pb zojP0F_I~UDkMsfx=aVz_Yvctu;4>f7KLkp!oa zkqUJ>hj#>e9u%3T)Ox3OQYfiOF~=K2tdo3Z0kvQ=E0@BGk3o#^84~{)Q`yzuo8ndh zs)^4vxR3MSeEP{1(KrGRC`+HF8o_k-fmSbb7AW}ku65uv!rZpH`Cd*EQNE!LMN^pu z!j7o$b?pQR&?!c+V@2uo2>FL(c0$#Wzmw??T-z-=xYk?xg^-p^n8Bbv3KKT|!dv?@ zE0<%L+wA}GJef33Dg{j}y~*WGhMDgw)VZ8$xqJC{P9xUga>lum^e zbNW+(r2{8~qkn^^d%>iVryrL>F=#O9AX&FQ%Kq=rvkdEerVdJ)Q~M+I7XWT42C0&J zd2Af0u#ZS^#dS3j%42cpY2e!)H*d8-%?egzYlGrLx9qP868-Z<|J>aAgFFG|roaAd zAoWdYZ>FRI=gtd=O$&wW%;{Uf$$EhV^M%hqJ9ivw9qA3sSLCfWut3jd1yN2F6$28# z%X@`*<>bAJCA_8mYbvh6X_ki$o{2$R?zkY|Tt7VuNZVxDAhjJgv5-Im-LzU6W_nax>)C*~ef!^c-H&sPQm&2lhLV%mXdYf0UwFRnuR>|p-S(=wzNIn*$zGBdSM}`4 zpsclyot@Bnn#R|3jmY2waOM_Fcw!PsoB^@LmNcho)qCF1K`N^iHOa`=MQACrF{J%M zq&37O3nk~1*spzL`?Tm$hIxvNxMb8|hvflkUV@p^xA<+^Q@(3Xrr(hsGCua93ylWV$z1~_4X1@JBHbx z0H=pPCAV|P@b(z`3{k8)gv|RXz36G9Z$^(ZFxKKigrJcJcl^w=P=k2qDh4 zx1&FhH_OWxjjO`-w)wyaeeibwkJF{=`*H??b_wT`+`UjBY1=G&3+HpQ|FohDoyYpd+D7gSvJ@s{yELN4Fd&RVI zMFRm@Ck@ok6<=(Rt3n?(G#?IEU%9Ho^)JO=cEz^(ad-eL`u?UdI^K^VKug`FOl*?{ z5$u*`hTLEl>Khb)(;nRb`g-lP+Iok4TV15FCloqCm9)}wMS!xONDeSptkSP&l zMaTy8HLMH>;B=W+pF20SlSYXd`#MnL)(T+owCHQ9`tym52)Ik3OmSrZ{j0E*o7UOR za|Y-2xUQ@GtNW>-P`TY${Xw#jYTNQIVJlT|+?HorW{z;@m%p~@;IKVW23&v4#&>ql zzPNHk(@U-w492QOlB{)Ke$HIzSWxK>E_#9DX5x1@IJ>JG@3a*rK>uhK``@n7s4i5^ zvI*XRbZV*ayGQayy}em%cw3ieJ5Ba0+_2r)(D09&+bTD5%?bk_9yrnyd&=|Rw*L+- zb<+o78K_>-1x#ysEa*=iS=h;UYCi}sfxd#v*E)%1G7}JkPD%9(H0hpVk@?;ieRIno7rpp%$n#Q*(`U>5{ zS6J0jwW-~YmqtdEAauINnWO^NY2Mg61{8UihRsz>9PT$r>=KH-X`Fns*wnbd!plta zH}G{sEw@cg>*+r&W-A+dROSEjzx3CawwWC*{$Xq?|LwDu(q?lAURCovjb*V@{Ey*h zONwUok9I7iNbj0g&Ad4wdU+Wt`U6+GTCZ|(xym@zBaP~o>RIRMk$%Zl;+lj3WI|+G zU)*c(-+{KDSgY)(Kfjn4>78U(6ElZsFeVu#7Msj&*YJL_KK+YIc)j0R6>buc*IS(3 z4X6Bx#G@C=CVMIGwB3&FQBH=ugM<$iN2Sg6yT0sHzxvGLE+pA%d!#M1xY%orS6ue| z&Ag&KuLxt^2aQq%D?NRSm+b;n<5a5t`E{7mxQItBw(lMiO*M4FVCv4s1f5l+_Dx#K z=lfKv94c1oR_df{Tf}$tAUaTyAnouYsOzUUefn0$K_>v%RrLo&G+OveW>G<6v41Fx zd34gj^uuI*P>gx&5f@)|Ufi{J!?bQ;39n+wxc%BMQDLnOdsE~+@*Z+0S*sBl>pl9N z6gCrZo zJN-QF-ZIJOV~>WE8iza9-xY6d7w2;XB8vkct+nca8$tJ3Fn@;n?Y;&J5xQI4Tp1<{ zM5Mo$n^*O|K_zw(|CslfH(%wNz?IaN8Sz9cYwTTOR-zki0J3^NO)F?GAc7mFfN1_Y zeomT>K8hEbS@uhQB)yKIA79fl7V&$3-)nQk_H^dP$@@1xbeo##Yg)}MrFq1rWI2p!m3n zgd300k5mIq$av_Yat-tC-Cd0hTJ*)P5_$6=9PpO2z1g1;IujG%%`bdQ`+C@&3r8SU zhVR>8e?DG>3C5b$KC`dF$Yf6OY{Px;d<+!NAyc1D_I4UHk|DCW#@#gKw9Ow$1Dj3JaGJ8-eepO;6dz5EEuLu_$kt+!k6Y zISy2p>t#1#m3}M6vjMi?5V_tL$E@7~D`v!mt`7j?Uj)rlVY8|i&K85}3-_drF<9@q z->iQ3+tnBcxRnmIglLeK8yyO9t$tFprLG|n<@L14+K9m>({^sIrzVmeALUjU%EtZ? zR28Q1s;BJdTc}B-O!>ClREeE@vXz$ln?w8C3c;W$G`1Wkh@!@p`)Qi2c(}NU|L#1B zh25E*RBtVvbC_()8-eoXmZYAMcGN?;`IY^A{7tWyIJ_^jrOV-u*u<6q+kF_lE=1GaF%&^6Gvld`-MhH!+NENCkDQ&0)m)BGjDsvM86 zEU;*FdDr5V*jD-GlBvWqTJOI_%K);C#a_s`V0`qc3~%k$oJRAP`fsLn&$Xidh*BxU z)LU6A>C4oZxbFH3UPVn$a?%UTEZWVkRbIXK8e7lOE!M=$Z2(=8 z_Zi;KY`xu`8nqobHM0_U`B)z)ApxY$f}!TGGZ>qlZr3rXKzTMEf`QgvFca@^uh8X- z`|Q=#aYnN2foQ$#G$uA5G0sGXVJas}K2VxCDmo4>EKoapbh%jdTp9JQY$V?_O75H{PJ>Q>C9ZdTV;fr><7;!@``? z(XTU&S+JAS_nwy8tu^P9{ySt?%L!%+bG$`C8j)X7sfZT9%h@9v)oN^;2rx+41}%vh z6Nq^V9i9{{KXX*TFEpNvo!jTNVK^E-yRE0M+GlhgV&#zbz)mA-tJBgevJzOs$by|4 zyLGyGI=Hm+#j18v?AkQuyQ_3=s7e21(2uxVmAlbbSbuBl-pLDot863|r|N%Rv0ca% zQSV6JSHfcxEqG+k-~O0+=AZT0<43IuZ`%FQ^LXLor|AU{OkF0SJh<9#!4X_nJ%u5) z8Lly1%w|cCI}C0-V4J+ZfA{zuFT_a^1BV~|ADNszG!u#XZb*0d!@@TdXr7erm~L@0 zbjJ54HSlA^u+A;=rNME#jSZgP^^rf!sX|csDCd$C>1(;MF3uH&PtGNA>IGB<_P`t! zil{DlbK4En*{ux32eug}OxwRcaN046x%k_iZ=SJBq4rHN({ZGU{i;Ox^lb084r^R6 zUXEYhP@&cndm+UrE?sfJRkG8$O8Nd;!sqDII9BPl?!MVpL?}a&rklSJOHSuJ2)jLG zJH6R?8_i50-ZK42jAUl5Q`bz$Wm%ElRNkdQoIi0JjHp)(`j8%fBDQ7Tx7}?--mxe} znr`vGEj)X{p>hT5Ucd$;elJaA@L(Xwb2v0$#Q-T#>H9mQ>SYpY!!~3Is=6?}3GCDy z9w!n-_t(0Et9VU6exJSZ?B;@WL17->f$YV-fUx7Njoor?cv+j~`t9i5#Md#ktcn)0{z zJ4?Ha(~7@mGFWXUy=L+zUl&+tKsk;jB@w61g-;A)W40vc(2qmiT0@m5_iZCU7dJ@= zhmpVG$CiqEVK|({n5~9gmo(*TdNEmDxI1GiXm8Sv>GEOBYPhG1A%73e?JJD9S^$+6 z6qRTtF+>uS0KH&cpH+)U4%9HC*afK6_WmO6NJHA%oI8p7fK&awrLNAA+CiP}nB0$fN2~y)2=OC4 z){WO{fr7~?u`nxlaK0+pSKE?q$* zLrdZ~h>C{aWT>^2)$G<*&hGXT?eY02hNwBL3D2bRh%8LQFP36nYsQ64Pm_>qApL~w zFOwJhE4}RMk7*PoOG~|iAI;^WeS)2x2@%b45L&_KCAlh9#Km^{HboFJ^9UDI?8{b9Lk;>5p1|lQO_o0Gl?jQU* z%w)fphd86OHbIgH35#jC5u0ZhO+SSSg|CwnaOTK!p`pg)-bs*XHJY5&F)3EQGtjfX z&RPO^IO`4zb&9NPX4vbuAIukjbqq%6=jvt~j2^V_5BY!$U8OS%00bX#{>p+PmBU;<*iI+#QV5O+;=K2B-*c)(^(cs%I=K{ zi?-ySX0A{2JM?%wEvvHs;il(5g|}EtHDFRsG}@ti6!cHHI{Oh32O^U6#u^;UCXo5A zFz9HTEK%)7MwIg38(|ImoK!DHSqKi{V3VQNc)j{k{(yc+)%YIY!S1=wPe6$~v>~GC z=^f0s$C7OeUv`tmGn0*p#Fiq^kU+QFW(*}3d=tpw**5(MEqVbxhwHo;azCk5wHnYm=#xt=~8K(qZx3~mS zUCb$1#4ce2S- zk<2I;?%!SHiy;VvD9j-A*1@r&msO?KpdZ#;8rr%hbp1DY=M@QL;TbfU2(Yt)b~va2 z=+wtfXzvi%+}H|!JD>I9{Oy14>TyAnH$Bu-#~YsoXI3^;?3T9IVMHXwUQAu&A@NGs zAJ1%dTV85+d&cx}2sro9bt_oo#KOzGbl0GT*IgP_i3h{gM&smNlX#l-4~ADDN%EUx zB^s`utez0v2`wY`Y$sXOh#WZ*kYZoyrSW(!&0y&6_>nt_A+K&X9F%3t%oCgEW+l7A zR<`0RkYo7;h`iNZZ@d&za?Z_4WQ|M&T^dCaL{lczC#Clw)fE`)Ng^`)4f@L1BO9YY z_jvL6GiHCi`a>%3pb1uhHDrdcHOA2jSdXQ=krkhC%>`J{`rEyw8ssA?Zr@Q&bs%22 zQb|(qLVG8)v9E?$ZTS%1c1c>sH^@tRHNsHLP*cU&?0|L^yz8_Hp2g61RzorRp|@8D zhPCa}rkT*zPDuO)!FglOtcgAzOL*S7XyRRs2;ZK1xKEYw`gvC>r^N0l`*5O4@HI)U zi{jJK2K4^>UjX1>xB)_-8y!y;eTIY6LQxN4V<^Pj%9=#v(RXd%F8>*8=KR0wiXcaUyW4>t3(%wOC!__`uq=E=*&RLbQY}q2 z5BHtX1^&O+kCP^h`aNJ%cxGvev`))9q#0*>?K@=8P7eFBZPqj8h=qlP)&Ev6Rp&L} zQ!baCudMWb0k6MoIR$=h-CW*$&?xvD^_I}Z`W4?S@`HMMWEcJOR#px5+dLq~pV*5_i^gMh;)KuW4FOud?}*m91gu*^51PQiY=+t~X;>x;%?@DUee8 zGs64%zyApT8+O?I2zc!vttgYLX6J%Zv-(#}KkV~k!nMrJ;ox4#kQEMZLjBe6Y3lczFOBxgI=5BLNO`)xVqe;T`;aV1> z+pzCp-KI?(CCXc*a)U2nx!cct{&P>Bk$a_Zly26vpYex$yQn0PZAx_Z?IJy7Vi-5& z2_52?fx9!9ucXXu9^{EGBm*T)k&N(>ygA!IJEZ$(# z#as6c8aadIFFuC}*X_g(`Tg=u^HEjRaQu;hK@kEn+%G>S-A+1k!B|m+UqU0TAS?T# z>p?HO=|#t%`}YNY#qUIP{O^kSKBBsIens|YZVhL~(#W5Eg>g+GQfugvYJO~gRo&Xs1$1@M-Tkis0+>$Fw)1aH zcU(F#Y-mhzaYao>jW465f9A#`;Z9v%2YwxYA8Ic;g-Go7avO{kH!}fRaC^2{DZ$PO z>5_16SXs{d9Z9>xu|^9b^>dNsU-06Pz7h&JUTG<{7%@7qE;8G;R3PZ@?01o89s3>i zJMx-CzC}W_ThY^n)IbR@Geem>`MUfEUw5fIl5j*vlKmG^JE9sd4!^%zikWnHVLvIj zaT(F?1|!U2*RI56{}^-c^>Bm9EjYZR|8#MVp%jYe<>(5J3hPC2J>+{~6uS)n=k}Wc zrs){bbS`fyESYW}=(a=d+%Lo;BslAj`MjV#y-*7&o3xTvhR8a}GQ%r~HW5`UmD8N3 zs&N_3^Yfay?vaC~GiDXQM#l1aTrHy&poIQ+=&wMk2wGq~165OLpBP!k(QTP{)H_pK z;AeTupfa;DvyoI7|IMt-+<S-k+D0cZ4UVZ$qsr7Ew8IUNZhk7kyo7Ni zHW0Ed&JXu+UThk^nC`{nuWvU{BXTWDfa~?7aBl3EgrxrtnIhhR=Jg%ff@`vBo=*Oo z(9ok0D6(otqK9aonAn&k^{y9ERxrhyQyM0Q5Y8mzzR7<1fJa!${BA=H(ms^Z6L8T7x|2JV`C=41Ya}i>)*Vk|I*^80-Og0G<`-Ww zq%6c$F5D^0OU&}Lor|@NIZ{%TLG*>a9IpUWJHB=@(_ol&H7hT}$0sZ;_AylC z`PiuOhfXWcz?6K+lwMb_uZ5+hg()FjjcKka!LG@qejLD+v&8$Nq+!nipUEi=Z-bRy^94aob}rJw<=hZ{ z9Ca3ys86fjRU6*|Sm|xxw}PUsfpFP-S~|=rWPUZv-xpG9W;xhxReeLaACElg5T8); zwK(xaQ6;awnVAVi5G(dSLq9Eg6O}>$HU$d2X?6;CVFye&4DAn}%^RD#bP^ETQtO+{ zDJsq@FKPe95-e9H8lq-^MFN&eIAftp*9*ORoZR&nIot#oJA1qt45SQ)L-sHw;a7e; z_OI}wKbA#E)jJV4QhPjhbRNVBe9bPO)*OQ`sGZ&>jXaw46uITrIbUR~<#(g)Uv~oc zbRNi{W6WHHyYa{MtSpS>bPXAa zl+o;S*Zu#7|H*YGHiCaD4z=+7t#@AW_W5TmJl88*&MRf-`rduZfA*T*;eQVux^-}u z=lSBmN5Uo91{81-Ze(kt$mU6)M~`E3OilQGs2LtB21n&WSf^*mtU6iZ45n>k3W@SK zgQmzX{QLFW;N10o^6SmrFZuUzfZxyk0O(T97_x^WnUUrJ)lPV4)QR}x;3=d>rKX3s zaC1z&7s^lX0&U#hJIpzxJH%_UkY7v(eB7EQE`9}}VEABwTe9g@`vE+6UK${F6BFtK7+3N2#WX4)HX3OgYd6(!}pTzpt*SWgT%||77Y2kpsGW z=NKY8?M`*=jxGyD-3wQ<)5|3-EISR1O=n+d1IM3piVQx=kqJ$sqW%wa?-kcn_Js{I z<0xZ6MiCJaGm3zKfS`aFA>*JR(o~v=5Gm3_q$NUtj180)Is!rvln$XLK!B+9-fKuA zy@Z5L5(x1-;s0H~zxVRJ0xme&XJ_wKp7pF}ML{m08VZ_OjFtD~RN2~KEze&9D>!@D z_YqXMVl-L&2^YI6ltnC&aQ6F9CIOa|4cF9*3%O?a@5RE{5Wd0A;x@3w*YxJ=$LNgY z^^SaWfBnP~^?L?G=v@SuUWT|hsWGP^361#N6-KQDbk|67KU-#;P4ESY*|FVLpD*px z@%kF4>F`B1VPKI*<|kl&#w36x84X`g;=H4RHvs)RTA0FU+Q3-ljVE1gi!TLk3$*Zl}UM`%TBALed;p{Vxqk-DB`?zQH1H2F%Uf5wv5m9{VXb zp_%Ee9Pr3yofY-QH7ZnUBMas61kj9l^b`Go8BFb*L-b%2cV8C>t7{iEy-G;J1oM-o zrevNex`PF|y&5W!upniw$F1@)190`Xf)(I0(56~a3sWevW}!gs(e`zb?Z3kzLu`F6 zs;JycfBWW<_;kO0-Ig<7*eYwbCLdpLcRg`}vk4GubmnE0BRswNNLs++#a{wQ-9{T~ zo#Xg0!0*1|p+TL%P-OPOp$x1jH&6TbXG_{1Mqvwf1{xcpn$T^po}EX`fHxBdRHCWk zhRJJ#+t(LIehK*4j9R%uXoXkpA$7m~TlnA#{|$yE0T@3AokVa8{D+QtwfAPN<8V#A zoZms%af8ADvUEN8&WOjSMAfGg6=S!ApPR1a5^duyig-KP#b&Wr5}!P&mYY>RaO!_{ z9fH|AFbF+eIx+gQkPu3u_-;3X|AB_IeGxlk?oLdw+1xO1=8dQQJ5^_4BCL`Y}w-xs&@Sl`f)y za{)+kmatJlc56!Th!h^gw+B80o-V@w#>7Uusn5GRF4A2K2oEXxWQ98KITuwCnB~r-8~KN2||97B>&-RDPdE>fObn zehGXDTJdbsEY5F%!O|)r#MG7`!ULF;RrDx10K4M4HcA4GbL8cJZv*e^?L`5jN7clvsvTo%SyeCVSalx z=axB++1dWCDVL{X@9p2R(KmIZBtiow*2*M8+?cj_OV=A60&WqkufN&{V|3KtoIeQE zvSB8b@`%lkinw7^mNTO^O7>5LwxV2Vvi$u{$G;vHy8hnSufX?@w^zE9XEnLC=#Ng; zzg6*|T-&jrN}~GEr5h8v>`>*p9eRmWqv_sEeAN*KX9$&Qw{mQFJQI82dhfKmyW8bw z>8_F&ES>h#(}(r}62KcOVc&ysj%dY|ce~1dGYBmaXS`r@TF&T=^T}E`qPu&kuaz89 z%y(N<{pSb5ol!?u(6uV*RerjOI{cuVm;vFw&`@nSe@IhSddOMW!IRbK`66QWDzYz6>ooTGnBdEl$U#0 z`d)}I-)}8$!@tqOw9p$;c*w`&eM`7WkP^7znL`b!f(Rq@IF3a2m8zVQbdSjRo)#WY z*|K^5=K7|M7GZj~(DQU+MZ^o|_~fNP9zKHh4cpbn^8zgVfQcXm2Qm3=X+ll7ZvWK_JNZL)pz1t_qn#Y7AT zKvb1eghM{!W;wFWXwAVbrNzd!2#xRpo9o7EL(-b=~ zc35uxdUCFU>&3#v^z_Gh6OH_Y6DYzR24=`5eKVQuQ(7%xyRH%4ednCfIz~D*EC?$! zc>DBbhlAXukoeN>^~`wXU-KE;x}mi%fn>xD_Xv#E)9bZbpDji zyf-U$p1)UzLis~8lp>G~R-~i}^x2Xv^oi#a3A^puUpnF4BR!SJm)oApbeb`*K%O}x zse0ul{@5weleKE6tg57QtiId}(_PNtrvX>M0~~2CtQk(5eHX>152s3H*SK@MSs*)> z(r8fujY6v>ik%^2y&Q;#%8L-T3f`Wb&EzgSluntwVe#aIL^e?>w!zeH@^eG~`*qbG zJ-+jNGT#cvQ1sSwvH`@frFeH-FxdB(fa|0s9A1~8 zS6s%cxAAHvMt=CBOZ%>KNL`q1fL)g>0p_-ym0E!DI!8LM!g+rOzOHN`@ekf0@Vf%L zXH_a^dI9o*;>!E5lc?B}PE}!Ct0f)?vVOt5o@qE|z-Bpm7EM><9#^qRF2mPPEbdhp z8SN)6&zDKBNFuwaSrdc6v1QwQa5$ic93d1u4ov@+m@ZS1b)Hl`;G^hwcDeTWO7j+P z%9T{dISG{uD^9*Ot$*-hAOB4+X&VDR7oeK|5>Q29vUs-xF$)n$JC;VvxkL@w0rI*c zeau=}p;G>8Y8I%@OaDn)P@Q@rCtw&At)YXo-PD_iCwqy5j*AAZNKjjOnQ}{K2jPU}NDd8pBkNsR3M%ZCW z%zH*x!Ux{&woLOG;~(Fq%5U7Vm=xWE*Qy5v>n)d}LdqZ&1u2;!x8uAqo@i=fzT5}S{T_p)A%G6$`ghJ7+I6fYI;Q7%N(`Ztf_=74kNqFNWVQ4%rm@(_8S{6B|P_+Q9<032`Y;lTY^ zx4BX5y7J)b{V-+-$GO^t5E|^)e65_Ac_nyz;tcoeX}8yzZ!V+c2!|TKe8Dw;v(F+A zeGL1v|H7H~cNg{p7Da;CI*~0)6#o7lyRb3^S|!td2>u`=pk4#VlRZE?H$68QV&GHGtY$JqedgGpIu{ ze;BTkt(H9(el%EN={9}k1kJ23J$8%vPtp`l9v)A#Fn?aMzluM#GzYcdy^;?{w4?@h zAB8(?!A+Ozsz-JYxIQqm93J?oo<7txFm<(RAg05@v0T&b{pGx*E-PzOQ)??t|0S73 z*Gn;Vz&Dw{S@As)Oi65KxmK?_q1ykxoNMrQyz| zca7VXLZ`n6g6xMntWD037+#l;t(3(qTV-ei2B?=93uuY_>Am-1O&G7RW5U!}`NoKO zO~;0buWZJUz0jF;$po)cACD=Cdqu-rS5v1MDrPD`9avi3DgU1os)hICf^DTH%3dmQ zn+DzDjdytNEfUKrJ{ncxOU%4So|kJr8MC+{Cnxv$QU6JOrI!1;{}D^>TsapaUMv$v z9T$t8(lfjBkJZ@dJ9BfFM8?LX{EP=Ft=dkidpV<+kG1kqAu;rz+8f|rG;`eKeB;hNMlz*-l@%s zyxRs6UD3nTG0%wvc)KO4ZWClqWDXCP|5Ktn@T7vO^q~lMTUE!$Qy}K-!8>a|SUo3& zB|e;EvC3!Rbv6Ko^eMRmpOi=zmR}F1*Lko;ER)d8ew+L$g)xRQ-X%q{Z0^VUcjt;I z#de^DU(rFeOQkw3_R`9amD#&op#M1u|C1__GdbUE^LY?V4DA0DJVh0J0k8i~iJOYp ztbFuS1)Ni%;k4BQtHW7Y8vQYJrWR%-`N#S|lhijGDL*a1Lk5F=Sr5#ab?+*7mZFz~ zf3!Mn=eWaQbE-LBo`G`?k{`(AxC84)^9hK_qK2Qy1erdnS@g_Lx12HaL8~y2;f^n@ zy(_tEM33EgbuFSJ4gba3|7`Qd=FIDRVMx_WB0;c^KuK(p2^X1uDU4+@OM!ho^Z)6=kbwB1}#$_;ua{w4? zQb!@%L{i9@p9G6p@X^XeozSCwJL62M%OSYDc&Qzhk+*DeHiaBdsqqFfbux)i=|#56S2bdYS4T zZtbXq<;31zeDEh)HRYGUD~4gnlOq$M?t?QLUoR0?U=J*1AYL6w%>!Sw|6J@(o{6mC z+lm$CZ$L{LeB(TJo-6r4g{EXjpC0lHs(eGGd>};q991;Z`rQth*z}#b?EGXUF(m5c zbQJE|yW-+kE|+V)-(Wsp<%iUFw$Ra*>j9EmVr_5P3PTUKivZQ(UEMV&)amnhoAv~g zCkj1xv$u>RR9bAQUdD*YY?1$XSAU-1dj)H{#M8e_w!>D{E(^YSk@b(grr5=4OR;_X z>U~A{Y)UgXQYTzJ<9>MF1L2)GudTX0ey(Q~y1T-f_`haY@cktYRf$XdC9u6LJS)s2 z^^kaf8dWkbL73+AyUfb%mLEXAkiLFEZ|0>FUbp z)(r;MAUY$zapqD+X0xA+QGKh~F9Bg(+nkGSk@S6K(0%|X_y8b1IIva#(F~4xuhts3 z2q;qvdvD3~{a{W!rODuBTLWs5&-%85TQb`2nrr`#Jvby`lDnO~*5bIPYSyQ&tnr8U z!$ISOO@Dd+sR({HLbrj>M{3wFPI+SDUtW2}~xmU)4&*s@Yc#!Lqq%3IaK?_r{ ze2~;{7j-1y%7(>YVa9i9=_{pIwf{FG3k)o(j99FkTt_PzDL?}4mx*lH>OcXCrf3`Y z<5`?Pm%Plt7~o5$BHfO*SSKz87}X_58SB5Y5_+Y(ALpo`mGfkHwpyuxP0Zza-8duv zf_$7bMFQacaMIe0QW%8a>Md?$jV^0yu;PPX#U~T zo94{-YHY~zV7~;~2RJ&D&+|I`@WY+vToT99;9rv02b-8X3G*PGxcKU<&uz*!%iKMo z>#^de3~F*bTeaX8>`ruuG4p!!Aev5p`qwL4L;L z%l`{ATur&GU?V@129tRTH#_(N5@8}2vBXRU8jvW~1i!A=O&zJ-Lk(O=mCDOb^`l}U z7l-BvhrH`kL3d)?Obp%J{u(qh{eim`%)jwcT-@3jDBD!9n>x%{+`uAXwIlcprA zs0BLPV-%Cu@oc+T+4nBj8ome>})6eAsX#&n!|({mAL|Q%4`~=MBS=1A)HF!t6)R z8=5@(y&&Lh5)gi}--KuBV_DPq#)a+#Kn9m#yG1+G)mEoYhM(Q2S|t{^nOO{b0+SM) z-00pP4WsT1nD;s?+9t?V?&mYsq3d6HhUiO>1V|fi_zRu%DK)hMopgL|T)yE5_UXOkS|PwfNM=5GCl z`It@;)lWe#r|r>Q#VZdpn~QP#h=au|ZaMMjj7d`=Yon8AP&Yk64xf=}XQS7`%TeHI z8c@1!uSshN8I?#aSjt~QEN_?(&E;QSvwA9M$EX=>mbMSJuq&;6n&-o9k|Rm%V-=MS&F8`}JTD!KrO4SNB- zT#MXk$fPm$?+`MNb3Tl2+r(6@Ad~Ym;0>vksWTRSj{)+rv+Z@SA39Fxa)Hv z+O+-mW-72beW3si=SK!=L~}J2j=mZwxE{oqNNV~dvzY1xgj*i^>zLxTUFRYnHOWY$ z(vlCugXVS5&vTiDFdOYhZ!KnKzB3AS!4OOCg@Q{jXY%(E0WcSESD$*iwTb|1(6$bG zwRbJ1m_5Cb6~qN5p1i7dVjL%q5?OPnlJ`~yQ^T-Rl2842ZWTeBClI=EFDJcHF)wDQ z0q4Rzp#;m_E5VP>@=e$R8R@*i;D82y38>ffa9+YzW*vwq(^=eet|R^Y?AIkm(Rv5Y z1x>Ue)*`M_$L5?QSJaex`3JalZ5?;=2=Z#V6y5ta{~?H9Rd5W}L#siP z(-hw>NLH7j<3kaMB>!!QA&fc2T-F6@dYJoxmh2(RRE#0TvL@IYVbS<`VXtHS<)^nM zCQ3KeGV~n-{6h4da-;UU5&MwrU7)M#F`F?CJyh?;ZD5>_qe_}oYyZiN{93vT&q3ro z^XO)@ct+C3z^}`n`@Iu3-`*Yy7ph?4MG){SLFSi|?=3oHe$CEtn+XWhks$FGiD##A z7kG9^Jd@o4odC6U%m6x99vs+dfcVIP^rrPx@?gsory(yoFgXpL$Ct@_DkEl^$1&r< zPYVyn6ik@*4?2ju-5DHrDLBhF+zT-?kd&kiGk~u2BV>bg)C(jcq1A6=RiOclWw<>V ztmk*SFI;XwllNonV?Hz;JQ8FvnSW@m(6%o9SU0#REwjTuvn@pp5*%ly&-eFdu_@@D zxEXX)Q5#Kjubi7hM7;=fW^bi-Olm+{(Xr5r0lPmp>o9xcX>!*%D;OIc3hF#A7|HA3 zXcd#N#J}?xlX`gn;4M}2Z$}r((Cn<|cUE!$ebHm;v>q1T zJ;1{d`P`#uEV66msV;ijLfFMj=27{9bc!GG=p~8Z0ewZugOUfn{GOg)obob=f4^=6 z15fAgPSlB7uU(tI$Fm{RO3*2o_AcBf+5@!mUfMc1-~DQuN!d1UYJ%OSq3jTt{YJ>L z#8oA^j#Qy4E`KD&=-Kbw;Z>R@N^AzyoIbQ5w77O)4%hUA z`&5#)h6`kN)s3PXO2u0zJ)9Ot>*6XGRbFawD%0=ho5kkKKe=<%TJL(WTR@Hf7rxQ` z06_n8CiB9r=nvSx0z&h6GM=}Je{c?OSk9atX45NB8Y0m=;RO2fdHbk*!i!n;Iqw_u zt#(Ll+tLLU-=V>^B4h28n*8E)7x|2@`-~`yIe-)M_ALXJFt}yYFhJ`(F!u+j6A6a} z?Db)o*cF7}i82DjB z#G{-8eU-U#ahxqA^68dG8l|=-j^pN`)YhsIBCjn&*s?H*VyGk`b zMQMN@Ty9xy$LHp+HU1?ysKq}nPPqWT83J0je#80JGW@%X{N<@{xEAT*mJ=SuV$b(Wj*Qkly=m$XbO|kY zw{-idP-5Y(J4~bbcV8y16QR;IbK~U8v*nLJ1^LQZd6-`fDRq47W`0tGfARl?q!8Ah zvx!`q%HD-Yjv@&~cQoCUgg+bh*yu~m!KpWni4*085{y!fIyG39+fOW7bW`P{`@$aH z=}Ue-GB>{JDnz(!x*4$418rULL zx;EFo6|O_9u|!3r|6F5KsdfGPvHgKn>nqP1{yoBdRq_tG<gg!@Syjv1~ zq8Ek{dT1h?cyH>TOV9tYN(2X3_wUz2o`|A$>yd~R_JdWfT zYEGz#7s9&@FP9mdkZ{1Musu?pYC7^+#gs_8`_%-OzjvE*F^yK!4}R`jK?k7o@H*`x z9&r&3jD}2o4g+|$L7^IePi;mXO90I}rJb}4=Yz4D{&4mqxSKD*D=>H*0>~vN9%8W*fQb;7h({$$w~tSC zbMcFHE9+u#Q|GdmXReYl`1*5w3|KXJ&-9>@uy5~->fqRizth8R=1%2^_IC*E2c*~0 zovEB^?gr1M9O?WVAe_W^OO)^=x6}}a&RMp5^lXT+_lCmj^U5o3+{n1m9oOz*)G;v6)%pZI?s^W&tdf# zysA{vc#Z<-@zgd`M~j!XJsg1h?B(sbbEU{hP+ISHh=;A3yO46Ss;y=WhJT`P6SURL zVEW=pg0;bvW$Vi9iFJqkUDJAmHuz~HD34VY8bXQ5i$iNxPUoDEtN6~ViB!MkFLA}KQJ?IWt`m4JV8YC zq#+zP*umc}k=u#xM57KE3E{;3Cfx+9l|M217$Zr|VU@mcIn_>r_6`wZuA_G3zBCl+ny3SEgFEKTJWTeSA zdEs+_p4Wx(G@F%6<8G*L-n6ME3&Bhe^vB-b=mDKHXs%;nL z_N}tXbk0W17ztb>%=zL6YV8TxC4455f3hC1L_uxnFmO_p97{>|rAI4X&*701Fs-9* z+je|>>lCCpYuxm*|h;@lnLfg!AIiNYq(P(bN0V7jDxs$)*U>&zZ0 zoWZLfts2W*Jl3RZ;N>7!_IRn2X(07F^}^Aaze6Gn%=wgLU#L1zKMy9*A#?s*W6Co$z5mvR{h5_q;;pxgqUzV13z*mxt$1IZ{t_=E4;nsBf^O{sO|LHI=Bn7HhsI1 zaYQ&0(84MgJ5TG_YG8D}3)VRCCbk%l6^$<{((`vf=H~Nr=Y^JK5c@$6AlOH1qRel= zIj#uW588W@8p}!8mFv!Vn7m?J%kXfrhs}!2+ypvl$u@Sc$tY)E-+G8IW6^c}z{-;R zms24DVUGD(*(rtmL#_j9h0dc$Dj+Q+VSSq|u_{s)jAnuKe_qxAwRYB1nL*)w*0T8v zbRaL&T#J{;3I6E=cK2o83OeMLqW&ch_v6EQ*)M_PIf-r`=O6RkUp_!mc-y{xU8{-P ziJtsNtKf7WWe?4Z(bn;RP0RdPHZ(i~L^Y*LK6S+P968GhR{hx{?K>X2%i~)^LV7XT zVg6ZR#fL>5Uwr0UW51ez1b%x48AW5bmNfp~8{Ry>JtUWi0`pEioFKY$(vUswfj;aB ztY}SvtR88{M>wI2xrmZUa%J35ucroF(KAFA>8*ZBRL_yR)sH@8W|8yHkc!HQeTNCS z{YzbGy+N+rwE!9beZ}UqtpJ6ei@e{Odcgw-Zg&R~0hX&oREP)c)zx}Q_?-XffqlA} z<$TR7buQJdBO*TtXJjK%Y35}%*r)e+pU(x=x!<1alIP~`_OwY~&q(X(x=W(bU#89d z-OXq0V=dPj-@PuPM1BMP4;^@e{!?23plwY)&=ig(bqaI-3&e6HDr?Rs)w3Yx+^6j6 zepHqlqtoQ+Pkb;~FeR(#B_X?K*(U9emwQFEi);P*1|e_c654}i{mhZfD{%gmgCf`Q zY}s`Y&NaWB4o41TqyPL0TY99*1M_S%N-AJl&B`TklFVGI?XCip;7wV-bQNIdHe*}E*t2j{u`;}o?AxK*e0yM<0w?46R1a#PFIs5 zNt=|8;Zu~TT?fHWfT)JiUI@F=^d08K9HJQPWxAKj672OqV6H_rltEN>(EF$<9t^BxJ`8xN=ADk*2C%im5|dHr2n{z|0k?} zvmSWs-tQE2cLz~h)en82@k<~E)PY1T14?T`>zEo1OH-~pTd1U7Zwu=&hisPhd;rtD z$dIJbB;f7?9yXC>^mTCBWrOdSuC_n=5^qk1{=Ipg|4i)aG^hI!ORV)co$a+@2@G)I z*+P|eGz#2NBQLfRISiYm3G&ewn{%q^=hC4smy0Jy2X90u&Bwv*-2W~r&VG&g=S}ys z6rgY`w+Gy|Od%jjIO0U}S1P4quiu>JShA?U1bC0NkYnK^DBRqC%wi%LO!$@>g7wg^ z0q9uGpX$l5uGAlB@%D$`0w35r+RT+{-O7@q@ zFWL^fCNI9v=7Svz{mZ}vJ#92rtRph5jFe=fCA@J8fIT{F-<10Vk*(M1!DbH;W^Luc z+H)$PGxHQ59YN0v%@D zq@FzKDI0}!dRa`Z>g#@SKyqV?B$!DSwUyh)=_3yT7~ z0empMb){=^glK)DQbpp8!&KDMTf4qGy75D8W~;Yvt2ywuQMa6fM5~`gC)WW5xXBe% zpeGf3gy$1zpZSA%et=D>MKT8%_wT1+sw{<-uA%$@P2%MxLkop~pY{?-C*9>wzD`NL z*fl--H9cSc&81-A+c0pSPt%RK=k3l+3{J4;euc@=PE8mbfTVI)e zx(CI<+;xnoo#W5w8n7Ifpr${y@dK@fJzi8;TE8(~b@_AQseyaxz-s!X2!PGftpfqY zgZN=8&&@`(--`LO!HjkO=w|{!hgtva^HLgRm=b4^5X(GvXl7!xC~f@ZT;7lAevH(e z(!NEY$#u~0*kJ#?-hD*#VgY(mXD@uXj=VZ@U_F%Mz=AhpBCz0VWT@w+a4UsEkqoM4 zDF!*wQ{5i)I&>xZQ&`8kb;49`oS^9K6_IF@{Y#Ntidp~5Q}o{D%$A2E*K_3;^5yo~?uP|eza*BlRfJ6v$==z)VIy^8TbmDzg;@2_olwtv4JJ>oOS$v-W32%wG>!D`# z#1Q`^Bn6)sP5+8U9JjdKDlBBCuYF;|FF|9&aVN zjEpcoQK3TB-js)HNmAuVxI1F_#FqxhDsJ*O`ua(ObJrd{GPr)92W;c;cZkI9XWm_3 z=O;*mEwtxmf(3vp_stdTB-N{*b}uBtab>0ELsRRiP?SgAcLTlnCdbR(X4kIxyribo z#J5-)NDXuyi{!f{A)n+F@w>NTS{^t=o7R@r_IyY-ix&0gKd8Lg+F!n8LIzYG^q4rgOh-pEtM=)d34G zSxW!<1F6jd%nBulWTWID6`LF1aU66QoPF~O%5=b=k69EIqvKi6kT`(7righb8MFQb zCmqY|T3MsxG-OzvPM=quuWdXp{c8wDX~CL`UOUE{8(-0Z+FBi`d~Wvcb*vsAWTjg} z=H}NinSkoh4?t%>fz<|$B`)~k?r#x(Xt%=Xb=Dr9dsA0wv~#juMX&H}D{ z3Q^(3-DE)75q+^mM*)Iyto__88)c$@%MM z^YRf_$DG|lZ|-+2_|wso3ZxV2g6lIJt=jrqo;@*pk?Tk6cp?s}D6l6YYMu`3Ah@E$ zJcs>OT7#$z_huBKlgLa z(x=eXx;}E8XJK$hz_QwN!!@0V4hMM^$qsy}S-k)CcKgd;k}g;)NYg;4XfVAgq1GgS5#fd-=n$Mm}nn_2B zP*NqPagVpsty0R;b6kL_F}nn$nmU6T@3#rRH#$0*#m9Eb@Bte$f(_K(i4wn1`(@*Xp6!qky7PA@B<%bM?Rv#1Rwf`j zJGNTok=C7$<6-)F3rkta``Wl+Axt1H)IjK&Z;3TQl5G08dEl19dcnZN!cn3pG)|4O zF_K)^d;rC~b;wk$8VDfn+vDGO?$OJ=Am7}-ew!;7wZ2X8)CMM_-@k{65=8 z*^e{A^#5vb8z%^@cvXxeQZ2DB(l#@dPrB$|S~Y)g^qR_%{KC%fxBr&zdCF?n9$Qc6 z^xR^RzT>^qDZeF7&Dr~29F)(`4~eyUj(D8$`jUUKjLYP^ONn=MAs}s1nvip|Nx~j@ zRdx#6XtcF4KWFLbu>ighQ0{_onpo`mTpqAf@*FDpiLzHvqfTY~uyZR|d{I7hhA!vo zvgmT_+MtCF%d9|c8!Z!z#VtVR6aa@Yx@+Jy06$*MMvr1?X?e9?AG?UjO`hXn^|^%; zRe^VPMKo&i9Dm#r_g_@;uenL!DSk-5xfPY>7CbIKFfJ6~Q9rpN5xi*Mywl^FoF;8< zp>Oi~+y#plzv)Y!GAHcgq}-j-Bg&oV4f}!#LV*xAx^T=5-n)aRtsc&DoG(cy=vle_LSm{Spvr zO8t&-Zeez`O<5vfMGd8h(8jd#>TMb;$7y7?B)N!~?x8RQaMj12oXb94oLDbvq8#~< z(y_jB&~(+{vx2rT*Cm6!RZ(Lyb9|B`Lh>?CUGZc6w@8_`GKyU~{*Gpb8YwSj?*vRR zcPN@geKuhk_X^}ot0mJU-5M)aTbHfsH=ftE$an+uiaSWe!a0)<-Eofo89PAq7zQCIc5tXEXlDJ{GYsS)&|7 zr@1j}y_*jaj>&D+d7oQ*?p|=#^f{(J4AxVmdVhK7c{|c+CEqb$dCJvMkA4tlwCvs*Pj4uCJL<>`7()xxz3}8h>Ktx$Tzt!OtBg zI&)t76UJY(nMP#dZ$~ZTy?Sr^xk|Q!;3-(eRZY+bXd5XAa6Y)%P-rdDp`_k&E4_QE zs5F7oQ>Cj{T)sBBZ4V?z@#2zO{WosrE4AaOgK@T5f|zAs4}6xg>NAPp@$8@~cxq$La`(h23W-NR{sm%VZ-ePXGLL#o%~$}o)j?tYj!Rjrs%!8$*c{bfApD~4=!Q>&>IDTJ6ve|?Pm zQaa_3%Ai5isVy^A3x2k7=cEas@BUJ`;W&Y3ca)n!e9wh+c;c8QFqR=!c88iIT*kTv zAE(5f3$ns5)$B;_O}rGnPB&6_!--au^m*P^0x=_Ef(H0`0Wkh@gp&nl<}8sStv9BG zzneruHC0J+0UKiE-J3YUD_XL>b+93hO?e148osR&p^$$O&jVX7rgw`244cYKykJRzBde(?QosssQb|IU#D=SD%^Ivx;20*WL z!mez-nnsGzYk1&Xa$>&hc zIZrKJolA#$AH^iSa{8SAHLB!M?S7H?_cR!{8!~yDrX6hPd%SxAIvZ3Clw5$=4;D%P zfa6@K*S3RcEmptS4RtgdG*f?a^JaGo9TK%0Ds@olV#;lUu<`5Ob21&38WWC-mmNRm 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 literal 0 HcmV?d00001 diff --git a/pr-preview/pr-214/use-case/read-a-drivers-license/index.html b/pr-preview/pr-214/use-case/read-a-drivers-license/index.html new file mode 100644 index 00000000..a66a9aef --- /dev/null +++ b/pr-preview/pr-214/use-case/read-a-drivers-license/index.html @@ -0,0 +1,319 @@ + + + + + + + + + Dynamsoft Barcode Reader Sample - Read a Driver's License + + + + + Aim at the barcode on the driver's license. +

Read a Driver's License

+ +
+ + + +
+
+
+
+ Results: + + + + +
+
+
+ + + + + diff --git a/pr-preview/pr-214/use-case/read-a-drivers-license/style.css b/pr-preview/pr-214/use-case/read-a-drivers-license/style.css new file mode 100644 index 00000000..acb09334 --- /dev/null +++ b/pr-preview/pr-214/use-case/read-a-drivers-license/style.css @@ -0,0 +1,174 @@ +* { + margin: 0; + padding: 0; +} + +body { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + overflow: hidden; + width: 100vw; + height: 100vh; +} + +#span-tip { + position: absolute; + font-size: 1rem; + color: #fe8e14; + top: 1vh; +} + +h1 { + font-size: 1.5em; +} + +a { + color: #fe8d14; +} + +a:hover { + color: #fe8d14a1; +} + +strong { + color: rgb(254, 142, 20); +} + +#svg-start { + width: 100px; + height: 100px; + fill: #aaa; + cursor: pointer; +} + +#main-container { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + width: 50vw; + height: 60vh; +} + +.dce-bg-camera { + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + margin: auto; + width: 40%; + height: 40%; + fill: #aaa; +} + +#camera-view-container { + display: none; + width: 100%; + height: 100%; +} + +#result-container { + display: none; + position: fixed; + width: 50vw; + height: 70vh; + z-index: 10; + color: white; + font-size: small; + background: #222222; + margin-top: 30px; +} + +#result-container .result-header { + width: 100%; + height: 30px; + background-color: #000; + font-size: 16px; + line-height: 30px; + padding-left: 10px; + box-sizing: border-box; +} + +#result-container .result-body { + height: calc(70vh - 30px); + overflow-y: auto; + padding: 5px; + box-sizing: border-box; +} + +#result-container p { + padding: 5px; + margin: 0; +} + +#message-container { + display: none; + align-items: center; + width: 50vw; + padding: 8px 16px; + margin: -92px 0 10px 0; + box-sizing: border-box; + border-radius: 4px; + position: relative; + background-color: #f4f4f5; + color: #909399; + overflow: hidden; + transition: opacity 0.2s; +} + +#message-container .message-icon { + font-size: 28px; + width: 28px; + line-height: 0; + padding-right: 1rem; +} + +#message-container .div-message-content { + display: table-cell; + padding: 0 8px; +} + +.message-content > span { + font-weight: 700; + font-size: 14px; + line-height: 18px; +} + +.message-content > p { + font-size: 13px; + margin: 5px 0 0; + line-height: 20px; +} + +.api_highlight { + font-weight: 700; + background-color: #ddd; + border-radius: 4px; + padding: 2px; +} + +.close-button { + position: absolute; + top: 12px; + right: 15px; + cursor: pointer; + line-height: 0; +} + +/* Small devices */ +@media only screen and (max-width: 1000px) { + #message-container { + width: 90vw; + } + + #main-container { + width: 80vw; + } + + #result-container { + width: 80vw; + } +} diff --git a/pr-preview/pr-214/use-case/show-result-texts-on-the-video.html b/pr-preview/pr-214/use-case/show-result-texts-on-the-video.html new file mode 100644 index 00000000..66385e8b --- /dev/null +++ b/pr-preview/pr-214/use-case/show-result-texts-on-the-video.html @@ -0,0 +1,176 @@ + + + + + + + + + Dynamsoft Barcode Reader Sample - Display Barcode Results as Video Overlays + + + +

Display Barcode Results as Video Overlays

+

Scan barcodes to display results as overlays on video

+
+
+ + + + From af96f43c3537c2701c84a402721999e242bf6b74 Mon Sep 17 00:00:00 2001 From: felixindynamsoft Date: Tue, 8 Oct 2024 14:18:49 -0700 Subject: [PATCH 055/223] feat: add PR previews (#214) --- .github/workflows/preview.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .github/workflows/preview.yml diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml new file mode 100644 index 00000000..e926b6dc --- /dev/null +++ b/.github/workflows/preview.yml @@ -0,0 +1,23 @@ +# .github/workflows/deploy.yml +name: Deploy PR previews +on: + push: + branches: + - main + pull_request: + types: + - opened + - synchronize +jobs: + deploy-preview: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Deploy PR Preview + uses: rossjrw/pr-preview-action@v1.4.3 + with: + token: ${{ secrets.PREVIEW_TOKEN }} + preview-branch: gh-pages + source-dir: . + umbrella-dir: pr-preview + action: auto \ No newline at end of file From 66995b9cdc480c57c675fae2a0cc698b3bbd4427 Mon Sep 17 00:00:00 2001 From: felixindrawan Date: Tue, 8 Oct 2024 14:23:15 -0700 Subject: [PATCH 056/223] fix: remove preview folder --- pr-preview/pr-214/balloon.min.css | 1 - pr-preview/pr-214/bare_pr_preview/HEAD | 1 - pr-preview/pr-214/bare_pr_preview/config | 6 - pr-preview/pr-214/bare_pr_preview/description | 1 - .../hooks/applypatch-msg.sample | 15 - .../bare_pr_preview/hooks/commit-msg.sample | 24 - .../hooks/fsmonitor-watchman.sample | 174 ----- .../bare_pr_preview/hooks/post-update.sample | 8 - .../hooks/pre-applypatch.sample | 14 - .../bare_pr_preview/hooks/pre-commit.sample | 49 -- .../hooks/pre-merge-commit.sample | 13 - .../bare_pr_preview/hooks/pre-push.sample | 53 -- .../bare_pr_preview/hooks/pre-rebase.sample | 169 ----- .../bare_pr_preview/hooks/pre-receive.sample | 24 - .../hooks/prepare-commit-msg.sample | 42 -- .../hooks/push-to-checkout.sample | 78 -- .../hooks/sendemail-validate.sample | 77 -- .../bare_pr_preview/hooks/update.sample | 128 ---- .../pr-214/bare_pr_preview/info/exclude | 6 - ...043bd2e7bb236c48717782ed0d5d532770bc9d.idx | Bin 8800 -> 0 bytes ...43bd2e7bb236c48717782ed0d5d532770bc9d.pack | Bin 110704 -> 0 bytes ...043bd2e7bb236c48717782ed0d5d532770bc9d.rev | Bin 1156 -> 0 bytes pr-preview/pr-214/bare_pr_preview/packed-refs | 2 - .../pr-214/bare_pr_preview/refs/tags/v0.0.0 | 1 - .../pr-214/bare_pr_preview/refs/tags/v0.0.1 | 1 - .../pr-214/bare_pr_preview/refs/tags/v0.0.2 | 1 - .../pr-214/bare_pr_preview/refs/tags/v1.0 | 1 - .../pr-214/bare_pr_preview/refs/tags/v1.0.0 | 1 - .../pr-214/bare_pr_preview/refs/tags/v1.1 | 1 - .../pr-214/bare_pr_preview/refs/tags/v1.1.0 | 1 - .../pr-214/bare_pr_preview/refs/tags/v1.1.1 | 1 - .../pr-214/bare_pr_preview/refs/tags/v1.2 | 1 - .../pr-214/bare_pr_preview/refs/tags/v1.2.0 | 1 - .../pr-214/bare_pr_preview/refs/tags/v1.3 | 1 - .../pr-214/bare_pr_preview/refs/tags/v1.3.0 | 1 - .../pr-214/bare_pr_preview/refs/tags/v1.3.1 | 1 - .../pr-214/bare_pr_preview/refs/tags/v1.3.2 | 1 - .../pr-214/bare_pr_preview/refs/tags/v1.4.0 | 1 - .../pr-214/bare_pr_preview/refs/tags/v1.4.1 | 1 - .../pr-214/bare_pr_preview/refs/tags/v1.4.2 | 1 - pr-preview/pr-214/favicon.ico | Bin 3638 -> 0 bytes pr-preview/pr-214/hello-world/README.md | 94 --- .../pr-214/hello-world/angular/.editorconfig | 16 - .../pr-214/hello-world/angular/.gitignore | 44 -- .../pr-214/hello-world/angular/README.md | 433 ----------- .../pr-214/hello-world/angular/angular.json | 95 --- .../pr-214/hello-world/angular/package.json | 39 - .../angular/src/app/app.component.css | 42 -- .../angular/src/app/app.component.html | 14 - .../angular/src/app/app.component.ts | 22 - .../angular/src/app/dynamsoft.config.ts | 30 - .../image-capture/image-capture.component.css | 19 - .../image-capture.component.html | 11 - .../image-capture/image-capture.component.ts | 67 -- .../video-capture/video-capture.component.css | 6 - .../video-capture.component.html | 8 - .../video-capture/video-capture.component.ts | 107 --- .../hello-world/angular/src/assets/.gitkeep | 0 .../hello-world/angular/src/favicon.ico | Bin 15086 -> 0 bytes .../pr-214/hello-world/angular/src/index.html | 22 - .../pr-214/hello-world/angular/src/main.ts | 5 - .../pr-214/hello-world/angular/src/styles.css | 11 - .../hello-world/angular/tsconfig.app.json | 14 - .../pr-214/hello-world/angular/tsconfig.json | 32 - .../hello-world/angular/tsconfig.spec.json | 14 - .../pr-214/hello-world/blazor/.gitignore | 484 ------------ .../pr-214/hello-world/blazor/README.md | 372 ---------- .../hello-world-blazor/BlazorApp/App.razor | 12 - .../BlazorApp/BlazorApp.csproj | 18 - .../BlazorApp/Layout/MainLayout.razor | 16 - .../BlazorApp/Layout/MainLayout.razor.css | 77 -- .../BlazorApp/Layout/NavMenu.razor | 39 - .../BlazorApp/Layout/NavMenu.razor.css | 91 --- .../BlazorApp/Pages/DecodeImage.razor | 26 - .../BlazorApp/Pages/DecodeVideo.razor | 48 -- .../BlazorApp/Pages/Home.razor | 13 - .../hello-world-blazor/BlazorApp/Program.cs | 11 - .../BlazorApp/Properties/launchSettings.json | 41 - .../BlazorApp/_Imports.razor | 10 - .../BlazorApp/wwwroot/css/app.css | 103 --- .../wwwroot/css/bootstrap/bootstrap.min.css | 7 - .../css/bootstrap/bootstrap.min.css.map | 1 - .../BlazorApp/wwwroot/decodeImage.js | 34 - .../BlazorApp/wwwroot/decodeVideo.js | 68 -- .../BlazorApp/wwwroot/favicon.png | Bin 1148 -> 0 bytes .../BlazorApp/wwwroot/icon-192.png | Bin 2626 -> 0 bytes .../BlazorApp/wwwroot/index.html | 70 -- .../pr-214/hello-world/electron/README.md | 250 ------- .../pr-214/hello-world/electron/action.js | 73 -- .../pr-214/hello-world/electron/index.html | 22 - .../pr-214/hello-world/electron/main.js | 29 - .../pr-214/hello-world/electron/package.json | 28 - .../pr-214/hello-world/electron/style.css | 6 - pr-preview/pr-214/hello-world/es6.html | 98 --- .../pr-214/hello-world/hello-world.html | 82 -- .../pr-214/hello-world/next/.eslintrc.json | 3 - pr-preview/pr-214/hello-world/next/.gitignore | 38 - pr-preview/pr-214/hello-world/next/README.md | 434 ----------- .../pr-214/hello-world/next/app/favicon.ico | Bin 25931 -> 0 bytes .../pr-214/hello-world/next/app/globals.css | 10 - .../pr-214/hello-world/next/app/layout.tsx | 23 - .../pr-214/hello-world/next/app/page.css | 33 - .../pr-214/hello-world/next/app/page.tsx | 51 -- .../components/ImageCapture/ImageCapture.css | 20 - .../components/ImageCapture/ImageCapture.tsx | 76 -- .../components/VideoCapture/VideoCapture.css | 6 - .../components/VideoCapture/VideoCapture.tsx | 122 --- .../hello-world/next/dynamsoft.config.ts | 30 - .../pr-214/hello-world/next/next.config.mjs | 4 - .../pr-214/hello-world/next/package.json | 25 - .../pr-214/hello-world/next/public/next.svg | 1 - .../pr-214/hello-world/next/public/vercel.svg | 1 - .../pr-214/hello-world/next/tsconfig.json | 26 - pr-preview/pr-214/hello-world/nuxt/.gitignore | 24 - pr-preview/pr-214/hello-world/nuxt/README.md | 355 --------- pr-preview/pr-214/hello-world/nuxt/app.vue | 74 -- .../pr-214/hello-world/nuxt/assets/logo.svg | 1 - .../pr-214/hello-world/nuxt/assets/main.css | 7 - .../nuxt/components/ImageCapture.client.vue | 88 --- .../nuxt/components/VideoCapture.client.vue | 108 --- .../hello-world/nuxt/dynamsoft.config.ts | 30 - .../pr-214/hello-world/nuxt/nuxt.config.ts | 4 - .../pr-214/hello-world/nuxt/package.json | 18 - .../hello-world/nuxt/public/favicon.ico | Bin 4286 -> 0 bytes .../pr-214/hello-world/nuxt/tsconfig.json | 4 - pr-preview/pr-214/hello-world/pwa/README.md | 304 -------- .../hello-world/pwa/dynamsoft-192x192.png | Bin 6638 -> 0 bytes .../hello-world/pwa/dynamsoft-512x512.png | Bin 9938 -> 0 bytes .../hello-world/pwa/helloworld-pwa.html | 97 --- .../hello-world/pwa/helloworld-pwa.json | 22 - .../pr-214/hello-world/pwa/service-worker.js | 77 -- .../pr-214/hello-world/react-hooks/.gitignore | 24 - .../pr-214/hello-world/react-hooks/README.md | 394 ---------- .../hello-world/react-hooks/package.json | 44 -- .../react-hooks/public/favicon.ico | Bin 3870 -> 0 bytes .../hello-world/react-hooks/public/index.html | 45 -- .../react-hooks/public/logo192.png | Bin 5347 -> 0 bytes .../react-hooks/public/logo512.png | Bin 9664 -> 0 bytes .../react-hooks/public/manifest.json | 25 - .../hello-world/react-hooks/src/App.css | 50 -- .../hello-world/react-hooks/src/App.tsx | 48 -- .../react-hooks/src/assets/logo.svg | 1 - .../components/ImageCapture/ImageCapture.css | 20 - .../components/ImageCapture/ImageCapture.tsx | 76 -- .../components/VideoCapture/VideoCapture.css | 6 - .../components/VideoCapture/VideoCapture.tsx | 115 --- .../react-hooks/src/dynamsoft.config.ts | 30 - .../hello-world/react-hooks/src/index.css | 11 - .../hello-world/react-hooks/src/index.tsx | 11 - .../react-hooks/src/react-app-env.d.ts | 1 - .../hello-world/react-hooks/tsconfig.json | 26 - .../pr-214/hello-world/react/.gitignore | 23 - pr-preview/pr-214/hello-world/react/README.md | 413 ----------- .../pr-214/hello-world/react/package.json | 44 -- .../hello-world/react/public/favicon.ico | Bin 3870 -> 0 bytes .../hello-world/react/public/index.html | 45 -- .../hello-world/react/public/logo192.png | Bin 5347 -> 0 bytes .../hello-world/react/public/logo512.png | Bin 9664 -> 0 bytes .../hello-world/react/public/manifest.json | 25 - .../hello-world/react/public/robots.txt | 3 - .../pr-214/hello-world/react/src/App.css | 50 -- .../pr-214/hello-world/react/src/App.tsx | 61 -- .../hello-world/react/src/assets/logo.svg | 1 - .../components/ImageCapture/ImageCapture.css | 20 - .../components/ImageCapture/ImageCapture.tsx | 76 -- .../components/VideoCapture/VideoCapture.css | 6 - .../components/VideoCapture/VideoCapture.tsx | 118 --- .../hello-world/react/src/dynamsoft.config.ts | 30 - .../pr-214/hello-world/react/src/index.css | 11 - .../pr-214/hello-world/react/src/index.tsx | 6 - .../pr-214/hello-world/react/src/logo.svg | 1 - .../hello-world/react/src/react-app-env.d.ts | 1 - .../pr-214/hello-world/react/tsconfig.json | 26 - .../pr-214/hello-world/read-an-image.html | 71 -- pr-preview/pr-214/hello-world/requirejs.html | 102 --- .../pr-214/hello-world/svelte/.gitignore | 24 - .../pr-214/hello-world/svelte/README.md | 354 --------- .../pr-214/hello-world/svelte/index.html | 18 - .../pr-214/hello-world/svelte/package.json | 24 - .../pr-214/hello-world/svelte/src/App.svelte | 88 --- .../svelte/src/components/ImageCapture.svelte | 96 --- .../svelte/src/components/VideoCapture.svelte | 117 --- .../svelte/src/dynamsoft.config.ts | 31 - .../pr-214/hello-world/svelte/src/main.ts | 7 - .../hello-world/svelte/src/vite-env.d.ts | 2 - .../hello-world/svelte/svelte.config.js | 7 - .../pr-214/hello-world/svelte/tsconfig.json | 20 - .../hello-world/svelte/tsconfig.node.json | 10 - .../pr-214/hello-world/svelte/vite.config.ts | 8 - pr-preview/pr-214/hello-world/vue/.gitignore | 29 - pr-preview/pr-214/hello-world/vue/README.md | 384 ---------- pr-preview/pr-214/hello-world/vue/env.d.ts | 1 - pr-preview/pr-214/hello-world/vue/index.html | 19 - .../pr-214/hello-world/vue/package.json | 26 - .../pr-214/hello-world/vue/public/favicon.ico | Bin 4286 -> 0 bytes pr-preview/pr-214/hello-world/vue/src/App.vue | 72 -- .../hello-world/vue/src/assets/logo.svg | 1 - .../hello-world/vue/src/assets/main.css | 6 - .../vue/src/components/ImageCapture.vue | 88 --- .../vue/src/components/VideoCapture.vue | 108 --- .../hello-world/vue/src/dynamsoft.config.ts | 30 - pr-preview/pr-214/hello-world/vue/src/main.ts | 6 - .../hello-world/vue/tsconfig.config.json | 9 - .../pr-214/hello-world/vue/tsconfig.json | 18 - .../pr-214/hello-world/vue/vite.config.ts | 15 - .../hello-world/webview/android/.gitignore | 15 - .../hello-world/webview/android/README.md | 13 - .../webview/android/app/.gitignore | 1 - .../webview/android/app/build.gradle | 45 -- .../webview/android/app/proguard-rules.pro | 21 - .../android/app/src/main/AndroidManifest.xml | 28 - .../src/main/assets/decodeBarcodeInVideo.html | 80 -- .../dynamsoft/dbrjswebview/MainActivity.kt | 105 --- .../drawable-v24/ic_launcher_foreground.xml | 30 - .../res/drawable/ic_launcher_background.xml | 170 ----- .../app/src/main/res/layout/activity_main.xml | 15 - .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 - .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 - .../res/mipmap-anydpi-v33/ic_launcher.xml | 6 - .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 1404 -> 0 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 2898 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 982 -> 0 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 1772 -> 0 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 1900 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 3918 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 2884 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 5914 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 3844 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 7778 -> 0 bytes .../app/src/main/res/values-night/themes.xml | 16 - .../app/src/main/res/values/colors.xml | 10 - .../app/src/main/res/values/strings.xml | 3 - .../app/src/main/res/values/themes.xml | 16 - .../app/src/main/res/xml/backup_rules.xml | 13 - .../main/res/xml/data_extraction_rules.xml | 19 - .../hello-world/webview/android/build.gradle | 6 - .../webview/android/gradle.properties | 23 - .../android/gradle/wrapper/gradle-wrapper.jar | Bin 59203 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - .../hello-world/webview/android/gradlew | 185 ----- .../hello-world/webview/android/gradlew.bat | 89 --- .../webview/android/settings.gradle | 16 - .../pr-214/hello-world/webview/ios/.gitignore | 90 --- .../pr-214/hello-world/webview/ios/README.md | 13 - .../dbrjswebview.xcodeproj/project.pbxproj | 373 ---------- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../ios/dbrjswebview/AppDelegate.swift | 36 - .../AccentColor.colorset/Contents.json | 11 - .../AppIcon.appiconset/Contents.json | 13 - .../Assets.xcassets/Contents.json | 6 - .../Base.lproj/LaunchScreen.storyboard | 25 - .../dbrjswebview/Base.lproj/Main.storyboard | 33 - .../webview/ios/dbrjswebview/Info.plist | 27 - .../ios/dbrjswebview/SceneDelegate.swift | 52 -- .../ios/dbrjswebview/ViewController.swift | 106 --- .../dbrjswebview/html/decodeFileInVideo.html | 80 -- pr-preview/pr-214/index.html | 355 --------- pr-preview/pr-214/logo-dynamsoft-black.svg | 40 - pr-preview/pr-214/others/debug/.gitignore | 9 - pr-preview/pr-214/others/debug/README.md | 57 -- pr-preview/pr-214/others/debug/app.js | 43 -- pr-preview/pr-214/others/debug/package.json | 16 - .../pr-214/others/debug/pem/ryans-cert.pem | 13 - .../pr-214/others/debug/pem/ryans-csr.pem | 11 - .../pr-214/others/debug/pem/ryans-key.pem | 15 - .../pr-214/others/debug/public/index.html | 228 ------ pr-preview/pr-214/use-case/README.md | 44 -- .../fill-a-form-with-barcode-reading.html | 163 ---- .../icons/checkmark-icon.svg | 7 - .../icons/cross-icon.svg | 7 - .../icons/dynamsoft-logo.png | Bin 5449 -> 0 bytes .../icons/scan-barcode-icon.svg | 32 - .../locate-an-item-with-barcode/index.html | 701 ------------------ .../SampleDriversLicense.jpg | Bin 533709 -> 0 bytes .../read-a-drivers-license/index.html | 319 -------- .../use-case/read-a-drivers-license/style.css | 174 ----- .../show-result-texts-on-the-video.html | 176 ----- 278 files changed, 14201 deletions(-) delete mode 100644 pr-preview/pr-214/balloon.min.css delete mode 100644 pr-preview/pr-214/bare_pr_preview/HEAD delete mode 100644 pr-preview/pr-214/bare_pr_preview/config delete mode 100755 pr-preview/pr-214/bare_pr_preview/description delete mode 100755 pr-preview/pr-214/bare_pr_preview/hooks/applypatch-msg.sample delete mode 100755 pr-preview/pr-214/bare_pr_preview/hooks/commit-msg.sample delete mode 100755 pr-preview/pr-214/bare_pr_preview/hooks/fsmonitor-watchman.sample delete mode 100755 pr-preview/pr-214/bare_pr_preview/hooks/post-update.sample delete mode 100755 pr-preview/pr-214/bare_pr_preview/hooks/pre-applypatch.sample delete mode 100755 pr-preview/pr-214/bare_pr_preview/hooks/pre-commit.sample delete mode 100755 pr-preview/pr-214/bare_pr_preview/hooks/pre-merge-commit.sample delete mode 100755 pr-preview/pr-214/bare_pr_preview/hooks/pre-push.sample delete mode 100755 pr-preview/pr-214/bare_pr_preview/hooks/pre-rebase.sample delete mode 100755 pr-preview/pr-214/bare_pr_preview/hooks/pre-receive.sample delete mode 100755 pr-preview/pr-214/bare_pr_preview/hooks/prepare-commit-msg.sample delete mode 100755 pr-preview/pr-214/bare_pr_preview/hooks/push-to-checkout.sample delete mode 100755 pr-preview/pr-214/bare_pr_preview/hooks/sendemail-validate.sample delete mode 100755 pr-preview/pr-214/bare_pr_preview/hooks/update.sample delete mode 100755 pr-preview/pr-214/bare_pr_preview/info/exclude delete mode 100644 pr-preview/pr-214/bare_pr_preview/objects/pack/pack-f5043bd2e7bb236c48717782ed0d5d532770bc9d.idx delete mode 100644 pr-preview/pr-214/bare_pr_preview/objects/pack/pack-f5043bd2e7bb236c48717782ed0d5d532770bc9d.pack delete mode 100644 pr-preview/pr-214/bare_pr_preview/objects/pack/pack-f5043bd2e7bb236c48717782ed0d5d532770bc9d.rev delete mode 100644 pr-preview/pr-214/bare_pr_preview/packed-refs delete mode 100644 pr-preview/pr-214/bare_pr_preview/refs/tags/v0.0.0 delete mode 100644 pr-preview/pr-214/bare_pr_preview/refs/tags/v0.0.1 delete mode 100644 pr-preview/pr-214/bare_pr_preview/refs/tags/v0.0.2 delete mode 100644 pr-preview/pr-214/bare_pr_preview/refs/tags/v1.0 delete mode 100644 pr-preview/pr-214/bare_pr_preview/refs/tags/v1.0.0 delete mode 100644 pr-preview/pr-214/bare_pr_preview/refs/tags/v1.1 delete mode 100644 pr-preview/pr-214/bare_pr_preview/refs/tags/v1.1.0 delete mode 100644 pr-preview/pr-214/bare_pr_preview/refs/tags/v1.1.1 delete mode 100644 pr-preview/pr-214/bare_pr_preview/refs/tags/v1.2 delete mode 100644 pr-preview/pr-214/bare_pr_preview/refs/tags/v1.2.0 delete mode 100644 pr-preview/pr-214/bare_pr_preview/refs/tags/v1.3 delete mode 100644 pr-preview/pr-214/bare_pr_preview/refs/tags/v1.3.0 delete mode 100644 pr-preview/pr-214/bare_pr_preview/refs/tags/v1.3.1 delete mode 100644 pr-preview/pr-214/bare_pr_preview/refs/tags/v1.3.2 delete mode 100644 pr-preview/pr-214/bare_pr_preview/refs/tags/v1.4.0 delete mode 100644 pr-preview/pr-214/bare_pr_preview/refs/tags/v1.4.1 delete mode 100644 pr-preview/pr-214/bare_pr_preview/refs/tags/v1.4.2 delete mode 100644 pr-preview/pr-214/favicon.ico delete mode 100644 pr-preview/pr-214/hello-world/README.md delete mode 100644 pr-preview/pr-214/hello-world/angular/.editorconfig delete mode 100644 pr-preview/pr-214/hello-world/angular/.gitignore delete mode 100644 pr-preview/pr-214/hello-world/angular/README.md delete mode 100644 pr-preview/pr-214/hello-world/angular/angular.json delete mode 100644 pr-preview/pr-214/hello-world/angular/package.json delete mode 100644 pr-preview/pr-214/hello-world/angular/src/app/app.component.css delete mode 100644 pr-preview/pr-214/hello-world/angular/src/app/app.component.html delete mode 100644 pr-preview/pr-214/hello-world/angular/src/app/app.component.ts delete mode 100644 pr-preview/pr-214/hello-world/angular/src/app/dynamsoft.config.ts delete mode 100644 pr-preview/pr-214/hello-world/angular/src/app/image-capture/image-capture.component.css delete mode 100644 pr-preview/pr-214/hello-world/angular/src/app/image-capture/image-capture.component.html delete mode 100644 pr-preview/pr-214/hello-world/angular/src/app/image-capture/image-capture.component.ts delete mode 100644 pr-preview/pr-214/hello-world/angular/src/app/video-capture/video-capture.component.css delete mode 100644 pr-preview/pr-214/hello-world/angular/src/app/video-capture/video-capture.component.html delete mode 100644 pr-preview/pr-214/hello-world/angular/src/app/video-capture/video-capture.component.ts delete mode 100644 pr-preview/pr-214/hello-world/angular/src/assets/.gitkeep delete mode 100644 pr-preview/pr-214/hello-world/angular/src/favicon.ico delete mode 100644 pr-preview/pr-214/hello-world/angular/src/index.html delete mode 100644 pr-preview/pr-214/hello-world/angular/src/main.ts delete mode 100644 pr-preview/pr-214/hello-world/angular/src/styles.css delete mode 100644 pr-preview/pr-214/hello-world/angular/tsconfig.app.json delete mode 100644 pr-preview/pr-214/hello-world/angular/tsconfig.json delete mode 100644 pr-preview/pr-214/hello-world/angular/tsconfig.spec.json delete mode 100644 pr-preview/pr-214/hello-world/blazor/.gitignore delete mode 100644 pr-preview/pr-214/hello-world/blazor/README.md delete mode 100644 pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/App.razor delete mode 100644 pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/BlazorApp.csproj delete mode 100644 pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor delete mode 100644 pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor.css delete mode 100644 pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor delete mode 100644 pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor.css delete mode 100644 pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeImage.razor delete mode 100644 pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeVideo.razor delete mode 100644 pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/Home.razor delete mode 100644 pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Program.cs delete mode 100644 pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Properties/launchSettings.json delete mode 100644 pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/_Imports.razor delete mode 100644 pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/app.css delete mode 100644 pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css delete mode 100644 pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css.map delete mode 100644 pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/decodeImage.js delete mode 100644 pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/decodeVideo.js delete mode 100644 pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/favicon.png delete mode 100644 pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/icon-192.png delete mode 100644 pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/index.html delete mode 100644 pr-preview/pr-214/hello-world/electron/README.md delete mode 100644 pr-preview/pr-214/hello-world/electron/action.js delete mode 100644 pr-preview/pr-214/hello-world/electron/index.html delete mode 100644 pr-preview/pr-214/hello-world/electron/main.js delete mode 100644 pr-preview/pr-214/hello-world/electron/package.json delete mode 100644 pr-preview/pr-214/hello-world/electron/style.css delete mode 100644 pr-preview/pr-214/hello-world/es6.html delete mode 100644 pr-preview/pr-214/hello-world/hello-world.html delete mode 100644 pr-preview/pr-214/hello-world/next/.eslintrc.json delete mode 100644 pr-preview/pr-214/hello-world/next/.gitignore delete mode 100644 pr-preview/pr-214/hello-world/next/README.md delete mode 100644 pr-preview/pr-214/hello-world/next/app/favicon.ico delete mode 100644 pr-preview/pr-214/hello-world/next/app/globals.css delete mode 100644 pr-preview/pr-214/hello-world/next/app/layout.tsx delete mode 100644 pr-preview/pr-214/hello-world/next/app/page.css delete mode 100644 pr-preview/pr-214/hello-world/next/app/page.tsx delete mode 100644 pr-preview/pr-214/hello-world/next/components/ImageCapture/ImageCapture.css delete mode 100644 pr-preview/pr-214/hello-world/next/components/ImageCapture/ImageCapture.tsx delete mode 100644 pr-preview/pr-214/hello-world/next/components/VideoCapture/VideoCapture.css delete mode 100644 pr-preview/pr-214/hello-world/next/components/VideoCapture/VideoCapture.tsx delete mode 100644 pr-preview/pr-214/hello-world/next/dynamsoft.config.ts delete mode 100644 pr-preview/pr-214/hello-world/next/next.config.mjs delete mode 100644 pr-preview/pr-214/hello-world/next/package.json delete mode 100644 pr-preview/pr-214/hello-world/next/public/next.svg delete mode 100644 pr-preview/pr-214/hello-world/next/public/vercel.svg delete mode 100644 pr-preview/pr-214/hello-world/next/tsconfig.json delete mode 100644 pr-preview/pr-214/hello-world/nuxt/.gitignore delete mode 100644 pr-preview/pr-214/hello-world/nuxt/README.md delete mode 100644 pr-preview/pr-214/hello-world/nuxt/app.vue delete mode 100644 pr-preview/pr-214/hello-world/nuxt/assets/logo.svg delete mode 100644 pr-preview/pr-214/hello-world/nuxt/assets/main.css delete mode 100644 pr-preview/pr-214/hello-world/nuxt/components/ImageCapture.client.vue delete mode 100644 pr-preview/pr-214/hello-world/nuxt/components/VideoCapture.client.vue delete mode 100644 pr-preview/pr-214/hello-world/nuxt/dynamsoft.config.ts delete mode 100644 pr-preview/pr-214/hello-world/nuxt/nuxt.config.ts delete mode 100644 pr-preview/pr-214/hello-world/nuxt/package.json delete mode 100644 pr-preview/pr-214/hello-world/nuxt/public/favicon.ico delete mode 100644 pr-preview/pr-214/hello-world/nuxt/tsconfig.json delete mode 100644 pr-preview/pr-214/hello-world/pwa/README.md delete mode 100644 pr-preview/pr-214/hello-world/pwa/dynamsoft-192x192.png delete mode 100644 pr-preview/pr-214/hello-world/pwa/dynamsoft-512x512.png delete mode 100644 pr-preview/pr-214/hello-world/pwa/helloworld-pwa.html delete mode 100644 pr-preview/pr-214/hello-world/pwa/helloworld-pwa.json delete mode 100644 pr-preview/pr-214/hello-world/pwa/service-worker.js delete mode 100644 pr-preview/pr-214/hello-world/react-hooks/.gitignore delete mode 100644 pr-preview/pr-214/hello-world/react-hooks/README.md delete mode 100644 pr-preview/pr-214/hello-world/react-hooks/package.json delete mode 100644 pr-preview/pr-214/hello-world/react-hooks/public/favicon.ico delete mode 100644 pr-preview/pr-214/hello-world/react-hooks/public/index.html delete mode 100644 pr-preview/pr-214/hello-world/react-hooks/public/logo192.png delete mode 100644 pr-preview/pr-214/hello-world/react-hooks/public/logo512.png delete mode 100644 pr-preview/pr-214/hello-world/react-hooks/public/manifest.json delete mode 100644 pr-preview/pr-214/hello-world/react-hooks/src/App.css delete mode 100644 pr-preview/pr-214/hello-world/react-hooks/src/App.tsx delete mode 100644 pr-preview/pr-214/hello-world/react-hooks/src/assets/logo.svg delete mode 100644 pr-preview/pr-214/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.css delete mode 100644 pr-preview/pr-214/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx delete mode 100644 pr-preview/pr-214/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.css delete mode 100644 pr-preview/pr-214/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.tsx delete mode 100644 pr-preview/pr-214/hello-world/react-hooks/src/dynamsoft.config.ts delete mode 100644 pr-preview/pr-214/hello-world/react-hooks/src/index.css delete mode 100644 pr-preview/pr-214/hello-world/react-hooks/src/index.tsx delete mode 100644 pr-preview/pr-214/hello-world/react-hooks/src/react-app-env.d.ts delete mode 100644 pr-preview/pr-214/hello-world/react-hooks/tsconfig.json delete mode 100644 pr-preview/pr-214/hello-world/react/.gitignore delete mode 100644 pr-preview/pr-214/hello-world/react/README.md delete mode 100644 pr-preview/pr-214/hello-world/react/package.json delete mode 100644 pr-preview/pr-214/hello-world/react/public/favicon.ico delete mode 100644 pr-preview/pr-214/hello-world/react/public/index.html delete mode 100644 pr-preview/pr-214/hello-world/react/public/logo192.png delete mode 100644 pr-preview/pr-214/hello-world/react/public/logo512.png delete mode 100644 pr-preview/pr-214/hello-world/react/public/manifest.json delete mode 100644 pr-preview/pr-214/hello-world/react/public/robots.txt delete mode 100644 pr-preview/pr-214/hello-world/react/src/App.css delete mode 100644 pr-preview/pr-214/hello-world/react/src/App.tsx delete mode 100644 pr-preview/pr-214/hello-world/react/src/assets/logo.svg delete mode 100644 pr-preview/pr-214/hello-world/react/src/components/ImageCapture/ImageCapture.css delete mode 100644 pr-preview/pr-214/hello-world/react/src/components/ImageCapture/ImageCapture.tsx delete mode 100644 pr-preview/pr-214/hello-world/react/src/components/VideoCapture/VideoCapture.css delete mode 100644 pr-preview/pr-214/hello-world/react/src/components/VideoCapture/VideoCapture.tsx delete mode 100644 pr-preview/pr-214/hello-world/react/src/dynamsoft.config.ts delete mode 100644 pr-preview/pr-214/hello-world/react/src/index.css delete mode 100644 pr-preview/pr-214/hello-world/react/src/index.tsx delete mode 100644 pr-preview/pr-214/hello-world/react/src/logo.svg delete mode 100644 pr-preview/pr-214/hello-world/react/src/react-app-env.d.ts delete mode 100644 pr-preview/pr-214/hello-world/react/tsconfig.json delete mode 100644 pr-preview/pr-214/hello-world/read-an-image.html delete mode 100644 pr-preview/pr-214/hello-world/requirejs.html delete mode 100644 pr-preview/pr-214/hello-world/svelte/.gitignore delete mode 100644 pr-preview/pr-214/hello-world/svelte/README.md delete mode 100644 pr-preview/pr-214/hello-world/svelte/index.html delete mode 100644 pr-preview/pr-214/hello-world/svelte/package.json delete mode 100644 pr-preview/pr-214/hello-world/svelte/src/App.svelte delete mode 100644 pr-preview/pr-214/hello-world/svelte/src/components/ImageCapture.svelte delete mode 100644 pr-preview/pr-214/hello-world/svelte/src/components/VideoCapture.svelte delete mode 100644 pr-preview/pr-214/hello-world/svelte/src/dynamsoft.config.ts delete mode 100644 pr-preview/pr-214/hello-world/svelte/src/main.ts delete mode 100644 pr-preview/pr-214/hello-world/svelte/src/vite-env.d.ts delete mode 100644 pr-preview/pr-214/hello-world/svelte/svelte.config.js delete mode 100644 pr-preview/pr-214/hello-world/svelte/tsconfig.json delete mode 100644 pr-preview/pr-214/hello-world/svelte/tsconfig.node.json delete mode 100644 pr-preview/pr-214/hello-world/svelte/vite.config.ts delete mode 100644 pr-preview/pr-214/hello-world/vue/.gitignore delete mode 100644 pr-preview/pr-214/hello-world/vue/README.md delete mode 100644 pr-preview/pr-214/hello-world/vue/env.d.ts delete mode 100644 pr-preview/pr-214/hello-world/vue/index.html delete mode 100644 pr-preview/pr-214/hello-world/vue/package.json delete mode 100644 pr-preview/pr-214/hello-world/vue/public/favicon.ico delete mode 100644 pr-preview/pr-214/hello-world/vue/src/App.vue delete mode 100644 pr-preview/pr-214/hello-world/vue/src/assets/logo.svg delete mode 100644 pr-preview/pr-214/hello-world/vue/src/assets/main.css delete mode 100644 pr-preview/pr-214/hello-world/vue/src/components/ImageCapture.vue delete mode 100644 pr-preview/pr-214/hello-world/vue/src/components/VideoCapture.vue delete mode 100644 pr-preview/pr-214/hello-world/vue/src/dynamsoft.config.ts delete mode 100644 pr-preview/pr-214/hello-world/vue/src/main.ts delete mode 100644 pr-preview/pr-214/hello-world/vue/tsconfig.config.json delete mode 100644 pr-preview/pr-214/hello-world/vue/tsconfig.json delete mode 100644 pr-preview/pr-214/hello-world/vue/vite.config.ts delete mode 100644 pr-preview/pr-214/hello-world/webview/android/.gitignore delete mode 100644 pr-preview/pr-214/hello-world/webview/android/README.md delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/.gitignore delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/build.gradle delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/proguard-rules.pro delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/AndroidManifest.xml delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/drawable/ic_launcher_background.xml delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/layout/activity_main.xml delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values-night/themes.xml delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values/colors.xml delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values/strings.xml delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values/themes.xml delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/xml/backup_rules.xml delete mode 100644 pr-preview/pr-214/hello-world/webview/android/app/src/main/res/xml/data_extraction_rules.xml delete mode 100644 pr-preview/pr-214/hello-world/webview/android/build.gradle delete mode 100644 pr-preview/pr-214/hello-world/webview/android/gradle.properties delete mode 100644 pr-preview/pr-214/hello-world/webview/android/gradle/wrapper/gradle-wrapper.jar delete mode 100644 pr-preview/pr-214/hello-world/webview/android/gradle/wrapper/gradle-wrapper.properties delete mode 100644 pr-preview/pr-214/hello-world/webview/android/gradlew delete mode 100644 pr-preview/pr-214/hello-world/webview/android/gradlew.bat delete mode 100644 pr-preview/pr-214/hello-world/webview/android/settings.gradle delete mode 100644 pr-preview/pr-214/hello-world/webview/ios/.gitignore delete mode 100644 pr-preview/pr-214/hello-world/webview/ios/README.md delete mode 100644 pr-preview/pr-214/hello-world/webview/ios/dbrjswebview.xcodeproj/project.pbxproj delete mode 100644 pr-preview/pr-214/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 pr-preview/pr-214/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/AppDelegate.swift delete mode 100644 pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json delete mode 100644 pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Assets.xcassets/Contents.json delete mode 100644 pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard delete mode 100644 pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Base.lproj/Main.storyboard delete mode 100644 pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Info.plist delete mode 100644 pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/SceneDelegate.swift delete mode 100644 pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/ViewController.swift delete mode 100644 pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html delete mode 100644 pr-preview/pr-214/index.html delete mode 100644 pr-preview/pr-214/logo-dynamsoft-black.svg delete mode 100644 pr-preview/pr-214/others/debug/.gitignore delete mode 100644 pr-preview/pr-214/others/debug/README.md delete mode 100644 pr-preview/pr-214/others/debug/app.js delete mode 100644 pr-preview/pr-214/others/debug/package.json delete mode 100644 pr-preview/pr-214/others/debug/pem/ryans-cert.pem delete mode 100644 pr-preview/pr-214/others/debug/pem/ryans-csr.pem delete mode 100644 pr-preview/pr-214/others/debug/pem/ryans-key.pem delete mode 100644 pr-preview/pr-214/others/debug/public/index.html delete mode 100644 pr-preview/pr-214/use-case/README.md delete mode 100644 pr-preview/pr-214/use-case/fill-a-form-with-barcode-reading.html delete mode 100644 pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/checkmark-icon.svg delete mode 100644 pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/cross-icon.svg delete mode 100644 pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/dynamsoft-logo.png delete mode 100644 pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/scan-barcode-icon.svg delete mode 100644 pr-preview/pr-214/use-case/locate-an-item-with-barcode/index.html delete mode 100644 pr-preview/pr-214/use-case/read-a-drivers-license/SampleDriversLicense.jpg delete mode 100644 pr-preview/pr-214/use-case/read-a-drivers-license/index.html delete mode 100644 pr-preview/pr-214/use-case/read-a-drivers-license/style.css delete mode 100644 pr-preview/pr-214/use-case/show-result-texts-on-the-video.html diff --git a/pr-preview/pr-214/balloon.min.css b/pr-preview/pr-214/balloon.min.css deleted file mode 100644 index 41920a5d..00000000 --- a/pr-preview/pr-214/balloon.min.css +++ /dev/null @@ -1 +0,0 @@ -:root{--balloon-border-radius: 2px;--balloon-color: rgba(16,16,16,0.95);--balloon-text-color: #fff;--balloon-font-size: 12px;--balloon-move: 4px}button[aria-label][data-balloon-pos]{overflow:visible}[aria-label][data-balloon-pos]{position:relative;cursor:pointer}[aria-label][data-balloon-pos]:after{opacity:0;pointer-events:none;transition:all 0.18s ease-out 0.18s;text-indent:0;font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;font-weight:normal;font-style:normal;text-shadow:none;font-size:var(--balloon-font-size);background:var(--balloon-color);border-radius:2px;color:var(--balloon-text-color);border-radius:var(--balloon-border-radius);content:attr(aria-label);padding:.5em 1em;position:absolute;white-space:nowrap;z-index:10}[aria-label][data-balloon-pos]:before{width:0;height:0;border:5px solid transparent;border-top-color:var(--balloon-color);opacity:0;pointer-events:none;transition:all 0.18s ease-out 0.18s;content:"";position:absolute;z-index:10}[aria-label][data-balloon-pos]:hover:before,[aria-label][data-balloon-pos]:hover:after,[aria-label][data-balloon-pos][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-visible]:after,[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:before,[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:after{opacity:1;pointer-events:none}[aria-label][data-balloon-pos].font-awesome:after{font-family:FontAwesome, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif}[aria-label][data-balloon-pos][data-balloon-break]:after{white-space:pre}[aria-label][data-balloon-pos][data-balloon-break][data-balloon-length]:after{white-space:pre-line;word-break:break-word}[aria-label][data-balloon-pos][data-balloon-blunt]:before,[aria-label][data-balloon-pos][data-balloon-blunt]:after{transition:none}[aria-label][data-balloon-pos][data-balloon-pos="up"]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos="up"][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos="down"]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos="down"][data-balloon-visible]:after{transform:translate(-50%, 0)}[aria-label][data-balloon-pos][data-balloon-pos="up"]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos="up"][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos="down"]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos="down"][data-balloon-visible]:before{transform:translate(-50%, 0)}[aria-label][data-balloon-pos][data-balloon-pos*="-left"]:after{left:0}[aria-label][data-balloon-pos][data-balloon-pos*="-left"]:before{left:5px}[aria-label][data-balloon-pos][data-balloon-pos*="-right"]:after{right:0}[aria-label][data-balloon-pos][data-balloon-pos*="-right"]:before{right:5px}[aria-label][data-balloon-pos][data-balloon-po*="-left"]:hover:after,[aria-label][data-balloon-pos][data-balloon-po*="-left"][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos*="-right"]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos*="-right"][data-balloon-visible]:after{transform:translate(0, 0)}[aria-label][data-balloon-pos][data-balloon-po*="-left"]:hover:before,[aria-label][data-balloon-pos][data-balloon-po*="-left"][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos*="-right"]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos*="-right"][data-balloon-visible]:before{transform:translate(0, 0)}[aria-label][data-balloon-pos][data-balloon-pos^="up"]:before,[aria-label][data-balloon-pos][data-balloon-pos^="up"]:after{bottom:100%;transform-origin:top;transform:translate(0, var(--balloon-move))}[aria-label][data-balloon-pos][data-balloon-pos^="up"]:after{margin-bottom:10px}[aria-label][data-balloon-pos][data-balloon-pos="up"]:before,[aria-label][data-balloon-pos][data-balloon-pos="up"]:after{left:50%;transform:translate(-50%, var(--balloon-move))}[aria-label][data-balloon-pos][data-balloon-pos^="down"]:before,[aria-label][data-balloon-pos][data-balloon-pos^="down"]:after{top:100%;transform:translate(0, calc(var(--balloon-move) * -1))}[aria-label][data-balloon-pos][data-balloon-pos^="down"]:after{margin-top:10px}[aria-label][data-balloon-pos][data-balloon-pos^="down"]:before{width:0;height:0;border:5px solid transparent;border-bottom-color:var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-pos="down"]:after,[aria-label][data-balloon-pos][data-balloon-pos="down"]:before{left:50%;transform:translate(-50%, calc(var(--balloon-move) * -1))}[aria-label][data-balloon-pos][data-balloon-pos="left"]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos="left"][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos="right"]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos="right"][data-balloon-visible]:after{transform:translate(0, -50%)}[aria-label][data-balloon-pos][data-balloon-pos="left"]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos="left"][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos="right"]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos="right"][data-balloon-visible]:before{transform:translate(0, -50%)}[aria-label][data-balloon-pos][data-balloon-pos="left"]:after,[aria-label][data-balloon-pos][data-balloon-pos="left"]:before{right:100%;top:50%;transform:translate(var(--balloon-move), -50%)}[aria-label][data-balloon-pos][data-balloon-pos="left"]:after{margin-right:10px}[aria-label][data-balloon-pos][data-balloon-pos="left"]:before{width:0;height:0;border:5px solid transparent;border-left-color:var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-pos="right"]:after,[aria-label][data-balloon-pos][data-balloon-pos="right"]:before{left:100%;top:50%;transform:translate(calc(var(--balloon-move) * -1), -50%)}[aria-label][data-balloon-pos][data-balloon-pos="right"]:after{margin-left:10px}[aria-label][data-balloon-pos][data-balloon-pos="right"]:before{width:0;height:0;border:5px solid transparent;border-right-color:var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-length]:after{white-space:normal}[aria-label][data-balloon-pos][data-balloon-length="small"]:after{width:80px}[aria-label][data-balloon-pos][data-balloon-length="medium"]:after{width:150px}[aria-label][data-balloon-pos][data-balloon-length="large"]:after{width:260px}[aria-label][data-balloon-pos][data-balloon-length="xlarge"]:after{width:380px}@media screen and (max-width: 768px){[aria-label][data-balloon-pos][data-balloon-length="xlarge"]:after{width:90vw}}[aria-label][data-balloon-pos][data-balloon-length="fit"]:after{width:100%} diff --git a/pr-preview/pr-214/bare_pr_preview/HEAD b/pr-preview/pr-214/bare_pr_preview/HEAD deleted file mode 100644 index 747abf47..00000000 --- a/pr-preview/pr-214/bare_pr_preview/HEAD +++ /dev/null @@ -1 +0,0 @@ -b3a95bc3cdbc27d8941e9b74c5c294c9c9fcb12b diff --git a/pr-preview/pr-214/bare_pr_preview/config b/pr-preview/pr-214/bare_pr_preview/config deleted file mode 100644 index d14c1379..00000000 --- a/pr-preview/pr-214/bare_pr_preview/config +++ /dev/null @@ -1,6 +0,0 @@ -[core] - repositoryformatversion = 0 - filemode = true - bare = true -[remote "origin"] - url = https://github.com/rossjrw/pr-preview-action diff --git a/pr-preview/pr-214/bare_pr_preview/description b/pr-preview/pr-214/bare_pr_preview/description deleted file mode 100755 index 498b267a..00000000 --- a/pr-preview/pr-214/bare_pr_preview/description +++ /dev/null @@ -1 +0,0 @@ -Unnamed repository; edit this file 'description' to name the repository. diff --git a/pr-preview/pr-214/bare_pr_preview/hooks/applypatch-msg.sample b/pr-preview/pr-214/bare_pr_preview/hooks/applypatch-msg.sample deleted file mode 100755 index a5d7b84a..00000000 --- a/pr-preview/pr-214/bare_pr_preview/hooks/applypatch-msg.sample +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -# -# An example hook script to check the commit log message taken by -# applypatch from an e-mail message. -# -# The hook should exit with non-zero status after issuing an -# appropriate message if it wants to stop the commit. The hook is -# allowed to edit the commit message file. -# -# To enable this hook, rename this file to "applypatch-msg". - -. git-sh-setup -commitmsg="$(git rev-parse --git-path hooks/commit-msg)" -test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} -: diff --git a/pr-preview/pr-214/bare_pr_preview/hooks/commit-msg.sample b/pr-preview/pr-214/bare_pr_preview/hooks/commit-msg.sample deleted file mode 100755 index b58d1184..00000000 --- a/pr-preview/pr-214/bare_pr_preview/hooks/commit-msg.sample +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# -# An example hook script to check the commit log message. -# Called by "git commit" with one argument, the name of the file -# that has the commit message. The hook should exit with non-zero -# status after issuing an appropriate message if it wants to stop the -# commit. The hook is allowed to edit the commit message file. -# -# To enable this hook, rename this file to "commit-msg". - -# Uncomment the below to add a Signed-off-by line to the message. -# Doing this in a hook is a bad idea in general, but the prepare-commit-msg -# hook is more suited to it. -# -# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') -# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" - -# This example catches duplicate Signed-off-by lines. - -test "" = "$(grep '^Signed-off-by: ' "$1" | - sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { - echo >&2 Duplicate Signed-off-by lines. - exit 1 -} diff --git a/pr-preview/pr-214/bare_pr_preview/hooks/fsmonitor-watchman.sample b/pr-preview/pr-214/bare_pr_preview/hooks/fsmonitor-watchman.sample deleted file mode 100755 index 23e856f5..00000000 --- a/pr-preview/pr-214/bare_pr_preview/hooks/fsmonitor-watchman.sample +++ /dev/null @@ -1,174 +0,0 @@ -#!/usr/bin/perl - -use strict; -use warnings; -use IPC::Open2; - -# An example hook script to integrate Watchman -# (https://facebook.github.io/watchman/) with git to speed up detecting -# new and modified files. -# -# The hook is passed a version (currently 2) and last update token -# formatted as a string and outputs to stdout a new update token and -# all files that have been modified since the update token. Paths must -# be relative to the root of the working tree and separated by a single NUL. -# -# To enable this hook, rename this file to "query-watchman" and set -# 'git config core.fsmonitor .git/hooks/query-watchman' -# -my ($version, $last_update_token) = @ARGV; - -# Uncomment for debugging -# print STDERR "$0 $version $last_update_token\n"; - -# Check the hook interface version -if ($version ne 2) { - die "Unsupported query-fsmonitor hook version '$version'.\n" . - "Falling back to scanning...\n"; -} - -my $git_work_tree = get_working_dir(); - -my $retry = 1; - -my $json_pkg; -eval { - require JSON::XS; - $json_pkg = "JSON::XS"; - 1; -} or do { - require JSON::PP; - $json_pkg = "JSON::PP"; -}; - -launch_watchman(); - -sub launch_watchman { - my $o = watchman_query(); - if (is_work_tree_watched($o)) { - output_result($o->{clock}, @{$o->{files}}); - } -} - -sub output_result { - my ($clockid, @files) = @_; - - # Uncomment for debugging watchman output - # open (my $fh, ">", ".git/watchman-output.out"); - # binmode $fh, ":utf8"; - # print $fh "$clockid\n@files\n"; - # close $fh; - - binmode STDOUT, ":utf8"; - print $clockid; - print "\0"; - local $, = "\0"; - print @files; -} - -sub watchman_clock { - my $response = qx/watchman clock "$git_work_tree"/; - die "Failed to get clock id on '$git_work_tree'.\n" . - "Falling back to scanning...\n" if $? != 0; - - return $json_pkg->new->utf8->decode($response); -} - -sub watchman_query { - my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty') - or die "open2() failed: $!\n" . - "Falling back to scanning...\n"; - - # In the query expression below we're asking for names of files that - # changed since $last_update_token but not from the .git folder. - # - # To accomplish this, we're using the "since" generator to use the - # recency index to select candidate nodes and "fields" to limit the - # output to file names only. Then we're using the "expression" term to - # further constrain the results. - my $last_update_line = ""; - if (substr($last_update_token, 0, 1) eq "c") { - $last_update_token = "\"$last_update_token\""; - $last_update_line = qq[\n"since": $last_update_token,]; - } - my $query = <<" END"; - ["query", "$git_work_tree", {$last_update_line - "fields": ["name"], - "expression": ["not", ["dirname", ".git"]] - }] - END - - # Uncomment for debugging the watchman query - # open (my $fh, ">", ".git/watchman-query.json"); - # print $fh $query; - # close $fh; - - print CHLD_IN $query; - close CHLD_IN; - my $response = do {local $/; }; - - # Uncomment for debugging the watch response - # open ($fh, ">", ".git/watchman-response.json"); - # print $fh $response; - # close $fh; - - die "Watchman: command returned no output.\n" . - "Falling back to scanning...\n" if $response eq ""; - die "Watchman: command returned invalid output: $response\n" . - "Falling back to scanning...\n" unless $response =~ /^\{/; - - return $json_pkg->new->utf8->decode($response); -} - -sub is_work_tree_watched { - my ($output) = @_; - my $error = $output->{error}; - if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) { - $retry--; - my $response = qx/watchman watch "$git_work_tree"/; - die "Failed to make watchman watch '$git_work_tree'.\n" . - "Falling back to scanning...\n" if $? != 0; - $output = $json_pkg->new->utf8->decode($response); - $error = $output->{error}; - die "Watchman: $error.\n" . - "Falling back to scanning...\n" if $error; - - # Uncomment for debugging watchman output - # open (my $fh, ">", ".git/watchman-output.out"); - # close $fh; - - # Watchman will always return all files on the first query so - # return the fast "everything is dirty" flag to git and do the - # Watchman query just to get it over with now so we won't pay - # the cost in git to look up each individual file. - my $o = watchman_clock(); - $error = $output->{error}; - - die "Watchman: $error.\n" . - "Falling back to scanning...\n" if $error; - - output_result($o->{clock}, ("/")); - $last_update_token = $o->{clock}; - - eval { launch_watchman() }; - return 0; - } - - die "Watchman: $error.\n" . - "Falling back to scanning...\n" if $error; - - return 1; -} - -sub get_working_dir { - my $working_dir; - if ($^O =~ 'msys' || $^O =~ 'cygwin') { - $working_dir = Win32::GetCwd(); - $working_dir =~ tr/\\/\//; - } else { - require Cwd; - $working_dir = Cwd::cwd(); - } - - return $working_dir; -} diff --git a/pr-preview/pr-214/bare_pr_preview/hooks/post-update.sample b/pr-preview/pr-214/bare_pr_preview/hooks/post-update.sample deleted file mode 100755 index ec17ec19..00000000 --- a/pr-preview/pr-214/bare_pr_preview/hooks/post-update.sample +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -# -# An example hook script to prepare a packed repository for use over -# dumb transports. -# -# To enable this hook, rename this file to "post-update". - -exec git update-server-info diff --git a/pr-preview/pr-214/bare_pr_preview/hooks/pre-applypatch.sample b/pr-preview/pr-214/bare_pr_preview/hooks/pre-applypatch.sample deleted file mode 100755 index 4142082b..00000000 --- a/pr-preview/pr-214/bare_pr_preview/hooks/pre-applypatch.sample +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# -# An example hook script to verify what is about to be committed -# by applypatch from an e-mail message. -# -# The hook should exit with non-zero status after issuing an -# appropriate message if it wants to stop the commit. -# -# To enable this hook, rename this file to "pre-applypatch". - -. git-sh-setup -precommit="$(git rev-parse --git-path hooks/pre-commit)" -test -x "$precommit" && exec "$precommit" ${1+"$@"} -: diff --git a/pr-preview/pr-214/bare_pr_preview/hooks/pre-commit.sample b/pr-preview/pr-214/bare_pr_preview/hooks/pre-commit.sample deleted file mode 100755 index 29ed5ee4..00000000 --- a/pr-preview/pr-214/bare_pr_preview/hooks/pre-commit.sample +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/sh -# -# An example hook script to verify what is about to be committed. -# Called by "git commit" with no arguments. The hook should -# exit with non-zero status after issuing an appropriate message if -# it wants to stop the commit. -# -# To enable this hook, rename this file to "pre-commit". - -if git rev-parse --verify HEAD >/dev/null 2>&1 -then - against=HEAD -else - # Initial commit: diff against an empty tree object - against=$(git hash-object -t tree /dev/null) -fi - -# If you want to allow non-ASCII filenames set this variable to true. -allownonascii=$(git config --type=bool hooks.allownonascii) - -# Redirect output to stderr. -exec 1>&2 - -# Cross platform projects tend to avoid non-ASCII filenames; prevent -# them from being added to the repository. We exploit the fact that the -# printable range starts at the space character and ends with tilde. -if [ "$allownonascii" != "true" ] && - # Note that the use of brackets around a tr range is ok here, (it's - # even required, for portability to Solaris 10's /usr/bin/tr), since - # the square bracket bytes happen to fall in the designated range. - test $(git diff-index --cached --name-only --diff-filter=A -z $against | - LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 -then - cat <<\EOF -Error: Attempt to add a non-ASCII file name. - -This can cause problems if you want to work with people on other platforms. - -To be portable it is advisable to rename the file. - -If you know what you are doing you can disable this check using: - - git config hooks.allownonascii true -EOF - exit 1 -fi - -# If there are whitespace errors, print the offending file names and fail. -exec git diff-index --check --cached $against -- diff --git a/pr-preview/pr-214/bare_pr_preview/hooks/pre-merge-commit.sample b/pr-preview/pr-214/bare_pr_preview/hooks/pre-merge-commit.sample deleted file mode 100755 index 399eab19..00000000 --- a/pr-preview/pr-214/bare_pr_preview/hooks/pre-merge-commit.sample +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -# -# An example hook script to verify what is about to be committed. -# Called by "git merge" with no arguments. The hook should -# exit with non-zero status after issuing an appropriate message to -# stderr if it wants to stop the merge commit. -# -# To enable this hook, rename this file to "pre-merge-commit". - -. git-sh-setup -test -x "$GIT_DIR/hooks/pre-commit" && - exec "$GIT_DIR/hooks/pre-commit" -: diff --git a/pr-preview/pr-214/bare_pr_preview/hooks/pre-push.sample b/pr-preview/pr-214/bare_pr_preview/hooks/pre-push.sample deleted file mode 100755 index 4ce688d3..00000000 --- a/pr-preview/pr-214/bare_pr_preview/hooks/pre-push.sample +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh - -# An example hook script to verify what is about to be pushed. Called by "git -# push" after it has checked the remote status, but before anything has been -# pushed. If this script exits with a non-zero status nothing will be pushed. -# -# This hook is called with the following parameters: -# -# $1 -- Name of the remote to which the push is being done -# $2 -- URL to which the push is being done -# -# If pushing without using a named remote those arguments will be equal. -# -# Information about the commits which are being pushed is supplied as lines to -# the standard input in the form: -# -# -# -# This sample shows how to prevent push of commits where the log message starts -# with "WIP" (work in progress). - -remote="$1" -url="$2" - -zero=$(git hash-object --stdin &2 "Found WIP commit in $local_ref, not pushing" - exit 1 - fi - fi -done - -exit 0 diff --git a/pr-preview/pr-214/bare_pr_preview/hooks/pre-rebase.sample b/pr-preview/pr-214/bare_pr_preview/hooks/pre-rebase.sample deleted file mode 100755 index 6cbef5c3..00000000 --- a/pr-preview/pr-214/bare_pr_preview/hooks/pre-rebase.sample +++ /dev/null @@ -1,169 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2006, 2008 Junio C Hamano -# -# The "pre-rebase" hook is run just before "git rebase" starts doing -# its job, and can prevent the command from running by exiting with -# non-zero status. -# -# The hook is called with the following parameters: -# -# $1 -- the upstream the series was forked from. -# $2 -- the branch being rebased (or empty when rebasing the current branch). -# -# This sample shows how to prevent topic branches that are already -# merged to 'next' branch from getting rebased, because allowing it -# would result in rebasing already published history. - -publish=next -basebranch="$1" -if test "$#" = 2 -then - topic="refs/heads/$2" -else - topic=`git symbolic-ref HEAD` || - exit 0 ;# we do not interrupt rebasing detached HEAD -fi - -case "$topic" in -refs/heads/??/*) - ;; -*) - exit 0 ;# we do not interrupt others. - ;; -esac - -# Now we are dealing with a topic branch being rebased -# on top of master. Is it OK to rebase it? - -# Does the topic really exist? -git show-ref -q "$topic" || { - echo >&2 "No such branch $topic" - exit 1 -} - -# Is topic fully merged to master? -not_in_master=`git rev-list --pretty=oneline ^master "$topic"` -if test -z "$not_in_master" -then - echo >&2 "$topic is fully merged to master; better remove it." - exit 1 ;# we could allow it, but there is no point. -fi - -# Is topic ever merged to next? If so you should not be rebasing it. -only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` -only_next_2=`git rev-list ^master ${publish} | sort` -if test "$only_next_1" = "$only_next_2" -then - not_in_topic=`git rev-list "^$topic" master` - if test -z "$not_in_topic" - then - echo >&2 "$topic is already up to date with master" - exit 1 ;# we could allow it, but there is no point. - else - exit 0 - fi -else - not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` - /usr/bin/perl -e ' - my $topic = $ARGV[0]; - my $msg = "* $topic has commits already merged to public branch:\n"; - my (%not_in_next) = map { - /^([0-9a-f]+) /; - ($1 => 1); - } split(/\n/, $ARGV[1]); - for my $elem (map { - /^([0-9a-f]+) (.*)$/; - [$1 => $2]; - } split(/\n/, $ARGV[2])) { - if (!exists $not_in_next{$elem->[0]}) { - if ($msg) { - print STDERR $msg; - undef $msg; - } - print STDERR " $elem->[1]\n"; - } - } - ' "$topic" "$not_in_next" "$not_in_master" - exit 1 -fi - -<<\DOC_END - -This sample hook safeguards topic branches that have been -published from being rewound. - -The workflow assumed here is: - - * Once a topic branch forks from "master", "master" is never - merged into it again (either directly or indirectly). - - * Once a topic branch is fully cooked and merged into "master", - it is deleted. If you need to build on top of it to correct - earlier mistakes, a new topic branch is created by forking at - the tip of the "master". This is not strictly necessary, but - it makes it easier to keep your history simple. - - * Whenever you need to test or publish your changes to topic - branches, merge them into "next" branch. - -The script, being an example, hardcodes the publish branch name -to be "next", but it is trivial to make it configurable via -$GIT_DIR/config mechanism. - -With this workflow, you would want to know: - -(1) ... if a topic branch has ever been merged to "next". Young - topic branches can have stupid mistakes you would rather - clean up before publishing, and things that have not been - merged into other branches can be easily rebased without - affecting other people. But once it is published, you would - not want to rewind it. - -(2) ... if a topic branch has been fully merged to "master". - Then you can delete it. More importantly, you should not - build on top of it -- other people may already want to - change things related to the topic as patches against your - "master", so if you need further changes, it is better to - fork the topic (perhaps with the same name) afresh from the - tip of "master". - -Let's look at this example: - - o---o---o---o---o---o---o---o---o---o "next" - / / / / - / a---a---b A / / - / / / / - / / c---c---c---c B / - / / / \ / - / / / b---b C \ / - / / / / \ / - ---o---o---o---o---o---o---o---o---o---o---o "master" - - -A, B and C are topic branches. - - * A has one fix since it was merged up to "next". - - * B has finished. It has been fully merged up to "master" and "next", - and is ready to be deleted. - - * C has not merged to "next" at all. - -We would want to allow C to be rebased, refuse A, and encourage -B to be deleted. - -To compute (1): - - git rev-list ^master ^topic next - git rev-list ^master next - - if these match, topic has not merged in next at all. - -To compute (2): - - git rev-list master..topic - - if this is empty, it is fully merged to "master". - -DOC_END diff --git a/pr-preview/pr-214/bare_pr_preview/hooks/pre-receive.sample b/pr-preview/pr-214/bare_pr_preview/hooks/pre-receive.sample deleted file mode 100755 index a1fd29ec..00000000 --- a/pr-preview/pr-214/bare_pr_preview/hooks/pre-receive.sample +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# -# An example hook script to make use of push options. -# The example simply echoes all push options that start with 'echoback=' -# and rejects all pushes when the "reject" push option is used. -# -# To enable this hook, rename this file to "pre-receive". - -if test -n "$GIT_PUSH_OPTION_COUNT" -then - i=0 - while test "$i" -lt "$GIT_PUSH_OPTION_COUNT" - do - eval "value=\$GIT_PUSH_OPTION_$i" - case "$value" in - echoback=*) - echo "echo from the pre-receive-hook: ${value#*=}" >&2 - ;; - reject) - exit 1 - esac - i=$((i + 1)) - done -fi diff --git a/pr-preview/pr-214/bare_pr_preview/hooks/prepare-commit-msg.sample b/pr-preview/pr-214/bare_pr_preview/hooks/prepare-commit-msg.sample deleted file mode 100755 index 10fa14c5..00000000 --- a/pr-preview/pr-214/bare_pr_preview/hooks/prepare-commit-msg.sample +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/sh -# -# An example hook script to prepare the commit log message. -# Called by "git commit" with the name of the file that has the -# commit message, followed by the description of the commit -# message's source. The hook's purpose is to edit the commit -# message file. If the hook fails with a non-zero status, -# the commit is aborted. -# -# To enable this hook, rename this file to "prepare-commit-msg". - -# This hook includes three examples. The first one removes the -# "# Please enter the commit message..." help message. -# -# The second includes the output of "git diff --name-status -r" -# into the message, just before the "git status" output. It is -# commented because it doesn't cope with --amend or with squashed -# commits. -# -# The third example adds a Signed-off-by line to the message, that can -# still be edited. This is rarely a good idea. - -COMMIT_MSG_FILE=$1 -COMMIT_SOURCE=$2 -SHA1=$3 - -/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE" - -# case "$COMMIT_SOURCE,$SHA1" in -# ,|template,) -# /usr/bin/perl -i.bak -pe ' -# print "\n" . `git diff --cached --name-status -r` -# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;; -# *) ;; -# esac - -# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') -# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE" -# if test -z "$COMMIT_SOURCE" -# then -# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE" -# fi diff --git a/pr-preview/pr-214/bare_pr_preview/hooks/push-to-checkout.sample b/pr-preview/pr-214/bare_pr_preview/hooks/push-to-checkout.sample deleted file mode 100755 index af5a0c00..00000000 --- a/pr-preview/pr-214/bare_pr_preview/hooks/push-to-checkout.sample +++ /dev/null @@ -1,78 +0,0 @@ -#!/bin/sh - -# An example hook script to update a checked-out tree on a git push. -# -# This hook is invoked by git-receive-pack(1) when it reacts to git -# push and updates reference(s) in its repository, and when the push -# tries to update the branch that is currently checked out and the -# receive.denyCurrentBranch configuration variable is set to -# updateInstead. -# -# By default, such a push is refused if the working tree and the index -# of the remote repository has any difference from the currently -# checked out commit; when both the working tree and the index match -# the current commit, they are updated to match the newly pushed tip -# of the branch. This hook is to be used to override the default -# behaviour; however the code below reimplements the default behaviour -# as a starting point for convenient modification. -# -# The hook receives the commit with which the tip of the current -# branch is going to be updated: -commit=$1 - -# It can exit with a non-zero status to refuse the push (when it does -# so, it must not modify the index or the working tree). -die () { - echo >&2 "$*" - exit 1 -} - -# Or it can make any necessary changes to the working tree and to the -# index to bring them to the desired state when the tip of the current -# branch is updated to the new commit, and exit with a zero status. -# -# For example, the hook can simply run git read-tree -u -m HEAD "$1" -# in order to emulate git fetch that is run in the reverse direction -# with git push, as the two-tree form of git read-tree -u -m is -# essentially the same as git switch or git checkout that switches -# branches while keeping the local changes in the working tree that do -# not interfere with the difference between the branches. - -# The below is a more-or-less exact translation to shell of the C code -# for the default behaviour for git's push-to-checkout hook defined in -# the push_to_deploy() function in builtin/receive-pack.c. -# -# Note that the hook will be executed from the repository directory, -# not from the working tree, so if you want to perform operations on -# the working tree, you will have to adapt your code accordingly, e.g. -# by adding "cd .." or using relative paths. - -if ! git update-index -q --ignore-submodules --refresh -then - die "Up-to-date check failed" -fi - -if ! git diff-files --quiet --ignore-submodules -- -then - die "Working directory has unstaged changes" -fi - -# This is a rough translation of: -# -# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX -if git cat-file -e HEAD 2>/dev/null -then - head=HEAD -else - head=$(git hash-object -t tree --stdin &2 - exit 1 -} - -unset GIT_DIR GIT_WORK_TREE -cd "$worktree" && - -if grep -q "^diff --git " "$1" -then - validate_patch "$1" -else - validate_cover_letter "$1" -fi && - -if test "$GIT_SENDEMAIL_FILE_COUNTER" = "$GIT_SENDEMAIL_FILE_TOTAL" -then - git config --unset-all sendemail.validateWorktree && - trap 'git worktree remove -ff "$worktree"' EXIT && - validate_series -fi diff --git a/pr-preview/pr-214/bare_pr_preview/hooks/update.sample b/pr-preview/pr-214/bare_pr_preview/hooks/update.sample deleted file mode 100755 index c4d426bc..00000000 --- a/pr-preview/pr-214/bare_pr_preview/hooks/update.sample +++ /dev/null @@ -1,128 +0,0 @@ -#!/bin/sh -# -# An example hook script to block unannotated tags from entering. -# Called by "git receive-pack" with arguments: refname sha1-old sha1-new -# -# To enable this hook, rename this file to "update". -# -# Config -# ------ -# hooks.allowunannotated -# This boolean sets whether unannotated tags will be allowed into the -# repository. By default they won't be. -# hooks.allowdeletetag -# This boolean sets whether deleting tags will be allowed in the -# repository. By default they won't be. -# hooks.allowmodifytag -# This boolean sets whether a tag may be modified after creation. By default -# it won't be. -# hooks.allowdeletebranch -# This boolean sets whether deleting branches will be allowed in the -# repository. By default they won't be. -# hooks.denycreatebranch -# This boolean sets whether remotely creating branches will be denied -# in the repository. By default this is allowed. -# - -# --- Command line -refname="$1" -oldrev="$2" -newrev="$3" - -# --- Safety check -if [ -z "$GIT_DIR" ]; then - echo "Don't run this script from the command line." >&2 - echo " (if you want, you could supply GIT_DIR then run" >&2 - echo " $0 )" >&2 - exit 1 -fi - -if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then - echo "usage: $0 " >&2 - exit 1 -fi - -# --- Config -allowunannotated=$(git config --type=bool hooks.allowunannotated) -allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch) -denycreatebranch=$(git config --type=bool hooks.denycreatebranch) -allowdeletetag=$(git config --type=bool hooks.allowdeletetag) -allowmodifytag=$(git config --type=bool hooks.allowmodifytag) - -# check for no description -projectdesc=$(sed -e '1q' "$GIT_DIR/description") -case "$projectdesc" in -"Unnamed repository"* | "") - echo "*** Project description file hasn't been set" >&2 - exit 1 - ;; -esac - -# --- Check types -# if $newrev is 0000...0000, it's a commit to delete a ref. -zero=$(git hash-object --stdin &2 - echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 - exit 1 - fi - ;; - refs/tags/*,delete) - # delete tag - if [ "$allowdeletetag" != "true" ]; then - echo "*** Deleting a tag is not allowed in this repository" >&2 - exit 1 - fi - ;; - refs/tags/*,tag) - # annotated tag - if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 - then - echo "*** Tag '$refname' already exists." >&2 - echo "*** Modifying a tag is not allowed in this repository." >&2 - exit 1 - fi - ;; - refs/heads/*,commit) - # branch - if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then - echo "*** Creating a branch is not allowed in this repository" >&2 - exit 1 - fi - ;; - refs/heads/*,delete) - # delete branch - if [ "$allowdeletebranch" != "true" ]; then - echo "*** Deleting a branch is not allowed in this repository" >&2 - exit 1 - fi - ;; - refs/remotes/*,commit) - # tracking branch - ;; - refs/remotes/*,delete) - # delete tracking branch - if [ "$allowdeletebranch" != "true" ]; then - echo "*** Deleting a tracking branch is not allowed in this repository" >&2 - exit 1 - fi - ;; - *) - # Anything else (is there anything else?) - echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 - exit 1 - ;; -esac - -# --- Finished -exit 0 diff --git a/pr-preview/pr-214/bare_pr_preview/info/exclude b/pr-preview/pr-214/bare_pr_preview/info/exclude deleted file mode 100755 index a5196d1b..00000000 --- a/pr-preview/pr-214/bare_pr_preview/info/exclude +++ /dev/null @@ -1,6 +0,0 @@ -# git ls-files --others --exclude-from=.git/info/exclude -# Lines that start with '#' are comments. -# For a project mostly in C, the following would be a good set of -# exclude patterns (uncomment them if you want to use them): -# *.[oa] -# *~ diff --git a/pr-preview/pr-214/bare_pr_preview/objects/pack/pack-f5043bd2e7bb236c48717782ed0d5d532770bc9d.idx b/pr-preview/pr-214/bare_pr_preview/objects/pack/pack-f5043bd2e7bb236c48717782ed0d5d532770bc9d.idx deleted file mode 100644 index 2382da199a7d3dee3604e9750f36f382d02b655c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8800 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 SKAPLyl-@t9IiJ(!+5aCX2Z)jY diff --git a/pr-preview/pr-214/bare_pr_preview/objects/pack/pack-f5043bd2e7bb236c48717782ed0d5d532770bc9d.pack b/pr-preview/pr-214/bare_pr_preview/objects/pack/pack-f5043bd2e7bb236c48717782ed0d5d532770bc9d.pack deleted file mode 100644 index ba9c1516052e3a63faa5f059b6d49fdc2199dd4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110704 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 F{{mr@6Jr1X diff --git a/pr-preview/pr-214/bare_pr_preview/objects/pack/pack-f5043bd2e7bb236c48717782ed0d5d532770bc9d.rev b/pr-preview/pr-214/bare_pr_preview/objects/pack/pack-f5043bd2e7bb236c48717782ed0d5d532770bc9d.rev deleted file mode 100644 index 9700a775aab919f6c0214bf37c9e6bba44e31205..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1156 zcmXZa34GUM90%~RBV$tYWdS}13zR>r1vC`VKX zZFD-yy^^!gHMEUlj*7gW*USI)dcQu;^ZWh2&-48~|6g|B%qt=yA`bcA%`%Bre8j_) z63u;_##`*?9j@eOwjORJ3cz_&Uq=H;#5WbOE+VCaE@+oUL zo!LCjJU-+s7BG&BnM)K$a1Wz+RUhI1{+==(A%$=F&b=e$0jBXQU0e(Gx3HMU%ny}C z?B)hG5q|IT3t^334C4;|;%tVnRek8`BHHqqc}v-kDZEE_PNgUFDd8X|^8v?D&LaAg z&vZ_rJtxwG?L0+qmhmLpID^-Cg&0=R#JAkWM$Vx#)lB4gea6Xwtmk}l5pg+VSV%T= z_=lr;gNGPEBsI)pAK?t2=20fmm#+NDUDWeBVUyzsXEd2+61aeF+(@OzV&zqw&>WRs pS6`D<(5JYxtT8?}C%LG$GBq)!p*k%iFSaT%E5BV~WqCPCLMMV$<|DcH!y!jbg`~p2zXlI>y^Imq-%AT%EmT1@kg2>Txs4n83q zUL_oPMmYAIaQr3V#4Ez7HNu&BwYJUxc-H3>pS7jPr_ZMd%p-P>!gmx z&v6FE85o%iq-mOuB?%j{Y=m=pspmsuOkEarW~RN=&oK*gxG|we>^y1VY(FpawJ1=y z4>ztj@qQ2Q!M%brZVZ<|8L`(_7aE!|Gm2Ub=g$V|_`a7;oRF1glT=CLuu3Eqq?o2#tTxm+iu&69h;`isz(SI7OcFgj?gf5YT1~fkj zbRIZx?y~?DRjBn_m{Y0vRnGJ&G@MX2%{o5kV%mxHKux)oKlSdD8pBtu9sa!SIiG=p zvjg1wf5c)21I|Sr_r}$T2ARX%S?{^9dFbIo^37*9PDDMa*vaio|Nc(X5}RUMe26dc zDZZsok#}h^_4<_j?;^ZgOP?bB$pP+54n1`}$qT~C*V>PqenU9N{mA)ugbPfUK4@QZ zH7-IaU=@WsQWQ>&e{0lK!m zg_v The image source in our case is a CameraEnhancer object created with `Dynamsoft.DCE.CameraEnhancer.createInstance(view)` - - **Coordinate Image-Processing Tasks** - - The coordination happens behind the scenes. `cvRouter` starts the process by specifying a preset template "ReadSingleBarcode" with 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 `resultReceiver` is registered to `cvRouter` via the method `addResultReceiver()`. - ```js - cvRouter.addResultReceiver(resultReceiver); - ``` - - Also note that reading from video is extremely fast and there could be many duplicate results. We can use a `MultiFrameResultCrossFilter` object 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). - -## Hello World - Read Barcodes from an Image - -The second sample processes static images and returns barcode results. - -In this sample, an event listener is set up so that the SDK decodes any images that the user uploads. - -When working with the CaptureVisionRouter class for single image processing, the main method to use is [`capture`](https://dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/single-file-processing.html?product=dbr&repoType=web#capture), You can find more details about this method at the link above. - -## Hello World in Angular - -Read more in the README under "angular". - -## Hello World in React - -Read more in the README under "react". - -## Hello World in React using Hooks - -Read more in the README under "react-hooks". - -## Hello World in Vue - -Read more in the README under "vue". - -## Hello World in Next.js - -Read more in the README under "next". - -## Hello World in NuxtJS - -Read more in the README under "nuxt". - -## Hello World in Electron - -Read more in the README under "electron". - -## Hello World in PWA - -Read more in the README under "pwa". - -## Hello World with RequireJS - -This sample shows how to use the SDK in a web page based on RequireJS. - -## Hello World with ES6 - -This sample shows how to use the SDK in a web page based on ES6 (also known as ECMAScript 2015 or ECMAScript 6). - -## Hello World with WebView - -Read more in the README under "webview". - -## Support - -If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/pr-preview/pr-214/hello-world/angular/.editorconfig b/pr-preview/pr-214/hello-world/angular/.editorconfig deleted file mode 100644 index 59d9a3a3..00000000 --- a/pr-preview/pr-214/hello-world/angular/.editorconfig +++ /dev/null @@ -1,16 +0,0 @@ -# Editor configuration, see https://editorconfig.org -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -insert_final_newline = true -trim_trailing_whitespace = true - -[*.ts] -quote_type = single - -[*.md] -max_line_length = off -trim_trailing_whitespace = false diff --git a/pr-preview/pr-214/hello-world/angular/.gitignore b/pr-preview/pr-214/hello-world/angular/.gitignore deleted file mode 100644 index 4ff8f4e9..00000000 --- a/pr-preview/pr-214/hello-world/angular/.gitignore +++ /dev/null @@ -1,44 +0,0 @@ -# See https://docs.github.com/get-started/getting-started-with-git/ignoring-files for more about ignoring files. - -# Compiled output -/dist -/tmp -/out-tsc -/bazel-out - -# Node -/node_modules -npm-debug.log -yarn-error.log - -# IDEs and editors -.idea/ -.project -.classpath -.c9/ -*.launch -.settings/ -*.sublime-workspace - -# Visual Studio Code -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -.history/* - -# Miscellaneous -/.angular/cache -.sass-cache/ -/connect.lock -/coverage -/libpeerconnection.log -testem.log -/typings - -# System files -.DS_Store -Thumbs.db - -package-lock.json diff --git a/pr-preview/pr-214/hello-world/angular/README.md b/pr-preview/pr-214/hello-world/angular/README.md deleted file mode 100644 index d879e6ca..00000000 --- a/pr-preview/pr-214/hello-world/angular/README.md +++ /dev/null @@ -1,433 +0,0 @@ -# Hello World Sample for Angular - -[Angular](https://angular.dev/) is one of the most popular and mature JavaScript frameworks. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into an Angular application. Note that in this sample, `TypeScript` is used. - -In this guide, we will be using [`dynamsoft-barcode-reader-bundle 10.2.1000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/10.2.1000). - -> Note: -> -> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! -> -> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. - -## Official sample - -* Hello World in Angular - Source Code - -## Preparation -Make sure you have [node](https://nodejs.org/) and [Angular CLI](https://cli.angular.io/) installed. - -This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.3.7. - -## Quick Start - -1. Install project dependencies - -```cmd -npm install -``` - -2. Build and serve the Angular app - -```cmd -ng serve -``` - -Then open `https://localhost:4200/` to view the sample app. - -## Creating the sample project - -In this section, we will be creating an Angular application utilizing the Dynamsoft Barcode Reader bundle sdk. - -We'll be exploring how you could create a page that not only enables barcode scanning via a webcam or a built-in camera, but also decode barcodes from local images. - -By the end of this guide, you'll have a good understanding of the SDK and be ready to discover more ways to use it! - -### Create an [Angular](https://angular.dev) Application bootstrapped with [Angular CLI](https://cli.angular.io/) -```cmd -ng new my-app -``` - -On installation, you will be prompted to configure your project.\ -You can customize these options according to your preferences.\ -Below is the configuration used for this sample. - -``` -? Which stylesheet format would you like to use? CSS -? Do you want to enable Server-Side Rendering (SSR) and Static Site Generation (SSG/Prerendering)? No -``` - -On installation, you will be prompted to configure your project.\ -You can customize these options according to your preferences.\ -Below is the configuration used for this sample. - -### **CD** to the root directory of the application and install necessary libraries - -```cmd -cd my-app -npm install dynamsoft-barcode-reader-bundle -E -``` - -## Start to implement - -### Add file "dynamsoft.config.ts" at the root of the app to configure libraries - -```typescript -/* /dynamsoft.config.ts */ -import { CoreModule } from 'dynamsoft-core'; -import { LicenseManager } from 'dynamsoft-license'; -import 'dynamsoft-barcode-reader'; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths = { - std: 'https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/', - dip: 'https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/', - core: 'https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/', - license: 'https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/', - cvr: 'https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/', - dbr: 'https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/', - dce: 'https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/', -}; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense('DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9', true); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(['DBR']); -``` - -> Note: -> -> * `initLicense()` specify a license key to use the library. You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=sample&product=dbr&package=js to get your own trial license good for 30 days. -> * `engineResourcePaths` tells the library where to get the necessary resources at runtime. - -### Generate and edit the `video-capture` component - -* Generate the `video-capture`. The `video-capture` component helps decode barcodes via camera. - -```cmd -ng generate component video-capture -``` - -* In `video-capture.component.html`, add code to setup the component's HTML - -```html - -
-
-Results: -
-``` - -* In `video-capture.component.ts`, add code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```ts -/* /src/app/video-capture/video-capture.component.ts */ -import { Component, ElementRef, ViewChild } from '@angular/core'; -import '../dynamsoft.config'; -import { CameraEnhancer, CameraView } from 'dynamsoft-camera-enhancer'; -import { CaptureVisionRouter } from 'dynamsoft-capture-vision-router'; -import { MultiFrameResultCrossFilter } from 'dynamsoft-utility'; - -const componentDestroyedErrorMsg = 'VideoCapture Component Destroyed'; - -@Component({ - selector: 'app-video-capture', - templateUrl: './video-capture.component.html', - styleUrls: ['./video-capture.component.css'], - standalone: true, -}) -export class VideoCaptureComponent { - @ViewChild('cameraViewContainer') cameraViewContainer?: ElementRef; - @ViewChild('results') resultsContainer?: ElementRef; - - resolveInit?: () => void; - pInit: Promise = new Promise((r) => { - this.resolveInit = r; - }); - isDestroyed = false; - - cvRouter?: CaptureVisionRouter; - cameraEnhancer?: CameraEnhancer; - - async ngAfterViewInit(): Promise { - try { - // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. - const cameraView = await CameraView.createInstance(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } // Check if component is destroyed after every async - this.cameraEnhancer = await CameraEnhancer.createInstance(cameraView); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Get default UI and append it to DOM. - this.cameraViewContainer!.nativeElement.append(cameraView.getUIElement()); - - // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. - this.cvRouter = await CaptureVisionRouter.createInstance(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - this.cvRouter.setInput(this.cameraEnhancer); - - // Define a callback for results. - this.cvRouter.addResultReceiver({ - onDecodedBarcodesReceived: (result) => { - if (!result.barcodeResultItems.length) return; - - this.resultsContainer!.nativeElement.textContent = ''; - console.log(result); - for (let item of result.barcodeResultItems) { - this.resultsContainer!.nativeElement.textContent += `${item.formatString}: ${item.text}\n\n`; - } - }, - }); - - // Filter out unchecked and duplicate results. - const filter = new MultiFrameResultCrossFilter(); - // Filter out unchecked barcodes. - filter.enableResultCrossVerification('barcode', true); - // Filter out duplicate barcodes within 3 seconds. - filter.enableResultDeduplication('barcode', true); - await this.cvRouter.addResultFilter(filter); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Open camera and start scanning single barcode. - await this.cameraEnhancer.open(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - await this.cvRouter.startCapturing('ReadSingleBarcode'); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - } catch (ex: any) { - if ((ex as Error)?.message === componentDestroyedErrorMsg) { - console.log(componentDestroyedErrorMsg); - } else { - let errMsg = ex.message || ex; - console.error(errMsg); - alert(errMsg); - } - } - - // Resolve pInit promise once initialization is complete. - this.resolveInit!(); - } - - // dispose cvRouter when it's no longer needed - async ngOnDestroy() { - this.isDestroyed = true; - try { - // Wait for the pInit to complete before disposing resources. - await this.pInit; - this.cvRouter?.dispose(); - this.cameraEnhancer?.dispose(); - } catch (_) {} - } -} -``` -> Note: -> -> If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customize-the-ui) - - -### Generate and edit the `image-capture` component - -* Generate the `image-capture`. The `image-capture` component helps decode barcodes in an image. - -```cmd -ng generate component image-capture -``` - -* In `image-capture.component.html`, add code to setup the component's HTML - -```html - -
-
- -
-
-
-``` - -* In `image-capture.component.ts`, add code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```ts -/* /src/app/image-capture/image-capture.component.ts */ -import { Component, ViewChild, ElementRef } from '@angular/core'; -import '../dynamsoft.config'; -import { EnumCapturedResultItemType } from 'dynamsoft-core'; -import type { BarcodeResultItem } from 'dynamsoft-barcode-reader'; -import { CaptureVisionRouter } from 'dynamsoft-capture-vision-router'; - -@Component({ - selector: 'app-image-capture', - templateUrl: './image-capture.component.html', - styleUrls: ['./image-capture.component.css'], - standalone: true, -}) -export class ImageCaptureComponent { - @ViewChild('results') resultsContainer?: ElementRef; - - pCvRouter?: Promise; - isDestroyed = false; - - captureImage = async (e: Event) => { - let files = [...((e.target! as HTMLInputElement).files as any as File[])]; - (e.target! as HTMLInputElement).value = ''; // reset input - this.resultsContainer!.nativeElement.innerText = ''; - try { - // ensure cvRouter is created only once - const cvRouter = await (this.pCvRouter = - this.pCvRouter || CaptureVisionRouter.createInstance()); - if (this.isDestroyed) return; - - for (let file of files) { - // Decode selected image with 'ReadBarcodes_SpeedFirst' template. - const result = await cvRouter.capture(file, 'ReadBarcodes_SpeedFirst'); - if (this.isDestroyed) return; - - // Print file name if there's multiple files - if (files.length > 1) { - this.resultsContainer!.nativeElement.innerText += `\n${file.name}:\n`; - } - for (let _item of result.items) { - if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { - continue; // check if captured result item is a barcode - } - let item = _item as BarcodeResultItem; - this.resultsContainer!.nativeElement.innerText += item.text + '\n'; // output the decoded barcode text - console.log(item.text); - } - // If no items are found, display that no barcode was detected - if (!result.items.length) - this.resultsContainer!.nativeElement.innerText += - 'No barcode found\n'; - } - } catch (ex: any) { - let errMsg = ex.message || ex; - console.error(errMsg); - alert(errMsg); - } - }; - - // dispose cvRouter when it's no longer needed - async ngOnDestroy() { - this.isDestroyed = true; - if (this.pCvRouter) { - try { - (await this.pCvRouter).dispose(); - } catch (_) {} - } - } -} -``` - -### Add the `video-capture` and `image-capture` component to the `app` component - -* On the `app` component, we will edit the component so that it offers buttons to switch components between `video-capture` and `image-capture`. - -* In `app.component.html`, add the following code. - -```html - -
-
-

Hello World for Angular

-
-
- - -
- @if (mode === 'video') { - - } @else { - - } -
-``` - -* In `app.component.ts`, add the following code. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```ts -/* /src/app/app.component.ts */ -import { Component } from '@angular/core'; -import { NgStyle } from '@angular/common'; - -import { ImageCaptureComponent } from './image-capture/image-capture.component'; -import { VideoCaptureComponent } from './video-capture/video-capture.component'; - -@Component({ - selector: 'app-root', - standalone: true, - templateUrl: './app.component.html', - styleUrl: './app.component.css', - imports: [NgStyle, ImageCaptureComponent, VideoCaptureComponent], -}) -export class AppComponent { - title = 'dbrjs-angular-sample'; - - mode: string = 'video'; - - switchMode(value: string) { - this.mode = value; - } -} -``` - -* Try running the project. - -```cmd -ng serve -``` - -If you followed all the steps correctly, you will have a working page that turns one of the cameras hooked to or built in your computer or mobile device into a barcode scanner. Also, if you want to decode a local image, just click the `Decode Image` button and select the image you want to decode. Once barcodes are found, the results will show in a dialog. - -## Code scaffolding - -Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. - -## Build - -Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. - -## Running unit tests - -Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). - -## Running end-to-end tests - -Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. - -## Further help - Angular - -To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. - -## Support - -If you have any questions, feel free to [contact Dynamsoft Support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/pr-preview/pr-214/hello-world/angular/angular.json b/pr-preview/pr-214/hello-world/angular/angular.json deleted file mode 100644 index 5b45adf1..00000000 --- a/pr-preview/pr-214/hello-world/angular/angular.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "$schema": "./node_modules/@angular/cli/lib/config/schema.json", - "version": 1, - "newProjectRoot": "projects", - "projects": { - "dbrjs-sample-angular": { - "projectType": "application", - "schematics": {}, - "root": "", - "sourceRoot": "src", - "prefix": "app", - "architect": { - "build": { - "builder": "@angular-devkit/build-angular:application", - "options": { - "outputPath": "dist/dbrjs-sample-angular", - "index": "src/index.html", - "browser": "src/main.ts", - "polyfills": [ - "zone.js" - ], - "tsConfig": "tsconfig.app.json", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "src/styles.css" - ], - "scripts": [] - }, - "configurations": { - "production": { - "budgets": [ - { - "type": "initial", - "maximumWarning": "500kb", - "maximumError": "1mb" - }, - { - "type": "anyComponentStyle", - "maximumWarning": "2kb", - "maximumError": "4kb" - } - ], - "outputHashing": "all" - }, - "development": { - "optimization": false, - "extractLicenses": false, - "sourceMap": true - } - }, - "defaultConfiguration": "production" - }, - "serve": { - "builder": "@angular-devkit/build-angular:dev-server", - "configurations": { - "production": { - "buildTarget": "dbrjs-sample-angular:build:production" - }, - "development": { - "buildTarget": "dbrjs-sample-angular:build:development" - } - }, - "defaultConfiguration": "development" - }, - "extract-i18n": { - "builder": "@angular-devkit/build-angular:extract-i18n", - "options": { - "buildTarget": "dbrjs-sample-angular:build" - } - }, - "test": { - "builder": "@angular-devkit/build-angular:karma", - "options": { - "polyfills": [ - "zone.js", - "zone.js/testing" - ], - "tsConfig": "tsconfig.spec.json", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "src/styles.css" - ], - "scripts": [] - } - } - } - } - } -} diff --git a/pr-preview/pr-214/hello-world/angular/package.json b/pr-preview/pr-214/hello-world/angular/package.json deleted file mode 100644 index 1feefa5d..00000000 --- a/pr-preview/pr-214/hello-world/angular/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "dbrjs-angular-sample", - "version": "0.0.0", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build", - "watch": "ng build --watch --configuration development", - "test": "ng test" - }, - "private": true, - "dependencies": { - "@angular/animations": "^17.3.0", - "@angular/common": "^17.3.0", - "@angular/compiler": "^17.3.0", - "@angular/core": "^17.3.0", - "@angular/forms": "^17.3.0", - "@angular/platform-browser": "^17.3.0", - "@angular/platform-browser-dynamic": "^17.3.0", - "@angular/router": "^17.3.0", - "rxjs": "~7.8.0", - "tslib": "^2.3.0", - "zone.js": "~0.14.3", - "dynamsoft-barcode-reader-bundle": "10.2.1000" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^17.3.7", - "@angular/cli": "^17.3.7", - "@angular/compiler-cli": "^17.3.0", - "@types/jasmine": "~5.1.0", - "jasmine-core": "~5.1.0", - "karma": "~6.4.0", - "karma-chrome-launcher": "~3.2.0", - "karma-coverage": "~2.2.0", - "karma-jasmine": "~5.1.0", - "karma-jasmine-html-reporter": "~2.1.0", - "typescript": "~5.4.2" - } -} \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/angular/src/app/app.component.css b/pr-preview/pr-214/hello-world/angular/src/app/app.component.css deleted file mode 100644 index 0ecbfcfd..00000000 --- a/pr-preview/pr-214/hello-world/angular/src/app/app.component.css +++ /dev/null @@ -1,42 +0,0 @@ -.title { - display: flex; - justify-content: center; - align-items: center; - margin-top: 20px; -} -.buttons-container { - width: 30%; - margin: 20px auto; -} -.buttons-container button { - display: inline-block; - border: 1px solid black; - padding: 5px 15px; - background-color: transparent; - cursor: pointer; -} -.buttons-container button:first-child { - border-top-left-radius: 10px; - border-bottom-left-radius: 10px; - border-right: transparent; -} -.buttons-container button:nth-child(2) { - border-top-right-radius: 10px; - border-bottom-right-radius: 10px; - border-left: transparent; -} - -@media screen and (max-width: 800px) { - .buttons-container { - width: 70%; - } -} - -@keyframes retate { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/pr-preview/pr-214/hello-world/angular/src/app/app.component.html b/pr-preview/pr-214/hello-world/angular/src/app/app.component.html deleted file mode 100644 index e48bd9d9..00000000 --- a/pr-preview/pr-214/hello-world/angular/src/app/app.component.html +++ /dev/null @@ -1,14 +0,0 @@ -
-
-

Hello World for Angular

-
-
- - -
- @if (mode === 'video') { - - } @else { - - } -
diff --git a/pr-preview/pr-214/hello-world/angular/src/app/app.component.ts b/pr-preview/pr-214/hello-world/angular/src/app/app.component.ts deleted file mode 100644 index ae5c2422..00000000 --- a/pr-preview/pr-214/hello-world/angular/src/app/app.component.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Component } from '@angular/core'; -import { NgStyle } from '@angular/common'; - -import { ImageCaptureComponent } from './image-capture/image-capture.component'; -import { VideoCaptureComponent } from './video-capture/video-capture.component'; - -@Component({ - selector: 'app-root', - standalone: true, - templateUrl: './app.component.html', - styleUrl: './app.component.css', - imports: [NgStyle, ImageCaptureComponent, VideoCaptureComponent], -}) -export class AppComponent { - title = 'dbrjs-angular-sample'; - - mode: string = 'video'; - - switchMode(value: string) { - this.mode = value; - } -} diff --git a/pr-preview/pr-214/hello-world/angular/src/app/dynamsoft.config.ts b/pr-preview/pr-214/hello-world/angular/src/app/dynamsoft.config.ts deleted file mode 100644 index 1120f6ce..00000000 --- a/pr-preview/pr-214/hello-world/angular/src/app/dynamsoft.config.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { CoreModule } from 'dynamsoft-core'; -import { LicenseManager } from 'dynamsoft-license'; -import 'dynamsoft-barcode-reader'; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths = { - std: 'https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/', - dip: 'https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/', - core: 'https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/', - license: 'https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/', - cvr: 'https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/', - dbr: 'https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/', - dce: 'https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/', -}; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense('DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9', true); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(['DBR']); diff --git a/pr-preview/pr-214/hello-world/angular/src/app/image-capture/image-capture.component.css b/pr-preview/pr-214/hello-world/angular/src/app/image-capture/image-capture.component.css deleted file mode 100644 index febb3153..00000000 --- a/pr-preview/pr-214/hello-world/angular/src/app/image-capture/image-capture.component.css +++ /dev/null @@ -1,19 +0,0 @@ -.image-capture-container { - width: 100%; - height: 100%; - font-family: Consolas, Monaco, Lucida Console, Liberation Mono, - DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace; -} - -.image-capture-container .input-container { - width: 80%; - height: 100%; - display: flex; - justify-content: center; - border: 1px solid black; - margin: 0 auto; -} - -.image-capture-container .results { - margin-top: 20px; -} diff --git a/pr-preview/pr-214/hello-world/angular/src/app/image-capture/image-capture.component.html b/pr-preview/pr-214/hello-world/angular/src/app/image-capture/image-capture.component.html deleted file mode 100644 index 5faddf9c..00000000 --- a/pr-preview/pr-214/hello-world/angular/src/app/image-capture/image-capture.component.html +++ /dev/null @@ -1,11 +0,0 @@ -
-
- -
-
-
diff --git a/pr-preview/pr-214/hello-world/angular/src/app/image-capture/image-capture.component.ts b/pr-preview/pr-214/hello-world/angular/src/app/image-capture/image-capture.component.ts deleted file mode 100644 index fd0bac27..00000000 --- a/pr-preview/pr-214/hello-world/angular/src/app/image-capture/image-capture.component.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { Component, ViewChild, ElementRef } from '@angular/core'; -import '../dynamsoft.config'; -import { EnumCapturedResultItemType } from 'dynamsoft-core'; -import type { BarcodeResultItem } from 'dynamsoft-barcode-reader'; -import { CaptureVisionRouter } from 'dynamsoft-capture-vision-router'; - -@Component({ - selector: 'app-image-capture', - templateUrl: './image-capture.component.html', - styleUrls: ['./image-capture.component.css'], - standalone: true, -}) -export class ImageCaptureComponent { - @ViewChild('results') resultsContainer?: ElementRef; - - pCvRouter?: Promise; - isDestroyed = false; - - captureImage = async (e: Event) => { - let files = [...((e.target! as HTMLInputElement).files as any as File[])]; - (e.target! as HTMLInputElement).value = ''; // reset input - this.resultsContainer!.nativeElement.innerText = ''; - try { - // ensure cvRouter is created only once - const cvRouter = await (this.pCvRouter = - this.pCvRouter || CaptureVisionRouter.createInstance()); - if (this.isDestroyed) return; - - for (let file of files) { - // Decode selected image with 'ReadBarcodes_SpeedFirst' template. - const result = await cvRouter.capture(file, 'ReadBarcodes_SpeedFirst'); - if (this.isDestroyed) return; - - // Print file name if there's multiple files - if (files.length > 1) { - this.resultsContainer!.nativeElement.innerText += `\n${file.name}:\n`; - } - for (let _item of result.items) { - if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { - continue; // check if captured result item is a barcode - } - let item = _item as BarcodeResultItem; - this.resultsContainer!.nativeElement.innerText += item.text + '\n'; // output the decoded barcode text - console.log(item.text); - } - // If no items are found, display that no barcode was detected - if (!result.items.length) - this.resultsContainer!.nativeElement.innerText += - 'No barcode found\n'; - } - } catch (ex: any) { - let errMsg = ex.message || ex; - console.error(errMsg); - alert(errMsg); - } - }; - - // dispose cvRouter when it's no longer needed - async ngOnDestroy() { - this.isDestroyed = true; - if (this.pCvRouter) { - try { - (await this.pCvRouter).dispose(); - } catch (_) {} - } - } -} diff --git a/pr-preview/pr-214/hello-world/angular/src/app/video-capture/video-capture.component.css b/pr-preview/pr-214/hello-world/angular/src/app/video-capture/video-capture.component.css deleted file mode 100644 index 9bfe13ad..00000000 --- a/pr-preview/pr-214/hello-world/angular/src/app/video-capture/video-capture.component.css +++ /dev/null @@ -1,6 +0,0 @@ -.results { - width: 100%; - height: 10vh; - overflow: auto; - white-space: pre-wrap; -} diff --git a/pr-preview/pr-214/hello-world/angular/src/app/video-capture/video-capture.component.html b/pr-preview/pr-214/hello-world/angular/src/app/video-capture/video-capture.component.html deleted file mode 100644 index e8a173e9..00000000 --- a/pr-preview/pr-214/hello-world/angular/src/app/video-capture/video-capture.component.html +++ /dev/null @@ -1,8 +0,0 @@ -
-
-Results: -
diff --git a/pr-preview/pr-214/hello-world/angular/src/app/video-capture/video-capture.component.ts b/pr-preview/pr-214/hello-world/angular/src/app/video-capture/video-capture.component.ts deleted file mode 100644 index 2e671a7d..00000000 --- a/pr-preview/pr-214/hello-world/angular/src/app/video-capture/video-capture.component.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { Component, ElementRef, ViewChild } from '@angular/core'; -import '../dynamsoft.config'; -import { CameraEnhancer, CameraView } from 'dynamsoft-camera-enhancer'; -import { CaptureVisionRouter } from 'dynamsoft-capture-vision-router'; -import { MultiFrameResultCrossFilter } from 'dynamsoft-utility'; - -const componentDestroyedErrorMsg = 'VideoCapture Component Destroyed'; - -@Component({ - selector: 'app-video-capture', - templateUrl: './video-capture.component.html', - styleUrls: ['./video-capture.component.css'], - standalone: true, -}) -export class VideoCaptureComponent { - @ViewChild('cameraViewContainer') cameraViewContainer?: ElementRef; - @ViewChild('results') resultsContainer?: ElementRef; - - resolveInit?: () => void; - pInit: Promise = new Promise((r) => { - this.resolveInit = r; - }); - isDestroyed = false; - - cvRouter?: CaptureVisionRouter; - cameraEnhancer?: CameraEnhancer; - - async ngAfterViewInit(): Promise { - try { - // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. - const cameraView = await CameraView.createInstance(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } // Check if component is destroyed after every async - this.cameraEnhancer = await CameraEnhancer.createInstance(cameraView); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Get default UI and append it to DOM. - this.cameraViewContainer!.nativeElement.append(cameraView.getUIElement()); - - // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. - this.cvRouter = await CaptureVisionRouter.createInstance(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - this.cvRouter.setInput(this.cameraEnhancer); - - // Define a callback for results. - this.cvRouter.addResultReceiver({ - onDecodedBarcodesReceived: (result) => { - if (!result.barcodeResultItems.length) return; - - this.resultsContainer!.nativeElement.textContent = ''; - console.log(result); - for (let item of result.barcodeResultItems) { - this.resultsContainer!.nativeElement.textContent += `${item.formatString}: ${item.text}\n\n`; - } - }, - }); - - // Filter out unchecked and duplicate results. - const filter = new MultiFrameResultCrossFilter(); - // Filter out unchecked barcodes. - filter.enableResultCrossVerification('barcode', true); - // Filter out duplicate barcodes within 3 seconds. - filter.enableResultDeduplication('barcode', true); - await this.cvRouter.addResultFilter(filter); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Open camera and start scanning single barcode. - await this.cameraEnhancer.open(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - await this.cvRouter.startCapturing('ReadSingleBarcode'); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - } catch (ex: any) { - if ((ex as Error)?.message === componentDestroyedErrorMsg) { - console.log(componentDestroyedErrorMsg); - } else { - let errMsg = ex.message || ex; - console.error(errMsg); - alert(errMsg); - } - } - - // Resolve pInit promise once initialization is complete. - this.resolveInit!(); - } - - // dispose cvRouter when it's no longer needed - async ngOnDestroy() { - this.isDestroyed = true; - try { - // Wait for the pInit to complete before disposing resources. - await this.pInit; - this.cvRouter?.dispose(); - this.cameraEnhancer?.dispose(); - } catch (_) {} - } -} diff --git a/pr-preview/pr-214/hello-world/angular/src/assets/.gitkeep b/pr-preview/pr-214/hello-world/angular/src/assets/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/pr-preview/pr-214/hello-world/angular/src/favicon.ico b/pr-preview/pr-214/hello-world/angular/src/favicon.ico deleted file mode 100644 index 57614f9c967596fad0a3989bec2b1deff33034f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmd^G33O9Omi+`8$@{|M-I6TH3wzF-p5CV8o}7f~KxR60LK+ApEFB<$bcciv%@SmA zV{n>g85YMFFeU*Uvl=i4v)C*qgnb;$GQ=3XTe9{Y%c`mO%su)noNCCQ*@t1WXn|B(hQ7i~ zrUK8|pUkD6#lNo!bt$6)jR!&C?`P5G(`e((P($RaLeq+o0Vd~f11;qB05kdbAOm?r zXv~GYr_sibQO9NGTCdT;+G(!{4Xs@4fPak8#L8PjgJwcs-Mm#nR_Z0s&u?nDX5^~@ z+A6?}g0|=4e_LoE69pPFO`yCD@BCjgKpzMH0O4Xs{Ahc?K3HC5;l=f zg>}alhBXX&);z$E-wai+9TTRtBX-bWYY@cl$@YN#gMd~tM_5lj6W%8ah4;uZ;jP@Q zVbuel1rPA?2@x9Y+u?e`l{Z4ngfG5q5BLH5QsEu4GVpt{KIp1?U)=3+KQ;%7ec8l* zdV=zZgN5>O3G(3L2fqj3;oBbZZw$Ij@`Juz@?+yy#OPw)>#wsTewVgTK9BGt5AbZ&?K&B3GVF&yu?@(Xj3fR3n+ZP0%+wo)D9_xp>Z$`A4 zfV>}NWjO#3lqumR0`gvnffd9Ka}JJMuHS&|55-*mCD#8e^anA<+sFZVaJe7{=p*oX zE_Uv?1>e~ga=seYzh{9P+n5<+7&9}&(kwqSaz;1aD|YM3HBiy<))4~QJSIryyqp| z8nGc(8>3(_nEI4n)n7j(&d4idW1tVLjZ7QbNLXg;LB ziHsS5pXHEjGJZb59KcvS~wv;uZR-+4qEqow`;JCfB*+b^UL^3!?;-^F%yt=VjU|v z39SSqKcRu_NVvz!zJzL0CceJaS6%!(eMshPv_0U5G`~!a#I$qI5Ic(>IONej@aH=f z)($TAT#1I{iCS4f{D2+ApS=$3E7}5=+y(rA9mM#;Cky%b*Gi0KfFA`ofKTzu`AV-9 znW|y@19rrZ*!N2AvDi<_ZeR3O2R{#dh1#3-d%$k${Rx42h+i&GZo5!C^dSL34*AKp z27mTd>k>?V&X;Nl%GZ(>0s`1UN~Hfyj>KPjtnc|)xM@{H_B9rNr~LuH`Gr5_am&Ep zTjZA8hljNj5H1Ipm-uD9rC}U{-vR!eay5&6x6FkfupdpT*84MVwGpdd(}ib)zZ3Ky z7C$pnjc82(W_y_F{PhYj?o!@3__UUvpX)v69aBSzYj3 zdi}YQkKs^SyXyFG2LTRz9{(w}y~!`{EuAaUr6G1M{*%c+kP1olW9z23dSH!G4_HSK zzae-DF$OGR{ofP*!$a(r^5Go>I3SObVI6FLY)N@o<*gl0&kLo-OT{Tl*7nCz>Iq=? zcigIDHtj|H;6sR?or8Wd_a4996GI*CXGU}o;D9`^FM!AT1pBY~?|4h^61BY#_yIfO zKO?E0 zJ{Pc`9rVEI&$xxXu`<5E)&+m(7zX^v0rqofLs&bnQT(1baQkAr^kEsk)15vlzAZ-l z@OO9RF<+IiJ*O@HE256gCt!bF=NM*vh|WVWmjVawcNoksRTMvR03H{p@cjwKh(CL4 z7_PB(dM=kO)!s4fW!1p0f93YN@?ZSG` z$B!JaAJCtW$B97}HNO9(x-t30&E}Mo1UPi@Av%uHj~?T|!4JLwV;KCx8xO#b9IlUW zI6+{a@Wj|<2Y=U;a@vXbxqZNngH8^}LleE_4*0&O7#3iGxfJ%Id>+sb;7{L=aIic8 z|EW|{{S)J-wr@;3PmlxRXU8!e2gm_%s|ReH!reFcY8%$Hl4M5>;6^UDUUae?kOy#h zk~6Ee_@ZAn48Bab__^bNmQ~+k=02jz)e0d9Z3>G?RGG!65?d1>9}7iG17?P*=GUV-#SbLRw)Hu{zx*azHxWkGNTWl@HeWjA?39Ia|sCi{e;!^`1Oec zb>Z|b65OM*;eC=ZLSy?_fg$&^2xI>qSLA2G*$nA3GEnp3$N-)46`|36m*sc#4%C|h zBN<2U;7k>&G_wL4=Ve5z`ubVD&*Hxi)r@{4RCDw7U_D`lbC(9&pG5C*z#W>8>HU)h z!h3g?2UL&sS!oY5$3?VlA0Me9W5e~V;2jds*fz^updz#AJ%G8w2V}AEE?E^=MK%Xt z__Bx1cr7+DQmuHmzn*|hh%~eEc9@m05@clWfpEFcr+06%0&dZJH&@8^&@*$qR@}o3 z@Tuuh2FsLz^zH+dN&T&?0G3I?MpmYJ;GP$J!EzjeM#YLJ!W$}MVNb0^HfOA>5Fe~UNn%Zk(PT@~9}1dt)1UQ zU*B5K?Dl#G74qmg|2>^>0WtLX#Jz{lO4NT`NYB*(L#D|5IpXr9v&7a@YsGp3vLR7L zHYGHZg7{ie6n~2p$6Yz>=^cEg7tEgk-1YRl%-s7^cbqFb(U7&Dp78+&ut5!Tn(hER z|Gp4Ed@CnOPeAe|N>U(dB;SZ?NU^AzoD^UAH_vamp6Ws}{|mSq`^+VP1g~2B{%N-!mWz<`)G)>V-<`9`L4?3dM%Qh6<@kba+m`JS{Ya@9Fq*m6$$ zA1%Ogc~VRH33|S9l%CNb4zM%k^EIpqY}@h{w(aBcJ9c05oiZx#SK9t->5lSI`=&l~ z+-Ic)a{FbBhXV$Xt!WRd`R#Jk-$+_Z52rS>?Vpt2IK<84|E-SBEoIw>cs=a{BlQ7O z-?{Fy_M&84&9|KM5wt~)*!~i~E=(6m8(uCO)I=)M?)&sRbzH$9Rovzd?ZEY}GqX+~ zFbEbLz`BZ49=2Yh-|<`waK-_4!7`ro@zlC|r&I4fc4oyb+m=|c8)8%tZ-z5FwhzDt zL5kB@u53`d@%nHl0Sp)Dw`(QU&>vujEn?GPEXUW!Wi<+4e%BORl&BIH+SwRcbS}X@ z01Pk|vA%OdJKAs17zSXtO55k!;%m9>1eW9LnyAX4uj7@${O6cfii`49qTNItzny5J zH&Gj`e}o}?xjQ}r?LrI%FjUd@xflT3|7LA|ka%Q3i}a8gVm<`HIWoJGH=$EGClX^C0lysQJ>UO(q&;`T#8txuoQ_{l^kEV9CAdXuU1Ghg8 zN_6hHFuy&1x24q5-(Z7;!poYdt*`UTdrQOIQ!2O7_+AHV2hgXaEz7)>$LEdG z<8vE^Tw$|YwZHZDPM!SNOAWG$?J)MdmEk{U!!$M#fp7*Wo}jJ$Q(=8>R`Ats?e|VU?Zt7Cdh%AdnfyN3MBWw{ z$OnREvPf7%z6`#2##_7id|H%Y{vV^vWXb?5d5?a_y&t3@p9t$ncHj-NBdo&X{wrfJ zamN)VMYROYh_SvjJ=Xd!Ga?PY_$;*L=SxFte!4O6%0HEh%iZ4=gvns7IWIyJHa|hT z2;1+e)`TvbNb3-0z&DD_)Jomsg-7p_Uh`wjGnU1urmv1_oVqRg#=C?e?!7DgtqojU zWoAB($&53;TsXu^@2;8M`#z{=rPy?JqgYM0CDf4v@z=ZD|ItJ&8%_7A#K?S{wjxgd z?xA6JdJojrWpB7fr2p_MSsU4(R7=XGS0+Eg#xR=j>`H@R9{XjwBmqAiOxOL` zt?XK-iTEOWV}f>Pz3H-s*>W z4~8C&Xq25UQ^xH6H9kY_RM1$ch+%YLF72AA7^b{~VNTG}Tj#qZltz5Q=qxR`&oIlW Nr__JTFzvMr^FKp4S3v*( diff --git a/pr-preview/pr-214/hello-world/angular/src/index.html b/pr-preview/pr-214/hello-world/angular/src/index.html deleted file mode 100644 index 4a1660de..00000000 --- a/pr-preview/pr-214/hello-world/angular/src/index.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Hello World for Angular - Dynamsoft Barcode Reader Sample - - - - - - - - - - - diff --git a/pr-preview/pr-214/hello-world/angular/src/main.ts b/pr-preview/pr-214/hello-world/angular/src/main.ts deleted file mode 100644 index 2086591f..00000000 --- a/pr-preview/pr-214/hello-world/angular/src/main.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { bootstrapApplication } from '@angular/platform-browser'; -import { AppComponent } from './app/app.component'; - -bootstrapApplication(AppComponent) - .catch((err) => console.error(err)); diff --git a/pr-preview/pr-214/hello-world/angular/src/styles.css b/pr-preview/pr-214/hello-world/angular/src/styles.css deleted file mode 100644 index cd26b68e..00000000 --- a/pr-preview/pr-214/hello-world/angular/src/styles.css +++ /dev/null @@ -1,11 +0,0 @@ -/* You can add global styles to this file, and also import other style files */ -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -html, body { - text-align: center; - min-width: 350px; -} \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/angular/tsconfig.app.json b/pr-preview/pr-214/hello-world/angular/tsconfig.app.json deleted file mode 100644 index 374cc9d2..00000000 --- a/pr-preview/pr-214/hello-world/angular/tsconfig.app.json +++ /dev/null @@ -1,14 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/app", - "types": [] - }, - "files": [ - "src/main.ts" - ], - "include": [ - "src/**/*.d.ts" - ] -} diff --git a/pr-preview/pr-214/hello-world/angular/tsconfig.json b/pr-preview/pr-214/hello-world/angular/tsconfig.json deleted file mode 100644 index eb49734a..00000000 --- a/pr-preview/pr-214/hello-world/angular/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "compileOnSave": false, - "compilerOptions": { - "outDir": "./dist/out-tsc", - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "skipLibCheck": true, - "esModuleInterop": true, - "sourceMap": true, - "declaration": false, - "experimentalDecorators": true, - "moduleResolution": "node", - "importHelpers": true, - "target": "ES2022", - "module": "ES2022", - "useDefineForClassFields": false, - "lib": [ - "ES2022", - "dom" - ] - }, - "angularCompilerOptions": { - "enableI18nLegacyMessageIdFormat": false, - "strictInjectionParameters": true, - "strictInputAccessModifiers": true, - "strictTemplates": true - } -} diff --git a/pr-preview/pr-214/hello-world/angular/tsconfig.spec.json b/pr-preview/pr-214/hello-world/angular/tsconfig.spec.json deleted file mode 100644 index be7e9da7..00000000 --- a/pr-preview/pr-214/hello-world/angular/tsconfig.spec.json +++ /dev/null @@ -1,14 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/spec", - "types": [ - "jasmine" - ] - }, - "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] -} diff --git a/pr-preview/pr-214/hello-world/blazor/.gitignore b/pr-preview/pr-214/hello-world/blazor/.gitignore deleted file mode 100644 index 104b5441..00000000 --- a/pr-preview/pr-214/hello-world/blazor/.gitignore +++ /dev/null @@ -1,484 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from `dotnet new gitignore` - -# dotenv files -.env - -# User-specific files -*.rsuser -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Mono auto generated files -mono_crash.* - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -[Ww][Ii][Nn]32/ -[Aa][Rr][Mm]/ -[Aa][Rr][Mm]64/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ -[Ll]ogs/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUnit -*.VisualState.xml -TestResult.xml -nunit-*.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET -project.lock.json -project.fragment.lock.json -artifacts/ - -# Tye -.tye/ - -# ASP.NET Scaffolding -ScaffoldingReadMe.txt - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_h.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*_wpftmp.csproj -*.log -*.tlog -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Coverlet is a free, cross platform Code Coverage Tool -coverage*.json -coverage*.xml -coverage*.info - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# NuGet Symbol Packages -*.snupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx -*.appxbundle -*.appxupload - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!?*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser -*- [Bb]ackup.rdl -*- [Bb]ackup ([0-9]).rdl -*- [Bb]ackup ([0-9][0-9]).rdl - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio 6 auto-generated project file (contains which files were open etc.) -*.vbp - -# Visual Studio 6 workspace and project file (working project files containing files to include in project) -*.dsw -*.dsp - -# Visual Studio 6 technical files -*.ncb -*.aps - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# CodeRush personal settings -.cr/personal - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - -# Visual Studio History (VSHistory) files -.vshistory/ - -# BeatPulse healthcheck temp database -healthchecksdb - -# Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ - -# Ionide (cross platform F# VS Code tools) working folder -.ionide/ - -# Fody - auto-generated XML schema -FodyWeavers.xsd - -# VS Code files for those working on multiple tools -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -*.code-workspace - -# Local History for Visual Studio Code -.history/ - -# Windows Installer files from build outputs -*.cab -*.msi -*.msix -*.msm -*.msp - -# JetBrains Rider -*.sln.iml -.idea - -## -## Visual studio for Mac -## - - -# globs -Makefile.in -*.userprefs -*.usertasks -config.make -config.status -aclocal.m4 -install-sh -autom4te.cache/ -*.tar.gz -tarballs/ -test-results/ - -# Mac bundle stuff -*.dmg -*.app - -# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore -# General -.DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns -.com.apple.timemachine.donotpresent - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - -# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore -# Windows thumbnail cache files -Thumbs.db -ehthumbs.db -ehthumbs_vista.db - -# Dump file -*.stackdump - -# Folder config file -[Dd]esktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Windows Installer files -*.cab -*.msi -*.msix -*.msm -*.msp - -# Windows shortcuts -*.lnk - -# Vim temporary swap files -*.swp diff --git a/pr-preview/pr-214/hello-world/blazor/README.md b/pr-preview/pr-214/hello-world/blazor/README.md deleted file mode 100644 index d729be1c..00000000 --- a/pr-preview/pr-214/hello-world/blazor/README.md +++ /dev/null @@ -1,372 +0,0 @@ -# Hello World Sample for Blazor - -[Blazor](https://dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blazor) is a framework for building interactive client-side web apps with .NET and C#. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a Blazor application using [JavaScript Interlop](https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/call-javascript-from-dotnet?view=aspnetcore-8.0#invoke-js-functions). - -In this guide, we will be using [`dynamsoft-barcode-reader-bundle 10.2.1000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/10.2.1000). We also used .NET 8.0 (version 8.0.8) to develop this sample. To ensure the sample app runs properly, please refer to this guide to update your .NET installation - https://learn.microsoft.com/en-us/dotnet/core/install/upgrade. - -> Note: -> -> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! -> -> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. - -## Official Sample - -* Hello World in Blazor - Source Code - -## Preparation - -This sample was developed using Visual Studio 2022. For a more in-depth guide on creating a Blazor web application with Visual Studio 2022, please follow Microsoft's tutorial on [Building your first web app with ASP.NET Core using Blazor](https://dotnet.microsoft.com/en-us/learn/aspnet/blazor-tutorial/intro). - -## Quick Start - -1. **Open the application** in Visual Studio 2022 by clicking the `Open a Project or Solution` button, and choosing on the `BlazorApp.csproj` file. - -2. **Run the application** by clicking the `Start Debugging` button (a green arrow) in the Debug Toolbar. - -3. A window should open to view the sample application - -> Note: -> -> This sample uses the packages `Microsoft.AspNetCore.Components.WebAssembly` v8.0.8 and `Microsoft.AspNetCore.Components.WebAssembly.DevServer` v8.0.8 which require .NET v8.0.8. -> Refer to the `BlazorApp.csproj` file to change the versions as needed. - -## Creating the sample project - -In this section, we will be creating a Blazor application utilizing the Dynamsoft Barcode Reader bundle sdk. - -We'll be exploring how you could create a page that not only enables barcode scanning via a webcam or a built-in camera, but also decode barcodes from local images. - -By the end of this guide, you'll have a good understanding of the SDK and be ready to discover more ways to use it! - -### Initialize project - -Please follow the guide created by Microsoft on [Building your first web app with ASP.NET Code using Blazor](https://dotnet.microsoft.com/en-us/learn/aspnet/blazor-tutorial/intro). - -This tutorial will guide you through downloading Visual Studio, and set up needed to create a Blazor Web Application. - -**IMPORTANT**: When creating a new project, please select **"Blazor WebAssembly Standalone App"** instead of "Blazor Web App". - -## Start to implement - -### Create a `DecodeVideo.razor` component under the `Pages\` folder - -In `Pages\DecodeVideo.razor`, we will modify the component to enable barcode decoding via camera. This page will be accessible at the `/video` URL. - -```razor -@page "/video" -@inject IJSRuntime JS - -Dynamsoft Barcode Reader Hello World - Blazor - -

Decode Video

- - -

Results:

-
- - -@code { - // reference: https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/call-javascript-from-dotnet?view=aspnetcore-8.0#invoke-js-functions - private string mode = "stop"; - private string videoDecodeBtn = "Decode Video"; - - private async Task ToggleVideoTask() - { - await JS.InvokeVoidAsync("loadDecodeVideoModule"); - - if (mode == "videoDecode") - { - await StopDecodeVideoTask(); - } - else if (mode == "stop") - { - await DecodeVideoTask(); - - } - } - - private async Task DecodeVideoTask() - { - mode = "videoDecode"; - videoDecodeBtn = "Stop Decode"; - await JS.InvokeAsync("startVideoDecode"); - } - - private async Task StopDecodeVideoTask() - { - mode = "stop"; - videoDecodeBtn = "Decode Video"; - await JS.InvokeAsync("stopVideoDecode"); - } -} -``` - -> Note: -> -> We can significantly improve the initial load speed and performance when we dynamically import Dynamsoft's Barcode Scanning component on-demand. In the sample code above, we dynamically imported the decode video module through the line `await JS.InvokeVoidAsync("loadDecodeVideoModule");`. - -### Create a `wwwroot\decodeVideo.js` file - -In `wwwroot\decodeVideo.js`, we will instantiate `cvRouter` and `cameraEnhancer` to start decoding barcodes through the camera. - -Additionally, we'll include a function to clean up `cvRouter` and `cameraEnhancer` when they are no longer needed. - -These functions will be called by the Blazor components through JavaScript Interop. - -Reference: https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/call-javascript-from-dotnet?view=aspnetcore-8.0#invoke-js-functions - -```javascript -// Create JS function "startVideoDecode" -window.startVideoDecode = async () => { - const cameraViewContainer = document.getElementById("camera-view-container"); - const resultsContainer = document.getElementById("results"); - - try { - // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. - const cameraView = await Dynamsoft.DCE.CameraView.createInstance(); - cameraEnhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance(cameraView); - // Get default UI and append it to DOM. - cameraViewContainer.style.display = "block" - cameraViewContainer.append(cameraView.getUIElement()); - - // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. - cvRouter = await Dynamsoft.CVR.CaptureVisionRouter.createInstance(); - cvRouter.setInput(cameraEnhancer); - - // Define a callback for results. - cvRouter.addResultReceiver({ - onDecodedBarcodesReceived: (result) => { - if (!result.barcodeResultItems.length) return; - - resultsContainer.textContent = ""; - for (let item of result.barcodeResultItems) { - resultsContainer.textContent += `${item.formatString}: ${item.text}\n\n`; - } - }, - }); - - // Filter out unchecked and duplicate results. - const filter = new Dynamsoft.Utility.MultiFrameResultCrossFilter(); - // Filter out unchecked barcodes. - filter.enableResultCrossVerification("barcode", true); - // Filter out duplicate barcodes within 3 seconds. - filter.enableResultDeduplication("barcode", true); - await cvRouter.addResultFilter(filter); - - // Open camera and start scanning single barcode. - await cameraEnhancer.open(); - await cvRouter.startCapturing("ReadSingleBarcode"); - } catch (ex) { - let errMsg = ex.message || ex; - console.error(errMsg); - } -} - -// Create JS function "stopVideoDecode" -window.stopVideoDecode = async () => { - const cameraViewContainer = document.getElementById("camera-view-container"); - const resultsContainer = document.getElementById("results"); - - try { - if (!cvRouter?.disposed) { - await cvRouter?.dispose(); - } - if (!cameraEnhancer?.disposed) { - await cameraEnhancer?.dispose(); - } - - // Reset components - cameraViewContainer.style.display = "none"; - cameraViewContainer.innerHTML = ""; - resultsContainer.textContent = ""; - } catch (ex) { - let errMsg = ex.message || ex; - console.error(errMsg); - } -} -``` - -### Create a `Pages\DecodeImage.razor` component - -In `Pages\DecodeImage.razor`, we will modify the component to enable barcode decoding through an image. This page will be accessible at the `/image` URL. - -```razor -@page "/image" -@inject IJSRuntime JS - -Dynamsoft Barcode Reader Hello World - Blazor - -

Decode Image

- -

Results:

-
- -@code { - // reference: https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/call-javascript-from-dotnet?view=aspnetcore-8.0#invoke-js-functions - -private async Task DecodeImageTask() - { - // Dynamically load decode image module - await JS.InvokeVoidAsync("loadDecodeImageModule"); - await JS.InvokeAsync("startImageDecode"); - } - - public void Dispose() - { - JS.InvokeAsync("cleanUpImageDecode"); - } -} -``` - -> Note: -> -> We can significantly improve the initial load speed and performance when we dynamically import Dynamsoft's Barcode Scanning component on-demand. In the sample code above, we dynamically imported the decode image module through the line `await JS.InvokeVoidAsync("loadDecodeImageModule");`. - -### Create a `wwwroot\decodeImage.js` file - -In `wwwroot\decodeImage.js`, we will instantiate `cvRouter` to decode barcodes in images. - -These functions will be called by the Blazor components through JavaScript Interop. - -Reference: https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/call-javascript-from-dotnet?view=aspnetcore-8.0#invoke-js-functions - -```javascript -// Create JS function "startImageDecode" -window.startImageDecode = async () => { - const inputElement = document.getElementById("inputElement"); - const resultsContainer = document.getElementById("results"); - resultsContainer.innerText = ""; // Reset results container - - const { files } = inputElement; - - try { - for (let file of files) { - cvRouter = await Dynamsoft.CVR.CaptureVisionRouter.createInstance(); - // Decode selected image with 'ReadBarcodes_SpeedFirst' template. - const result = await cvRouter.capture(file, "ReadBarcodes_SpeedFirst"); - if (files.length > 1) { - resultsContainer.innerText += `\nFile: ${file.name}\n`; - } - for (let item of result.items) { - if (item.type !== Dynamsoft.Core.EnumCapturedResultItemType.CRIT_BARCODE) { - continue; - } - resultsContainer.innerText += item.text + "\n"; - console.log(item.text); - } - if (!result.items.length) resultsContainer.innerText += "No barcode found\n"; - } - } catch (ex) { - let errMsg = ex.message || ex; - console.error(errMsg); - alert(errMsg); - } finally { - inputElement.value = ""; - await cvRouter?.dispose(); - } -}; -``` - -### Modify the `wwwroot\index.html` file - -Inside the `wwwroot\index.html` file, we will initialize the license and necessary modules for Dynamsoft Barcode Reader and create functions to dynamically load the video and image modules. - -```html - - -... - -
- ... - - - - - - - -``` - -> Note: -> -> * `initLicense()` specify a license key to use the library. You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=sample&product=dbr&package=js to get your own trial license good for 30 days. - - -### Modify the `Layout\NavMenu.razor` and `Layout\NavMenu.razor.css` file - -To make sure the `Decode Video` and `Decode Image` pages are accessible from the sidebar, add the following code block to `Layout\NavMenu.razor`. - -```html -... - - -... -``` - -We'll also add the following CSS code to include the icons for `Decode Video` and `Decode Image` in the `Layout\NavMenu.razor.css` file. - -```css -.bi-video-fill-nav-menu { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-camera-video-fill' viewBox='0 0 16 16'%3E%3Cpath d='M0 5a2 2 0 0 1 2-2h7.5a2 2 0 0 1 1.983 1.738l3.11-1.382A1 1 0 0 1 16 4.269v7.462a1 1 0 0 1-1.406.913l-3.111-1.382A2 2 0 0 1 9.5 13H2a2 2 0 0 1-2-2z'/%3E%3C/svg%3E"); -} - -.bi-image-fill-nav-menu { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-camera-fill' viewBox='0 0 16 16'%3E%3Cpath d='M1.5 2A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2zm13 1a.5.5 0 0 1 .5.5v6l-3.775-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062L1.002 12v.54L1 12.5v-9a.5.5 0 0 1 .5-.5z'/%3E%3C/svg%3E"); -} -``` - -## Run the application - -We can run the application by clicking the `Start Debugging` button (a green arrow) in the Debug Toolbar. - -If you followed all the steps correctly, you will have a working page that turns one of the cameras hooked to or built in your computer or mobile device into a barcode scanner. Also, if you want to decode a local image, just click the `Decode Image` button and select the image you want to decode. - -## Support - -If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/App.razor b/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/App.razor deleted file mode 100644 index 6fd3ed1b..00000000 --- a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/App.razor +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - Not found - -

Sorry, there's nothing at this address.

-
-
-
diff --git a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/BlazorApp.csproj b/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/BlazorApp.csproj deleted file mode 100644 index 8e50d8dc..00000000 --- a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/BlazorApp.csproj +++ /dev/null @@ -1,18 +0,0 @@ - - - - net8.0 - enable - enable - - - - - - - - - - - - diff --git a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor b/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor deleted file mode 100644 index 76eb7252..00000000 --- a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor +++ /dev/null @@ -1,16 +0,0 @@ -@inherits LayoutComponentBase -
- - -
-
- About -
- -
- @Body -
-
-
diff --git a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor.css b/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor.css deleted file mode 100644 index ecf25e5b..00000000 --- a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor.css +++ /dev/null @@ -1,77 +0,0 @@ -.page { - position: relative; - display: flex; - flex-direction: column; -} - -main { - flex: 1; -} - -.sidebar { - background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%); -} - -.top-row { - background-color: #f7f7f7; - border-bottom: 1px solid #d6d5d5; - justify-content: flex-end; - height: 3.5rem; - display: flex; - align-items: center; -} - - .top-row ::deep a, .top-row ::deep .btn-link { - white-space: nowrap; - margin-left: 1.5rem; - text-decoration: none; - } - - .top-row ::deep a:hover, .top-row ::deep .btn-link:hover { - text-decoration: underline; - } - - .top-row ::deep a:first-child { - overflow: hidden; - text-overflow: ellipsis; - } - -@media (max-width: 640.98px) { - .top-row { - justify-content: space-between; - } - - .top-row ::deep a, .top-row ::deep .btn-link { - margin-left: 0; - } -} - -@media (min-width: 641px) { - .page { - flex-direction: row; - } - - .sidebar { - width: 250px; - height: 100vh; - position: sticky; - top: 0; - } - - .top-row { - position: sticky; - top: 0; - z-index: 1; - } - - .top-row.auth ::deep a:first-child { - flex: 1; - text-align: right; - width: 0; - } - - .top-row, article { - padding-left: 2rem !important; - padding-right: 1.5rem !important; - } -} diff --git a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor b/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor deleted file mode 100644 index d87afda8..00000000 --- a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor +++ /dev/null @@ -1,39 +0,0 @@ - - - - -@code { - private bool collapseNavMenu = true; - - private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null; - - private void ToggleNavMenu() - { - collapseNavMenu = !collapseNavMenu; - } -} diff --git a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor.css b/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor.css deleted file mode 100644 index d924b1dd..00000000 --- a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor.css +++ /dev/null @@ -1,91 +0,0 @@ -.navbar-toggler { - background-color: rgba(255, 255, 255, 0.1); -} - -.top-row { - height: 3.5rem; - background-color: rgba(0,0,0,0.4); -} - -.navbar-brand { - font-size: 1.1rem; -} - -.bi { - display: inline-block; - position: relative; - width: 1.25rem; - height: 1.25rem; - margin-right: 0.75rem; - top: -1px; - background-size: cover; -} - -.bi-house-door-fill-nav-menu { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E"); -} - -.bi-plus-square-fill-nav-menu { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-plus-square-fill' viewBox='0 0 16 16'%3E%3Cpath d='M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z'/%3E%3C/svg%3E"); -} - -.bi-video-fill-nav-menu { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-camera-video-fill' viewBox='0 0 16 16'%3E%3Cpath d='M0 5a2 2 0 0 1 2-2h7.5a2 2 0 0 1 1.983 1.738l3.11-1.382A1 1 0 0 1 16 4.269v7.462a1 1 0 0 1-1.406.913l-3.111-1.382A2 2 0 0 1 9.5 13H2a2 2 0 0 1-2-2z'/%3E%3C/svg%3E"); -} - -.bi-image-fill-nav-menu { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-camera-fill' viewBox='0 0 16 16'%3E%3Cpath d='M1.5 2A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2zm13 1a.5.5 0 0 1 .5.5v6l-3.775-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062L1.002 12v.54L1 12.5v-9a.5.5 0 0 1 .5-.5z'/%3E%3C/svg%3E"); -} - -.bi-list-nested-nav-menu { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E"); -} - -.nav-item { - font-size: 0.9rem; - padding-bottom: 0.5rem; -} - - .nav-item:first-of-type { - padding-top: 1rem; - } - - .nav-item:last-of-type { - padding-bottom: 1rem; - } - - .nav-item ::deep a { - color: #d7d7d7; - border-radius: 4px; - height: 3rem; - display: flex; - align-items: center; - line-height: 3rem; - } - -.nav-item ::deep a.active { - background-color: rgba(255,255,255,0.37); - color: white; -} - -.nav-item ::deep a:hover { - background-color: rgba(255,255,255,0.1); - color: white; -} - -@media (min-width: 641px) { - .navbar-toggler { - display: none; - } - - .collapse { - /* Never collapse the sidebar for wide screens */ - display: block; - } - - .nav-scrollable { - /* Allow sidebar to scroll for tall menus */ - height: calc(100vh - 3.5rem); - overflow-y: auto; - } -} diff --git a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeImage.razor b/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeImage.razor deleted file mode 100644 index d582ac63..00000000 --- a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeImage.razor +++ /dev/null @@ -1,26 +0,0 @@ -@page "/image" -@inject IJSRuntime JS - -Dynamsoft Barcode Reader Hello World - Blazor - -

Decode Image

- -

Results:

-
-
- -@code { - // reference: https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/call-javascript-from-dotnet?view=aspnetcore-8.0#invoke-js-functions - - private async Task DecodeImageTask() - { - // Dynamically load decode image module - await JS.InvokeVoidAsync("loadDecodeImageModule"); - await JS.InvokeAsync("startImageDecode"); - } - - public void Dispose() - { - JS.InvokeAsync("cleanUpImageDecode"); - } -} diff --git a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeVideo.razor b/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeVideo.razor deleted file mode 100644 index 64da01d5..00000000 --- a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeVideo.razor +++ /dev/null @@ -1,48 +0,0 @@ -@page "/video" -@inject IJSRuntime JS - -Dynamsoft Barcode Reader Hello World - Blazor - -

Decode Video

- - -

Results:

-
-
- - -@code { - // reference: https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/call-javascript-from-dotnet?view=aspnetcore-8.0#invoke-js-functions - - private string mode = "stop"; - private string videoDecodeBtn = "Decode Video"; - - private async Task ToggleVideoTask() - { - await JS.InvokeVoidAsync("loadDecodeVideoModule"); - - if (mode == "videoDecode") - { - await StopDecodeVideoTask(); - } - else if (mode == "stop") - { - await DecodeVideoTask(); - - } - } - - private async Task DecodeVideoTask() - { - mode = "videoDecode"; - videoDecodeBtn = "Stop Decode"; - await JS.InvokeAsync("startVideoDecode"); - } - - private async Task StopDecodeVideoTask() - { - mode = "stop"; - videoDecodeBtn = "Decode Video"; - await JS.InvokeAsync("stopVideoDecode"); - } -} diff --git a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/Home.razor b/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/Home.razor deleted file mode 100644 index a0911416..00000000 --- a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/Home.razor +++ /dev/null @@ -1,13 +0,0 @@ -@page "/" - -Home - -

Dynamsoft Barcode Reader Sample - Hello World

-Read barcodes from camera and images in a Blazor application! -
-
-

Support

- -If you have any questions, feel free to contact Dynamsoft - support. diff --git a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Program.cs b/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Program.cs deleted file mode 100644 index e6ef32a3..00000000 --- a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Program.cs +++ /dev/null @@ -1,11 +0,0 @@ -using BlazorApp; -using Microsoft.AspNetCore.Components.Web; -using Microsoft.AspNetCore.Components.WebAssembly.Hosting; - -var builder = WebAssemblyHostBuilder.CreateDefault(args); -builder.RootComponents.Add("#app"); -builder.RootComponents.Add("head::after"); - -builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); - -await builder.Build().RunAsync(); diff --git a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Properties/launchSettings.json b/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Properties/launchSettings.json deleted file mode 100644 index e25d8f48..00000000 --- a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/Properties/launchSettings.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "$schema": "http://json.schemastore.org/launchsettings.json", - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:17951", - "sslPort": 44366 - } - }, - "profiles": { - "http": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", - "applicationUrl": "http://localhost:5244", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "https": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", - "applicationUrl": "https://localhost:7074;http://localhost:5244", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} diff --git a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/_Imports.razor b/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/_Imports.razor deleted file mode 100644 index 2c3956ad..00000000 --- a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/_Imports.razor +++ /dev/null @@ -1,10 +0,0 @@ -@using System.Net.Http -@using System.Net.Http.Json -@using Microsoft.AspNetCore.Components.Forms -@using Microsoft.AspNetCore.Components.Routing -@using Microsoft.AspNetCore.Components.Web -@using Microsoft.AspNetCore.Components.Web.Virtualization -@using Microsoft.AspNetCore.Components.WebAssembly.Http -@using Microsoft.JSInterop -@using BlazorApp -@using BlazorApp.Layout diff --git a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/app.css b/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/app.css deleted file mode 100644 index 54a8aa38..00000000 --- a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/app.css +++ /dev/null @@ -1,103 +0,0 @@ -html, body { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; -} - -h1:focus { - outline: none; -} - -a, .btn-link { - color: #0071c1; -} - -.btn-primary { - color: #fff; - background-color: #1b6ec2; - border-color: #1861ac; -} - -.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus { - box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb; -} - -.content { - padding-top: 1.1rem; -} - -.valid.modified:not([type=checkbox]) { - outline: 1px solid #26b050; -} - -.invalid { - outline: 1px solid red; -} - -.validation-message { - color: red; -} - -#blazor-error-ui { - background: lightyellow; - bottom: 0; - box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); - display: none; - left: 0; - padding: 0.6rem 1.25rem 0.7rem 1.25rem; - position: fixed; - width: 100%; - z-index: 1000; -} - - #blazor-error-ui .dismiss { - cursor: pointer; - position: absolute; - right: 0.75rem; - top: 0.5rem; - } - -.blazor-error-boundary { - background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; - padding: 1rem 1rem 1rem 3.7rem; - color: white; -} - - .blazor-error-boundary::after { - content: "An error has occurred." - } - -.loading-progress { - position: relative; - display: block; - width: 8rem; - height: 8rem; - margin: 20vh auto 1rem auto; -} - - .loading-progress circle { - fill: none; - stroke: #e0e0e0; - stroke-width: 0.6rem; - transform-origin: 50% 50%; - transform: rotate(-90deg); - } - - .loading-progress circle:last-child { - stroke: #1b6ec2; - stroke-dasharray: calc(3.141 * var(--blazor-load-percentage, 0%) * 0.8), 500%; - transition: stroke-dasharray 0.05s ease-in-out; - } - -.loading-progress-text { - position: absolute; - text-align: center; - font-weight: bold; - inset: calc(20vh + 3.25rem) 0 auto 0.2rem; -} - - .loading-progress-text:after { - content: var(--blazor-load-percentage-text, "Loading"); - } - -code { - color: #c02d76; -} diff --git a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css b/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css deleted file mode 100644 index 02ae65b5..00000000 --- a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css +++ /dev/null @@ -1,7 +0,0 @@ -@charset "UTF-8";/*! - * Bootstrap v5.1.0 (https://getbootstrap.com/) - * Copyright 2011-2021 The Bootstrap Authors - * Copyright 2011-2021 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-rgb:33,37,41;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-bg:transparent;--bs-table-accent-bg:transparent;--bs-table-striped-color:#212529;--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:#212529;--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:#212529;--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg:#e2e3e5;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg:#d1e7dd;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg:#cff4fc;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg:#fff3cd;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg:#f8d7da;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg:#f8f9fa;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg:#212529;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:1}.input-group .form-control.is-valid:focus,.input-group .form-select.is-valid:focus,.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .form-select:valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:2}.input-group .form-control.is-invalid:focus,.input-group .form-select.is-invalid:focus,.was-validated .input-group .form-control:invalid:focus,.was-validated .input-group .form-select:invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-primary:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-primary.active:focus,.btn-primary:active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-secondary.active:focus,.btn-secondary:active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-success.active:focus,.btn-success:active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-info.active:focus,.btn-info:active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-danger.active:focus,.btn-danger:active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-light.active:focus,.btn-light:active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-dark.active:focus,.btn-dark:active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-primary{color:#0d6efd;border-color:#0d6efd}.btn-outline-primary:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0d6efd;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active{color:#fff;background-color:#198754;border-color:#198754}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active{color:#fff;background-color:#212529;border-color:#212529}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#212529;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:#0a58ca}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:0 0;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-bottom,.navbar-expand-sm .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-md .offcanvas-bottom,.navbar-expand-md .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-bottom,.navbar-expand-lg .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-bottom,.navbar-expand-xl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-bottom,.navbar-expand-xxl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand .offcanvas-bottom,.navbar-expand .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.55)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.55);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.55)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.55)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.55)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#0c63e4;background-color:#e7f1ff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin-top:-.5rem;margin-right:-.5rem;margin-bottom:-.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentColor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{-webkit-animation:placeholder-glow 2s ease-in-out infinite;animation:placeholder-glow 2s ease-in-out infinite}@-webkit-keyframes placeholder-glow{50%{opacity:.2}}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;-webkit-animation:placeholder-wave 2s linear infinite;animation:placeholder-wave 2s linear infinite}@-webkit-keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.link-primary{color:#0d6efd}.link-primary:focus,.link-primary:hover{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:focus,.link-secondary:hover{color:#565e64}.link-success{color:#198754}.link-success:focus,.link-success:hover{color:#146c43}.link-info{color:#0dcaf0}.link-info:focus,.link-info:hover{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:focus,.link-warning:hover{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:focus,.link-danger:hover{color:#b02a37}.link-light{color:#f8f9fa}.link-light:focus,.link-light:hover{color:#f9fafb}.link-dark{color:#212529}.link-dark:focus,.link-dark:hover{color:#1a1e21}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio:calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#0d6efd!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.2rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-end{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-start{border-bottom-left-radius:.25rem!important;border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} -/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css.map b/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css.map deleted file mode 100644 index afcd9e33..00000000 --- a/pr-preview/pr-214/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","../../scss/vendor/_rfs.scss","../../scss/mixins/_border-radius.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/_tables.scss","../../scss/mixins/_table-variants.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_form-select.scss","../../scss/forms/_form-check.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/_button-group.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_accordion.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/mixins/_backdrop.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/_offcanvas.scss","../../scss/_placeholders.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n// scss-docs-start import-stack\n// Configuration\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"utilities\";\n\n// Layout & components\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"containers\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"accordion\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"alert\";\n@import \"progress\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"offcanvas\";\n@import \"placeholders\";\n\n// Helpers\n@import \"helpers\";\n\n// Utilities\n@import \"utilities/api\";\n// scss-docs-end import-stack\n",":root {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$variable-prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$variable-prefix}#{$color}-rgb: #{$value};\n }\n\n --#{$variable-prefix}white-rgb: #{to-rgb($white)};\n --#{$variable-prefix}black-rgb: #{to-rgb($black)};\n --#{$variable-prefix}body-rgb: #{to-rgb($body-color)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$variable-prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$variable-prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$variable-prefix}gradient: #{$gradient};\n\n // Root and body\n // stylelint-disable custom-property-empty-line-before\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$variable-prefix}root-font-size: #{$font-size-root};\n }\n --#{$variable-prefix}body-font-family: #{$font-family-base};\n --#{$variable-prefix}body-font-size: #{$font-size-base};\n --#{$variable-prefix}body-font-weight: #{$font-weight-base};\n --#{$variable-prefix}body-line-height: #{$line-height-base};\n --#{$variable-prefix}body-color: #{$body-color};\n @if $body-text-align != null {\n --#{$variable-prefix}body-text-align: #{$body-text-align};\n }\n --#{$variable-prefix}body-bg: #{$body-bg};\n // scss-docs-end root-body-variables\n // stylelint-enable custom-property-empty-line-before\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n font-size: var(--#{$variable-prefix}-root-font-size);\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$variable-prefix}body-font-family);\n @include font-size(var(--#{$variable-prefix}body-font-size));\n font-weight: var(--#{$variable-prefix}body-font-weight);\n line-height: var(--#{$variable-prefix}body-line-height);\n color: var(--#{$variable-prefix}body-color);\n text-align: var(--#{$variable-prefix}body-text-align);\n background-color: var(--#{$variable-prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n background-color: currentColor;\n border: 0;\n opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n\n &:hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n direction: ltr #{\"/* rtl:ignore */\"};\n unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-` - -

-
{mode === Modes.VIDEO_CAPTURE ? : }
-
- ); -} -``` -> Note: -> -> With Next.js' dynamic `import()`, we can significantly improve the initial load speed and performance when we dynamically import Dynamsoft's Barcode Scanning component on-demand. -> -> Additionally, we need to set `{ ssr: false }` since the component is client-side only and could not be rendered server-side. -> -> Read more: [https://nextjs.org/learn-pages-router/seo/improve/dynamic-import-components](https://nextjs.org/learn-pages-router/seo/improve/dynamic-import-components) - -* Try running the project. - -```cmd -npm run dev -``` - -If you followed all the steps correctly, you will have a working page that turns one of the cameras hooked to or built in your computer or mobile device into a barcode scanner. Also, if you want to decode a local image, just click the `Image Decode` button and select the image you want to decode. Once barcodes are found, the results will show in a dialog. - -## Development server - -Runs the app in the development mode.\ -Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.\ -You will also see any lint errors in the console. - -## Learn More - -To learn more about Next.js, take a look at the following resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. - -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! - -## Deploy on Vercel - -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. - -Check out [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. - -## Support - -If you have any questions, feel free to [contact Dynamsoft Support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/next/app/favicon.ico b/pr-preview/pr-214/hello-world/next/app/favicon.ico deleted file mode 100644 index 718d6fea4835ec2d246af9800eddb7ffb276240c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25931 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 LrJugUA?W`A8`#=m diff --git a/pr-preview/pr-214/hello-world/next/app/globals.css b/pr-preview/pr-214/hello-world/next/app/globals.css deleted file mode 100644 index 5cf73443..00000000 --- a/pr-preview/pr-214/hello-world/next/app/globals.css +++ /dev/null @@ -1,10 +0,0 @@ -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -html, body { - text-align: center; - min-width: 350px; -} \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/next/app/layout.tsx b/pr-preview/pr-214/hello-world/next/app/layout.tsx deleted file mode 100644 index 3e561528..00000000 --- a/pr-preview/pr-214/hello-world/next/app/layout.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import type { Metadata } from "next"; -import { Inter } from "next/font/google"; -import "./globals.css"; - -const inter = Inter({ subsets: ["latin"] }); - -export const metadata: Metadata = { - title: "Hello World for Next.js - Dynamsoft Barcode Reader Sample", - description: "Dynamsoft Barcode Reader in a Next.js Application, helps read barcodes from camera or images.", - keywords: "barcodes, camera, images, nextjs", -}; - -export default function RootLayout({ - children, -}: Readonly<{ - children: React.ReactNode; -}>) { - return ( - - {children} - - ); -} diff --git a/pr-preview/pr-214/hello-world/next/app/page.css b/pr-preview/pr-214/hello-world/next/app/page.css deleted file mode 100644 index 580a16f8..00000000 --- a/pr-preview/pr-214/hello-world/next/app/page.css +++ /dev/null @@ -1,33 +0,0 @@ -.title { - display: flex; - justify-content: center; - align-items: center; - margin-top: 20px; -} -.buttons-container { - width: 30%; - margin: 20px auto; -} -.buttons-container button { - display: inline-block; - border: 1px solid black; - padding: 5px 15px; - background-color: transparent; - cursor: pointer; -} -.buttons-container button:first-child { - border-top-left-radius: 10px; - border-bottom-left-radius: 10px; - border-right: transparent; -} -.buttons-container button:nth-child(2) { - border-top-right-radius: 10px; - border-bottom-right-radius: 10px; - border-left: transparent; -} - -@media screen and (max-width: 800px) { - .buttons-container { - width: 70%; - } -} diff --git a/pr-preview/pr-214/hello-world/next/app/page.tsx b/pr-preview/pr-214/hello-world/next/app/page.tsx deleted file mode 100644 index 17435b8f..00000000 --- a/pr-preview/pr-214/hello-world/next/app/page.tsx +++ /dev/null @@ -1,51 +0,0 @@ -"use client"; - -import dynamic from "next/dynamic"; -import { useState } from "react"; -import "./page.css"; - -const VideoCapture = dynamic(() => import("../components/VideoCapture/VideoCapture"), { - ssr: false, -}); -const ImageCapture = dynamic(() => import("../components/ImageCapture/ImageCapture"), { - ssr: false, -}); - -enum Modes { - VIDEO_CAPTURE = "video", - IMAGE_CAPTURE = "image", -} - -export default function Home() { - const [mode, setMode] = useState(Modes.VIDEO_CAPTURE); - - const showVideoCapture = () => setMode(Modes.VIDEO_CAPTURE); - const showImageCapture = () => setMode(Modes.IMAGE_CAPTURE); - - return ( -
-
-

Hello World for Next.js

-
-
- - -
-
{mode === Modes.VIDEO_CAPTURE ? : }
-
- ); -} diff --git a/pr-preview/pr-214/hello-world/next/components/ImageCapture/ImageCapture.css b/pr-preview/pr-214/hello-world/next/components/ImageCapture/ImageCapture.css deleted file mode 100644 index 03da581c..00000000 --- a/pr-preview/pr-214/hello-world/next/components/ImageCapture/ImageCapture.css +++ /dev/null @@ -1,20 +0,0 @@ -.image-capture-container { - width: 100%; - height: 100%; - font-family: Consolas, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, - Courier New, monospace; -} - -.image-capture-container .input-container { - width: 80%; - height: 100%; - display: flex; - justify-content: center; - border: 1px solid black; - margin: 0 auto; -} - -.image-capture-container .results { - margin-top: 20px; - height: 100%; -} diff --git a/pr-preview/pr-214/hello-world/next/components/ImageCapture/ImageCapture.tsx b/pr-preview/pr-214/hello-world/next/components/ImageCapture/ImageCapture.tsx deleted file mode 100644 index 03e52618..00000000 --- a/pr-preview/pr-214/hello-world/next/components/ImageCapture/ImageCapture.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import React, { useRef, useEffect, MutableRefObject, useCallback } from "react"; -import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { EnumCapturedResultItemType } from "dynamsoft-core"; -import { BarcodeResultItem } from "dynamsoft-barcode-reader"; -import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; -import "./ImageCapture.css"; - -function ImageCapture() { - const resultsContainer: MutableRefObject = useRef(null); - - let pCvRouter: MutableRefObject | null> = useRef(null); - let isDestroyed = useRef(false); - - const decodeImg = useCallback(async (e: React.ChangeEvent) => { - let files = [...(e.target.files as any as File[])]; - e.target.value = ""; // reset input - resultsContainer.current!.innerText = ""; - - try { - // ensure cvRouter is created only once - const cvRouter = await (pCvRouter.current = pCvRouter.current || CaptureVisionRouter.createInstance()); - if (isDestroyed.current) return; - - for (let file of files) { - // Decode selected image with 'ReadBarcodes_SpeedFirst' template. - const result = await cvRouter.capture(file, "ReadBarcodes_SpeedFirst"); - if (isDestroyed.current) return; - - // Print file name if there's multiple files - if (files.length > 1) { - resultsContainer.current!.innerText += `\n${file.name}:\n`; - } - for (let _item of result.items) { - if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { - continue; // check if captured result item is a barcode - } - let item = _item as BarcodeResultItem; - resultsContainer.current!.innerText += item.text + "\n"; // output the decoded barcode text - console.log(item.text); - } - // If no items are found, display that no barcode was detected - if (!result.items.length) resultsContainer.current!.innerText = "No barcode found"; - } - } catch (ex: any) { - let errMsg = ex.message || ex; - console.error(errMsg); - alert(errMsg); - } - }, []); - - useEffect((): any => { - // In 'development', React runs setup and cleanup one extra time before the actual setup in Strict Mode. - isDestroyed.current = false; - - // componentWillUnmount. dispose cvRouter when it's no longer needed - return async () => { - isDestroyed.current = true; - if (pCvRouter.current) { - try { - (await pCvRouter.current).dispose(); - } catch (_) {} - } - }; - }, []); - - return ( -
-
- -
-
-
- ); -} - -export default ImageCapture; diff --git a/pr-preview/pr-214/hello-world/next/components/VideoCapture/VideoCapture.css b/pr-preview/pr-214/hello-world/next/components/VideoCapture/VideoCapture.css deleted file mode 100644 index 9bfe13ad..00000000 --- a/pr-preview/pr-214/hello-world/next/components/VideoCapture/VideoCapture.css +++ /dev/null @@ -1,6 +0,0 @@ -.results { - width: 100%; - height: 10vh; - overflow: auto; - white-space: pre-wrap; -} diff --git a/pr-preview/pr-214/hello-world/next/components/VideoCapture/VideoCapture.tsx b/pr-preview/pr-214/hello-world/next/components/VideoCapture/VideoCapture.tsx deleted file mode 100644 index 89c6aac8..00000000 --- a/pr-preview/pr-214/hello-world/next/components/VideoCapture/VideoCapture.tsx +++ /dev/null @@ -1,122 +0,0 @@ -import React, { useEffect, useRef } from "react"; -import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { CameraEnhancer, CameraView } from "dynamsoft-camera-enhancer"; -import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; -import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; -import "./VideoCapture.css"; - -const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; - -function VideoCapture() { - const cameraViewContainer = useRef(null); - const resultsContainer = useRef(null); - - useEffect((): any => { - let resolveInit: () => void; - const pInit: Promise = new Promise((r) => { - resolveInit = r; - }); - let isDestroyed = false; - - let cvRouter: CaptureVisionRouter; - let cameraEnhancer: CameraEnhancer; - - (async () => { - try { - // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. - const cameraView = await CameraView.createInstance(); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } // Check if component is destroyed after every async - cameraEnhancer = await CameraEnhancer.createInstance(cameraView); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Get default UI and append it to DOM. - cameraViewContainer.current!.append(cameraView.getUIElement()); - - // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. - cvRouter = await CaptureVisionRouter.createInstance(); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - cvRouter.setInput(cameraEnhancer); - - // Define a callback for results. - cvRouter.addResultReceiver({ - onDecodedBarcodesReceived: (result) => { - if (!result.barcodeResultItems.length) return; - - resultsContainer.current!.textContent = ""; - console.log(result); - for (let item of result.barcodeResultItems) { - resultsContainer.current!.textContent += `${item.formatString}: ${item.text}\n\n`; - } - }, - }); - - // Filter out unchecked and duplicate results. - const filter = new MultiFrameResultCrossFilter(); - // Filter out unchecked barcodes. - filter.enableResultCrossVerification("barcode", true); - // Filter out duplicate barcodes within 3 seconds. - filter.enableResultDeduplication("barcode", true); - await cvRouter.addResultFilter(filter); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Open camera and start scanning single barcode. - await cameraEnhancer.open(); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - await cvRouter.startCapturing("ReadSingleBarcode"); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - } catch (ex: any) { - if ((ex as Error)?.message === componentDestroyedErrorMsg) { - console.log(componentDestroyedErrorMsg); - } else { - let errMsg = ex.message || ex; - console.error(errMsg); - alert(errMsg); - } - } - })(); - - // Resolve pInit promise once initialization is complete. - resolveInit!(); - - // componentWillUnmount. dispose cvRouter when it's no longer needed - return async () => { - isDestroyed = true; - try { - // Wait for the pInit to complete before disposing resources. - await pInit; - cvRouter?.dispose(); - cameraEnhancer?.dispose(); - } catch (_) {} - }; - }, []); - - return ( -
-
-
- Results: -
-
- ); -} - -export default VideoCapture; diff --git a/pr-preview/pr-214/hello-world/next/dynamsoft.config.ts b/pr-preview/pr-214/hello-world/next/dynamsoft.config.ts deleted file mode 100644 index b8a17541..00000000 --- a/pr-preview/pr-214/hello-world/next/dynamsoft.config.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { CoreModule } from "dynamsoft-core"; -import { LicenseManager } from "dynamsoft-license"; -import "dynamsoft-barcode-reader"; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths = { - std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", - dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", - core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", - license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", - cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", - dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", - dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", -}; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(["DBR"]); diff --git a/pr-preview/pr-214/hello-world/next/next.config.mjs b/pr-preview/pr-214/hello-world/next/next.config.mjs deleted file mode 100644 index 4678774e..00000000 --- a/pr-preview/pr-214/hello-world/next/next.config.mjs +++ /dev/null @@ -1,4 +0,0 @@ -/** @type {import('next').NextConfig} */ -const nextConfig = {}; - -export default nextConfig; diff --git a/pr-preview/pr-214/hello-world/next/package.json b/pr-preview/pr-214/hello-world/next/package.json deleted file mode 100644 index 15a52796..00000000 --- a/pr-preview/pr-214/hello-world/next/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "dbrjs-next-sample", - "version": "0.1.0", - "private": true, - "scripts": { - "dev": "next dev", - "build": "next build", - "start": "next start", - "lint": "next lint" - }, - "dependencies": { - "react": "^18", - "react-dom": "^18", - "next": "14.2.3", - "dynamsoft-barcode-reader-bundle": "10.2.1000" - }, - "devDependencies": { - "typescript": "^5", - "@types/node": "^20", - "@types/react": "^18", - "@types/react-dom": "^18", - "eslint": "^8", - "eslint-config-next": "14.2.3" - } -} \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/next/public/next.svg b/pr-preview/pr-214/hello-world/next/public/next.svg deleted file mode 100644 index 5174b28c..00000000 --- a/pr-preview/pr-214/hello-world/next/public/next.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/next/public/vercel.svg b/pr-preview/pr-214/hello-world/next/public/vercel.svg deleted file mode 100644 index d2f84222..00000000 --- a/pr-preview/pr-214/hello-world/next/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/next/tsconfig.json b/pr-preview/pr-214/hello-world/next/tsconfig.json deleted file mode 100644 index e7ff90fd..00000000 --- a/pr-preview/pr-214/hello-world/next/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "compilerOptions": { - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "noEmit": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "bundler", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true, - "plugins": [ - { - "name": "next" - } - ], - "paths": { - "@/*": ["./*"] - } - }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules"] -} diff --git a/pr-preview/pr-214/hello-world/nuxt/.gitignore b/pr-preview/pr-214/hello-world/nuxt/.gitignore deleted file mode 100644 index 4a7f73a2..00000000 --- a/pr-preview/pr-214/hello-world/nuxt/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Nuxt dev/build outputs -.output -.data -.nuxt -.nitro -.cache -dist - -# Node dependencies -node_modules - -# Logs -logs -*.log - -# Misc -.DS_Store -.fleet -.idea - -# Local env files -.env -.env.* -!.env.example diff --git a/pr-preview/pr-214/hello-world/nuxt/README.md b/pr-preview/pr-214/hello-world/nuxt/README.md deleted file mode 100644 index f15db12d..00000000 --- a/pr-preview/pr-214/hello-world/nuxt/README.md +++ /dev/null @@ -1,355 +0,0 @@ -# Hello World Sample for NuxtJS - -[Nuxt](https://nuxtjs.org/) is a higher-level framework that builds on top of [Vue](https://vuejs.org/). Check out the following guide on how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a Nuxt application. Note that in this sample `TypeScript` is used. - -In this guide, we will be using [`dynamsoft-barcode-reader-bundle 10.2.1000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/10.2.1000). - -> Note: -> -> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! -> -> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. - -## Official Sample - -* Hello World in Nuxt - Source Code - -## Preparation - -Make sure you have [node](https://nodejs.org/) installed. `node 16.20.1` and `nuxt 3.2.3` are used in this article. - -## Quick Start - -```cmd -npm install -npm run dev -``` - -Then open `https://localhost:3000/` to view the sample app. - -## Creating the sample project - -In this section, we will be creating a NuxtJS application utilizing the Dynamsoft Barcode Reader bundle sdk. - -We'll be exploring how you could create a page that not only enables barcode scanning via a webcam or a built-in camera, but also decode barcodes from local images. - -By the end of this guide, you'll have a good understanding of the SDK and be ready to discover more ways to use it! - -### Create a Bootstrapped Nuxt Application - -```cmd -npx nuxi@latest init my-app -``` - -You will be asked to configure quite a few things for the application during the creation. In our example, we chose the default one in every step. - -### **CD** to the root directory of the application and install the dependencies - -```cmd -cd my-app -npm install dynamsoft-barcode-reader-bundle -E -``` - -## Start to implement - -### Add file "dynamsoft.config.ts" at the root of the app to configure libraries - -```typescript -/* /dynamsoft.config.ts */ -import { CoreModule } from "dynamsoft-core"; -import { LicenseManager } from "dynamsoft-license"; -import "dynamsoft-barcode-reader"; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths = { - std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", - dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", - core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", - license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", - cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", - dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", - dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", -}; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(["DBR"]); -``` - -> Note: -> -> * `initLicense()` specify a license key to use the library. You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=sample&product=dbr&package=js to get your own trial license good for 30 days. -> * `engineResourcePaths` tells the library where to get the necessary resources at runtime. - -### Create a directory "components" and create the following files inside it to represent two components - -* `VideoCapture.client.vue` -* `ImageCapture.client.vue` - -`.client` suffix means the component is rendered only client-side. - -### Edit the `VideoCapture` component - -* In `VideoCapture.client.vue`, add code for initializing and destroying some instances. The `VideoCapture` component helps decode barcodes via camera. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```vue - - - - -``` -> Note: -> -> If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customize-the-ui) - -### Edit the `ImageCapture` component - -* In `ImageCapture.client.vue`, add code for initializing and destroying the `CaptureVisionRouter` instance. The `ImageCapture` helps decode barcodes in an image. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```vue - - - - -``` - -### Add `VideoCapture` and `ImageCapture` components in `app.vue` - -* On `/app.vue`, we will edit the component so that it offers buttons to switch components between `VideoCapture` and `ImageCapture`. - -* Add following code to `app.vue`. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```vue - - - - -``` -> Note: -> -> Since `VideoCapture` and `ImageCapture` components are only rendered on the client side, we want to make sure that these components are not causing sie effects during the server rendering phase. We can solve this using the `client-only` component. - -* Try running the project. - -```cmd -npm run dev -``` - -If you followed all the steps correctly, you will have a working page that turns one of the cameras hooked to or built in your computer or mobile device into a barcode scanner. Also, if you want to decode a local image, just click the `Decode Image` button and select the image you want to decode. Once barcodes are found, the results will show in a dialog. - -## Project Setup - -```sh -npm install -``` - -### Compile and Hot-Reload for Development - -```sh -npm run dev -``` - -### Type-Check, Compile and Minify for Production - -```sh -npm run build -``` - -## Support - -If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/nuxt/app.vue b/pr-preview/pr-214/hello-world/nuxt/app.vue deleted file mode 100644 index 5430ef36..00000000 --- a/pr-preview/pr-214/hello-world/nuxt/app.vue +++ /dev/null @@ -1,74 +0,0 @@ - - - - - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/nuxt/assets/logo.svg b/pr-preview/pr-214/hello-world/nuxt/assets/logo.svg deleted file mode 100644 index 42fdb9d8..00000000 --- a/pr-preview/pr-214/hello-world/nuxt/assets/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/nuxt/assets/main.css b/pr-preview/pr-214/hello-world/nuxt/assets/main.css deleted file mode 100644 index b458c93e..00000000 --- a/pr-preview/pr-214/hello-world/nuxt/assets/main.css +++ /dev/null @@ -1,7 +0,0 @@ -* { - margin: 0; - padding: 0; - box-sizing: border-box; - text-align: center; - } - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/nuxt/components/ImageCapture.client.vue b/pr-preview/pr-214/hello-world/nuxt/components/ImageCapture.client.vue deleted file mode 100644 index a4d1be51..00000000 --- a/pr-preview/pr-214/hello-world/nuxt/components/ImageCapture.client.vue +++ /dev/null @@ -1,88 +0,0 @@ - - - - - diff --git a/pr-preview/pr-214/hello-world/nuxt/components/VideoCapture.client.vue b/pr-preview/pr-214/hello-world/nuxt/components/VideoCapture.client.vue deleted file mode 100644 index 88a9cc5a..00000000 --- a/pr-preview/pr-214/hello-world/nuxt/components/VideoCapture.client.vue +++ /dev/null @@ -1,108 +0,0 @@ - - - - - diff --git a/pr-preview/pr-214/hello-world/nuxt/dynamsoft.config.ts b/pr-preview/pr-214/hello-world/nuxt/dynamsoft.config.ts deleted file mode 100644 index b8a17541..00000000 --- a/pr-preview/pr-214/hello-world/nuxt/dynamsoft.config.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { CoreModule } from "dynamsoft-core"; -import { LicenseManager } from "dynamsoft-license"; -import "dynamsoft-barcode-reader"; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths = { - std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", - dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", - core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", - license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", - cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", - dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", - dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", -}; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(["DBR"]); diff --git a/pr-preview/pr-214/hello-world/nuxt/nuxt.config.ts b/pr-preview/pr-214/hello-world/nuxt/nuxt.config.ts deleted file mode 100644 index 8d361178..00000000 --- a/pr-preview/pr-214/hello-world/nuxt/nuxt.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -// https://nuxt.com/docs/api/configuration/nuxt-config -export default defineNuxtConfig({ - -}) diff --git a/pr-preview/pr-214/hello-world/nuxt/package.json b/pr-preview/pr-214/hello-world/nuxt/package.json deleted file mode 100644 index 3be20540..00000000 --- a/pr-preview/pr-214/hello-world/nuxt/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "dbrjs-nuxt-sample", - "private": true, - "type": "module", - "scripts": { - "build": "nuxt build", - "dev": "nuxt dev", - "generate": "nuxt generate", - "preview": "nuxt preview", - "postinstall": "nuxt prepare" - }, - "devDependencies": { - "nuxt": "3.2.3" - }, - "dependencies": { - "dynamsoft-barcode-reader-bundle": "10.2.1000" - } -} diff --git a/pr-preview/pr-214/hello-world/nuxt/public/favicon.ico b/pr-preview/pr-214/hello-world/nuxt/public/favicon.ico deleted file mode 100644 index 18993ad91cfd43e03b074dd0b5cc3f37ab38e49c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmeHLOKuuL5PjK%MHWVi6lD zOGiREbCw`xmFozJ^aNatJY>w+g ze6a2@u~m#^BZm@8wco9#Crlli0uLb^3E$t2-WIc^#(?t)*@`UpuofJ(Uyh@F>b3Ph z$D^m8Xq~pTkGJ4Q`Q2)te3mgkWYZ^Ijq|hkiP^9`De={bQQ%heZC$QU2UpP(-tbl8 zPWD2abEew;oat@w`uP3J^YpsgT%~jT(Dk%oU}sa$7|n6hBjDj`+I;RX(>)%lm_7N{+B7Mu%H?422lE%MBJH!!YTN2oT7xr>>N-8OF$C&qU^ z>vLsa{$0X%q1fjOe3P1mCv#lN{xQ4_*HCSAZjTb1`}mlc+9rl8$B3OP%VT@mch_~G z7Y+4b{r>9e=M+7vSI;BgB?ryZDY4m>&wcHSn81VH1N~`0gvwH{ z8dv#hG|OK`>1;j7tM#B)Z7zDN?{6=dUal}$e Note: -> -> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! -> -> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. - -## Official Sample - -* Hello World in PWA - Demo -* Hello World in PWA - Source Code - -## Preparation - -We will try to turn our basic "Hello World" sample into a PWA. Follow these steps: - -* Create new file named `helloworld-pwa.html` and add the following code: - -```html - - - - - - - Dynamsoft Barcode Reader PWA Sample - Hello World - - - -

Hello World for PWA

-
-
- Results: -
- - - - - -``` - -* Next, set up a secure environment (HTTPS) to run the page `helloworld-pwa.html`. This is required as PWAs only run in secure environments. -> Note: -> -> In this sample, we're using IIS to set up a secure site at https://localhost. The page will be located at the root of the site so that it can be accessed at https://localhost/helloworld-pwa.html. - -## Make the app progressive - -### Register a service worker for offline support - -Service Workers form the foundation of PWAs, acting as the virtual proxy between the browser and the network. They enable offline content delivery, manage notifications, and perform heavy calculations on a separate thread - -* To use a service worker, we first need to register it. In the `helloworld-pwa.html` file, add the following code at the end of the script: - -```javascript -/* /helloworld-pwa.html */ -if ('serviceWorker' in navigator) { - navigator.serviceWorker.register('./service-worker.js'); -}; -``` - -* Next, create the `service-worker.js` file with the following content: - -```javascript -/* /service-worker.js */ -// Files to cache -const cacheName = 'helloworld-pwa'; -const appShellFiles = [ - './helloworld-pwa.html', -]; - -// Installing Service Worker -self.addEventListener("install", (e) => { - console.log("[Service Worker] Install"); - e.waitUntil( - (async () => { - const cache = await caches.open(cacheName); - console.log("[Service Worker] Caching all: app shell and content"); - await cache.addAll(appShellFiles); - })() - ); -}); - -self.addEventListener("fetch", (e) => { - e.respondWith( - (async () => { - // Fetch cached response if exists - const cachedResponse = await caches.match(e.request); - console.log(`[Service Worker] Fetching resource: ${e.request.url}`); - if (cachedResponse) { - return cachedResponse; - } - - // Otherwise, fetch from network - const response = await fetch(e.request); - const cache = await caches.open(cacheName); - console.log(`[Service Worker] Caching new resource: ${e.request.url}`); - if (e.request.method !== "POST") { - cache.put(e.request, response.clone()); - } - return response; - })() - ); -}); -``` - -With the above code, the application can now work offline because the service worker will cache the `helloworld-pwa.html` page and its related resources. - -For more information, refer to [Making PWAs work offline with Service workers](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Offline_Service_workers). - -> Note: -> -> Since the files are cached, changes we make in later steps may not be reflected immediately. To ensure updates are applied, clear the cache after changes are made. You can do this by running the following code in the browser console: -> -> ```javascript -> const cacheName = 'helloworld-pwa'; -> const cache = await caches.delete(cacheName); -> ``` - -### Use a web manifest file to make the application installable - -A web manifest file contains a list of information about a website in JSON format. This information is used to enable the web app to be installed on a device. - -* Create a file named `helloworld-pwa.json` with the following content: - -```json -/* /helloworld-pwa.json */ -{ - "name": "Dynamsoft Barcode Reader Progressive Web App", - "short_name": "DBR-PWA", - "description": "Progressive Web App that reads barcodes from a video input with Dynamsoft Barcode Reader.", - "start_url": "./helloworld-pwa.html", - "scope": ".", - "display": "standalone", - "theme_color": "#B12A34", - "background_color": "#B12A34", - "icons": [ - { - "src": "./dynamsoft-512x512.png", - "sizes": "512x512", - "type": "image/png" - }, - { - "src": "./dynamsoft-192x192.png", - "sizes": "192x192", - "type": "image/png" - } - ] -} -``` - -> Note: The icon files can be found in the github repository. - -* Then we include the file in the `` block of the `helloworld-pwa.html` file as such: - -```html - - -``` - -* For compatibility on safari, we need add some `meta` in ``. - -```html - - - - - - - - - -``` - -Now, if you open the application again in your browser, you will notice an install icon appear on the right side of the address bar. When you click on it, a pop-up will appear asking if you want to install the app. - -Once installed, you can use it just like any native app. - -To enable offline functionality for Dynamsoft Barcode Reader, you'll need to cache more files. - -### Enabling offline functionality for Dynamsoft Barcode Reader - -These directories below are the resources required for Dynamsoft Barcode Reader functionality. Once added, these files are cached on installation of the service worker (i.e. `install` event), wensuring the PWA remains fully functional without any internet. - -Add this code below to the `service-worker.js` -```javascript -/* /service-worker.js */ -const engineResourcePaths = { - std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", - dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", - core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", - license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", - cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", - dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", - dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/" -}; - -// Files to cache -const cacheName = "helloworld-pwa"; -const appShellFiles = [ - "./helloworld-pwa.html", - "./dynamsoft-192x192.png", - "./dynamsoft-512x512.png", - "./helloworld-pwa.json", - `${engineResourcePaths.std}std.js`, - `${engineResourcePaths.std}std.wasm`, - `${engineResourcePaths.dip}dip.wasm`, - `${engineResourcePaths.core}core.js`, - `${engineResourcePaths.core}core.worker.js`, - `${engineResourcePaths.core}core.wasm`, - `${engineResourcePaths.license}license.js`, - `${engineResourcePaths.license}dls.license.dialog.html`, - `${engineResourcePaths.license}license.wasm`, - `${engineResourcePaths.utility}utility.js`, - `${engineResourcePaths.dbr}dbr.js`, - `${engineResourcePaths.dbr}dbr.wasm`, - `${engineResourcePaths.dbr}DBR-PresetTemplates.json`, - `${engineResourcePaths.cvr}cvr.js`, - `${engineResourcePaths.cvr}cvr.wasm`, - `${engineResourcePaths.cvr}cvr.worker.js`, - `${engineResourcePaths.dce}dce.js`, - `${engineResourcePaths.dce}dce.ui.html`, -]; -``` - -## Summary - -In this article we took a look at how you can turn a simple barcode reading page into a PWA that is installable, re-engageable and capable of working offline. To learn more about Progressive web apps, you can click [here](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps). - -## Support - -If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/pwa/dynamsoft-192x192.png b/pr-preview/pr-214/hello-world/pwa/dynamsoft-192x192.png deleted file mode 100644 index e02348bebe310ace87fe77d58e4e76dc581da970..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6638 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 diff --git a/pr-preview/pr-214/hello-world/pwa/dynamsoft-512x512.png b/pr-preview/pr-214/hello-world/pwa/dynamsoft-512x512.png deleted file mode 100644 index 1e0ec7dc683f5f9d9208e4e2faf5ab12a46bba67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9938 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 diff --git a/pr-preview/pr-214/hello-world/pwa/helloworld-pwa.html b/pr-preview/pr-214/hello-world/pwa/helloworld-pwa.html deleted file mode 100644 index 10ab1889..00000000 --- a/pr-preview/pr-214/hello-world/pwa/helloworld-pwa.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - - Dynamsoft Barcode Reader PWA Sample - Hello World (Decode via Camera) - - - - - - - - - - - - -

Hello World for PWA

-
-
- Results: -
- - - - - diff --git a/pr-preview/pr-214/hello-world/pwa/helloworld-pwa.json b/pr-preview/pr-214/hello-world/pwa/helloworld-pwa.json deleted file mode 100644 index 1c6c8e42..00000000 --- a/pr-preview/pr-214/hello-world/pwa/helloworld-pwa.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "Dynamsoft Barcode Reader Progressive Web App", - "short_name": "DBR-PWA", - "description": "Progressive Web App that reads barcodes from a video input with Dynamsoft Barcode Reader.", - "start_url": "./helloworld-pwa.html", - "scope": ".", - "display": "standalone", - "theme_color": "#B12A34", - "background_color": "#B12A34", - "icons": [ - { - "src": "./dynamsoft-512x512.png", - "sizes": "512x512", - "type": "image/png" - }, - { - "src": "./dynamsoft-192x192.png", - "sizes": "192x192", - "type": "image/png" - } - ] -} \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/pwa/service-worker.js b/pr-preview/pr-214/hello-world/pwa/service-worker.js deleted file mode 100644 index 7e929ef1..00000000 --- a/pr-preview/pr-214/hello-world/pwa/service-worker.js +++ /dev/null @@ -1,77 +0,0 @@ -const engineResourcePaths = { - std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", - dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", - core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", - license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", - cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", - dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", - dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/" -}; - -// Files to cache -const cacheName = "helloworld-pwa"; -const appShellFiles = [ - "./helloworld-pwa.html", - "./dynamsoft-192x192.png", - "./dynamsoft-512x512.png", - "./helloworld-pwa.json", - `${engineResourcePaths.std}std.js`, - `${engineResourcePaths.std}std.wasm`, - `${engineResourcePaths.dip}dip.wasm`, - `${engineResourcePaths.core}core.js`, - `${engineResourcePaths.core}core.worker.js`, - `${engineResourcePaths.core}core.wasm`, - `${engineResourcePaths.license}license.js`, - `${engineResourcePaths.license}dls.license.dialog.html`, - `${engineResourcePaths.license}license.wasm`, - `${engineResourcePaths.utility}utility.js`, - `${engineResourcePaths.dbr}dbr.js`, - `${engineResourcePaths.dbr}dbr.wasm`, - `${engineResourcePaths.dbr}DBR-PresetTemplates.json`, - `${engineResourcePaths.cvr}cvr.js`, - `${engineResourcePaths.cvr}cvr.wasm`, - `${engineResourcePaths.cvr}cvr.worker.js`, - `${engineResourcePaths.dce}dce.js`, - `${engineResourcePaths.dce}dce.ui.html`, -]; - -// Installing Service Worker -self.addEventListener("install", (e) => { - console.log("[Service Worker] Install"); - e.waitUntil( - (async () => { - const cache = await caches.open(cacheName); - console.log("[Service Worker] Caching all: app shell and content"); - await cache.addAll(appShellFiles); - })() - ); -}); - -self.addEventListener("fetch", (e) => { - e.respondWith( - (async () => { - // Fetch cached response if exists - const cachedResponse = await caches.match(e.request); - console.log(`[Service Worker] Fetching resource: ${e.request.url}`); - if (cachedResponse) { - return cachedResponse; - } - - // Otherwise, fetch from network - const response = await fetch(e.request); - - if( - e.request.method !== "POST" && - // Authorization requests should not be cached - !/https:\/\/.*?\.dynamsoft.com\/auth/.test(e.request.url) - // You can add other filter conditions - ){ - const cache = await caches.open(cacheName); - console.log(`[Service Worker] Caching new resource: ${e.request.url}`); - cache.put(e.request, response.clone()); - } - - return response; - })() - ); -}); diff --git a/pr-preview/pr-214/hello-world/react-hooks/.gitignore b/pr-preview/pr-214/hello-world/react-hooks/.gitignore deleted file mode 100644 index a7c0b33c..00000000 --- a/pr-preview/pr-214/hello-world/react-hooks/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js -.npmrc - -# testing -/coverage - -# production -/build - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/pr-preview/pr-214/hello-world/react-hooks/README.md b/pr-preview/pr-214/hello-world/react-hooks/README.md deleted file mode 100644 index 5e840412..00000000 --- a/pr-preview/pr-214/hello-world/react-hooks/README.md +++ /dev/null @@ -1,394 +0,0 @@ -# Hello World Sample for React with Hooks - -[React](https://reactjs.org/) is a JavaScript library meant explicitly for creating interactive UIs. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a React application. Note that in this sample we will use `TypeScript` and [Hooks](https://reactjs.org/docs/hooks-intro.html). Also, there is another sample `react` defining components as classes in React. - -In this guide, we will be using [`dynamsoft-barcode-reader-bundle 10.2.1000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/10.2.1000). - -> Note: -> -> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! -> -> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. - -## Official Sample - -* Hello World in React with Hooks - Source Code - -## Preparation - -Make sure you have [node](https://nodejs.org/) installed. `node 16.20.1` and `react 18.2.0` are used in the example below. - -## Quick Start - -```cmd -npm install -npm start -``` -Then open http://localhost:3000/ to view the sample app. - -## Create the sample project - -In this section, we will be creating a React application utilizing the Dynamsoft Barcode Reader bundle sdk. - -We'll be exploring how you could create a page that not only enables barcode scanning via a webcam or a built-in camera, but also decode barcodes from local images. - -By the end of this guide, you'll have a good understanding of the SDK and be ready to discover more ways to use it! - -### Create a Bootstrapped Raw React Application with TypeScript - -```cmd -npx create-react-app my-app --template typescript -``` - -### **CD** to the root directory of the application and install necessary libraries - -```cmd -cd my-app -npm install dynamsoft-barcode-reader-bundle -E -``` - -## Start to implement - -### Add file "dynamsoft.config.ts" under "/src/" to configure libraries - -```typescript -/* /src/dynamsoft.config.ts */ -import { CoreModule } from "dynamsoft-core"; -import { LicenseManager } from "dynamsoft-license"; -import "dynamsoft-barcode-reader"; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths = { - std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", - dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", - core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", - license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", - cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", - dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", - dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", -}; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(["DBR"]); -``` - -> Note: -> -> * `initLicense()` specify a license key to use the library. You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=sample&product=dbr&package=js to get your own trial license good for 30 days. -> * `engineResourcePaths` tells the library where to get the necessary resources at runtime. - -### Build directory structure - -* Create a directory `components` under `/src/`, and then create two other directories, `VideoCapture` and `ImageCapture` under `/components/`. - -### Create and edit the `VideoCapture` component - -* Create `VideoCapture.tsx` under `/src/components/VideoCapture/`. The `VideoCapture` component helps decode barcodes via camera. - -* In `VideoCapture.tsx`, add code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```tsx -/* /src/components/VideoCapture/VideoCapture.tsx */ -import { useEffect, useRef } from "react"; -import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { CameraEnhancer, CameraView } from "dynamsoft-camera-enhancer"; -import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; -import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; - -const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; - -function VideoCapture() { - const cameraViewContainer = useRef(null); - const resultsContainer = useRef(null); - - useEffect((): any => { - let resolveInit: () => void; - const pInit: Promise = new Promise((r) => { - resolveInit = r; - }); - let isDestroyed = false; - - let cvRouter: CaptureVisionRouter; - let cameraEnhancer: CameraEnhancer; - - (async () => { - try { - // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. - const cameraView = await CameraView.createInstance(); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } // Check if component is destroyed after every async - cameraEnhancer = await CameraEnhancer.createInstance(cameraView); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Get default UI and append it to DOM. - cameraViewContainer.current!.append(cameraView.getUIElement()); - - // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. - cvRouter = await CaptureVisionRouter.createInstance(); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - cvRouter.setInput(cameraEnhancer); - - // Define a callback for results. - cvRouter.addResultReceiver({ - onDecodedBarcodesReceived: (result) => { - if (!result.barcodeResultItems.length) return; - - resultsContainer.current!.textContent = ""; - console.log(result); - for (let item of result.barcodeResultItems) { - resultsContainer.current!.textContent += `${item.formatString}: ${item.text}\n\n`; - } - }, - }); - - // Filter out unchecked and duplicate results. - const filter = new MultiFrameResultCrossFilter(); - // Filter out unchecked barcodes. - filter.enableResultCrossVerification("barcode", true); - // Filter out duplicate barcodes within 3 seconds. - filter.enableResultDeduplication("barcode", true); - await cvRouter.addResultFilter(filter); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Open camera and start scanning single barcode. - await cameraEnhancer.open(); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - await cvRouter.startCapturing("ReadSingleBarcode"); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - } catch (ex: any) { - if ((ex as Error)?.message === componentDestroyedErrorMsg) { - console.log(componentDestroyedErrorMsg); - } else { - let errMsg = ex.message || ex; - console.error(errMsg); - alert(errMsg); - } - } - })(); - - // Resolve pInit promise once initialization is complete. - resolveInit!(); - - // componentWillUnmount. dispose cvRouter when it's no longer needed - return async () => { - isDestroyed = true; - try { - // Wait for the pInit to complete before disposing resources. - await pInit; - cvRouter?.dispose(); - cameraEnhancer?.dispose(); - } catch (_) {} - }; - }, []); - - return ( -
-
-
- Results: -
-
- ); -} - -export default VideoCapture; -``` - -> Note: -> -> * The component should never update so that events bound to the UI stay valid. In this copmonent, the useEffect() hook is used to handle the component’s mount and unmount lifecycle events, and there are no state updates that would cause a re-render. -> * If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customize-the-ui) - -### Create and edit the `ImageCapture` component - -* Create `ImageCapture.tsx` under `/src/components/ImageCapture/`. The `ImageCapture` component helps decode barcodes in an image. - -* In `ImageCapture.tsx`, add code for initializing and destroying the `CaptureVisionRouter` instance. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```tsx -/* /src/components/ImageCapture/ImageCapture.tsx */ -import React, { useRef, useEffect, MutableRefObject, useCallback } from "react"; -import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { EnumCapturedResultItemType } from "dynamsoft-core"; -import { BarcodeResultItem } from "dynamsoft-barcode-reader"; -import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; - -function ImageCapture() { - const resultsContainer: MutableRefObject = useRef(null); - - let pCvRouter: MutableRefObject | null> = useRef(null); - let isDestroyed = useRef(false); - - const decodeImg = useCallback(async (e: React.ChangeEvent) => { - let files = [...(e.target.files as any as File[])]; - e.target.value = ""; // reset input - resultsContainer.current!.innerText = ""; - - try { - // ensure cvRouter is created only once - const cvRouter = await (pCvRouter.current = pCvRouter.current || CaptureVisionRouter.createInstance()); - if (isDestroyed.current) return; - - for (let file of files) { - // Decode selected image with 'ReadBarcodes_SpeedFirst' template. - const result = await cvRouter.capture(file, "ReadBarcodes_SpeedFirst"); - if (isDestroyed.current) return; - - // Print file name if there's multiple files - if (files.length > 1) { - resultsContainer.current!.innerText += `\n${file.name}:\n`; - } - for (let _item of result.items) { - if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { - continue; // check if captured result item is a barcode - } - let item = _item as BarcodeResultItem; - resultsContainer.current!.innerText += item.text + "\n"; // output the decoded barcode text - console.log(item.text); - } - // If no items are found, display that no barcode was detected - if (!result.items.length) resultsContainer.current!.innerText += "No barcode found"; - } - } catch (ex: any) { - let errMsg = ex.message || ex; - console.error(errMsg); - alert(errMsg); - } - }, []); - - useEffect((): any => { - // In 'development', React runs setup and cleanup one extra time before the actual setup in Strict Mode. - isDestroyed.current = false; - - // componentWillUnmount. dispose cvRouter when it's no longer needed - return async () => { - isDestroyed.current = true; - if (pCvRouter.current) { - try { - (await pCvRouter.current).dispose(); - } catch (_) {} - } - }; - }, []); - - return ( -
-
- -
-
-
- ); -} - -export default ImageCapture; -``` - -### Add the `VideoCapture` and `ImageCapture` component to `App.tsx` - -* On `/src/App.tsx`, we will edit the component so that it offers buttons to switch components between `VideoCapture` and `ImageCapture`. - -* Add following code to `App.tsx`. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```tsx -/* /src/App.tsx */ -import { useState } from "react"; -import VideoCapture from "./components/VideoCapture/VideoCapture"; -import ImageCapture from "./components/ImageCapture/ImageCapture"; - -enum Modes { - VIDEO_CAPTURE = "video", - IMAGE_CAPTURE = "image", -} - -function App() { - const [mode, setMode] = useState(Modes.VIDEO_CAPTURE); - - const showVideoCapture = () => setMode(Modes.VIDEO_CAPTURE); - - const showImageCapture = () => setMode(Modes.IMAGE_CAPTURE); - - return ( -
-
-

Hello World for React

-
-
- - -
-
{mode === Modes.VIDEO_CAPTURE ? : }
-
- ); -} - -export default App; -``` - -* Try running the project. - -```cmd -npm start -``` - -If you followed all the steps correctly, you will have a working page that turns one of the cameras hooked to or built in your computer or mobile device into a barcode scanner. Also, if you want to decode a local image, just click the `Decode Image` button and select the image you want to decode. Once barcodes are found, the results will show in a dialog. - -## Development server - -Runs the app in the development mode.\ -Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.\ -You will also see any lint errors in the console. - -## Build - -Builds the app for production to the `build` folder.\ -It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.\ -Your app is ready to be deployed! - -See the section about [deployment](https://create-react-app.dev/docs/deployment/) for more information. - -## Support - -If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/pr-preview/pr-214/hello-world/react-hooks/package.json b/pr-preview/pr-214/hello-world/react-hooks/package.json deleted file mode 100644 index 4a7e6c34..00000000 --- a/pr-preview/pr-214/hello-world/react-hooks/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "dbrjs-react-sample", - "version": "0.1.0", - "private": true, - "dependencies": { - "@testing-library/jest-dom": "^5.17.0", - "@testing-library/react": "^13.4.0", - "@testing-library/user-event": "^13.5.0", - "@types/jest": "^27.5.2", - "@types/node": "^16.18.99", - "@types/react": "^18.3.3", - "@types/react-dom": "^18.3.0", - "dynamsoft-barcode-reader-bundle": "10.2.1000", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "react-scripts": "5.0.1", - "typescript": "^4.9.5", - "web-vitals": "^2.1.4" - }, - "scripts": { - "start": "react-scripts start", - "build": "react-scripts build", - "test": "react-scripts test", - "eject": "react-scripts eject" - }, - "eslintConfig": { - "extends": [ - "react-app", - "react-app/jest" - ] - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - } -} \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/react-hooks/public/favicon.ico b/pr-preview/pr-214/hello-world/react-hooks/public/favicon.ico deleted file mode 100644 index a11777cc471a4344702741ab1c8a588998b1311a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ diff --git a/pr-preview/pr-214/hello-world/react-hooks/public/index.html b/pr-preview/pr-214/hello-world/react-hooks/public/index.html deleted file mode 100644 index f358c3c6..00000000 --- a/pr-preview/pr-214/hello-world/react-hooks/public/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - Hello World for React - Dynamsoft Barcode Reader Sample - - - -
- - - diff --git a/pr-preview/pr-214/hello-world/react-hooks/public/logo192.png b/pr-preview/pr-214/hello-world/react-hooks/public/logo192.png deleted file mode 100644 index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN diff --git a/pr-preview/pr-214/hello-world/react-hooks/public/manifest.json b/pr-preview/pr-214/hello-world/react-hooks/public/manifest.json deleted file mode 100644 index 080d6c77..00000000 --- a/pr-preview/pr-214/hello-world/react-hooks/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/App.css b/pr-preview/pr-214/hello-world/react-hooks/src/App.css deleted file mode 100644 index 4b1f0cbc..00000000 --- a/pr-preview/pr-214/hello-world/react-hooks/src/App.css +++ /dev/null @@ -1,50 +0,0 @@ -.hello-world-page { - text-align: center; -} -.title { - display: flex; - justify-content: center; - align-items: center; - margin-top: 20px; -} -.title .title-logo { - width: 60px; - height: 60px; - animation: retate 5s infinite linear; -} -.buttons-container { - text-align: center; - margin: 20px auto; -} -.buttons-container button { - display: inline-block; - border: 1px solid black; - padding: 5px 15px; - background-color: transparent; - cursor: pointer; -} -.buttons-container button:first-child { - border-top-left-radius: 10px; - border-bottom-left-radius: 10px; - border-right: transparent; -} -.buttons-container button:nth-child(2) { - border-top-right-radius: 10px; - border-bottom-right-radius: 10px; - border-left: transparent; -} - -@media screen and (max-width: 800px) { - .buttons-container { - width: 70%; - } -} - -@keyframes retate { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/App.tsx b/pr-preview/pr-214/hello-world/react-hooks/src/App.tsx deleted file mode 100644 index 51c1029d..00000000 --- a/pr-preview/pr-214/hello-world/react-hooks/src/App.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { useState } from "react"; -import reactLogo from "./assets/logo.svg"; -import VideoCapture from "./components/VideoCapture/VideoCapture"; -import ImageCapture from "./components/ImageCapture/ImageCapture"; -import "./App.css"; - -enum Modes { - VIDEO_CAPTURE = "video", - IMAGE_CAPTURE = "image", -} - -function App() { - const [mode, setMode] = useState(Modes.VIDEO_CAPTURE); - - const showVideoCapture = () => setMode(Modes.VIDEO_CAPTURE); - - const showImageCapture = () => setMode(Modes.IMAGE_CAPTURE); - - return ( -
-
-

Hello World for React

- logo -
-
- - -
-
{mode === Modes.VIDEO_CAPTURE ? : }
-
- ); -} - -export default App; diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/assets/logo.svg b/pr-preview/pr-214/hello-world/react-hooks/src/assets/logo.svg deleted file mode 100644 index 9dfc1c05..00000000 --- a/pr-preview/pr-214/hello-world/react-hooks/src/assets/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.css b/pr-preview/pr-214/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.css deleted file mode 100644 index 03da581c..00000000 --- a/pr-preview/pr-214/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.css +++ /dev/null @@ -1,20 +0,0 @@ -.image-capture-container { - width: 100%; - height: 100%; - font-family: Consolas, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, - Courier New, monospace; -} - -.image-capture-container .input-container { - width: 80%; - height: 100%; - display: flex; - justify-content: center; - border: 1px solid black; - margin: 0 auto; -} - -.image-capture-container .results { - margin-top: 20px; - height: 100%; -} diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx b/pr-preview/pr-214/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx deleted file mode 100644 index e8aa4630..00000000 --- a/pr-preview/pr-214/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import React, { useRef, useEffect, MutableRefObject, useCallback } from "react"; -import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { EnumCapturedResultItemType } from "dynamsoft-core"; -import { BarcodeResultItem } from "dynamsoft-barcode-reader"; -import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; -import "./ImageCapture.css"; - -function ImageCapture() { - const resultsContainer: MutableRefObject = useRef(null); - - let pCvRouter: MutableRefObject | null> = useRef(null); - let isDestroyed = useRef(false); - - const captureImage = useCallback(async (e: React.ChangeEvent) => { - let files = [...(e.target.files as any as File[])]; - e.target.value = ""; // reset input - resultsContainer.current!.innerText = ""; - - try { - // ensure cvRouter is created only once - const cvRouter = await (pCvRouter.current = pCvRouter.current || CaptureVisionRouter.createInstance()); - if (isDestroyed.current) return; - - for (let file of files) { - // Decode selected image with 'ReadBarcodes_SpeedFirst' template. - const result = await cvRouter.capture(file, "ReadBarcodes_SpeedFirst"); - if (isDestroyed.current) return; - - // Print file name if there's multiple files - if (files.length > 1) { - resultsContainer.current!.innerText += `\n${file.name}:\n`; - } - for (let _item of result.items) { - if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { - continue; // check if captured result item is a barcode - } - let item = _item as BarcodeResultItem; - resultsContainer.current!.innerText += item.text + "\n"; // output the decoded barcode text - console.log(item.text); - } - // If no items are found, display that no barcode was detected - if (!result.items.length) resultsContainer.current!.innerText += "No barcode found"; - } - } catch (ex: any) { - let errMsg = ex.message || ex; - console.error(errMsg); - alert(errMsg); - } - }, []); - - useEffect((): any => { - // In 'development', React runs setup and cleanup one extra time before the actual setup in Strict Mode. - isDestroyed.current = false; - - // componentWillUnmount. dispose cvRouter when it's no longer needed - return async () => { - isDestroyed.current = true; - if (pCvRouter.current) { - try { - (await pCvRouter.current).dispose(); - } catch (_) {} - } - }; - }, []); - - return ( -
-
- -
-
-
- ); -} - -export default ImageCapture; diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.css b/pr-preview/pr-214/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.css deleted file mode 100644 index 9bfe13ad..00000000 --- a/pr-preview/pr-214/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.css +++ /dev/null @@ -1,6 +0,0 @@ -.results { - width: 100%; - height: 10vh; - overflow: auto; - white-space: pre-wrap; -} diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.tsx b/pr-preview/pr-214/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.tsx deleted file mode 100644 index 494a322d..00000000 --- a/pr-preview/pr-214/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.tsx +++ /dev/null @@ -1,115 +0,0 @@ -import { useEffect, useRef } from "react"; -import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { CameraEnhancer, CameraView } from "dynamsoft-camera-enhancer"; -import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; -import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; -import "./VideoCapture.css"; - -const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; - -function VideoCapture() { - const cameraViewContainer = useRef(null); - const resultsContainer = useRef(null); - - useEffect((): any => { - let resolveInit: () => void; - const pInit: Promise = new Promise((r) => { - resolveInit = r; - }); - let isDestroyed = false; - - let cvRouter: CaptureVisionRouter; - let cameraEnhancer: CameraEnhancer; - - (async () => { - try { - // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. - const cameraView = await CameraView.createInstance(); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } // Check if component is destroyed after every async - cameraEnhancer = await CameraEnhancer.createInstance(cameraView); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Get default UI and append it to DOM. - cameraViewContainer.current!.append(cameraView.getUIElement()); - - // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. - cvRouter = await CaptureVisionRouter.createInstance(); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - cvRouter.setInput(cameraEnhancer); - - // Define a callback for results. - cvRouter.addResultReceiver({ - onDecodedBarcodesReceived: (result) => { - if (!result.barcodeResultItems.length) return; - - resultsContainer.current!.textContent = ""; - console.log(result); - for (let item of result.barcodeResultItems) { - resultsContainer.current!.textContent += `${item.formatString}: ${item.text}\n\n`; - } - }, - }); - - // Filter out unchecked and duplicate results. - const filter = new MultiFrameResultCrossFilter(); - // Filter out unchecked barcodes. - filter.enableResultCrossVerification("barcode", true); - // Filter out duplicate barcodes within 3 seconds. - filter.enableResultDeduplication("barcode", true); - await cvRouter.addResultFilter(filter); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Open camera and start scanning single barcode. - await cameraEnhancer.open(); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - await cvRouter.startCapturing("ReadSingleBarcode"); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - } catch (ex: any) { - if ((ex as Error)?.message === componentDestroyedErrorMsg) { - console.log(componentDestroyedErrorMsg); - } else { - let errMsg = ex.message || ex; - console.error(errMsg); - alert(errMsg); - } - } - })(); - - // Resolve pInit promise once initialization is complete. - resolveInit!(); - - // componentWillUnmount. dispose cvRouter when it's no longer needed - return async () => { - isDestroyed = true; - try { - // Wait for the pInit to complete before disposing resources. - await pInit; - cvRouter?.dispose(); - cameraEnhancer?.dispose(); - } catch (_) {} - }; - }, []); - - return ( -
-
-
- Results: -
-
- ); -} - -export default VideoCapture; diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/dynamsoft.config.ts b/pr-preview/pr-214/hello-world/react-hooks/src/dynamsoft.config.ts deleted file mode 100644 index b8a17541..00000000 --- a/pr-preview/pr-214/hello-world/react-hooks/src/dynamsoft.config.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { CoreModule } from "dynamsoft-core"; -import { LicenseManager } from "dynamsoft-license"; -import "dynamsoft-barcode-reader"; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths = { - std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", - dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", - core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", - license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", - cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", - dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", - dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", -}; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(["DBR"]); diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/index.css b/pr-preview/pr-214/hello-world/react-hooks/src/index.css deleted file mode 100644 index e9927237..00000000 --- a/pr-preview/pr-214/hello-world/react-hooks/src/index.css +++ /dev/null @@ -1,11 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", - "Droid Sans", "Helvetica Neue", sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; -} diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/index.tsx b/pr-preview/pr-214/hello-world/react-hooks/src/index.tsx deleted file mode 100644 index f260548a..00000000 --- a/pr-preview/pr-214/hello-world/react-hooks/src/index.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import React from "react"; -import ReactDOM from "react-dom/client"; -import "./index.css"; -import App from "./App"; - -const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); -root.render( - - - -); diff --git a/pr-preview/pr-214/hello-world/react-hooks/src/react-app-env.d.ts b/pr-preview/pr-214/hello-world/react-hooks/src/react-app-env.d.ts deleted file mode 100644 index 6431bc5f..00000000 --- a/pr-preview/pr-214/hello-world/react-hooks/src/react-app-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/pr-preview/pr-214/hello-world/react-hooks/tsconfig.json b/pr-preview/pr-214/hello-world/react-hooks/tsconfig.json deleted file mode 100644 index a273b0cf..00000000 --- a/pr-preview/pr-214/hello-world/react-hooks/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], - "allowJs": true, - "skipLibCheck": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": true, - "module": "esnext", - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx" - }, - "include": [ - "src" - ] -} diff --git a/pr-preview/pr-214/hello-world/react/.gitignore b/pr-preview/pr-214/hello-world/react/.gitignore deleted file mode 100644 index 4d29575d..00000000 --- a/pr-preview/pr-214/hello-world/react/.gitignore +++ /dev/null @@ -1,23 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# production -/build - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/pr-preview/pr-214/hello-world/react/README.md b/pr-preview/pr-214/hello-world/react/README.md deleted file mode 100644 index 31a70c00..00000000 --- a/pr-preview/pr-214/hello-world/react/README.md +++ /dev/null @@ -1,413 +0,0 @@ -# Hello World Sample for React - -[React](https://reactjs.org/) is a JavaScript library meant explicitly for creating interactive UIs. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a React application. Note that in this sample we will use `TypeScript` and define components as classes. Also, there is another sample `react-hooks` using `Hooks` in React. - -In this guide, we will be using [`dynamsoft-barcode-reader-bundle 10.2.1000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/10.2.1000). - -> Note: -> -> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! -> -> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. - -## Official Sample - -*
Hello World in React - Source Code - -## Preparation - -Make sure you have [node](https://nodejs.org/) installed. `node 16.20.1` and `react 18.2.0` are used in the example below. - -## Quick Start - -```cmd -npm install -npm start -``` -Then open http://localhost:3000/ to view the sample app. - -## Creating the sample project - -In this section, we will be creating a React application utilizing the Dynamsoft Barcode Reader bundle sdk. - -We'll be exploring how you could create a page that not only enables barcode scanning via a webcam or a built-in camera, but also decode barcodes from local images. - -By the end of this guide, you'll have a good understanding of the SDK and be ready to discover more ways to use it! - -### Create a Bootstrapped Raw React Application with TypeScript - -```cmd -npx create-react-app my-app --template typescript -``` - -### **CD** to the root directory of the application and install necessary libraries - -```cmd -cd my-app -npm install dynamsoft-barcode-reader-bundle -E -``` - -## Start to implement - -### Add file "dynamsoft.config.ts" at the root of the app to configure libraries - -```typescript -/* /src/dynamsoft.config.ts */ -import { CoreModule } from "dynamsoft-core"; -import { LicenseManager } from "dynamsoft-license"; -import "dynamsoft-barcode-reader"; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths = { - std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", - dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", - core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", - license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", - cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", - dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", - dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", -}; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(["DBR"]); -``` - -> Note: -> -> * `initLicense()` specify a license key to use the library. You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=sample&product=dbr&package=js to get your own trial license good for 30 days. -> * `engineResourcePaths` tells the library where to get the necessary resources at runtime. - - -### Build directory structure - -* Create a directory `components` under `/src/`, and then create two other directories, `VideoCapture` and `ImageCapture` under `/components/`. - -### Create and edit the `VideoCapture` component - -* Create `VideoCapture.tsx` under `/src/components/VideoCapture/`. The `VideoCapture` component helps decode barcodes via camera. - -* In `VideoCapture.tsx`, add code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```tsx -/* /src/components/VideoCapture/VideoCapture.tsx */ -import React from "react"; -import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { CameraEnhancer, CameraView } from "dynamsoft-camera-enhancer"; -import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; -import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; - -const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; - -class VideoCapture extends React.Component { - cameraViewContainer: React.RefObject = React.createRef(); - resultsContainer: React.RefObject = React.createRef(); - - resolveInit?: () => void; - pInit: Promise = new Promise((r) => (this.resolveInit = r)); - isDestroyed = false; - - cvRouter?: CaptureVisionRouter; - cameraEnhancer?: CameraEnhancer; - - async componentDidMount() { - try { - // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. - const cameraView = await CameraView.createInstance(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } // Check if component is destroyed after every async - - this.cameraEnhancer = await CameraEnhancer.createInstance(cameraView); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Get default UI and append it to DOM. - this.cameraViewContainer.current!.append(cameraView.getUIElement()); - - // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. - this.cvRouter = await CaptureVisionRouter.createInstance(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - this.cvRouter.setInput(this.cameraEnhancer); - - // Define a callback for results. - this.cvRouter.addResultReceiver({ - onDecodedBarcodesReceived: (result) => { - if (!result.barcodeResultItems.length) return; - - this.resultsContainer.current!.textContent = ""; - console.log(result); - for (let item of result.barcodeResultItems) { - this.resultsContainer.current!.textContent += `${item.formatString}: ${item.text}\n\n`; - } - }, - }); - - // Filter out unchecked and duplicate results. - const filter = new MultiFrameResultCrossFilter(); - // Filter out unchecked barcodes. - filter.enableResultCrossVerification("barcode", true); - // Filter out duplicate barcodes within 3 seconds. - filter.enableResultDeduplication("barcode", true); - await this.cvRouter.addResultFilter(filter); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Open camera and start scanning single barcode. - await this.cameraEnhancer.open(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - await this.cvRouter.startCapturing("ReadSingleBarcode"); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - } catch (ex: any) { - if ((ex as Error)?.message === componentDestroyedErrorMsg) { - console.log(componentDestroyedErrorMsg); - } else { - let errMsg = ex.message || ex; - console.error(errMsg); - alert(errMsg); - } - } - - // Resolve pInit promise once initialization is complete. - this.resolveInit!(); - } - - async componentWillUnmount() { - this.isDestroyed = true; - try { - // Wait for the pInit to complete before disposing resources. - await this.pInit; - this.cvRouter?.dispose(); - this.cameraEnhancer?.dispose(); - } catch (_) {} - } - - shouldComponentUpdate() { - // Never update UI after mount, sdk use native way to bind event, update will remove it. - return false; - } - - render() { - return ( -
-
-
- Results: -
-
- ); - } -} - -export default VideoCapture; -``` - -> Note: -> -> * The component should never update (check the code for `shouldComponentUpdate()`) so that events bound to the UI stay valid. -> * Also, during 'development', React executes setup and cleanup phases twice in [Strict Mode](https://react.dev/reference/react/StrictMode). To ensure proper functioning of VideoCapture in development, it's advised to avoid using Strict Mode for this component. -> However, if you're still interested on using Strict Mode, we do have a workaround available. Please contact our [support team](#Support) for further assistance. -> * If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customize-the-ui) - -### Create and edit the `ImageCapture` component - -* Create `ImageCapture.tsx` under `/src/components/ImageCapture/`. The `ImageCapture` component helps decode barcodes in an image. - -* In `ImageCapture.tsx`, add code for initializing and destroying the `CaptureVisionRouter` instance. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```tsx -/* /src/components/ImageCapture/ImageCapture.tsx */ -import React, { ChangeEvent } from "react"; -import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { EnumCapturedResultItemType } from "dynamsoft-core"; -import type { BarcodeResultItem } from "dynamsoft-barcode-reader"; -import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; - -class ImageCapture extends React.Component { - resultsContainer: React.RefObject = React.createRef(); - - pCvRouter: Promise | null = null; - isDestroyed = false; - - async captureImage(e: ChangeEvent) { - let files = [...(e.target.files as any as File[])]; - e.target.value = ""; // reset input - this.resultsContainer.current!.innerText = ""; - - try { - const cvRouter = await (this.pCvRouter = this.pCvRouter || CaptureVisionRouter.createInstance()); - if (this.isDestroyed) return; - - for (let file of files) { - // Decode selected image with 'ReadBarcodes_SpeedFirst' template. - const result = await cvRouter.capture(file, "ReadBarcodes_SpeedFirst"); - if (this.isDestroyed) return; - - // Print file name if there's multiple files - if (files.length > 1) { - this.resultsContainer.current!.innerText += `\n${file.name}:\n`; - } - for (let _item of result.items) { - if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { - continue; // check if captured result item is a barcode - } - let item = _item as BarcodeResultItem; - this.resultsContainer.current!.innerText += item.text + "\n"; - console.log(item.text); - } - // If no items are found, display that no barcode was detected - if (!result.items.length) this.resultsContainer.current!.innerText += "No barcode found\n"; - } - } catch (ex: any) { - let errMsg = ex.message || ex; - console.error(errMsg); - alert(errMsg); - } - } - - async componentWillUnmount() { - this.isDestroyed = true; - if (this.pCvRouter) { - try { - (await this.pCvRouter).dispose(); - } catch (_) {} - } - } - - render() { - return ( -
-
- -
-
-
- ); - } -} - -export default ImageCapture; -``` - -### Add the `VideoCapture` and `ImageCapture` component to `App.tsx` - -* On `/src/App.tsx`, we will edit the component so that it offers buttons to switch components between `VideoCapture` and `ImageCapture`. - -* Add following code to `App.tsx`. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```tsx -/* src/App.tsx */ -import React from "react"; -import "./dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import VideoCapture from "./components/VideoCapture/VideoCapture"; -import ImageCapture from "./components/ImageCapture/ImageCapture"; - -enum Modes { - VIDEO_CAPTURE = "video", - IMAGE_CAPTURE = "image", -} - -class App extends React.Component { - state = { - mode: Modes.VIDEO_CAPTURE, - }; - - showVideoCapture = () => { - this.setState({ - mode: Modes.VIDEO_CAPTURE, - }); - }; - - showImageCapture = () => { - this.setState({ - mode: Modes.IMAGE_CAPTURE, - }); - }; - - render() { - return ( -
-
-

Hello World for React

-
-
- - -
-
{this.state.mode === Modes.VIDEO_CAPTURE ? : }
-
- ); - } -} - -export default App; -``` - -* Try running the project. - -```cmd -npm start -``` - -If you have followed all the steps correctly, you should now have a functioning page that allows you to scan barcodes from a webcam or a built-in camera. Additionally, if you want to decode a local image, you can click the `Decode Image` button and select the image you want to decode. Any barcodes that are detected will be displayed in a dialog. - -## Development server - -Runs the app in the development mode.\ -Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.\ -You will also see any lint errors in the console. - -## Build - -Builds the app for production to the `build` folder.\ -It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.\ -Your app is ready to be deployed! - -See the section about [deployment](https://create-react-app.dev/docs/deployment/) for more information. - -## Support - -If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/pr-preview/pr-214/hello-world/react/package.json b/pr-preview/pr-214/hello-world/react/package.json deleted file mode 100644 index 84e11d02..00000000 --- a/pr-preview/pr-214/hello-world/react/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "dbrjs-react-sample", - "version": "0.1.0", - "private": true, - "dependencies": { - "@testing-library/jest-dom": "^5.17.0", - "@testing-library/react": "^13.4.0", - "@testing-library/user-event": "^13.5.0", - "@types/jest": "^27.5.2", - "@types/node": "^16.18.98", - "@types/react": "^18.3.3", - "@types/react-dom": "^18.3.0", - "dynamsoft-barcode-reader-bundle": "10.2.1000", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "react-scripts": "5.0.1", - "typescript": "^4.9.5", - "web-vitals": "^2.1.4" - }, - "scripts": { - "start": "react-scripts start", - "build": "react-scripts build", - "test": "react-scripts test", - "eject": "react-scripts eject" - }, - "eslintConfig": { - "extends": [ - "react-app", - "react-app/jest" - ] - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - } -} \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/react/public/favicon.ico b/pr-preview/pr-214/hello-world/react/public/favicon.ico deleted file mode 100644 index a11777cc471a4344702741ab1c8a588998b1311a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ diff --git a/pr-preview/pr-214/hello-world/react/public/index.html b/pr-preview/pr-214/hello-world/react/public/index.html deleted file mode 100644 index 4f81c0fb..00000000 --- a/pr-preview/pr-214/hello-world/react/public/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - Hello World for React - Dynamsoft Barcode Reader Sample - - - -
- - - diff --git a/pr-preview/pr-214/hello-world/react/public/logo192.png b/pr-preview/pr-214/hello-world/react/public/logo192.png deleted file mode 100644 index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5347 zcmZWtbyO6NvR-oO24RV%BvuJ&=?+<7=`LvyB&A_#M7mSDYw1v6DJkiYl9XjT!%$dLEBTQ8R9|wd3008in6lFF3GV-6mLi?MoP_y~}QUnaDCHI#t z7w^m$@6DI)|C8_jrT?q=f8D?0AM?L)Z}xAo^e^W>t$*Y0KlT5=@bBjT9kxb%-KNdk zeOS1tKO#ChhG7%{ApNBzE2ZVNcxbrin#E1TiAw#BlUhXllzhN$qWez5l;h+t^q#Eav8PhR2|T}y5kkflaK`ba-eoE+Z2q@o6P$)=&` z+(8}+-McnNO>e#$Rr{32ngsZIAX>GH??tqgwUuUz6kjns|LjsB37zUEWd|(&O!)DY zQLrq%Y>)Y8G`yYbYCx&aVHi@-vZ3|ebG!f$sTQqMgi0hWRJ^Wc+Ibv!udh_r%2|U) zPi|E^PK?UE!>_4`f`1k4hqqj_$+d!EB_#IYt;f9)fBOumGNyglU(ofY`yHq4Y?B%- zp&G!MRY<~ajTgIHErMe(Z8JG*;D-PJhd@RX@QatggM7+G(Lz8eZ;73)72Hfx5KDOE zkT(m}i2;@X2AT5fW?qVp?@WgN$aT+f_6eo?IsLh;jscNRp|8H}Z9p_UBO^SJXpZew zEK8fz|0Th%(Wr|KZBGTM4yxkA5CFdAj8=QSrT$fKW#tweUFqr0TZ9D~a5lF{)%-tTGMK^2tz(y2v$i%V8XAxIywrZCp=)83p(zIk6@S5AWl|Oa2hF`~~^W zI;KeOSkw1O#TiQ8;U7OPXjZM|KrnN}9arP)m0v$c|L)lF`j_rpG(zW1Qjv$=^|p*f z>)Na{D&>n`jOWMwB^TM}slgTEcjxTlUby89j1)|6ydRfWERn3|7Zd2&e7?!K&5G$x z`5U3uFtn4~SZq|LjFVrz$3iln-+ucY4q$BC{CSm7Xe5c1J<=%Oagztj{ifpaZk_bQ z9Sb-LaQMKp-qJA*bP6DzgE3`}*i1o3GKmo2pn@dj0;He}F=BgINo};6gQF8!n0ULZ zL>kC0nPSFzlcB7p41doao2F7%6IUTi_+!L`MM4o*#Y#0v~WiO8uSeAUNp=vA2KaR&=jNR2iVwG>7t%sG2x_~yXzY)7K& zk3p+O0AFZ1eu^T3s};B%6TpJ6h-Y%B^*zT&SN7C=N;g|#dGIVMSOru3iv^SvO>h4M=t-N1GSLLDqVTcgurco6)3&XpU!FP6Hlrmj}f$ zp95;b)>M~`kxuZF3r~a!rMf4|&1=uMG$;h^g=Kl;H&Np-(pFT9FF@++MMEx3RBsK?AU0fPk-#mdR)Wdkj)`>ZMl#^<80kM87VvsI3r_c@_vX=fdQ`_9-d(xiI z4K;1y1TiPj_RPh*SpDI7U~^QQ?%0&!$Sh#?x_@;ag)P}ZkAik{_WPB4rHyW#%>|Gs zdbhyt=qQPA7`?h2_8T;-E6HI#im9K>au*(j4;kzwMSLgo6u*}-K`$_Gzgu&XE)udQ zmQ72^eZd|vzI)~!20JV-v-T|<4@7ruqrj|o4=JJPlybwMg;M$Ud7>h6g()CT@wXm` zbq=A(t;RJ^{Xxi*Ff~!|3!-l_PS{AyNAU~t{h;(N(PXMEf^R(B+ZVX3 z8y0;0A8hJYp@g+c*`>eTA|3Tgv9U8#BDTO9@a@gVMDxr(fVaEqL1tl?md{v^j8aUv zm&%PX4^|rX|?E4^CkplWWNv*OKM>DxPa z!RJ)U^0-WJMi)Ksc!^ixOtw^egoAZZ2Cg;X7(5xZG7yL_;UJ#yp*ZD-;I^Z9qkP`} zwCTs0*%rIVF1sgLervtnUo&brwz?6?PXRuOCS*JI-WL6GKy7-~yi0giTEMmDs_-UX zo=+nFrW_EfTg>oY72_4Z0*uG>MnXP=c0VpT&*|rvv1iStW;*^={rP1y?Hv+6R6bxFMkxpWkJ>m7Ba{>zc_q zEefC3jsXdyS5??Mz7IET$Kft|EMNJIv7Ny8ZOcKnzf`K5Cd)&`-fTY#W&jnV0l2vt z?Gqhic}l}mCv1yUEy$%DP}4AN;36$=7aNI^*AzV(eYGeJ(Px-j<^gSDp5dBAv2#?; zcMXv#aj>%;MiG^q^$0MSg-(uTl!xm49dH!{X0){Ew7ThWV~Gtj7h%ZD zVN-R-^7Cf0VH!8O)uUHPL2mO2tmE*cecwQv_5CzWeh)ykX8r5Hi`ehYo)d{Jnh&3p z9ndXT$OW51#H5cFKa76c<%nNkP~FU93b5h-|Cb}ScHs@4Q#|}byWg;KDMJ#|l zE=MKD*F@HDBcX@~QJH%56eh~jfPO-uKm}~t7VkHxHT;)4sd+?Wc4* z>CyR*{w@4(gnYRdFq=^(#-ytb^5ESD?x<0Skhb%Pt?npNW1m+Nv`tr9+qN<3H1f<% zZvNEqyK5FgPsQ`QIu9P0x_}wJR~^CotL|n zk?dn;tLRw9jJTur4uWoX6iMm914f0AJfB@C74a;_qRrAP4E7l890P&{v<}>_&GLrW z)klculcg`?zJO~4;BBAa=POU%aN|pmZJn2{hA!d!*lwO%YSIzv8bTJ}=nhC^n}g(ld^rn#kq9Z3)z`k9lvV>y#!F4e{5c$tnr9M{V)0m(Z< z#88vX6-AW7T2UUwW`g<;8I$Jb!R%z@rCcGT)-2k7&x9kZZT66}Ztid~6t0jKb&9mm zpa}LCb`bz`{MzpZR#E*QuBiZXI#<`5qxx=&LMr-UUf~@dRk}YI2hbMsAMWOmDzYtm zjof16D=mc`^B$+_bCG$$@R0t;e?~UkF?7<(vkb70*EQB1rfUWXh$j)R2)+dNAH5%R zEBs^?N;UMdy}V};59Gu#0$q53$}|+q7CIGg_w_WlvE}AdqoS<7DY1LWS9?TrfmcvT zaypmplwn=P4;a8-%l^e?f`OpGb}%(_mFsL&GywhyN(-VROj`4~V~9bGv%UhcA|YW% zs{;nh@aDX11y^HOFXB$a7#Sr3cEtNd4eLm@Y#fc&j)TGvbbMwze zXtekX_wJqxe4NhuW$r}cNy|L{V=t#$%SuWEW)YZTH|!iT79k#?632OFse{+BT_gau zJwQcbH{b}dzKO?^dV&3nTILYlGw{27UJ72ZN){BILd_HV_s$WfI2DC<9LIHFmtyw? zQ;?MuK7g%Ym+4e^W#5}WDLpko%jPOC=aN)3!=8)s#Rnercak&b3ESRX3z{xfKBF8L z5%CGkFmGO@x?_mPGlpEej!3!AMddChabyf~nJNZxx!D&{@xEb!TDyvqSj%Y5@A{}9 zRzoBn0?x}=krh{ok3Nn%e)#~uh;6jpezhA)ySb^b#E>73e*frBFu6IZ^D7Ii&rsiU z%jzygxT-n*joJpY4o&8UXr2s%j^Q{?e-voloX`4DQyEK+DmrZh8A$)iWL#NO9+Y@!sO2f@rI!@jN@>HOA< z?q2l{^%mY*PNx2FoX+A7X3N}(RV$B`g&N=e0uvAvEN1W^{*W?zT1i#fxuw10%~))J zjx#gxoVlXREWZf4hRkgdHx5V_S*;p-y%JtGgQ4}lnA~MBz-AFdxUxU1RIT$`sal|X zPB6sEVRjGbXIP0U+?rT|y5+ev&OMX*5C$n2SBPZr`jqzrmpVrNciR0e*Wm?fK6DY& zl(XQZ60yWXV-|Ps!A{EF;=_z(YAF=T(-MkJXUoX zI{UMQDAV2}Ya?EisdEW;@pE6dt;j0fg5oT2dxCi{wqWJ<)|SR6fxX~5CzblPGr8cb zUBVJ2CQd~3L?7yfTpLNbt)He1D>*KXI^GK%<`bq^cUq$Q@uJifG>p3LU(!H=C)aEL zenk7pVg}0{dKU}&l)Y2Y2eFMdS(JS0}oZUuVaf2+K*YFNGHB`^YGcIpnBlMhO7d4@vV zv(@N}(k#REdul8~fP+^F@ky*wt@~&|(&&meNO>rKDEnB{ykAZ}k>e@lad7to>Ao$B zz<1(L=#J*u4_LB=8w+*{KFK^u00NAmeNN7pr+Pf+N*Zl^dO{LM-hMHyP6N!~`24jd zXYP|Ze;dRXKdF2iJG$U{k=S86l@pytLx}$JFFs8e)*Vi?aVBtGJ3JZUj!~c{(rw5>vuRF$`^p!P8w1B=O!skwkO5yd4_XuG^QVF z`-r5K7(IPSiKQ2|U9+`@Js!g6sfJwAHVd|s?|mnC*q zp|B|z)(8+mxXyxQ{8Pg3F4|tdpgZZSoU4P&9I8)nHo1@)9_9u&NcT^FI)6|hsAZFk zZ+arl&@*>RXBf-OZxhZerOr&dN5LW9@gV=oGFbK*J+m#R-|e6(Loz(;g@T^*oO)0R zN`N=X46b{7yk5FZGr#5&n1!-@j@g02g|X>MOpF3#IjZ_4wg{dX+G9eqS+Es9@6nC7 zD9$NuVJI}6ZlwtUm5cCAiYv0(Yi{%eH+}t)!E^>^KxB5^L~a`4%1~5q6h>d;paC9c zTj0wTCKrhWf+F#5>EgX`sl%POl?oyCq0(w0xoL?L%)|Q7d|Hl92rUYAU#lc**I&^6p=4lNQPa0 znQ|A~i0ip@`B=FW-Q;zh?-wF;Wl5!+q3GXDu-x&}$gUO)NoO7^$BeEIrd~1Dh{Tr` z8s<(Bn@gZ(mkIGnmYh_ehXnq78QL$pNDi)|QcT*|GtS%nz1uKE+E{7jdEBp%h0}%r zD2|KmYGiPa4;md-t_m5YDz#c*oV_FqXd85d@eub?9N61QuYcb3CnVWpM(D-^|CmkL z(F}L&N7qhL2PCq)fRh}XO@U`Yn<?TNGR4L(mF7#4u29{i~@k;pLsgl({YW5`Mo+p=zZn3L*4{JU;++dG9 X@eDJUQo;Ye2mwlRs?y0|+_a0zY+Zo%Dkae}+MySoIppb75o?vUW_?)>@g{U2`ERQIXV zeY$JrWnMZ$QC<=ii4X|@0H8`si75jB(ElJb00HAB%>SlLR{!zO|C9P3zxw_U8?1d8uRZ=({Ga4shyN}3 zAK}WA(ds|``G4jA)9}Bt2Hy0+f3rV1E6b|@?hpGA=PI&r8)ah|)I2s(P5Ic*Ndhn^ z*T&j@gbCTv7+8rpYbR^Ty}1AY)YH;p!m948r#%7x^Z@_-w{pDl|1S4`EM3n_PaXvK z1JF)E3qy$qTj5Xs{jU9k=y%SQ0>8E$;x?p9ayU0bZZeo{5Z@&FKX>}s!0+^>C^D#z z>xsCPvxD3Z=dP}TTOSJhNTPyVt14VCQ9MQFN`rn!c&_p?&4<5_PGm4a;WS&1(!qKE z_H$;dDdiPQ!F_gsN`2>`X}$I=B;={R8%L~`>RyKcS$72ai$!2>d(YkciA^J0@X%G4 z4cu!%Ps~2JuJ8ex`&;Fa0NQOq_nDZ&X;^A=oc1&f#3P1(!5il>6?uK4QpEG8z0Rhu zvBJ+A9RV?z%v?!$=(vcH?*;vRs*+PPbOQ3cdPr5=tOcLqmfx@#hOqX0iN)wTTO21jH<>jpmwRIAGw7`a|sl?9y9zRBh>(_%| zF?h|P7}~RKj?HR+q|4U`CjRmV-$mLW>MScKnNXiv{vD3&2@*u)-6P@h0A`eeZ7}71 zK(w%@R<4lLt`O7fs1E)$5iGb~fPfJ?WxhY7c3Q>T-w#wT&zW522pH-B%r5v#5y^CF zcC30Se|`D2mY$hAlIULL%-PNXgbbpRHgn<&X3N9W!@BUk@9g*P5mz-YnZBb*-$zMM z7Qq}ic0mR8n{^L|=+diODdV}Q!gwr?y+2m=3HWwMq4z)DqYVg0J~^}-%7rMR@S1;9 z7GFj6K}i32X;3*$SmzB&HW{PJ55kT+EI#SsZf}bD7nW^Haf}_gXciYKX{QBxIPSx2Ma? zHQqgzZq!_{&zg{yxqv3xq8YV+`S}F6A>Gtl39_m;K4dA{pP$BW0oIXJ>jEQ!2V3A2 zdpoTxG&V=(?^q?ZTj2ZUpDUdMb)T?E$}CI>r@}PFPWD9@*%V6;4Ag>D#h>!s)=$0R zRXvdkZ%|c}ubej`jl?cS$onl9Tw52rBKT)kgyw~Xy%z62Lr%V6Y=f?2)J|bZJ5(Wx zmji`O;_B+*X@qe-#~`HFP<{8$w@z4@&`q^Q-Zk8JG3>WalhnW1cvnoVw>*R@c&|o8 zZ%w!{Z+MHeZ*OE4v*otkZqz11*s!#s^Gq>+o`8Z5 z^i-qzJLJh9!W-;SmFkR8HEZJWiXk$40i6)7 zZpr=k2lp}SasbM*Nbn3j$sn0;rUI;%EDbi7T1ZI4qL6PNNM2Y%6{LMIKW+FY_yF3) zSKQ2QSujzNMSL2r&bYs`|i2Dnn z=>}c0>a}>|uT!IiMOA~pVT~R@bGlm}Edf}Kq0?*Af6#mW9f9!}RjW7om0c9Qlp;yK z)=XQs(|6GCadQbWIhYF=rf{Y)sj%^Id-ARO0=O^Ad;Ph+ z0?$eE1xhH?{T$QI>0JP75`r)U_$#%K1^BQ8z#uciKf(C701&RyLQWBUp*Q7eyn76} z6JHpC9}R$J#(R0cDCkXoFSp;j6{x{b&0yE@P7{;pCEpKjS(+1RQy38`=&Yxo%F=3y zCPeefABp34U-s?WmU#JJw23dcC{sPPFc2#J$ZgEN%zod}J~8dLm*fx9f6SpO zn^Ww3bt9-r0XaT2a@Wpw;C23XM}7_14#%QpubrIw5aZtP+CqIFmsG4`Cm6rfxl9n5 z7=r2C-+lM2AB9X0T_`?EW&Byv&K?HS4QLoylJ|OAF z`8atBNTzJ&AQ!>sOo$?^0xj~D(;kS$`9zbEGd>f6r`NC3X`tX)sWgWUUOQ7w=$TO&*j;=u%25ay-%>3@81tGe^_z*C7pb9y*Ed^H3t$BIKH2o+olp#$q;)_ zfpjCb_^VFg5fU~K)nf*d*r@BCC>UZ!0&b?AGk_jTPXaSnCuW110wjHPPe^9R^;jo3 zwvzTl)C`Zl5}O2}3lec=hZ*$JnkW#7enKKc)(pM${_$9Hc=Sr_A9Biwe*Y=T?~1CK z6eZ9uPICjy-sMGbZl$yQmpB&`ouS8v{58__t0$JP%i3R&%QR3ianbZqDs<2#5FdN@n5bCn^ZtH992~5k(eA|8|@G9u`wdn7bnpg|@{m z^d6Y`*$Zf2Xr&|g%sai#5}Syvv(>Jnx&EM7-|Jr7!M~zdAyjt*xl;OLhvW-a%H1m0 z*x5*nb=R5u><7lyVpNAR?q@1U59 zO+)QWwL8t zyip?u_nI+K$uh{y)~}qj?(w0&=SE^8`_WMM zTybjG=999h38Yes7}-4*LJ7H)UE8{mE(6;8voE+TYY%33A>S6`G_95^5QHNTo_;Ao ztIQIZ_}49%{8|=O;isBZ?=7kfdF8_@azfoTd+hEJKWE!)$)N%HIe2cplaK`ry#=pV z0q{9w-`i0h@!R8K3GC{ivt{70IWG`EP|(1g7i_Q<>aEAT{5(yD z=!O?kq61VegV+st@XCw475j6vS)_z@efuqQgHQR1T4;|-#OLZNQJPV4k$AX1Uk8Lm z{N*b*ia=I+MB}kWpupJ~>!C@xEN#Wa7V+7{m4j8c?)ChV=D?o~sjT?0C_AQ7B-vxqX30s0I_`2$in86#`mAsT-w?j{&AL@B3$;P z31G4(lV|b}uSDCIrjk+M1R!X7s4Aabn<)zpgT}#gE|mIvV38^ODy@<&yflpCwS#fRf9ZX3lPV_?8@C5)A;T zqmouFLFk;qIs4rA=hh=GL~sCFsXHsqO6_y~*AFt939UYVBSx1s(=Kb&5;j7cSowdE;7()CC2|-i9Zz+_BIw8#ll~-tyH?F3{%`QCsYa*b#s*9iCc`1P1oC26?`g<9))EJ3%xz+O!B3 zZ7$j~To)C@PquR>a1+Dh>-a%IvH_Y7^ys|4o?E%3`I&ADXfC8++hAdZfzIT#%C+Jz z1lU~K_vAm0m8Qk}K$F>|>RPK%<1SI0(G+8q~H zAsjezyP+u!Se4q3GW)`h`NPSRlMoBjCzNPesWJwVTY!o@G8=(6I%4XHGaSiS3MEBK zhgGFv6Jc>L$4jVE!I?TQuwvz_%CyO!bLh94nqK11C2W$*aa2ueGopG8DnBICVUORP zgytv#)49fVXDaR$SukloYC3u7#5H)}1K21=?DKj^U)8G;MS)&Op)g^zR2($<>C*zW z;X7`hLxiIO#J`ANdyAOJle4V%ppa*(+0i3w;8i*BA_;u8gOO6)MY`ueq7stBMJTB; z-a0R>hT*}>z|Gg}@^zDL1MrH+2hsR8 zHc}*9IvuQC^Ju)^#Y{fOr(96rQNPNhxc;mH@W*m206>Lo<*SaaH?~8zg&f&%YiOEG zGiz?*CP>Bci}!WiS=zj#K5I}>DtpregpP_tfZtPa(N<%vo^#WCQ5BTv0vr%Z{)0q+ z)RbfHktUm|lg&U3YM%lMUM(fu}i#kjX9h>GYctkx9Mt_8{@s%!K_EI zScgwy6%_fR?CGJQtmgNAj^h9B#zmaMDWgH55pGuY1Gv7D z;8Psm(vEPiwn#MgJYu4Ty9D|h!?Rj0ddE|&L3S{IP%H4^N!m`60ZwZw^;eg4sk6K{ ziA^`Sbl_4~f&Oo%n;8Ye(tiAdlZKI!Z=|j$5hS|D$bDJ}p{gh$KN&JZYLUjv4h{NY zBJ>X9z!xfDGY z+oh_Z&_e#Q(-}>ssZfm=j$D&4W4FNy&-kAO1~#3Im;F)Nwe{(*75(p=P^VI?X0GFakfh+X-px4a%Uw@fSbmp9hM1_~R>?Z8+ ziy|e9>8V*`OP}4x5JjdWp}7eX;lVxp5qS}0YZek;SNmm7tEeSF*-dI)6U-A%m6YvCgM(}_=k#a6o^%-K4{`B1+}O4x zztDT%hVb;v#?j`lTvlFQ3aV#zkX=7;YFLS$uIzb0E3lozs5`Xy zi~vF+%{z9uLjKvKPhP%x5f~7-Gj+%5N`%^=yk*Qn{`> z;xj&ROY6g`iy2a@{O)V(jk&8#hHACVDXey5a+KDod_Z&}kHM}xt7}Md@pil{2x7E~ zL$k^d2@Ec2XskjrN+IILw;#7((abu;OJii&v3?60x>d_Ma(onIPtcVnX@ELF0aL?T zSmWiL3(dOFkt!x=1O!_0n(cAzZW+3nHJ{2S>tgSK?~cFha^y(l@-Mr2W$%MN{#af8J;V*>hdq!gx=d0h$T7l}>91Wh07)9CTX zh2_ZdQCyFOQ)l(}gft0UZG`Sh2`x-w`5vC2UD}lZs*5 zG76$akzn}Xi))L3oGJ75#pcN=cX3!=57$Ha=hQ2^lwdyU#a}4JJOz6ddR%zae%#4& za)bFj)z=YQela(F#Y|Q#dp}PJghITwXouVaMq$BM?K%cXn9^Y@g43$=O)F&ZlOUom zJiad#dea;-eywBA@e&D6Pdso1?2^(pXiN91?jvcaUyYoKUmvl5G9e$W!okWe*@a<^ z8cQQ6cNSf+UPDx%?_G4aIiybZHHagF{;IcD(dPO!#=u zWfqLcPc^+7Uu#l(Bpxft{*4lv#*u7X9AOzDO z1D9?^jIo}?%iz(_dwLa{ex#T}76ZfN_Z-hwpus9y+4xaUu9cX}&P{XrZVWE{1^0yw zO;YhLEW!pJcbCt3L8~a7>jsaN{V3>tz6_7`&pi%GxZ=V3?3K^U+*ryLSb)8^IblJ0 zSRLNDvIxt)S}g30?s_3NX>F?NKIGrG_zB9@Z>uSW3k2es_H2kU;Rnn%j5qP)!XHKE zPB2mHP~tLCg4K_vH$xv`HbRsJwbZMUV(t=ez;Ec(vyHH)FbfLg`c61I$W_uBB>i^r z&{_P;369-&>23R%qNIULe=1~T$(DA`ev*EWZ6j(B$(te}x1WvmIll21zvygkS%vwG zzkR6Z#RKA2!z!C%M!O>!=Gr0(J0FP=-MN=5t-Ir)of50y10W}j`GtRCsXBakrKtG& zazmITDJMA0C51&BnLY)SY9r)NVTMs);1<=oosS9g31l{4ztjD3#+2H7u_|66b|_*O z;Qk6nalpqdHOjx|K&vUS_6ITgGll;TdaN*ta=M_YtyC)I9Tmr~VaPrH2qb6sd~=AcIxV+%z{E&0@y=DPArw zdV7z(G1hBx7hd{>(cr43^WF%4Y@PXZ?wPpj{OQ#tvc$pABJbvPGvdR`cAtHn)cSEV zrpu}1tJwQ3y!mSmH*uz*x0o|CS<^w%&KJzsj~DU0cLQUxk5B!hWE>aBkjJle8z~;s z-!A=($+}Jq_BTK5^B!`R>!MulZN)F=iXXeUd0w5lUsE5VP*H*oCy(;?S$p*TVvTxwAeWFB$jHyb0593)$zqalVlDX=GcCN1gU0 zlgU)I$LcXZ8Oyc2TZYTPu@-;7<4YYB-``Qa;IDcvydIA$%kHhJKV^m*-zxcvU4viy&Kr5GVM{IT>WRywKQ9;>SEiQD*NqplK-KK4YR`p0@JW)n_{TU3bt0 zim%;(m1=#v2}zTps=?fU5w^(*y)xT%1vtQH&}50ZF!9YxW=&7*W($2kgKyz1mUgfs zfV<*XVVIFnohW=|j+@Kfo!#liQR^x>2yQdrG;2o8WZR+XzU_nG=Ed2rK?ntA;K5B{ z>M8+*A4!Jm^Bg}aW?R?6;@QG@uQ8&oJ{hFixcfEnJ4QH?A4>P=q29oDGW;L;= z9-a0;g%c`C+Ai!UmK$NC*4#;Jp<1=TioL=t^YM)<<%u#hnnfSS`nq63QKGO1L8RzX z@MFDqs1z ztYmxDl@LU)5acvHk)~Z`RW7=aJ_nGD!mOSYD>5Odjn@TK#LY{jf?+piB5AM-CAoT_ z?S-*q7}wyLJzK>N%eMPuFgN)Q_otKP;aqy=D5f!7<=n(lNkYRXVpkB{TAYLYg{|(jtRqYmg$xH zjmq?B(RE4 zQx^~Pt}gxC2~l=K$$-sYy_r$CO(d=+b3H1MB*y_5g6WLaWTXn+TKQ|hNY^>Mp6k*$ zwkovomhu776vQATqT4blf~g;TY(MWCrf^^yfWJvSAB$p5l;jm@o#=!lqw+Lqfq>X= z$6~kxfm7`3q4zUEB;u4qa#BdJxO!;xGm)wwuisj{0y2x{R(IGMrsIzDY9LW>m!Y`= z04sx3IjnYvL<4JqxQ8f7qYd0s2Ig%`ytYPEMKI)s(LD}D@EY>x`VFtqvnADNBdeao zC96X+MxnwKmjpg{U&gP3HE}1=s!lv&D{6(g_lzyF3A`7Jn*&d_kL<;dAFx!UZ>hB8 z5A*%LsAn;VLp>3${0>M?PSQ)9s3}|h2e?TG4_F{}{Cs>#3Q*t$(CUc}M)I}8cPF6% z=+h(Kh^8)}gj(0}#e7O^FQ6`~fd1#8#!}LMuo3A0bN`o}PYsm!Y}sdOz$+Tegc=qT z8x`PH$7lvnhJp{kHWb22l;@7B7|4yL4UOOVM0MP_>P%S1Lnid)+k9{+3D+JFa#Pyf zhVc#&df87APl4W9X)F3pGS>@etfl=_E5tBcVoOfrD4hmVeTY-cj((pkn%n@EgN{0f zwb_^Rk0I#iZuHK!l*lN`ceJn(sI{$Fq6nN& zE<-=0_2WN}m+*ivmIOxB@#~Q-cZ>l136w{#TIJe478`KE7@=a{>SzPHsKLzYAyBQO zAtuuF$-JSDy_S@6GW0MOE~R)b;+0f%_NMrW(+V#c_d&U8Z9+ec4=HmOHw?gdjF(Lu zzra83M_BoO-1b3;9`%&DHfuUY)6YDV21P$C!Rc?mv&{lx#f8oc6?0?x zK08{WP65?#>(vPfA-c=MCY|%*1_<3D4NX zeVTi-JGl2uP_2@0F{G({pxQOXt_d{g_CV6b?jNpfUG9;8yle-^4KHRvZs-_2siata zt+d_T@U$&t*xaD22(fH(W1r$Mo?3dc%Tncm=C6{V9y{v&VT#^1L04vDrLM9qBoZ4@ z6DBN#m57hX7$C(=#$Y5$bJmwA$T8jKD8+6A!-IJwA{WOfs%s}yxUw^?MRZjF$n_KN z6`_bGXcmE#5e4Ym)aQJ)xg3Pg0@k`iGuHe?f(5LtuzSq=nS^5z>vqU0EuZ&75V%Z{ zYyhRLN^)$c6Ds{f7*FBpE;n5iglx5PkHfWrj3`x^j^t z7ntuV`g!9Xg#^3!x)l*}IW=(Tz3>Y5l4uGaB&lz{GDjm2D5S$CExLT`I1#n^lBH7Y zDgpMag@`iETKAI=p<5E#LTkwzVR@=yY|uBVI1HG|8h+d;G-qfuj}-ZR6fN>EfCCW z9~wRQoAPEa#aO?3h?x{YvV*d+NtPkf&4V0k4|L=uj!U{L+oLa(z#&iuhJr3-PjO3R z5s?=nn_5^*^Rawr>>Nr@K(jwkB#JK-=+HqwfdO<+P5byeim)wvqGlP-P|~Nse8=XF zz`?RYB|D6SwS}C+YQv+;}k6$-%D(@+t14BL@vM z2q%q?f6D-A5s$_WY3{^G0F131bbh|g!}#BKw=HQ7mx;Dzg4Z*bTLQSfo{ed{4}NZW zfrRm^Ca$rlE{Ue~uYv>R9{3smwATcdM_6+yWIO z*ZRH~uXE@#p$XTbCt5j7j2=86e{9>HIB6xDzV+vAo&B?KUiMP|ttOElepnl%|DPqL b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN diff --git a/pr-preview/pr-214/hello-world/react/public/manifest.json b/pr-preview/pr-214/hello-world/react/public/manifest.json deleted file mode 100644 index fc7ce894..00000000 --- a/pr-preview/pr-214/hello-world/react/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/react/public/robots.txt b/pr-preview/pr-214/hello-world/react/public/robots.txt deleted file mode 100644 index e9e57dc4..00000000 --- a/pr-preview/pr-214/hello-world/react/public/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: diff --git a/pr-preview/pr-214/hello-world/react/src/App.css b/pr-preview/pr-214/hello-world/react/src/App.css deleted file mode 100644 index 4b1f0cbc..00000000 --- a/pr-preview/pr-214/hello-world/react/src/App.css +++ /dev/null @@ -1,50 +0,0 @@ -.hello-world-page { - text-align: center; -} -.title { - display: flex; - justify-content: center; - align-items: center; - margin-top: 20px; -} -.title .title-logo { - width: 60px; - height: 60px; - animation: retate 5s infinite linear; -} -.buttons-container { - text-align: center; - margin: 20px auto; -} -.buttons-container button { - display: inline-block; - border: 1px solid black; - padding: 5px 15px; - background-color: transparent; - cursor: pointer; -} -.buttons-container button:first-child { - border-top-left-radius: 10px; - border-bottom-left-radius: 10px; - border-right: transparent; -} -.buttons-container button:nth-child(2) { - border-top-right-radius: 10px; - border-bottom-right-radius: 10px; - border-left: transparent; -} - -@media screen and (max-width: 800px) { - .buttons-container { - width: 70%; - } -} - -@keyframes retate { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/pr-preview/pr-214/hello-world/react/src/App.tsx b/pr-preview/pr-214/hello-world/react/src/App.tsx deleted file mode 100644 index 4aa79319..00000000 --- a/pr-preview/pr-214/hello-world/react/src/App.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import React from "react"; -import reactLogo from "./assets/logo.svg"; -import "./dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import VideoCapture from "./components/VideoCapture/VideoCapture"; -import ImageCapture from "./components/ImageCapture/ImageCapture"; -import "./App.css"; - -enum Modes { - VIDEO_CAPTURE = "video", - IMAGE_CAPTURE = "image", -} - -class App extends React.Component { - state = { - mode: Modes.VIDEO_CAPTURE, - }; - - showVideoCapture = () => { - this.setState({ - mode: Modes.VIDEO_CAPTURE, - }); - }; - - showImageCapture = () => { - this.setState({ - mode: Modes.IMAGE_CAPTURE, - }); - }; - - render() { - return ( -
-
-

Hello World for React

- logo -
-
- - -
-
{this.state.mode === Modes.VIDEO_CAPTURE ? : }
-
- ); - } -} - -export default App; diff --git a/pr-preview/pr-214/hello-world/react/src/assets/logo.svg b/pr-preview/pr-214/hello-world/react/src/assets/logo.svg deleted file mode 100644 index 9dfc1c05..00000000 --- a/pr-preview/pr-214/hello-world/react/src/assets/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/react/src/components/ImageCapture/ImageCapture.css b/pr-preview/pr-214/hello-world/react/src/components/ImageCapture/ImageCapture.css deleted file mode 100644 index 03da581c..00000000 --- a/pr-preview/pr-214/hello-world/react/src/components/ImageCapture/ImageCapture.css +++ /dev/null @@ -1,20 +0,0 @@ -.image-capture-container { - width: 100%; - height: 100%; - font-family: Consolas, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, - Courier New, monospace; -} - -.image-capture-container .input-container { - width: 80%; - height: 100%; - display: flex; - justify-content: center; - border: 1px solid black; - margin: 0 auto; -} - -.image-capture-container .results { - margin-top: 20px; - height: 100%; -} diff --git a/pr-preview/pr-214/hello-world/react/src/components/ImageCapture/ImageCapture.tsx b/pr-preview/pr-214/hello-world/react/src/components/ImageCapture/ImageCapture.tsx deleted file mode 100644 index 4b5e25bc..00000000 --- a/pr-preview/pr-214/hello-world/react/src/components/ImageCapture/ImageCapture.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import React, { ChangeEvent } from "react"; -import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { EnumCapturedResultItemType } from "dynamsoft-core"; -import type { BarcodeResultItem } from "dynamsoft-barcode-reader"; -import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; -import "./ImageCapture.css"; - -class ImageCapture extends React.Component { - resultsContainer: React.RefObject = React.createRef(); - - pCvRouter: Promise | null = null; - isDestroyed = false; - - async captureImage(e: ChangeEvent) { - let files = [...(e.target.files as any as File[])]; - e.target.value = ""; // reset input - this.resultsContainer.current!.innerText = ""; - - try { - const cvRouter = await (this.pCvRouter = this.pCvRouter || CaptureVisionRouter.createInstance()); - if (this.isDestroyed) return; - - for (let file of files) { - // Decode selected image with 'ReadBarcodes_SpeedFirst' template. - const result = await cvRouter.capture(file, "ReadBarcodes_SpeedFirst"); - if (this.isDestroyed) return; - - // Print file name if there's multiple files - if (files.length > 1) { - this.resultsContainer.current!.innerText += `\n${file.name}:\n`; - } - for (let _item of result.items) { - if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { - continue; // check if captured result item is a barcode - } - let item = _item as BarcodeResultItem; - this.resultsContainer.current!.innerText += item.text + "\n"; - console.log(item.text); - } - // If no items are found, display that no barcode was detected - if (!result.items.length) this.resultsContainer.current!.innerText += "No barcode found\n"; - } - } catch (ex: any) { - let errMsg = ex.message || ex; - console.error(errMsg); - alert(errMsg); - } - } - - async componentWillUnmount() { - this.isDestroyed = true; - if (this.pCvRouter) { - try { - (await this.pCvRouter).dispose(); - } catch (_) {} - } - } - - render() { - return ( -
-
- -
-
-
- ); - } -} - -export default ImageCapture; diff --git a/pr-preview/pr-214/hello-world/react/src/components/VideoCapture/VideoCapture.css b/pr-preview/pr-214/hello-world/react/src/components/VideoCapture/VideoCapture.css deleted file mode 100644 index 9bfe13ad..00000000 --- a/pr-preview/pr-214/hello-world/react/src/components/VideoCapture/VideoCapture.css +++ /dev/null @@ -1,6 +0,0 @@ -.results { - width: 100%; - height: 10vh; - overflow: auto; - white-space: pre-wrap; -} diff --git a/pr-preview/pr-214/hello-world/react/src/components/VideoCapture/VideoCapture.tsx b/pr-preview/pr-214/hello-world/react/src/components/VideoCapture/VideoCapture.tsx deleted file mode 100644 index 013963fb..00000000 --- a/pr-preview/pr-214/hello-world/react/src/components/VideoCapture/VideoCapture.tsx +++ /dev/null @@ -1,118 +0,0 @@ -import React from "react"; -import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { CameraEnhancer, CameraView } from "dynamsoft-camera-enhancer"; -import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; -import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; -import "./VideoCapture.css"; - -const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; - -class VideoCapture extends React.Component { - cameraViewContainer: React.RefObject = React.createRef(); - resultsContainer: React.RefObject = React.createRef(); - - resolveInit?: () => void; - pInit: Promise = new Promise((r) => (this.resolveInit = r)); - isDestroyed = false; - - cvRouter?: CaptureVisionRouter; - cameraEnhancer?: CameraEnhancer; - - async componentDidMount() { - try { - // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. - const cameraView = await CameraView.createInstance(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } // Check if component is destroyed after every async - - this.cameraEnhancer = await CameraEnhancer.createInstance(cameraView); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Get default UI and append it to DOM. - this.cameraViewContainer.current!.append(cameraView.getUIElement()); - - // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. - this.cvRouter = await CaptureVisionRouter.createInstance(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - this.cvRouter.setInput(this.cameraEnhancer); - - // Define a callback for results. - this.cvRouter.addResultReceiver({ - onDecodedBarcodesReceived: (result) => { - if (!result.barcodeResultItems.length) return; - - this.resultsContainer.current!.textContent = ""; - console.log(result); - for (let item of result.barcodeResultItems) { - this.resultsContainer.current!.textContent += `${item.formatString}: ${item.text}\n\n`; - } - }, - }); - - // Filter out unchecked and duplicate results. - const filter = new MultiFrameResultCrossFilter(); - // Filter out unchecked barcodes. - filter.enableResultCrossVerification("barcode", true); - // Filter out duplicate barcodes within 3 seconds. - filter.enableResultDeduplication("barcode", true); - await this.cvRouter.addResultFilter(filter); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Open camera and start scanning single barcode. - await this.cameraEnhancer.open(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - await this.cvRouter.startCapturing("ReadSingleBarcode"); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - } catch (ex: any) { - if ((ex as Error)?.message === componentDestroyedErrorMsg) { - console.log(componentDestroyedErrorMsg); - } else { - let errMsg = ex.message || ex; - console.error(errMsg); - alert(errMsg); - } - } - - // Resolve pInit promise once initialization is complete. - this.resolveInit!(); - } - - async componentWillUnmount() { - this.isDestroyed = true; - try { - // Wait for the pInit to complete before disposing resources. - await this.pInit; - this.cvRouter?.dispose(); - this.cameraEnhancer?.dispose(); - } catch (_) {} - } - - shouldComponentUpdate() { - // Never update UI after mount, sdk use native way to bind event, update will remove it. - return false; - } - - render() { - return ( -
-
-
- Results: -
-
- ); - } -} - -export default VideoCapture; diff --git a/pr-preview/pr-214/hello-world/react/src/dynamsoft.config.ts b/pr-preview/pr-214/hello-world/react/src/dynamsoft.config.ts deleted file mode 100644 index b8a17541..00000000 --- a/pr-preview/pr-214/hello-world/react/src/dynamsoft.config.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { CoreModule } from "dynamsoft-core"; -import { LicenseManager } from "dynamsoft-license"; -import "dynamsoft-barcode-reader"; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths = { - std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", - dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", - core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", - license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", - cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", - dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", - dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", -}; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(["DBR"]); diff --git a/pr-preview/pr-214/hello-world/react/src/index.css b/pr-preview/pr-214/hello-world/react/src/index.css deleted file mode 100644 index e9927237..00000000 --- a/pr-preview/pr-214/hello-world/react/src/index.css +++ /dev/null @@ -1,11 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", - "Droid Sans", "Helvetica Neue", sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; -} diff --git a/pr-preview/pr-214/hello-world/react/src/index.tsx b/pr-preview/pr-214/hello-world/react/src/index.tsx deleted file mode 100644 index 625b6731..00000000 --- a/pr-preview/pr-214/hello-world/react/src/index.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import ReactDOM from "react-dom/client"; -import "./index.css"; -import App from "./App"; - -const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); -root.render(); diff --git a/pr-preview/pr-214/hello-world/react/src/logo.svg b/pr-preview/pr-214/hello-world/react/src/logo.svg deleted file mode 100644 index 9dfc1c05..00000000 --- a/pr-preview/pr-214/hello-world/react/src/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/react/src/react-app-env.d.ts b/pr-preview/pr-214/hello-world/react/src/react-app-env.d.ts deleted file mode 100644 index 6431bc5f..00000000 --- a/pr-preview/pr-214/hello-world/react/src/react-app-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/pr-preview/pr-214/hello-world/react/tsconfig.json b/pr-preview/pr-214/hello-world/react/tsconfig.json deleted file mode 100644 index a273b0cf..00000000 --- a/pr-preview/pr-214/hello-world/react/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], - "allowJs": true, - "skipLibCheck": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": true, - "module": "esnext", - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx" - }, - "include": [ - "src" - ] -} diff --git a/pr-preview/pr-214/hello-world/read-an-image.html b/pr-preview/pr-214/hello-world/read-an-image.html deleted file mode 100644 index d090d073..00000000 --- a/pr-preview/pr-214/hello-world/read-an-image.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - Dynamsoft Barcode Reader Sample - Hello World (Read an Image) - - - -

Hello World (Read an Image)

-
- Results:
-
- - - - diff --git a/pr-preview/pr-214/hello-world/requirejs.html b/pr-preview/pr-214/hello-world/requirejs.html deleted file mode 100644 index 018a7750..00000000 --- a/pr-preview/pr-214/hello-world/requirejs.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - Dynamsoft Barcode Reader Sample - Hello World for RequireJS (Decode via Camera) - - - - -

Hello World for RequireJS (Decode via Camera)

-
- Results: -
-
- - - diff --git a/pr-preview/pr-214/hello-world/svelte/.gitignore b/pr-preview/pr-214/hello-world/svelte/.gitignore deleted file mode 100644 index a547bf36..00000000 --- a/pr-preview/pr-214/hello-world/svelte/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/pr-preview/pr-214/hello-world/svelte/README.md b/pr-preview/pr-214/hello-world/svelte/README.md deleted file mode 100644 index a8a1d3d5..00000000 --- a/pr-preview/pr-214/hello-world/svelte/README.md +++ /dev/null @@ -1,354 +0,0 @@ -# Hello World for Vite + Svelte + TS - Dynamsoft Barcode Reader Sample - -[Svelte](https://svelte.dev/) is a JavaScript library meant explicitly for creating interactive UIs. Svelte compiles components into code that directly manipulates the DOM, unlike other frameworks such as Vue and React that relies on a virtual DOM for updates. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a Svelte application using Vite. Note that in this sample we will use TypeScript. - -In this guide, we will be using [`dynamsoft-barcode-reader-bundle 10.2.1000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/10.2.1000). - -> Note: -> -> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! -> -> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. - -## Official Sample - -*
Hello World for Vite + Svelte + TS - Source Code - -## Preparation - -Make sure you have [node](https://nodejs.org/) installed. `node 16.20.1` and `svelte 4.2.12` are used in the example below. - -## Quick Start - -```cmd -npm install -npm run -``` -Then open http://localhost:5173/ to view the sample app. - -## Create the sample project - -If you're planning to start the project from scratch, in this section, we will be creating a Svelte application with Vite utilizing the Dynamsoft Barcode Reader bundle sdk. - -We'll be exploring how you could create a page that not only enables barcode scanning via a webcam or a built-in camera, but also decode barcodes from local images. - -By the end of this guide, you'll have a good understanding of the SDK and be ready to discover more ways to use it! - -### Create a Bootstrapped Svelte Application with Vite and TypeScript - -```cmd -npm create vite@latest my-app - - -√ Select a framework: » Svelte -√ Select a variant: » TypeScript -``` - -### **CD** to the root directory of the application and install necessary libraries - -```cmd -cd my-app -npm install dynamsoft-barcode-reader-bundle -E -``` - -## Start to implement - -### Add file "dynamsoft.config.ts" under "/src/" to configure libraries - -```typescript -/* /src/dynamsoft.config.ts */ -import { CoreModule } from "dynamsoft-core"; -import { LicenseManager } from "dynamsoft-license"; -import "dynamsoft-barcode-reader"; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths = { - std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", - dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", - core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", - license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", - cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", - dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", - dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", -}; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(["DBR"]); -``` - -> Note: -> -> * `initLicense()` specify a license key to use the library. You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=sample&product=dbr&package=js to get your own trial license good for 30 days. -> * `engineResourcePaths` tells the library where to get the necessary resources at runtime. - -### Build directory structure - -* Create a directory `components` under `/src/` - -### Create and edit the `VideoCapture` component - -* Create `VideoCapture.svelte` under `/src/components/`. The `VideoCapture` component helps decode barcodes via camera. - -* In `VideoCapture.svelte`, add code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```svelte - - - -
-
- Results:
-
-
-``` - -> Note: -> -> * If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customize-the-ui) - -### Create and edit the `ImageCapture` component - -* Create `ImageCapture.svelte` under `/src/components/`. The `ImageCapture` component helps decode barcodes in an image. - -* In `ImageCapture.svelte`, add code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```svelte - - - -
-
- -
-
-
-``` - -### Add the `VideoCapture` and `ImageCapture` component to `App.svelte` - -* On `/src/App.svelte`, we will edit the component so that it offers buttons to switch components between `VideoCapture` and `ImageCapture`. - -* Add following code to `App.svelte`. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```svelte - - - -
-
-
-

Hello World for Svelte

- -
-
- - -
- {#if mode === "video"} - - {:else} - - {/if} -
-
-``` - -* Try running the project. - -```cmd -npm run dev -``` - -If you followed all the steps correctly, you will have a working page that turns one of the cameras hooked to or built in your computer or mobile device into a barcode scanner. Also, if you want to decode a local image, just click the `Decode Image` button and select the image you want to decode. Once barcodes are found, the results will show in a dialog. - -## Support - -If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/svelte/index.html b/pr-preview/pr-214/hello-world/svelte/index.html deleted file mode 100644 index 6471fdec..00000000 --- a/pr-preview/pr-214/hello-world/svelte/index.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - Hello World for Vite + Svelte + TS - Dynamsoft Barcode Reader Sample - - -
- - - diff --git a/pr-preview/pr-214/hello-world/svelte/package.json b/pr-preview/pr-214/hello-world/svelte/package.json deleted file mode 100644 index 839edeb2..00000000 --- a/pr-preview/pr-214/hello-world/svelte/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "dbrjs-svelte-sample", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview", - "check": "svelte-check --tsconfig ./tsconfig.json" - }, - "dependencies": { - "dynamsoft-barcode-reader-bundle": "10.2.1000" - }, - "devDependencies": { - "@sveltejs/vite-plugin-svelte": "^3.0.2", - "@tsconfig/svelte": "^5.0.2", - "svelte": "^4.2.12", - "svelte-check": "^3.6.6", - "tslib": "^2.6.2", - "typescript": "^5.2.2", - "vite": "^5.1.6" - } -} diff --git a/pr-preview/pr-214/hello-world/svelte/src/App.svelte b/pr-preview/pr-214/hello-world/svelte/src/App.svelte deleted file mode 100644 index 78d16127..00000000 --- a/pr-preview/pr-214/hello-world/svelte/src/App.svelte +++ /dev/null @@ -1,88 +0,0 @@ - - -
-
-
-

Hello World for Svelte

- -
-
- - -
- {#if mode === "video"} - - {:else} - - {/if} -
-
- - diff --git a/pr-preview/pr-214/hello-world/svelte/src/components/ImageCapture.svelte b/pr-preview/pr-214/hello-world/svelte/src/components/ImageCapture.svelte deleted file mode 100644 index 1fbaf6c1..00000000 --- a/pr-preview/pr-214/hello-world/svelte/src/components/ImageCapture.svelte +++ /dev/null @@ -1,96 +0,0 @@ - - -
-
- -
-
-
- - diff --git a/pr-preview/pr-214/hello-world/svelte/src/components/VideoCapture.svelte b/pr-preview/pr-214/hello-world/svelte/src/components/VideoCapture.svelte deleted file mode 100644 index 9db2c92f..00000000 --- a/pr-preview/pr-214/hello-world/svelte/src/components/VideoCapture.svelte +++ /dev/null @@ -1,117 +0,0 @@ - - -
-
- Results:
-
-
- - diff --git a/pr-preview/pr-214/hello-world/svelte/src/dynamsoft.config.ts b/pr-preview/pr-214/hello-world/svelte/src/dynamsoft.config.ts deleted file mode 100644 index f37d9578..00000000 --- a/pr-preview/pr-214/hello-world/svelte/src/dynamsoft.config.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* /src/dynamsoft.config.ts */ -import { CoreModule } from "dynamsoft-core"; -import { LicenseManager } from "dynamsoft-license"; -import "dynamsoft-barcode-reader"; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths = { - std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", - dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", - core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", - license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", - cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", - dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", - dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", -}; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(["DBR"]); diff --git a/pr-preview/pr-214/hello-world/svelte/src/main.ts b/pr-preview/pr-214/hello-world/svelte/src/main.ts deleted file mode 100644 index 8c4eaed9..00000000 --- a/pr-preview/pr-214/hello-world/svelte/src/main.ts +++ /dev/null @@ -1,7 +0,0 @@ -import App from "./App.svelte"; - -const app = new App({ - target: document.getElementById("app")!, -}); - -export default app; diff --git a/pr-preview/pr-214/hello-world/svelte/src/vite-env.d.ts b/pr-preview/pr-214/hello-world/svelte/src/vite-env.d.ts deleted file mode 100644 index 4078e747..00000000 --- a/pr-preview/pr-214/hello-world/svelte/src/vite-env.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -/// -/// diff --git a/pr-preview/pr-214/hello-world/svelte/svelte.config.js b/pr-preview/pr-214/hello-world/svelte/svelte.config.js deleted file mode 100644 index b0683fd2..00000000 --- a/pr-preview/pr-214/hello-world/svelte/svelte.config.js +++ /dev/null @@ -1,7 +0,0 @@ -import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' - -export default { - // Consult https://svelte.dev/docs#compile-time-svelte-preprocess - // for more information about preprocessors - preprocess: vitePreprocess(), -} diff --git a/pr-preview/pr-214/hello-world/svelte/tsconfig.json b/pr-preview/pr-214/hello-world/svelte/tsconfig.json deleted file mode 100644 index 5fb548f2..00000000 --- a/pr-preview/pr-214/hello-world/svelte/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "@tsconfig/svelte/tsconfig.json", - "compilerOptions": { - "target": "ESNext", - "useDefineForClassFields": true, - "module": "ESNext", - "resolveJsonModule": true, - /** - * Typecheck JS in `.svelte` and `.js` files by default. - * Disable checkJs if you'd like to use dynamic types in JS. - * Note that setting allowJs false does not prevent the use - * of JS in `.svelte` files. - */ - "allowJs": true, - "checkJs": true, - "isolatedModules": true - }, - "include": ["src/**/*.ts", "src/**/*.js", "src/**/*.svelte"], - "references": [{ "path": "./tsconfig.node.json" }] -} diff --git a/pr-preview/pr-214/hello-world/svelte/tsconfig.node.json b/pr-preview/pr-214/hello-world/svelte/tsconfig.node.json deleted file mode 100644 index d02c37df..00000000 --- a/pr-preview/pr-214/hello-world/svelte/tsconfig.node.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "skipLibCheck": true, - "module": "ESNext", - "moduleResolution": "bundler", - "strict": true - }, - "include": ["vite.config.ts"] -} diff --git a/pr-preview/pr-214/hello-world/svelte/vite.config.ts b/pr-preview/pr-214/hello-world/svelte/vite.config.ts deleted file mode 100644 index 2aeffabd..00000000 --- a/pr-preview/pr-214/hello-world/svelte/vite.config.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { defineConfig } from 'vite' -import { svelte } from '@sveltejs/vite-plugin-svelte' - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [svelte()], - base: "./" -}) diff --git a/pr-preview/pr-214/hello-world/vue/.gitignore b/pr-preview/pr-214/hello-world/vue/.gitignore deleted file mode 100644 index aa2cb9ff..00000000 --- a/pr-preview/pr-214/hello-world/vue/.gitignore +++ /dev/null @@ -1,29 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* -.npmrc - -node_modules -.DS_Store -dist -dist-ssr -coverage -*.local - -/cypress/videos/ -/cypress/screenshots/ - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/pr-preview/pr-214/hello-world/vue/README.md b/pr-preview/pr-214/hello-world/vue/README.md deleted file mode 100644 index 3eb7215a..00000000 --- a/pr-preview/pr-214/hello-world/vue/README.md +++ /dev/null @@ -1,384 +0,0 @@ -# Hello World Sample for Vue3 - -[Vue 3](https://v3.vuejs.org/) is version 3 of Vue which is a progressive framework for building user interfaces. Check out the following guide on how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a Vue 3 application. Note that in this sample, `TypeScript` is used. - -In this guide, we will be using [`dynamsoft-barcode-reader-bundle 10.2.1000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/10.2.1000). - -> Note: -> -> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! -> -> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. - -## Official Sample - -* Hello World in Vue 3 - Source Code - -## Preparation - -Make sure you have [node](https://nodejs.org/) installed. `node 16.20.1` and `vue 3.3.4` are used in the example below. - -## Quick Start - -```cmd -npm install -npm run dev -``` -Then open http://localhost:5173/ to view the sample app. - -## Creating the sample project - -In this section, we will be creating a Vue application utilizing the Dynamsoft Barcode Reader bundle sdk. - -We'll be exploring how you could create a page that not only enables barcode scanning via a webcam or a built-in camera, but also decode barcodes from local images. - -By the end of this guide, you'll have a good understanding of the SDK and be ready to discover more ways to use it! - -### Create a Bootstrapped Raw Vue Application - -```cmd -npm create vue@3 -``` - -On installation, you will be prompted to configure your project.\ -You can customize these options according to your preferences.\ -Below is the configuration used for this sample. - -``` -√ Project name: ... vue-project -√ Add TypeScript? ... Yes -√ Add JSX Support? ... No -√ Add Vue Router for Single Page Application development? ... No -√ Add Pinia for state management? ... No -√ Add Vitest for Unit Testing? ... No -√ Add an End-to-End Testing Solution? » No -√ Add ESLint for code quality? ... No -√ Add Vue DevTools 7 extension for debugging? (experimental) ... No -``` - -### **CD** to the root directory of the application and install necessary libraries - -```cmd -cd vue-project -npm install dynamsoft-barcode-reader-bundle -E -``` - -## Start to implement - -### Add file "dynamsoft.config.ts" under "/src/" to configure libraries - -```typescript -/* /src/dynamsoft.config.ts */ -import { CoreModule } from "dynamsoft-core"; -import { LicenseManager } from "dynamsoft-license"; -import "dynamsoft-barcode-reader"; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths = { - std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", - dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", - core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", - license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", - cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", - dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", - dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", -}; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(["DBR"]); -``` - -> Note: -> -> * `initLicense()` specify a license key to use the library. You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=sample&product=dbr&package=js to get your own trial license good for 30 days. -> * `engineResourcePaths` tells the library where to get the necessary resources at runtime. - -### Create and edit the `VideoCapture` component - -* Create `VideoCapture.vue` under `/components/`. The VideoCapture component helps decode barcodes via camera. - -* In `VideoCapture.vue`, add the following code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```vue - - - - -``` -> Note: -> -> If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customize-the-ui) - -### Create and edit the `ImageCapture` component - -* Create `ImageCapture.vue` under `/components/`. The `ImageCapture` component helps decode barcodes in an image. - -* In `ImageCapture.vue`, add code for initializing and destroying `CaptureVisionRouter` instance. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```vue - - - - -``` - -### Add the `VideoCapture` and `ImageCapture` component to `App.vue` - -* On `/src/App.vue`, we will edit the component so that it offers buttons to switch components between `VideoCapture` and `ImageCapture`. - -* Add following code to `App.vue`. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```vue - - - - -``` -> Note: -> -> With Vue's `defineAsyncComponent` we can improve the initial load speed and performance of the application. -> -> `defineAsyncComponent` allows us to load components such as `VideoCapture` and `ImageCapture` asynchronously, which means that the component's code is only loaded when it's needed. This will result in a faster initial load times. -> -> However, if you're implementing server-side rendering with Vue, using `defineAsyncComponent` might cause issues while loading `VideoCapture` and `ImageCapture` as we use the window/document object. Make sure to load these components on the client-side! -> -> Read more: https://vuejs.org/guide/components/async.html - -* Try running the project. - -```cmd -npm run dev -``` -If you followed all the steps correctly, you will have a working page that turns one of the cameras hooked to or built in your computer or mobile device into a barcode scanner. Also, if you want to decode a local image, just click the `Decode Image` button and select the image you want to decode. Once barcodes are found, the results will show in a dialog. - -### Comment out the following code in `assets/main.css`. (optional) - -```css -@media (min-width: 1024px) { - /* body { - display: flex; - place-items: center; - } - - #app { - display: grid; - grid-template-columns: 1fr 1fr; - padding: 0 2rem; - } */ -} -``` - -## Project Setup - -```sh -npm install -``` - -### Compile and Hot-Reload for Development - -```sh -npm run dev -``` - -### Type-Check, Compile and Minify for Production - -```sh -npm run build -``` - -## Support - -If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/pr-preview/pr-214/hello-world/vue/env.d.ts b/pr-preview/pr-214/hello-world/vue/env.d.ts deleted file mode 100644 index 11f02fe2..00000000 --- a/pr-preview/pr-214/hello-world/vue/env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/pr-preview/pr-214/hello-world/vue/index.html b/pr-preview/pr-214/hello-world/vue/index.html deleted file mode 100644 index e9c29d99..00000000 --- a/pr-preview/pr-214/hello-world/vue/index.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - Hello World for Vue 3 - Dynamsoft Barcode Reader Sample - - -
- - - diff --git a/pr-preview/pr-214/hello-world/vue/package.json b/pr-preview/pr-214/hello-world/vue/package.json deleted file mode 100644 index 77fc7a23..00000000 --- a/pr-preview/pr-214/hello-world/vue/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "dbrjs-vue3-sample", - "version": "0.0.0", - "homepage": "./", - "private": true, - "scripts": { - "dev": "vite", - "build": "run-p type-check build-only", - "preview": "vite preview", - "build-only": "vite build", - "type-check": "vue-tsc --noEmit" - }, - "dependencies": { - "dynamsoft-barcode-reader-bundle": "10.2.1000", - "vue": "^3.2.45" - }, - "devDependencies": { - "@types/node": "^18.11.12", - "@vitejs/plugin-vue": "^4.0.0", - "@vue/tsconfig": "^0.1.3", - "npm-run-all": "^4.1.5", - "typescript": "~4.7.4", - "vite": "^4.0.0", - "vue-tsc": "^1.0.12" - } -} \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/vue/public/favicon.ico b/pr-preview/pr-214/hello-world/vue/public/favicon.ico deleted file mode 100644 index df36fcfb72584e00488330b560ebcf34a41c64c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S diff --git a/pr-preview/pr-214/hello-world/vue/src/App.vue b/pr-preview/pr-214/hello-world/vue/src/App.vue deleted file mode 100644 index d51c0d57..00000000 --- a/pr-preview/pr-214/hello-world/vue/src/App.vue +++ /dev/null @@ -1,72 +0,0 @@ - - - - - diff --git a/pr-preview/pr-214/hello-world/vue/src/assets/logo.svg b/pr-preview/pr-214/hello-world/vue/src/assets/logo.svg deleted file mode 100644 index bc826fed..00000000 --- a/pr-preview/pr-214/hello-world/vue/src/assets/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/vue/src/assets/main.css b/pr-preview/pr-214/hello-world/vue/src/assets/main.css deleted file mode 100644 index 77f7db1b..00000000 --- a/pr-preview/pr-214/hello-world/vue/src/assets/main.css +++ /dev/null @@ -1,6 +0,0 @@ -* { - margin: 0; - padding: 0; - box-sizing: border-box; - text-align: center; -} diff --git a/pr-preview/pr-214/hello-world/vue/src/components/ImageCapture.vue b/pr-preview/pr-214/hello-world/vue/src/components/ImageCapture.vue deleted file mode 100644 index 25392c19..00000000 --- a/pr-preview/pr-214/hello-world/vue/src/components/ImageCapture.vue +++ /dev/null @@ -1,88 +0,0 @@ - - - - - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/vue/src/components/VideoCapture.vue b/pr-preview/pr-214/hello-world/vue/src/components/VideoCapture.vue deleted file mode 100644 index f17e619c..00000000 --- a/pr-preview/pr-214/hello-world/vue/src/components/VideoCapture.vue +++ /dev/null @@ -1,108 +0,0 @@ - - - - - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/vue/src/dynamsoft.config.ts b/pr-preview/pr-214/hello-world/vue/src/dynamsoft.config.ts deleted file mode 100644 index b8a17541..00000000 --- a/pr-preview/pr-214/hello-world/vue/src/dynamsoft.config.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { CoreModule } from "dynamsoft-core"; -import { LicenseManager } from "dynamsoft-license"; -import "dynamsoft-barcode-reader"; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths = { - std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/", - dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/", - core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/", - license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/", - cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/", - dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/", - dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/", -}; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", true); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(["DBR"]); diff --git a/pr-preview/pr-214/hello-world/vue/src/main.ts b/pr-preview/pr-214/hello-world/vue/src/main.ts deleted file mode 100644 index 90e6400b..00000000 --- a/pr-preview/pr-214/hello-world/vue/src/main.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { createApp } from 'vue' -import App from './App.vue' - -import './assets/main.css' - -createApp(App).mount('#app') diff --git a/pr-preview/pr-214/hello-world/vue/tsconfig.config.json b/pr-preview/pr-214/hello-world/vue/tsconfig.config.json deleted file mode 100644 index bbaa4d88..00000000 --- a/pr-preview/pr-214/hello-world/vue/tsconfig.config.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@vue/tsconfig/tsconfig.node.json", - "include": ["vite.config.*", "vitest.config.*", "cypress.config.*", "playwright.config.*"], - "compilerOptions": { - "ignoreDeprecations": "5.0", - "composite": true, - "types": ["node"] - } -} diff --git a/pr-preview/pr-214/hello-world/vue/tsconfig.json b/pr-preview/pr-214/hello-world/vue/tsconfig.json deleted file mode 100644 index 5a2565a2..00000000 --- a/pr-preview/pr-214/hello-world/vue/tsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": "@vue/tsconfig/tsconfig.web.json", - "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], - "allowJs": true, - "compilerOptions": { - "baseUrl": ".", - "ignoreDeprecations": "5.0", - "paths": { - "@/*": ["./src/*"] - } - }, - - "references": [ - { - "path": "./tsconfig.config.json" - } - ] -} diff --git a/pr-preview/pr-214/hello-world/vue/vite.config.ts b/pr-preview/pr-214/hello-world/vue/vite.config.ts deleted file mode 100644 index 7677e967..00000000 --- a/pr-preview/pr-214/hello-world/vue/vite.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { fileURLToPath, URL } from 'node:url' - -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [vue()], - resolve: { - alias: { - '@': fileURLToPath(new URL('./src', import.meta.url)) - }, - }, - base: "./" -}) diff --git a/pr-preview/pr-214/hello-world/webview/android/.gitignore b/pr-preview/pr-214/hello-world/webview/android/.gitignore deleted file mode 100644 index aa724b77..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -*.iml -.gradle -/local.properties -/.idea/caches -/.idea/libraries -/.idea/modules.xml -/.idea/workspace.xml -/.idea/navEditor.xml -/.idea/assetWizardSettings.xml -.DS_Store -/build -/captures -.externalNativeBuild -.cxx -local.properties diff --git a/pr-preview/pr-214/hello-world/webview/android/README.md b/pr-preview/pr-214/hello-world/webview/android/README.md deleted file mode 100644 index 041ab8df..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Hello-world for Android WebView - Dynamsoft Barcode Reader Sample - -This sample demonstrates how to use the [Dynamsoft Barcode Reader](https://www.dynamsoft.com/barcode-reader/overview/) JS Edition in Android. - -If you want to learn how to use the Android Edition SDK in javascript, you can check [Android WebView Barcode Scanning](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/v9.x/android/JavaScript/WebViewBarcodeScanning). - -> Note: -> -> This guide uses DBR JS version 9. An updated guide for DBR JS version 10 is in progress and will be coming soon! - -## Support - -If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/.gitignore b/pr-preview/pr-214/hello-world/webview/android/app/.gitignore deleted file mode 100644 index 42afabfd..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/app/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/build.gradle b/pr-preview/pr-214/hello-world/webview/android/app/build.gradle deleted file mode 100644 index 33d838de..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/app/build.gradle +++ /dev/null @@ -1,45 +0,0 @@ -plugins { - id 'com.android.application' - id 'org.jetbrains.kotlin.android' -} - -android { - namespace 'com.dynamsoft.dbrjswebview' - compileSdk 33 - - defaultConfig { - applicationId "com.dynamsoft.dbrjswebview" - minSdk 19 - targetSdk 33 - versionCode 1 - versionName "1.0" - - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - kotlinOptions { - jvmTarget = '1.8' - } -} - -dependencies { - - implementation 'androidx.core:core-ktx:1.7.0' - implementation 'androidx.appcompat:appcompat:1.4.1' - implementation 'com.google.android.material:material:1.5.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.3' - implementation 'androidx.webkit:webkit:1.4.0' - testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.3' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' -} \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/proguard-rules.pro b/pr-preview/pr-214/hello-world/webview/android/app/proguard-rules.pro deleted file mode 100644 index 481bb434..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/app/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/AndroidManifest.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index f557697e..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html b/pr-preview/pr-214/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html deleted file mode 100644 index f06a33b2..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - Dynamsoft Barcode Reader Sample - Hello World (Decoding via Camera) - - - -

Hello World (Decode via Camera)

-
- Results:
-
- - - - diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt b/pr-preview/pr-214/hello-world/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt deleted file mode 100644 index 8ecaf703..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt +++ /dev/null @@ -1,105 +0,0 @@ -package com.dynamsoft.dbrjswebview - -import android.Manifest -import android.annotation.SuppressLint -import android.content.pm.PackageManager -import android.net.Uri -import androidx.appcompat.app.AppCompatActivity -import android.os.Bundle -import android.webkit.* -import androidx.activity.result.contract.ActivityResultContracts -import androidx.annotation.RequiresApi -import androidx.core.content.ContextCompat -import androidx.webkit.WebViewAssetLoader -import androidx.webkit.WebViewClientCompat - -class MainActivity : AppCompatActivity() { - @SuppressLint("SetJavaScriptEnabled") - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) - - val myWebView: WebView = findViewById(R.id.webview) - myWebView.settings.javaScriptEnabled = true - myWebView.settings.mediaPlaybackRequiresUserGesture = false - myWebView.settings.domStorageEnabled = true - - myWebView.webViewClient = MyWebViewClient() - myWebView.webChromeClient = MyWebChromeClient() - - myWebView.loadUrl("https://appassets.androidplatform.net/assets/decodeBarcodeInVideo.html") - } - - // Warning: If you use online url, you don't need `LocalContentWebViewClient` - // Refer: https://developer.android.com/develop/ui/views/layout/webapps/load-local-content?hl=en - private inner class MyWebViewClient : WebViewClientCompat() { - - private val assetLoader = WebViewAssetLoader.Builder() - .addPathHandler("/assets/", WebViewAssetLoader.AssetsPathHandler(this@MainActivity)) - .build() - - @RequiresApi(21) - override fun shouldInterceptRequest( - view: WebView, - request: WebResourceRequest - ): WebResourceResponse? { - return assetLoader.shouldInterceptRequest(request.url) - } - - // to support API < 21 - @Deprecated("Deprecated in Java") - override fun shouldInterceptRequest( - view: WebView, - url: String - ): WebResourceResponse? { - return assetLoader.shouldInterceptRequest(Uri.parse(url)) - } - } - - var cameraPermissionReq: PermissionRequest? = null - private inner class MyWebChromeClient : WebChromeClient() { - @RequiresApi(21) - override fun onPermissionRequest(request: PermissionRequest) { - if(request.resources.contains(PermissionRequest.RESOURCE_VIDEO_CAPTURE)){ - // Refer: https://developer.android.com/training/permissions/requesting - if(ContextCompat.checkSelfPermission( - this@MainActivity, - Manifest.permission.CAMERA - ) == PackageManager.PERMISSION_GRANTED){ - // You can use the API that requires the permission. - request.grant(arrayOf(PermissionRequest.RESOURCE_VIDEO_CAPTURE)) - }else{ - // You can directly ask for the permission. - // The registered ActivityResultCallback gets the result of this request. - this@MainActivity.cameraPermissionReq = request - requestCameraPermissionLauncher.launch(Manifest.permission.CAMERA) - } - }else{ - request.deny() - } - } - } - - // Refer: https://developer.android.com/training/permissions/requesting - @RequiresApi(21) - val requestCameraPermissionLauncher = registerForActivityResult( - ActivityResultContracts.RequestPermission() - ) { isGranted: Boolean -> - // Refer: https://www.dynamsoft.com/codepool/use-barcode-scanner-in-android-webview.html#set-up-webview - this@MainActivity.runOnUiThread { - if (isGranted) { - // Permission is granted. Continue the action or workflow in your - // app. - cameraPermissionReq?.grant(arrayOf(PermissionRequest.RESOURCE_VIDEO_CAPTURE)) - } else { - // Explain to the user that the feature is unavailable because the - // feature requires a permission that the user has denied. At the - // same time, respect the user's decision. Don't link to system - // settings in an effort to convince the user to change their - // decision. - cameraPermissionReq?.deny() - } - cameraPermissionReq = null - } - } -} \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml deleted file mode 100644 index 2b068d11..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/drawable/ic_launcher_background.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/drawable/ic_launcher_background.xml deleted file mode 100644 index 07d5da9c..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/drawable/ic_launcher_background.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/layout/activity_main.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/layout/activity_main.xml deleted file mode 100644 index 7b58479b..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index eca70cfe..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index eca70cfe..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml deleted file mode 100644 index 6f3b755b..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp deleted file mode 100644 index c209e78ecd372343283f4157dcfd918ec5165bb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1404 zcmV-?1%vuhNk&F=1pok7MM6+kP&il$0000G0000-002h-06|PpNX!5L00Dqw+t%{r zzW2vH!KF=w&cMnnN@{whkTw+#mAh0SV?YL=)3MimFYCWp#fpdtz~8$hD5VPuQgtcN zXl<@<#Cme5f5yr2h%@8TWh?)bSK`O z^Z@d={gn7J{iyxL_y_%J|L>ep{dUxUP8a{byupH&!UNR*OutO~0{*T4q5R6@ApLF! z5{w?Z150gC7#>(VHFJZ-^6O@PYp{t!jH(_Z*nzTK4 zkc{fLE4Q3|mA2`CWQ3{8;gxGizgM!zccbdQoOLZc8hThi-IhN90RFT|zlxh3Ty&VG z?Fe{#9RrRnxzsu|Lg2ddugg7k%>0JeD+{XZ7>Z~{=|M+sh1MF7~ zz>To~`~LVQe1nNoR-gEzkpe{Ak^7{{ZBk2i_<+`Bq<^GB!RYG+z)h;Y3+<{zlMUYd zrd*W4w&jZ0%kBuDZ1EW&KLpyR7r2=}fF2%0VwHM4pUs}ZI2egi#DRMYZPek*^H9YK zay4Iy3WXFG(F14xYsoDA|KXgGc5%2DhmQ1gFCkrgHBm!lXG8I5h*uf{rn48Z!_@ z4Bk6TJAB2CKYqPjiX&mWoW>OPFGd$wqroa($ne7EUK;#3VYkXaew%Kh^3OrMhtjYN?XEoY`tRPQsAkH-DSL^QqyN0>^ zmC>{#F14jz4GeW{pJoRpLFa_*GI{?T93^rX7SPQgT@LbLqpNA}<@2wH;q493)G=1Y z#-sCiRNX~qf3KgiFzB3I>4Z%AfS(3$`-aMIBU+6?gbgDb!)L~A)je+;fR0jWLL-Fu z4)P{c7{B4Hp91&%??2$v9iRSFnuckHUm}or9seH6 z>%NbT+5*@L5(I9j@06@(!{ZI?U0=pKn8uwIg&L{JV14+8s2hnvbRrU|hZCd}IJu7*;;ECgO%8_*W Kmw_-CKmY()leWbG diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp deleted file mode 100644 index b2dfe3d1ba5cf3ee31b3ecc1ced89044a1f3b7a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2898 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 diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp deleted file mode 100644 index 4f0f1d64e58ba64d180ce43ee13bf9a17835fbca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 982 zcmV;{11bDcNk&G_0{{S5MM6+kP&il$0000G0000l001ul06|PpNU8t;00Dqo+t#w^ z^1csucXz7-Qrhzl9HuHB%l>&>1tG2^vb*E&k^T3$FG1eQZ51g$uv4V+kI`0<^1Z@N zk?Jjh$olyC%l>)Xq;7!>{iBj&BjJ`P&$fsCfpve_epJOBkTF?nu-B7D!hO=2ZR}

C%4 zc_9eOXvPbC4kzU8YowIA8cW~Uv|eB&yYwAObSwL2vY~UYI7NXPvf3b+c^?wcs~_t{ ze_m66-0)^{JdOMKPwjpQ@Sna!*?$wTZ~su*tNv7o!gXT!GRgivP}ec?5>l1!7<(rT zds|8x(qGc673zrvYIz;J23FG{9nHMnAuP}NpAED^laz3mAN1sy+NXK)!6v1FxQ;lh zOBLA>$~P3r4b*NcqR;y6pwyhZ3_PiDb|%n1gGjl3ZU}ujInlP{eks-#oA6>rh&g+!f`hv#_%JrgYPu z(U^&XLW^QX7F9Z*SRPpQl{B%x)_AMp^}_v~?j7 zapvHMKxSf*Mtyx8I}-<*UGn3)oHd(nn=)BZ`d$lDBwq_GL($_TPaS{UeevT(AJ`p0 z9%+hQb6z)U9qjbuXjg|dExCLjpS8$VKQ55VsIC%@{N5t{NsW)=hNGI`J=x97_kbz@ E0Of=7!TQj4N+cqN`nQhxvX7dAV-`K|Ub$-q+H-5I?Tx0g9jWxd@A|?POE8`3b8fO$T))xP* z(X?&brZw({`)WU&rdAs1iTa0x6F@PIxJ&&L|dpySV!ID|iUhjCcKz(@mE z!x@~W#3H<)4Ae(4eQJRk`Iz3<1)6^m)0b_4_TRZ+cz#eD3f8V;2r-1fE!F}W zEi0MEkTTx}8i1{`l_6vo0(Vuh0HD$I4SjZ=?^?k82R51bC)2D_{y8mi_?X^=U?2|F{Vr7s!k(AZC$O#ZMyavHhlQ7 zUR~QXuH~#o#>(b$u4?s~HLF*3IcF7023AlwAYudn0FV~|odGH^05AYPEfR)8p`i{n zwg3zPVp{+wOsxKc>)(pMupKF!Y2HoUqQ3|Yu|8lwR=?5zZuhG6J?H`bSNk_wPoM{u zSL{c@pY7+c2kck>`^q1^^gR0QB7Y?KUD{vz-uVX~;V-rW)PDcI)$_UjgVV?S?=oLR zf4}zz{#*R_{LkiJ#0RdQLNC^2Vp%JPEUvG9ra2BVZ92(p9h7Ka@!yf9(lj#}>+|u* z;^_?KWdzkM`6gqPo9;;r6&JEa)}R3X{(CWv?NvgLeOTq$cZXqf7|sPImi-7cS8DCN zGf;DVt3Am`>hH3{4-WzH43Ftx)SofNe^-#|0HdCo<+8Qs!}TZP{HH8~z5n`ExcHuT zDL1m&|DVpIy=xsLO>8k92HcmfSKhflQ0H~9=^-{#!I1g(;+44xw~=* zxvNz35vfsQE)@)Zsp*6_GjYD};Squ83<_?^SbALb{a`j<0Gn%6JY!zhp=Fg}Ga2|8 z52e1WU%^L1}15Ex0fF$e@eCT(()_P zvV?CA%#Sy08_U6VPt4EtmVQraWJX` zh=N|WQ>LgrvF~R&qOfB$!%D3cGv?;Xh_z$z7k&s4N)$WYf*k=|*jCEkO19{h_(%W4 zPuOqbCw`SeAX*R}UUsbVsgtuG?xs(#Ikx9`JZoQFz0n*7ZG@Fv@kZk`gzO$HoA9kN z8U5{-yY zvV{`&WKU2$mZeoBmiJrEdzUZAv1sRxpePdg1)F*X^Y)zp^Y*R;;z~vOv-z&)&G)JQ{m!C9cmziu1^nHA z`#`0c>@PnQ9CJKgC5NjJD8HM3|KC(g5nnCq$n0Gsu_DXk36@ql%npEye|?%RmG)

FJ$wK}0tWNB{uH;AM~i diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp deleted file mode 100644 index 948a3070fe34c611c42c0d3ad3013a0dce358be0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1900 zcmV-y2b1_xNk&Fw2LJ$9MM6+kP&il$0000G0001A003VA06|PpNH75a00DqwTbm-~ zullQTcXxO9ki!OCRx^i?oR|n!<8G0=kI^!JSjFi-LL*`V;ET0H2IXfU0*i>o6o6Gy zRq6Ap5(_{XLdXcL-MzlN`ugSdZY_`jXhcENAu)N_0?GhF))9R;E`!bo9p?g?SRgw_ zEXHhFG$0{qYOqhdX<(wE4N@es3VIo$%il%6xP9gjiBri+2pI6aY4 zJbgh-Ud|V%3O!IcHKQx1FQH(_*TK;1>FQWbt^$K1zNn^cczkBs=QHCYZ8b&l!UV{K z{L0$KCf_&KR^}&2Fe|L&?1I7~pBENnCtCuH3sjcx6$c zwqkNkru);ie``q+_QI;IYLD9OV0ZxkuyBz|5<$1BH|vtey$> z5oto4=l-R-Aaq`Dk0}o9N0VrkqW_#;!u{!bJLDq%0092{Ghe=F;(kn} z+sQ@1=UlX30+2nWjkL$B^b!H2^QYO@iFc0{(-~yXj2TWz?VG{v`Jg zg}WyYnwGgn>{HFaG7E~pt=)sOO}*yd(UU-D(E&x{xKEl6OcU?pl)K%#U$dn1mDF19 zSw@l8G!GNFB3c3VVK0?uyqN&utT-D5%NM4g-3@Sii9tSXKtwce~uF zS&Jn746EW^wV~8zdQ1XC28~kXu8+Yo9p!<8h&(Q({J*4DBglPdpe4M_mD8AguZFn~ ztiuO~{6Bx?SfO~_ZV(GIboeR9~hAym{{fV|VM=77MxDrbW6`ujX z<3HF(>Zr;#*uCvC*bpoSr~C$h?_%nXps@A)=l_;({Fo#6Y1+Zv`!T5HB+)#^-Ud_; zBwftPN=d8Vx)*O1Mj+0oO=mZ+NVH*ptNDC-&zZ7Hwho6UQ#l-yNvc0Cm+2$$6YUk2D2t#vdZX-u3>-Be1u9gtTBiMB^xwWQ_rgvGpZ6(C@e23c!^K=>ai-Rqu zhqT`ZQof;9Bu!AD(i^PCbYV%yha9zuoKMp`U^z;3!+&d@Hud&_iy!O-$b9ZLcSRh? z)R|826w}TU!J#X6P%@Zh=La$I6zXa#h!B;{qfug}O%z@K{EZECu6zl)7CiNi%xti0 zB{OKfAj83~iJvmpTU|&q1^?^cIMn2RQ?jeSB95l}{DrEPTW{_gmU_pqTc)h@4T>~& zluq3)GM=xa(#^VU5}@FNqpc$?#SbVsX!~RH*5p0p@w z;~v{QMX0^bFT1!cXGM8K9FP+=9~-d~#TK#ZE{4umGT=;dfvWi?rYj;^l_Zxywze`W z^Cr{55U@*BalS}K%Czii_80e0#0#Zkhlij4-~I@}`-JFJ7$5{>LnoJSs??J8kWVl6|8A}RCGAu9^rAsfCE=2}tHwl93t0C?#+jMpvr7O3`2=tr{Hg$=HlnjVG^ewm|Js0J*kfPa6*GhtB>`fN!m#9J(sU!?(OSfzY*zS(FJ<-Vb zfAIg+`U)YaXv#sY(c--|X zEB+TVyZ%Ie4L$gi#Fc++`h6%vzsS$pjz9aLt+ZL(g;n$Dzy5=m=_TV(3H8^C{r0xd zp#a%}ht55dOq?yhwYPrtp-m1xXp;4X;)NhxxUpgP%XTLmO zcjaFva^}dP3$&sfFTIR_jC=2pHh9kpI@2(6V*GQo7Ws)`j)hd+tr@P~gR*2gO@+1? zG<`_tB+LJuF|SZ9tIec;h%}}6WClT`L>HSW?E{Hp1h^+mlbf_$9zA>!ug>NALJsO{ mU%z=YwVD?}XMya)Bp;vlyE5&E_6!fzx9pwrdz474!~g(M6R?N? diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp deleted file mode 100644 index 1b9a6956b3acdc11f40ce2bb3f6efbd845cc243f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3918 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�(p-{x$&=IACIfoAR!za)F-^da-t3#0Dycnp zwO~NVXwXCl;jE<}>%@xz|=8fIJAB?>+E{7)|4l${4ngA3G|=r z2Dyv;VVWSgZx9Wj>qUjleGl3Ei9K4>h!(lPS%8VOG>Xu0%6VDz^O=bjJmuP7>DeUv zrbI}MlHB^^d?{zv6d=@_ZD2lg1&G7UjnVN{1}9WkaM3H~btX0GtSzB+tZ^qRgWo4m z!GmimlG$=wgXCnr6j@m<1gAL46#T~5Bnm=2{^@>|t&`9mkEPddj zAvG~@Tv~TAm2i%VW}R-g(Z0)z-Y|szHr@rk>4MAyG*Ma*7Yh#H7(!-5>DZ@8r;_dx z{prSe<>~099F8vsYd2xff7uAS%7{S)f(|@me3t2$iy&NEc7OUEchp@9A|X;;IA>8!oX+y(BKJ$EzV* znR$z;!L$s7uy@{OT~nG#B!NRraT8(X##Ho!0r_o@gg0CA-9H^;-uE&?$2$nHv_00o z%cbuUc-tCx$Uh&EZ4Nf4Zgqv)Y6>usG3>GeQnxx_Z6+PcbX-+ysbt1hQ`K1LDpOE? zrAhIZhSN9yVIAOa22gn577tbc&i3|3V8NWy&!tw##`}9*x}gtI^h1DzZRA>UuaJG) zaZ7j)dq!O}{?#8Y7~7i6fHh4{`pL?>-18|p!S75Y#^DM>-S3)vuZG+Q7l@ek zQP~#cBpWgg#mApc_sPYjpw8odQuRokmTkzcNl`^CcKB7e&;zViV;{Y{o^Y$%7i0m# z62%#1Lq!RC?}lK>%mp}T!3Xv;L*0v*>USLm``N%>w>@fwC+#T&Tx2bN4w(20JB}oU zuSa6v^kXi0xPs?pbaOHnyiqq6By1EZY9OZ^^QA>{q-Hsd&m`pbQ%8121aWG-F5xf zlZ%;B{;C>X19|`^_?dVyCq>n+41w7|!tUS!{9rHlbhX=SZO5CQ^;!Du_E7*`GiR^Q w)2!4MKjfSAeNo!9>IaV6aUZ*?W>} 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

UmY2RIYtNPVDpE$%vda+HD#3m z&VuXJ{BK&Qe+rBa7eq}Q(bq|tn(RrJAk|ztj2(i{d>nmQnM?;HF2k&9sA6up5tmjl z7lySlzMbifH17-m-Lwa_F&e7nOH?ESi3#ckR3tsM+jsck3`oG!uMS}|eAwVXv>}qxwq?QY%QJ0}r@^;fhuUA9W z*BVl>TGo&N004@xSiwDUXUvp51sVmqO3m)=B55aPwf@0=e}cN+$-BdKxY`YrT_4)0 z_d10#i44Q*rFr8MC>*)v$EJvz``(pb{e&*6k+b zsMz%($|1+8hn8c2?P(l@;Rb&CsZeYoCI3?2!LqjbwPXW3z4G$Qfj=cT5Yb%vY0(AX oeb?AaKtwrnc|$|zzw9vfvn^aJJ!zd)XFXqqy0000001=f@-~a#s diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values-night/themes.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values-night/themes.xml deleted file mode 100644 index 77300351..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values-night/themes.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values/colors.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values/colors.xml deleted file mode 100644 index f8c6127d..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values/colors.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - #FFBB86FC - #FF6200EE - #FF3700B3 - #FF03DAC5 - #FF018786 - #FF000000 - #FFFFFFFF - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values/strings.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values/strings.xml deleted file mode 100644 index 5d77158e..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - Dynamsoft Barcode - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values/themes.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values/themes.xml deleted file mode 100644 index e2ed77aa..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/values/themes.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/xml/backup_rules.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/xml/backup_rules.xml deleted file mode 100644 index fa0f996d..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/xml/backup_rules.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/xml/data_extraction_rules.xml b/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/xml/data_extraction_rules.xml deleted file mode 100644 index 9ee9997b..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/app/src/main/res/xml/data_extraction_rules.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/build.gradle b/pr-preview/pr-214/hello-world/webview/android/build.gradle deleted file mode 100644 index ab2b874f..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/build.gradle +++ /dev/null @@ -1,6 +0,0 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. -plugins { - id 'com.android.application' version '7.4.2' apply false - id 'com.android.library' version '7.4.2' apply false - id 'org.jetbrains.kotlin.android' version '1.8.0' apply false -} \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/gradle.properties b/pr-preview/pr-214/hello-world/webview/android/gradle.properties deleted file mode 100644 index 3c5031eb..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/gradle.properties +++ /dev/null @@ -1,23 +0,0 @@ -# Project-wide Gradle settings. -# IDE (e.g. Android Studio) users: -# Gradle settings configured through the IDE *will override* -# any settings specified in this file. -# For more details on how to configure your build environment visit -# http://www.gradle.org/docs/current/userguide/build_environment.html -# Specifies the JVM arguments used for the daemon process. -# The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 -# When configured, Gradle will run in incubating parallel mode. -# This option should only be used with decoupled projects. More details, visit -# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true -# AndroidX package structure to make it clearer which packages are bundled with the -# Android operating system, and which are packaged with your app's APK -# https://developer.android.com/topic/libraries/support-library/androidx-rn -android.useAndroidX=true -# Kotlin code style for this project: "official" or "obsolete": -kotlin.code.style=official -# Enables namespacing of each library's R class so that its R class includes only the -# resources declared in the library itself and none from the library's dependencies, -# thereby reducing the size of the R class for that library -android.nonTransitiveRClass=true \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/android/gradle/wrapper/gradle-wrapper.jar b/pr-preview/pr-214/hello-world/webview/android/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index e708b1c023ec8b20f512888fe07c5bd3ff77bb8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59203 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

K7UpUK$>l@ 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 E2O(~oYXATM diff --git a/pr-preview/pr-214/hello-world/webview/android/gradle/wrapper/gradle-wrapper.properties b/pr-preview/pr-214/hello-world/webview/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index dea1f353..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Thu Apr 13 17:46:19 CST 2023 -distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip -distributionPath=wrapper/dists -zipStorePath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME diff --git a/pr-preview/pr-214/hello-world/webview/android/gradlew b/pr-preview/pr-214/hello-world/webview/android/gradlew deleted file mode 100644 index 4f906e0c..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/gradlew +++ /dev/null @@ -1,185 +0,0 @@ -#!/usr/bin/env sh - -# -# Copyright 2015 the original author or authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn () { - echo "$*" -} - -die () { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=`expr $i + 1` - done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -exec "$JAVACMD" "$@" diff --git a/pr-preview/pr-214/hello-world/webview/android/gradlew.bat b/pr-preview/pr-214/hello-world/webview/android/gradlew.bat deleted file mode 100644 index 107acd32..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/gradlew.bat +++ /dev/null @@ -1,89 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/pr-preview/pr-214/hello-world/webview/android/settings.gradle b/pr-preview/pr-214/hello-world/webview/android/settings.gradle deleted file mode 100644 index e5f9d85d..00000000 --- a/pr-preview/pr-214/hello-world/webview/android/settings.gradle +++ /dev/null @@ -1,16 +0,0 @@ -pluginManagement { - repositories { - google() - mavenCentral() - gradlePluginPortal() - } -} -dependencyResolutionManagement { - repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) - repositories { - google() - mavenCentral() - } -} -rootProject.name = "Dynamsoft Barcode" -include ':app' diff --git a/pr-preview/pr-214/hello-world/webview/ios/.gitignore b/pr-preview/pr-214/hello-world/webview/ios/.gitignore deleted file mode 100644 index ba1ff083..00000000 --- a/pr-preview/pr-214/hello-world/webview/ios/.gitignore +++ /dev/null @@ -1,90 +0,0 @@ -# Xcode -# -# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore - -## User settings -xcuserdata/ - -## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) -*.xcscmblueprint -*.xccheckout - -## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) -build/ -DerivedData/ -*.moved-aside -*.pbxuser -!default.pbxuser -*.mode1v3 -!default.mode1v3 -*.mode2v3 -!default.mode2v3 -*.perspectivev3 -!default.perspectivev3 - -## Obj-C/Swift specific -*.hmap - -## App packaging -*.ipa -*.dSYM.zip -*.dSYM - -## Playgrounds -timeline.xctimeline -playground.xcworkspace - -# Swift Package Manager -# -# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. -# Packages/ -# Package.pins -# Package.resolved -# *.xcodeproj -# -# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata -# hence it is not needed unless you have added a package configuration file to your project -# .swiftpm - -.build/ - -# CocoaPods -# -# We recommend against adding the Pods directory to your .gitignore. However -# you should judge for yourself, the pros and cons are mentioned at: -# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# -# Pods/ -# -# Add this line if you want to avoid checking in source code from the Xcode workspace -# *.xcworkspace - -# Carthage -# -# Add this line if you want to avoid checking in source code from Carthage dependencies. -# Carthage/Checkouts - -Carthage/Build/ - -# Accio dependency management -Dependencies/ -.accio/ - -# fastlane -# -# It is recommended to not store the screenshots in the git repo. -# Instead, use fastlane to re-generate the screenshots whenever they are needed. -# For more information about the recommended setup visit: -# https://docs.fastlane.tools/best-practices/source-control/#source-control - -fastlane/report.xml -fastlane/Preview.html -fastlane/screenshots/**/*.png -fastlane/test_output - -# Code Injection -# -# After new code Injection tools there's a generated folder /iOSInjectionProject -# https://github.com/johnno1962/injectionforxcode - -iOSInjectionProject/ \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/ios/README.md b/pr-preview/pr-214/hello-world/webview/ios/README.md deleted file mode 100644 index f1d6f0cc..00000000 --- a/pr-preview/pr-214/hello-world/webview/ios/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Hello-world for iOS WKWebView - Dynamsoft Barcode Reader Sample - -This sample demonstrates how to use the [Dynamsoft Barcode Reader](https://www.dynamsoft.com/barcode-reader/overview/) JS Edition in iOS(Swift). - -If you want to learn how to use the iOS Edition SDK in javascript, you can check [iOS WebView Barcode Scanning](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/v9.x/ios/JavaScript/WebViewBarcodeScanning) - -> Note: -> -> This guide uses DBR JS version 9. An updated guide for DBR JS version 10 is in progress and will be coming soon! - -## Support - -If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview.xcodeproj/project.pbxproj b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview.xcodeproj/project.pbxproj deleted file mode 100644 index 7f7ce301..00000000 --- a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview.xcodeproj/project.pbxproj +++ /dev/null @@ -1,373 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 56; - objects = { - -/* Begin PBXBuildFile section */ - 68309E9F29F28D950016A358 /* html in Resources */ = {isa = PBXBuildFile; fileRef = 68309E9E29F28D950016A358 /* html */; }; - 68A0A94529EE855E00DC7D57 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68A0A94429EE855E00DC7D57 /* AppDelegate.swift */; }; - 68A0A94729EE855E00DC7D57 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68A0A94629EE855E00DC7D57 /* SceneDelegate.swift */; }; - 68A0A94929EE855E00DC7D57 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68A0A94829EE855E00DC7D57 /* ViewController.swift */; }; - 68A0A94C29EE855E00DC7D57 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 68A0A94A29EE855E00DC7D57 /* Main.storyboard */; }; - 68A0A94E29EE856100DC7D57 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 68A0A94D29EE856100DC7D57 /* Assets.xcassets */; }; - 68A0A95129EE856100DC7D57 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 68A0A94F29EE856100DC7D57 /* LaunchScreen.storyboard */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 68309E9E29F28D950016A358 /* html */ = {isa = PBXFileReference; lastKnownFileType = folder; path = html; sourceTree = ""; }; - 68A0A94129EE855E00DC7D57 /* dbrjswebview.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = dbrjswebview.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 68A0A94429EE855E00DC7D57 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 68A0A94629EE855E00DC7D57 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; - 68A0A94829EE855E00DC7D57 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; - 68A0A94B29EE855E00DC7D57 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 68A0A94D29EE856100DC7D57 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 68A0A95029EE856100DC7D57 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 68A0A95229EE856100DC7D57 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 68A0A93E29EE855E00DC7D57 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 68A0A93829EE855E00DC7D57 = { - isa = PBXGroup; - children = ( - 68A0A94329EE855E00DC7D57 /* dbrjswebview */, - 68A0A94229EE855E00DC7D57 /* Products */, - ); - sourceTree = ""; - }; - 68A0A94229EE855E00DC7D57 /* Products */ = { - isa = PBXGroup; - children = ( - 68A0A94129EE855E00DC7D57 /* dbrjswebview.app */, - ); - name = Products; - sourceTree = ""; - }; - 68A0A94329EE855E00DC7D57 /* dbrjswebview */ = { - isa = PBXGroup; - children = ( - 68309E9E29F28D950016A358 /* html */, - 68A0A94429EE855E00DC7D57 /* AppDelegate.swift */, - 68A0A94629EE855E00DC7D57 /* SceneDelegate.swift */, - 68A0A94829EE855E00DC7D57 /* ViewController.swift */, - 68A0A94A29EE855E00DC7D57 /* Main.storyboard */, - 68A0A94D29EE856100DC7D57 /* Assets.xcassets */, - 68A0A94F29EE856100DC7D57 /* LaunchScreen.storyboard */, - 68A0A95229EE856100DC7D57 /* Info.plist */, - ); - path = dbrjswebview; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 68A0A94029EE855E00DC7D57 /* dbrjswebview */ = { - isa = PBXNativeTarget; - buildConfigurationList = 68A0A95529EE856100DC7D57 /* Build configuration list for PBXNativeTarget "dbrjswebview" */; - buildPhases = ( - 68A0A93D29EE855E00DC7D57 /* Sources */, - 68A0A93E29EE855E00DC7D57 /* Frameworks */, - 68A0A93F29EE855E00DC7D57 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = dbrjswebview; - productName = dbrjswebview; - productReference = 68A0A94129EE855E00DC7D57 /* dbrjswebview.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 68A0A93929EE855E00DC7D57 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = 1; - LastSwiftUpdateCheck = 1400; - LastUpgradeCheck = 1400; - TargetAttributes = { - 68A0A94029EE855E00DC7D57 = { - CreatedOnToolsVersion = 14.0.1; - }; - }; - }; - buildConfigurationList = 68A0A93C29EE855E00DC7D57 /* Build configuration list for PBXProject "dbrjswebview" */; - compatibilityVersion = "Xcode 14.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 68A0A93829EE855E00DC7D57; - productRefGroup = 68A0A94229EE855E00DC7D57 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 68A0A94029EE855E00DC7D57 /* dbrjswebview */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 68A0A93F29EE855E00DC7D57 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 68A0A95129EE856100DC7D57 /* LaunchScreen.storyboard in Resources */, - 68309E9F29F28D950016A358 /* html in Resources */, - 68A0A94E29EE856100DC7D57 /* Assets.xcassets in Resources */, - 68A0A94C29EE855E00DC7D57 /* Main.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 68A0A93D29EE855E00DC7D57 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 68A0A94929EE855E00DC7D57 /* ViewController.swift in Sources */, - 68A0A94529EE855E00DC7D57 /* AppDelegate.swift in Sources */, - 68A0A94729EE855E00DC7D57 /* SceneDelegate.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 68A0A94A29EE855E00DC7D57 /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 68A0A94B29EE855E00DC7D57 /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 68A0A94F29EE856100DC7D57 /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 68A0A95029EE856100DC7D57 /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 68A0A95329EE856100DC7D57 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 68A0A95429EE856100DC7D57 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 68A0A95629EE856100DC7D57 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = KK22Q4GV82; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = dbrjswebview/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = DyBarcode; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; - INFOPLIST_KEY_UIMainStoryboardFile = Main; - INFOPLIST_KEY_UIStatusBarStyle = ""; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - IPHONEOS_DEPLOYMENT_TARGET = 14.3; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.dynamsoft.dbrjswebview; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 68A0A95729EE856100DC7D57 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = KK22Q4GV82; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = dbrjswebview/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = DyBarcode; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; - INFOPLIST_KEY_UIMainStoryboardFile = Main; - INFOPLIST_KEY_UIStatusBarStyle = ""; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - IPHONEOS_DEPLOYMENT_TARGET = 14.3; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.dynamsoft.dbrjswebview; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 68A0A93C29EE855E00DC7D57 /* Build configuration list for PBXProject "dbrjswebview" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 68A0A95329EE856100DC7D57 /* Debug */, - 68A0A95429EE856100DC7D57 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 68A0A95529EE856100DC7D57 /* Build configuration list for PBXNativeTarget "dbrjswebview" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 68A0A95629EE856100DC7D57 /* Debug */, - 68A0A95729EE856100DC7D57 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 68A0A93929EE855E00DC7D57 /* Project object */; -} diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a6..00000000 --- a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d98100..00000000 --- a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/AppDelegate.swift b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/AppDelegate.swift deleted file mode 100644 index ad05d455..00000000 --- a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/AppDelegate.swift +++ /dev/null @@ -1,36 +0,0 @@ -// -// AppDelegate.swift -// dbrjswebview -// -// Created by Dynamsoft on 2023/4/18. -// - -import UIKit - -@main -class AppDelegate: UIResponder, UIApplicationDelegate { - - - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - // Override point for customization after application launch. - return true - } - - // MARK: UISceneSession Lifecycle - - func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { - // Called when a new scene session is being created. - // Use this method to select a configuration to create the new scene with. - return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) - } - - func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { - // Called when the user discards a scene session. - // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. - // Use this method to release any resources that were specific to the discarded scenes, as they will not return. - } - - -} - diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json deleted file mode 100644 index eb878970..00000000 --- a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "colors" : [ - { - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 13613e3e..00000000 --- a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Assets.xcassets/Contents.json b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Assets.xcassets/Contents.json deleted file mode 100644 index 73c00596..00000000 --- a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index 865e9329..00000000 --- a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Base.lproj/Main.storyboard b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Base.lproj/Main.storyboard deleted file mode 100644 index 85dc8abf..00000000 --- a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Base.lproj/Main.storyboard +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Info.plist b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Info.plist deleted file mode 100644 index 93bb4788..00000000 --- a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/Info.plist +++ /dev/null @@ -1,27 +0,0 @@ - - - - - NSCameraUsageDescription - Decoding barcodes from video needs to access your camera. - UIApplicationSceneManifest - - UIApplicationSupportsMultipleScenes - - UISceneConfigurations - - UIWindowSceneSessionRoleApplication - - - UISceneConfigurationName - Default Configuration - UISceneDelegateClassName - $(PRODUCT_MODULE_NAME).SceneDelegate - UISceneStoryboardFile - Main - - - - - - diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/SceneDelegate.swift b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/SceneDelegate.swift deleted file mode 100644 index 0860c7e6..00000000 --- a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/SceneDelegate.swift +++ /dev/null @@ -1,52 +0,0 @@ -// -// SceneDelegate.swift -// dbrjswebview -// -// Created by Dynamsoft on 2023/4/18. -// - -import UIKit - -class SceneDelegate: UIResponder, UIWindowSceneDelegate { - - var window: UIWindow? - - - func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { - // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. - // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. - // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). - guard let _ = (scene as? UIWindowScene) else { return } - } - - func sceneDidDisconnect(_ scene: UIScene) { - // Called as the scene is being released by the system. - // This occurs shortly after the scene enters the background, or when its session is discarded. - // Release any resources associated with this scene that can be re-created the next time the scene connects. - // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). - } - - func sceneDidBecomeActive(_ scene: UIScene) { - // Called when the scene has moved from an inactive state to an active state. - // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. - } - - func sceneWillResignActive(_ scene: UIScene) { - // Called when the scene will move from an active state to an inactive state. - // This may occur due to temporary interruptions (ex. an incoming phone call). - } - - func sceneWillEnterForeground(_ scene: UIScene) { - // Called as the scene transitions from the background to the foreground. - // Use this method to undo the changes made on entering the background. - } - - func sceneDidEnterBackground(_ scene: UIScene) { - // Called as the scene transitions from the foreground to the background. - // Use this method to save data, release shared resources, and store enough scene-specific state information - // to restore the scene back to its current state. - } - - -} - diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/ViewController.swift b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/ViewController.swift deleted file mode 100644 index 183e95bc..00000000 --- a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/ViewController.swift +++ /dev/null @@ -1,106 +0,0 @@ -// -// ViewController.swift -// dbrjswebview -// -// Created by Dynamsoft on 2023/4/18. -// - -import UIKit -import WebKit - -// Refer: https://developer.apple.com/documentation/webkit/viewing_desktop_or_mobile_web_content_using_a_web_view -class ViewController: UIViewController, WKUIDelegate { - - let webView: WKWebView - - required init?(coder: NSCoder) { - print("entered init") - let configuration = WKWebViewConfiguration() - configuration.allowsInlineMediaPlayback = true - configuration.mediaTypesRequiringUserActionForPlayback = [] - // Refer: https://stackoverflow.com/a/51736967 - configuration.websiteDataStore = WKWebsiteDataStore.default() - webView = WKWebView(frame: .init(), configuration: configuration) - - super.init(coder: coder) - } - - // Refer: https://www.hackingwithswift.com/articles/112/the-ultimate-guide-to-wkwebview - override func loadView() { - self.view = webView - } - - override func viewDidLoad() { - super.viewDidLoad() - print("entered viewDidLoad") - // Do any additional setup after loading the view. - - // Refer: https://stackoverflow.com/a/40316507 - webView.uiDelegate = self - - //let url = URL(string: "https://your.online.website/target/page.html")! - //webView.load(URLRequest(url: url)) - - // load local html - let fileUrl = Bundle.main.url(forResource: "html/decodeFileInVideo", withExtension: "html")! - webView.loadFileURL(fileUrl, allowingReadAccessTo: fileUrl) - print("finish viewDidLoad") - } - - // Refer: https://stackoverflow.com/a/40316507 - - func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, - completionHandler: @escaping () -> Void) { - - let alertController = UIAlertController(title: nil, message: message, preferredStyle: .actionSheet) - alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in - completionHandler() - })) - - present(alertController, animated: true, completion: nil) - } - - - func webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, - completionHandler: @escaping (Bool) -> Void) { - - let alertController = UIAlertController(title: nil, message: message, preferredStyle: .actionSheet) - - alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in - completionHandler(true) - })) - - alertController.addAction(UIAlertAction(title: "Cancel", style: .default, handler: { (action) in - completionHandler(false) - })) - - present(alertController, animated: true, completion: nil) - } - - - func webView(_ webView: WKWebView, runJavaScriptTextInputPanelWithPrompt prompt: String, defaultText: String?, initiatedByFrame frame: WKFrameInfo, - completionHandler: @escaping (String?) -> Void) { - - let alertController = UIAlertController(title: nil, message: prompt, preferredStyle: .actionSheet) - - alertController.addTextField { (textField) in - textField.text = defaultText - } - - alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in - if let text = alertController.textFields?.first?.text { - completionHandler(text) - } else { - completionHandler(defaultText) - } - })) - - alertController.addAction(UIAlertAction(title: "Cancel", style: .default, handler: { (action) in - completionHandler(nil) - })) - - present(alertController, animated: true, completion: nil) - } - -} - diff --git a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html b/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html deleted file mode 100644 index 1aef1f18..00000000 --- a/pr-preview/pr-214/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - Dynamsoft Barcode Reader Sample - Hello World (Decoding via Camera) - - - -

Hello World (Decode via Camera)

-
- Results: -
-
- - - - diff --git a/pr-preview/pr-214/index.html b/pr-preview/pr-214/index.html deleted file mode 100644 index dfae4812..00000000 --- a/pr-preview/pr-214/index.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - - - - - - Dynamsoft Barcode Reader Samples - - - - - - - - - - diff --git a/pr-preview/pr-214/logo-dynamsoft-black.svg b/pr-preview/pr-214/logo-dynamsoft-black.svg deleted file mode 100644 index c4931144..00000000 --- a/pr-preview/pr-214/logo-dynamsoft-black.svg +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-preview/pr-214/others/debug/.gitignore b/pr-preview/pr-214/others/debug/.gitignore deleted file mode 100644 index 92a9c93f..00000000 --- a/pr-preview/pr-214/others/debug/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# dependencies -/node_modules - -# collected images -/public/collect - -# others - -*.lock diff --git a/pr-preview/pr-214/others/debug/README.md b/pr-preview/pr-214/others/debug/README.md deleted file mode 100644 index c89ff33a..00000000 --- a/pr-preview/pr-214/others/debug/README.md +++ /dev/null @@ -1,57 +0,0 @@ -# Debug Sample - -This sample is designed to: - -1. Print detailed logs in the browser console to better assist in troubleshooting. On your mobile browser, you can click the tool icon to open the console (provided by eruda.js). -2. Check if your device and browser are compatible with the camera and to what extent. -3. Collect video frames for analysis. (Require to host the sample locally) - -You can directly debug 1 and 2 in this link: [https://dynamsoft.github.io/barcode-reader-javascript-samples/others/debug/public/index.html](https://dynamsoft.github.io/barcode-reader-javascript-samples/others/debug/public/index.html) - -Item 3 we will introduce in detail. - -## Collect the video frames for analysis - -Barcode reading is a one-time job, the application either succeeds or fails to read the barcode(s). For the failed scenario, it's possible to make them successful by adjusting the settings provided by the Dynamsoft Capture Vision Router JavaScript SDK. However, adjusting the settings could be a bit overwhelming. Therefore, Dynamsoft offers the debug sample that enables customers to capture and save runtime video frames for sending to the Dynamsoft team. With the original images, the team can test and optimize settings for customers. - -The following shows how to host the sample and collect frames. - -### Download the sample - -The sample can be downloaded from - -Debug Sample on GitHub - -Note that the entire folder is required. To download only the files in this folder, try using "https://downgit.github.io/#/home". - -### Set up a local server - -Since the video is usually playing on mobile devices, having these frames uploaded to a self-hosted local server is most convenient, therefore, we first need to set up a local server. - -We make use of the web server that comes with [Express](https://expressjs.com/). - -* Install dependencies - -Run the following script to install all dependencies. - -`npm install` - -* Start the server - -We defined the web server logic in the file "app.js", to start it, run the following script: - -`node app.js` - -Note that we have used self-signed certificates to enable SSL on the port 4443. - -### Use the sample page - -Once the server is up and running, open the page on the device that will do the barcode reading. The URL for the sample is "https://{your-local-ip}:4443/". For example, suppose your ip is 192.168.1.1, the site can be visited at [https://192.168.1.1:4443/](https://192.168.1.1:4443/). - -> Note that the device should be in the same WiFi network as the server machine. - -You will see a warning due to self-signing. Please ignore and keep processing. - -Click the button "start capturing" and try to read barcodes, the frames will then be uploaded to the folder "debug\public\collect" as images (.png) on the server. When you have collected enough frames, please click "stop capturing", otherwise, new frames will continue to flood in. - -Check the images to make sure that they correctly represent the actual usage scenario, then zip and send them to Dynamsoft for technical assistance. diff --git a/pr-preview/pr-214/others/debug/app.js b/pr-preview/pr-214/others/debug/app.js deleted file mode 100644 index bd09d818..00000000 --- a/pr-preview/pr-214/others/debug/app.js +++ /dev/null @@ -1,43 +0,0 @@ -const express = require('express'); -const fs = require('fs'); -const https = require('https'); -const cors = require('cors'); -const util = require('util'); -const path = require('path'); -const multer = require('multer'); - -const app = express(); -// Access-Control-Allow-Origin: **any** -app.use(cors({ - origin: (origin, callback) => { - return callback(null, true); - } -})); - -// collect images -const dirCollect = path.join(__dirname, 'public/collect'); -if(!fs.existsSync(dirCollect)){ - fs.mkdirSync(dirCollect); -} -const collect = multer({ storage: multer.diskStorage({ - destination: (req, file, cb) => { - cb(null, dirCollect); - }, - filename: (req, file, cb) => { - cb(null, Date.now()+'.png'); - } -}) });//dest: path.join(__dirname, 'public/collect') -app.post('/collect', collect.any(), async(req, res) => { - res.send(util.inspect(req.files,{depth:null})); -}); - -// static files -app.use(express.static(path.join(__dirname, 'public'))); - -let httpsServer = https.createServer({ - key: fs.readFileSync(path.join(__dirname, 'pem/ryans-key.pem')), - cert: fs.readFileSync(path.join(__dirname, 'pem/ryans-cert.pem')) -}, app); - -let httpsPort = 4443; -httpsServer.listen(httpsPort, () => console.log('Page is available in https://localhost:'+httpsPort+'/')); diff --git a/pr-preview/pr-214/others/debug/package.json b/pr-preview/pr-214/others/debug/package.json deleted file mode 100644 index 9eec8064..00000000 --- a/pr-preview/pr-214/others/debug/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "collect-img", - "version": "1.2.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC", - "dependencies": { - "cors": "^2.8.5", - "express": "^4.17.1", - "multer": "^1.4.2" - } -} diff --git a/pr-preview/pr-214/others/debug/pem/ryans-cert.pem b/pr-preview/pr-214/others/debug/pem/ryans-cert.pem deleted file mode 100644 index 6939a9c0..00000000 --- a/pr-preview/pr-214/others/debug/pem/ryans-cert.pem +++ /dev/null @@ -1,13 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICDDCCAXUCFGlprxUW7YsQSmqXwS3fjySQwexCMA0GCSqGSIb3DQEBCwUAMEUx -CzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRl -cm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMjAwMTE3MDE0OTM0WhcNMjAwMjE2MDE0 -OTM0WjBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UE -CgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQCt3L/syEyB8B9O8Xhf3/SJOfTsoSs+3+/ELvFd07QEP0mySRjh9hUL -BjB1bWJXBshn9JBzlfGUjRtNkc54VF1JfjFgi7UzqqyAlAwfEMBbp8jUX1Hh9iU7 -ctTAHxcAicTWTkRmToXJBUhbgTH+eF/GfQTdnByrncprQfuqdPg2KwIDAQABMA0G -CSqGSIb3DQEBCwUAA4GBAKRRbXBhTS95IimKoIZq3RtVrjXpcsBn5ncyvFULc6Y5 -OkOxum5TO++XHVOJyalqyWpAQuz6i348hxTW6wqt5Js0UPGLGIb4Kq965QKKT+yJ -WnHOnzZzJxiTs/1uGFjPAKgdvuDhcx36YsvSQ/UnJvF0rttjLKOGI5SkFMgz1Ufz ------END CERTIFICATE----- diff --git a/pr-preview/pr-214/others/debug/pem/ryans-csr.pem b/pr-preview/pr-214/others/debug/pem/ryans-csr.pem deleted file mode 100644 index 71cc8492..00000000 --- a/pr-preview/pr-214/others/debug/pem/ryans-csr.pem +++ /dev/null @@ -1,11 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIIBhDCB7gIBADBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEh -MB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQCt3L/syEyB8B9O8Xhf3/SJOfTsoSs+3+/ELvFd07QEP0my -SRjh9hULBjB1bWJXBshn9JBzlfGUjRtNkc54VF1JfjFgi7UzqqyAlAwfEMBbp8jU -X1Hh9iU7ctTAHxcAicTWTkRmToXJBUhbgTH+eF/GfQTdnByrncprQfuqdPg2KwID -AQABoAAwDQYJKoZIhvcNAQELBQADgYEAgwEY90gQQzxIonWEgDxGRBHxSk0h3UE4 -rTP3JggV6h0vXMndOrDXC2qrh20fJaWIHqbBtmfOF4NmPhQTSZOZ2fIjPBeHZqLq -8+K9iZPeyjnVIRyWkXfCPacoddTw2FcykRobgL6Wi/RoldutOnIDlTawo5Y/eXvm -JI0428mqYU4= ------END CERTIFICATE REQUEST----- diff --git a/pr-preview/pr-214/others/debug/pem/ryans-key.pem b/pr-preview/pr-214/others/debug/pem/ryans-key.pem deleted file mode 100644 index bf0ff875..00000000 --- a/pr-preview/pr-214/others/debug/pem/ryans-key.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQCt3L/syEyB8B9O8Xhf3/SJOfTsoSs+3+/ELvFd07QEP0mySRjh -9hULBjB1bWJXBshn9JBzlfGUjRtNkc54VF1JfjFgi7UzqqyAlAwfEMBbp8jUX1Hh -9iU7ctTAHxcAicTWTkRmToXJBUhbgTH+eF/GfQTdnByrncprQfuqdPg2KwIDAQAB -AoGAO6O6zm2TGQuWoczhPvoi9yPDaZyLqiDFLaXws//YA5D2Jcs/VtvEMijoXI+u -KS4xdr+FAbFQ0mVpFT3L9qjx6p/lSVKzJ1tlVlp7klJzK0VOWmMojLrhsstp44ah -jZQdxcnlEDgeBwXj5m09fr7YFfIiyHef+r9ORqn00F7K+xkCQQDhy5k00dsfL5MY -oy70Ikb70n90qktnFXrgsgEeojG0j0OmJUdNLV6gXbkD4lEeh6iK5XdAEuso+Qw1 -5Ksa3d11AkEAxR6yMXPIbl+4y24TbIGAZwb44Lyn9DAnLm5qgFvMgJARz+kqlYyr -tpZ6cD1JY3fuF+umDlNPYzxGxy3kz/sxHwJBAJNiLDzYBmmSyjc4vPtKLH9PZTan -udQtpylnx2dRg5RSN1wJ1ULBLJUM2Cl63mxJLHCNW4uNTcZO2fOLsUw2KckCQBFp -dboSjSjawbsOfR6/jbUME53ebEOQoVVjoXq3IShWEYy4/u743w4g2q3hbAMiS+DH -CwMG7uNIJsRfVG/es2cCQD7R6ebztt858vYZzfLMLMsJTF2YQs1YG91x76lZLhNp -tcTTENHD4g9v/Q5MV+fhN0UuJ2ikrXULAgDmJMvAVyk= ------END RSA PRIVATE KEY----- diff --git a/pr-preview/pr-214/others/debug/public/index.html b/pr-preview/pr-214/others/debug/public/index.html deleted file mode 100644 index 7553792a..00000000 --- a/pr-preview/pr-214/others/debug/public/index.html +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - - - Dynamsoft Barcode Reader Sample - Debug - - - -

Read Barcodes from Camera - Debug

- - -

- - - -

- -
-
- - - - - diff --git a/pr-preview/pr-214/use-case/README.md b/pr-preview/pr-214/use-case/README.md deleted file mode 100644 index 0f98c3e5..00000000 --- a/pr-preview/pr-214/use-case/README.md +++ /dev/null @@ -1,44 +0,0 @@ -## Read Barcodes and Fill Form Fields - -It's difficult to type long text on mobile devices, but if that text is encoded in a barcode, we can use the SDK to read the barcode and automatically enter the text. - -The following sample demonstrates how to utilize the SDK to fill out form fields. - -* Read Barcodes and Fill Form Fields - Demo -* Read Barcodes and Fill Form Fields - Source Code - -## Read the PDF417 Barcode on the Driver's License - -The PDF417 barcode on an AAMVA-compatible driver's license contains information encoded following the DL/ID Card Design Standard. Together with a simple parse function, we can use the SDK to read and extract the information. - -The following official sample shows how to use the SDK to read and extract driver's license information. - -* Read the PDF417 Barcode on the Driver's License - Demo -* Read the PDF417 Barcode on the Driver's License - Source Code - -Also, see [Driver's License Scanner SDK for Mobile and Web](https://www.dynamsoft.com/use-cases/driver-license/). - -## Read barcodes via camera and show result texts on the video - -When the SDK picks up a barcode in a video stream, it will automatically highlight it with a built-in style. But it is also possible to show the barcode text on the video with the help of the function `convertToPageCoordinates()` or `convertToClientCoordinates()`. - -The following official sample shows how to show the result texts on the video. - -* Read barcodes via camera and show result texts on the video - Demo -* Read barcodes via camera and show result texts on the video - Source Code - -## Locate an Item via Barcode - -Searching for a specific item among numerous identical boxes can be challenging. However, with the Dynamsoft Barcode Reader (DBR) SDK, we can locate the item quickly by scanning through the barcodes. - -The following sample demonstrates how to utilize the SDK to find an item using a barcode among many barcodes. - -Additionally, this sample demonstrates how to utilize the SDK to fill out form fields, creating a custom UI with [Dynamsoft Camera Enhancer (DCE)](https://www.dynamsoft.com/camera-enhancer/docs/core/introduction/index.html), and using DCE to draw shapes/images on the CameraView to create indicators for each barcode that has been detected! - -* Locate an Item with Barcode - Demo -* Locate an Item with Barcode - Source Code - - -## Support - -If you have any questions, feel free to [contact Dynamsoft](https://www.dynamsoft.com/company/contact/). diff --git a/pr-preview/pr-214/use-case/fill-a-form-with-barcode-reading.html b/pr-preview/pr-214/use-case/fill-a-form-with-barcode-reading.html deleted file mode 100644 index 35ea23dc..00000000 --- a/pr-preview/pr-214/use-case/fill-a-form-with-barcode-reading.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - Dynamsoft Barcode Reader Sample - Fill Forms with Dynamsoft Barcode Reader - - - -

Fill Forms with Dynamsoft Barcode Reader

-
-

Click each input box to fill in!

- - - -
- - - - - - diff --git a/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/checkmark-icon.svg b/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/checkmark-icon.svg deleted file mode 100644 index 5dc93e11..00000000 --- a/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/checkmark-icon.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - checkmark-circle Created with Sketch Beta. - \ No newline at end of file diff --git a/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/cross-icon.svg b/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/cross-icon.svg deleted file mode 100644 index b0f8078f..00000000 --- a/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/cross-icon.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - cross-circle Created with Sketch Beta. - \ No newline at end of file diff --git a/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/dynamsoft-logo.png b/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/dynamsoft-logo.png deleted file mode 100644 index 7967e8edbde77fcdf84333b58ac1046f821c9e0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5449 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 LnIX#&&Jq6u=Qz1) diff --git a/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/scan-barcode-icon.svg b/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/scan-barcode-icon.svg deleted file mode 100644 index 6b744cdf..00000000 --- a/pr-preview/pr-214/use-case/locate-an-item-with-barcode/icons/scan-barcode-icon.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-preview/pr-214/use-case/locate-an-item-with-barcode/index.html b/pr-preview/pr-214/use-case/locate-an-item-with-barcode/index.html deleted file mode 100644 index bf031305..00000000 --- a/pr-preview/pr-214/use-case/locate-an-item-with-barcode/index.html +++ /dev/null @@ -1,701 +0,0 @@ - - - - - - - - Dynamsoft Barcode Reader Sample - Locate an Item with Barcode - - - - -
-
-

Locate an Item with Barcode

-
-
-

1. Enter or Scan the Item ID that you're seaching for:

-
- - - - -
- -

2. Start searching for the item

- - -
-
- -
Dynamsoft - - - - - - - -
- - - - - - - diff --git a/pr-preview/pr-214/use-case/read-a-drivers-license/SampleDriversLicense.jpg b/pr-preview/pr-214/use-case/read-a-drivers-license/SampleDriversLicense.jpg deleted file mode 100644 index 7bb877f70296d8bf8ad6ba59e5b3a6424db062c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 533709 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

W|7EVZtlb3I9pDQ+xJHQtwunjqe})!y*K z-}peTjVg=vwId=cJ#9TYr@I}Jv{xSU24qhR^7W- zPv1CetYh)Z%=qAkTSrC=QRfU`{#~mNK}8otd@;0pS$%d1UU-_lnysv7gzC5CjqHd4 zz(KDf93(N+T!XM4Ysh0-f}fQ3(WP1@`t=0?kFgusU-6r6mdx|j%`otKM=tA!SYl$< zeoXgVsArXtA<=slirWn89HD(a7%xCT`99q^lzy#x>pJ@t+64Wt-DEDYyABdpBIicweaoSNOPemks?^;|#SYhP3Mz zOiX0z80Y-PEtqMgK+C~A#XbAi4aIG%vx<8e6?DgP(UD#`ol2)tOFbV*wr3}b*d?dO zhnB%D=OYU(vjmiq&j#8~!kDHK&v!K3%J3Afw?q~gUVSBQGVAtp*;0!vud*HLu}Sx> z2{-dDI4#lovX+!(i;&U3(y}T_4lzIv~c=!Y;moZqK>&uU4v+(WgV1|BB zkAWTN&cz+T%Q{r&f|G{P{P) z60Lh<55cz)DGVn5f>eiCqrTyk&j>)N$;dJ4fWh-oZ=N&+1Zl7ce`(?0Ze|-_o%`?G zxCUtYKl{M_fA*mo-+m0I-jN>z8oW7d>}+crVk@ zvNSg(-u-1>5nO)MA|1UsqPhLBBzL^1=jzb=X7(mf0d)Dd>hNpsR7B?5EQ3_`fy4yS zF;h3|-i$Aqhhcf3_gA09`kfN z_6KWnSKBL|tBtl&v^ALkvH8wiup{AqY~fjLZj-s$ zyt^l#%b~y)XJiE@OGFSz5esOefM*C8plhqT>Llblmh{NHuLHYfB2(2kn@KoBwQrWX zd0BCMjP=SsfBNQW$Y1itcTve@vkR|GK0VGpbgcxv;;dhzQAzemhW!-nOKLAY*@kHb zRK8&@^0e9#?LW#g$$;usIzt(p6{OHU-|s28861_6F>q))m|9}{3{b+l)rBulqa1uy@$r%5vAUA zcspn_wH9bj(2J9dT#`HMDJ;+dQ3Wcyg+MJJFUAvU;^8YYc%!oz2L{A`KIi3?AgdMO zJeDWfsz+~N z+&5+GcE;F;#-!w5cW~)G_BJov5j8zh2V5W>d|y7>=X7f`S4DCk-q^wA`i?ExRo|*& z;6hFQ?N^@1ygJktzQ}zmk85+2blIoR-bO#FsxR^K=jiB|M<<^qJUO>5+T|}r^c36x z7PQzBFVs}Kzd=TWyq!154vT?{Eij6fbJFCAp{m$XwF%yNwbVh+ES{{WB_h)6sK<1* z^~mTiwy3Flzpc^H8&{7lb{Rbddeb;rFTY!CY27F*Fu1*KFebdLSY@vi6&D`(zOXFj zvG0ftqkQ-ZKRJ`p62ZMn-5~yuB?_u)|6&`|)^1~dYqaB0^L~$_9Hvo6h56aOG#mf< zuRn&q%z2vdSAvV{rrV#5y`9v67;XAWTy`7S8{kUx=2}24bEY{>-)y9TaQ3@D+vb!p zipLh_rZZ8xI}WC|f-T_tO(%!rq#Vhu=@bCzP1jMZyVrah3ao7-F3KVINC=G)r0m^x z)jTd+w<#AX{9SQX+Pa@sSTt%lalg#+@{ntHX?;)TKHU{ZHYDCRLGL0PfNqZ%hzsWn za*n09r_AtwgdWTc#vSE%hg&H!p>w8O&pEuUs(=fJK#Z=mohV#_ae=ddn@DodnPQT1h zz18?mGS4=btm3~CNfsT*ShBTswgSyE0eke7ET%2`IbB0O=#BTq;FIl2A& zyAEK)Xsl+Y4eVi*pR1`0AF{BpvM5@#Ah^~B<**hv3ClyP9tOJ#O{=eV9j)95X&bM<1aIafP7xB;ZPx{D$Mg^wsbC z+wqY+j>)N3&tn}F@qQN6A5KS%Z$YG~t z;wSA=)Vy#nsk~D&{z_8NO2QW7^%I(sjlptgK?f=WoYP#-4*i@mM*<`u58e+94egZM zdTDZK$giMu-ub(S3kv79$sn%W>twA4!614+^vf`j$YL2#|CSi?xSGmeb_iq4Z{JEi zEKGIvcupRA|MN=EVY*>XDv0emB-|i*5=$d;10&Jjp9LX zKI74<@?lwFJL4}L=-jX@Mxt5&#;%L$6&VdeEJ6g5+!%qu0B=#$w-2Qjo@1YRU+j44 zllv1Y^k_l;TL>?ISfBf~!p!vG4OGln`Ede~GSF1m6pVN(lAMq2(f&cJ6GKh1vrWY9 zti#|7e~J5=Wih^@PCqa26kxL!8@MI;_+0V}vmSGKgvEx$m5PPJvk#1~?VzHh+w_$& z9&gu@&3>aXX)B(5EMA?PhQ;k|!9GyYbaj}3mh0^2y}YwXR-2s<^{I*4@;#phd>-iV zwhWi$rw=Lbu{-wI_1c7&mTkhTkrY4Fjc}n zg}@{C7fabj%Y_{c&F!P%!-k{J2O|gbuCYvDYD@yxfRH(yR^y&r!ibJLs+zD&|+b>FYAHw!{K4E+xW#iy9o^i!GEU|B~c4MY!RciHoHnU2E!F?G6hD z94==VWcFZO$09QyiI->Nwl)uY%DxraHAs7|cj5>(o;#hq*XU?lo1b{`%`yJ7@!Lo7 z@{&~6jXR77kWLQY%YzU^@kc!@jZ!laa|mZ&@;j;I2suY57Z=s^$=}P;3dq^UY3b<* z>e%|FTDz($Ot;u=S&}uVwl%wDs{WLG2wb43h)=hZfT__hKW&&(7;9n90;>wt0U!bPAMIi7MKy$)9_$nKj$3&4H}rN&8LGIle{r@2=7llwguH?aHLAWeZy*yEN-Rv#~8Vej40dO zA`z_}<3%KQKHN0QJ8x^JhE+U4d>LQbzb!uc$>)T7@Z3e0&Nu*BT@3^&>jbpdD1-;8Qi@`wlaAfA<=(9NGLqV>k;>Pt z6ryTgoB_8t)RpP!s3Tpe6IpzAU~spjbzS)O&97b6V-ryaF+Ed$PA2~-ES;DH&1RMX z3U`G11XJ&aC%KE;h$Gpe1JlHrop$-MNf0VDZPw2CM*a+-Gy1^^t3NAVGJ%2OL3MUkq6x_`e zf;64uM-*6pmMT%lu$|5BkGg^FUfXKZqy0rk5p(y41;=ucuaDICfJ=;5`mqrfDjXuQ z<&&L7wnu)Bu%qL9y_M5s z_(+F+#yZyn2d+8AC&a&2f3ohF0xDDg4nUUwqtGCWt>smz^p;rrSYHq-ogrUs7SCt1 zzZQ76s^D&nES+W^bNRvo6XhOl1zO(QqaqJZdG9e(`_g+%p0M$S z9sH=S9be9ubio=G)M@To{)5}kuk!c>oR?*Aeo-$?x95hG=uLH&VA9D|eJROfu72UB zruW(?9ZE%KtPGyIR=o2#vC{C!8@XdKy>A%x^(Y~3LQnA!HjMZe#oXyu%p4zQFHeNY zXC?A%Y~uAY9VR8WMH*KJggGN+-DI@|r%pGNHEP+PbG_&j^V6~vYkaU0i`t8EI9M~H zpI?M|$td^vB*c{v!=S$mCVjhEp58x4%G}37`D1aThKLt1RHSxhm{#_hU$!Dt5Zr)P5PS2B5|$dTMX1b*Oo3-|4vQ5V-HjC6H-oItEq zc)z^1($vP-a*5@>>^%q1eay?CqiF7FZ5kki{~Phv7lzSkdsNe#3IZA_PZPJBF!Qw? z#yZ&5R+pVV$5x!{@(EqU_H^2@M|btB@O3AtuU1{aUE3V`_T%Q@!?&Al<)$5-X$@=GI*N^f(ZW~Hiak2D690A<$J2Smv>{nVUQ3F#XdvE05M~ z+dn>kV}EpC1}ZL(QF^Kc55*A^17r|AH7q_w!7z98Dx~Q?%2%jwhQ|iV+$$^7mYyDL zGmQPBV?%W47IqZ2uC=wQkBb{ylC^1lr02zqZI@#<#hnb4XBE_9n}N0YhS$f>zL~$k z|Ax?~lGY`jXfzn2{TjwTC@2;f#omDpoAdL02lo;}3cYP@4A#DmUutf1ZpX{aJ=SXH z*0sLznwzrylN@gjsD8yR_37f5X}``Tg})%1lw$(@s##=5!#i!$j1~E{c{a;=`I`>d zs%=ViCo@_-o_F}BE)D0}cm=EtjxFlFUTa-f`@?l!$j@v=R3R_R0SBnr$t1!ilK63o zBZ(iv1$ju7$j{-FUmYq|A++hACh84$mZgu_60UeuD4!ftEo{)IeqJ;8gs@*n*~-U! zEa~B~9rriv2ue2cv-w$R;- zPH(0_HyW){7N};M=XaG{`H=AP?9+=263+2l)0hv?yD-*~03>fGHVBmCWX6b6&8T;( z$d3dcMrhS#!YUyzvgJ!o)$mAQd7hV;s`f|Gi|SFci1a-#uS_(LtXp?{{+~{9@$up9 zy-{)zJgAb7f8|r6S`PonAXacySO#ndQOCgG*Vq%}txYX9&n};t#$EF`81yrBxXXsE zC$vtQq?D_FiQDb*)Ym0GGwX%1Wls7jmzIrDJ5YJ^+h`E#br~ndfkX_zw&%eRBqtx@ z&w|nXN!dLj?z*R0!G&gVLHnEdACB8^a*5>W{_5doJt4u}F)gbe)a-q{;O_X893T7k zygaqpgnAe`g2k{l`*4U7uI=if-CtLY3&y&B{r`ocQ6gR-XK-ySz%Lm{0=GcQchJ; z8zm>`z)<$D&x+0t#U-yE=|_L2TRhW16^>{0Z+sJ$&z1)nQe>#gwVzFJky{&layE$N zx8H+7c!eVYk+Q;tIR&2rWMyCfQE)?+y}}FE@J89+55y53fzdL+j2zHKn1V3?Rgv0| zp|Dm~$TW%ekHS9<{}Z46Pi-;QT9EVGvh&{LWFkH8g#`n!)s9uVVMF&}o5(}gTje&h z#eCoqo!Q8KOFXh>$wIMWW1jK7PU;hhxumz_hirc?_U=Ly1j+*-l*%Lwicj}m%xb32 zDSbBg#60+xc;4-U+cLPr68zEG$q}y02fwH{QXb}fh=CVB>~BpaeZZf?%b~<%7S!d^ zi37n`gJ-GI4XPI?@fr67*uDz|B|$>d7jt^)gYw`go<08PV=SV&)O`&=9ACAm>`udK z@q2By_38#iEK@irlN%c{Q{9sKnY}~3wA5JK)hj#kW)FYiW(!wbF`%1aiV~Qv!a{-5 zDw;4jS7~yB)1CcIVX(UhKD3}M0)yHQq~W8&^t)v#m;wckXt$V#F|~*vt~F*f>CzSIyq1^O8mrK31yvgIz*+T6Aui z!`a94F3qXLn_A`W2)nfAiL|bS8a>6={sR+W9^FcC8^>Kgid>sDBqWh*U z^I0E(FGKvTMUk5~{VP#t6{Kv(Osz)P<2=~~30qcSUB>v8EoUDaDYSi@Ajm*2CU|~> z=ZHy{Zao_k4{(kik)1Gi@H;9v-gyIM+d1N%1#NOJvSwdF|fjUm@GN1z>5B5 zRltw=Hc63#q(11eZDGHT^_!Ol>Z_4a!(*Mk>=v>(#kjb@nm8Ccb&nJ;XIXDx%IVER z!%wF^SAk6dCgd=;g>&w<}UidGJ z^3$dIPPucENhJdULvTcia{zIH1VrvrBQKCM4SbUE%dnsPLs&*19*A2_d|$lhA+h3k z2WN@l(VkS$N_F0i>dniiHucK$Kj?!uFHbL8#CWf)w_>$vJ4V5_?XLC}Eok;i!TX*q z!-Huj=bzCT?J@J|0LpsjBTm?;s zJ!v^|;|H+UgM1fkwRvZ)!Xu5|;>w^@>!RuxdUaZEfmXQgCemm5U0QF_mGN7;z%n*s7hGL;9RD z`$-Noo;?>cdGfcNEmn9aFLP!=PcNbD?qc7g3)E+BP-qJB^eHZnF*E;D2iWf;#V^^c z010{VM;ptAL8J!Xpt20Tmed!458qbJ4-6G5Z@&9SU4_zOC?(hdkvmI70$yxb%@E--&pJh!A`g)Z44zl^F6cssb0vg@{Lio*35ieJ~ z`NaG4!*xgC?_#**f&wm%wrUw>N*O(F&XFEuMMILi1;9*ABbYUqzE(_kanO6EPpL{X z_vGTG0gEgrI>2@LzaP2L@A^eMtuwnTSw7(yn*BKEqs6_e(~IqUdiZWHj!?-G@rfHHUF-$CLwAf)(Jh5l z_<@k$ADxKBoO@{!X>;qHbJ{Wq;&c_sx4o}F@8;B+*^nrSF18?GOEU-55|`2T`T9BC zmOPx01jVM^jDzCS(~if;Rsh-1>M7w*ER}IeLHY~+ zO?zlU0L^D(tOZ%WO_^Ab_2qqSUATgVER6JegDvlP11;d$vJ;f#x+shIoG~ z@aK~+dm~gLi5R0p%?YwO%IWMinSR>xbDI&(uJ0Id0t4(SfJF{K;quHWA72HgM%dw3@i_9R`W`A@Z>8XrVFzwbcf37Py3C2WOa zw$VE}z@ncPJ!@-~i_2uTA^JPw25|Vtm%`I5uV=RD;u@u)d3(fnCMK+e*iVygHZu|b z{#phy0z&bnjDd|aZB(a$XU(7i_6)RMzOy(b| z_OD>d@=HcnsQ%dvZ4u0-zS|&8;6IW-dodOi&Ah$eOr1N_Q^h(YQ5JlGwCS!5N_zxT53*el!EycL=Z1iM_IVbMrk}DdJ?k##5yMzoru* z$aVflpb{2`)G@`<6I;KjnauNjGP77V+aTN;;ByOauY-cE3p4iD&`#aF zT!wiAZOA^q;`k<*7wk1Zb#~!|e?^oQ!k&E2jsTjY3-*H}X48-+|3J)tKt-PbluJlS z6+*Q2=dYW{UYXb`&d_V_8U>6WPMblw*G5X+k8&?C4|V&Q8l4)pL%BFbG{|VE*VE{| z&g|7aFSDP)C?`;h+(Q+3zrSABKRAw2f25cFuzE@v-8zR;KM0n5l?{T+MRV*sWf&Oe z+}S46k{_RBeyloS=EEh!BNa#HH#(&+b)(1XZ51+6u@96nzH3*W$z;7)H%7$%b(8X6 z@<%YI|0jI0WbofR0*%8Xu>D~`p}4Doon}f8-}E>%2r_zS`Wm9Yw&tPdDKuFt&-hOMQRkQhMLmekL3#2vM>);yhL`Jx)30UQ;+F9us% zbO^ant$jzdP5fliG*P5sHjuZ;zPdv_7W*ZAD!<b@|@2Q3FGKO?>^yw_5nUL~JyD3oyq)XaB8i)g#s@L&Ii~)yYb?)>p^d-SCdR z)4SsmB5+`y9w~1ct1Nkw@;>2Hn1jXJw+TsWOmxkSt+n=W$Lr*jk+T5^sSA@o!zBB9 z4ydFe5M1>OY})YQ^EkfA*bMZ>aMJ9}h$k=ZNAa$q-`jB>$KcNijCj}asS>4}!34EM zi*{!3Tl-|*iYCXXXmscA5hmh}ugI5lkKymL%W)rkl;P6! z)6Q58+F@Xe5P`(7g^fjUC22FMeWGHm30`C_JFm!hy2` z7F*_MUmw$t-{EF{{lxR?hd{hH1b0x^KS~yugT-BZEn@rVM|fNfV$0-ADgpp?R$Mz zPDW9*zko_%zw@KONdCF}Ox8K-!x2otK4K*{9r<(2D0ajiB&t_8s$9(MWl1I5vu2dA z_nIT6HV zZ5JEw=~Vl%z+aY`!krOeDuK2!b1$C%eQnTZt6ub4Ewe3Zp6i@Z5Bn9dl%qZAFM01X z@C(ylDDcT;9h>I;82eUEI-M+bo4|OAoUgh^eN;Jp;6P*Ij&arS10q9c#`;emhrv;>3Ktu9wMj z_ve#X8_r_g9;@zCZ>H$ur8; zE{3ieFSyI67H$-V8L?VB z6VYq;n~UtZl?|2H-x~^gT`pu?6VXVi7d}8`Wc2$gcl>Us~_{GP5xIH3s zOL(;D05 z5ts*^#E7{x+n2zmn#VwYT#JZ3fo6aB64Fz-3k@h77#OaGzp=~DKm}OzIhySjrY)th z3qObfBZv1)loat^Y=&~wQB{8H5EKELCk?VI(rmdhpyI>V6Y0`ztP(umS+44*Kqkq9 zT=0P_47i{mYcZmigMS@%e1_x6~zB-8AwFDAb z5aA3GLXjKxwP14Sb%Jcc3AlNFwd@7P7M#>#IGZ4qSHBG11y$ob;Zz4mnJQKosz&}u zeQl3&a5O+l75;Dl%L(|Ktp|Xvx4f>B@_WeCtO1UkhX^7bpDth48Em)-!c|A}y2RB; z37B8f%&SPEi(bfod+|Q_WQ{oyJS743)o_}}mwzFd1%wXx_OQ`?@NL;pEm8#B&sY7t zVOxyc{6f1)vqwQ%B3sbHM!jn(Dh1I-(mqH>1e^t0RY3^2=5b^1*(TDX6PKsc*waig zPd3|?@(>XeUgLvJs%(I#=~#gmUT5JkqG&mvHY`R~-2(UoyK9dSkdwk*uvM(2gmhO! zHX{E}4oXJNbZ$pO&L>R{ZwW_kgt9Ek+B*z^S!q+Bit%tdJoT>5v=%dX?0{IRuc z)+k)rg_rU6LGL9uNaF*Nk95)df9WR?qy;axte!OEmjkd+fegrSo^>%voQhrtFqdgg zSgAW*LI5)e@KUU-#{t@#f$uows()t2l!f zTYv*kABOv|bjeQ#(lnw*rLv_IIq{?H`QO02Oz1yYp7-T{6b@y`lw@B3&LBMv_BLDU z!#dO%Jhd50f@0NW>9b5DOH%5j;T0#QfB=;r)&^|lgE?>#6n&LjOnMx(9H8h2Z0v(q?es5vtR0S&H^_I#~bgE7&}6pNWzSK7D|N-+`2oJ=F)H zjM0hnT*ica@2Q}c#0=O-BzXIGm^*+R;B^6!4XR0?0y)Jty$AGG2X##&Ue6++DjjHC z4fezHuOjk;V?$l5@xtL<=n;dL;}Ip|Q`YPgKa?m?F89ybOJ#{eQMS33lWx zN(bN71HIH<&;9S)ZdlZd5C#Mgo+y+rG?iH*h*CzZh~;Mx!Z+-rABumdNckU~|0rZAPHt%P^E5gj)D8ScAx=(p z)WZd{+?yJX7p=t#0Nee9g!+Jf(%In`zyv@w`E}00M_^o9?NZ=%TWW#c0#T3Dt zVj2D6JSOObI%iZ{#0bW(W_L%S`$z=ucwl)GPRbX;ya6x+yyG7QhNOfzD;N?HRJsjo zqtfl^98|d7*(tC}`D;kI@P7=B}0?I_?<}*OkPRh*#|H@?+13)_)FaiznKJ=n8bs_Nl zU6EwoY(1~5(l{6CY)9Ocz^N>o!q;o-~AV1=EGf9V@=F*MqQACCd7;*8+I%DIxe z|DHA~@*xmrSPJ!l@*W_W?#pkUIBS3$!i)cZveWxL_W!l`lEJC?L0wB2!>|dM5{_6K z$tePmpPX=Z6aSZ+CYBRs?_ogJ3dG$T!05ldrKp+%P}ss7a+Y5USUwzOdC7b^%d`0? zAZZ-&Wr=AuEPBK%Bni$!%MbzSEgB}mZ;mdE2@A(q=dn!a$Zn!xs z8`;w$gEFU!mekx)w<2u_{u9Nrhcd|~f}Tn~Nqn5)Nve2lXk}9%HSie&k(q~K<<=V# z%BqQ(%m>#k`!6P$h}S0*f|mHJY~-XY368ZD|M*PP{-XP0^v`u@Rpatr)M$S6CVf-GTIDCM{gA$pg5 zHB?REbBWGy$on7NJ?%33veq#1YbVmh%Qy7%w95ShLvuA_%N)|`bK`Ua&CorX2VuKR zs@USw#@gRg2b9CANk&}5ECO) zV5g6BkISlt#@gQQSoyLpuqVSL(zl4GA7g@q_Hy0nCt5cAgPQeinn#A;ja4jejLgrR z(ZJpRNhb5S28{1%j(b*}AN{b!sIM(cN0w|;Dt@;&AR#3#TK>Mh(9Qx0P%?N%1^*`K zG7i0rsMh{svSFwWXAnf}6jw4|r9KVAK7F6cyRdHC|HIyUhBcLb zYvay1%8Uw(V?jlX9RU%Qrbfs(7DNP8nt~9e*8~I-C4p@jK|w%JqzO?G5D-EU0z?u4 zY0?A?ErdufAqh2wlzE@T-zoodo$LC)AI^vO!}&PZ=yvZX>sjkw_gd>-W#b_+8)Mcu z_Lw~(-cL!1(l?T)@HT5zPP>zJGoT?mqvQ|x#n1S0l__(~lw@O0l7UgCOZJ>joDIzU7DngLSK7-py!3Jqr6Nb|Ez)rnjuo#duZ*hLvD8?}`y{Y}uBhw0RK*91;3Cv_1QmEqEsplV3oE`tLJ)eQIQ#J0h=~wH-->vW>iwV z#H0Omf`3p$10fn`soe#d=g=&RV1$SJyZ zQMx03tM`^CQz@{ckq746QP)A*T7Z4}udjo9#bzp8e(d#!i{nu?|%JWH}x&#~eWcX#P;w zSTc|dr2qjtB+*T z*u+hjj_cQT9 zzzn1Mmv8Zv4~(-Z^8D-cYh#cB(0f1x=vihqlYuj*28wc# z-piJ>D$zgP|C>7h|D?_x0CoHwiQg?i&RYrn_^4%}%G`z#1qkhH*(z=7zg;!L2wg=p z%Bd_O+eW;m=#L-3bR+z^`PpgBV0p<&3Z^nw^T4>h=d_P{!ljd)@`mNpAh7Ot@nSnZ z6gMG;OmQmC?0jl5&!SmKEybj__0cUAW9X@N;15(V5k`d~oS$EQRYX?C=No0xwd+k3 zwKr`#c*N>T*O|C8k&(Hw8<7tNc+Wt)aQqRZ_<+Jh!Lnd#P_6naoUToh9`ieyH8*9^ zJeX!zS?pj-9!A$csl)U)qST^Ns@+%y5_jaP(>B^0pXuu*==oo0blTDvDtqMZ5Kb6`62;gZRo99gt33zM1{nbQadi~%UCi4%2=QtgBPSa1=P1%iqLuzA2KChQf|gF3+PJ*NuU+4ob*88v(BkWU`L{y z@k4}*;A(xi&IoU@SwG`WtkgLv^j;Z7*KgYQ+tru|x=3|>k3(3ZvPtRdIx82A!mE=x z@p^Bvu2#wX83VlP5U;_DA3N_N@aqQ(RH63<)KV)Eec{r1o{kqSB5 zDvGgKRLcu6LkIqvpZM%PMV$d_Q{G}w(O)Sp(Hn8H1bX*%!$v0wJUPPL6&1ojaeYqI}^pf`n0x$WdHI!?3W1O~~XZaj(&oMoscd9BzPhQ|Afv^>k{ZZ#qrTyenv}!y{Hd;w<%+TsrE67 zrDmpOBoB|TLpKKLv9fupk0%2Q~B9o>WggV&K~^Kn;Iq9KPYucjRGg&$!S3W5h?25sC8%e1?vo0HSw07 z7hOzojou=A<^`DGVtrRXd95%Ws)^@;?T8ML+e}*G0_4p$N-HT#S5+e!6o5YvND0H; z3I(Cp`fMjCy%u3SD??qnB)XgXPk`nL;~2QHX{?1F9ouNN$~1hJ!XZ2*6N zmr$iV1fIRX+zDFra{6&9RV7AV#q()R#k_o1)sz<{zHH<6f|~ZKvT00W}#pu>W!Pc7os-jsX)EO zxKXdUzLaUt@vGj`e^|=sUmvEx8Y?N!m@t$&7=lC-Xvxd7zZ?C~uN0LT9f9TMexXBA z*lzrdKIi}sIe)Vj|FDm_mq$1iY%#!PWHZTu-zA2wewV?h$9yBv%OI-QMA`H)Ul4FH*`JKh*0;E3U4E-$&0og zo3m%PH=C=OyUyn-q{!Q5C&Q#SQZ0SZjC>G*BYVj#KR?M-F*a-E$m*^^I2?1ch#u?B zY0WF2qc*QqE(fCv^gb}Fa1H>W0R3lIx;t!6YwO$S5x2iMchz>oX4YH8a;%c}Vgq)84+XLsAAmj{e4XK3OQw5@{>6jNzC?^~SYUmGUQX1a@;TI(2p!Rb_aqb1VdkJyC0i$+(b22A z0k~B`&Y;5&r_#zwqzj=T)d%ZM9nJU~=R>R94qEL`-gEB9g`l>Bu#E;(Q_C~qff+z- z`=A${8l^W0#|#g33WX(=Sj8BYcHTm)_XKWa_}m`DvalO$c7plepYcg_;Y-U~oMro5 z?I|Tx${RxP_@20}M}zYavfkcY*g^**H4ki!J&8`;0^Nfr`r~(fb^###6#FDbXLyIl zo;jl0sZy+EJvvsE70Axj+>xBq7xaw`1#mq#96_Glmap$_v$?=JRG^!N7PftO*i$fqsbA zku93ruKBn=%yrGmxWE6_(|UP5%X<|-8irw>*d5a>wIw?Bkkpcw#hWtvL@&w0#=7vi zKImxLH(bs<96BsYeUDX|U?g9p)C?%T=)awt;SiY;|MuI6#@?QS^v!Y)HdP^h7^aTD zDr^vEQ#8aG!o0cc5nva}&m3P%!5MWT8>!Dj4SSF~;dH>DRv`D1qY8Lv{saleTZar z%nULv6!;ZMaRB01xH`s}2d22Qn%U-g(F|*&g*l?~>52dmF7#$#d8ARb$)mQOD|HUr zwXD?iUFWp^PC1K~#fLjg!Q}}si(vxoM>=3Eh{%GVK`yy z*5|TMMw+z?EG8N#_k|kZ+ogg{MPX+bLB&TV^`RUmDp4sR6Y~v_-hS6nQ?G??^GNW~ zo(8<-nu&moxcjji(h4#oi;vl6o$ziNvHMLga!?j-KOmc*$q+YnXg65ovEf6=f1vKe ziiwhb*|?`e6p=s3kQ$ali8~m8f%}<3x7;Te>J>pccBgH4OY0?dYSx96cca0^;GrFW zl>FO-(@LXa?H0V54y;=o#i=S%)^`C!HjJ5LBm;#&hC@j(>SS!o_WGd#02{_NeU1tl z)oIP$<~9xvU|vk$=IF;_GF(>{KUhvMS>&c7{}s7^n)ng9d%Arxjg5j->Z|ge_EObO zAhMSgT*pYOY-NLR&spY)G@RYO%Dkf9_ePkpMn87c!)j+O!&UBkR-HD}_I+A<@%cCZ zGi_J4&}69xF^32@ zH?*p(tb4GQJALxpTJ-m#jsBe-m#@@r(%05A-FW_8t~@m_1^lnsKP!M$EgTRo(W|zK z>%bK-4qbflO>mD2CiH{2t$t(W6zgF3e)dU~prF<5H5jLrL~_?Y3hxE1@UX}%bmB-* zMM}u|c|E~QYp`D6LH*$0q!x#)MOZzZPFpB9;7zg2E1td1|KjYO>vdEWQoX$4?KeH5 zip+N3!LFlPX%x?~<{=vw)wi#()^Bk*!Vh~*Kv8QNxE$PH>#{MWJl10o6 zCyl=87=_HNGOoHqK3cxM>{j{o#{)H^)01IzcJBVivg{~78ydQiW=Ts^6Q@aagV7g) zvyq@ybj=SUNFYf+t02FRj3x5+15@i@9wPmxcnd@f2DWiWx)e&_)d?Iy1e;TKZ6X1ss^bROIw^=? zD@$GbtI#omya-m+2N5ne(82O|I&{$mHFoKODir2>Vbk+jx$7 zXRs3lz!|0QGmH+guBf@UD)S==b^~2iC*GhOOD{){kjWU=V$lN~@gDTB#sROe;Ww6~ zjLgW5UE4i>P(1+M)jX0KEvnR01(y7F$EdmXjAiH*#=_1Y@6Sj!PwPzcDqbe~xRPwJ z%{tLrLKv+`QrRJuRgd2fY)X2$N%3H5@n5u~R+ps%i$~097Z+r z`Rf)Mtu^j#V~@3U-O*OP7`b~Hq0Xk{XP4p-LKm^Kklg3sgXY0nmBxUW+XoReHYluh zA)%Y3-Th>jF?Dx8AT>i)rv@(eDRnd95ZVv*;fK_WeQwG#7-$-s+kN`73XL^c<8U z`jCR3<{Kn0Vn;xTy@uogKmw>OwLs=4=qr-R22Erg>a&&{;|*-YT}WAk{=R5zgz!>` zm4RtNjU2U5oXsoL3kRZ~83WXFjZ@jCw3P>ZECqCymCYJgb8{%=9 zd2|PvG(rj2uYxq4L&|bKe&8MJb=K{9T4du{>mk{ldaGQ|eVQg3z}ZPRrxxL`AK?#5 z4J=LB+(ZYn^jh7DY%nXR3UF_FV|KaseKnn?QOBoeHh#Z|$( zzVkmTO>zb&1^4E%%ivMvWUwQ|46qo0;Na<)&EyaD8YT9HKKN*0>w@7@J~45mBX-YQ z#&0DAU)!E_F4sFHIWxr$BggRm&}>E~0iRuOU$|}f=%gv<0)_E{H83N1dkO{sOg5SPY|Ed!0zYYhmVk zRX;g<#IPZHse(t_q_2rE_^brkYPTS5&SgwNd~8B=6o`L^A;gcQz+8(TNWK6KqBO%EN0Ovnx&W1&mW)VQ z5X2k*F6DxT76f?_7RpP9kwx2}L&S9>$*fAxrAMt7ACS zM3F)c-!cHN0m95M)r;fwzHN~Tan~{JJwys`=Exf`d3sCIOuM zzDg2oUYyf{QfscjDmiDB=%fv79jJ1p*_4)AnOWIbX*Fw=lpK*6?p@{od3czFoK1** zS|uVOQVE~YKu#3+msN8MVI1Xncu8oGg=#TBODBtzHJu@dpqE;wCSrmgDtRkDE9bA$ zwrKvLCrZ=Uzdt&mI`eL}EV^35TBBs0Ld^)!DC7#wp2hqdA;ORmBHKWsu#@nG9EuMD zjL4)mJ3(00uWG6B5dc$uwhia~i|&FM>bQ1N0o_Iv;XGb=Eu@ut?M3w^nwiPoR`Y%4 z+y6MK5^f+n-)SHe4+{lwV+6pBi!xoOY$RXd8Y-3`xhDZag`L0*3JvxTOMmO2uE%ax z6>vHjNdslfX6V;}Es;Qmwmkb8o2B8Ltk<;duzE6yZ;v&;pP1vXFACf%+K$kmiOp+F_E3{Mi`vh+lg^f${|o{}Q_?uGKub4qX{dfZ6p3=59weZA;d*w9PlyObR~t#RxcyS0XUEsE@cSG8?bo zBMj!io?ab5w>%jTcwfg_G!=?$U+H5;Kng#l^4lq!UOoC|RDQkPXqiK%uinz}^8L@+ z*V&)xGEtSe21h<~;i5o$jzIAaJHl7FHC~v;J>3P57~Kas`JocHl#ZsaK~h=`hf!P3 z&qSHzhLA(P9~i3r&f9NM;C;>e;qB~f+ut|6d(bRnr8GhUh4FY8mm3KuO{iGo|L!M8 z47XKh57JaeN?AoXvZs~bo*w^(%av1x`+Ek-IGL)JZTO4x?)M|JRn(l$ZOb*)a7jN= z=`J5x*V$@05hpJ42QZq~)B1$as7*7ObHVc59kR=q0nKxXV^MxHi8sH$8*Q{3dJ$>- zB(!$b?~z-F9_-WKcr~|j`b6b1&CJ}lxsl4?T1|e&zm>WYel=DJ!qf=W=gmfU^z^D} z_0!}jUzx3yWnxj@O1lrB9%#?58mZLnt(1@~`P5KLlYJYlXJQXN+WUkG z?m$o?dYmw8n>tFhz$04t##Wx6!w6Cb>rEXQM z+gG<@yA{0VCks3FAmZ<#(= z-!>Ip+LM-3H9tShdKY-@whwmma36e6fNxsDFIz6Ia<_0vZ5oL_bm+*n!x!95nX>S@ zF2qMz3mrl{g$`nMs@vWOcdechntw1~r&o$vuIMPs@sFk=@RBOm*tZ*!cm08&iZEo@mmE*OOqGsu^k@jwXdZ zRIuTP^W*K!h0osAvMtF2j-lOPd!n=Vt>AC2+D2}n`e!a3wLEIFu?Q|Rx4*I&Qdi_! zzFkXIgScugtw|f!qMi4UIG``ludM7Mm6?ZP_Naxw9tda$v7#zh1J6Q^rp$mdD?4u3n&Tyk-E>$Eap6Nm({9+GA5}jwidLgn9UL< zvc9s__;U_bvy$ktN;?BOROa5ycKS5klJ$uwRWWvSXQ*P!G3lQMuFmK^x7I&i_^w1E4up{g^he0ZaKP%;dJVobuvSZE% z?2eh7_*i9gwX-T0EUhYvKn*>Q`1!2kshA7>DtRdz8!zk2d~T2t%5vOv_JOzf=x6A# zFDM5Z5n~0RgikjOcWkIYJmf4#UN7AY=@|?f!cLXED;u+Pp`kL$OTSv*-0*u}?zTpc z$Tu%EG{%0DotrWhhWlqluJlS!4^n(@O0oJm1MD&EMQ{&Q4^)IEQ%>-R{%qd+{MXs7 zwWVZLKeqP7spuxjGxJm07RJ92-yE^&()&XR0hpxFhWms~v!5w5fFH@8C-WMbOR20?k}L z67(3T&U|84NN75xq3Y9v5>Sii`QH-!zn9>_DtFRf_t)x(5NX#3ZmC!{KnW^)Ca>Ke z{O-SE@6+@0X0Z&M_;W~!i)@?wXxhRakR5AYgo!l!Bvrj?CjG}E$C}1*%`<$a8z0?Z zkuccDEETFgj^G-3zRve9?$afzmWPZhv+LS%~&x*6bJ$00i!n_iL zqeIe*pu5WHo}hU?YMkVDXp$jZ&rqAAERPe*3~l*-X$b?Hs-PZ39cT&+;#|C2?|0Hk zSy_4R$U42aF00O3Wf`6*&_;ivJ_dxanRHXK`0ELWadqpMA(na3+}a#C*re1ZoJj{O zviJ|Db;iJA>bYd@h>_z*1LNWY--*{DEn~p!Wk3&<$1P{qj_k$*_wyu`E>vD@qc4n=)V%7{sQbR@&CGt^Hqp{nJk z*!~fFf9Tx&AUq1MQuqG zVwc=;nPF=9r)r39hiqsJZV4}gIu!omaw*I^RTZTMFRb8V7qA!-$60gP=5F7ya^wCr z<&zm32hTioi+6`)SW^n661>pVyVRegzws?UzaN@LwMs*&zhis6AOrI+0ZD#~VRqbn zR;NURjI}@u5N;#<@WDyuu)~9~o}1s+IF-KbTZ~hy9*NvC@~VCxOm_OlfZ{NehKLK9 z%$j?3z=kfS=9_dFty#dL?CXTc}MjubNx~AA}9_qE+0-ThDs zwzoQNH`(L%&^A3ut|{yjB@Pcev}oA^oO9Kj-H2UN=##31PRFP4My_M3WMWWNUl%dJ zjb_wRd2^vng@I%{tTPxjK(*$bwl(gqRMw#j-uA4E--840%E9QL6(^}8_ZG1emRfJ+)J#ffPQy6jGUQC$RI_2}9|8O;tcRyBg@F&4Hw2w)k8&Dh#Lq?Qmn2!}E(%nY7hfKj4oj)~ae}?lo4i1O3Z> z%*x~{3l$+_!Z>vS0XCl63TX4lF^^@_sU3|nNnWOTQV4t`tYz!H5{e;qGibCLG;b(8 z0r{Y2tX!~8wAXon3?=?;#*=E`pMI3H{4~(kYoI);BhGHGqmJ7wSVk`$y>n|%mp?J?PKV9 z4qLmHfm9-22NbS5Cye?fI1GKOpq_=Q7D*na45V6N+zy*4_u~vhzH1n>5XD8oKNoB} z#@fI>mcC=xL8=<73Z);~Ht0@IRVZIX3%1oU_KLR5|$S)Ji z3-az<@HGUJg-NLo7;!?RfcK_GBezj((o3ffl^Sg)>$nk3@Tfs`C2VXxhrkrY+1)}* z2@D6~?pttTu$|2_JI702t$#-De7bw5%*U1;2Z?00m?yj`u9dFDFoW@**|wY=Ep&tq zcEaukA1qMy0}E7LZk}*?g+&>z62tP!P>uAZ{i*)w>tJ#{P=9YijQ4;3Wgr!b_M)8& zJ{!<8c4E+xpekr@qK=W~R|1t2orgwAXZ9IhJzOdA#t|1?CUz~KSDigg)&T+pzOGuwX@ZW(NM zr9U@3P-WoG?z#5uKlv8aFowlZ~^;6%2yz0^>pB7lkfV=_wQf zAPq7ZDIk4D#R%>Vq-E2p&KnpyT!Mo6Z4RUDmqv?^Gr8ls9+xrhJ{&F3SwN+`2HFHY zI{M4rT{kj+mqBCuzwtET*nF+IX23evNTt~qY5$_)&< z1^Gzd@%8-aK*gm#)pwZv;;2mNPE=i+F$|BAG?6f&C5+6M?>3fiyY9ACG)vLht~VtM z(ZN*{;(cw***e5(b|bYZZ@myUGmO9g&x)V^HIru#0%*-8=^b$)i#xt)uHpOYuk4$T z1W|)XLDs<^FSaV+-bi9X|to{00UoT=6){@=5v3I6*pX$p1#SMFx zv=Fj?kW6fa-J{B0|5s48p@G*=Bm${N!_Ue|^7mI;=!3t-7>HvtrGKFs7r+*K)!G0* zNeZ(;WO@9OhQD?B7hV4HN#g@voe1EaSQkU@p~sMb@fU&N;C{*~sQx!lsNN?6^eaV& zk8S)3>=yWwi;4(q5eB4$#!4e`PcbSN*oA#MPehuRpM7S(4|D2u2<=X(ocqyFqh@>s zkDR2YsBNG~_3=r)BgG+RMZg4*OurY{bF+PU$&P6s%Rt^ne?m{ZF;P~=sXt_h@w4An z=%w{)UQ!WbwfE?G`NC?v6(Y&f&etMFxU>+F8A4tq>0upuC4}Z3@+w)tpa0R~4w1J_NnMEuypD{L?R^K+bneA zo77UeQ3Ozlo9CBRQsEVe&cW0hp}fznyq<*>pbul)5YEgK?O0{uZMeFzuFd=A+n8cq zv)Ard#}Zs+J~9_fc{TULxue)7RG!q_sNydT^PO{HW5WB&LHn z>R z;%lLy%R6Bc*$dAZrlfj@X~}i*NrCwDz?99;wa=VQSFFAMgO&%`#NRb|o)9VX^Sp^* zeC-cE57QxW?QW0^`6~I9K+etJ(1xrN3Yd|@CWbmb*cACfB$Y_%~eiQ&>~& zScLe%N|IqCgWB5u9gLp&F{7v|#`X{f6Q(RtS+tmG!+XpgKYk1g(rqI3q7hDp-N9PHc4{hSWYbuy4hJ&OCQ zq@?iN8V-T}UZbcl_k!WE;cfd(r)?o{cP8&b#@uw|L1PE8K&aM9-G#eGUin_ChNlQq z0g_QI>+-cA^%Ev1ZZq^qPD##O5L{hLj9YZF*#u2OV6rhQ~p_z{?Cf}r$X&gM9Lsel9EO(4?~VE zla9n58&EgV#?-OQpUpv)Wfp5W(qki)A;qZzgnPGHoPBxbg~}HYDc#HKuTL`D%l|9P zgcrUHHYZLPAAt_)JWXz2yf^DI)V^T!>^rhv8h7lY#WxVNVH-w;*Lwb0v4fe5=(KHW zV5biR0sX$I^P9C?*dp|z@gcF}B=sRfrN~$h@7bH*%~0=V z4h9sLT^bP8-Y)nZtvymsk`Ai}a3$51Soia;B-CUkNMxx5%+Z)2!hdKsDVb5(m zc(w-FoT0ZD8e0!U?^|znlqv&mrw~I22q&digZT?<1Y=?PNN*uuOpHqYGn8Kfmj(R>p{+zqD3L- zQ!;sgU=P`_><`fc+8~JcMqzivMM57Mq!D5_s_s+v&kB}Kgi+{hNgloA=y&R_d zLc#PT{-ofa6}QS(RqdHR^kJKX z)CZFN2}A`Q4kpv-W%OPLtT+4Ood(eCd&)#=a!MhoOXx;}H)+WpN@^vcf{TZYuaG&q1+4VP|2f>)uKGm?dT^w!Ja{|XbBfi+O za{b5Fjs8Dc9u&lXhuy&!37##`M-nfHL)cb560Zf-v58uX0^zQ*9+%)OFu{Kwn9q2W z_u2bWeTqT&SQ~q_l*@|=N%JnWxmsE5^C0+S(kmWey7lb!^5iN$J9y03Y zeIRUoh#@4t!?qw!TXJ+9K<-CYozR%ma&;{}UPKKbpNlP72!B&jZnz=EH^#jn1~I(( zYJ%6)-#cVagaou%-C^tvsKy(SWC#FC)s>3aL`Svx1-B)v9j2d~-t`D<8w}TPOOoRH}Xm0x|kwmZUBNg_dV78e$VKPVTgW&80R#LmsqO zkNJ_8jcpM3%9c;Iypy08MB@mjm3`AhKPaj7Y6W!M4e2&kyH&x@xJNoiKn zq!Z0PfN+0mlyi@+fah5v*QhN$6rP&T^BmEQ04wRKZm2bc)e1Pbog2GoO(r@FA5Z)9 zZ#*U7{oksKcjrkN9!%iIFfe~P~lG|hfIyJ4ce+9^ShaNh{* zgJ~}r<1J5f$6L$JSstMx`U-kMU_W8$#lfr0g*7*#wd*<})Jc@oPcnzaAcV+Wr{{9D9XlA1%7A|Qu~?2>y!fB>MH2?Qq*65?3VCxd`iEQsSQDlXAhRJNRY9t^vH-!al-h^M zpFu@%x{=~f%795E%E>3Lz$_L_aC~oF8a5TzOWbp6H(d>UNlw7i$$QTl2h^MG= zi3sEmBrW6 z{Fx$(;Sz+0YMvb~z4PQP11;t*FKjKs2kU0;C8$oOHgZBUPM^{$+}Y*lM{Dz-V9K!v;I6*8FF)!R!%f=P55d-2 zk))z4esFhe4uh+3vcI+h_L$?U0)wzOw!e6iaATnV>ElynkW( zI#f-VxYwN&)7eyeX>oQ~YJ^YZ!crYnD_qmO8i9^|qYJOzI9&V4^A5Y+<(jsJvSTlY z^z5gMZSX@(sO1jgksaH7M9e$_t*s>O(fe{Z*a$mk>9&Mgle+KjBkS9p5qCnzjL&B7 zIeoEnMe~syMOi@h1#WZ=vzOt~fzuk+S=i6A=vCXgz|X+NqJ24W&EJQ^&70|}fBoh| zvanNh`18scf+{VczgXMm+PdDXH_hG7K5vrTrq&yQ6MFqj`p30ShPuOS`v*!u7w-br z1LOw@Y7LZ#FQMF|`DQY2KXzsLbn!PeWZa7!^E1K6D}5IoYA88D1r`^VjNf#0bZwCx zb$$?a=)#9o4`CQ|w18D7))cOapUx21RIb(&_I2U(PWJl#!S$oBvb~je^m$zCDlOj9 z{+;8~MTNQUQ+sk7FBE4P`kP!Fl!YS!wRvF(QA>F%wRb!QdoIvbzrcW zMZ#@D-0iRtx-&Thvp=YIr&mwO_txf1d%CyXk38?SdoJ_jg>>+go>oyt2>mTtMVLFI zGfMjy=Iep=n19ntXi+E(lmuEjI_~y!WPcpZB>Z-__XF;J(zy-0dawDObkJN!J2*Eq zk>AwqR#a3YJSX=6ln=*F9)kG|1*qcC!*ha*N(w5mwKos<<{k^^{b;dA#Z*zraBECM z*IWNfUoTy@dV8rRGH0V_?yD6FRFE)D{g9aC$}fu?nEy*PpOKFTIXCGBbO2hChJuQ~ zUw%X{P*%J}MDzo(v`l5mLy`zR80 z#CT9hwtFA{2qb)O2O^lEefeItC!pV>E~X=81d}bQ6yUx!`1Wb)xWl}v@SPv0NKkui zUU`&YITT_S>MN!+v%S+(>in)NX=N0COIFOj`fJ6!BTwBfv85fbxB5Wdn&?UK=B5JwdIk^)Avm>FJcXAQ%*_C5fema!d3sQI7Ey-rud+0 z*=p2S+6!9)y7;&!Ek*{aaw4bOvId~_%ep8J9tBP0Bd@aUjXxFiJ0>G9BW-LR<~Nwd zho_(Sy!p^ITi#&Qw?gUoXz$PF6;e{+O34qg-#JsMIbzK+Q3yQpQA7+v8BX*^ONiZ$ z6!={Zo@?iZ;i%%jDp4mb+S%JRYFzoY-Gk+8kmUpLqc66VSUq{Ce0FbR`0=f7@&G|+ zjU?7k-b-SnWt3MK_(33LaO4+yNi{}?pI^Q#>9uahM%}ybg`rP zmjy!k4&a1nApfp01`^uJr+8Vb6NT9*H3oeVxhqUhoX#11-b;ro6Z$?d3}5sM+n+eV z6dj&2$RQ-+yy`H?-^83*@nHM&)bQ|^rsikte=hoxAbVs70H_Zg7Yk@Y4NwsL2_MAN zr$5+G3||=K`z>b8HnA_fcUwJO&yMM0BOl;YjGoeiD_&Ya%BJZVpC|Uk$JnQA`*M52 z+G}SDynayTZMy)t-LwQMcme_qrhLNEAG3ObWlWHY%lg`QFC0+g{5tINpEGGg{nrR1 z6-Jq*22RX(8|e>l-KQ_!sJHTb6SMbelja9`;_a;{=7wz!MlSpgUeXZKK}V$Zq%%c! z@5#{jRS=(WoF;Uv2xsc;Ar`}oab|1$?-+HJlFFEwn^Ys*I%{pc0}^&k4!S;R*mX^w z?{0z8h!@!CXo4PMXfI67z~Hq1SefN1@vGi6jgtA)GNKx?vKVKV2e%Uj`ub6k6)b)6bB18k;(Fz?13#i zrs~~7><}dej~ zAqNiccPf5>;cRP5X!5m}P!b%0(^+3hjhU0E=`U`$JTL@aS9ycs@N6`qmJ#i6>a=4KxU9~@pXwr6AsQ}` z_Q$<9zq!^o;p#aOA+OxSgyukLXUBbE-)w`h1|P*{fG1*ckPh{UbsDYfYI;Tc%tzzy z0Z~?1j_^2Tv;h;UG})`#pq@l$B~4wlc0TBc+V;xI+9u~Exo)4lPEy1a?->yi_*}1v zDS&QbaGp!6U=7r0!WJB<5_5=K>&IqU4kVk?(u77uCHhH{o^l`Z%6&zwGO-P`Q+Mq~ zYg|}(rc34BsvU z3^xIOs7qxcyA@F5&WM9>yK(j4?*^-TX9mBkZs+*I?3_tEHn?1lp|BhYv~uYCRYqSW zmJ*W4@mJmU!kcJ(A=}ZnKHR#qK^t``g?+SB8z%d{ z9H8+(9?FD%2?G>a&EL`!OFP=96`P6?N$NltT}^AC&!X`YXg;2#J6uuf5uPoIC%@0b zfVxRvZ;SEwV_~c>jh$njC3>Kkvue+;f9);$26AA&NuW@bDI5si(Ih=X)dc!_FtLds zpb!TiCtl_0G%)$o_~0u<||(5 zkv-0);VYqe?JKgK@E0*%>P3Hm#Yj{db)q444B>*WV;b0Tew2_kFLF3uVZ3LEbreoQ z+xl*g;pGn;vBFB-GG06jxNP-Up6aw7HWCNSvx(q?r(!r*5>s{6@W4yGPR zH>!ht;SV7}oF(-PCNx;aq`A#OcV^P2<{r57ZLQQ9INeh0=81?vj&V09I@%%jRempM zHs4b2e|UI#Jm&nH_?TuUp&#D?(1L+JS`Y1qImH*;+SPyen?k4Udy053ish zP#BIknGXj^I*+2cfhxT&ZeTJJXG=;dxuaWDi6b#<^FVAC4ImrJ_II%!P8YP)V-yC( zC+HgdYl_V04Zr#n-{@GK5Bbzp_KIn1%vf1`49cGsj{O)Rn7)Gj5132V|Vk0}cL&ON_9O}Ass+G&= z>7!pDL6_Oa#joFG9GI(PDW(V%g8o?h)z?F&;1~>@OmF{a&IY zlr2p+nG9I(r3K142Q@MHbwK0BDybv&;0fZmjv0p8ENSgaGm;459;^CQ`B^2nZRI=# z2lS!*)^+1rUW==n2R6AUqPg}JIjan={9O8Y12taX^Q|m6m|UH`F5k2zz-vw zrn1>;bSu4gqO`J0y--oP#qkT+4;I_M<>TX&h%INmuKN5zl6kWd?kFI0)`SV?#I>Md zN2dW6QPuN}pv)s(AOCx<0vyKFpd=wGY%pO3W^E}LdHSFN~8!PLKGCFMx`kwTSY}hK|nx7 zh>G-H0|bbO^b&f25F)*$K_G?fZ2wQ<@0|C%>%ZP_@5l2&mutz|?EO4d^!?cFGxDSYbR4H~$su<7 zMe3ESda>$0Y|l({8cMxnTbV*@)*wmjKf*J(@2HR6{8#*X<0r`*Eqn4q>*h@5q@v0L zI{NtJdO(+y&5NEnB5bWL)kP~B8AbgD2j7$B@H|1Mz;79Vnbcm0=?;?evqCTt`2>l*>JwL27n#Pqne`gu;g|6b#1vuhw)q6}DoYf>2296YQkSbBJ6te^Nf+GG& zMw-~ZrZRI!%6`Y`ARqH@QSOnKWwpHGYVeMLQF9TIUv@rs-u=h2`@FHuy1$0W!eZhT z5wN4bZ$#_}JH>(uqm#Hqwy65qkVHb0#L(^PHy4rAKThf9==tyy7g}-I)e$r++lZI4 ziRw?ylWO75H8N(Jo=!(@Iz4{ty3`-dl%j{vGFF%8iu|F!(2oHFD8Su)%1K$}&?H+~ zT%5q#mP2dBm2)@(Y*0VzSVP;mZb}cR*QBxv#RC~zvBcWWsiadea6xD+20U+SnJAry zDFW>k>MH5?5qorV>he4TLb3tj>Iedsarf|SHkJmiFPbvI4JZuF%!b-cj3Ixas6c-iq#x45 z7)m6eHbMQ#4&~^hP$_DVuwaSAn${1~+~FgR;X>u7o{V|#_u_UZH`i^f< zEVW+oO(pd~pE9DsnCDOmbMniX={I zn)o2ZJhOH6j6{%UuwLG1D1Kf4;ezH3R{Oh)&+XS~TX#KNdcm`k(Qwj|r8|5au_5e$ zhW`zAe?^%za)A{@X#38}QX-0ivA!?eoNXcDK&bW+GQfz_ql z7hvlyvoeF0I_}380dKwiL7IVGE-Ce}gzlr2$GtCqDV6eh5ar3|)kGB_Lw^abD93Za@j_oWuxI;?rN zRIm2RA!M!n{_ybK7MPtGU9!mK5~wX>rM2bTIMEk{tnUbV^6x6Exmp?9{Lie`7LcR@ z4De|F2{M)o@>L@Y*3a!QBuXNfCRGGUuNKqsPvz9IYV(@ znP*T7P%q6Ob3fzDTzugN|0+Czyg}Bc1I#9DgTpD zWe_;>+K!whu%mhlgxu)~fqYM*8KCp|LvBjE4C)}Y3Z za_h4YlOP`^Bbr7D;Gm;P+Q|i_IkQ9dwx#^f26nd=F}}Da=Hr!{YNpLfn@vmqZeA?j zU=9dDikig@knlTz3MZ)O`QteIA}hp!A3??JH9Nby zz<>L6D%~Jr4614U8R`0gNZ0X8?K4@Vd*-Oi%E_G7$^d-VmWY=*P0*6I+aCSmZdGQ=!4LlHG%SS~-k_1CRQO zP(Tc_OZ=^e!`CR00^|bNtG&&M{PR0|jDnKQ0~&YT{dQaDYZXxV_R3x|H<9tg&<-v_ zfE&?(<(z{OGlk;$vqUbvr%Dj+bkFx9=8mJ_kj1(7Wcg{liO%Z$olquM^wS(%Ud<>Y1j@N+3|0_EJKsI8P+&N5C%i< zD*)@XGZBgWFM5}D7c%-S2ft{;;|tHiS-MEa%xXpiK@ESvt8Ip1S96dkNHD$Q=znsJ zS5SG2`DjVv_auf;5@|wAPM_MV-?-6%o|AT<$NIq$*Bt?n^!%-{kI;=aBUIi4#1*1Y zByWR74B9q00POgay8(S@?V$#`3saZuz`8NI|AE0#Xc6OFdG#Z}P+=NQIRh@o5l);4?ScCz3t#D~2vCQtXU=gO7Nwd};w+S&(U8+#WlYPS_x zbniP+SZLN!bh}oHf;|@D6oX73aC7k_!SZ>{$s9D!cNZTqqgT#}%aMa4$lsk~ep1d2 zLaBeEO|Vyhg5V?jN-o}6PmA%fIp_>6vc2|x&cNb2OPlK_iq}_kM_EWw)X6|()2B-y zvE=pm`)!^$b8m?pfp1@Bncw}JhEl|6^k-xxNBaAfIS(N28}xm0GjTlhB3wJ|Ferk` z4GyM~$?6`%2B!FhHg6}J#4od+<30Vkqi-rx=fv09s|(K)1=&}+KgI7cv(Eq9|Id?K z_ZUh;y%PYGwn20)@;o0Bb;#<>mzT@1%g+ih=qIkHB7Za@(ObM@a$I*SM zq|9UHCgHJ1-JHT2to|;Qx~GTxUc#~NdFX~U+Hg`~Sx#97E2#b~?$^wr?v1qPcp_me z+%&JikX8)Fdu9@njY$*zLbIMQ#*=(qsRSIU;~}p)*17H{T-CoP)+oW(F!#d79&O!;SpV>+pwam0FU* zH&)9^GsnWzf_T;2>;d`03V((5t`j;vw%bN~s$XUg;u4xIy7#BXYD;5bpBF<=Q@x1o zhnf$a<&0k|MNYzheIzKAtM&zlGOP>>=atn+dg|Y<$Qx}>z2URqqXT=?owa>aOD!sG z>aUu3zEzSR_M!d^OJMuE41hn%eUIhF(<>8&NnpkkbW$eJ3lM#{6~VrJnQYz#GBXva zZLCs%)}ecobg^Jh|IyZj68}196{>x|P9rHlMsDNl&q>*_xyl>%cU=D*C2MO56luaA zsz7htLGAZgd6KE<6^{J8BWRb9ROnaY?H%MkWe-;P1%7hq=cEDlRaG*tY@6BQbQ}5G z1&~DV>;4*r*0LxmiFa}8e14>}aEHBxRL|QVSi*@_r{U|!og!2VPUMF(3hk3DXB_$V zEof9o?GKF0(|v95HE6;%Whk&Pb6OW`%NblVp>ZQT`VL^Pi(kj5eTq#%mu+DdpSvJM zVJ7}7f$x|R{eH0%OR3KyvSA_5_6_2yLVwEQgdcvBP}>(};SuoiC0$ZXx4)av_$qy7 zU^T1q;wJCF3nrGE6jZAJ+?{C^bwfiD&)Z-)Dz2`e|{*1A(bIe%92F zE!~sjo|M;!iv2sc_m#SOTRW|sc5jxIv(!N#zFYe(wmDApCg_bw4X)6`)?xUjcuNns z%{>4%XYUgXh!qN5{m;F5Sra?(*6^J!#*A;o_&h*!D#%otR@=B?-on$qChA-LKNM4A z8`;cbqHqQHZdP`!1uSBbC#Yphh2#EB5CFJC!SQ5&^($0%OG?Kql0)gSa2`*c4MKSR zVod|0zfXK(D9UhKkudEe&4+|rhk5C9Ds^6ZGsi>gapU$d7ug9UGU7GV9GGTw8a_N| z2i^4=tdbic26}n5a#}OVOHQ8zL#DSCsMS4J=TO`A&V%kParncV8hPzb^B2QP3d#m6 zxYX{uyH`uiubJ{J@+YsWhuk=O14i|gy^MS&N~hi{;RF-sV+;09Xsbkt4!jH5xQY9@ z?Z)jl<#f7fSO4HD4T7gdz5KSG4OV?EUYFV_uTt(hOE0`cUZ`GTTw^6~P@ zWT4gfTJ+GHoT{2>dLv0sx0{)kw{w)MJX4+-=;2V_YK}9kfAakIgRdmdK1c5^q?k2s zXk5D;2zSR9)bUo~wmAyQVHq$xKhY^iW`X}-HF0$(GoPD7=O5vslg2UxrVgI1_x;fVZy~upcDk76$^G6F95*N5>#i`$ zeFkbWp(1ywTlusCu*|(*K|{BJh-Dr$CAw$|<-~hcRuB!EC1^qfsum*4-MU(J*cmEk zOlA4U9$^uR(0`wR0wtpjzoQ?yakc4}WiPd403Cwfx56d()q;rD<2{V&4?fki#>mS$ zf#DrJ)RGAcAem|nroA4W5C zLF?iGUKd7YG_{w&z{xo*1G7*&uRbCvbNDnvVSlHEW*Q}Nzz8n#>domm>G{$bspNMZ ztlY^R^CZz3P}d0okyroKDS6@$G%X1{F&-{LxIaIpCcXZOQ`^7>r?Ha}mB`#!P^f&` zmrrTgdNP;-Zs}23G)TPVb8ljK^Dbe7x4FErE!!mWp+8$oh?B7TW@IQH+~zItV+5fX z$`@_qEdh06$pB9pN@x>05B8~?sC-!o#oH|1Qx1{5Qvl0Ma$bU!PAf9Wj}yXm1-0)J zmBn31494;L$??NjCh0A{UR)M&0PF$k63Fw3KdID((mA^(&`+%nXwd|trb_|n9S|Ay zmmcQcOBNDF?$}dX0w{Gd`_S|oG}C;8gPeCS^;>#YbI4Cm3m$5hV1K_C3@$tSZ*n4* z2jJ~FLhHd1E_!qLAn4D)ip2E$Q|yu!s8AINGcxg2T{k_m*V1=|OGI5EPPk;$J#oB( z?2Mn4o-jHD*{p?|L2T-3AB;{^ku3(M%JDn3yAzC~DVvF1vL9jS{Ep%lXpbM$f>;d6 z3k*6kAA0L@Y?;>2o!DpwMeln9dy|j^H&I+6e`xrPU3t|V?XwB5br{S>J?q5Joa&y; zz8b#~T54NxmF`;8x%>z8^JiffHWb>*C*v+kQ7wuy?#lzcCpyr>N)<3uyZOhmj}Z$L zBzj+OY9RC(%cd@YEuhsiH_(iAMJ2mip{)k%IiO*jdiuLKm$)6f`JF7+@eg6*xhan( z+&6^feoz#vMRU^wn!k4lqxKCc_B(DL?o*DC><$;8r|vU5c8ET^0?r5dw=pZk#baVI zb?T$kau+`m5{5!X6`Rm6QEKFJ1|x!R5Aw1pVv6{UH$?wfp`1?I?8TWYCRadT{g=_Q z6OmuK$$|XCpI)C)6W=R(!;l`^(ml|(i+_PSh_}RXgcfpw&%R|~77Qh@F@*{|;Vqo? z-KHrd<&5$JdKmHk8tr0;TyqC12^3oOtDBd^R@{}7oJea~T;X|G_(rfeubjPjB>*2%g zx}|7dJPJEoFWy}q-`#g$iHq zUoip{(Q{}49Kf&eU1Yc3*GVo)`JkK!^eJiR?r_O@<)F}Y!2&@z`BIJhA0IP{WwxP^ zI!{7##gIN&V=8TO>feice72vk3jFKzD2Z|-%ka2NW}sBZfJe*@ZL$7Ig7B~Yw-?YP zBjZ<<_~+69VfG))M9pou3;h-gKuH?}H%u-8e)9aXk*~7;-K3Rp4D^ly9~3m%i|1_v zw!onVqoe$pDF*uzbFRC7i@&y$FQ{JycSu0x&D8#_Anf1D>#j!4Ox5|V4DEzp9rj4? zDHD&}BqArkrW=ZAnVsa_HQuGg)HXEV(<8tzpq)aaLnRa&=tGzvcgW!Yw+I8@uKwPd~D$mW3drJ=7(QzNsliL3z<|^G70<&{`HqjuUKM2S!>a4zN}nMq{8^6Nl5E0X2(p#RDC}mCB#uT}^y-m} zsg8=a_2Onpo5R2?d7Mn01W~y^I?R(-iUwJ`yDKk!+}M3G?VF?cY4PvtrCRwH)Rt5M z_3H?W^Pu4)D0)aAXc}Y~N{R#9gPM>-G-HXD!pLkDm7`i*Umr27oGN|@MuCs0ZWb^Y zFQ`K*rEY8gSj{2ICe>cZ@k~@jtf0*tZQ+IGpl)o7d#svOB@g^u)Nh>4%v`x!O!+#4 zQ~uS4|N40q@=kw1R_i)jDYB{291ixAtXTt1Xo8SG-+RJEpg`v$Hqu4&LQzM-GD)IX z^M%)`*&Ns`52zi3`EB}F?`Mb}yt;Rdbn)PPgv={_093xfgh|&B{@j{(Pk3+cXK21C z%0ohULZpN&4wPAmr;0oPLx{GJ4h6oT_!b2#RKAowM05gDgC_FO(SjyJ!MvU1mxxFd zBk?}nev_Zg(gnj)2M9wB-)3^Y7!brw`kX>*GLzi#;jXSEKXYcT%)Uw9cg0cvXyASkj-K8 zk&#JxtiZ?e-go4$U9!W?79bDv0jxO=z7Bk0fie8;N7K>F4(Kyw;UE0vRa2@1 z`>1Q?XjfGLuLo{47WvIvh#4U}@2NswoN-f?3Teg~;IoI1$d!=ahc+vY??KvZ1VKSE z2!Wjz0yD8sA~*_fuFLu|Aj3m?;-Z^C^`A=(MZ{k_kw5HMRCczkoB;w?=xYRdn1JlX zabBtpmx3LPu#Vzg?Hufv8lmqNo+Mv%|PGIq@qlrqLOD3sN?y3lv~IsawVP~k4E zQv-FGLUbp(qFC1Cf+Yh_0M*O}jTL_Zqo}|9rVEajGdi9l{}es@lf7U+NXj7_Ai!N9 znZrUsH&ODG1}vu@Vkhztv0~(!?$k~G+V+diUk$M0BD!)v_>pL^B-thycC@_wx7e2} zl0~e1xG*x481Zs4`JT#PV5oQ;c@yfHhUV=q&n}sw)nx8HCFWfe zj6Mz8DI;9_0}Y(;{7zBN5S9W*&&Nv=qI;oLm~XW!k{DTVr6HB}+Am5_ZCIuE;YHA1 z?hBOQ;ChIoo6-Q4N;XP0zBezSwgbDcn#y}6Odz8xRVQx`7%nd*H49ID)vHsDROt^9 z?U^HpGc@B4%x~!gt1JwJ6vp0zTU#Mle*3gIR(kch9MLxcL3{|c2S@-4s|Hx_8G{ht z(dZvv?7f5-7$d; z$*e+GU^m?^JzlQp4t>6Ii$-uoTJ+04DtrHRW#o|3tDe~u>FbsRBlobB{gB%5TyR9) z`uTG~z&@Y1mMf>2CA>vKG3F0fC?v5Cl!lL}q^7Ol{{lLS4&J*jYg^K$H+G~V8_&b> z$Zp&yP_+JahycDnXg>}AHH>NGML5K?!Lh<_T_R&GvHnRG!ZSK6q%wZH=5|~uX~W`X zajwig{|i!@50SMI6XyX8))T68^Z2i(y$8w5((9K_+eaB}U{Mx)%d5Qktw5U@L#*dI zNm{zveE|hURjV@BUpC(?j&{3LKAwI>P!-E(v? z(tzflNu1&fmE}Y9NrXV|eAcWh#Xd1xvM2(qWP?I!J>>WJFVP=PVg_fsX)}y6e_&#M z83$bS%mZ>15mx^d(v!073&wKAM^}te1gd1BjY&c@(p=-$2avR1IVZ!PJ2>gBe$V&A zr;WM&4_|czKT6qg;)eLi{3F?66Uj@fsmNA@(R^0&ioEb0in|L`&`EL_Dm~nE!XOm);KSBz@Z z?mXSEnjb!>;#-afGT7E?Ky+N2I(Iw2s;1|4GWYPMcb!jPVEzL;B8`CGxe+q1#~ToK zNv06+iwfo#l8qe%2If0~PT)XGYD{c=pq#ivLOUA##Sg4n{;`Y=5RoK;K@CoguNADn zIWI$q5TPwqltmbm%(-8KW4xXK3EqMuyi&IN1k}K($kYN@TIKj0F$Tcr0CL57s{I>H z{5M}hza;YGvm4?L?LqZNwg0LAHGx`F4GW%~qD+D|ytx}y8^W7~N0FwB^>_7dJk^Kt z{I{@B3m~r9a-Ydi7wf;oz#BYT(opoI9SztWKQY4x%;Z}x4pD+c$uJhV;Z#KKk3#P> zg8Xr9(1Nz4$t)3>NPG{*4DDh4Qog!?SQI{jaKn3#5Jm}K($4SxxY1Z;|7%NGEn^v~ zEfd)g2twW!b1v6{fc#zWsX8Vf!4TV3kgGz+_OtS%5SB01%>%_Qqd`*#vs&dC3N7No z%kJarB%v?>g4)_O_=}N+bx^DdHvk06 zT3(3o+R)j8dK-CRU>rc(Kh1y*|i#hqNVb{M6Z4_fwOrBe_rjO641X+>%ph}#BxX;J7`5QaC*0s4 z*qc&%R`C1C0a;em9mG?|TWQF&Z^OvsL_L}bO|CU1pL5yoXNhNIU(dbV5FT`@S+ zBbm#6bz=81M>(F--%>Y{&6~hT>P+BN@*F|(0;+lW5^m~4@keBFNXDvZ%;Xz#W1uJ* z(0Xx1wG94s#YRN}y%;BKHBE)e$WwuUK?wcP@bmyQw7xXd?aB&1%AGIww&IJ7+tPyr z$1EL`yr;Ydt`b;zy;HN^a5Wyy&UuNJU$t5MJs?yf@26+&bB7&0zgbw-gMhmmLo2jd zGRdVvOcBDB5EF5Ehc{M9z5ItC%Np&F^&!Cg0rkV-;TVvxQkTR<=aYUc^Yw8N?1b;) z2aw%<6#GSMiG91jh9JUrt5j~p#>TMG$*1N@_~DA7BT~W13?4<+;Y-Sp>!zYe+u!Zc zii+n5p&=Ja)yMVu%6?l!W{O?E9zcD`!HYTMMybWhc!>C-xuC{*7Zql(W)v&ll`3-x z{M>s`FxcCsQlf(e#KA245D67wLm%1-4*gQ<=b9<*!tRb>9&=pvpA#<;PLqY^Kb9?B zM$Ax}VC}XIcoGiS8?dSemxTET*x}W8l7gVSh2*VV!q9_($)wvgp8M3r`yU#g(4F|F z?AwNeV7^rb0@4)0+MFSX*&cKW#CcN40y2kE%z_r=-UD+@;r|6%f_=Hs5Clvy$Uy)I zC2_|50HhGg>2Z;T_Qu=;=?oD_I7a%#ju7Cf0DN z$oE0S10`%%Chh%tT{52SN}Hi?v6UsV;lb{ zad`fl^Z=6@2hfMf05M&Gb}{uRq9x1W&%iRySy}kIxCVK6C5o2wm0d;^OgFB)vAWZ# zYs@DwXZv{nr6~XH!w*xkEKHsy1{_KWCvNSukrp^i)XT`jX13u|v)FL~mE2UH9neL> z-wo<-8r@BFG2>@}ks?p+@Xk^7bQ*~!*SEnA<--ha&`_BDn4MieHc*iGOgCIBsP){x ziEbv+G|bchNY`Njv7U?Q0wDLYeJeVcZ)6BInld@3{K$aA*>^GGieJu}!tzWK)vIw8 zKfN}^u1tVmsrzf03BtQ})9t|Fx0e&hr(f0Go5)Q%vqX@lQphi%Hq4kF?>EE~_@xnQ zwLGE2AXju3zERV0dfsl_d8Qf{Oe@vX9fd|Wbob>%4943OmehSc6Fgg%UZ=fspO@a= zm_tW`a=dgik}n6CN@e&d;Tu|Lq2A=xhxmx=MRx^p*6_VAuvfCka(=}Kzn7U1T0lCh z(zjrj>f&Nxy0OzoOfX1bu{w&}?kJC><~)|aZ23JsXmO+BUQNt44>_rW2@!z?%2!6V zK|09I&|y@)R<4jnT8eXXt}S{ZCY4x&ldZK?fHz^{xTaSt@U6~Q= zR%_>jW$ri4G&$3Ll>W|ELqliltr=1*JyqhvfOqr!gYGa<6H0USq8g8!~NC2Ju&&Nebk+Wwoj9c^u8L)@a$}a5^z@`Lpa8 znXsd{)JYUCO>_^=Bn3`dYkx+RS!TS!4on|vP5CcLnc{&0g_arll>XH(`i2TI^J`FV zvgnf3Qz?cqhKk(sJq}S@pFh3vx#hT;?0T^MkkER&-T}CHDJj1^H``B(jkpCz4_INh zy9gs;)c|YOd-P2U8z2|5MWY|7SgL=l>S; ze!3(Ex7YzprXG*11{mYVvdnwiw&M+g(w!QREC4xw5_lDCsSO|K2RWu-rMwB-D%RhJV(nu~Ng*n1xvtC{TBpLzO7s`QD)AY=b12HLA2VWDFT z4d8BFK5J&Rb_98=7$Pr8$A#+x?^*h9xAS$W+B257@Kz<2I0ewvjso|Rg^PybP}l2O zgH{_gUiTzlbq@bkRs*Gtip-$B+a;j=+*meA*UIQN2m_(%eoSo~g3G1L1Ha#w@e`sv7Z*&}nbCnEuC36aH`gP&Dt zKy^kUZ|-DXK+Ocv#ZS8d4aTj!+kAcO)iFc`IY%#~)Qid-jJqn~w4BdtKK%;Jc(^_f z*$pC1t3#Q#(pcAFa{epgB3S|V2dwcA3KLEj89>e+FW=I{A;~&#+NQsFWS5n@>7Ata z2M1TVyQl3g0dSESbfQ!#-#+5_HjC5t8;!e7^ov$MQ9T0!{2sqafsHt%C*dui>PB8-{~DWVB1o>X;p-F;*-mbdv0dBsixT6{1Efyq*O%G6*CMn-J!3JZGHFCj%K-1>LbtE&`>|}NkqPVh(jHQrX8T5+tGoTI4X53cqjqPg zHb!o{fWZVrN*ae0JI6O>{kz~g@92~C=R(wZi&x3Kt8OmSL)|yb9>B4+0!Ar zFNW@3p(9l2V{RMjrd9TbFjv2D`QkaMVyK16_3oQUYrGaSn{?*+WSuk^v^veRLDtiF z2Hzv_@J8Vzjh-+UavO)8kfZT@2leMy8af(2 zTYE~a*4)``?S@5Fp9g z-d9>^@Mjqjl+{Fyelhn_CCg z_+22(f8mfP>bW&pRYzeTI^DQHPy&WK3Ij9uM6=)Xc{I}H;7p=^YPsJ&FEq+7KL8X0 z<~a#*d-}RDYb`FAnzfr8JTx=AO;&us?oR~k1SO&YLi5=%6c0nAkI#8EZ-~2>R{He$m&V7j_En%e`o>3!N$hOE^seXn zO0K<$HnH%ozFN0?jy6N$t{JT`2diVgIoF4#wk#$2(J^O;XDIz2B^Uj>IoAc z33SPEyE(xa;g)lNjiU!sD=@%HpasTX3o7ZM84X_9WP9p@vPQ_V#o!fj2SAs%dxovX zZq6^FT^kSpT%}X`2axFjGB*`70Rnk%M|kzeL6y^Q!NRy*)5m;Go69}CzSdWl>)#=c zQ5&);k=cZl0=mRcFXilweUS|HyWRW-`tVb!$OO~p&18e^(aO)J3@ME0v8w$+mgoC>?Fb&@dZE`Q0zxEz`{Y;@jp@+r zet);+^t3bbr<=p&-G)+;eE?I)!-j-|fU0ZqAC`6`LDc{~x{BAYOeJzv_J!3hq%5*L z>&ti0?ZUwPI?osz`H5k#Nxk$YZ{3LgNY$QQ;U#V{>F-uv+Nu|IO8T1FEU{C02^ro) z5oyC!eS}}~#i42QVj^)#oSeUi)!uVkyauH(J3aJGNS{~trrI=i9d!_=hb_kzXpSa- zcy~lCJ#KgIh9d59H(B(bxki+;kTWCfXE3-gap9!d9rv4YULox5QPcM0uLojmw@R|3 z>Grl2w9z@5E z(;FKbn{G>#1}PwO00E3dZo(md65$rSe$aDzCAv}%2&!RMF!e=~PYD#@ zWthFHchH{7wRAGSFs7+T!7kQ0>|HqOK+K7{l=LAs!FBvWte;<`tVCBbh**ArYHUF_ z-@$7T{~se|9uAiCDnrjoeon>RJPT}1A96`W&;w}%hKf?zDzxsy1Qh-Z$lCtnlTzC+ z^gwuN>|@%BnsDd?R3iYH^aF5x_EdRE|wk;dxdGoRFAlO7vFvVYez@z zMLScB+S$LGkDWRzYvHe`YZYbo5H{hj1FxdtpO>c$)C;bH-lDNiRT~y?W=y8TU_(&- zKtfXf&44bKiG%cfYFTAJu^h9K+GC5pAK!Gwtpa^*@(xA;v)1A9_D{tJq-xrmpyCSD zUI1P@me7EnAP|Yr1@oXFVLz?U;WZ-=eULEZBdLv}+cI-cT}#*G11s65Bp+i>v`8i2 zs_(+=&%~(syExT-f%hr=&`nB!EGt zCsqy*>4Jzog7+to*)G2YeiM+{)TPbk^KZ>&DY$)Q#Tx%5v%RBpJ+#f&{ERMNfy=z= zK1FT${OS3dE)#=8Q`6gI4=+h zp#S1Zb-=p-Z3#G=tk*_qnIyhfsgI@GGNMV7il*2i?gqORss#ngc#T9!O;Mq>m&VqZ zGj5%E2TgyGO+T87z~L%_q1Gw1@Jw7oTN0gaLiEGTFU_Ey22%(7s_FrtHJcp-&Nq&W z3(7%frRh=}*i19`+ghs0I{9x3ic2p;rD>mkxf6AM=XM}fU5fC&Q&^Gh!ahpZB*Qwd zB&7!jc!Nrbe+8cg*@aU}gUf=!y=H>G)kgv;JO=~iYs7k^ga!bnmAe8s*l1c;`R#iS zv0!1}ZO==(IU_Up*L|;#EG@AX^YkaRH~H;NwWA)(H#Od;-*tY)UMA~r8M<^c2UfvI zswr)9lhhjQc-LI&3Nl~M5B3AB)~dtK3v|Qr=d^fSrcOdS&Ay`}LAiuSvOApTZ{y$JwEuOw=h-%{50WIq#_(WlV~ffFTU zlu15mMgH8M-<@myOxE5$s}^)o-h9JMyT)Fe^pQUIMI@kp8@&dE**|7h=+ zczum*4apfr;d#ZciCu_2m~EJyh^VQWr7R-TOg2F%_tw7k{S2Hk+RD@iE&xDgco*x~ zf$AH2&OQCMOSwf~aF>s`RgEg0amos}dU5v8EE%EAMga9NF7WQN!_fSDA-12q4KeYJ zYmzRoPHkjO(%-bCo?%v{5862p0I*4$1|f+Q*aT)~&(FDxG%Z&8M4PJoS~QJ0w6=Kd ze=hzaikAmqxBdA6J5y1Z*Io{`cOj1VfQfnq9X2}b8MMptb~itzZlJdHh^~ zrSDSyCYBUldbiD)jR4o{x(-P|n6?hme%EO`>&vs6O5www?BH$a>% z2z7NfgZ31W1c6?FwCM{oBP|_aC|TwdoU$<9;4v?gp;OQyh>*YSY3WJf=wu`2g+0BKwBBX7P~4VOI%kl%Vm|P?)Q4LCLb~cyVvSy@hWU45?azqY z)biBjl{#j7q~p|!<}B|suNN?{q(=0)9K2UmL|9OFyQ%@jgbxiER+`R(f=?qml3mHGICwrHr;8RR%< zeuXHBr&xZ=4h-P?#$5;kqoN?EcgxT=jP|xtbR|$Ow`%>O-?SQ0)M#%RU<-{FZ&GYQ(SwuXGb|Q5o~*6__2*E!tD1 zFBX`XPL&nc~b(MB4HoTj(E0lAuBz$KOkxNoE? zu_oWp4RG$q3&hx9BXr@Ezo`Rj+ezhH+t5BEpFmQj&6Fxk5cJ1jsBE14&~p^=55Ca-ptSGm8mm7RC<* zQ!4;95ir=+gZ;q}$gE85F3~%~H~QOSZC_5q$8e?VIe;X=G2wE8x%rs%CA0lOrITlw ziH@G6M7)KXQ^!i=ARL}0Qk)lz)_<*xDGxZPL?mikJBlsS4dN@x58ejC{+>ZA%p!Vj z#!|h8T0f+H%J}@%dhB|A%>~|tY8_LItS7953cBR>Dj+kI$w{8K6dn(EABIq1DCX)w zf@Z#-pYko-neg#%?5s_L!e>u18`zbV_S8N}wDJAe)DL%9+lt~JmVd}Tzddb3j8DG{r|> z<)8ff%FnOgb3GS){oe_fSDL((eSNwzAa4G`p(HQ>71_Vg-%DYBiwcAN=w=S+4rtjv z%l5!HxeyaoeWipN1B^X-P3^ufxA)JohM%^u*FT*;m*u=S+iTMsD=UlT20Noq%SolP zxE|h_DI)kNy22NyfvdhoEQ!Fi!w-ejZWReVe)gX8EoGhflshClgL$Ibo6jEx;-7@& z-BBJO-!eJPc;g$T(MmQxw>`G-9P{t{-O^N)Nysp^)kvB=eedfGiGUy<@BoQLHhzYU zuWkzJ84weOtu=9e+Scv9{!X6s^p4WKtDwU}@r2PQ%+Ji#=jn4bdgd2TpMR85ze_*k zS!c=V&xxyL{YUBO1S$_b1^QcZ@z7puIAN`B1a2{$|CuEbbr#$(!d%t0ZXIYX$J^jA z;daV7nHGf^fh$Nl^|;}AvC*e<-E~i`x-5@*p2u8bcE}Kb1VleTD-TsW2J*gdY%EnR zsygAiws(vy)?6Ms^6knDaZ{NTqV?QfK!M+^m4zIa@|njx85uAnONkVL3r?onZN7Ug z&p;TrLyc9!yFp~O+Tv_}?6pQkKx;@f?a_3NzSM#r=mBR94nbbAdG;ZX?zkw!(nrgg;n2rs;-P3TmmlCU|t@()Z{c zZwHjy&Xf9PLo>qtQeU+9rk=fi`&6fugr?Kyi*Mq z%m_P4ilXR?KrUKz@sD@K8=NgFVceiDBwl>gy8dF1)0{HVpPkUEd1iK7QJ%4RUO_D1RW$4dR9e z7;Ty(fON?ECET^go6F9Lq^o$Za=ONxo;|P-pBljTayye9ca+eWS&CS` z7J7}P$ulA48T0(~`B&9mS9WQAF7R#p?OGS=qWrNgtFsq-ZJ%YNjVBDJC(Go+g8^{< zYf)g)bzviTbS(OkFJEy?t~r8WQ0U~SUz6ihUtbF5V?E7rYp<8KwbxsIX%e<}#1Af* z5A&I9u4-t*#X~Pw{>qi5w>P1M=g^?Tw?KIi+5;%Fw3~8>1BPJD+zr27?xlX#tZ#MG zsD{cCF-~QdgN9*E)br<=K8-}(#~XD6JzLkBKc{EgShLQb)zZ)Y*|6c5d5!(T1PA=j zgmd-hcV-O;7EAyf9EoTOuZm45YS1AWk59JBXU2qo+HGF2LfJ$CNzO{Q`|P0a{3>*R zP6Uv$X{C9My+nMFhfoAJ>De3otJ26Li>3tH*M_e)n47G*7LdD^q>5vn&+3^{dyZwt z_{nKUM4agQ_u2!igQwTN7?SErJ%gKupAMba#1RtVNTb8deffhZ?Lb;FAL}-uqjcn@ z6&j^GbWo{OwPt)q=k*2aZr0ioZ?B8j=ig=&ZkQj{J+F49!1C1Ft)^0w(Vh&lu zu;1|TAgalrG=QquPSC+C;D)|t4%wa5xRl=y)?*z_7}uT)Z;x_`!j6hVT)oyN>+Y(` zKlb|KmebtBhYFfko|VOjJu9GN8SHArA8S};%0b^xKoJA6nNSSo-|o@CkkSKIQ5UWK zt>RsR#&iP1mWSllX(q5QXl_zaB?G%k(i!W06l}#~P3F&D+vzNe` z`2?ex0%c5!eoc~olLxk8d)2q#Y$Nn1J@O^ipr=t_*8U@Rw;xSO%KWoEA>s6&*=9B> zF?FWfG%XK2FqA&(x24QNQgk}r%L6C0=oJVpi8m2BKQhIL@*&i9Bp-dxzUZd^-h1aZ zy0|)W^OKEql6*%q=8x*X@EdV;sv9>@ma|)*{cCiWfz)|mEfdR`h7q)Qx$FGY%j_VB z#o4NF1Eun;0zJP!Z`(W`q+xs<(+lrzV{3ePkD!L?7@IR0_OW8nnR~CGVTBs|5zq>1|?pD z<1>a;tki2DalnsdymvpA*#V{?t{xlmJ{K&jAOpQ7M8RqlQJNOFU-s|JND-s`Dmq9d!o*mFSV)hyWOK)^l%iznqIt@WLQ zcCu@S$it_}{KF~))ck9qvX=mqkd(m9W*J@Z$JK*cN-TOXF)ZSfe~J>3vSh`^EckZ@ zzIYMWXdjK@wwxSqa7GWdeOXQAYL7-O8zGlO9c=AL^$Yo^cl^?d(;=f~%V z`XRlRd#!b?>v~`B>-5Y^ZnGw-ud$+ys99hjsv+Ug|CBo9;j}L^3Ip0bS`=*QatE@* zdj#Si-{D3TjLSm5(9QB_+S5JNH+|U=x%gi5Kwi&y1-E-;5wx!}oB3~2GI#eLFK_MU zH5=SsK6g;m(O_19f*0m23vtoPpp4_fDBGF9t90jr$(8sdoG-&vVO_vjF~erxCg2SWjy%Y zN+OMqiYu*>A9tuL{$v0zG9pae)OvMu)E!)p(+@CsaQ{Pc8hUN`wa4yJ+03vmS5NJf zweqLvaLtE05;1L;2X%pYd|#pfC#gr~-;$)7+v5?8Y^7>=@NwFW1cQzjmYp8!jO=c+ zq#3Zk2eSFtPGlfPabcd%XVN6#L-cY$_U5C#&^|InN*{uzDgVkiGmCG`P8%Aybr_C!7L%XK%%6SpI0aYxbTbMn?%o6vh3+0YxGpeK zxc*AF#rQvRjo(HAxnP_KHW!rWDrOUT5nDPrV;+N;I|Sj7tIADn7GyaBff8u=sFP$ZwH*vob(qKhAM*>~14hg#Kt+nIi#&NUqUD zO6UM?E{UX0h+60cU`2mfZ;fjwd;8~U042Sky>s|;wN^&-XZXlu1}c2(C)4?M$q7I zp2OiQ&WwAO%0V$?ltblU_2@Pd5STj%805PLJ26Wcn{gAIB+7Pr<(zVlKT%wGnvUHMo?2<)3k zHeq%Jdr zbu)6fYO4ZsNkPQ(hzm5GNEuOPV^-1aWcvbRI{_9$8G-SBr>eo|jdc#A%V&cJQm5*i zSt{KQ#y9*nz5KwEwrsrU)%PI?L<`oq?g-G4KS#hP8bIO;qq8n!{QDf`1)EPK@FD}H z=rrU{qUS_!6$>-%wh*m0cP7mYiE~v0Cby{Ci1vD)&JTUb9Yp@eh|aXmeGVc z+?tTb-0u0gxU9FK4bE#%?07V&Xr4-aa}L3Z0j(mo?)X6-))iDng##75D_E3Gx^O41 zW)^A=;`@ci6fkyPf6sx&9a6)t&lRydUWhwNuOk~{dy3&=WSJ)SknPV>JGom*tC{sg zZgQ4L*GjGic8CssN!SnieilqG9t72+v6JWefKq=)=4sb>70{2?&vQ2kHC@6idEQVU zCJKbr!xsGk6@L)O&&?iKrE&`NhBn&`1bWc|`2+InViR14g=O5mJQjE(?D-Cm(v&+L zqRXLM?x7(2yB)Fl(}(|#1Jh$~U|3alJH5jds#aG)>ChQ7lJOaHXSjBPG7R#Ejjs%t zI*6jmYK3ujf!d<&`QEHMK4-1e+=sFRSxo<6(}It=Ox(#9){{s2W(Uo$)SzxeCcS@Q zCD#E&;Ih54zKqM6Mgo}V1-q z184T)jDg&d%VoxST;?|pVc;o-reEVoAuz%>9G1`kM50N}4Y06-DjWPup0PnP>C_zK zTVn{d<_yyJG5u)L_vAQDVUzhz-=o;#q-En*-A(1tjB#Y%Pb%?-M@i?PgM9KU6qsn| z4JO(h!^)pM+*W8erb=CN$( zr;TEqo$m}RTwsPkrfS36XVM6e4pCcrNDBEAzgFU-HZjFXn#qsct0qmzv!N-3qF^q` zd}x7Gl$h(7V7tYbn-XPIav#iN{@v!{o;Pyg0iHR$Yi*wgD0^g0YZNUwj2PHPB~5*A z6f7nQqttvLQV=WGRO&iv~8GQZJu(h z{C)}W!^m8{Cm;lD3iTV8wsaqDGz z)8CzN=7GP|+N+~Yt%RE98NX=r-xh9>is~~p;bS9H+F&LSr`#{R6jYh-G&y|fr~IBB805DLtCSayVcHk`6)5k6T0F(X zbPusetOm~**@5|eV8q6%dU3$a;t_+(@N*Ufz-xDC4!X5;|Lj`NnukXt`33lqUbd)l z9*V-VDL0M(#8n zS(619A_w7@onhHhdNv92s1|g&228OBIxqJgMm1h?t4qWarHXPE~)Me zJpOOvKwQm%W8QL^y^N}+DgYe3iy{ey!Qi;e{U|+Y%`mT)tDgfV(V^Yii^e)%MRrV+ zw?F>@MtSW|Frs~&9!ZM$A5M)1^Zdqc9>bCu*Uz*ifr=-XwhUtnJZuO{>RyWhT<&fONVT`0erpAQ@b9Rp#re1K8i z0T;MsQu3rbE#0W)4t#vVFT2d|cwX@KT#}SDQbLwMehu!+t}oC%_}64dGr#&gO*HTM zZmGU0BsX&8>WwETIkL}H8}$}64ulB+XY&uBy7!rmivzpUXbX*?45;P@^@rbuJi0cO zQA6xEwT3UTUmw%F9&G6WVxQ+f1w%ouI#$;Xkx!MseSg+1{D!ssYTiQSHY9x!b+%Jn zD5x1p`>q#(JVFkN%>N=fNX*-1ak9ZK*%R6DSW?MkSnZ_bBZ1WHx9{ZCe!iwnu#=S{4+5t?_*1gAYAEG-{E^6}az>GT*8bxTa^1@%O_$66D_8}Ey|HSI} z<2F(!8CW3uIP`*9XZl3)4p^2ir{&3(!LtQ+L+<#S43mLmHIPT#)DYHC)j;=IrB;avS`5hHyCM%yHuPEES$Rhy=uT?v2y zJSo4!wYl4b_q%z? zjr`)&#mQfT2UlZ6cK z4Dei|2^-O+L&yc?*zG%3MWf|nf@2(p=fugmn0{dJw)ZXNadG`9edC&8;Ww@+b;2x9 zy6ZFTRCOhf`Om%0u>`5~Y1hk;8)05S`fqy9?YRw_+UENUuXIi9xr~#;>bIm*#FY}q z8Qn~vQLJm7z*97rc?eL>G*9BKo>1aEV^WKpcb&yj##*-7J;d^?)Q|~;$kpUOyW^-u~F-s$G3x|IVbvL zQo3&x`WXl?@|G#*Do+EhkWz&SRo#W7AFBAS09;)Y!d<=D=(z}$YjJxm_c_EWk?x@$ z1S_r&xJc!`e<8L~Q|sY9f?CkUj5@M>)|DBI8CJ7^NrqGXr6u}KPrI%h5p^usj^}lT z=+ch8#zY3UuYFqYXTS0*vOH_5?*I6frxWwwc;;(ubLc2i5Ayz#XKJJc)86Tr*Ss0Y zWM}Dsap=1O3Y-6gr9A9zJ+zC*^=}U*e7ao@3UB{|Ie3Xqb?ENW- z>Be110r?D1fsbisyVF(SW7hnl^KPnxi#!Fi2R#?_3R{C3S@bC=OU$f{B6B#~jOd?& zanhOgR^39;h{M2TVYTbDRqkwX9l78jcxwi%BVpo?KzPLdo!q z*#OoHDrbNZYZ~4LSfNJ)sZ0{kM%ipw@8kE49hOIHb%>KZ@ZGo%TO~a8qvw@YN}5Uc z-QA{>#&%CrNGDSMd${!1mnfq3Z{Nc1q9hEjqpm1Uh%Ki(q1QP~tk z&ns%2IcDhN%M}4{Uf0m6h23c|XiV4|%j$yqH^NpYG3@hgmzn?r@_YV?x=}e)TaXf4 z0cDDj+zs?oDIr}K%9|2j&HJeZs77{a!tMMwKYG{+bj{EWq?|4(>z2)mFH7s{ ztVI`_Q?_k_G|xnTTcfZ_v)_PVUIP=~YX*`OFfj)JiJu#cId zrK1AC?p5CptU*NBdTWk+4ce%z8|a8v08fntDuT+TK=Ay5Prr`15o8kqJ>FL#S)zEO z%>UKZ$yfXpC|+$4r>Q2nN1QmzoaISuN)|i{(WbZes=2w5^euX+`SjQzlRP8d-c>xZ zXCO#y?+&Rjdz`#FJk(YxD%Q)_zP`M{M829ux87$s-wPZH0q||KzG>S zGbS~!SLI7lTBSy_Sw8Nov~)5uwpI>jq-0fnvpsY9jD?3HC-*(&C-#s3l%CgIgB!+4 zwd1~BGoVKN?zp}!fQSXaQRir6}p8Ei(WU^=} zPf{~ulS=cb)|%|X9-*C+))84_rIgtTDhXfX%=>bVKxh*x&m_i}vp1GX+ij(m{=9~Q z%Pr1-mZfe=b>H;o-RG`yjS^Ej175#cAk&HHBwjwNdzhkv970XU>RaX*$8gocI$eI2y}E{!=P*(e)P2(J8zI3ISg|Pn~#k@=#>> zhu8jhubo(T>A=OG=~2%r7Rf&`+GKdfPI6Fa-uRS!Q`kN_uJswNBHN7Og??Iv0?oT~ z9VI+~9+7tWXa3_ESJFE*Utdr{VGbKd5Y+@Sxghx3fA zCD-rRS^BY4;H=wPOXA0alFGAc`3+PvQ4ldKH6bsh{QAll4h8v{bhUzmX?n+LNl*G} z+J?Grj_Mw46r z|7h~BXfherJ2xtExbr8PCdII?_|E46AB;16CTcII6-6C=wp?MhC50mEnjBc%Q37a% zA*{I&r1J88ayTE@uf8X;Lp)1^sCR}83rXg>kKgsYf|o8-IOn&$+Vq9N$w>*%KN6pG zCj97t-K^O*1)a~N!Q1GAqaky=cF8z{j!UM8W(uwG&Zg`9e#G~hklX2vZoYo(?()!~ z>gzQ0)lr(hhQ_~~;$_p)f{mBF{cUV*R$P0zgVuCGMGge+cr1*eo?xakFe4TMjbR)- zh^{0xi=lRzbvt$s={P5qbVP{u+(H*`wKrpXh+5CC zLx)){xvI!l(qPyTiTqN4FIJQyS1H?sB6A@UJjg2(pJd{r7Wh6Gd;VF9)l_MlT>X0 zr@P(^{uZG6xunMAb1s;A4S%f(W8bY~mR4EYp52pwDSG06cMvG}pdI5Xft`A8>5)iD za)6X21FGut8YqcbmSin!Xar^CoZ79(oC1GfEulnqUK^y1{0`bY=sy)VbvcI2qUd<* zO0}1zphT3AOo(N3bDFzNQa&4b7YXs~NynBBHWb~X$;9!ekSSK1ICJk|$IVAKeTiJz zns=h5Vuyn6BnAgl`%z%OkqHhc2IC}rQiA#Epsh3&t(&vsnG(sC%g9h^$jimq?+ zEm5st6y>P=VV9U)>73>DJ~^C_5uFruPkp8TQAK#ivr%jZs4Za}AQz6{p0XXA*`7>k zSOFUSRiA-O&39a$;?^)}?E}d2UaUT0JyyKFrTfZM5u{U0T)HijLFJCKxMSm~uj@`~ z=F35ZIRW`&>nG81TqLw$I@ zrLR(x>zxTpRSe7z>-nl*+JEU{YvoLB_(Yu?;AHn27Yw0}!#=DHGQq4ieIfL1(K&}( z7k$sV&+u~Ux)N;*4>+XKP_Ye7zVTXBjDRC&Px|$LtaSFC7fYbuk2>Y( z!4`yHRveiiweZ!3z6(%UCD@N5khzU_2l)TS5SQ_JLY7!8;w|(*WenRnQh&o!{pRjh zaCKh;r2N%I2RPKdiAZmFtY>2EZnh#PSt+=&aG_vO8QvxG0=}sqXzQdUr2#9w<5-7{ zPf`-!YPe{D{0Y<&_);H;6Dh?D9o{}#Ajgd*Eimac4#xX!+H8y85*vLja?6>Lr1&eB zJ)bKm-xdn8X8)|(TjVfwV9OK-yWO}VZ9&a#2w5#W*IbQTH8EBCx-G$Bd&y+*=%Al_ zn2)PKI=cU1l`U^Y&$$&vIXb(Cy%x=dG|z|E%qIYr2y4gMdnlWNr8p|kC;iHU7k=E~Uw2Wi#qpPQkNzHXXvlDQ zANOTLB>$1r?7nmcGZT*5LM;hZbfpaOVfG)@vhEJigkO_1=W&67IiNKk(!f$4+TFtr z>~=u=&kGk=73f)NDSFlB5n&X!+6BF8yO_bQzu3_dQg!Im`|!*?gQk1b$qEMs1M8iC z4!0Ps>d+7`YI_vcLJ_)R$4sZHZDl;2pv>!5(I4V2hyQz3 zt_ZSqd=B+o=}bUfrZk^k=tP!jXcR9z+bfq|>W4HO(2AI7$}|-k#xfX2gs}4jUR@P& zJ6AO=rq^UoSFph+Ap;%wGcZk{-f)@Q@ECG&4=Bz&Hm{E|F|*Oz9G!jQ&it*@-v(n1 z<@C>}nX)pOprc#ieO z0fC3EyxF3x{3JOxH9tS|X2!VZz`dQ%T`!u;kF0=GWstyJX*de&@FnrY@E)u_V_zQw zgX8=Ytl~N4H~*b5YCCA;5#$$dk^nO@bc(85rxw^Ot9u120dAHxjC_@Z&7392VE$Mr7|^hr$GF33VxdEcsZn5~r#VN)enu+d zB(mEpZqKJSa_TL*HQikw*Sd|*{;gLL0j-Z;z{%6;@96)h^ye>yPN~yH))_PC1i4Wy zvI~UtH>t8(f@|_hI_^zH=COjWk`BV0ddA4)X5nas%Z#Srw^zPhPcsh}XG~-~(mxmN zXs`1tc$ysr#8sEF)kxVN2m}9Ljus#k2y;mA(E2jqpzHwkSz{m3H>SR%`A=nMU7eK{ zO^k_5Cnqu=~SN!7{RJnxF+=VHV+f~=NaQe=8RI;s&doQ> zr_NW;jm)v{V0SP~ZEU%TDP3*FrwvaH_N;s9V6ZQ`=|YE<&E{9}U(av4S}9jzO)da= z49fF&C?;C)2uV{&4kT`sKrL*~BIVlapN%y>kq(JW%Q{&B;>N0T)2vR{1a?A!+khd0 z5?4b8)@BwWbrq3%;f22+q&!zIl`EODAD{COr+nnSWA#*V3x7ZW#kh;|Ujw*xya zLc!JD8~i_GKxC8ystTB2FzlJ)-Bz9-4ul_fupU+!e#(^Vl1wzbSGmZj;0qMfQB7(Z zKUY7A^i5hd3PjFYw9Zn;FGYOkDXa2*rJA#oet^As0Q|-1`o7y)Pa69tcY8fmU$ZHw z?y7UhffEx9uum|qA{l0og6Hs6-|=yHB1-b0)x@Jna{~e6f+tt!j81aNH0bHbeilI$ z4j}NpKYzj!yT&yRXQX>to%}mIyzbTYznV*Q<+k6!8zxJZ|4ghZf%@08G}7rcX;Pcu zJ4t=w$WKzTM_}U(pHhB_5jpTMG}~Rdt81!fRcFKS0jbI{Nn%<|%DSsp_IO!cHq6m8 z8XvhLe}9=E2JmP#F^JEMh8m@#Io0CHCRrILfwPvzIO6v)_4~L}VQ)xA$qd~-Y`~-X zjfvkdl|^5x@}~ZR@5J6}(!*H$u5I==C%pgsx9EQl5C!6#Q{APBfG>j(7tXShj@w+M zLPF`Gpo?;Npd6U4c`%Ai(GGU-_I=v%^?TcAG}?Y{%L-zcH}1_+PIswi@oZpQ@t2df zhj%Vryz_$YheL;d%_;vp!tHiQz7CbUp-rnf#;%xrT2TXX;%au<7d(Edd(H)%T z2Slpwsc9d}H~}}ZXZ(Ozuk1nn`FhK%=CZsA~N%)tdG( zC3fQ>3(ehfHCNOHPBH-AAxWIIltkZ2l88rV)&fvZ@_A!ku21W}XToVtRPIhpE85SZ zqI!X9KB&$L*h=Z7+n9tWH(qc#*s6Y@*;1#~+}h51yLQx-F8Tdrr$KQv!E&+6Ps$>O z+8p*C+%JZjWvu4^lvbM_n#cIx;rkF{$D>NPrfFQ$&*PCV3#7`~#=2D6J&QespiiHC1UK6e>=V>*~Cjl6FWK)E_UE@4nLx*OVHlojX)MTERAG#u%fN`f0( z27}UEd8!p9!Mc8~yKm;d_Bs<^0wab=J3O;86oX_Zy(uG-5+P0S8{&ql)eRx4_OOCS zM(V{hK@b@aC-h?fC^*82cCZ`FX=iJ3r$-Hn2-?BCE%B7Q14a=z-Z9Ko-kHoz?6O^k z@i_@Nw+~OccI(7rOV2*(=w zXXs(7FyW?ODHr5ytil4h(jEUYHxnLil%D$Zz?rALVEY}_#-A{8jg6$p&eu6jJSGUw z>@y1eSoFCH6mHVhKA9dSV6Z;EblBq{nbnCKOkm=Do}S}WY-aS=x14W&J+bc6=pAK?!26LBmPJhreoLWH8zE3ejH7gj+EEr^7(h{oDibG=bSTLFHi=0(hVyJ&sQn zc@JTK;P@NCkOa{#4#MdMt#65v8hRWp+vpWphK&KlkzP%5zL0jE5BqVtq@m7S zZZf52ST|tZ%NSSB{e`)g>UGNY-c|&{2$bnb!2AA;fkteml`WKQ5m#d1vFLRVG0g_8 z)7F^2zqA#Rha3ZeCYO{AoH?)93{cg z?4w$dGprB6p-e)x_F~(T*#t~VP)iU#b*h>hzA{! zmCH#+@txcBa@=g>aKfO(PT~JYJJ>Trh=JmW*okUiVe^(Px?^lF{YF9A=)-QDk(qd)L${D9OOu-YZO`62;B8DFb#V;!7-A7 z{{h{=`M#bG1z!4K0nJHsCk=hBh3ydVj`4dxZBQ|e$r$-ay)yyB*XMH zF(~;XE5W8fH+R}6u_h@sv+Lf!!^z1x@hPaaS3X7vTYguV2LR=Op?y4N5DnF;j3$Z2 zT+kbdL*K4W5%(7!NT^7m8{ELB%3-xyEM{ZDVU`yYlNWFlw%Qd${-b!e7ufWL3tA>_ zYYyBUiKNIkEdka=A1CLBC=Fo}Gk#Lf7>_ei8pDRr3@yLjUmRVBo39ffh&U#PU-^D- z-zaN*RP93OU3%=)R8`xio@?`$INs48UKEA@`&w>psCnc-ICKoeh!w1i2(rGjzOLSH zlVe6iuVY)6gKm~#j%A?T;DOindNi|QbT4l4lk7&@fqk}x7n*8}L3!%QW8sgs-B#e9 z56qo(*GwrG;+zeG=-Df(6W#;MXAX;gGFKBQHlnm2rHNngBco#97L&BNZU{YdCF&EG z93$QvNw5g)aCV#3YWcJ$Blk0rz2%gr$bI7)4Pwfg?{ev}7YPm_?qEP42tzLN{fWOz2*Fp9!7xioB9qjOLKF} zm4%0G*L=88-Mmj#zN#l+zm{dAgolzOd7I(ixCeZ{{Z0%QQ-ecE=6#{w4iUc!Q0r0C z&&lKv=?qQcD{`-ts5i-&KZ99%0zy98-N1tY20%J}WN*~U!Zu+vZ+&uzK;7ru^;vbf zV3FOcuN^k#cAKrNcb?oaqbu3=+)jRxKMf=ia1j5;5aI@X=Md*L%<=yzc}?ZKl#~fH z0!6!~C!;>~CXD(7?rM)=1jp=6h$$$LVpU&OPMI)wX?qQORk>fZKjWTS-Byb_c`O?x z2eARn>F|Eg5AX~>OOw;5;dL$QG@yj59^w`rm5n|;$<#nA^t>_{>IMyS1%t_;>ZY+G z3fQfGPzDQ7w&737N;KL<7*`!N+UcMPK-DI3TCb)YqT>C&$Nb9@lLt3Wl^$MV&~wQE zxJ^~R{U5{iWO@`)KV(V)Sc+5Ag7oeYgSB8;*DY+Dld6Ux`d07kHl~DfV zY?{@-w9S#q7O9ZmMAMggUZe|^5yy#d@ z6QzFZO@Kz0PIa+rJV*RlWG~+Ltl}AtT7hQpZEki&SjNXn4?IHnA4xc?cf{v$@fj1ZCvV z;v9^q1hFS602&j+YsbQ0)j+;HRiVHEqf3?*C-*fX*MK}NMb#R}H{bT3(*GSFk$Z-d z=TW0etgL1L6@Y@HNw-_XGaLM-vwN6obd7yKy~;mcU0Hal>}^Jm{vn$d+wcEM4vZK* zq5OLbuqG$B(&U$%V-O%zzRsg2lmd*gLi>H)(5#kSGv!BCmZ_ z{lc(X+4fRt_>I`L$V--HG^pm`)VksZa#PnzRAGvGDvEwE_vb4yh|91AW zQF0(RX`;Nw)I*EY*0`cc@A7Od-zfggWA7S0ouTx6^;a`{4;3y^yt1Ya$&~>qRq_L_ z6NkYxh7bIp)A7NKtHjwir?O|m_q4E{#amI|dmO3x5OB7h%4M`q#NSfNT%$?#69lol&D5BTrxhe zZsYvu>Af2kR-!LoG&0xHx74H2F5k56^N-HD*xJ%Iy#M>!U4M)qtLU12fAfEo? zU&!Tt)#566j--c6Ol!mJ334dFL+AMot6WZxjUgv|&yE-zUZt|uCh7y|N5Ss$A$5S# zi+~r`tE@;3nS?Xpu8%{paw1I|NR}g_YlAm%AgBqR@%=l6BDd2f# z)yatOH`2GKt{KS4QZSLl)UTAG;TeZP{%mH1B!qVi-@(nMa6$rYVkBD3X)Cj1CKXHq zqPfxbC5Po<^huyz<7;vKtyRLc%of*-{dd$?RA)F{RoviOqYh`{3mz2bpoXmdgK6qK zwZMPuh!#ZTdr)%sf4=MA<@o(m(Ve4uU02&*ef+1e@XCKmgBPqL>*^!A^RqAA{ZZb~ zx+A)+=H%I2xt_ybJeM=6^{83qpBEI9RaB&XBe27sdu+?ME=_CYvoBs{Gm8v)Mih-F zRZV|~>!}~s(%Iuqul-7ou8dJ2wvhi%*rW3ru-+w>By~;;_ndOM~>p=E-eNQ;>F(~U8jErTM%HHF6YuZ$WauXBS0-;$OnETuiD)F~g1B+q`?89OLTj8NCM{VIO;^>MMv zb(bYbnqXeB#A=lIq;HtuEWdo&XdlY+mZ}UhRS91ieRiazyS?o;Mq|5Nu~UJAV;Lu7 zy7qM}fFx?BSk3e}^hB{h2uKM_(2$kXOJbpc`@~w1YZW+!lUvb_%H5v1+7S+Rn+3O) zZNBzEyr6m8Pq8~Y3E-Ooe}_ykp^xrFKm`VKg*?t`V_0R)j$FMPyL$F8M-|qY)&Xm8 z2Gb~;nf+GI`GUm>Onm%JrA@k1Y zb|0t*=wGI>LyA($PhdN9BE`t5d%lPN>KNdS|!U|v$q zoQBOCc^{FEUH>U*kuGID7+;^SmeG1#`@XUQKHzW{FwK?sHKOh=ArB?2^^ORTEm0)E zy|sh&9j@SpiGIs3OEQly*pCi4CGHJ56S&wvoppL!uS{;detU6ENwsn7Uwi+4*l(8m zcYEG~T83dCM{!8=fUSRY3go`6v=%&j;EH?7e8iN+YSb_@oD9A$_$!h=Chjx5b3t0l zKZo*~eVA*O?RcaC8tp&&%kSiaE$>NyT5A0zk0Rag;=x&sxt`sI>uHOQ4;?0p6+d8H z2aVHLs|l>eto|O9J=>C9TDH}9cKh(v(we6UyLYI}n*Z9Q17%@J#siG#FY7bwm98@5 zT>a;qPQKb#`Z(dfX_9;=)Mxh>_N%$*Ijil&xn5tuWgJInd85(ttH}b;^PkVr^5FJ6 z5@vMQT_#FsP606(4NNOY<@+VA*b#;uqIFR65^Oq9NfLF0@z%VSQB|;1>DfI@|6Jd5 z1puVZT)*!9%>bbNTuwG_{-dV(e-hPL;g1ua0v!>Y@|Hkd@MLtyF^-fE7oOg% zW!S2;(EF7Yb6qY`zPt~hmPl{MS|D00mB%lZSE6U9yl?whH-)MImwbR@Ef?|jcc|%b zmfA=h#|sB#eriExeOB>~QQr4W%f^+B)>Z({?#K30Y@M&u2Xrl0O?YxvL7|=AO-ZZ`2s6KDu*0YKC))&G;$KP z^xr{i>4706dWG66=ugWlYwjse`a|jKOKapPvmQ}b2c04IO1@={L0#^sC^hL34C>YW zntANZc%SUkah2~k)|vT_j1KXrjePFK^3_j4wWAiv3x25+}zsq0Lj+7b5VblMv5{2 zJ3>Bq<<*K|ljRAZAut8}H$)jX@~iJXYY2ZcM*jCGKrrpLh&fxz+>Qh|nzvqiKC}Jd zX_vhxYx|x{w8!Nix7y%UCG=C1QwN?EZR@_nkjPoCW?sn2YuRX^~KP{r&+FxL*=Iz2GZ(>wSpPrRc+S7HsZT9~nEgGe>d*JQXj z=QDDDm5E$qILL@b7-5&P09!Z@ur29^lWVr|9 zyn3%50@P_GV*Tqe%%~zho1lI$ul7QI1QC%u(|pLWejXAr;oa$_F=#RJb&Ca4E>jTp z0GM`ria+}{HxGr8ZYJTbgFxDA=fYa$Stw2M@~Mx3_ALh<*AfX$pfq_O^Hoa#7wRj| zF_IC5nz{qpTdagcm#jhJyjv2d9}@Z*;KqN=Bu&>u)HSZdbI5JvFe>s`0_(K+-p}Q= z=TBCss9cFUUMiN$KWz>Ok_-uGGtla@2p>)V;M<(4hz`XzY4$K*PgH*T=?|}LO?zbf_X_3=xLyYe_{7e z=_~ySkvUBaTMCbvslB&HP%v0VwyO=he#0TtL=E)Bq$awdb(HPOY$+)|8(&x3~!a% z2*Yn9)Fqotb+K4ToPi7DD-y1hGQP;5T@`Ziz%UK1G1HH+*-ymJ_FD0lA$G@5lZxZR zfP}8X|Emv-GnnHRD6s`i>lK%HUZVma1s@!ASPEjzH>4dps#7?b1hJp`3&XYRyVBVc z=^8K&IjLBZ#Yg^dQh^R7Nq+;15FA&o5ra8Z0oxr^2S=#AIY1{snX$ z5QTMPI5Slto@(O=;7cNvCdo1$GnVoTQ#48o<3Mx<0OFsMicb$l)(ip@w_6N)X2gL% zWnr@_iXA|`^3S0v5X-OB)(#r7jtrL?3nc%*n?Z$Iosm$h{J9(t?s!zZm{|#p8_1vVqo#f92ZaeFZSc-|X^tL;Z&| z6C{2fB_Ko-CAslAh(jQ#A@L!0PiYO#q>}0oH?8q*X;_G_{_8qGE1n%n>%HxY z7owK5&r2r@m2X0~IH>i49#+h)8*svN-I1DO&&wkmbv`Bmi~-s(LSjq4GaQOwnR=o| zfzroRXryJfg6Kg{^AoPZ-svM4->IHw6<+-q+t{_y_j`d3dR2R76~4$}E66JHIa}Cz zNE|-#d-4;neLoB2S9VGxKOO2n<(LA$7Lv=2m|+{gpc}Xy&oadGJ=m@Js9lJTl@+E6 zCLL7&-6U+61FBbYwns+kymIUT>uAkGqY2T&(CsguX5&vqD%z4hREy?JC-kz#xF(bm z@;AtV2@g8P6#OZ+c>UF)bAI%;Z^(1A*+;aKzV4Q}=%o%@nE_HuA6b#g(fFKdv+!?j z={8$C=I5_~`Ec>E;fl)XccM{#xxt7pJc?W+>Q1Od|EHu0Wa1Cdp9O2vUxd3wjQWtl zH+|ge5D_9GO7)NB2s?{|^s}ef{Uy5ZzS_BscD*|G<^hKW|jAMRRZ(m(;6TP&lTT>e1Q}VQ0 zJNvf8B4ESa+)t9_5dHPFoK-q*@kT42n8@YF?l>Gt^5G%!Q0|VY@AFM}#3ua$$`I%Q zO?gzyPHR2fX7aw&W>)(PC@5@Pa&kTL&1GSRW_U2D`RDV`9u=2#ZVXw(8mxPak=v*P zy_nhrN!SHYTiQ7Mq*?3~9e0nIG|8cW;KeYeKBNHScjv?5;4^VS9+RHQjYBjBF7Kw0 z?>q!rqB<;XBa`cH=q9DQpP1EIY7N$#sAGVo^sEz5-yuomlqy>QrEUi^;*6&&#Hr?K zhFiSzji`5_0yI5+Vr)mo4?nG#JOYFFqdzY(u6WOQN_LouxmlX~_2g=?Xa2?&)pFR| zLMSr;I;sIBISlP%zH~qh@M{vwW<4ZU#IPz4DZ$k_*Rin))G5w222>Pfu@i=#9y_Ne$o zvVf^64S_VXsg+BGowCQK2EMy(P}m|g^1a^2x1L@UKU8$L#wC|^`1k?dg5Td1uih#(ZBE$(0l>|_TlE7}IN)-VWWe_1M0y5782oPlo z2#AaULJ0Gife;`G+1Wn#4*j2V-t(UGyq}(Dy&uj8mtBjx+55hK!}S|41HyF5q-S;8 z%Um;f#GjG9137=J`(W8@Sk(|!^}0Q?f4abVML0JVerdY>z6s^zd5ap>PV{wF!~@5v!~Nz)s;5Gnzu`X_5x;kGCKp!eV4%+2%$eOpw$Xrc-EA?u}! z!jXPkgnc1EQz<|gK`zA*&818#Fd(yGHKL~RZ4rSfZ3Lzb{P}oK2skPMI=_TbE(TZ& z4;icw5h!vm5JN7N&B6uB!IFy#-x@B4H$CMbnm@yxWbGwz=j!R9r+SjDil0&8Y=j~x z0_i7(*DOCmpNhiB0_mS9a4`j0+VoWMVp++Y|ArdltLlik{1X*UhJ=s|ydQ}&a$bRa z#IVje&=u>i3b4|(#qAV$6>e9stXbi}31T?;2%y!;MJ|w4WgAr=fJG08zzs5{QCbdM zGU{U|Ar=Gz6{m58r8p@7%r++@Y*!9NLYIS-+s8?vT+8l)J zRD8rd+==-(&l#5%WFckXkQ9she2?I!J_uyq=3fYKApu#54KG)~j;H!fv)G_ngkn9n zfJ3sH;BB?4k}Kgs7opzMV8;@MX${QWF7N!7@h)8xuA#Q4X2l=DwuuJuo94WQe0}m67a9V z>#}B%mB1G?05#V7r&WZ6@LvIg3^tO?95X>(Jo=R5;Eq(YL{Z=`pGHJ9B^VsTf)0Ge z2{uXW2%tbVs)sn~p#?Gq2eldPi@=fp0!E=fQ2LQN6M6+86JzyqCOe_Rg&US$mSZ^} zb+YDPV6$KMcgkqil-m$Rwv!?b4~8}Z$8byW3XULDSn(Q=+&V+UToCCdC_dtECG@g- zW5H#;(FB+ENlmzL{1AN~oxe|S*c7WIh2~5cePCD~>^2NfZXF9izsOMzcOFqlm+M3H zz5XEAjr53w%$zKwS8*}#7K6Nm5BP%3;X#hzuP)1gBUtf4+{P&6!Ju4`y6kuZ(s~4$ zKjA2(B_lV*JaJa00KeS)L9g9>4 zLCu1-a5n(Q{xx_TP6sK?s%djDh|PEw=m~{!8kUYDJ^x(acj0fh$gj!|VR+$+TOc$^ zE@UPDhdeR^gz+VSh2a2G&8X#gykI$+zkyGD05V=c8hn5> zxLP z<}?LZJ_JNhe0mH{@r9iK8vTRD8t5N6lV0P%V#P5h$fpL8!EMMbtmKW!ZJ<|r(`}0H z@swSbD-8<&{oKxAC02UiSdcXw1cMcJfG?8PQYe+-|BS*BSgPZQEL^f+EzamkjyYmK z*VFZy;8C$h*u6oJ?|NLrnOrcV0PR1}ybZXN`uA;=t2V)ZZ<#tOT|Kp=FTB=NVF1Vn zLD9Jm8@mXGa+fj>Lqnl(fs(C`G=@Sq|35U_De&BXVRk;KH&A3x!ll-r zZUmArU@Wtf(~u5!UWY5ZxI!-d2|zAkQ)n;)!HAw=vB8+ug`WbC(*y0+4caoPC?-Ht zMxaD1RJ?ZvP?rCVcH*qFMk;iGyvCg00J0B(*EGVE84Q=2oPW_}mTweq89M<7Kp?^u zkQEYKPRCAt;GiZF2N&Z0%|xay`mYv%r!QTQr`$0tj6=W&0eP}l$Wt50Yk`Kh4#@%4 zEr`#xbJIFV-Ds_;&J0YML(n6Cw;2BK$j!QM~WF3)Q;3_&g^*4~Ls1W4eZK2#ra( zxwE9-lG76>yYG&tRuk-oJ`Bbg?msbo@-zp(@^iW3S_qw-sRWghNwDL<@DJpy`(RhY zm3?tbCGEV_v7CbasR&60sRIHoe!bAaUIhlpBgZ=7yPKYisV z#k|fhrUHZz7gb1)>77K*VKo9V1A)i&>Nl8EM z96KyR#lS*Y1dk!kT)pA_`Se%iPSQ(Nk_~*92%k~^O{N#xx6gHBG^tB$ns1fMYe%tN zE|Es1_<{QNJq5q`)}$BpEOXYna4I?MRIP%ctJVE8SPmy(#D5sm3yO;pI;Q$i4$!hj z=ggK_v{2R;7J|KzlRS1%dv#i05!HHSF{@(4TsCW01@s5lb+1=B=cP9wI|F!Tz)3C~V>8z~u5Rk}TBDy@JWmB?uqWxc(NC(a41Zj6Gqz@ZMx~?vmLD#? zOG!uLuVynz0q{5%yD6KXSe0?)oJQ8btJ$sR!uZm~&BnLOhXvK_7aAeNnG8IfSdr+6 zt83M;F@WR3wJJWGI%gG_m@+Z3`Ogb)vTvi|p*iA;nM&+Y0=^ZwTtxq)6ZcecvO_%>0ad3Z-59IJ0+o$XROP#Ed15%IIdi-hMXH<#}@^KQ>H3EZps z>U`{Lp`;%)7>J~JI7QO0WZ^3aynHD`(lkA5{2K2W(S46gXPx1dCB${kI@=d8FOT@d zmh5`H?6)U~%?FWk__D3DZ3ffmC zbl*Y$Z*hj*YLJPab|d}`;m?3^Ffv8d9pzcQYnpp$h_}O+7k5V-0|Xk4K@=>wrg8>Wpe7!I|<9#vT&r!%ZA!{rF~y3e);D;p*n|~>#R@sn1YY~ z>Rt-(Kt#=p({pOARLt%5T0f5@-{Tn#p@D+1iF5ITY~5tt5?cQJ`rhK;6Q z0NI_Ua$Yw@Pb{|O;RmE?V4LXYuvS*U`TOI6fAs!hmH*LC)&DB7msdH9VEhE7BWI(O ztsS+DC|hDOQ^M3V-<8WBeh zex7w_1g5j(%_1lFKL6Ht^YegEt!2WBUg4<|{#SL&X>USV(*sQmOyivN7wzU_lKHus(qcRcU>q|HD%ef+@*Op@kwv5QQ!VD=uX@0k&#p4P6y(ic~4=D}(Q+MvI8)e7DXt|LSJt$~d=`dz06$*D=Rs?8e-RmjONWls7knyzY zWlvDhU|C-g7rJK{xY!o^xwNNC@3q+#kZyX+1^BHE;86|a_69Qz=G)XX?;L2-x{!1J zht$_tRJ;JL{0tTnx}p@LLO_TL;&`LkCPlm#jqP`aHj%`GxM}vd&aAMtloa%aSm-n& zcH$jQ5`rP*#*U&JVKcF`09Tr9@rM%Ht%}=+RyrU5y_&k$W2E)y2}P-*5L5#n&Pi4v zFTfyavTO_ICu}QW9=Jpc%y@`AGCm3{?SsaxWeoWg*a8WSE6HBUL6Cm})5{U>gx$e$ z0MG%P^G?ydvOpAerfvf9qc8kGzzK!w3Gb;)FsaK|`Lnl+5G(i0pN>UGb^U!^Ch9yd z@E=NdMrX3lD_7>+KDVdLjgwyA_u)q3yXS66&y&J_Jinq+107NJJz{cndNn=p6jX5( zdKES=T?Z6|!(yq4g3=1(_3na!T7gv?`ye~btP847*n6z-x}nN^qq|QVDKK0oE;IG< z<3o|Jj9%3Z+o>KZ*)3ddVV^*-?4@g4&r;n(ifUv z3C4UWn-SeR9A`2lz?UNP@bmFrS}(2#&z=Y<&ZjN)fJpwpDh+#`$M#E?L-fj_iLvBq zTf0UL^x^ivGX4 zq(gtGkj#E{3h$#{Cx`TyU|OY|r=%4lAS>f(64KihpWk)QYPgH!kT*zVlw2q)$d{SY zR+!GQVgplS{oS@ae;ih_-aTCBT>4-3Rv6TLwTJxY#30VLyajRLEG97mMoAVWh${IA zU!{?asl=9+g>>WA`{NdTLokEaV<=>^X$B5BFISM<@`R6VQwDGBSS9HKL-z4VMYswdoYGM>-1t}OphUNNN@ik%=738d0IgUG|(~6(zsC= zT%1Zw)OX;pV!MeAXKYSnSen1|OMCS5n-~+tEqwwp18^@nI4Bon;*=A>w1NPTs$jVw z=arN-cN{zVGt}~J(fk2mshIK&P$Fh#83Kf)MQI*r_lb3aK1y}DK;kF_sht90z_7WZ zZUeFonjzApZ;QZ40{|sprs46w%`}t=Bz9j~yXp0l(k!xH1Nldm6V$JQ)0hf!#W(ob z4rpm;3bVExEumU_krO*<6rX0tJBz^3ZkdFb2 z@?bx|v7HV@a^UT)0fdbDB11r|Ncq9gf!k}$@N@Gq4)?`3winH7^jTe9*sh?aA4BH% zeHotIo|=)7`U*6;$GDt#j*C%r4&@2pZC3}GM?IT{*9kR-Tzbb4$|rIVhXxIWwQ`(! z4<{|7Lio<(1=kT5Kc3F^Zgw2S>_HF-Z$h`Q%$*W4j-7Yb-)H_P!T!k3ONxD9YM|K% zhmy%q6l5}3WD3y9D{>S`7||8vGS-ydHIKN)sUuCQ036J0LmEMjIV>4WSve zZB!&$?Em~fhYvGBo`P5<2*IiYTD&Nc9qQNyt&fn22uxlib&}75)l6}QOy`qw0m6lS zc^v+z7;N{U8UUXcB%{mwvSb*VC?J_*cQ;@9z8%%k>%g7Jvwo%>YhDNigi z0vT?e&L>>RTd?cbGVDFW(a!eR^2!5$_k!@R13Yu;HFlUcr4A6&=HKc%Y#imvyU-LBcg(`Eu#n=; zyzJh~x=m=eC7iDEv9V#AofZzKsXcw1Qi+<9<3Um@Fo{n1gU-DV0JiB2C|Z#Ql;#0= zb6wg`zXc`f&0X-v$#(+cXY7m~)3{Q;4J^~g@Eyfe`9_EY^&|@^G%(F;4ktH`%q}EB z??PyuD3HETCtBLHP$xpG4=U9ljVy4b04p?;YkCZtt630zJpF~b?W|juWQ7n@W-xle z7vbBw?t>AJa>DQNmN)gDX@nXDada`{vd*fbOVj>T2uU$0!HJ5B2zWIg*o)_Sr#>PvPvdg`0X(s28So=9;887&jQ3W>*qoyT^=`3UGyh-Xc84K?@ zpXxat6LxBs(U?d4;es2vtLzU#s4ZNCoYBa;14{bXVbB>*WHwpW7n$M-gb+w+5=ge? z;Iv>r=4sK-?8fFUx*uxn$Y=Fl*@K6oJgDW1C2(nO5*6D&mD9J@*_+i<8ANw;7{2z1G z4!krD+P23k+}W-Lm9`5X`_Z#w#nsbHk9!KDAnhsKMlqk0)J>W!%Vx{EJIjZAV=sg$ z7g(Guq`JF*<<}Y(4zgzQX?m&~?)biJwcUF6mA>7Q$VKs}idAxehK;NiO_oBhM=S9e zeEMswo-8Pxx}aetJiX`a=1z^(K*J;{pbrKej^{T{MzN$o!-7_wbhZ$$nGPs(-DA5w zX3KF@!`d&A`2h1%z)6WLksB0lJ~>jlSO{8YK_zmSAZE&!iM6lHYKtpndDFY85RKAH z;eS8K0zOj}4FvAfxq*VlIZA-dK~Fm|RbfkT1>kVck#jb2T8IA_{K$y0q8fQ@MV-Rh^4{G)PzY4Qn^& zc{yD9)$TxUN8Jj$I!p8KP7iMiRg9d;l*y|m@afW{Q|eNCadKT?KFC)+(`4lUa-y@m zxR*W7qagp_IT!zxXVTarKUQjpapeVm;&ie<(fmMIk5^_<$M(JKdUdMENB`b>&=KP1 z@ivr+8dzfq0fdHBW3W)<35%`SD$#pN5))cIO=f#L@%deM|I>B%U+QIr6IxohrH8$n zI~*-fKO4B-erEZ(B?=(b2j@svaA>y?H3-f{j6C^5{z_FwqihO-@SvyYAilmgx;(Zw zHZ|N0sFHuGNh8guB3S?Xx*pQ~$Yj_4_hE&(4{yAPSpECwzLt-+==-H(B#tUvHm+Xe zOWw=DEfMSXNzBX2&+=8HV)KT2g_1`xweT%AZnM~dSqld?c*fQD%7T+p{akQV;`i+O zIk%zIHyJ&vukG^KMg0EMxj3y7K-&p2FCid;1>+&~17O$FR={EBN)BOhbP?;m@}mMy ztW4%1$egPL7j;Dz$#oLh3^TKMYYsehdP zxEg)m0>OWcNA8?}`Y#&iflPN}`xGO9yrPE|)UP!swJ0)m`G2YG7NKl!AyE%qJ(1FN zFOc1%LDcJteV%%s>Sg&91jjw=c3!#TKamuL{>GLSB?u5Tuw%(vrapv2MGZJ}H(KvesSk!@0%ULD^nVW19WYy`$O_mMIYk0lMtXPX|gD5dION@717J*=%Cd*(` ztIWsHHvQAh3e$W9GxZjP*4UkMP1Cu^5gfbeIcFolDzXEZMTS_}K2S?Hj>z%GajT%a zrbh5i!~}^mt@QqcQj3Rz9Vq)DA`D4_djR7|=JX9&F|4pMPZd#YRu&UYdG*-*E9Dgg z)~KUEc5;LP7YF`E6nF!>4A%4Hkcg$mK?MfZCt;4{cK*D(yC2q7U@0u{55I{e&wSCG zW1i#jnqGarVz8ET>v(JR*;j|{4!o#|U3YSA=$ffiRMefmKo#wDUPr*PZ;L|Y?Q~d$ zzDt4pF9@NEB)|A}1cz%R4HjPQv+4%6=La7N=d|p7eNHr?rD-Z2GtvT zKeLRXY~(somm^>&gIm%w{Gy>r3$&gq>|kMb$P7JrWd&U(GD=ddU!jyGBi;1P?5R1^ zJiM>nt}R+l4^4jb^ZNC63Y@wK+rOCtl3qi}(=0xFc3KZe7@byPa4>%e*m(mRNH=G3uiY4^m34+$|I2`TCE_D4h~6srlyK;>dGxooEu zQW`LpU{xzox37!Das{Oi5DUoi+zFb=F}1wL_I$wbE;Xe8+oXCzeIFIwAE}sBZ?oBJd`LpW~;V(^3+P+xhL}PJ5N!E=asy&emzo=y5FFx$;q~$I9JH1CO z`iYwIo`T%p+V|Pod|G|z#8rD#xc*R;*qVZ45K95#t?)GLmhw2TO@= z?pun)KxUo7!A_15LzUqkTJT=m^HE>;EBP+DH&VO1Qxa2BQ(g|g?COeEU>t8nMP;E4 znM01d|l}xB=Cjv<>(Wf0wH!fUHS(G z3I3-?1Z_?8HeYB>TZvt0O-n=mL&;nah~l9)*r}xM@Hu+~K>F=jBY`ibZF%%i`kr8? zIljYsqmtrX1_sXU(+nv<%i;iFOay#+h@1U#%|~pfOsXje14`aSZhsuS^jPnClj3LZ-+#D2BRxM9vc*xy#Oh8ODnqza zNWU~`?Ju`X&09NJwVv3jUqcy6mmrRB~C(wTabO^P^qV|{!m-oQjwur&t2<3Od{yF zR}U3BI^r+Zd|ULPQ?jA-5Vs_tCNOq=QnH)rg`Ayk2?3SX(Q#)V`zmU|9ZdREhRUR* z|4+o_m#omZM>+kxtmn{Xn%>PbuuW(5qYVPjf^q}C6K3trLZQu>_tL#)4?m5(|G578 zz}4uqo?n}%|oDJnt7K>x_@qWR=EI|D&OrCx9Q#6;#ZrjDy*vN;P{>Hi87V=Cf8j*`}=$Bx}Fs7(>mmlx@$`og@?uvsXvA&#ZQ`!B7RT< z#$zyvLIf*atVgd3-G_8mSDtF_aGk4mtXF;Iw3>KpFyiHv3uKr6%$_3q+6uMEYbSnx z>llm*L(PHUPXx##4H~Gp*@^aZo0*iTquc$xUrwRelW{;s?-5%8mQx z8jl^;Xw4{$zmQ3Fb@M6EU*hkx*Q7Z9@k$eYWxJnZV7z-ki_@u{jNr)Ld>t-D$G~bxM@7;b8=*tVthyxI{w^|e`HlYYPhT%z>DE6d zyHUaHJJs+=oIl-;iq(ZdU_D~f`~@RS(SH6ekUbhL()uN5F21`X$YtO^T)kYA=EVvFdt1_vx;2+;jP2 z`+}070k^8L=v_DbW<5Ri)zle{Wo<_x8KYs04B{H*J z)1nY|1KnUQ=85qNY2hvFk&F^#6Fx2lPN15LmT+XZ(|z>w?U!EWdh(PvIECZ+$scWx zp1W#QR_8Wm*vh+c{lfF*M$4bL97+w-8PEd9#q40Hzo;Jdz6*a*-EuUlVr1`3%pNP8 z+Ih=oHP?i`Gs3pP>4V+#=d}}Rucmppp5Gj4aCa!Qa_7c{F}Sfqi$HtooT(gj6#v0Q zE|f=mc{hjYa@tZU(DE!1NM_z&?MXVRDtmbkVZxd_Ag&Ib1^wlFhN28ok{~?!a#Kzi zW`j;vPO-dQuOL8sq8BtGef#=9<>vps+?=JbsgE$rq1RcWZHP15F@78ujN7VY?Hf7H z=`wBo!lTTXeFbqJuMSod;zVVfY`5Bc0ZQyrJ=39IO$=o(T-}vXPeGni&2#S zz%=Wsd)>x@Qj)E-mgwl=t}@E)?c=J3m?U)4UJU*!u`MEUF5$5;PI*Lk6%G7gjt2Cz z4=YH=#%3=6z>9pZdk4%`dZ)fa%@*2{`xIUwiOV)MU2Mq~Vy*u^zTGn?vX5-ZX5nT{oyJs*v|0UkLue3Tjbw4Wq$CLo!WP-q2 zVkQ3U{9r0eY9x3oR2tNCpHX2-&CC7U{W_WiqBwywuQM*WjTJ?P$mKRXM8GL(ecoxZ zt?)Ybq0R8lsi`OK@w@C&Qc_=`$(o5KdjA3784=(Y4}q$^dw>pHM>|IjoBRa;-S;IW zI{60Ji@wWstE4Narl)zjoKGv6W}YgUJwIzQsdK|?leEg3(eKk!vLdF{la8p zoIf~I@3bZ+xc%Mo*f!ix{^IZEKz^nKk$QGBwxxK;WbF6lI>Zl`Z5Kd~X{Djs^T z^N5Mvw6DxL*X!yBzk)!{m}eS{xkA3%mA@oSslfZCueR#QhnR_7X^APQm-wKLtThoe z4L|%ST}BODIN*3NxFkWK#MSF;jzb2Fl1bpl34s(7g2XD>? zICnp>fmj$vfFF-D547s&sSbMr%;)pa}#;l{af&t_3kf8LYAm91=52iRc za)MvN!dB(2qwx7vlgMZ<&H8#D{Rw{0Lnkk=B-9hOG{N>T?d>|O2bl+QPc$qLD;ZBeaD%O~Ema+3BXdE|Tr94B=y*c;OvIl&&x zC8}AoE*WN?jpZe#Mm{$?>-^SZ%fl0>$$t-+bJ{2)ad{kR0X(Zz2A-`~6OZszL&~;H zFLFx97MrYAKgMnNe9NZY#K1_9NHmm1NOzVEBib)n_f}TtEmL-RWwb_dc7<|4y-1Y_ zlC{t$E82L$SjnVr5I_^((76&N+`?Q*>XQEkVjq)9lVO*!@Zmh6JAkPo+kS^?lfBb7 zi|3VY!U^2W&xi<*RD0I-vVED*N|L)fA&XDAg;$nldsV7+YE15SDf+z9QdcXPe|Ys- z3yTeBl2MgAM>CXytj|6dx-^1?X;8WjNM2V>3rY*WH%ud$71F-~@d8$xXZHzfmBK0O3PGP}z4$v36v{5kJS zy8QJEUFtM7g!H?R5+Wgcj`L(iwLK(pviLZ^ZbKN4eQ0^1ns3YBztCYJ-n;vm=px0s%*cbOS?kqs9Ztx+*y)7FXrqAO@AaB=5P^U=QHS4B2olOj+au`N10eeyk8Prvw2nhnF!RGILJWsNs>-Z zS4xSn(uD4~!K<>NiVoVwd~5h@5ls#Lp_@ z2C>s~of>~{@8L)^nfX4!TM7&<12(DI?T;?+vsn8mAykp2>t^BMl@ba(V!HI(qCNZx ztW&;O^UBCDH>jBUaOxmV5M1*m zjw5?43y1KUOqvh23KR}%?Lh|N+OF@86V_bVbRq$VCdmktp)BF;cl7?>acil9M%?J? zobY-_;ZQ@H8%LyZk6W;ck39G1kf=Br5MjULFr*0b^ zJp}J-H__MM^Xr0tN7e?TR<9&WYB-bSc$q%H-Z!xw;j-Rb&J-ns~oB*F2T9->z7 z%T+Jt@NMZ;u($e^KUAEVnvzaoWO`hC7Sn_(Z>D*5)@UQlMAT=FS4rB1$-_>*)RVqc z@#|YZ zXe&J)+Jgn=b4RQ+Kul<`>OjqBOu;fpraP|kOC>MbLl@$6XB$!*-G@!IzlFi-DM^VBZ)rGjT+bxQIOwb>T>CgY0& zBu7HbHg%aLGL&<{8a197lceHV27jE3xU9Z6*C3G9+TFZHztK1ttF6R;H$$; z=G>JO`&puA*qgB%7=8_-{>+?<;ie$x;LwSA)9f$nK(y+;=|fhfefyibCAn#pr@x|i zfHNb2?!a1GsWo{(k|#_X$@+|a42@%lm<=j_jMHC0n`L{5$#puB#;RrIM|?YacwubL z7I$Bcx2Gw+8|v--$Sz(ETA-u%IP6zFD%M)Q>y-bsur;V%&YBz$RDTJPI5#_~4`OQq zp0GVz0&WrY#JgQX8%v3QS3qQ9WFLq1^xLAlVx*sKoVN`&_vOESfCFWU0gU0}jZfd( zWGQq)by}NeB8J64rJy?J6u3i_JZ#13!RqD8ouV19@#+Z={HiA{Bfy+z;qmXHt6W%$jls-4ZeU zMu|GpWP^Xu+uN4Za&6Fe@Hw5xXnfmlmP^DqxXOZcy-l#e$yFPM{Q{GHn%>x3K8-By zev6{#1ew#+Zot>Q3b;y;T2P6ShP3Zy$=wT(jkDUc9s@=8ic5g{!F;+Cx%_R>664z?<(FZC z$)~PZ-0+-yqDO1Qgw7!?`g-e@-sw9k+?qZo<@T}!puA>h`O1?oD15i~&vVV}2k*Vw z(Qk)dNTyhtLVhP84ChTp0JJfc)o(R#vR4>eEE9W@ow@M^z}C}N%j%i~yure0BZ?c> zrj$ll45Us&VvQ4&W}5iiS$E-L*~!$^ZT9tNo;Iq3%efO+eiqt989pj9E2A>&aL+kv z>bW#(?(t6JR)6YU_&G>K*L?q_t5b!}!pjJk#47FGMa^N|q_Yp7F2Aq~Dw5salQ>Fz zhMr++HR4BEYN`#=I$+tualPOGTO_!o>5d;@J#YQu30AslLyvi)S5h;fwa2wQ z#{O>OdJ=!RjSY3qO80eZrK9Hh0P3^N|B4Hx)i7Q;*TW)%7}yR;@P!SgOQIvpV+F{g~G&5y{E|3!UTY9cIwxx z-yuEvbN149&JG%VP@+kc90ILS&h3T4Q%#|y&6}Q7<4*@_NxTN0 z=)2ywL(QB03IN!4keJd4@_XbAZaH#8@QjUF=kHEO49OQKtqKvYr&ft`L9@xD&N8(& z8RJUmaJvR{S-|~NKRZ`dea66wuHzV;B=bI??`?l_PZO#H-besuZHab2B)TMZ6ebT^ zFG$}~>0yBBK6l6u^^0^gG62(x{Y=hyNhy4Z{!CD$x3@!F4Lx(uo_ zh{WfjZ29|(jbigfogu?s`gC`o+qX|$%DDe3Ne_)~pJCDHc1hq4=n%dYagS?<>*mws z(MUrOG!uTkx|m)rk7ykNK!O%NG{WV5Rs4@2l5K;21v|B9C2s+|(Je6^ z9;u(;X9BZs^6ZFTO-((X{?{)hu)27~I@;KLU>~-9%w;_zJyNn7K~eENF(G-fFe3I4AcB4Z-s~B)b>-@>_a}yXtuRON8`Js36*D>%o@W2dz7q zjKQ4AtJ8XN9ViKFU5%Of*)U36=fC?#xYz_fb7q6J^oL|wYNZW&6snx5)TWTK)l-$g zv7MB(3bU?i6^?5aN@e+AADh!A;&EZG*-FE3TeuEzO>ZCKuH=uiW7gL38(VSqpmG;v z7ZxQqS%#p?GL;b`goJ&j4VRq*|nc9DmF!sC~P8=^P!SX*?6rz4&= zlM3Nq5lfTi*Tzj!Pclssjk;{0RF>#>dndXQI5@e*n>SWlj ztAKMei2Y0V`iS6Pt=GJmwHGRk#05~@KSX$;IoV0yNmA{15OH*(C5><)O*X`-<~%UD z;aAi2=G&s*@db#_M!0(xaVGUGYHjnC+F)AIQoQif~IGmZ3Ev5w}|~<*_350o6*~uhK2W$LG1BOyn6F z0)LN&zyS*(@F-|f@NnO?O!xcPb;ko?z2ItPBXjhkZbZORh+-|mNpK)^uqWS;FsHL; z=_h@2XKvmqdv0Vn7&wKf%BLi(R+iZNS&>*^%@1WiKcvYj@lm_AYclbtM^C)(4xC5` zN1H7S?_if8s23JU90=3&aYAsw*)o$3QtW`b=UmwBTZ%9)+Z3#R7@3b6MOr?)KXlJ0 zhKYOD3?$&W=@&7c$`|i=KepZcTW;NcEPC-t+9H5qs7a{m!8m}lFz_npg*D~#B(Ur4 zM^LKRE!k({0M@j|Y|Ls!>Q@Z?khAE9o8e)VMc+MFR0?a4kgUW1 z4Js7dN|bT~ZHN$K%Gw<)kD&G9bEWQo1&ENBvL|z@zMdK9nnGiNTdm?N+-gO*{XcH? z!V<_p3wq@)+I?6gl8uiCP>Gn1LO_ru;(k7I$>P0WfFra_uyR_u=4@oJ^ z&{xM3U;Q5XELu^8it(dQw@CW)=}~It(f%tA#oNu_C@j$=UDA)!-ho0m)aUai54>=C--1axsdMz7J#W0{a8V(D z^^LD_OqI3EjV=bb83nKR&c3=MbeH)yqdG+?KI;Zua+*=~B&tg1!IYW)G)wxIJF5dzzep!2rO6S<$!d84KZ<~&ZoBB>%n56y5XXS`x7mHVhn(m9dVIQO&Q|pi*ZyVq0 zg1YoS$b7_xq6|fASMg~QLO071%aosQeHptwA!%R0Ugtl%W0@bu{dCv))fg)09a zBe#T+JRW#V5TD8>Y1}f)HV76wdJ2A=0t6?1Yp?F7zsZQFdYychQG04zk922lAhvi- zqhiYSM-w4TDL)_%7A+dbjkubX%UB74XJ<0BG}g$162!+pvSJAZQwOhQGNAAI8+3V- zmLk*9w{=`N&V`lbZ&d2+Y{iK_o6i}V@ll|s?`e+GpUDTiX-d-Q*(zf?eg7}mk>pYz zX8<48W3lOJ#_=tK{*fSIIs563ncJ?j6{x$YGiD zvn1BR6`HM6vVKN|UoU-gc7WqlL}6}OYr8CXS*cMAC0pz^`vvb=St45P_Yk+GReJb) zpD?;!ajM03tlHz3n;!2Nj64w5D@P?|Fb%|T%o>*xpoM}UvD6FNK>@>3^()e8gbaTxWog$w@yJlD7g7BZ z`OgMV{70^7&4UlS_vXi5^}RMl+VAGc4Qr{cj;cLi=lLYB@n!nGc=wcrtvXwx^(2=m+4g)5f@>Q;JWLkiGhmQm zhpR~0x7*$s_pJUbk9*O+-4}DKQSr$ERLb;AiE|k}YMb_SVP@B%i@2H%R<+eUopQ+q z*wgR|udMR#dQg$uY3%-E$;8yl&M}&U<(OzBb#j=|c+%O){>)1|pJuxz3&rCuo34hf zSddbn{%lrtTtv4sgGE~XLHL}C)Xb!<#z? zSTFC5?QO0+we{DdR?pC&;&?4oPN$;*f#S0NAN6F~1t|f{1ARmQ6rO}Z*0%32mP?Bn zGVB5YZ=iGvBU?e3lhkPw~xRdi#I`pmie=5lfm1IEb zeIf^OV6T`N92Gk(bJ0MCS;PB%e%Sqi!q7emui&7T3Q*{-(T1~)R!FVLO_O?IxD8?= zL0|$V=zisXnf&ZZO7psv!6@0p)(9yuPP@`^=BoqO^Un@RboSmWB@6j|58|!Oj%WTCl=~AXCfwE#Qz; z+8#WyTqI--pDB`WWfL0zD28JdBuzU&pszMdfOlikKyOI{P8x!S$ft>f(*!uVA|s;! zQFApAJNtSP9cDXvy8}jpnntJMM)MJKe0S!jR5pD}9taNXq@PdUiJmz1%i!Cva}&FE z1%MYwdp)K%9P|~Mif?*|YhVnySIF5cd0bg4qQ@_vh)|y$hPKkw{`jNPavoKPLYwt&PG?-&N&VVmot5%i6v$u^tkXXfR@yQRqTiS4?wSU3AlrUd1c6aW=5^cOAc$ zm0oxF4sd~c4g{h&`AdTI0K97=YXk$=A_w8a{89wzmbE}VCXv6m zNOJ|)5mm>}NGtPNL-8*1bKa`&mb~taR_Ms@dutsO^o<#yzc$wVlqXJdI{YYJHH^Mw zQmpF9rHrm_!)`3G9r|KB%(gOw@EM_nMkKc@bKAQz$6ocms=l)wCb zD%NTbzKPf6O1sL_c8^^zG`!?n?y!M-D6sfV*v|Kvkue^_9~}OSdp3y5-3!b=x37`5 zAKbo^G-MRqzJ-`zA%L?gGO`NF)m;7lb^Gk@xZ%IR?FWn&n404!{`a?^nuri_^-3TX z>^BJz!+;eU)@7G{>SA@|QN>JO)BQtppaGM4Q@K@W;ZOGFIQxc$1*Oa>opOy``l=p3 z0dD`5$i~)k!%Yj5t&dw24bKJiY0S7~#`N^NaAeKSu64?v{*t~Gf&M7ZXZde4@$J%Wpd_XtPz|Gv(7dh`S_gtq z_)EjMB`2cW_gq8ZcnvSGRZ4%=3AnxsoMNi+E01aUhpWX!o;q~n!|t7faW;wfua$bD zVHDvu%%Fh|IJZG`piDNs2O=*=<`oF_kkh zMN&>vVWt@F$}UAwDT){+6d}jKWF~}=#+ktw=kv@kgPAe++rgLJh#wL44lley($+#`C7=!aY zv`;(Hsg$(9uO1DUx`b7@N9qD7ou6<(<<#%cKT=3RuyFG zy-k(}lfV2}vY#<>y9olV@N4n#7rH4qfGuNuTENV4d3SlA(rwB}%j$bW-l(*fAeOLM zS9{_9bv^39x_9he<(ORZCT{0&YFyB}IN}wS#=!x(bw8X#)p-mug|`rUs4gh%1fTO* za|28gFKtHk<~7q&bB#;t0Nya88QR!S5rHbQcC%MLVPAu?m023Nf%xU@$_e-s|S9Wb+xK8X_~DyR^&ma4ZiI_edkEb;cO%Xzl*tu zm0X({gXVK9>3LJRG4b6LEn$+Ax=-Mqe#DGn9ODtqn*NrINSQAZUs}0gNgjrkyR;nD zOy6XAGv(eM${oQd!v`pWwqJpMA}RuP+lLZe9;m7mO;E)1tub_Pv2X-3#)|C>g!{x( z0wWR;`Nl#U4XIm^tPONq62mWoqGrrw4}1Fz&i!=LMLkkq#kB9KlI7RTVqLa9u{2+I z(zZ%z_kjH|g@gt@+`dHPR>|06S9eXP`r=QLxqb&Uh7%-8u+VcF51as&{NdaLlm7R}QZW9JJm|9aEeC_Q8Q(-0`df>1Wnq?^~q7booaHEEAfM zkdy&`!O9cLhMrLa;(1db5J>d8N|t3K!t;v->qXqpedm8#Syi&F$u2=W=<2|Vif+e_HQnOuG0<=St>h^EkU7t<1I`cOm zKjfS5liY=!>A}}C^J|Ynj1T0c;-#NdPjBj?he*F-^kC9gP|d9Bsr`zGnvH09^x!yr ze(<}Nt$HH&(e_rw4L>;m6HIR78jNlhFp9$5Np74jO?*KJ**Bo{s;ldRUPr5_qo&eq zB4j@RL_j~AR2|~_hZ9GzzmxwPyyY%d+mCJ@w$f>~S(v zd^)~Sb+k^1EeJD(A5MYVQ=^O1j3{YqS>8+Q=d93ND#^}ztfxG;g{Bc1zS)(I&dQrT z+wb{>XhF_5U-#<)m7fS$D=)AP1R`}PY{SYFnhl`^fT65{MhlJ_)~R8{vRN%OO|J_D z(tVWld?_A18|5)DwNH~uXrEpcEz0R#ZpC56Y856%-g|Z2>L2I-yx(OjhiC_(z(8^# zP`$$79(Lw6?un}fjRsxg6GoM1qehj3NEp3*BdLKwQStZ5@J!5Ee#teqr+Kk4h$`Lp z>KL#O9s733dAbqTU2*JicZ-wa%M@M_s{=1c2Bb0#TwLO+=y8*{`!1;;f^QIFivyA< zA8GLi=vknoZ#rqH`zB?m)GR}wbdfumYE?olvfa-hJWMxiwp>&4)Z*!JxgDl5I1G7& zsO<#HFl(S)G6svH119B>W5rc8bVevai!PjeFO63(yXrz3>9`af?#)}V=XtGf1{t$h zewaL_&P~=49Fb&nQyLh^+Rbn!=E7XM(s}>n#z_>V4aI(?e%YP6-pivCdb=C??4Q$^ z6R@#}WL?i}PY7jvnoNJI#yWAm=)uab+aB&WkQzcl1#yVWt>{AVLRYt$bf-*8z` zKx@QlB$ZJe>M$~J#J%B2&VEg3Z8=R^VtTTS8m)Kb?C@n`x=G+dx)5;=nYudkf7X1M zPQ3izH7A|%O!iXQDz|Z$22`idV{D4C)>GmkSE}Phj8+$~w;_^m^>wW{VnbmCer(rx<@uMl z$;;nsx9(Pyr1&11i2`i~FcouxY#@FhFd&Oa-&a{L@Hr2)m$E~u))h*1UcWQW0q>q+ z%Qc%XxhD0FFr3Xr$EEhn-6T)vHCNlYI@xHOzG*o8ebpoR=htBjoCJp{xB#T%f8y?P zR+l+oyEHRC1c#3;sQJAbyF5Z14G8Vr^m&St=$iTxK|k$waq#H(c2307cfC%V@zA|< z#$v_s;U_;w)8)|D!FrQSu|3uvP}DCN!u3o(?*;Gs3l0l^*Tuz$ysO@iS2kIXe3&XP zFG4eyQ<(iy<`p=aUE~_>Knt@R)1AzGFMRf5!m#a`VXe7VUYo7r(g$RczEI@_j1r`u zlReEC)o%_h7f6FdgwKArKZSYEEp%~#V{hHqm)%>QHjDSaNMq(+)sDZ%lKqlLb@R$C z(4<{B(|Sqw+Ra|$qp7HE&8?khPkAJn$=%RRY`p3TKS*qoAqI^>lQB9!v3%&Xm>fiU+f&m8nU=r^f{2x`@6x7{|&=w2C(rZv(s)^iDMyV=)%U$sB zqs2HMP?Z|E|1ujZ+X%h+qaX;C5CYCqUoQVWxZ4wF{nGzI%29-6pO@afMeU5XoM%WO zdH&dOA3Kv^a5u>bt^(ads76#o605`n0p(d7i6j9LdIi(;s8?x|w|rMK#3#EQZNlsP z%d^Tqsx{b@5UoH4nY!^z=A)5+43F6>Dk$EA@w}n%bNX&b=f{!-Da{_+RIX3I!dD7-Vga zf~?4czfW_bp)FJrVY)FsAK6QAo2>Q>b}-8)BIEDC9Oj}$7xyNQsVVCB&(r5l^#uFk z+#OEtKGSS|w*8O4>;oTdJ6;aH*_&{f39eQ|p+A-wTT8pKTf+X~Zc1U%dM?c`<4l}$ zGf2Ct+3N3iWudsYj|T2a&NvM3q%zMFkJ|grvHWYZqn$jmqmxo1mpZQNIKD#;Ty!u$ zCUF4o0O@dstNTDA>M&&8KdmBUGd9abCmqObeKeO(*MSH?kiSWhY2sk6J1M#6v!Cyd zitZ#2+T~&uf9~|;VsQ6~Ph9__zJaGL*ZCTKc)mss;D3v31JgT!RhUBC`S)F>#?r$2 zCr=emb9oiKSC6n?oL>dx#rz59t3 zPFZqD{;uy55w%jG4Y(tYj~7bCE<*LUGnz_)3xw0~FO?8+Z)j>%@1gQ2Jn|T%>5Vx# zjjQ_5S9s;mljVpQV%G=|F>ul6tj@LF7v99m$)s{dLb+ZM0=fb9K_3X`dpPy_Az7&) zN)iTdiIpVJeXp8I_!PD^g=7+jYmyxilv$;*5*@A&nn3QC%5I0OOf$6gKt-|-lA9`V zcBol%+gZCRIl4G<1m2RYZs?o2#1AG&qS%hw;YCuD5>>*Z#ygX}mxd~Ro&We4GF2E% zRfSd6X{1XcW~)XvBY)@E`?Vvx9zM@MH9P(wPElj^e(k6wY9`-c#0&(-dC-F4pP_q< z4TO52hH{RoASO>x9)nfTk3*Fa=-Q!T$ya|Z`+7cq><~*4PFm+`#;_gPxnQ8Q5Uq*E z7f%Ho%&xfqmU+fq__WSa-%iEzaL|fJ+t&VRNR?mY%>^QksF`HWT~Hboz#x&nGNO|b z1tGx%*O4~O@U;9FIg@?mHYLT`#vQ%r*7N*?NjP+U&4gP?gGEw=ey8o3>iy4!Hra>U zS2P*rAD3SW2UY{9eFQEC*TN%ICFELMuM08;nwp1Z6{(Z~qs~O42Rlt-N4#j(y_|B{ zIqWOd&!`v*X#EWcm>)UKQZB%t2?j%qaT77g-o3|9-$1%o!YJG*EREFg*1m+-0+V|b zUR@6Apql*O1@b7riHe01bpE1?UL>!4tUWQ-`$!R0-InAA=YI7V zFV;CeU*mQdb_y#=jnwtb224%*tNlw8e!AhTm53Th0Zdi@OF2S-a=c2=ehw%{U;1Rd zCt6N9R+nAql|~hXqc)n=q-z$tuN}ACKXqo?bZeoX)-{FWdhh#^G z{0tR~5zAjeDj3aXp_pDHPTG)QY~VXG&AFT8(TPPZ?}k90?4o*tSpvln8dF(H#UTc| z47zZ1XW47=;w)ySyzOMknZ*~C7eSt9F^va-5*KaU(RaI0vKLy#9BOMI(cmreB^VBdb) zHQ)7HCV;#>c^04*+1q}X^PjD;T3kiBiJu=3XH!a%;w158GIB*4L0XWZzG5FGStL%l zJ}CGok;UU$ovgAb)gu2*IW(f*WaI6}ee<;2x-{v&=7!@X@2-3)oU=&T6}w%oaTp|M zlq_#abQq?(SP8iao{P%y;6~X)qgDSiMUOIQ)lv*vh{UV{!YF`9o4EkrQBXekpVtNomhI=g zOc7qv$ieNGl>= zTCtkL2~1jx*W;e*bmeyo+aHg*;jhAIMs23KWEQuv>$+SF2t&FiL7UdP^LjUJMx!tL zZyKp*o_w5@mNb;j`l!77<7b6FgY5u_HxemAXXG4uOLwsyRXjNyF zD+TeyZd+`)>Q%-Fu6Q{4ipJGS9!&Y>m(YtDWi?&gJ8JqcP9x=Xl@ndKzpHgk^V!`` z75Fd&&&&V?br79|amBfCGX_P9uj~6ZuKH+p8Us2kW^o}Rjvt?w*H=!8Ne%ZL4Dku% zmbaD(HnzVnwR`#u&4Mze>F%F~ew= zVZsq;_m3sfrN4AAv=9?Nq`pt8Hff-YU^z_EGt z=+f5TpSCwOw;xs5QHb~gT#LCLG$vf+p5Qe~P6{+3_|O~VigwIQ)U|o6yNKcC@Bgm5 zowLJatj;Q{$##SGgA$Ro`Q`qd#zb6}M*4%)xA!zO&JpgeI#a9=eEA5Waig1skp+?} ze+#ixKpm!>g`Fq(PbixZ6wozTj4zj-%r)LIJxzAgB=D{Kqx1@hZX;j(;Ct2)W+hqI zoR(*%#08gK)*W(hPKh=EVfExVD9SM)z~2yS#y6!@Y=Ut;7s#pgz-1vGMpkW{-E{p? zDFNaqmrN#ABxl@v#-kTaahpqb6^B*FULU&F@a*%+liDiUdxmS;Jhs1oo7z})O0lOA z5{(i1RZuG}m23u8OV%Qjuirn36T1$%PPJ21=$rlerluQX+pz5IsUKLSITdxju4$!v zdr11R-Hvw1MvFwpyB795-#GgnchbYPcgZcv?lqh8jWY(cj&x#&O&Wm+s7ykW_KYTf z;rl&t>ITfFOPQ4Uk%Yg-QzZ<1idGO$>Qvr>n39E>Z?xrdhq#G7Y?&#r|VVo|!r;#*S&pEp2@A2qao4{%- zhxkeVlAddWRPq|X535jNS@e(M@z;0Cr@VLmb>U%kgR=b4=VU7jLlOVb))rR}_+Igd z>NQ_zG%ZG=`B*&L&Dg0KGOBAbr)~6cYRfmvvMHJoDi&Q6Lu$5ZwLPB1o-1gCEiVl? zY*%shw03rKkR$BkGP3&wIilA8)?{>S!vf_BDav7QW_Qw=dv#;t z+*lp-=wwm#^%3N-29s}e5qcClb8r1y$41nh)X1NW+$o$oJfcR%f;!vkN3vOpEY?G? zfe`&;3EOo{Hjmxh`QF+<+R*9h^wGr!2*0_c(v0|4TA`P`s|lQ%?FZf%Q1R+d@c?H4 z%)lSPvY*C0L#;-gb(LhaPmXAPMd)|q0dYB%a`mCI z=$4%Bmg>S^~jTs3LJ_A`D z=^Wb7to5D08pNak1OZUL6%58v#zQ-Y-WBFc2lh!k zeg?|mMKwXb&4hQHqKGR|GXs^MCQ7Dr=l;StQ*NE8=?@Yu9zg~msQSa+484U2Zm!qM0pkb9o2jMKXNsAweo&IORT?!$ zWO?DolJ&?wq5)6IjKEyY4PVC{pRxLqVxx*Odc@NFF#Fmb*bEAXMyzN-(m77YN6FjxLezm zV5j<>Ft^tvn^zqMktXMFOnVgGXgT0+?c0B=D3cKpmGF~>>I2y_f6Nd8-+ig6$!N+X z2w-=kQ)N5uPMs<5$z#wgbEFZ_{N5v(Od zWMCqP*C}Gi)&za;odVhlI8lJ?IadJ=tCZQYcur?%Mq;&S?G=HE+&|H31!a0lHrrj^&Y)nv` zLPzKow*CdA1B%GOOgC{0dlvbI6%7rm9wWWzql|x=-&|un!e`zMQI_V=t}Yl{IuLR? z*D0Yo8`=E(vyR{BZ1RquR}ms$kKu@qKKwaMzk_^PTLpO#As8E1y=SH_o7YY!aTYHK z=f8`)lmZ`7k!Yez&}1&qK~MchPxvpS_Qy>|-NOQTaA>O{jFNl+jR{z&G8uZQS_jRk z$lquzrOYyQbpsF-S7{61C>tI}-PHt^-7FgcTDhSKdXIjaI&y3$6!GPvRJb|mpDl;v zrjSiX$4EXTzeTR2)Szd%i^>QFgPU7D!r#iNEwt7x#)?9g3Qiu7b+~0}2RuPPYzLR@ zg67E9lGy<$D&lu)_hrTP7yS&X@n0~f4|?f^6=6C1exV|}@gAs!pF@K2qHodI0ZmH% zjc8T)pt6T1;%~wf>Mh|+T_c3a4~Sy6m@;`77&hp$x~l=JNwScK*jAIp4dSIs%bExt zom&GoRkN|C!O!qFp+FL6Cg7gtbZ3`)CcXdch9mbIMq=c_!xD@mR9OeHQp809mmvq( z#6+Y3-of#zax9DPS|k_OuDEZ$e69RR zDb|CCEoVGla*%9|_+cl8$7<_9y3`x05v(jzhnD+A6On-795w&f-F{uH&83eVqy{^1 zc?i$rIX3F9^xpovnTqXAhQ<%kf^h;GJ$X-m4!z;( zA$Z}lz;}Ib>Y=eE(zzhg;xWyCf*;WJ#LX2hx9#A=0oICW`(Gr;OapTXcJ4yWq=Ex* zYzh)z4g0aAo2?P10S>0-=Xupdjj8W#mL_B_ zEDKgp&AIK*;XGc>C(yPI z{Q1y9e2j8>O*cvf>Etsacop`vhYkJVVklCjG>`U*j!e7Ialu90DKDoJl{n@ zRan@O!_mO90BL$jT?!;fGs>~_s^P!qb*r@%UfsG=^GX@I03&X;?0|@Rbi`0M`;X8v z@h3$>=7PuZQg70zF@Bc8HxOZE`mkYd2sm#!CY!6cLloo} z7~*22(>ufXRU^_HK{piqfw=12k0mw|6uzRoR;sD611bQ>yUMWK_Q4JV+h6l#k0m~1vRrT}EcfuYph|L>is~rHO_tY7STk8Noz*Y3n}rJ@3r?)9 zc@S-DPBFE@zZ=VML`1&0AteC9YU+oa@zewE?%V&k@mBsJ@2d(9AV)n)pah5d-!Z4P zKS58yOqafAD>L2#Nk^z)I}#OklsFCum6~%kCf3CySzN1xjq*17b24@sIIVIy-Jt*( zi$u^&hJO{Y81pdW&TnG_oZ6~+EtDLD0J14w6{?DbDzAe=rd>c`k2CHi+fSAy%i@T~ zrag)o%^e+L{T@p&W1^4y0KRw$DsjIvrgw5-^uwut-WaGQgXeU{z@s|zQ?CKTM>n>o zil~UzBl_;8CF%%xll&V!)8Lj1ggqxHAmpHvWt^EOFiws*Ahx~R&|QmYh$lS4!hEJi z96)r;+U5pk5G=-qEvL51|L7fVI2&wa1<F0SZA0Ae83smNFS;#FXP z;2mCV__4$aFPFYg#mzC0dI$Kt!CWd5jb#N*tIk0nrUKps#K??0(56OUAyP(>bdjmv zdt9Dfh9GL{!WSTvg5*&lDuFXz7+5dDGRJX?2Y{Z~&K}A*--kRg>8JAPo;*URxj60N zcD%YJl*$(W5?eb8$%C`c*nxHK;G;1a=8iv>bbUsj4m}8VE=c@A_1BedAUFh;o`g6C zUXWmC1BMwj6c7Xa34`!@c$~w3Q3>6&W@;C8x|nRC5v;PA)+N(ba6!QrfxLf_tD< z;NFG+2Iezmu;_27$O!4kTcvPbN}z3YCd&}6Lzas&DvQNh!5-i#c_8|E8g?24haOaH zbLZ80zVEr|=Go2*IgXw+)zXzemaI#gIpCPka{r;CmjJ~~JZu7QPK*ksZ~M<7RLn@= zZUVD4I#llQU62s@8`DoS>RiCh-H#=!z#tcoF!%}(tn7vFp*ai@?j}HO2J60C+QHP) z;3+v=5BZrKUBLGxY@0H&*9${7|8G3|3ngqoZbCD2(DcW(v*EJ1=2@!jz%AvVkT(=s>^Lc8^)S2nsv+Z{;bv+*8Ad!#~g#+?^z_Z!4Cxh1oy_`5`9#&Ef?8 z7S)bqHx5S{FWVU{W)L2Y+sK|WRcEj~w_Rfa-iK60+UYcflSYFZ!`sLM=oM70I--w! zKMe-KGzBgj=A-5ijM*w1-)qzv{B|S1BBpJ$piaBqN4Yk2LpC~g)9;>D_wn37Mab_W zBj=4X797BZs8=1~5w`C(U9~nw4#^uxxidHrBUXX@(XcmB8AL$6h`~>!Q@SN(TMVu)sQOT) zLI#V-!GrS`t}?e1J2>GmCdFg9H_3+b?*z{3-Asy9!|O=Tc-WGl3q#`sf!@e*7|K@A z5PMPJ)@HzxG2H|^id*3r%PIozphR^RH2yK38%T{f(^b$-Mk#P~J~_prFE$*VG>6o^ z%2-%QJll(9d(hs6@hf*iQRW{y6nX-XSwkOwZUs}|FHQm`%nlcR1Q7FBGd6X#gLpvv z`T9xrA)wj2!+Lzbl8WF@n>}5K)?UV?9WU(Fr3HtVXed^H%V30PDeRH3nkh3Ws?zOo z;!>j#uBn=3)1`pte zcNM`P5Jrv(0N;_L5YtFz2sU7xFP`yH51?C$J2}5y*nbCG@VhOZCzD%(b0v@*_Qxg=js!5Je`-6-4Lt#t z;GlTXRDk}=)%k|A&|s~wL$ceLD&olEqi>IY7b3vXYam>Rtoc58XtV=}`r@Uvu+CML za`?u1jmMoD8qFuRuaSK!JEb7=RKZ0-O*oetSECNs}k)=XFXt2w#w*JS2e(di5i}@sNL}4O=OME{Y*hUG$nbF_k@vUhX10nC_jn3?s+=Sn?M*7)ku5kgPX=Ozt_-B%jh?{ks6sy~vUIZ{bC@?N%}xl(W)`b_X8G2}Z-fJSc037UN|cS2D@8=3m* z7uqf8{ZQ(K@)+RXNKo_GHKMA`1R@5+rtwzKnk&V+xhB;uvX7ZFsyZ>>5P4AYD^$6w zRu;)*fM&~w%0-8Y06cj13{s8%bWyNqpb2%RlqpT?MBIRJnqn2d{1;a4m^#Z9z5|T0 zUIbC}Mr@}z2APL*{_9Z`u_ygJLj~fgFh>EPJz6pq0|qI_QGUKWQ(6=c#6XpPENPnh z*@TI#83K(!JHmjZ)1w!=!d=|TQ+Z!FZ|MU%t&ow z9|(^yy_}c3fRih#cck&p>x$oVJ_2 zy+-&~l-$*zumcCnMNt!=L!>cA(hIjTwQOD4oCAlrW69A8##!Ib%v}-&a^U7!c?Z zudJzm-2wNk_CiL$X&;S5`5H5{u$3`MU~F?F{x1HzfkAR#XmN=1abt!MJMn%jE=#xg zeF)=v@#veLo1a=E4y_ow@m>Ycn1N7q0PdAy2RQ;S z#8JxA?z}I#a(jx-l^kNfP|re>yymP4OCL^i8O0>*-Sc1Fcjoo{eIm4>^s<-Knfhe* zpr@*x>lsVM<1QjjAwrOtRzld9ePePJRMxvKIDa;8mx-1!& zDi4W-D<)MRoB1T&dy(ePY7C62=fstkcP3POCT!f6n)7<9yytmh(;rWd4Ru}&$dGT? zN+}^*WQP-EB2ECW&_?R2i*`U?Wtdhq+$Zf-U3ct5eFq`CHo7~^L*?|-;N3@0FtT)V z-)200bM(osQ}tZY>MHqT$~mLVZtc4;Fuj)~JhYAQFeK41LR>mK7HGj@d{Zr5_!8#r zd}_4m`Rh9FiQoY%*O*Lyx^p{F;htRM?A$1MjxWoY9k5q4SXfi)vPKrTh&5*?@;9`V zGrG0Q_TcK$$$BepA7>>I_cnar@Pn3KZXJI_VxW!*2IMr}CTw!I3-a_z|)%&mvSc9ucpR!LnE71KWv6NA-QNOsA<#_>4cQ{4@dZg+){ zjFyeQPHnWqt+g3=%T_yW=08<$X~1^Re+ipy+t=PQkoHjS813_Bst~oTLSww(B`@cz zT%Zct0FoM`N7?KfeBkkpz-jmK=gMrzx|KJPL`M;&|}s^|#^uFM2=?Jm0V zHgfq+UB&I*yHV6FN~7u!qlO&=!pKXZ($al^ZXM%mG3wohCO*-()D@b1ogH&JJlUBJw~*Av&N)noD+Y zXgWRZ|9qPKPszq>u20Oh_8rHsGqKQPF@y5a8D-4J6QL;x?%j*5AX? z#m0A5Zh)Qx!5)5J_1ju^Q`PIDUYTmok0olIr1|KHozQQ0!WE1UA`H7R{lO7=rEM zcUV9*G*BYYKbCw5^Im}5;cy*q^0n{t=UjDhR0?6*mD9PkD8xjU@rd+I`{Q8z=E7?) zK=Qoow2b#ocMVkz#my+mesbF+b7TOn!yJUa@IEPn67qt{UwW0U513NbsR1s6!Ua|H zg&2o{d&=@s#IHT=`X@_FigveSuf?V}AJ<}Th_g7R*m(|K!iILQ2Fty>B2ZoMMFJFj zNP(cd-#61Og_G1F&W)AGCh|o%k;908y?BUjDnzNM+D`A8_+kvLe9(R1kI^>=Diadk z4?25C7J3EB9ajXB&MOCL)AC5lN zF%tFS>uOIy@mEUb+nzSG&Zf2^!KXjks-JmAZ_vruk)a4kY@zS`(F}Xwzre(W7{R>c z0Xrn*qY2h&UitHifzqp?u2DUu=A|PEwY)Q<)+2zr6;{>?+qW8oeYA2do>zFK3jFxtGZ?UL$s~=wjm;(m<6 z(dVevGQ`I+gj*%LO|B?`fxC!Mxyt@4zmGCyJ;mxOXR)+}pw)`zP-N_;9_lx#(r6wb z?o9r2hPUGIQR0Rv_q3es^yoBK_vDK!6)g|=BhYZ`OjZ##o+RiIb7scMfDbJTG0LdD zs?wM|2^SAG`kHo3uas-1%A$WPM)b-@}X$r_N|4r0ztOyd@R(~-qu7px%G zH98;ArT6}=0#{y_E-nxjw`v}wECeo;Gs?2d2@4xf-tJFbr?B_UKVNJ2YS|>`xmgw5 zX0nVsvB-&`Y!87_Ol{n!d-p&$+ev#2g3gEOdhDHdQt6~l1tSp`o46A1GSxjEaWPjr z+n&8o{j|dKl|sBjvo8V^bS{Mf{V`xmX+RG<)VikjNDV;8)~PkG2Oo_*(3|dVi8~?A)Oe%Yo?`3Rr?`1MYcN_>3nr&|o?ofD z03jEz$*^NvXqwSx@>5_L0Z!{npmeuD5v&kfz*!3j*jVgiNE3tOeV^i>s}9^^J(C@H z-u;qYD-aqSkLeD%69HW`DI)eqQy5pLcH1Qe-%Glf{$b_m%7Yq^oO=DLK;|KEr6=qb zXCScZea>oA0L++m3nW)^I1o(A_}a_AV$QzG+rgand)+ZqY}%mPIT$m#o`o;_%A0nx ztUK}y<&myonXL%eS4wQ4?a(vM_g_i%us4VO3!p_=H^CUsTJTSXReM*WmpEh58C-8X zpssF5`sWFkLPabnb=QE42)ejsU+evc-NS##muruPd(pYx@DaoT+5~~7@8>bhG0bK1 zDhbw{?OM)C+!Cw(R9sPNO!epHK5=cP8p;C7jU;}#-4b8frgn)BRd*`2Zu*1SVW$Er}V!lq!_?II7kv z>T!?w5uZa*U(h+>3nz24zBX}vFHLYUnaDY*CZW^cxfi2j5}#UeW<=O@(rLTCiswIp zlYFf;CBO9nXl|mxJY?NMh5%eY{`(a&z(s_%Ql?~$tR$>(p^)b*a_}Ur_qosktRY1* z-+d6*e^bA+aKU;Yb3gFYXDu8=2kY_L7td~UKX&IQr?3XvtqR~6B%!0VO)j)yuUgD^ zF=(!~{>GgK7ZaX_uI=S$yg%=y$ePUxh3I-d?=BY`oFrnl_^uM?d`*eocrhpPb>@~N z=cF@d6m7l53F0H5pTq`Sl8;=0WtMe*fHpvLz#Z8w?K{T!#Z_#xsM6^D^E$Oqyz(`` z%L85U=mP0h7bNy_SS=SL{+efd^B>bK`{ZBxi26Tr|BLuSGtYBJl4d)H()p7rFUyJe zI^Kx9QJZEYW%~O$KYC9^Q^(wDa%+dCh&w8$eG3!soMX5*A6Gkj#^O|4vvs4Xsijsj z*ust!$~TeZJc%zzH@Si>A$M>#`aiEf=2_n~;Qh}!wd{e;ZOs)5 z`s|6k{Z<)J`^Fd;kQ~|=Q(j*RE3wCOepyIa{!OVj`1LqAy)(?>IOjf5&3LsoVtz762UAs=@(oGe-E6E3h#XP0Zdo z%5i>n(n}`6G;FBB{}sQEJ9|Ghr#mDpDp#PXvzhuPlizD}^1!9Rly|o2AM}*=U)?6h z%%<>}7-U^1T#Otb?-fVQGD8F7zpu(!7)L!cQ*KGD)hS%;d7V{Ud@?8q4?5JMN_-aD z{XK@$l?(2|&is7=A+VQyeFrkxaeZ-}P8 z1DHcIECkWbu6*>$?W@}-`bxzEv#r;MCI=@zIE1y-miSPMk9fb^a(p;Fetq_~){4__ z5*2|_;TXInhcnX=Dw#6|N(Jvd8X40`VR|d01bb8$5qaF3Lq7yK>IXnFt*$~a91W^e zQtpI>)nGJ$KN$(-AdfJ$!yvE%?xo-W5^H(-QGz46rMm-}OaeZC$-Y~17a~8G?Y~3& znIqvGN@FadmI{ACOyM99GUbbMzD=&a$NQAy0PM8Ep9}1?7&%DB0zrWdi?XPXG?cz^ zf4qKI+gS^>XJ>2&LiF9L=t#m`v#_?~JUU z%jxe+jPSAX3$1R~*2}y6PH&3J#DlgDtvM&RlH8}4Q&ZxSu8iJ}BNCq|x+@F6;zvW9 z@V|zLkahUkRw^-q;IGezD`?ON|3qMiP0n7lk$w@eV=_FLJlvK0czROS*oDUG-|K0N z=Y6ofbIxwPcPe*cvg>oMmLXGasb^IMpAkne+PzCEBEbRTDOy?7C4%3}wvC9qO(X+b zZamsS@#Z#;d?f1oV@LEtK2B#l`YJMFD=@6gUI8G9|!`zNQguFDU*iz`%#!M+q7 z33B74A$HP;%fxxYSL{=Y4y}M@Y&=_ap6F?5?Ot50JhZ;%n_UyHvBH%xEA0-yT4&Yd zbX#qI2(c_FIsN|r$$aaX5b!|T2*4=pM;x^!Gq_R01#%R(v8PoUdlA};dxkO!$x6>l zA|&^{eAHS@EY!}r&+$9LYI8}2>iq1HpO zv*SdG{>Km?HmLfzwh$_%j2n5+_l+X!gP#ZUrM0q21XLALoL8)ME`Mpha5R>GDr=qP zGmAG{b>swen#mE6WZuPW0HZNUdL=n<>9EJZV|tGwHl5VPD(i#ia9ch{#fwoQEnyFd+3a#@qo) zI~Y?Usap0jpNJ=TE!ybHn~1ulq(HgIM#Gd$=<0gJA}`n_Z+7i@uWF*js;dp#$#$T_ ze6npaGDh*11stcq^anFg*l|D{00fVYoP%QVx%!aUKDSzDH+u8idphs3Pm$z{FBo%@2ax}AaicE4 zLpy?L(LHm}pU8nZWNjI>W9A#M5v=t{adF7HW=W)}N(SXM=v$x9VOCplUffOC)kurU zaMI1J{9bubMZp-&PK(#hCqtpQyoRIJne&&+jNc6Nof0^9uE z1z-Lxlb;C-Wd`=;&%kb__&EH*_D=D`O;`hELTyK>weHHkdKn z*UlQBkn&e;k1QZGwJz87`A^&4$YqM8mht_*A~!Y~!F{X&#p!lK>+Jvhmr`-r1EEm~)$fnNG&imQljv8vx$?n{_KLzIWP;> zc>SB4EJ8mObM$b~_P{4i4g0Siv5~_Id4d6!4(k+*MhFte&0Y)ihVhr+^L>drK#4-> z?d*-5=Y65TQM+O$dtD45ex?R|ceP}~zw}Erb@0o4qwnexiq*4`{Es!3E*SgMk<@>8O;?r z5_n_U>A@d))}{P2w|xH;BgA--RQfg@)QCR<7Vt`&z0AqtmjeBIcx7RpYNvHh!#;*4vqTlnYov810 z+b1R~zc*;9DE2}PCB_lpowxx=@Jf7v#nA$~UGeoQ6Xn#5I_?Df#kY(TzVu8Gxlnxk zG4Cc^W6Y1>UFjjYIoD^$-Y94wOYK!{Q@Gu$idJ#ADE0!B9n92&MMJD~;P;|d%f?j~ zjx)ciii6W8XUjs?$`Y>4`pCA#B%ylO=Hu*j&Vnc%WV*+&a#TfN?J^UU{*48e2wuUC zmNQ3CEwqdgknv84lux~U7mIR=e(LyVg7b@=avz-nlm;Mh;t^lUOagy&y8yIq zHF4$8IWb}w+I|b9$$_^1+5aa^o(2kkKzZhWI6zmx0sgNv`80Os*`DWY{C12w z81lfB3pWr3MY&<{g-N$(ES77J-P4rrE_QQw(ivftJ9m-W;CjE>>w4P_jl;#n<$BxF z-edzY1nty24l5MR^}eKbZB`Luz!0i~2G`e0rec^2qb^q#zy#;HoD*4t+I!HD#~9nS zmWA4evEXJd>e3SRn}YWBUnW}bJ8|yc7IT$TPWFzk?_4%GOP9x}55TxxgHfmn-xxa@ z;Y5xSPZgp8>zVz0Hrz8X-DVxz1@h!_ThEjc`92~yKn$e3?qc8W5hjYHT7nFJ*R@sEdt}1$Zw%NYT@>EW9h2DgsQlJ=(n9JIWFq@et0h2W~ z{VA-!5&kaT*vgJ!yE0fko8sjOSP3!1U$jHH477rrBPiIMVi&AM5#q%Cs`m!uUk47~ zT%i^Dzw$4qG0*?f1EWr}LW!fl_UoQ`#-GTEK!i|6+%r?fmBnMN2Z`w`*Rmy%--ujh zCjlnTzwX`F8o2s``@I-~~#|Tv+KPXH1+OfbGd1KS&S%a;eiGMh@+7amkbw zA(mi9O%4~x2e+351G<<T+HRY?86s~h0^-hgO6(lyZny14&DSdK89W#xRzim? z=#{$QJU?axsPz&Smeuh%pbMd4WfpxM!L_;1F`HIgM%C$drOx8=OpW|`D!GYW=-dLT zC$Zu+yW9(Z#?{W@-`91Pj}n$|PDvm>O*Q~Y>G*5%IYk^YfR?G}L9vWR*Snl@iok1N zwwE(uK!#nrWjD)B^$v#p#n-M9#9q>VP%6b2F4}zD2UVF$X?cM+v4fgk>I2^@99E$M zPCT(wEXhtCAT{9YXBZMI*g(a;0Mf}W#1DiBB0<7GiH<#&px)GG4y}LU+`m%yoMF09HRU-E3mh#p?1r9#4zc0Y zqUM=oeCh8Fwq2NBv{_*r4xVh`-(AaN&3{UHyLmY`ulc9H$dLS7 z@61xh$dv%?QEm4PD1x_pQkJc!RLC?5WkiJy=X%*@-KmWft%S+Ce&YHbUF3rqrN{(O z$MW!O+RL!(LQ=LFWU$UI_i5WhOs@k zAOOJ@oP(d!v!Rx?=lPejPB8-=|8VR5V_!DXQG7oRGQd>;?h|DSH$v-#U84V$db%*g zUivLwPY|0ZIIx$DioG!5llYPD&s%wXmr1>djhxoy)T{WvN2Z|N=F9e`Y$9n}nT1vdKSjmD{*L;5WGV5dS9CRNu)w9563Xb(bqDM3Df4(Hy&Gh5=tVAzo!>qs z-98UnTywcNFG+hW=EDDwPQ&|gc|5r}+P6|Y&qOZRSp99dGd#z3+HS2*u5z{~Y564c z)?%^l^@D30*dei$!=S5BsDh3Qn0ah!VR@Fb%Sbcm$#%3D`_7~dTqbc&Y$PGTP<~|$ z2foWx(iLOhH@v*S6Y-%{Naak9L;Cy! zp&!p>?y*PmcyqX|Xgt=d6Mw@K$*uK};jWbKS~&!iKeQR%aIh8Mod6o-#0b2wzS5!QAZ`k;#(^142)QVmgw+yc*x>FSTR(>-~B z^Td5KjHS%i4Eqm-i7i62 zx9Ygvvq9eJV8UGdbVFyaxtA=%*pyIVc9T4}J~!yy(nW-LtFh21x(6lyRVN4DWXI5p z|EOz|whWQs)1HL;GsuC$H$Uk_<-08A2obdKdhxXSKGlycAj-97c71WXe9q7qb@ImB zirr~RePY+RhP1fZd|v(F8vc(<2c@Kkv>T54Max_Ub#ss@s|t=^kXXykzsUXQdbyDS z;GG_Y?L_Je>r(=6a4-{md>bSF8C@0cLAe_w3MR5hBci+`-YvvQ)=){l=wxcs^vBr4 zUt^NhH@5~pdG2~%g8DeQ{iHP_`pJN|%8d47qn|zZ!$epwfB^lpL-Ud2tp&Q9F=soG zD$AOJfqQKtd@1Tr7a9EEQ^CJdxmytKxQoV{B}4WzKtQ>VG;HB)Ft!u3iZ-UCe{Y|9 zMgvSHd{WM86`d5Wr~mdedB*H{2Qb~R0Xasy$wgN%Ly;3;>@1~nV?cW$qscembJ5}r z>_?;bORjulVh>Mq$b_gv#(H-55Q9H?IU{?gEz_INSsyt& zp%!-_MNQJ>mB!__3BQcfcsFILVgqJV`MPW}=du2^r9j9T`wlghezCg`i2&8X?q>B< zaqW}%#!{#hy${4hSDX%#W*H&|)dnHdir9ZM`u)SxbGPaY4bAnCVjXq~U8mV^2O?83 z3-!9aFuFuzK{18aB4dk*^`Do^eT;gf(<@Y5zG{E(B zt?MpN{gvg{t6QlWt|-WnpC|a2PQcgRd z9uY1RY9L15$YcDgI4d?5ARV)jMx%ye;wlgiT(;`$Mk601dKppLTFu>wM?F0Z=DAG4 zE0qcw$d2{6OCxgg)A8nfL;R`8WFx=AvD0Ywjwur7KCM*iU#atq7p1i4+b%QTf6@n@m;zL!FTXSBMx6Mh6#y>q zPRT}$f(+@peehkp`Ybzz_KR!ljQ5{o=N+SB1q&S_9~XhV3@BiZ0;DO`fHcLgt_(21 z_4joZ==Ufki%DW$uQ%9Ckk}_Iq(qA_TG%rMy6g=N7Gz+wfI9TF5=UWcMpMpq%r_mSEf&kW*A0zM;?;kkNbwF+zi*(qRxbmBf2({Hhgo?#-q;JomYhX2HAx zS$x_KBW6?B@92KRYiWeER|tEo+~_uC#hA{|Qcp)%1=ZIDc|U&US_r zEmjAQeeVE=0>@cP?&{8X57buPkwWs26{;QNv09bVICXWc_^)|4J9Z|@&Zgb^t$r}r z`C?$tYJ};fSE1|z^Bh3%`BbIaPnW=3kh@2&MTAnLMVl77NDS57mu#40ljfHCMj&@& z3k^FIAwfCMkbbcFUvOJs5U#J%ImQRL^wH7Y^bLRzYzo$Tm*^0YbrHe zdfZM`(QbEzGM0WqZy=c4@u=T5k$2IDHVrTSYU8QjO-hisRG-kiTNa=J$*6A=K#s}& z@ge|~YSP{?R&^j0eRGCa5pHYMu`f}ZeMXs}&iPBmu%0&q^{VC#;Lb>Z)n3z0c>zMK zQJ>@2j4NVWIo=2DK?9G^50nb*)f|gwAa^W(S^@<(xN7*e3I6k3vuo@^hagq7%juHe zeqk{q+!m-9r;w2XuEH;5nXl2Rli!+t4W@t~Iq2`=OcM!tNDIKrpPRY~TdDIxdcT}K zeHrS$AT-lfTn5!%KmZs+{H6aK!5@Jmc49u(KRMj^z5v(hAdJ6`viz4!ozAIFNV-3W26hJOq?Y81tYpLhFKsxN%33^vbi z8GeEKZbiPIGM1H(EcOM? zQb}?+teQ)?u*#gTf;R{R{$|Z-*Nc*K4KDW{3Dy`HZC7SZpTNG4HPi9U(Ke_T33^WI z@YmY zF}NGU62yS{X(H;8Cz|~tt6c4TzmM&AwJu(dpRxTG8lvBIap7QiCE<6>Gv~`+f)2=i z5V5lSj^ph4Ccf%L)IC63YXZ3G6Ej@*_~`Y(-NzI-FqM3}lBaS4RfW=F!CWq6N zMao`w7D8zT#58>8rPb7@w$6*-B-COG?2*MNY2XQe3y0NmxuzR$9FJVuu6kqF+ud`; zl6dL{a$bRdp#`}C83X$AjKZ0FKqtA@gg!vFt{Zq`ku%kEeX1L@qpN2IyOg~|0;&vl zri5N;WA)1Jqux$ZzA7m={8@bBbO>o z6MZ=R0qR-UmYgp)`Vs&*@bNp+oqK7 zpnFInAFN%k($IS74d#&Qz8JD!QA9R$C zcNGxchz#D=j$IU1J5BcGRQ&y@$je2$XZYCh$PkXg?Y_$s&&6)#Pdvcmh|7@r7bJ3e zS~=Ji8rxJ@kS7v@7?w6db>0?0PW{R=)a{#}ipS*{*#^3@v_{VleMc z#`eRYS5R>E$#e)+GHts0jQzb7pXx0!9eYDhStG^D!589P3H)&=7)(hbz!t(NzDB7G zYLS4#!3-wTc~Yxswom;z%=b{M!246M6s^^L3{;M)@SGO`wy67~h)v+YGAFqee`@`Vj=k9l#6IlK`=AY|$Od@-yQ!wJ}v~ z?{ha|?=H2}J8d7Qn+|QI9=W}(1UaX=axtsj*z}y7__8~2PQ0!26=dN2Uqv(^_)jr? zsj%D}qS$Z8bVmB*3|)6DJr$6n7hi1S>4ntx(+W;Dj+u8CoHH_SrH2?^H`r)!sY2N! zGRntB;?R9T3ikldD{B@5c!TC0pMk^S>OC(v`MXz(98X(_1~RMXF^A34-@;Z|5-JbZ zEbJZEj6f**DJ&(?b!n<_jBYD_sa@OH+3J;7s3z9jNtOz0cB$0oXE7_e*5)e$pFY4X zm|ZY3GCsZ?>}O}K_K0Ft6NhKjM;#ghH7Eo)gqoAy)T7(_5c1~u&A}T*bKL@8$T>$e z+;vLSns-!fPcGMR6`HStgEf&s=xuX#O5z+cN)I?wgb|m8RQ_S%BuLA{gPA7=-kkkAlU5X%4dK>+s^O;=jVJoz#EF^KMt82#z`7O1t#pW9ibk zrTj9nY)(LLb&d9abn1M>){CS}`gI~p<{m3Oa)`;Qvd()QA8Jkzo56N@SRu7}!Ejs^ zm{brOG{bAik@_NVyXiB?Xo|hlbpm`1xkfiN_gJEn2gwK&lxT*ieD0!0@Gv&VwPvci zkefZtrWl2-f%M$1PVl`f6tqdtpy$S|whp7OyARi??~hj*SoCiQwb`Z>>3rTOS=-* zeEYWXq*#LjcWZf7Gk;nh;#>@=D*+{CF+6V(5HW8V5njAXs9xM-mP+t^EB`R=BbfAw za0|%PcLi+qw{Hs9@ewU!%F#WE8Gg5~&RvCYzSluR*=1CxO8zpz3tga7q4yd-70^85 zStmeHw<5A**1gsf?;l?HQvVQ_T+SRp&KVCG)j0?GbW(jl1P7o{PdhHjj*aLadx8s} z0r+NqtDquNTVb-tds9S@Z}!V%Lyi9+K;yp=psz+1j?hnKTH{M5H&eDyN~EU-JW!1z z*yJ6XBn}Fd#4|`NYmP$x7K?g3;^d(O~x82#a zL94b874euQFOHOB zg6rQs%V`Ip&)a?np>1-ozbowXuhh-iN3b`jp|l(5-;J0=c0VfsT#I5rh&_K)4VHhv z+^5KI4VbMJHmdBVDQ|(sb~Qhs)Y#DN3ZC#j`O*b(p3w4>o~W(tfpe-tb7A0&p@yA= zge`|T64p+i8V+0-;KvF_icr#Eq5%pzRJx-D(2_&ph{{<3&U3q9%DZ&?(#ttuYCp5u z!@hgX*nFcia0h~Ey_{M zFQ{6<9SyS+#19;O|E)#5Vt*n>gM}He2c#nxiyslzLs5waP>$Mc^zi#BeXUsGE^)S4ZRH*1g69QTz-Bk=~p0 zDuy3Hy8lYOCMo%yn1&W37>o!&cDpemJ9MO*esUBvOEM@6su1R|_I9`zg|fGy1+p~K z(WbB|dd2%z-k15SyIp8v2d7iG2RWj6K|Iar9dsIu`EF&dZ$<3YCDBR`3GYl{a&_&V zcxrNqB|cMGe&?4C&3DCndua7BQPO`NQRe#H2SuG#>e+1tK>@ey5>sMgPK`>GOOhPV z!~!|H%sjQRaZ&h?c6wo!Jv6SpV@30F1ylUHH<*gxM3EY07rK~ArN@6iL%6n>T76@E zu9i!qN^GvSESS3D*-I2WW?6kBoD_Y_a|HJ7N9sgFHK|H5+J(|tUbUZ@M$E-h-_|<|X|u84Unc?5 zUZtWG9RebJ>w}QUX7RlxDAL5nyHBDEVb}=|4QwDy2@Qbn2mkKlO$X;*tZdMS(JyJ- z)nf~w{k8h3M-9wH*BeQmk1{6esRvaiD*y!K@jD{}0!0@9eQ(BX1>p*itNsf9D#>}L z{ZB~}vE=wluJONrxvO*jJI^Ys^a(B`eVnn>Wl>u2jX-u)9+HoscQtsL@A;5MN445q zAkuFbKVa2(ilh>rAWR?#!vp`h3Kb>o$TM!DX4k)07`k^kQ0xYHrl2;V1F0F&fwn z+8bJ)RoySXivH{HiWr6PE#X^L)Pe)@{e97lSHMn!R3RmQ#OuD9@Zrq$oSE^}Q^~|{ zMKKijyN6Y%)S@xzXo9n6h&80~A(>8GO>$c-U2GW4+A6(auH`|veah~WK|@!cr-Xa4 z?`vPOEybAiX<&agFpXq_f*;SFA5|y+nRUsd=UU5!z0b}m+#i%#yZ$~Q4-7Z?T)GF6#(0(Q{D90%=_>7L_CqjJQ-JqR%3#b`R7$|N^S3CHSR?rPIZd>bEn2?Y&m^?@6VZT4!gShrr8bCvZcQpM&);9 z@snJSA2S)6-`o^oY;;gIi(&3#lg+Ru`^x=Sli}mPggk?xuy&MxrEv2ki2qTeCn$3t?__Mry;C)rGI?PzTsQ( z`?RG9pA|uRZ2B#s9mf7oDQuL=niEJuw_4e#|1EH z+EhocY3o-Fo@Vvc+(Sz}Z6xJVeUtVX=fsXJ-6?oh!Q;)j#A8QxN4|S^%=qh*m`=@v z7#oCGS1}i6`D=g1)(9EEuhdmeqShn|jD6h`7q*jo@O3#wW7+xET!xB45plS=e8Ux1 zT;q4=H`PWOnG4Mydc1XRUWj}a^|jr`VX!qL?x93=cgn+CF3gS5wAc%e`Pg~Q$BSN% z@0RMb85MI>dne3N!&2OQ)#B&^<2ZVgPiQ#V+4*`?M#b4Iu7Xc^qOGlJRA^|a!}Ewu zx6^_-txqI6G#?r;Ks2cKYd--n5B7tK)i0WM=?*Wshcghz8lqZxv@`b<*+8K4R;V~) zcL{T_w%l1Su_Rj%a72iZew|EC75I1xe01y+U9(iP#fsPRICPNq96FYdXkd>l&69D$ z^L%7>>7i+I1nA+@|A&nTM^Qde(HQr=t>cD;J%aUFT$v{`egpL^9sT0(9;?@r_l-51 zVJy?$opf+Iu8G=n<<{r7zG9V*(vRd9&Q=U3Ow>A|LurRfHMyLns=Eic*2Z>=WWOb( z1Lh5;BffUXWeYu=igmK;jIF=bZ-2DA=YWOd9{>H}U$WP9SB8I*phIRz-X$3)4=k`9 zYNQC2c!pkdrjBnKr>1$POgB2q*Wd}OF(AuxpwZo{(wQ1~s{*IGz35m(ChnSVIG`tGdxg#JDbe?92@5DSD60bpW;9gTwxn`js^eh0@!7 z_(iRPSm6WqHzu;$UUu7HmHFIRQ#rc#wb!X)lgS5=WVxl6Z5xaxHDZVLmB$iB>7bHz zzKi)>x6^(&3$1w!kWLqF^BZI6mCU)}okQ|0&i1xW|A@H*4|N}|`|vs5W6PHJkq!l6 zpNw~k6;A#K7&x&9{SFF;U=!p4_z+H=ukjP9318zt%Nsyv4o$`Hke8+vFb2M!2(Icd z!N_y(g05oHGRXx4fHo>rgopBucK4FHZkR%H6@!zhwrhPsota|J{2K$8=1HjJ-(?qw1FGQ2J|Q!kD4s(cKz8d0UtYx zNwaxqfe#q1JowbZt`p32R39-~8j~3G+vpz1K#&0Yt7$xX)F+^WhNr|~($>VGTl*NTD zx;0T>?)Er*))cQUt{mPc3;?GDI4EafTS!G)@d-E}!wN9JFq49*8vj`H(5V>fiZx8V zTnt4stgJ_R@Mu&_fGbsm(QKhF?gNs+HZVKGF>zflpF|hxkd}pFp62L zc3-%GehSR<_U#;GmMdv|n|HJmo-ZHPzl`lhTsu{C)8ueb164;f&*Y269cQ9nP`m9Uw=>R$?PWtFn)NShh+IW{BE< zT4l8pQEEkwS%ue1R`=9kHZJ8I{yV6o!aS(ly#3t8@VxWy+C2U`aI}0_a@viIKt`(; z696cEp2FU2LTCxIRV2uEu>fo@EtNc{%>gtBEIg<}P z*Dm&dPKgS&xNzQm>FuSup_rqv7{C3>Y?jYk&KZ#@!}1I}FXA3e$CdIoF^I~88xh8A zOx$?m7{%8yHy^UcVBYhNopqXASo@J{zKipu_yxr_gYMANu2ND_T(Cb{l4nWn7?Pq~&FD&ALsXU$gDHGbZ z#~yi^sx`_K|#%$3at<%Ac2S8l1keJn&YMlb^ST z?;+~xV@y15ng6{nR&f>@m2r0`xd~}}4Z5CgFWzV_u~49x>T8p#t60cQn4Ritn7Urx zO$V&ZUL9pj->XLq-c{JTn0nlvPS8nFin0Ip(!^7Iqv>22WEIxn8!%wiLJ^tMXy9s8V9Hkz()7wyNU~ zD#ypf+ONxN#H*%H*b63iF-JbkYhv9Y?3kbawB~cv!XtLZQpHlnVx4!HglK;&3 zmUBpV_u@&1kT6Qll80}r+-7$Vj~0{D9~^eCu}s(`M&>+jL-lOHO(iOV1~9tH_gS$O zfRJOc7pdkM)!Z#GS|8r)OZJ#)tOelegt8Q zDJd+ZB0lA`yQ`#Ud2;%DMA7;4CMOC{o1QpftNYl-VV74>(FaLy&{G8O60Igf$fFA> zx;gi8LE|uUT#psSr*`X7w&n;@)3}Ldm^V@FweAMh4STi^)%0t3C`(7Cmvuax-O`rT zaY5d=PQ35%rLU$Ey|2tRiUdlo^f2TJ#*v1Xte6|dM#R7)vI{f%g_GxsSNGh}nL*Dq za|N!fxq|B}+!pud{@QwBM|$G?i}`A_ctcuAgM`NBm&$JN7GGhb{zVKT8vXZS2%*g` zS9y`k(e|~~<)$2o)h^~fRA_+FCXv2&_8bpSR=`7y#&<*G?1fEr7YwXUT)F%@?bg#@ zO_J^xigttW<+uj5mu^0k(9f3rEcUbB9|-BpT2?#KjndrOOKo**F`hY)Qc|C%Q%*Uy zn$vrGouwi1ebkj7SGFeqI%wz^-D-GDQaWu9xOUmEm}(2O9iEDfjeM#$P~txFd9L`zY)+o_JbX9L-IoZ? zv%;_BK7kvyt(AS}V3=8ZONG&H3kNOpR@1eTqTe>J?Zg{(p z-maWuvv?i-S=W4PFR|I-*V)1YQ`*~GCzlzCh9z8u)#1^$qkFHWBVJMgF%dKQT_d|Z16 z#t?Ya)GHfV1&24kqaHhQFw)&!;!)QCkJ?t^|8`;5_lQu1$N}xxi58+;HpnKC7yo}k?TCA?_kEYhj$P0uz;|G~b zZQ18@ZZ&W76WfK4V4xAO+NfyS&%( z^&bw&FC_LLFA%8W=UHS@Ge zb=`m3xLCxn^4|6;E1rm}67!30T~jny#4yWU9~ICKZh9fbnS$KW51Q!r9a|1A14B ztUsmag9h_g$=aThd$+%)c_`i{tm^DR-5 zl`logm7ZNxE7u&M3Ul+d8)aw3upP0(=s8*`|0C+yF!!NTlRv|-$cOp4C{?bDYVXN) zvh$3x;;#N)|6pPw=eVC{!T+pczF>LgU<&OL8pN7vq&K4YUnP;9jEW9l;@Hf0nB}Qy zhSi{U=_Zn&&j#S4Y^rB!wiICJ!cwTs;+o->J7&- z=4JHE0r?sA1NUA?Ul~sq``XrHLiMp>wX?!L1`>ePHn_txGjV+Hk}ti8eVmU}yHZHmLZqfKh(k(T0@jd>j8H50O-x;Xt8?+Ck8msSpD(C$9t7v{0Ck;lH4zQoT zn##S@W``CwVuWjMT9{9|Z8mDp%^xVc`D?nNGTZFdjmGO?gN}C!Hn;vQK>$R^Xro%| zXA`uMLg5!rZ45WiXvunMh6ccPSq{l?8m^r#iOk|6F_`D$*2Ids{N)~kq@Se z$*$As>E^3@Q{sCCl+^JYV{8b8GMP-tSGYapxbJh~lleBM^n{eZVDTdUP>1C$K)iAr z^rN8PkhFc(oW_&b8QQnQQ9N0%^@ zGtNUDB7Qq+%F*Lcr{6N~!h3=%$J5twrZ`UR{@p#5tkd6awU6xin&{y4@Q#13@fAsQ zl?SR|UTpKMG4qOEAo3%7tkkK(iAnKS(xk?yZ?Mq~~UP zJC{VA45@gX@+o=NIAE3m0RHOKSU|0MeI4L}?)QQ%vVbQryZ+b2Er za;i(T>HTy`bjXa=SYA@;ou!SY7!d#6Lw!i-69i*_-Ex|45N~+>^|1S3!!7OKNYq{v zxu0arNvxKO1BgAfME~j%`7X|TLXW*5JxFqLDji~L5DSW;Q@tQFR_W-Z-beve)6rA$ zu8k+>XRofzid^oh)n=4qS1k_dM5v%vnPjKQ8~h$oa&P-P@p=x&O^Wdu(xKABUNhV( z=jD>_cijwiW~@<By$|KBbm8tn)A87AE z?V9x1If^}(ZGzDkGGe&}u$-|+HFKPm)7ll%ZPDf3$86%L-1%EcFYjsy@tE<45BuU1 zd=fX2#4zn`H1Dd}G+_Fj;-?FPDsfA_L}*|;dh2X}kMrqJ^^s8rQPp>9E<9GGOr3QKA9b9^qxi{F}GU!BTQue@RN=S1^B# z@Wr@35yp^azo-!CB|~j0<|V$V{LmJb{)cW+7&yZ=m{2<7h%kmvdmZ7l6e{Cxo8@iA zClNHMM@-TUf?lS4c5r={^{(^gUy_P&=ed_aMo@$TF1F^hjMpOUJFHM%W<1ll&~h^L zNB0N)p>CpC5ed_A3!~B5zPR-@rIhjA^cVK@>9F>W8)vW2jU;tjm5w4L$6}#=Qj>re z%#q>0Ir4oVl5eUi)X0~ zch!^cr-kkXWBEd#L<-;5CX3Y;MswC^1gavxLHuaunjq~sS-afkwrtcsvy z4ymof^n9r0b(zaF2 zs84J}=z3Pda{ZOu(B*Ou>=oPq&!5g97IvzMx~57q_!_M$0j1h&%LlT7lOZ4x-JB#a_f=t%Rm- zy3zWuUf)CzHrIvo@Gt0eM`zZwh8_leiqtf!{^eVI{I{2uK`9?@?Q8k^SmKoDv4=J0 zX@kw**&}*$MuY4|WH=20?-0J9l3N^t!%KB>UuLX}#$^|$n%U&K>x0vJMA7o3erK<* zF~rhj+kR&hqyYw$@%_Mb-^r)0?-A=Mk-_@xx|V#}7i!{z?p z+|9(7OqS+n0*F`kgYZWqm;nrxKETUu6TY6l>kNZQ2V!UpD4f}7Q0tndfKyhKX`R2b zOsg10)N1udDdZ8_@P5yKpO76^uMy%@!Xy$YK;y75(gsADc3YGxQXjZV^?LshtNu6It$mQ}Mvqynwg zGWHmy4e6Ns;rUL^d$sbFk{{mQ8!G9&e2?Z)q!ardRG4?{JihqB&hoOAo&FK=Iq~KH z?X1x%Ed5t14pIK5rr9tHlpDONc7_EE?}Oy}Vts=lYh6Sh#k?AND^PTrv7GE1OXzmb zEl{Z``Gh;M$|k$j?7@)3r4K1v;>GHxodFz$UTxcUCe@sOg`FN;=m{@&>$YNrWelS3 z6V~Y_T^E*fHyBr^JHWBQVyyBC9xt7E{|3yV98}+#5}*Dp#?m3h{?_f-utaJr(dU!0gPs}_wQ|3SKQa~U(P8pGc8R*Ty;WYZ`ZO4J*xJ;R%J@J zDR%i*%o#I&ePZo~OrGX8*AtDoyX>Z-5Pk7^7)6}_bpDWA@z*<%&W+bGtYP2V@lpNG z6fcFGVu~48RcNh_>Z(-V_`PsB;l)8VMyW?S2n}r99jJuh)!l_Ul48&C6Ln>NJA~X6 zkWe-Fvhs7cX+$dvUlL37aVn|FdQ5vr(b0Apr$Kk+CZVx?1X(O}5>!O(k z>D;w|a~rI+>hLzl)mOS4b$sD8xO&YuN5WrfubtC}9WB0kD<~f)VRDOGpd!pdh5g^x zAI;Mazem6Kw)tQcH#0c$HDbzgN%~H+R1TF={4TG04!dev;ee)+#ivn~dW>TRdV~@B zoja9`3e?&Wj)mqjVNj%WUGKAQ&3zB^hLTho$E!{h*4F-E!%P{zghE}wF2&F2|Cqei zH{D=@+5Rm!UHkky6gqpJDkoPonKVm8%l^!mm~rTyKlT2|-|0CwjW+s})O*nje^}LH zM$ri|%CF2TO0HUYX~i8op6@8XX0YJN?&xa@W~K7XnVTim{TE77FJ`aND;$;e6qI6w z=?&W(-DLS&N-{>(NDm8oFO)Ki&N=_}y)d?%Sy@OQDv4^hE$+oE!K{&!@j3M2UQNpT zZ{e-=NmAIwA;Y?Uzcbu#=Cw?M$bXJds6BSgQy;OP(CF0IQh3sLbnDf*0ORn*S#rtQuA=K)2kE|JDXtUpDE6awtBTBhhAwdfN z{79><{43WB-+qrw|k8kfY@y>Jr4@k@fEmP)0hA z0xBNvLi?a47^JOc|8XYU?*!$5WF#oh3HT-_dO;CjXG2ru2WX-ah~EeS<_a25nTss? z#vy+dp_sIPJN_%R{5!P_hNglHUlz)J-;N0c(uWehkqp<9e?0rA_jZ>ub7D#HxBbgo z4Qwv83(_+R_-6`4)3$b#)@7O%%(r`TC$p~Ji90hYl%%3d@W|O@Gu!npLO9s9a^pGv zYZB{Ge(brn%Ev46GW5i|h{6HQ-sTOP#coVehH|*=_Y7ZAi0e#qks&E$* zcC4B8!!NZ+b!jTI`3}7fZCCfVen$`q>145a!%hg3UISu}9N02nYyGUuK>eSW*2jyY zF@U=i5=gJ_kL1l3CKM zAbA8i-qrNxg;t(6mMk2uL!$oFN8tR|U6Mi>wJpFDBwFm%PfQ5AR+C4Zg+I>h9qUIl zcsL(W{^h6Zx&QPZ6vrdKR^|Pr$(NjpKM}mENoxEpIHmqSjq3c}Z0_m<#^21$mD;Lt zX8r3WPKUt>|-PxFjCOCPn)Lq7Gytlf^zPa z$wV{*gY6E1hR2n1BlbUi{D;QI%usL704^C%{*9XJ*=v89NCR$pOIVBoq^#s&kgO2q zXt~@F|EWi9mJp&%@f}>6c@dJJ+L_3>P6MCWw2waJ$1`q$FBbQLo#ANi8A{~h3KAJRkM^EM)UWb z{#1k&58=^2c-rb<26d*)U?&2kEtmmEmKEpiA$-l=Bu7%tA!aH4JEoZq(xOW>=K1xeMXw)K!0m7ET(P1#`OZ>wf z{+Bc-@|M=Gm|S^8YR@$7TvC`L9)n%f7r)0u$Q~!~4CEH93lA!fvG2@&fA^O*ZN39* zv8{_d;GMPHbw>;_7;s0c=j@uI@wTr!vH^On^D}nJ}tGUu) z_t&f*T1HHsl01)tG)S~$$iPairLU+^lOHE+cdy7#7iX?E?oO14OUV4)a$>o{4lE+3 z^=V+N(L}T4I1kGMG$(jHpespUi1x>$xAL_!&(3m(=3O^$svs+5A&5+gK$3Y^$s(F@ zfAHcsra0Uq-$d`7YUlx|UcPaa= z-fp~*dg_F_w6fO~`}vI3j;ALOsdw(+4>^gS4;1DntwA)Z^BwEZjg~B+;Mx z+pNGbU^YURw+a84iv6e3MSS3&^#woux_!-QSwq%u^@t5rG7zc;@-up)5YwW}6;(tn@RNwY7$(7LftIp$9d7i^UGCVV$<(;Bemnxlwfb z2xWC8@wbMj)JSGz5r0Aiewl1q32p9vsi{2tyRjN@y*ehsO3kqRo+Jm#JQ&R2cbp_p z!#?#~*GouRl3!F@z9Tuyg;2TrG_6syw4>oRPMW2Dd)00zXUm*rhncoW!wn+y>?OJP zDOiEjyl`z?@7^VZR1qa2?U~{*`bW4lk$Yn7lw*LX`2Q!d=(V{3n5ge#g znP_!sXxQjZ81!iww6N9oBP41825RBlGA)kWbjCmfu0JE)ah!_N;|cEK54eXnV!t)- z1!GdgpX}^xQ-114kzx{R0d^p9ZqPfTfH{0|^)L#gIRl0LFW^q$$>^2aO`Q&TZ>(Lu z{rmibGcFDNe1K@go0T)AiblDsIWPb;G;Z2pF4X*-!>ld&&F_Sy%_con<}2Wav0p&R z-?67sS;&R=XvC_jr-hkA0;EydN{Oxs5a&NZ=WPdQ%KKNUM%cgF0QhJ@Q?oLJr4q>} zo-##46EK3rrHOC6qYN<{eHDz`m=G$pI{ME)fG<%5YRnyG!%}Nn`P#$yQ~ly^Nj$Ys z;Dg1W0h=%011GFq;Z~+LY+iQedYJ9qv!~}4w}Ii+5<5iVnOH(yOZqNZv?QTz-pmPb z@b!_8I}}&_=yp0aI(%EwlfJxsTiMU=V_5Ujn7@r=PdY1)@yX-J#$)`*XZkcG{6KmM z2w!*bwBw&=c5lA~ldiAbE&{?wPK*}r=@|lRu~q7?eE#usPnCM~@8SHlb~tQIuHjsd zuOi7ue*ojKsG@+Fo(}%Q zLsoxxSo1ftdJHmo89^2+o^gL5cOX+C`+*q){(B(Z^VD)EVqSf)Xj-uHosC&iah=P#7x$kEZ(3t1CcKPvTguk2kym|oDsXN982urz5Gb|-* zAcSVD{G?#-|ELm)*mX)a3iW@1T<3Qn@V~F;EhG;IKaFRAVb)h4janfdVP)UaeKn!` zA3H9HM!R)8M@Uua$pu=^BU(Cc9krocIP~D=@Gj_}M?sx~y~P>Q9alMu*1R=_Yqsl# zmcZX`)sOb}Z}}t-dVlyH_lFPWPG2xTapF~N?kfMkrA33NuL49aF1nO84nfYsDmO11 zjXy;vMo0(U_B1G-wc4hb|L9HT;a@Fx(vCg5W{KWL0s-Yt=;s@#uZG$=<+uF9mSd`E zhdsUI(8^Yc&J<|pd)?`Juf2^39VyV)?i5bXh?da#>f_mM)FG_UVO(P%N6W~#KXw0s z*^^fF#K8S1!jEe&cD|jasD*kb^f59HVLt_V58pE>LS7Jb%-cxU9RI5>-{M4i9Nqr0 z;YYVxisK(znIGw+Y$vBQuZcorv}di*km^!Q&!^v0Jv&$>D=hwyW3i{f^&gI#o9u!! zbw=2TUm3<^ICHQzSnvBG8P+TB5FZ~h5Jn1YL^&FwuFgA47)KYgLA9!uR_6wI*Xczt z7JjuQ@kxJ?ysPa-GlZYBh!|VjHk?954VPXXPOrg)fWEl!6ie?54{pAXO8N5gX2 z-RiM|W`z!g4&m`qz1qExIMq?XC-TzXG<4G2@^*oc+4J6?+t-D4%iJb5oo3~;6e#t0 zSFZ1a>P=gy=Q|?Uj}5+{)PrknE=4$vbS+lt)3YqUUfo6X2A%ZENxUeOgLa;1hqzDm zBAo#mN6P)-zs=bAkT%9b+j}2TXW=s99!7&o-`qNqb84onZV{ut=WJLtd;EU=@I#^t zEAA8HR8MO`%D#I^Y1QY7KBZ-B8u~n6c7g4+dzYn?m$G88i(CHf>^o1gukNYnsh;}s zaBhV~luYy6&- z)6U-ecR9Tm6ZNxPYcV!HXoS;!FTc}EEl~3@W%r+}n)_X#iJI+;BBU`~2pTY&_2+yu z<~>xI*1+}tKRFs=&*DFY@l;DbSPM)U4Cw8qgaXiv@tkh`>l{2{4dwkSC36KKSdZl} z2UJYdDjM;#CM5_OFxqVCBr0i4Tuw;NbcWRFxv_DGhnBUAbtvznhJ$Z zv&kc0jgZ!tB=3t2i_Q?=0xGv*f$yvc1JCKfla?$^o9yuX*-_H)PYmhlBX0zu)1)tcQSD4;aTq9g)~jqIcZAwEP#cLv5KUVw0ABzh*@Ga2hHH z&dxhg0j*57W^b>Xs0w~~A4vOud&W#SK$Hmse9l*Lhd6%_(%t+@7$Yx4RR%-Z^^VGx zOgTUOuthjfj0Cttuo7s;QYJM5A4X|KCqlr0G>{VK3OyT77I;Jp_acRUQV%p?E#B1Z zIuJBlj{Rr$9CJ2^1WKa)KuNSG>0hap=2d9%7u#WB9SG#bcL@j_0iK@KEN~7H{%HQs zs3b5;Q5;oImccS$Wt{IL`y@0$Q^Okp^zQQiu=n0kO>XPHuxlw|M@2+Mh)YB)6bnT~ zh%Of*BA_B5L_m;U5{iTxvIGSIAp+7wKtYPMP!k|PR0O08NC_bcy(gha0;H@v6ZgLN zeD~aa#yR8e@s0C+WB*AK<~!dx=kt5Ye4gJUU=iaUf?(E~)1ZB;eoNc_PC^Hg$+I8x zp(Eg55Dl2+edDm1pUvgTY_O_LOQq8qXexTe0d!}|X?e$A5k6!sSh)3g&RPk0*3)xn z>>`9WxAuS|01Z4BEY`a42X$9y3yDhTG~%cHWzddK75o?ymVN}wrwPL)XqvDkAMM|? zdELd3M7Aa|ii2~GYvV*qK- zt}k*Uv^>etTIY8`b2t~!5N%=~{^uj1s|M=4>Q??f8o1~JhA4>5YM{@E{oKy8A3@AO zIA1)kll=(I^!}fd1=)YZ5eX=3PKgUmXQ4TUysLsT8~)ih+G&#Lv-fE5qK*SKWh?if@;nAe0q zy8>OPKybX%L3aON8@z!E*@$hy2+uNTcAZJ2H$W~LPVqfb(pUJ_TojRm7JdhW_45G% zFlftzeYWw9{;A3wJkG;nP3jpOzZ6OyZl9Oz#gcCHcmn+zXd0JE*Y?d< zN%Hn9j#=X4*D3y)aj}XCX^u4tdoW??8oe&d= z?SJxh1Oq_8ilO_Ly4N8r;fiC?pFPm@KIlR=SWO2$ls7eo?*yWWFa9YHYyf1QV9}3a zLjL$u7X<5_CuuNl{n|z}izWPp6_7W9*EYT#u;S^XC(*?9qiH`MjUI8P0XYnTu0sBH zlHa3ie@gJ*MHJNL0$&r#7qyD06a154I(~d7;zG^_zl~F@%NzVQKw{9)=8fyW8VVot z_wu!vPf%!e@!ku^(4{~?Fe_D1`cJ)b1}JE7b8I#DcV)EC2b_sgfS3S6M*p-$uSy4P z5K4E&ufiAjd1FMRwPUc{-{N@a=b$^9Rm;zE7$Q^n(8=ur-3fL9vifaTB`DjRTXPZ) zfdgugpeBB9KUMgi0sqF-6F%eL ze_We{jzip`(^D7a@j=(^oX@Igj1lV0xVKir`$*ebE|idoE@OF|<@cp9y!T4BbCI8H zGvk6BZTHmlhu5)1!H3g6M)(i<58iNg`eTufRvyrAA@?o%AdgnpQgHO@&1Q!#jy>{m zxm@_mj*YkSY|<1iUV~e7W$eOyg%GE-;ACc9U>IHVg}83(o2suv?d?)eog4LFi57`I z(Su}<@Oua7N#?3AmbTiY7P4^>gD|J@h@fJE^h5Iz<2RUD^44a6^dHWLT2nqQ-oH@`b}yNbr1#vW3Ms~6Y9x%C0= z%UiYTl7DTu&$}@07X{EOl2d_sK_>2rm~NiP&1`(=`F*V>bcOQLR$W5v{8kH+^bGE- z)oH>}JacwtS(X{)x5=P4E=+$8IeRJ0+xavt4IhBDHztTC26A6mE*gs<}Iuo_$ z*_;A(srVkTUWcoj9v*q6;&M28|B0?mi@rvs@6V)E!p&}asSX86IjBCM_odkPde~La zJ)9k7VNVmTE9_~DQg~R-7C(2*-7Y*(FVUiAu<@>eQE4JUefUr4uQWq8#y=ReTLY{G z*of7|gvbf`CVk?|urZL{b#XBOgQ(c4za#Y|Np;0IPL0Cf3A-BIJcitF*L~x}#?Q8& zCYI>fT;=4f8D%kq_^Lv*!a$h%&E&Ux&gaSEjzj66S}o4 zNfqq`{d4wF%o)(Fvxbv_@o=z^n^XP=viT1_{^vMt-~PKfZ6~C&xV3e^vZFa2tVD0F z%<7XN>6B_{DB3STvb;{^2k{}Iwt*`yh9OrX#s~zYYeC&`E6`gYJM88mtIFIs`t*#= zGnJ-8Cj_Vmtn*bT+63?s{Cie^0nB!Y#eTp#_fyBx7J7&+t^Adog^i%^7Htd*GNsc6 z$olP5@~ZX%(c?#7kD!X;Xy8MT%Q659&Oy3bhPVBYyf<;l#g38J%vLlORR399luwZ~ zyxfiNF>if|HR<|Re|O0)|KOX~A6f;7tjFzaDheJ#HJ9_X88Xo`T=rMZXZTqp$n|&a zGXOIOO7?N}U0rWP{l%IEmQbBbMD z(DtX_BC8BJ_0Uxx?Ack&(0#CHI><+!9JDf5*4^gh=?_7pX@>ZMtO(nlV~+I#&2{Cm z)fZ+Y1Yl$>biO>$X%*PRG|nPdoHNG{UPlyF$8kn@B)&3lhz}f2ceP0xe*x_St|%oy z201$jQO=pg>`zyDT?ZDD$7E zAJE_g*dTdIJq=8mxoM>jbp76_!SaiTi)_N&9 zj5oH+stf$bx6{OM+I}r%a4^v%$JL%iz~n__kFCnH`*|WiXcpe`?0QZa7Z5J;X86Ny z?L^)%p9y^B)BGj|m*&Lol~L4kQVjsd3!sw#A*TOC*Bbz1R+-b6{!xr4i;gDpezrKj zCi)-{OuQ$>v<#LlqM zDU@_+HTD<77Y87i6t=q&ynUtX0z7#3jg>xAzgI_#1ai>HWd$dYZ=~cs7~9NK6GLM! z4YnN2yL(Gt{B(%kFNOjekAhi<96@`~ElUP!35(*O_}Dcqj!Z9KcW^*LuX-D-4%X^a zSV`j-n7HaD1RRy~>Wiyl-9S`MM3&0^T&I&!YUg4V51kwlve*D`{vX1?^g{;msnvG= zO?W}j`kJKRQD}s#0WE9Lw|0zz66w|a0GdXcgvrLY-KG}=jnH6*8i|?YAAW&!?|b*| zw3T-OhNn|+{odOP0OuKqL>Ts_PnYpT0PUXv@vjZPTTTD9fhP|5duR+ea9gy&mta>r zLGUqsnzM>v>+v9%wIY5`Hsm*#44Q|d>42yM0qQLYMe3D}dhPF!FYcdM_?{k36G zXf8f>Scb|}Z}(sy?^%N3PdNcQ%>J@#c%CAZ z;(^+%#hfh8MifJNI4LlQQjeCVkjw1s*qg0Z0l(kf+ugi|KhhC8dizdhU+5CvXS}T! z96J0Z1Tye3nYKsk%)=lp1m%-HLB0Qvk?QSv9w_x%b>qVv`#g*nyrcNtpu1~oQ{_o# zq~)O-pd!KkgYH?CTSYq+L8#`D*I&5M?aI;n4)iCI*P-{;Eo!fGqvod1svtzTP zx0-FQmr@o8GO>;8KdlI=kPXKzN2VF+oq-_(u%H~Lc}rH?N_K0D&+*p5ikEO_^Y*fG zjuv6N7K@w`l$YXf|0p&hy84g9`d)svZ)llde~RDq0R+GN;%5}ASyJH&aJiBX-fXC!`|n8 z_w#yY%y;3S!0lwMZs&v8Qcn&?mbM$(gIK=;=r|!Wk-UVoM8Hgpo-yP!@fH9D7#y-h)V1Q)izc%av{c@K5YJ&tY@D5$g*L*D5te=k=ARb)@5fzT@sE>%! ze8W6rZcaaOFvV1=I@g2rKy%kb6P>>DtYh>9TSP`y!$MEO)xGf6<@Fu>MXo>8}kGkok;Xfc!WJifYk6bb+FXddh(gL+bhDRZTIB;o#LV!6APky!x7c>y20f3(-Yp ziVRwuTnHEyHDtm2`SQHMdCS7po^Bqxj>TN8(YgkoL_dMkb4p93LiTX25EHZ0&UMrb zXk}(zf@JUE=p2Er+O5$u>eGOE1)(5Vc6=2sdTkG{iLcHB#Y_gN>irfVV#HrYZ{Y)U z_a+iKUhYCg1);2q)o~2PD7+|WqG_n67BD%w(dPl)1&z%V<}7x)a{)-FuC5j1MGWQ# zYQ>Ymp=^2F2Wqh680Mfvw|xCG!Kt$pIXRq{M@$*-vUx!Vj}*dk1eqmRV%G`fgjIbRC{CP+W;Qy(mI)q$N@ zM9{ORcYGX3iCjJY2vS*0YeGiPH%_ql0Dp$R+%>(+Yq*?_Fw@)DoPDD!OdyxLy_*D( zaj_ym!)8TN02!vG0cD7y9)??Lzchdhh%;-l_ZD)vKASX8uf>6)(>+Aw`lye+$*Vhd z*7@1{NS7*qIOZk`i?Ue`Ba)waO+7Hfv9yuZ@Wl{~#bs;wwp3Dyzx;WiLSM}kCRV%1 z4^-fbB?m$UR8PBXsrJ#plqnx8M)Y# zxsHB|G=RAq!`reuW(>+nDANj0SRO$-qP`#gAQUi3KiGe?%-zK1%srLTzUJ-sn)P)y z-J198a%l1N16D9NSAynswEpl3^|g>zUle1B%4pFL&zow6*ni-1}bMb?na3 zj66ZQ%`~(gOk1&PhyZGJsnh&)K|MMlD8-3c#H#nsZf#&I{TM8Fcgr)^uOMh>g>47* z=m9|qDRv`c(GjK9&bAow>v@0P{U|Op7_IB}1S*qL)d^aH((&{IXP^*u#&9+zWiG>= zBGP-IE`^$s7mX@2)~Uif+`mn~pk^>Ow68)#dFL_jidX0Fy-#|5+;nrouW3JzU^yVa z9e|m-xmrZxaQs%1hB9IVmnNts*%?hvF$GId6`fsAr&r)`EScAsJ;CHv1?|Hs<@fFt zH|Xo>@73OW>XeWrK7>EFy7J9RPOS)P!;J)Q$)v}H5A7qANtO|?g=&CE;{km3U6Y;r z4~;|!9^WUa@jP>ApYIDgV3a8NTyeI?#Bgt=?t5XSN92EC3izz}7Q zR04uA;;BVh5v3PQvM)I|kD6{(iJ%G)Eu_3UJs%{fJNVkOI6A7c7to?c~%a zCF+t3w;G`y*2HMKG%2c;4k+lNK0SY5l*Nhg)1sCpoQ%5_lPSpRn)#&*EncS(XeBWC zOS=F`Jc!YwnN16ZOzishnY!v(LuMG;VU@`C;`H!7l2g!}PdwlinDQ``wYnZ=-evQ^ zZf5~5rgN|Y$$K?8z>8c`&a6fgaR&14cNuM#9l&cLp*~cU5VFIhLqxXD>S&;z%1Dw7KE1SL*k11f%j`-eZ-O^@Vd zfSQq0pkZ9>{ZtEMA@%`oV_-)B?S2zTnQ~Ns>2D>V3nkj{$FAm9__jhpY2eAe6y-ct zk)F5dqmujn^wyVTvgG#QFDCG9ZP&MjCYY0cb51^)I~@Mz{nV4LUpW>&3;AVy(p z9ln2QZS`ucIw18pm`bYgiJo75_l=D4hPU@tE~#FOs;}}<8fkMq)K=%??%=r+XKd2f ztFNeUd<&~k)X~-?SiSQ+*ms^;7g=1S7c@ReMfdRRDgc8c$o;FH%SXb8=6KVKEfIgWZT)?WFlX`VKh-k>E?GtpxMT!&x-#z&*w^*F ze{IkK#D(d+U4ouxQ|k(XFDac2^tuZ8hE|WR7MS>)EIzm;2tnm6Fh^+PREU@`5dZi# zbR-8IpU9gt92Vur5Sy&{{aOM8DifLvzyXG-QcM3@Ti->2rmcw<<9G%=1GV&IU_kw3 zuQ@XGy&?thd!Uf}QFOc-&sgn8Ta%oG^kbDy8S@IWEqQOC0%dnb=q^0@JKo@gc*FSj zc;gD65#kMCuo2=-xBze72=FH6f5V%fF2T27p01`YI=G>8pp2=;v_Hv!-259FxaRg& ztMd9QeW!Uz7^WyYXO+F~#o1XUx()-z&ssZg3K%@25HGF`p*f#1wG;qOqc*tI{QsNd z_)m3l{;BqgE8V&^OUN7jyN2UI=0!W?{`?; z-!RBv42LsCVvyxYIWlIF8`Sfq@;eTTn0{b`z1bSBcD?Ftn$8vOl zp13mq1~;5XN!Cy8PIW3>$2yPWjgcA>VMRk#pgh&RQbF5(xZumfTqnE2*!>@3Uq^3A zZn<^{3#7@LQ3)i|;$k&H1LZ9#7|WOmpC8&z&`9xJX)<@M#Z(i#ypQX++lzzh^bzub z2bNYr43SnwTjA}(mUh#-r#!tq=lbuQ7l@`eX_cbeZyWTQESTv6U;6n`k4w->#MKW44fxhe`A zP8?tC+E@?krH~&n^B3U-mcju9h{~|0^ckQQqE>) z&t|5(_TFK*k^1&&80?IzWQ!;owASki=)HPR9zPx)|0(Ow905T7b3q-H6VC<}Ow+@I zXQ{8|42U!Q(!YD=-n|5MxHta`nb^2|aA!j@U!)wFroIQi2x(w%wk)d7r_YRWB3eG! zqwe0AM+qG1jWoeAVFm${>1QtG-^#`Q!;b@AqZJt#iwW-g>P)o&yxWT9%wXiQWUW8* zVrdI#^qo+vohn?=7UJ=!w`ZY$jwdalqQEhL%P zH@X}^LZI^qia+i&$hFe0;9;g`bSnnQZ@Z3>-vtkTy?Pw?SX|_~Zp(|ks%d?fBdykH zi+p@(4vE+XZtLW4C|lEay=q{qe|-ZtDf6~b%a*b~Sa<11G-*I1e~f6zwI;tx(r>5@ z1@3)8qVY%G05ph4K3}1et+E2{s~^#6GQc4y3uMqP{ut0lLl|UeDAf{ zpBJ|0)mI(0jrP{LGjTV2QQxqxY>A?=IRBwFBV;*=Y8s>dYsS)niGYl;25($Na-nPz zOf>rRXLHT!?r*1+BaSr@J%Yx`@b*gblHn2FsAlctF2s|Jipl})AF%y%K8h9P$Vev_ zC#4C3+0H&=7;&=;!Eu`{OM<1inTRFHhuA~Z*hG}|82U21pSrU z=cDJ@QPibD=}y-K8r$|oaGw*LNjawM;q77%(e5FfeNDELyfG`SmG5rWB{MtW|3$Ii zZk!j1tePm~I8)PK7jEP)mqa=bx+y8X*q`Dy$;h)Set&dR&E!P+%X`<=co8GNL^RSq zH(sd?FIkt$6?6vGREOl}V5+lVa$F8>qLlC8a>h z)*pF~o!5*b9c=Hf#h;if`Z{>y}YV3ej$1MLC=C@Ev4WjO2K=N1W44FhW^TM8H z>dNt=YTNPOTP1s`bWTNi%zd|oK@ypV3Y~!uQmBeV6p4OhZ~eAg)Z!fl3O7^4f2=R^ z$+Qle`{SWzM_;Q)+<)&o5%GuPc*Gwz*u&31Xy06xy^)EVRdn^u|+r35h zNXW%ZG=;eRpB;U8S3{_Ep^pAqt}HK8`tWlu-X zGT$^9Y|OfZDIqv0W1=G-WJy}gw|^qMuQ#%FZV)+s?eglSZPV_)q`YWMb%Eo_-Y4IO zH*2-2QS!a0$79KkWB{u1+h2vM$AA9y7n|II$H6UIv$y~9;K?`HG|d*)GFfAbx}nF# zIi~^En%PqX%10zOK1Q|l+SsLo@3&J%8VaY~t2P!DL30J!ur3(Ti~+}iq62p^Q^Tpe zR1(ic(gv>dV>S&((zq7L2t2NiJ$K)yV@1rCv6B}uSGb0A(m+ef+YXoRdt}eJ=*;3N z_zuqIsb25w>pZT@F`~z_7MtIEIzClt={CBS9eOPMh1pH*V~I!AO)GCtFKmaUp57Z7 z98u^ss=QZgofc4}KY^%e!d-5nW93~5^>noqtqHV`w-Z7ov8#2Mk+A!IGs?jo*}R#i zaz1E<+^0b@4{(%MAXt>^2J4jlV*QD@GR8m6$SkpvIAhh)vzGGMQgZ6}{x}rZ_Z>wQ zh7}pOU$Bpa%B)puxUQ}qMhaNMyQw}h=^?_H>o4qrrpQaG-WCdv_pTmo={CG}{Q9}e zSZjJ`CE0+&*tCb@dZP8@sqOD$F2vZxjEP!4O?FX{)Af+ThFx~exHVhD#y{pv^E!CV zLwq{nX^KPj5~;Af?`~VkgTV(1FI#;aq#K_|p-?X?LlAW`JMOB?j5a^=*x54Z)mymL z5WCLBbk^n*eAZra#aGuv9ewClZS<@miHr373NoSYh`LtH*EiwY@S zU%wo!<7Q9TPw=SF@^YVYe*YFx(Rl5Ssh**p;hq+Yr}d*Bzg>-Ea3$D;5i_{_}pu;hW>oYIUk9#mrBcyhV$dNZzD|?^l@jjC(RiU4bn3k86y)f96SgO5gsq^%UQ-w48@#78XC`EoTv0J zu;0%t6`ID)QVZ6+BInwSB{VP9YlnPgK+ZS)xP#~5aE@lsGTv#E0F z{_~M3X=aRVT}*P`^0CA5j3A1S+UwW9h~Rp+`#R?vM?LSGGBMN2;Ywl_et<-deQf*3 z((?nBlTEhguSvh6T+r$pgz4m+so0}=ymL+w(+6o!9G72OZnJm4f9d4O+!O4b=qAjo z)^PKf9Mgp)TVHbH>&@=Wt@!0YnETa3g9l^|s*2n=f}fPGcU-t-_c)0k%p1LXWB2pk z(Ckblh(&-s0fRTa?M7FDsrI#ddsThSvFID|tK>M8EVtd!J0FUC;zNb4XF?7QeT|s= zP~qO=eGCmtpF{7y928U|Na#1{Og%7oSiK#ayt!R|zvXx;o>{#rLc{2*lwZZ{uqib(}tmOFnSlzixOZlL) zA;fB>HXdQ!kzG{vpUC+8iSKlm2_lcMaSbF9V3$FDL9n=6fUX!P-VfCONuNN^D-y}* zr{1^IL5?{c+&y==@DPH=q#tQjyk6xBl>96e5KmhhZ9zAUEV+vA2)A^-N__2k{7xF<$B&zCxWTsf+Vtd0Q@p>*>FyZ{O#}GS=46Jc}e?B!F zEqyn7Ukn6YVd(*?fpES)aXVkR9$fs7D@cWn^OvdKz6#N5iaj`WgMqpA%MG`bD_N7B zB$|xJ4{uZs8MZ8E7>-RKN+f3&ez{98&@z=z$@tQA<5h25S_3`(|%;pfadIkkO4AuAL0>pCCHhm5) zDVq!kiW|eV6gJX#mi7OTf)@JMR}w7NHEgXt@~am$93Hw+D2Zfgmohbo;ior)wSG_E zwbK3D;4VIPv$Kn_@D`)6rn{X=mZ3Md9;dyQpNI_L1UM?}Z5bToFPI+*GcP#q19KcL zRg`}3t|zYJhjL%aXUHh*p6lOp>u~A#)>_h}luJ9?mtsf5qo$n5n-_f)vio3>Gle#l zLrP2^BZ=N0Scx`uwE&CqJ3~tSCx(5uhL@p)|y5OV(~V&;aS;15E=4oss+LF;%>TH7TBlqimjLKu3F}umKZ!O9w65 zpOM2~rad=)6l$M%B>rnkV(mwgA0%<@yxpW?#GGTXMu2jp!ljKvpN6-_yN&EM*o09i zt?AL;d2>$Yw^#9RPz{`XuO{k73Itu%Nz!s8t<@tjZ<6am+-jolxK%KW;H3kGN)ujk zxbJrq3+NfaWOxnHaj(^{^YrCGDO38(l43g-DYTy0TS@LBBL^FBIqlXs=j3v&Di`CmZW?>w_?tHVKBr?(61MIt9_c#Q zSiRA6>;7Ss4#aSgUDVJyoPrVwuc%tLO7UWd4tw;QRJSr+nBygSNfd}ki3M6;*Yx;# zD7Sk(#ohK)2_f>~2q5fE)vH(!8Q1zfBVByppk|$VgNXQJZ>b57fm1z|j_z2qgq*A* zjFgfV{+Q;wME9x*yTP#?I7lDtqFKn5iajT)UP+|uJkS48Tvo6*ylcC`-ut7m)UoG8 z>OnP18EPC+l^yWBVFF)Dc)z9eYJh?rUL&gW(UtCjCTN#N)Tp(a2TJstzAugwST^GGBhs9m+N>69C}pgNZ0TvlNg zn!UGT>P+nfVM-5ksC(;_)t*P*Ibo;X*VZ1Ltb07L7UDG3J04_JTS9jA(ejKbR2sQo zRFE-2bevb)`mp*Bhwx(+#9BR_`-3-L#0JGRAJ`R8+5H7=dlvtr=YXYXZ6Gu$-a-@6 zX_f5Rb4o#X$&27fGLd^CavfTtzH_J9H=Lw@rF109BK(o3E?Z*x>*)^eBy>j6kIS%? zEqagoK9WFVG_!-E&F3zsl;NcO*@~-uAI56|)}0G~*DENM}5;cq%;?E`y*2S$Lf`Ap&^DistUsllH8s%aC(-yekF8IIoufM=cXAQa-QBAzg zSs6UdBD1CxBMH;zx2#OI!#omqVBEfI69S1Eso{wWu`O#!BM z*66ASa@izn)%LMpO)g~m9iEX;`C~_8NYpP!wvD~TUhrx<9uQCtxJ#xw+{j3a7hg*v zBj=Lbtj`tO-}n+&zs-7X7ep-3WT_lbE@Cw0}a@-9ijSD1h%~u%KqfT5RtG}d-r>OC!O*> z*uQO6Xgpv`eZcBTie~PG@22m5pnXjC(~#23)6MQLzQLMB%8B>NZiq(iGmup}>VBs& zYc4H~&0DL@p&_?x;>l@0RZ1IqUnL+)IdClN-YoN~lc~)w{)!(26Ai zMz%I}D&OaMRW+uC3+dDoIJSumUkffB5|&o0#yv2g7Bv1YMDA#}-M!v`WUPW;rT)ke z&C^y}HhE7F)-(Eoc4^aC!IrXPw^i{^_H}RBuZBz5S7m*;CDyxhpa_6gVv`q+#9uT* z+^wzF_uvo`j#bsfC5e1zg}JB9v~gag3`zETd|K&r=M+9&B4NMZ$A|Q(_N@GB!q2&( zPMn-dL#?DzXusiB3`m(NqYe$7uQp?)aMSF4(jwdjT-p#xDi}i?j*upV(N+y(G=2?3 zGiyY@-aL_)M@E=TE|HB;6X(Po9Nram?uma9$0M7=wMM;@F*DaeO>YK%Sz%o`hwK}$pDVCw2#?TK+a9L&~1NW|NXtttxEBKoQLV5 z&4kWH{^(~rNZG3p_(LkH;N43 z9-v06+yxuNeZbi!bnA6ylb8=RGJougalZ=DYy1T|g1SD#FJ2Fjz~#7bgPZKLn(o03 zIzBP<=Zp+X*uT-Fn(Xb^4(m5U9{#vwcWE>XN>F2+AI09|#tq)5&&2>1Ey8(66Yow> zde#TNtf6j_ar^JMo|LsLr7ZM^p}nwh?Ml;F$yk>>7_>)6WtQMp@x^h;&`u6?HlWPg zT_pz`YI$48j?v7kChwh;&a|r}vBq5ncBU2%sbwP6319U;-%u<%HfhnC$gu3*NeJZ8 ztF?(s*`wC$x^P!rvhCbWz)A!>7YIx1BM{ch#Ezhn+!PR+16~A zsV!?v+X@Y>nPQ8eIjW+{)zg+RGM^c-oQRKe*iS3dsV2h)5mGcoFOj%roOOW#)l(^1A&Fl}#;d%Y2B~ty^FEml&E9q2J0$W%J75yM0~p35goUlN7Hn&4>Ue z$D+z{bnfN=I2lHkJ&FvFD*n!G#ZxY-z;9dYQ zs*b_jvKH&2p_@-Ax`lo=LR9^++3B*B--LIn_?;UWCb>Ee4xcH6Bvc!V{BSa7B1o4s zF{EyJr*y)l>gA9H9QIUexXHU+OfBQ%B6Ss zGylWe{(qYr@PB`a_x-<{o%#+k=>`}LG(wEs)u3Xj~I%agj;on&OVc?ou5=KW!>)S z=#4aV9LgFqyX-L+BgoIlv|b2XBXd>Prk04HC;hIXEIKNRY9+PAAxI|GBPX}p(&rI& zpvO7R(3<%Gf6v4%sDT>qHz;PAN zZDrAF3V)?($#e|r^vEa7_WBm7pV!M3Q9qyfKzoeIXJAsOz+DcSd5-5w;IhFtd6 zXWu-M7JFmXI>Fq@Mp!SHr@@4*nqrn>X6ibcS8$uHVl6m2p1)-t;+|I}N$2!cwYOs4`dVIn*)Vpxq~e=MLTpC1`gH_I=$)lps$a|HsxcuU76k66 z>hmS12w@r3>iGfcSY$)SUV zy$75Q4xeP$s~4+@NeR6Se^>Pe1`(q!Y0oI6gtmJ^fn(;Q=KK30{3KBz}#_4YkIy8 zOY&u88LHhpY`4on&KO59@Z)YuRhj$)}vm|mgtt0;?~B(1t#Uk|0iol(p|l-rG02QQ&G*Bxy${U_4@ z$l^NZ3hNXKm7>6u{LzYOAZw;0ZQ3oR8-2keg-9UiVXNbu$Jy!+9?QuLHZlypQj!Xj zL$E`tmDt#|p?IZTiSo&zH>*zO=1oRRAaB@tjA?;|?P>v~ET5n8cMlVjZP6{A>ZNr$ z)*MFAQ2mehuqC3?imm1m&X~KkqvybuM?*PPkbu_;z1Iy=AOvmVd2?8BrN~U6!5QYRYQ6kLJ6z!oaul2C=3Qv9 zZ!NHKTb0uvyT88=PHw$4AS{ud30nhs!k?ek9Yia%HC?j~7%Sl4h7YE{q+E+;)W$2{ znXk+5=y{}uyZN^JS~NwmhLiKK`C6K;K~CsPlaG=!7lj#Dk1gu}&uJbsv8kOIXQ8>M zm*?*_X-}KinjPw_P-}E4Ugx|&t8pF@bIU;IoI~e0lJ*rvO3lesS#8qmdE}f9!@k`f zBY+zjLok~T@(2-JUZq;e0y>a{`b>Ii+>+#&{VW}ol^jxDtN{@%*HD-3Cj7NQwmL2r%Da0bIK+A}`xEh%@06mh& zkze!U>UVOR7%wJeomU#JHx5zk@M`LY$el>h{3Y*HET+@JXMDhNu0dNu$@Ji}rq{Wr zV)A2ELd^tDW*!EzP$4$qx;gV(I`m_2!+P0R?XxGMcc7<|;xFlLFrTccfLWrPpcWU+;G7B=DuA-Mo!8RTW~tw;m1> zyiOse>6;ZG$Yl3JnGOQ&`8bhED1(%!AsN&)-_xf&G|szDu`TbWA9}TH>(Jyjq;FzV zdgy?2-iev_MG3EC5+q_BGaY1&a>oVP$$w0(d85w+z2@5kJE0g5{#Hx6vXDJ<^PmAo zidx)uauTZWPpZd+8uGdV(!l>kP&*aI-u&u(`w^A4s{MZA+|lcBQNbi$@vW@d#y}(~ zdH333e+_UA&<8m{NRjU%vw5e7k#Moqy7`7}eYs!hVvJBO?Ksh`G6QkAHxqLAs^p)0 z-2_{&fKEzW-Y`R(NLh??=N2+icv4CkR;_PxP{V|{{d*-UKb0D1>yvGHSxL$K7IKlA zBDU$rOXC|dNY{uPB@fXx&{w zLVSj+K?NeqLS}8yHsLYiTtBVo`HQuunCQBfP&0%R6PVl+rX!-uzpqIVf|MWI zcdUsQYn*nPS8N}!=9D?Dgbt9&iQ=FK@enz=0NIZvSr7;O4u=kB#d+$Ov3l+rW!^UW zu2-;nUl@YPL|SoAgbe?+!3=%Q)oQ7#Xn-cmmJgiJNX)C2^Xcmy)U>wfeg#{`Ik5th zzRvl`7*@G+de4$=%6vcRB-@fZRaGrCf4?UEd*0Yt!vs7}ws`j7c0p}A%``Td^3VMomuGQ9AInSGojPK6uI9pSc zO9kU~bHoywrb-UfFpg(37R?I0cfk%CkG>YGY8rRSD9FrR_^z|_4=rb>`10!0h4UY! zFoN~$!3b^-XL8QQTzFw(bjq>R4?2 zf77o>;t+24@|xCkq783!3y;g^KTsGMc8m+TWdy;ZD7h;*`i?qGTrSVL2MYg z{&|Isu=k;EcNkN%9Bp&((wGv_GwNHDt|j_h_fd?Bz+&@dbehN9mkK<8H&IhOf)VJ` z5-Y*m{Y-+@#!Tw8)YYwCT}-UhGGXB${_tId8O_oZthcp4Q!1pDc`H=y7ViAE-^i=< z=1OG3uDo*Ni42>Hi>K}_=I>@7G89PT#3FPY*SHqBNX!npy^ zyZT4!QJbYyioTbV!yx!&a>`EKIE+r=$x?|JwC;hQMeS#=O+%q$KdIL5T?LVYXWO~I zef(>~xpBUUS#A81`W~7Qiy`}dlvY7D%zrquRlO0t^IF2kYck{TF^#eLGUJ1nTu~Zm zpFr%()ZL%=)T9Z(E2ncZlFJJ^019d?`{s&XuZfrPuQ6+xB#R(kN@T_~FTanFkg~G^ zU1R2!e@$%+#UWd`m}+ZToeeHBzq3j8c><7(RSDC`P2`jS3Dh(nbwJ(UiwpVijnse z(%2FvWB)d{)A~$G|KXJwBfT@3X%0EbnI9q?GX#1+^tT_7bl~5k5dUj)|3Oe*yJ@1c znG&|pI%eg`&7$wP&gfWS>&y?*mkDP$+d_86Q7`VeuH}EYhOi(y!)-+L=5$ z1NE+(CbwcjPC}zEVnRpu8w!l+rmHS5^`i>5DD>6Ed|kI>tv^|Tc25Zw1#Z?#SQ#+pt3&%{Fxp~A? zVgq856T{#l8jFZ)qNVoJmy~LYsLE6+SdrRyvkL?z)Rf^9{c^G>PD9E3!%3+}CWnaC zH-Ce~O7HwlNm!U!*~MR{F@<0?C%o;?o8v!B2Y7)_Sb;YAr!5SkDyko?DN`y9LI*PQ zieXT-)l^#A3tjD4N+y!o{vwH2vHPW;eWvqz1;70~3MFu7OipNp@Yq~kA)1-e085$; z&yb7N(vWXvEX+mE&s&y92GLWWq+l}LrKCLJI}42oPRoj+Ljl2&K}g95kDOTLq|3JV z`_fJ|Pd#{sI=W?tr>=q}0G@9o0{{Nwj@DJo>$QsbAw#2YzLvp>qvJ^JhzAz!F&LWmP9%b7*QBwFLn^rikBmZ&?p zFuKp=_R$;Nw(XkxNZ&~yEI&@sa5n*d)^KK{YwF^_1q@@wWVoTP$EfxARr}bRx?3YI za9yc_DWxopjWg<3?H2Q^w2Y9U@;(mLoJ^J-a*dJ{_3Y}i7R2G`qruJsiTExR2CZ=S z_LEd~zH{oFO3X{KA}$0Rk2z()7!XT_Ov*PhlGm>FC8biH%<&foR)NfyFKR4>?2M$| zI}q4HxZ49)K+-xG4-{qYLLm$}Rg^6hrm;)7=rn-Q3C)7 z;ApCFP~%?i7h*C-8?8Xcc1sa!Sy)#_jTOqro;HnoCwg}nhx8;!5!f;sa<4L);WyaP zyaD%aw_K;i=rVmhIlG&LBll%~TC6r9)5 zp-FQdSqdLCU)TeSe4C{jH#T#w)OIXG@wU^8-QQKTz}EIsFmJ)h2tx3ef3{`l6$7R= zboEZ+(jXtEnQGR>`vAJD;sdao9bx|7m?l*EQ!1&W4kNG6uKYnwt{ow)vmcHwmG$iN zX~?#J@MU-Vjfs}4zXA^Qq>f>}8nd?j3Ei#aMVw~(blvc$F`Sia z7yY^Y`>e#rV;)I0lQV+^>_%Of#XbqIkx~+*__d?9c@M8aUD&c1s$wNqt#iIcqo;^P zd_<>A4Wu7pHIgW`^|(QdgIK%*5`EY@t%)}JxPNb50OqK zHqF=05f?(FF0^Woc)WBvu(|ipPs>(k`Tra(yRE(qN;97w2$biWSRMUPcP=n^mida@ z6x8QU9hhG|S9=lkv(qdOrBNrS(@mi4V?k?QppIyY;=tr)4R@g7q^1 zK<~oeXUMGuD=6xI?}w-!^zjPX^Skx(LEeXAaGm6)kBymEu%x_ukT9BPYll>}W|<5Y zVn2;`n!wy4P*po-~ z#n%+uzL8;HIz43bj^@gx4m~qAmQZN>aw;$Q%j*pWmrhafwJC{eh4rXOMQUIDqly>J zn(b{RpEjM1KBuQr5Yrf3Qh%;>b%89H=TO^1gv3bp8C0`3wG{nQW6;a#En;b)W6w6rz$CB9}-z&o%`efBTS3M)IwEfnTy*+kkLygaNX9wL&A1&QEW6P42 zx0`W1(#5;8%MM9HI*>CKB>WRUx!j5Xf~7ebo?YU`^ugiM7<2^&1KFFZmOokcKbU*3 zxF)kVYSbBfgRy~%kWmm6L<9ts2pI^e$3E zNFrSz1ri_xLOgH$f0y66I~V6R7w>QHon4-1t@W%&Z{UjKYIu#_ho_ydhcW&Xp|ty!`CNgF03Ev2FMB z!)Ho#^k#ehHWGR+cDofYOAjzn0h0=+1-vM~_LXNw);2cptv71Oa*Ze72ElsWLvVLK zeE`%o&BH!YGQ=rM76e0#sbPqibS!*&KM=#(T;e_kbQPd@yEoY5m!lGERl==vHPF|T z#ke`;9`v5+NnAsx-#u`~NzBx@CDqQH3_u$cDm3A*^TaNwwxA@j61<)oI%*83RZG15 zGwHOVomb8Z5J}H2A1K=?pMUVz(WvQkn0Q`-mFyrw=16=r+B%tpcD;C1Og(&felKNIbSz>lmC8!z8I62t@Mdy@Qe)Q9|ZI=&0v36&bzi7+0 zp=)|X3VTs;ib~4=qV6hzIJcUl7K_D)m4|OIJE?9fiBCgJY9!Wm^R*v(VJ#j!Y(I1L zG6nrbqgkPI_b?kThM9?Y88}$TDqDD{fM4fZTRp%cBv@+88C@^x?L~-j zAtou~dN^>bv7g@#3D*=a^|M(CKe^kd^*UNnL$AJcXDGMUaK7q^wI_4}3<+tCSqa&U zq-lSi9L+j2VO6atuMlj{Nk9weREOS%M@`3G3Na?WENMZBd8cIGe=QsRr0K(yULRKG zjNC}xQJHG&m+hy>!%@_z+HB;P!U>!2SZolwYjT8K_l87I!C>(8rl#bB+f@euvv#J#+A z&!Gvzf0OCbKn)yN#EJeCrM<VrCkEFWc~?hsw%Dq=qjJ2&z56tsq;kyITDF@*&@5lEy4LoK81 z(Cb(0-1@&kG1kIbgeL=bexh~kE6YJC$a!`5c?Pm^r7N|CTQliD)T|UvMO(Qj)2cwE zdp+Wod8c60ZEkpN%=o1)bcs?J~o- zg-XvD#C_qIjGY^P;^DDHYz@xsaH#@K50pN-l^N}8;0GFfm0ZzJ7bB2I(@xgE?WdI! zo0avai4Cfc+34Z?j9Rc^T95u(tOGd!enFZ10v)vg%eq2pehiz9JU3-$*X%aRPO7?o z+nZ$dZ@7~3y6V&Pg)_=x@Q>+qA<~}fmSz@ggC$!&KaG(%lZj1P|AY=1Nz&CiE80Z!$iS7AdnGU)K}>7cmmLKlONBmqq& zjQ82Yt!JYxw$`N-c5P+H=LW!?T}`xMntWfQZq+FXZ_RUWc%tq0ckEImPJwg2;;y8= zolRFlCb1ju#(B#3ul?~bQpE(ndG$UXG8%*rKC%Lh4S~L0xo8_36cp-& zQw`SRSeVq7E|n0C9l?r%YlT4@hn|lt$fxPbS{l1xOVKJ$V)HLo>|LubtXSlmuUHli zNfe_iZ%$IdvB?us76V?jfS~V+>5D#JtX{{5e&ma3lQmD=djw) zr{C$iP9e(bsUo(?eZKU?+=8;lD|vY(h2iEBl10ryZ0W5Lr}^?#A7bIh3ze9YO@}Xv zn%h1t@0^>>Q;oHk!9G z^HxY|5%O{rP|f#9)WZ~!`=xJ7mb`0_;)l&6o_RbqgpE`kBooEb*-qR;Fb@`l4HH$Sd5<Tp4+b7?W>+Y1jLe6Fe;zEkQofSd3&gZ!WUM=mR$qs3n zMQ6WEaCJ^e&X3GcHvOHur2_oZgZ1;xZ07Sjx?~6_?dziYLj+k-KB{N9^?k>JeEKoj zTn*c}9)t0RN>}0PxHyX|*%u5GA3rU=2<30El}I$q1o>dIi+e+`6enK)i1d?|@NsHV z5A&MfoTFA;Z8x;VhEZ=06Nxse#)ni6$3;IIU8?rh&^>#?=8DACx%@c(N{>%K)=)N? z+ihr|iOy2H%W_Em1mT9}3*QuBd2*v}sQB?jR2A4tM$bBy*6di$#k{E)=&iDM7 zO1-M1iCH1&bJ zW!z+5IdL~M^&%|-h%FBeIkMr(DNzYm!lgZ23m%#m+y5psBcc1u$Kz&?&3bvL9s>HOACm^r`HgR;paW`%zk1h@jg7>wK_BdQ0kk z4V${rwJQ^KC1W=HZPm|(@%`|{wjf+7hbC3%yywtRH1^N1r6q?M-s2e@^giC7H@H1i zhdrI6_ZGFH7K>ql$%Pf`gbZOdePcO2Q8Bs8Cz6vl-hT(peET2PXT&*xACQ^V`~vvy zjQ}L94C)=F--l!6D?nO}T;Id4N1$t3oEp}w9G;I}avr5LWKqV!sQvi$s=lbgD0HC; zw7M$6@j0_b()e#mkjW+fK)=^=mJ#P}?hz?#X#$J9r(nsG1X)dId&J?dzN^JX&7h?`B@L;w>LG#KTQ88P{uTM1%xrM9Rjq_R3@{RN+&L8W4<|-xU zJ;%eP+Nr6%z05yrNCzJOlRU)VwLjH(K3UbTdCo79S)hJ~$MtJB2d_LpKNC4jFVp<5}+R(FBSzzATb3j%AgKH-( zFqq9emveaWz^`%9^wnZE(ri9xcj*X&_Ez~&)*FkC0az9)zB1*IX5h{V6C0&-nU{ZK z-D5z>t^_2_>dX>_d);SAs*jGzFX@D3(|8swUfG!kt&mMbaP1!$eCne?%C0tGX@9O9 zhMENXNJU%b9lBVpvl#zvF^R@9z9cVf2$VU%?+iYY+0m-UA9E*l)NC zj9kmH4HxxfCFQECZvMk@U0<3z+}kV|Xuzm^XYQGh^{N(~GS1Lr|C>gtO|(a|?=dQl!Vk_-|r~Dkq+)v0!TeheQ(q`&`39X83Y;*H3{A zT5LULCw>vp9y&%AIdgf8(A2$t_t>T7uYMqp1!=ad+8x5!IVlgv@Nb_=Qxc`}^5meG zOhSL(R#~lUOU*%3bopKJ-o>;N_<05jAbIwH;JD@p5!ixVwk-WS6v#twosF z?IPhY!KQ-vmj*q@$7vqKLe>XP78Bz{FBV@JO5eUg@uAve z<`UEQI<%S*XoP4@?H#>ztp+w(3g&pN3Oj;0cu4PS8}$>yGAito7XJmZ=estj?m*DqGOyw)Xa_ zZkNQSbsy0_bsBT$NsUKqH(z$UTIX0-8{Z1JxbghaZ(KGee3hf$a+w>6PyDsd_y^A+ z_|x`W3wYIy#yu!y$UU=sOnr)z&vft{cAPkuFqx%@Ws0UwJZX{I^4rZxcOGaJGL}`> zE(w=Drk!xk`kXEQ{~6{M1dS|(Kv*7}{oGnC9>D!7dVUU)w?l9$@Z-<9;~Y73(9)uy zk#h~v?D?=g*w_W3OdxJ-wD>gHCyCn{zw0s@*(?83>*T`+XU4Adhw$OUB%-w~GkPAx zvI6MKJ{^t`QW?5*iqIgCThuL>iMoo#EX6-#$cBv$&(zkP-BqX8^#kl{B;Zwda=!zIseh-+JvJ*#D%!eT_3Y;@=OTICscSC_X2r26BE31A0Ud+F)s^P(8Zi**Lq_i~}&^Y3CRe}@skW1SY! zbCb=HW3oA6KY$>sm*+_lufdHzl zzgQuVe*8S9n-K=wB?}SU0#(R7lJzfDFM-(NWWhX)2P5)*41)jTIf(d4~>K3N6B=F{Koa3kHDe;I0>bm4C?F!BaIiP9hKh7cT}zb1o4IL!;{ zNA%WZFj&Z3d@ukqhbECl#OEsw{mI{_66R&L=$^Re#qM4r)rw;T-RRjjjcE&oPhp_R z5yR~jhuKc7*=u2m>a?gogwb)!+VKh45=Rtndihsk)Kqxh7ZU=HwIN|!D03fqe&NnZB+9=^*SnUjGos% zQ2MgpL~#TP;!iymaH3CI!gtCoiLaf>tqEdr%4R~9xvgK!jF+1FIMwXMX*#c$GFknG z;&(f90#3c*tSbF$Uwp2piO}5<(Hk{R#LG}aJu}05r_OirKd2mhqnDfC77TFPZ(;Me zv-TtM%z`8&jT314PEsMK9^=lSBo51(3MHwQ1JLg_)p*QgX1OG}c*WbW?QH24c@6$) z`U?~R>DRbAO6pi&L@gAu%z56n2XJ=w?0ivZH!Yd_)nCkg-m?|gl~YVo78tJ_|U&sJ+ZoTg#&=yHl1k`F>JYlxI3 z)b!Agxc_y_GdAO1Ge=GWF?rf4E?~2sp^gO5j$EKlj=z;tklmT6c{aCMZh)ugp+jNq zngH+taFwKT0b*=M8+8bh;@LxLTi0pXDO~{gL$!Lea@MN=SxGEBmq2Pf8zhu%$&EL=?<<2Jp25bJvB_b3w}gFfh6w*5nbtXxhO zEyJW}h4hLk^+T$|Ha@^Y=A`ZiD?6Nea5$ON@mgV9T{^NRlbC~QLgcP5N#7s;IqF!lvQoS%-ld_%Z&TpcSHM2pTN#TVh^T`kNI3_ua6FlU zb7s9m@2pDe1EKSeXw=^8pVkBk-JW@IIdIuYCi8oIDR3A|qs=Wd~6g6!BSErAw`CQo#u)slG)@ z18m3T0X^k=Vrs$2g$IOeYCBwQLg(T8LCxehqcn4gPwS8RC2jeU=^P`wi04Q;!~NuM z#%jvpc|sHr5xr9t)yw!~k-`EMfVuy=7%H@+%EBmMuUOu!{Jgz2*$XSgun);RhfgV5 z80!xlH2pWbDE)~pH=!T2K{ zY~dD(=J&KH`|EwwlHY%Yl{CNA@9l%{$QH*I=Mx+I3ly4aMHLK8rPGUN?(+}G1x8jt zWwNyu3(T zAB@yE!8zfiq<2v1Z&%QH%d6ps3x3~N%5vNqWG2FVGnI98dj^e97lyOtI&t00S{SKT z9)T+No>WEY*D1nj(vG4RSzlqaRwCHPh1#&X(-pF`UcddcRHF%C@gOYRE^y9{dMT4~XLz4F4%GLzAuM_TbEdfmYcEF)7?HjI06lZYJPPF4|EqK%<=7 zWgWGOpUC!0PHK5^cZaMQvFqPr{@?Tj;qzgCbuJG7 zUhWGco*1zp_Vo)ld3)(CIcv2^U63XXTV(Tu?pk^AOhQFUVUh>+2)_n|Rh6vTa{s$fl{8m)`_X+p9bn zNlF8}d;q|;YIspbzA=uj>u=>rht*>p?jFyDPDF65=U>pN;(FI9(V>SFnI`n_KyG#XPK^lpc z7Do$9c9AE(bjgJMp0s9Q@HZNLh=S~4ae}#x+B?v6N*~bSdRA4WR>o}{4Ve6oee)Oo zcUCp2>hpj}$IQUk*esg#aKFhRpZB>1IXzfKN2TBK5qgsY1Zcc5iqL zB#TgS^?=e3ug9>>J=8z;Q;)@OB-EnEw_1^cz3@Q}!79;CD~fb`*=)X}HODu>xc8Og z?``t|`LzMLXajUN!LRe4iRgmX4!LeIR!IMVLfNQ>sByJj?AUwiWJHT&Em3+XF?EsDQaBoe~pwIOfGrQ*B$mLP)_ zUwCj-zp*<|MjV-$iBo~yt;;z1 zbGPZ}quO8lP84?VlYOg0Ncs4v^Qe!MLp&(=Nv|f9t=2Y5%>1KXy7Y9)<6ESJ*jFmT z=1b1I@sqcHfCW#+lp~*NJ~(k8A*r1IR#c*Zj9#AC#(>W6Uq^8s!2+A3f(NNU@-?)u zYg@~_T%DO>Q!oXdfB}7c*k{*t*ar5W1{k81)dd&-s#jNNy8CU7#UF@fA#gSH+$1l1 zqSU0g$vegn?l*r_8~!!^uN{;yc58|GhVY?LF1@7-N38I#2ml|d^pboOA%)r5I*))W zZr8nCS&n-=%6XQd{nI&@A6H~=VY*R3L=X8O#cKR1n7-%EDpvI=QMKA;w~^VLy>FS7 zML|Hrp3P9t7fq*vovShj}!ucU~;_vH?r)s-p2jJ^ld{D&MVB ze-V6zrvdsCpCM=f$PD9CgIsF-<9CGHV3fF*)=O{Oxc57K$+JE1VD)cPNxpGX`!zIh z2x~Ppb@fuYr0Fq>4?P#$a(AE8j<@kYXK-`~8m-{H{3-Flof7ecs`5ojI3O;z?VL0x61K6muz^_Tbh zL*ei!k8rSD#7descsB5e>tb+<^25(vX|C5-Wh6^&fkCb;A!qI(F9SiQt;YttyP}E% zG+L6mWugX}O6vv1tF^F>=djHlvE^QDpx5<=B~PDRjvq4Uh@9S?a5`C&=v4Akre@%e zzWY!mYt6WekuAXPE{{C?Efm?c2arg>s4ao`O`@fAT(q9MgG6aM1;6h6q2k$#tK^)r z3je9tvcBQBo9X6jBT}~uc2r)R93@GWo05V;`pcQO;+wk8#THU-Preec^7`>? z(9x;Q@Z!joF~fx#UpL1{r#Su}wDJ|h;9igTk!sE5CULwMcXAh6%n+JPIXA8&I9Is3 z$s1k*<20*;ia0qa^nEO0WSk@u^-vpi!Diqd3 z&MCqM80ixX_)fXlhT5}vi_;%Q@80a10t|N0$fDNR~CjRSafK4al}@-{_C@fn*DXa_zNKR@gD`12QdKe>JSHn!5U z1CK}+x+pUWzZW-v@<~XoC`>Fce^JK-LkR6X{9|$sId8SL_6(m6V$BQ!ZHcv5pc|nV z5CW@&!zUZS&GRoHGI3jcFTE*La5#hafTY~%4^LQWC2v@*{{#4Jl_4M50|R|)hdGj)Hs8rDdzf7Z zPMF8a$I70;sqNV6>Y$_r_!@9WzqD%_tb}u45I2&ZiRaPPyE95Er3WHQzK*sf733A> z6#;7C97X=LMS$MRdrT2d1Wa(z00k;hC2~d>_=OIlwKb|Nm+HC59tPKBVgk(?w{Vnx zdgYCl<%gOdi1kDjzmJLz*NRI@i%z?J%)ci;TsAs9WX1pFKKxpmej_mBFHJs|nXGvf zOOf|%H%V}PXi;TN?bWC&(*ZHRCFNiS+j})8LP7q(vUW$*kuUvSY!aPPaR4o1XUo&8Ho2_a}t>zoR0AREDuw(G~a^=$=Rup3hbd1#?StwpC&a z2_dj4j`pQTU43>k)uc_G78wN-&drhK679g4M`MWv1s^Z%T@T1LC{{dm=J(SeJR`_l z=fNpAkeL`mq!Mzma@1B#UCJaFw#wyo5l9Z-IIu$7OzOv2{eD3Gy5HhMDIqJKG9=v z3wk{I!&UPSMb1^mG`sLWSRZ5CrMJrc5C2}-p)|;INnK|)9?7=tE}($JLVZC78UR1j zxlX|b!5yqV@xZk5A$*|2aUoXuq$pJ9s{edNkI|f0qNLukBU4Ai5(hxL!)n`h%;=?| zPUzCrHNjkOD>kPLkR5VciG(AHBnR#!cGrWAbYgHVXAsk)#34@)=}UfU$ga<^B!pL zPj1Ixt&K%5yw$ALr5M-6O1jJMooY-!;o*@IAnVlZdU?vy?o!gbseiIz|6CLOYLcR+ zZ8h)#v9D5|btw~8!Eor?+9Jl^)5P@nz|i&6rr)2smOLz<2H*E!El2589x@d6GGFjJ zRqf6ZWeF}u7;!&ypdi*$jstgvci8_dX(%CoyAY7Go^dlO{UJ6+sCHomoQ&H|Dj+IN zY!7Y{#%|w9Pdxgrd#|YaY+ZdkI;k6j{n_;KVy=ISz;S539 zDVmk0c+VB$wBmKrrxO^nygJJt52z`V_b)$mzb~Es1(Q`&t0|Et)7zZhvfDV2y#%;H zr3`sk6Fo3!FhY_(an!GddZf?48ZN9`9gFwfn^$^=see7UoJJS1eFwjhUxThkEq-R^ zF7bE(pwK7Mpni@U%MoSH&1SC@4GyuQ7bcjj$$+>w9GS_N*2&34D|m$ByQvLBPwTF4 ze)Yo!^pfCjr!K*SRz5#w8Vvt?{iowWb?L3-+e96yw>-d3yu3Y2OOs#~{rsCw-FiTF z-?C_-byT;L_a1)y{0!u+kyRb?I z!GHVaQ)?|D3U)fL_>z^)?D8cA8nOL(%1{q?2)^tk#&C7VXepCzzV`X~0Z4tnXI=r- zGkKJFn3Em6%u%Y_^3?E`a<}6hK`QVX;^mk`=LJ=N;cj>tnZmJ%pk|HKA;4NXF%_0s zl@FuiEZuaIFENhk#FXDSLAyyH2k7CaTEgogm#-mT`BF0#JvApL3#POF7z+sknhadF z&=>|HM>wNtZ!-PYzPO-N#nhKxhV$OO%dyj?r}t89d@a;IXas)mYA8|bt`~~SzT}i~ z&7|T$smRfbMzChHe~+s+J?%{zo4-HX4PKI<3RzW3FtHuI-!sei;DsvRkB2b4apMHB0DbV@DuZDz0&0%^{G7r)Ld!-65q4yB z=}sMsGH!46bwW3bTSpwH3Z*2iub#y%v=l7&O_*T^I`Y5jFMBDc>$FMSzuXiQtr3we z^CD+qP8CjTxAzr>m|i@$Pzevok4_5NnDUqN*uvQn^Qzy`#!pAzp&^c|b))Antu>x* zvFC7oP4qxG%ueqw5A6E1Q|&1WN%AnEa?mrywjb3T3I(8}z%3IMe{KxVX0MOAR8iQ@ zO_&r3)!UocxC7e(YU}D%;4>sVh;22qwdF2z^4_`n$$K_GJI6qLJ)sd+ zM!Q)O{OHOxwy@1*Q)vM__Ck%^HrL6u#qfbOMUJ0*A)^t+J&un#S;_ZGU452+!s6#%^ z+%L?IzUFR>neOe=vb#%VYrbm1D4eKig#u zpDOxsudPKHH=9p9M{JSaT7-Lqk~^N2JohHrpfjX{9|}obkW>_(%}%rcnpekOAGs6C z;)su`tuy_CG!TAIzb}Fn;>%Q7C52DrbiU69*1phSBAa$*!}g;pijodCHjRO+w(u6S z@{04dMs3vyxwY2#%1@p1#WqB0C5D7byBl8VaU|<<_<-^wb-c!@+T#2Y!v?+*RFahEEH5N)f% zgo+lO2sl7$;4U~l(#|fZL74)fDz>Xf+00BNxjot|2(e#h7TX)`bsqfY^ux=i2F~^N zxT~HvFYnd6{F3w`DTv{+S4RqE0S-OC_C47mTB*e+`|AxT&zUWxj#Z*ZZMd~w^>#gFdL7+_t>U@)WJG=CF=je z?~VUpkhi9+t?JjokgLf=k_{;`y?0&#yn5Fpz2I|eE4!*rUdOb~6KW=L&UajDt*?n^ zxG6j!mbFTI6%IhR$=~Xg@b1iP!8DRzlh@so`O_j1`|qbx>3v}rFtxiMVX~zUUr{d! zE#4VuP3zUVWU=ig6^E|Sh5u`Zk!1u?Zm|3(1V%G=soDeTvvN7fk3YOonb13MT5L4@ zxznGBtmMVWUM=x|nfCGI!$iDu0Gqx!G(9|E#v6vIFWvB4sO`mUea|1CI4~qc!d!59 zJv}|$yrqJD(NJAqZ|Z*GaxAU<`_^~xQJxL*Z+sdBh{F^FW3!OsqCs5VF5<_KxA9O7 zPPd0k;X&xs6yq{PzP~y;^EiPNK-`{!&1u#6+enG)XkL9N>Zh+7Yp*2#L``Ez6m~_N z1LxY3)#i*@YVt^NaM#>m&o*tE7~#xCwr@~i_eavEQ`TrLONLqvI}?{%o_(RKO}v>3 zs;R9+JDqV@?-noZ8PYVkzAC+J_m(hkV}Zq^+560W4lYh%{o3+TVYmL%@_ErAB$QVA zIM@_Z7u|Ls6?tSCVRAr&jbUfnZ7o8uBa|S$zK;|A_a^$jSu+yhnO5)`O;@yKX={U~ zqYDO|u{b7&aBXMR+oN^f#f+~(Z$yW2F8ks8A&W8;&>fYfm%sKYLKY8Vb}DBzhhB=5 zs}?@v#*;?Ri!Q6ngu3|bmR4d_YrXVP(~V;3C?}wc?v+#z1Jk)8yK`ec2T$D2>>{l{ z1E(Su+JjWF@^wBzwu^Ed^rgwPi*E`j4ZTo+lvWB%nx&Je-SV+IN=6HKxjaRfNj!|^izX-3{>;9WIR(GwE$SoErkJ1ht&>DvcdgZ# zvlV_PDNAR-5$=^`SFRU6v2GGMn=!V}0*4c^Xgx!O9yPnOi)_$qYI8tawPAdkPg&3u z%x!yS+?uCuC|4L;Y!M^jIYc@RlUAXU?$BUiKG{`Gw$4k)FYi}audd(b{wdo*%QXP~ zc#^;Xz|EzsY1c$L4!zwH8}IqOva4T!PEjj|);sl?(g^Ch+??qe1Oibp)$g=Iu9UA? z_P$Ue)Ojq!&8_LEn~dv%f!X8NYDAJ_>PsTWZz*0;9^AD2ZY!-;f>0QWZ$LRx6>vQ3r zMe;oo#?r)r3%RF#I&&s4qvnEJ2|Gx#+OXXY$_qkht4P>P`oC8J1^vJLOezn?{Mv_k zhP;N{n%7vg>}xKCk=w zXi?I)N>^cis(BaEr@_&2K&EEz@t#>>Wl6r)>?qD0*^ktgJe4kx7v|{TFQh1yPVLWk z?(SBC+Igq|G$T3fRBfM3C^I^gAY-czlNj^F(bFLxXq!Gp7=;Bky9UNA*Cb*x+?xXwzj@g zMZO`Zq!vMA&?^GteILes&i$M>6$S?n8_Yg47QLs~+s`t2GG_AI^}|Tnop(CAX=lib zF%9`Lw7AIF*vhV+h9Y`g*DjMEABOT9#P$%R0{yL|NZQMZ!)V5~yCUa{-6< zOZO18C(FB5@YgBJh-w*GJ}D-y|oRjG34X@qvvKc)&?3dB`f* zl4q6);aDRC7CX7wtCyU=(X--lDgssx80+s05`Mbn^Wxiun zV;?vHD-K1UwI}lmQvdy*Vt@j$SJ|@pqo@NoEu<_c0V$1;>xD+_;hT%uOZu>-m8sA& z8YC8+cw>~a)ayY8So_BCcv8*t5@O8)GEaYIMjO@_?Sw_c{JfVxjIM$@Kfc*EIbY5Pg% zbSI;AqkpWm`9QMiNp27Ry(EQ`IS%SuD&{E$e;Nq>3!o%!nzMSoH-==66XH5ZzCL3{ zo0hN>JP|*K-RNQ;A~cXnEi~&$yil|vAOPz}Q+~2Djqi@<#P)D@if zWn;1z;vj@2&S(f~3W=06)vS58a?OliAKa+?Av4^jjjT1f{-iQ6L)_eJQe8eaF8r7bOZThX?-^nwjr>SOSvOkM!4ajr6+ozQT+>N zKlz)zGEWBt6+P!`9(BUW?-AtbDbs(fMfrQGbdc`(Mr{cI$J9b)gR3X;cfc+MJ7+#A zJ8QUk;@=R}lMsal><(*P@N7zi3O4m5G1JAxXw2T&&+v$8t(&uj@W~?<;&sj-{(^6B zsegxmSsmb1;op6HOx{)Wg@I=AZZi1rlYOr$+KvGofzLg$4IGWNURc{}7t>P>jttu6 zpN~=s=MnOzBDa)xfd=SE<{AKPK=l{K0H-DXSvL09zDHLIcUM!QCFCPqyKuW_+Pz?+ zZz%1ke)VGE-^{A-Tiz3VZzDcMZdV1ho~4OE)|xOy2v`WDG0LQ)-&w^8BX%Gt~Gb3bz%F)3e2bJd4!F-|c-9v&M3 ztr~kHJg(o;G=L%Ade@Ba5T^B49k~d>&hFi{4_oR(9F&lO)uFJ#H$t|d9E6Pig*>%IwCrao3sJMN$ z{#>%+!(&im0|x(Tg4xwnW0Up+I%nYkIG#bKwZlFN$oYBNg?%O-2Ydt|7c@0LlEh*5 z3&ov34*lrKt4BKMG7etO{2F6;_BWwq4$B3G6i2i|a7?+0JgW=wsYdV{U4h*4Hg4e* zX_NP#cxT7>g??*c^BG%s$5=UuaEO#RPK!-W`RvAOl>dy3lZe(=?=Lq4-d|sJI&>Sl zHPQV9P^PF%p(I3H4S(&scC1WDza+BB`CeOaLcb9mmq)Qe{q3Tb9|g||8EXn$y=r8p zzjQYC<3{T3H)BD-8NW|<=bfo-d=awClJnvQ@Ek*E>$S58*5M&XMam7_EswY|pl4qb z`y(-~(%(r1E@dD5ip0@PMq1b@Y!WHrf1M42yKS|P_T4uzw$S_ZJ2dF?M1J+I>fwIG z9A+j{P_nCRJynDn!gmvcgyCWfri?wN+X>pbV?yFD{E`tKo)Y8_297HVJ%(4+gO1BS zy!q(P#Mh018$AA2Wj7%cAkN&d6=WnhtQMb!cfhkwZd+szOl+hM!7_(M_S^SC>!oYX z){7wR;K=w%*>S9`7obnRADjC|M-nC@v$)$Ry_9irC(56{dEWvKMLn><;{m~)91v4@ z!I{Q+%c@*VHFr@BtKu2LvrDJ4Y~!Z(kng`3!=~Z;?Kc(&2hC=0-9BafZ0&W;*}jW` zX=`T<4Lk0ieq6&}K#d3{VC)gW@d!RrwEYhlzo%H&STWI82`FxI?I!FY8=tIs6T8X0 z_bM%ef8lR>x6vbJMb`N{%2ZjAcjnB*8Nd%L_%M@52Hj9GHAZYMbq};LJ&Qthsk~CX zERz~G-SaPO$TjAkt=x0?gXwM6U^PAM?rQiA>nF8olHrz!|04O3Vm?|JP(r`z4<>KJ zxUIbV$lLU<94V&CoX|p)+JrS;UC~3Wwi>ZyW+r_K#ZvEQV4=qLelU4_-f%rl!`1@)$e(Fy5Ev$}%hh91vtmy&^R=Ngp ze@Dc+cm^}OW^Og~KI`f_c;nQA)EP}YFpO1?%6Mzfra+%hO^_nYgbQ4NO5QUY*>jx` z>1xE-&l~&sFD_5+${j_k2)e*c`r#)Dsn)Idn(apK`kYdkq~dc*(1p^Xpnm>I8dHNY z<^$@Nc_v7u%7n}=9OWgAu^90kT$o#{_Ea_J#)A;8a8giUDtvrljzpW}7~^W5bjIlD zmd3T#8JVw+@Bd9dr_Lc~Zi!f(nD|aW#udCs=jdrLqrJE>o^k6vH#OyBzRYb^ zK-}Xhlduog42NkSb#LWs)BQ)Tr`+Fn`hOgu8eS3bjll`ehi`6wWxH4LiH9HmksS8icH#baUHuyHyre}g+#>HT;?3tXi^MXy4t7=ADlFFSg$s6SU+3*fV48 zgu$ld7oKgF+~G&m_}G_mrFW;DgPz;3Wrd;r7X%>Hpz3ua>WXYj1bJ{aC zBQa#}l#+AdqNQ6?+HZyDfA|<6E)KFs%7zYcjJX6}Xz(D#RxVWg ziSObQ|Dhheo{<23HNcWS=BH{HI4lXaCr^ ztR_F>e1PiNKdYk6{mKgjDM8YQx=88G!avN6J@wm3zxJJ1QKwHe4ius>K;*xkAN@y* zia^&Fxb{Vm~UFKa}1>*yzqLT}5R^`&mq z=xAz5gaUi!n>@c_GB&dsCyu-ompzTV#;$Y=uI4$V?Id%ASzzQQ`DR5^a9QKUvM~r- zr{EU0O)&Bc&CO%b>auA=`_R#tdg<`85yRp8zw>o(8h#r(*iEf`2kHB@ui%C4b(JNf z;8LE|%M;EjbNB%<4B@Q#bh)~I22RkZ$ft4L?7PXD8JjIJ+RiHEgY~1 z2`g@bmemHle3AK|=6~(AAN_)TpxnFSIpGNM@jcib*csZj(&R#e?Rezx@W;fVW z_7d~hyTu3m=Q&dyaPpM)VuAnzUm2dWCQjhH?K=@cl^U~rv(oTc(Fm?9SV0^>Y_&kk z!UF!0h43!?yJt0lxW07Z?u!uq94nCWw%gD`^WbIPGl~c#&3Tl*`BR{KnbbAb$Qvh) zW@#RNW`yY5pl`IoLt+iBGvjN}2e2C6BQUDYkHYR2_2+%DajyB0zEVHUnZuSLqWZrEBJC03 z;ni4KA~m>={zpMlSbjU417MT*rmVT#H$*79j;$QN#TUHorZ$OhKP~BI<5gtN8I^Hz0ioe7y7+Px zF~_{myesQUt%iQEM^*aLSsCK#*BLn>{-=9W0cCEUiAPaN;=@L2zsZ%F zn!&xhjL!+oea)15#688HT8jcFa4=zrk35&EdDU#$#^*j|jjdx){*lI)>GIqb2k$`J zX%ufYq59 zqrJd53J{?1iSvvVDoO~*;J}mReda%S06APqv#%|@L_0TV3LELleLXHwU3Gc&dThP1 zq)SO)W1#1BAx7L^+v`X~nP<_Gy0@alozo9yF9@~oKDe?rgMDj(xBtI=vW$;ZNuCHI zoNb3!(vA$K(WgoHOWQtw)hqB!Scig#89OM&OVp+TZ;73Xb?rm0j1zHZEsT$67@wpRc;LX)jg#!>wQ{lr-GNo)q2Yt&Z~YsGQQNfJEipbcG5;Wa7E4PVSe+Tfi-uyY9!K@iHqj$+zJP zJ4a({cSa;y-?U9VvL0zh`!#E54E}l#09ZladLM_LYxder02U99XRl`UHLQSNWgp~S z>0I{+T|p)Qd0LrwMBt2UuVmeXKhfs}By{-$*@lC?UmN&v#7Dd*;EYD!R7I_sG2cvn z*&~wL$tJLQshZF3a|+-O0KzbO;7n?FSr_jyUMUO=+<93@bqudLf2qXY8!C`9;Urki zJmh?{?wecd3MGHyMr_l+&F;m|D^;w!9W1O5AiXz_O6d4F*k9!B#?L8sFo0x~jI9^& z9s+e(;{`}|GI1sh@C_kbZX>-=}yxqz3-a>iEoP=3gIv5B)k+Z1rv4$l&03nl%O|^^$d>|4 z-d~NZd8Y2aA&ec73_PRJN++#NW0=QbDidP@qm8q-lGr7Jv3gmQs}FVB=6jxM%#&JN zSpw7jv%jyVT@g6>x>zB-cm7(f<$#OI^%$oE)?>3(>1QVf&zy_UOmT3q6pH?fzSe%R z>Z0ZO=i>iSbZFS07kWG`j?`Ag%zM7 z=xgZ$`)}W~F)p-)rrX+Z&1T0!m`e&p)@jOiDE3!j(EX%La8(6o*{d^>^apoIkv0x` zq~8!i;uo?NBz9bheo{@iSk0@UgsPLisy$G%xNy9rgZgmI^mIkrC8LOEw3e}iv@*-j zQO^><$AjY;GPsQvRDSCU><0^E+O0vt{Ykz0NE&L?MPdG?Jz2Q#WpffF^$NiDR} zZec#}QYUej6OC0z%M7=#6CxJ>L{D}8Q=Rd6bO04E@bYP(J7!w}GoahhRTC{O)$#+6Fxd5M&x&&p95usdETGgfN$ zBHf2MPrguvsq?FQ*;-VL(N9e6bLustgxU^g_lwLqk8Y)|pM%OPwf?3i=o(h@+nZI5@FfT2=v*t%%v;&d^ciNmttvT|5q}@Mh-fBm-X`HBrm_Qk7W5G zy;)Zs{2Ip8{Ji0?xe61sLO(1|wzitUn8Dn=5$%EX5gkj`bgQa$eq6KWD#rikFcLPV zZEEtpL&+7N=mxe&*lm4TBToACm#6%bJZk)koKE ztXvyGqchfLUN(?Lzh=Z$-@k}KH3!;6zli3VuH32w!(;o0CmNHQq5sHz zo1^Q*vpniy#ywQyy*Q|!vOxeL=jjDVbjJ8ZPRtB&M5Bc@A$eKldNVJ;$swi-rQFE6Z|=v zltZ3-3m8#Z6cWl<<>VZp)j*0J7ONe2W1cXZwp^qvR?OBuao+R}&PzdoTU&IeS9oe->x9xN(ZAkIDID~- zIe`=sy%ATTJg4DfJHP}SnKzmPYjo93M>loV9fm?N4mDbF5bCF`))bOhu8V(Q2#k-= z&TzuLUn$$%@*|1C1isTCc+;ro*Mc1RHH`kLQaf%xYIDV(2w{aL!7=2<#D8QWK*3~# zF7HHG6lHGO?Wk^VOhS-|#_G3ICFe^M?i$-ckiE#&j5@E#XipiA~zXGHjAfb)8@*O^(7(2>};#@8I8_luN+6&S< zG$tXkE_OJacm@HLmU4REPm&>ks&PHbGmebVvbk9iLd1l9hK^q zSed5BR$_IfgU9WDXO_13$Xken|7uQc_{7pgFahQa0s45{8%SWaKehXjlw`M`e0S*9 zO)l;2r;k6a&!TVw$LAYJN(I;qv9ud)lwiX6qkc%xfu8L3uRJ;K43oOysmqwTuJkH9 zHy%j%ayBlEUEDfGIm#J?o56*w_)g4sXGj5-L2J<#y(5t&Ec{)FD_b|3EVh8vlbMFA zBI(}f{ZkZ$V!qWrdshwfqqWv0Os3RqzV&_!yjEAziH4V=6imNKEO9uvpxxu3(Ea3L zTZge0JlfGaN9l3Y^fX*dJ3Z^J_nW`nFDVO^3@DM*zS(j?4(@jxkhX>w<3QO3R~H1F zSW+QK_i_zq$2neLBS8ZfG(VrNDeZMcW|ru~5S^RbTF`)pn?6ec?L?8lW*##WwJjG2 z^AZ){=f$6BK5xJ$;Ueq=gx@$-M?a0VKCu`!(ZeVr&v7d`(o;%fp<@&=mWt{33jSKa zqu||gW;>}eAluI4WnGBl{*hYYv65~`z1(yCX#3{F-}2G@uaVs8p@c?bE*HDVju>7%88pfnc~|?Mp#Lq3-q&WBxU}q@A^JH( zDj#3l;BXM=Bq-o#qodhy?kg?Oj7N8gy$1re5|fQ!;FBfPacig7A8UgOtAmf_840>U z(LWY06g*qQm3ur$&labV#}n0ZDZzJO(FpdJd(Z%=lM zYcNMs4K)?a0HV`J&Y>sVo@GWBQm-+XL7kUfKb0FY3N72(bf^yjyZtfhS>j&#BYGcV z9#ZfO;xvSNN`ccZtFmPrTb=F%oa{~TEUNuh`Z^^)Yh3T_AEUJ`k@qx8`ZziE4g0V| zHsg~~SgMTESp6r-0TOPxeD%6nbTyNU>vv;N+Pa>I$!vgwpRC!cx&o~PqTq1mTix3q z+ifoHH;aalZd@4hpW}G_E?d~4dAr1%yE~74WvMtNDBadmj>BG9RPl;@MoR0-zZ70_ zfyE&;L^3qt9a)nb%5tQarM2Y>y+?DLTh&Kulm84-oca`@B_&Tkws&cy+F$l~@&G(+7NRemgJIb589w7h20t$o-!qVt5y``?TgtF=`I zV!7`IB&W@=(+;#>uf(8;P6$Nj?`QX;j@8W3#vq9cJ7eRJ)OE6{F8RA}w`8ZpBx#Q1 zb0MS46w(cKDk35YpKBTt2|*v%F}1{Ag0^9R0M5Sx^9u>uw{IKt?_pq;y52y;)OtTK zYazfLISYtqnUb57h4UX%3t^)I)km@CY39q{I%!!QEte#*lEnm2SM|&`;|kv($!5YD zTj)`+NUvFXzL;N}1nW0=knKCK5SmC~gpl$v@ZXN=Sfx@C5$6kL54#cvA6;1`kZ(V_ zn@3-E{m{p9l;Z?dLS<{rN>j&G<8+Ta?g*#%sNql!jMW zzzmqo#^inZ?A`X8930idob0LRO$-5`*DLGu-JRU}ikGR16Gx%Wgq6?LwQp4MZ+##q4Gx6NdL;b0 z6NUX62+MOwe=mDocpuVS_v=pnZ$>%%<(ZyW?Z@!r!^gmsW6wIyNUii4&{|D$AH6={ zVT&Co8%v?>kC7}u`Fw9P(n3M?kmPz&-`)St>B@ZzG zAholy?l*Q2*8>*(|o;7r54SMzJ5M_7j7$MNGXSAzgwEiZ3!ccu1A`A-nZsa8l#+u2Aj*Fr3>_~-;G4$uGnvb?om?UJ9U``bAr z=BSy?lUD44W!w00HMTn)3ES>{bXUkeKD#4w!~ehksRk1CfHGsj$@ z_sjNItl1_!fz3hfudUkLpH5Sh0Eh2_JlCiv^blNK_QGgz-1JsDg=m0b3XnQY-jPM` zhw4odZ$JtXUuQ0lqJkj&thWSWyXWC=14ZY&V-Lz(95K0gzawVPe>let0K$$OG_$kkJ|WNB}fdoo+yNBaWMBB4Hzu>){xzoxfMGjfvE^sBx0Iu=KN4Y}z8AF=eK z7ODm&8?*_21dPt~(Eq;UL6SgL!%fRr%Bww%BAn(*_#x;F20GY>JVZKuri3ZG)wo~T z!jd^MTr=_^Sk3J8ONDd0ffX&gA;tzLZKidIy=%(pTA)M;8KF9}p zVQOm}-Xu<{F;A|b6&-7|JNpUs)5^B3=|=2G$sX%vcz-d^320M%}jMbH8WIm12iqQ-nn(?J63z9-;?`! ze8ed!k!`##4jCDTKT33LSx5sp{|>CUH1`EzWPzf zU67f<4nn-8@SsW&7LFdR)2 z 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%0Ds@olV#;lUu<`5Ob21&38WWC-mmNRm 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 diff --git a/pr-preview/pr-214/use-case/read-a-drivers-license/index.html b/pr-preview/pr-214/use-case/read-a-drivers-license/index.html deleted file mode 100644 index a66a9aef..00000000 --- a/pr-preview/pr-214/use-case/read-a-drivers-license/index.html +++ /dev/null @@ -1,319 +0,0 @@ - - - - - - - - - Dynamsoft Barcode Reader Sample - Read a Driver's License - - - - - Aim at the barcode on the driver's license. -

Read a Driver's License

- -
- - - -
-
-
-
- Results: - - - - -
-
-
- - - - - diff --git a/pr-preview/pr-214/use-case/read-a-drivers-license/style.css b/pr-preview/pr-214/use-case/read-a-drivers-license/style.css deleted file mode 100644 index acb09334..00000000 --- a/pr-preview/pr-214/use-case/read-a-drivers-license/style.css +++ /dev/null @@ -1,174 +0,0 @@ -* { - margin: 0; - padding: 0; -} - -body { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - overflow: hidden; - width: 100vw; - height: 100vh; -} - -#span-tip { - position: absolute; - font-size: 1rem; - color: #fe8e14; - top: 1vh; -} - -h1 { - font-size: 1.5em; -} - -a { - color: #fe8d14; -} - -a:hover { - color: #fe8d14a1; -} - -strong { - color: rgb(254, 142, 20); -} - -#svg-start { - width: 100px; - height: 100px; - fill: #aaa; - cursor: pointer; -} - -#main-container { - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - width: 50vw; - height: 60vh; -} - -.dce-bg-camera { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - margin: auto; - width: 40%; - height: 40%; - fill: #aaa; -} - -#camera-view-container { - display: none; - width: 100%; - height: 100%; -} - -#result-container { - display: none; - position: fixed; - width: 50vw; - height: 70vh; - z-index: 10; - color: white; - font-size: small; - background: #222222; - margin-top: 30px; -} - -#result-container .result-header { - width: 100%; - height: 30px; - background-color: #000; - font-size: 16px; - line-height: 30px; - padding-left: 10px; - box-sizing: border-box; -} - -#result-container .result-body { - height: calc(70vh - 30px); - overflow-y: auto; - padding: 5px; - box-sizing: border-box; -} - -#result-container p { - padding: 5px; - margin: 0; -} - -#message-container { - display: none; - align-items: center; - width: 50vw; - padding: 8px 16px; - margin: -92px 0 10px 0; - box-sizing: border-box; - border-radius: 4px; - position: relative; - background-color: #f4f4f5; - color: #909399; - overflow: hidden; - transition: opacity 0.2s; -} - -#message-container .message-icon { - font-size: 28px; - width: 28px; - line-height: 0; - padding-right: 1rem; -} - -#message-container .div-message-content { - display: table-cell; - padding: 0 8px; -} - -.message-content > span { - font-weight: 700; - font-size: 14px; - line-height: 18px; -} - -.message-content > p { - font-size: 13px; - margin: 5px 0 0; - line-height: 20px; -} - -.api_highlight { - font-weight: 700; - background-color: #ddd; - border-radius: 4px; - padding: 2px; -} - -.close-button { - position: absolute; - top: 12px; - right: 15px; - cursor: pointer; - line-height: 0; -} - -/* Small devices */ -@media only screen and (max-width: 1000px) { - #message-container { - width: 90vw; - } - - #main-container { - width: 80vw; - } - - #result-container { - width: 80vw; - } -} diff --git a/pr-preview/pr-214/use-case/show-result-texts-on-the-video.html b/pr-preview/pr-214/use-case/show-result-texts-on-the-video.html deleted file mode 100644 index 66385e8b..00000000 --- a/pr-preview/pr-214/use-case/show-result-texts-on-the-video.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - Dynamsoft Barcode Reader Sample - Display Barcode Results as Video Overlays - - - -

Display Barcode Results as Video Overlays

-

Scan barcodes to display results as overlays on video

-
-
- - - - From e52f76a2a0284900ac417bff5da8fef4da8168ea Mon Sep 17 00:00:00 2001 From: felixindrawan Date: Tue, 8 Oct 2024 14:45:00 -0700 Subject: [PATCH 057/223] fix: remove preview on closed pr --- .github/workflows/preview.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index e926b6dc..21e2477a 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -7,7 +7,10 @@ on: pull_request: types: - opened - - synchronize + - reopened + - synchronize + - closed + jobs: deploy-preview: runs-on: ubuntu-latest From 6bb324f39cc239106a49b489a53e8f6ff8f30636 Mon Sep 17 00:00:00 2001 From: chloe-hahn Date: Wed, 9 Oct 2024 11:00:09 +0800 Subject: [PATCH 058/223] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7cae52b9..64f1bce7 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ git clone https://github.com/Dynamsoft/barcode-reader-javascript-samples.git --d ## Request a trial license -A default license is included which allows you to test the sample apps for up to 24 hours. You can [request a trial license](https://www.dynamsoft.com/customer/license/trialLicense?product=dbr&package=js&utm_source=sampleReadme) via Dynamsoft customer portal to evaluate further. +A default license is included which allows you to test the sample apps for up to 24 hours. You can [request a 30-day trial license](https://www.dynamsoft.com/customer/license/trialLicense?product=dbr&package=js&utm_source=sampleReadme) via Dynamsoft website to evaluate further. ## Documentation From 8ac4f8700b485f0e12b4be3f883a866f40e2d13b Mon Sep 17 00:00:00 2001 From: felixindynamsoft Date: Thu, 10 Oct 2024 03:30:46 -0700 Subject: [PATCH 059/223] chore: update dynamsoft-barcode-reader-bundle to v10.4.2000-beta (#212) * chore: update dynamsoft-barcode-reader-bundle to v10.4.2000-beta * fix: update 10.4.2000 to the beta versions * update docs link to 10.4.2000 * fix: error on start * fix: error on start * fix: remove duplicate msg * Minor fix on the typo * minor typo fix for svelte quick start command * maintain: update to 10.4.2000 --------- Co-authored-by: felixindrawan Co-authored-by: eugene-dynamsoft Co-authored-by: Keillion --- README.md | 2 +- hello-world/README.md | 2 +- hello-world/angular/README.md | 18 +--- hello-world/angular/package.json | 6 +- .../angular/src/app/dynamsoft.config.ts | 16 ++-- hello-world/blazor/README.md | 6 +- .../BlazorApp/wwwroot/index.html | 4 +- hello-world/electron/README.md | 8 +- hello-world/electron/action.js | 12 +-- hello-world/electron/package.json | 8 +- hello-world/es6.html | 15 +--- hello-world/hello-world.html | 4 +- hello-world/next/README.md | 18 ++-- hello-world/next/dynamsoft.config.ts | 16 ++-- hello-world/next/package.json | 2 +- hello-world/nuxt/README.md | 18 ++-- hello-world/nuxt/dynamsoft.config.ts | 16 ++-- hello-world/nuxt/package.json | 2 +- hello-world/pwa/README.md | 16 ++-- hello-world/pwa/helloworld-pwa.html | 8 +- hello-world/pwa/service-worker.js | 14 +-- hello-world/react-hooks/README.md | 18 ++-- hello-world/react-hooks/package.json | 2 +- .../react-hooks/src/dynamsoft.config.ts | 16 ++-- hello-world/react/README.md | 18 ++-- hello-world/react/package.json | 2 +- hello-world/react/src/dynamsoft.config.ts | 16 ++-- hello-world/read-an-image.html | 4 +- hello-world/requirejs.html | 14 +-- hello-world/svelte/README.md | 20 ++--- hello-world/svelte/package.json | 2 +- hello-world/svelte/src/dynamsoft.config.ts | 16 ++-- hello-world/vue/README.md | 18 ++-- hello-world/vue/package.json | 4 +- hello-world/vue/src/dynamsoft.config.ts | 16 ++-- .../src/main/assets/decodeBarcodeInVideo.html | 4 +- .../dbrjswebview/html/decodeFileInVideo.html | 4 +- others/debug/public/index.html | 87 ++++++------------- .../fill-a-form-with-barcode-reading.html | 4 +- .../locate-an-item-with-barcode/index.html | 6 +- use-case/read-a-drivers-license/index.html | 8 +- use-case/show-result-texts-on-the-video.html | 4 +- 42 files changed, 181 insertions(+), 313 deletions(-) diff --git a/README.md b/README.md index 64f1bce7..770e7577 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ A default license is included which allows you to test the sample apps for up to ## Documentation -For the developer guide and full API reference of Dynamsoft Barcode Reader JavaScript library, please check out the [documentation](https://www.dynamsoft.com/barcode-reader/programming/javascript/?ver=10.0.21&utm_source=sampleReadme). +For the developer guide and full API reference of Dynamsoft Barcode Reader JavaScript library, please check out the [documentation](https://www.dynamsoft.com/barcode-reader/programming/javascript/?ver=10.4.2000&utm_source=sampleReadme). ## Support diff --git a/hello-world/README.md b/hello-world/README.md index 53de83b6..e41436cf 100644 --- a/hello-world/README.md +++ b/hello-world/README.md @@ -1,6 +1,6 @@ # The Hello World Sample Set -As you have already gone through the [user guide](https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10#getting-started---hello-world), you may have come across some basic "Hello World" code that can help you create a simple web application using our SDK quickly. +As you have already gone through the [user guide](https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.4.2000#getting-started---hello-world), you may have come across some basic "Hello World" code that can help you create a simple web application using our SDK quickly. In this set of samples, we will revisit the "Hello World" code and show how to implement it using some popular frameworks, such as Angular, React, and Vue. diff --git a/hello-world/angular/README.md b/hello-world/angular/README.md index d879e6ca..b91d7175 100644 --- a/hello-world/angular/README.md +++ b/hello-world/angular/README.md @@ -2,7 +2,7 @@ [Angular](https://angular.dev/) is one of the most popular and mature JavaScript frameworks. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into an Angular application. Note that in this sample, `TypeScript` is used. -In this guide, we will be using [`dynamsoft-barcode-reader-bundle 10.2.1000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/10.2.1000). +In this guide, we will be using [`dynamsoft-barcode-reader-bundle 10.4.2000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/10.4.2000). > Note: > @@ -57,10 +57,6 @@ Below is the configuration used for this sample. ? Do you want to enable Server-Side Rendering (SSR) and Static Site Generation (SSG/Prerendering)? No ``` -On installation, you will be prompted to configure your project.\ -You can customize these options according to your preferences.\ -Below is the configuration used for this sample. - ### **CD** to the root directory of the application and install necessary libraries ```cmd @@ -79,15 +75,7 @@ import { LicenseManager } from 'dynamsoft-license'; import 'dynamsoft-barcode-reader'; // Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths = { - std: 'https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/', - dip: 'https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/', - core: 'https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/', - license: 'https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/', - cvr: 'https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/', - dbr: 'https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/', - dce: 'https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/', -}; +CoreModule.engineResourcePaths.rootDirectory = "https://cdn.jsdelivr.net/npm/"; /** LICENSE ALERT - README * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. @@ -98,7 +86,7 @@ LicenseManager.initLicense('DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9', true); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. + * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.4.2000&utm_source=samples#specify-the-license or contact support@dynamsoft.com. * LICENSE ALERT - THE END */ diff --git a/hello-world/angular/package.json b/hello-world/angular/package.json index 1feefa5d..08656276 100644 --- a/hello-world/angular/package.json +++ b/hello-world/angular/package.json @@ -18,10 +18,10 @@ "@angular/platform-browser": "^17.3.0", "@angular/platform-browser-dynamic": "^17.3.0", "@angular/router": "^17.3.0", + "dynamsoft-barcode-reader-bundle": "10.4.2000", "rxjs": "~7.8.0", "tslib": "^2.3.0", - "zone.js": "~0.14.3", - "dynamsoft-barcode-reader-bundle": "10.2.1000" + "zone.js": "~0.14.3" }, "devDependencies": { "@angular-devkit/build-angular": "^17.3.7", @@ -36,4 +36,4 @@ "karma-jasmine-html-reporter": "~2.1.0", "typescript": "~5.4.2" } -} \ No newline at end of file +} diff --git a/hello-world/angular/src/app/dynamsoft.config.ts b/hello-world/angular/src/app/dynamsoft.config.ts index 1120f6ce..536e69ba 100644 --- a/hello-world/angular/src/app/dynamsoft.config.ts +++ b/hello-world/angular/src/app/dynamsoft.config.ts @@ -3,26 +3,20 @@ import { LicenseManager } from 'dynamsoft-license'; import 'dynamsoft-barcode-reader'; // Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths = { - std: 'https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@1.2.10/dist/', - dip: 'https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@2.2.30/dist/', - core: 'https://cdn.jsdelivr.net/npm/dynamsoft-core@3.2.30/dist/', - license: 'https://cdn.jsdelivr.net/npm/dynamsoft-license@3.2.21/dist/', - cvr: 'https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@2.2.30/dist/', - dbr: 'https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@10.2.10/dist/', - dce: 'https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@4.0.3/dist/', -}; +CoreModule.engineResourcePaths.rootDirectory = "https://cdn.jsdelivr.net/npm/"; /** LICENSE ALERT - README * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -LicenseManager.initLicense('DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9', true); +LicenseManager.initLicense('DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9', { + executeNow: true, +}); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.2.10&utm_source=samples#specify-the-license or contact support@dynamsoft.com. + * For more information, see https://www.dynamsoft.com/barcode-reader/programming/javascript/user-guide/?ver=10.4.2000&utm_source=samples#specify-the-license or contact support@dynamsoft.com. * LICENSE ALERT - THE END */ diff --git a/hello-world/blazor/README.md b/hello-world/blazor/README.md index d729be1c..cb76191a 100644 --- a/hello-world/blazor/README.md +++ b/hello-world/blazor/README.md @@ -2,7 +2,7 @@ [Blazor](https://dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blazor) is a framework for building interactive client-side web apps with .NET and C#. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a Blazor application using [JavaScript Interlop](https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/call-javascript-from-dotnet?view=aspnetcore-8.0#invoke-js-functions). -In this guide, we will be using [`dynamsoft-barcode-reader-bundle 10.2.1000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/10.2.1000). We also used .NET 8.0 (version 8.0.8) to develop this sample. To ensure the sample app runs properly, please refer to this guide to update your .NET installation - https://learn.microsoft.com/en-us/dotnet/core/install/upgrade. +In this guide, we will be using [`dynamsoft-barcode-reader-bundle 10.4.2000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/10.4.2000). We also used .NET 8.0 (version 8.0.8) to develop this sample. To ensure the sample app runs properly, please refer to this guide to update your .NET installation - https://learn.microsoft.com/en-us/dotnet/core/install/upgrade. > Note: > @@ -281,7 +281,7 @@ Inside the `wwwroot\index.html` file, we will initialize the license and necessa ... - + - + + + + + + + - + diff --git a/use-case/fill-a-form-with-barcode-reading.html b/use-case/fill-a-form-with-barcode-reading.html index 35ea23dc..56e525c4 100644 --- a/use-case/fill-a-form-with-barcode-reading.html +++ b/use-case/fill-a-form-with-barcode-reading.html @@ -64,7 +64,7 @@

Click each input box to fill in!

- + + - + + + - + - + + + + + + + - + + + + + - + - + + + + + + + - + + + + + + + + \ No newline at end of file diff --git a/hello-world/native-ts/index.ts b/hello-world/native-ts/index.ts new file mode 100644 index 00000000..3fefa386 --- /dev/null +++ b/hello-world/native-ts/index.ts @@ -0,0 +1,73 @@ +import "dynamsoft-barcode-reader" +import { CoreModule } from "dynamsoft-core"; +import { LicenseManager } from "dynamsoft-license"; +import { CameraView, CameraEnhancer } from "dynamsoft-camera-enhancer"; +import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; +import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; +import { DecodedBarcodesResult } from "dynamsoft-barcode-reader"; + +// Configures the paths where the .wasm files and other necessary resources for modules are located. +CoreModule.engineResourcePaths.rootDirectory = "https://cdn.jsdelivr.net/npm/"; + +/** LICENSE ALERT - README + * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. + */ + +LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9"); + +/** + * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. + * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. + * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=10.4.2001&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. + * LICENSE ALERT - THE END + */ + +// Optional. Used to load wasm resources in advance, reducing latency between video playing and barcode decoding. +CoreModule.loadWasm(["DBR"]); +// Defined globally for easy debugging. +let cameraEnhancer: CameraEnhancer; +let cvRouter: CaptureVisionRouter; + +(async () => { + try { + // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. + const cameraView = await CameraView.createInstance(); + cameraEnhancer = await CameraEnhancer.createInstance(cameraView); + // Get default UI and append it to DOM. + document.querySelector("#camera-view-container")!.append(cameraView.getUIElement()); + + // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. + cvRouter = await CaptureVisionRouter.createInstance(); + cvRouter.setInput(cameraEnhancer); + + // Define a callback for results. + cvRouter.addResultReceiver({ + onDecodedBarcodesReceived: (result: DecodedBarcodesResult) => { + if (!result.barcodeResultItems.length) return; + + const resultsContainer = document.querySelector("#results")!; + resultsContainer.textContent = ""; + console.log(result); + for (let item of result.barcodeResultItems) { + resultsContainer.textContent += `${item.formatString}: ${item.text}\n\n`; + } + }, + }); + + // Filter out unchecked and duplicate results. + const filter = new MultiFrameResultCrossFilter(); + // Filter out unchecked barcodes. + filter.enableResultCrossVerification("barcode", true); + // Filter out duplicate barcodes within 3 seconds. + filter.enableResultDeduplication("barcode", true); + await cvRouter.addResultFilter(filter); + + // Open camera and start scanning single barcode. + await cameraEnhancer.open(); + await cvRouter.startCapturing("ReadSingleBarcode"); + } catch (ex: any) { + let errMsg = ex.message || ex; + console.error(errMsg); + alert(errMsg); + } +})(); \ No newline at end of file diff --git a/hello-world/native-ts/package.json b/hello-world/native-ts/package.json new file mode 100644 index 00000000..f18b8033 --- /dev/null +++ b/hello-world/native-ts/package.json @@ -0,0 +1,23 @@ +{ + "name": "dbrjs-native-ts-sample", + "version": "0.0.0", + "main": "index.js", + "scripts": { + "build": "tsc && rollup -c", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "description": "", + "dependencies": { + "dynamsoft-barcode-reader-bundle": "10.4.2002" + }, + "devDependencies": { + "@rollup/plugin-node-resolve": "^15.3.0", + "@rollup/plugin-typescript": "^12.1.1", + "rollup": "^4.24.0", + "tslib": "^2.8.0", + "typescript": "^5.6.3" + } +} diff --git a/hello-world/native-ts/rollup.config.mjs b/hello-world/native-ts/rollup.config.mjs new file mode 100644 index 00000000..d78fbc65 --- /dev/null +++ b/hello-world/native-ts/rollup.config.mjs @@ -0,0 +1,27 @@ +import typescript from "@rollup/plugin-typescript"; +import { nodeResolve } from "@rollup/plugin-node-resolve"; + +// https://rollupjs.org/guide/en/#configuration-files +export default () => { + // cvr.js: Only use for
-
+
Results:
-
+
{resultText}
\ No newline at end of file diff --git a/hello-world/vue/src/components/VideoCapture.vue b/hello-world/vue/src/components/VideoCapture.vue index ed4eddf0..870faaea 100644 --- a/hello-world/vue/src/components/VideoCapture.vue +++ b/hello-world/vue/src/components/VideoCapture.vue @@ -8,7 +8,6 @@ import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; const cameraViewContainer: Ref = ref(null); -const resultsContainer: Ref = ref(null); let resolveInit: () => void; const pInit: Promise = new Promise(r => { resolveInit = r }); @@ -16,9 +15,9 @@ let isDestroyed = false; let cvRouter: CaptureVisionRouter; let cameraEnhancer: CameraEnhancer; +let resultText = ref(""); onMounted(async () => { - try { // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. const cameraView = await CameraView.createInstance(); @@ -40,10 +39,10 @@ onMounted(async () => { onDecodedBarcodesReceived: (result) => { if (!result.barcodeResultItems.length) return; - resultsContainer.value!.textContent = ''; + resultText.value = ''; console.log(result); for (let item of result.barcodeResultItems) { - resultsContainer.value!.textContent += `${item.formatString}: ${item.text}\n\n`; + resultText.value += `${item.formatString}: ${item.text}\n\n`; } } }); @@ -95,7 +94,7 @@ onBeforeUnmount(async () => {

Results: -
+
{{ resultText }}
From e6970a779709cfaf22232fe88c348baf6807f5b3 Mon Sep 17 00:00:00 2001 From: SHEN <1014628363@qq.com> Date: Mon, 23 Dec 2024 11:21:55 +0800 Subject: [PATCH 083/223] rename --- hello-world/next/README.md | 4 ++-- hello-world/next/components/ImageCapture/ImageCapture.tsx | 4 ++-- hello-world/react-hooks/README.md | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/hello-world/next/README.md b/hello-world/next/README.md index 6449cf5e..7cf56700 100644 --- a/hello-world/next/README.md +++ b/hello-world/next/README.md @@ -259,7 +259,7 @@ function ImageCapture() { let pCvRouter: MutableRefObject | null> = useRef(null); let isDestroyed = useRef(false); - const decodeImg = useCallback(async (e: React.ChangeEvent) => { + const captureImage = useCallback(async (e: React.ChangeEvent) => { let files = [...(e.target.files as any as File[])]; e.target.value = ""; // reset input resultsContainer.current!.innerText = ""; @@ -314,7 +314,7 @@ function ImageCapture() { return (
- +
diff --git a/hello-world/next/components/ImageCapture/ImageCapture.tsx b/hello-world/next/components/ImageCapture/ImageCapture.tsx index d8b5b097..02ff1701 100644 --- a/hello-world/next/components/ImageCapture/ImageCapture.tsx +++ b/hello-world/next/components/ImageCapture/ImageCapture.tsx @@ -11,7 +11,7 @@ function ImageCapture() { let pCvRouter: MutableRefObject | null> = useRef(null); let isDestroyed = useRef(false); - const decodeImg = useCallback(async (e: React.ChangeEvent) => { + const captureImage = useCallback(async (e: React.ChangeEvent) => { let files = [...(e.target.files as any as File[])]; e.target.value = ""; // reset input let _resultText = ""; @@ -68,7 +68,7 @@ function ImageCapture() { return (
- +
{resultText}
diff --git a/hello-world/react-hooks/README.md b/hello-world/react-hooks/README.md index 3bf8d43a..8e1b6f31 100644 --- a/hello-world/react-hooks/README.md +++ b/hello-world/react-hooks/README.md @@ -236,7 +236,7 @@ function ImageCapture() { let pCvRouter: MutableRefObject | null> = useRef(null); let isDestroyed = useRef(false); - const decodeImg = useCallback(async (e: React.ChangeEvent) => { + const captureImage = useCallback(async (e: React.ChangeEvent) => { let files = [...(e.target.files as any as File[])]; e.target.value = ""; // reset input resultsContainer.current!.innerText = ""; @@ -291,7 +291,7 @@ function ImageCapture() { return (
- +
From fc43d210ea6014173fd6c09196a03ba78c449937 Mon Sep 17 00:00:00 2001 From: SHEN <1014628363@qq.com> Date: Mon, 23 Dec 2024 11:24:09 +0800 Subject: [PATCH 084/223] Update ImageCapture.tsx --- .../react-hooks/src/components/ImageCapture/ImageCapture.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx b/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx index d8c3a262..85f480b7 100644 --- a/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx +++ b/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx @@ -11,7 +11,7 @@ function ImageCapture() { let pCvRouter: MutableRefObject | null> = useRef(null); let isDestroyed = useRef(false); - const decodeImg = async (e: React.ChangeEvent) => { + const captureImage = async (e: React.ChangeEvent) => { let files = [...(e.target.files as any as File[])]; e.target.value = ""; // reset input setResultText(""); @@ -68,7 +68,7 @@ function ImageCapture() { return (
- +
{resultText}
From 487376b559344f3bb26e17127637833581962abd Mon Sep 17 00:00:00 2001 From: Justin Date: Thu, 26 Dec 2024 14:38:43 +0800 Subject: [PATCH 085/223] update hello-world README --- hello-world/angular/README.md | 29 ++++++------- hello-world/blazor/README.md | 70 +++++++++++++++---------------- hello-world/electron/README.md | 31 ++++++-------- hello-world/next/README.md | 40 ++++++++++-------- hello-world/nuxt/README.md | 62 ++++++++++++++++++++------- hello-world/react-hooks/README.md | 47 ++++++++++++--------- hello-world/react/README.md | 29 ++++++++----- hello-world/svelte/README.md | 35 +++++++++------- hello-world/vue/README.md | 37 ++++++++-------- 9 files changed, 219 insertions(+), 161 deletions(-) diff --git a/hello-world/angular/README.md b/hello-world/angular/README.md index fe6c10a1..964bc540 100644 --- a/hello-world/angular/README.md +++ b/hello-world/angular/README.md @@ -118,7 +118,7 @@ ng generate component video-capture >

Results: -
+
{{resultText}}
``` * In `video-capture.component.ts`, add code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). @@ -141,7 +141,7 @@ const componentDestroyedErrorMsg = 'VideoCapture Component Destroyed'; }) export class VideoCaptureComponent { @ViewChild('cameraViewContainer') cameraViewContainer?: ElementRef; - @ViewChild('results') resultsContainer?: ElementRef; + resultText = ""; resolveInit?: () => void; pInit: Promise = new Promise((r) => { @@ -179,10 +179,10 @@ export class VideoCaptureComponent { onDecodedBarcodesReceived: (result) => { if (!result.barcodeResultItems.length) return; - this.resultsContainer!.nativeElement.textContent = ''; + this.resultText = ''; console.log(result); for (let item of result.barcodeResultItems) { - this.resultsContainer!.nativeElement.textContent += `${item.formatString}: ${item.text}\n\n`; + this.resultText += `${item.formatString}: ${item.text}\n\n`; } }, }); @@ -200,6 +200,7 @@ export class VideoCaptureComponent { // Open camera and start scanning single barcode. await this.cameraEnhancer.open(); + cameraView.setScanLaserVisible(true); if (this.isDestroyed) { throw Error(componentDestroyedErrorMsg); } @@ -235,7 +236,7 @@ export class VideoCaptureComponent { ``` > Note: > -> If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customize-the-ui) +> If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customizing-the-ui) ### Generate and edit the `image-capture` component @@ -259,7 +260,7 @@ ng generate component image-capture accept=".jpg,.jpeg,.icon,.gif,.svg,.webp,.png,.bmp" />
-
+
{{resultText}}
``` @@ -280,7 +281,7 @@ import { CaptureVisionRouter } from 'dynamsoft-capture-vision-router'; standalone: true, }) export class ImageCaptureComponent { - @ViewChild('results') resultsContainer?: ElementRef; + resultText = ""; pCvRouter?: Promise; isDestroyed = false; @@ -288,7 +289,7 @@ export class ImageCaptureComponent { captureImage = async (e: Event) => { let files = [...((e.target! as HTMLInputElement).files as any as File[])]; (e.target! as HTMLInputElement).value = ''; // reset input - this.resultsContainer!.nativeElement.innerText = ''; + this.resultText = ''; try { // ensure cvRouter is created only once const cvRouter = await (this.pCvRouter = @@ -296,25 +297,25 @@ export class ImageCaptureComponent { if (this.isDestroyed) return; for (let file of files) { - // Decode selected image with 'ReadBarcodes_SpeedFirst' template. - const result = await cvRouter.capture(file, 'ReadBarcodes_SpeedFirst'); + // Decode selected image with 'ReadBarcodes_ReadRateFirst' template. + const result = await cvRouter.capture(file, 'ReadBarcodes_ReadRateFirst'); + console.log(result); if (this.isDestroyed) return; // Print file name if there's multiple files if (files.length > 1) { - this.resultsContainer!.nativeElement.innerText += `\n${file.name}:\n`; + this.resultText += `\n${file.name}:\n`; } for (let _item of result.items) { if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { continue; // check if captured result item is a barcode } let item = _item as BarcodeResultItem; - this.resultsContainer!.nativeElement.innerText += item.text + '\n'; // output the decoded barcode text - console.log(item.text); + this.resultText += item.text + '\n'; // output the decoded barcode text } // If no items are found, display that no barcode was detected if (!result.items.length) - this.resultsContainer!.nativeElement.innerText += + this.resultText += 'No barcode found\n'; } } catch (ex: any) { diff --git a/hello-world/blazor/README.md b/hello-world/blazor/README.md index aae77471..b44e2205 100644 --- a/hello-world/blazor/README.md +++ b/hello-world/blazor/README.md @@ -156,6 +156,8 @@ window.startVideoDecode = async () => { // Open camera and start scanning single barcode. await cameraEnhancer.open(); + + cameraView.setScanLaserVisible(true); await cvRouter.startCapturing("ReadSingleBarcode"); } catch (ex) { let errMsg = ex.message || ex; @@ -283,45 +285,43 @@ Inside the `wwwroot\index.html` file, we will initialize the license and necessa - - + ``` diff --git a/hello-world/electron/README.md b/hello-world/electron/README.md index fe4a8715..f51aba6d 100644 --- a/hello-world/electron/README.md +++ b/hello-world/electron/README.md @@ -18,12 +18,13 @@ In this guide, we will be using [`dynamsoft-barcode-reader-bundle 10.4.2002`](ht Make sure you have [node](https://nodejs.org/) installed. `node 16.20.1` and `electron 26.4.1` are used in this article. -## Quick Start +## Quick Start ```cmd npm install npm start ``` + A window should open to view the sample application ## Creating the sample project @@ -148,14 +149,14 @@ Dynamsoft.Core.CoreModule.engineResourcePaths = { license: "./node_modules/dynamsoft-license/dist/", cvr: "./node_modules/dynamsoft-capture-vision-router/dist/", dbr: "./node_modules/dynamsoft-barcode-reader/dist/", - dce: "./node_modules/dynamsoft-camera-enhancer/dist/" + dce: "./node_modules/dynamsoft-camera-enhancer/dist/", }; /** LICENSE ALERT - README * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ -Dynamsoft.License.LicenseManager.initLicense('DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9', { +Dynamsoft.License.LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", { executeNow: true, }); @@ -170,15 +171,18 @@ Dynamsoft.License.LicenseManager.initLicense('DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMD Dynamsoft.Core.CoreModule.loadWasm(["DBR"]); (async () => { + // Defined globally for easy debugging. + let cameraEnhancer, cvRouter; + try { - // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. + // Create a `CameraView` instance for UI control and a `CameraEnhancer` instance for camera control. const cameraView = await Dynamsoft.DCE.CameraView.createInstance(); - const cameraEnhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance(cameraView); + cameraEnhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance(cameraView); // Get default UI and append it to DOM. document.querySelector("#camera-view-container").append(cameraView.getUIElement()); // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. - const cvRouter = await Dynamsoft.CVR.CaptureVisionRouter.createInstance(); + cvRouter = await Dynamsoft.CVR.CaptureVisionRouter.createInstance(); cvRouter.setInput(cameraEnhancer); // Define a callback for results. @@ -187,12 +191,12 @@ Dynamsoft.Core.CoreModule.loadWasm(["DBR"]); if (!result.barcodeResultItems.length) return; const resultsContainer = document.querySelector("#results"); - resultsContainer.textContent = ''; + resultsContainer.textContent = ""; console.log(result); for (let item of result.barcodeResultItems) { resultsContainer.textContent += `${item.formatString}: ${item.text}\n\n`; } - } + }, }); // Filter out unchecked and duplicate results. @@ -205,6 +209,7 @@ Dynamsoft.Core.CoreModule.loadWasm(["DBR"]); // Open camera and start scanning single barcode. await cameraEnhancer.open(); + cameraView.setScanLaserVisible(true); await cvRouter.startCapturing("ReadSingleBarcode"); } catch (ex) { let errMsg = ex.message || ex; @@ -221,22 +226,12 @@ Dynamsoft.Core.CoreModule.loadWasm(["DBR"]); Create the `style.css` file at the root folder. Note that this is customizable! ```css -body { - text-align: center; -} - -#camera-view-container { - width: 100%; - height: 80vh; -} - #results { width: 100%; height: 10vh; overflow: auto; white-space: pre-wrap; } - ``` ## Run the application diff --git a/hello-world/next/README.md b/hello-world/next/README.md index 8f5f8ad0..828f4dec 100644 --- a/hello-world/next/README.md +++ b/hello-world/next/README.md @@ -111,17 +111,18 @@ CoreModule.loadWasm(["DBR"]); ```tsx /* /components/VideoCapture/VideoCapture.tsx */ -import React, { useEffect, useRef } from "react"; +import React, { useEffect, useRef, useState } from "react"; import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. import { CameraEnhancer, CameraView } from "dynamsoft-camera-enhancer"; import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; +import "./VideoCapture.css"; const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; function VideoCapture() { const cameraViewContainer = useRef(null); - const resultsContainer = useRef(null); + const [resultsText, setResultText] = useState(""); useEffect((): any => { let resolveInit: () => void; @@ -160,11 +161,12 @@ function VideoCapture() { onDecodedBarcodesReceived: (result) => { if (!result.barcodeResultItems.length) return; - resultsContainer.current!.textContent = ""; + let _resultText = ""; console.log(result); for (let item of result.barcodeResultItems) { - resultsContainer.current!.textContent += `${item.formatString}: ${item.text}\n\n`; + _resultText += `${item.formatString}: ${item.text}\n\n`; } + setResultText(_resultText); }, }); @@ -181,6 +183,7 @@ function VideoCapture() { // Open camera and start scanning single barcode. await cameraEnhancer.open(); + cameraView.setScanLaserVisible(true); if (isDestroyed) { throw Error(componentDestroyedErrorMsg); } @@ -224,9 +227,9 @@ function VideoCapture() { background: "#eee", }} >
- Results:
-
+ Results: +
{resultsText}
); } @@ -237,7 +240,7 @@ export default VideoCapture; > Note: > > * The component should never update so that events bound to the UI stay valid. In this component, the useEffect() hook is used to handle the component’s mount and unmount lifecycle events, and there are no state updates that would cause a re-render. -> * If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customize-the-ui) +> * If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customizing-the-ui) ### Create and edit the `ImageCapture` component @@ -247,14 +250,15 @@ export default VideoCapture; ```tsx /* /components/ImageCapture/ImageCapture.tsx */ -import React, { useRef, useEffect, MutableRefObject } from "react"; +import React, { useRef, useEffect, MutableRefObject, useState } from "react"; import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. import { EnumCapturedResultItemType } from "dynamsoft-core"; import { BarcodeResultItem } from "dynamsoft-barcode-reader"; import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; +import "./ImageCapture.css"; function ImageCapture() { - const resultsContainer: MutableRefObject = useRef(null); + const [resultText, setResultText] = useState(""); let pCvRouter: MutableRefObject | null> = useRef(null); let isDestroyed = useRef(false); @@ -262,7 +266,7 @@ function ImageCapture() { const captureImage = useCallback(async (e: React.ChangeEvent) => { let files = [...(e.target.files as any as File[])]; e.target.value = ""; // reset input - resultsContainer.current!.innerText = ""; + let _resultText = ""; try { // ensure cvRouter is created only once @@ -270,24 +274,26 @@ function ImageCapture() { if (isDestroyed.current) return; for (let file of files) { - // Decode selected image with 'ReadBarcodes_SpeedFirst' template. - const result = await cvRouter.capture(file, "ReadBarcodes_SpeedFirst"); + // Decode selected image with 'ReadBarcodes_ReadRateFirst' template. + const result = await cvRouter.capture(file, "ReadBarcodes_ReadRateFirst"); + console.log(result); if (isDestroyed.current) return; + let _resultText = ""; // Print file name if there's multiple files if (files.length > 1) { - resultsContainer.current!.innerText += `\n${file.name}:\n`; + _resultText += `\n${file.name}:\n`; } for (let _item of result.items) { if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { continue; // check if captured result item is a barcode } let item = _item as BarcodeResultItem; - resultsContainer.current!.innerText += item.text + "\n"; // output the decoded barcode text - console.log(item.text); + _resultText += item.text + "\n"; // output the decoded barcode text } // If no items are found, display that no barcode was detected - if (!result.items.length) resultsContainer.current!.innerText += "No barcode found"; + if (!result.items.length) _resultText = "No barcode found"; + setResultText(_resultText); } } catch (ex: any) { let errMsg = ex.message || ex; @@ -316,7 +322,7 @@ function ImageCapture() {
-
+
{resultText}
); } diff --git a/hello-world/nuxt/README.md b/hello-world/nuxt/README.md index f387d301..150e8daa 100644 --- a/hello-world/nuxt/README.md +++ b/hello-world/nuxt/README.md @@ -110,7 +110,7 @@ import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; const cameraViewContainer: Ref = ref(null); -const resultsContainer: Ref = ref(null); +const resultText = ref(""); let resolveInit: () => void; const pInit: Promise = new Promise(r => { resolveInit = r }); @@ -142,10 +142,10 @@ onMounted(async () => { onDecodedBarcodesReceived: (result) => { if (!result.barcodeResultItems.length) return; - resultsContainer.value!.textContent = ''; + resultText.value = ''; console.log(result); for (let item of result.barcodeResultItems) { - resultsContainer.value!.textContent += `${item.formatString}: ${item.text}\n\n`; + resultText.value += `${item.formatString}: ${item.text}\n\n`; } } }); @@ -161,6 +161,7 @@ onMounted(async () => { // Open camera and start scanning single barcode. await cameraEnhancer.open(); + cameraView.setScanLaserVisible(true); if (isDestroyed) { throw Error(componentDestroyedErrorMsg); } await cvRouter.startCapturing("ReadSingleBarcode"); if (isDestroyed) { throw Error(componentDestroyedErrorMsg); } @@ -196,13 +197,22 @@ onBeforeUnmount(async () => {

Results: -
+
{{ resultText }}
+ + ``` > Note: > -> If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customize-the-ui) +> If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customizing-the-ui) ### Edit the `ImageCapture` component @@ -217,7 +227,7 @@ import { EnumCapturedResultItemType } from "dynamsoft-core"; import type { BarcodeResultItem } from "dynamsoft-barcode-reader"; import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; -const resultContainer: Ref = ref(null); +const resultText = ref(""); let pCvRouter: Promise; let isDestroyed = false; @@ -225,31 +235,31 @@ let isDestroyed = false; const captureImage = async (e: Event) => { let files = [...(e.target! as HTMLInputElement).files!]; (e.target! as HTMLInputElement).value = ''; // reset input - resultContainer.value!.innerText = ""; + resultText.value = ""; try { // ensure cvRouter is created only once const cvRouter = await (pCvRouter = pCvRouter || CaptureVisionRouter.createInstance()); if (isDestroyed) return; for (let file of files) { - // Decode selected image with 'ReadBarcodes_SpeedFirst' template. - const result = await cvRouter.capture(file, "ReadBarcodes_SpeedFirst"); + // Decode selected image with 'ReadBarcodes_ReadRateFirst' template. + const result = await cvRouter.capture(file, "ReadBarcodes_ReadRateFirst"); + console.log(result); if (isDestroyed) return; // Print file name if there's multiple files if (files.length > 1) { - resultContainer.value!.innerText += `\n${file.name}:\n`; + resultText.value += `\n${file.name}:\n`; } for (let _item of result.items) { if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { continue; // check if captured result item is a barcode } let item = _item as BarcodeResultItem; - resultContainer.value!.innerText += item.text + "\n"; // output the decoded barcode text - console.log(item.text); + resultText.value += item.text + "\n"; // output the decoded barcode text } // If no items are found, display that no barcode was detected - if (!result.items.length) resultContainer.value!.innerText += 'No barcode found\n'; + if (!result.items.length) resultText.value += 'No barcode found\n'; } } catch (ex: any) { let errMsg = ex.message || ex; @@ -273,9 +283,32 @@ onBeforeUnmount(async () => {
-
+
{{resultText}}
+ + ``` ### Add `VideoCapture` and `ImageCapture` components in `app.vue` @@ -290,6 +323,7 @@ onBeforeUnmount(async () => {

Hello World for NuxtJS

+
); } @@ -310,8 +316,10 @@ export default ImageCapture; ```tsx /* /src/App.tsx */ import { useState } from "react"; +import reactLogo from "./assets/logo.svg"; import VideoCapture from "./components/VideoCapture/VideoCapture"; import ImageCapture from "./components/ImageCapture/ImageCapture"; +import "./App.css"; enum Modes { VIDEO_CAPTURE = "video", @@ -329,6 +337,7 @@ function App() {

Hello World for React

+ logo
); } @@ -221,7 +226,7 @@ export default VideoCapture; > * The component should never update (check the code for `shouldComponentUpdate()`) so that events bound to the UI stay valid. > * Also, during 'development', React executes setup and cleanup phases twice in [Strict Mode](https://react.dev/reference/react/StrictMode). To ensure proper functioning of VideoCapture in development, it's advised to avoid using Strict Mode for this component. > However, if you're still interested on using Strict Mode, we do have a workaround available. Please contact our [support team](#Support) for further assistance. -> * If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customize-the-ui) +> * If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customizing-the-ui) ### Create and edit the `ImageCapture` component @@ -236,6 +241,7 @@ import "../../dynamsoft.config"; // import side effects. The license, engineReso import { EnumCapturedResultItemType } from "dynamsoft-core"; import type { BarcodeResultItem } from "dynamsoft-barcode-reader"; import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; +import "./ImageCapture.css"; class ImageCapture extends React.Component { resultsContainer: React.RefObject = React.createRef(); @@ -253,8 +259,9 @@ class ImageCapture extends React.Component { if (this.isDestroyed) return; for (let file of files) { - // Decode selected image with 'ReadBarcodes_SpeedFirst' template. - const result = await cvRouter.capture(file, "ReadBarcodes_SpeedFirst"); + // Decode selected image with 'ReadBarcodes_ReadRateFirst' template. + const result = await cvRouter.capture(file, "ReadBarcodes_ReadRateFirst"); + console.log(result); if (this.isDestroyed) return; // Print file name if there's multiple files @@ -267,7 +274,6 @@ class ImageCapture extends React.Component { } let item = _item as BarcodeResultItem; this.resultsContainer.current!.innerText += item.text + "\n"; - console.log(item.text); } // If no items are found, display that no barcode was detected if (!result.items.length) this.resultsContainer.current!.innerText += "No barcode found\n"; @@ -317,9 +323,11 @@ export default ImageCapture; ```tsx /* src/App.tsx */ import React from "react"; +import reactLogo from "./assets/logo.svg"; import "./dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. import VideoCapture from "./components/VideoCapture/VideoCapture"; import ImageCapture from "./components/ImageCapture/ImageCapture"; +import "./App.css"; enum Modes { VIDEO_CAPTURE = "video", @@ -348,6 +356,7 @@ class App extends React.Component {

Hello World for React

+ logo
``` diff --git a/hello-world/vue/README.md b/hello-world/vue/README.md index c6a64953..8411f59e 100644 --- a/hello-world/vue/README.md +++ b/hello-world/vue/README.md @@ -118,7 +118,6 @@ import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; const cameraViewContainer: Ref = ref(null); -const resultsContainer: Ref = ref(null); let resolveInit: () => void; const pInit: Promise = new Promise(r => { resolveInit = r }); @@ -126,9 +125,9 @@ let isDestroyed = false; let cvRouter: CaptureVisionRouter; let cameraEnhancer: CameraEnhancer; +let resultText = ref(""); onMounted(async () => { - try { // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. const cameraView = await CameraView.createInstance(); @@ -150,10 +149,10 @@ onMounted(async () => { onDecodedBarcodesReceived: (result) => { if (!result.barcodeResultItems.length) return; - resultsContainer.value!.textContent = ''; + resultText.value = ''; console.log(result); for (let item of result.barcodeResultItems) { - resultsContainer.value!.textContent += `${item.formatString}: ${item.text}\n\n`; + resultText.value += `${item.formatString}: ${item.text}\n\n`; } } }); @@ -169,6 +168,7 @@ onMounted(async () => { // Open camera and start scanning single barcode. await cameraEnhancer.open(); + cameraView.setScanLaserVisible(true); if (isDestroyed) { throw Error(componentDestroyedErrorMsg); } await cvRouter.startCapturing("ReadSingleBarcode"); if (isDestroyed) { throw Error(componentDestroyedErrorMsg); } @@ -204,13 +204,13 @@ onBeforeUnmount(async () => {

Results: -
+
{{ resultText }}
``` > Note: > -> If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customize-the-ui) +> If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customizing-the-ui) ### Create and edit the `ImageCapture` component @@ -221,45 +221,44 @@ onBeforeUnmount(async () => { ```vue - + - + + + + + + + - + + + + + - + + + + + + +

Hello World (Decode via Camera)

+
+ + + + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/README.md b/barcode-scanner-api-samples/scan-single-barcode/README.md new file mode 100644 index 00000000..e69de29b diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/.editorconfig b/barcode-scanner-api-samples/scan-single-barcode/angular/.editorconfig new file mode 100644 index 00000000..f166060d --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/.editorconfig @@ -0,0 +1,17 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single +ij_typescript_use_double_quotes = false + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/.gitignore b/barcode-scanner-api-samples/scan-single-barcode/angular/.gitignore new file mode 100644 index 00000000..cc7b1413 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/.gitignore @@ -0,0 +1,42 @@ +# See https://docs.github.com/get-started/getting-started-with-git/ignoring-files for more about ignoring files. + +# Compiled output +/dist +/tmp +/out-tsc +/bazel-out + +# Node +/node_modules +npm-debug.log +yarn-error.log + +# IDEs and editors +.idea/ +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# Visual Studio Code +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# Miscellaneous +/.angular/cache +.sass-cache/ +/connect.lock +/coverage +/libpeerconnection.log +testem.log +/typings + +# System files +.DS_Store +Thumbs.db diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/README.md b/barcode-scanner-api-samples/scan-single-barcode/angular/README.md new file mode 100644 index 00000000..6c81de7d --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/README.md @@ -0,0 +1,59 @@ +# Angular + +This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 19.2.8. + +## Development server + +To start a local development server, run: + +```bash +ng serve +``` + +Once the server is running, open your browser and navigate to `http://localhost:4200/`. The application will automatically reload whenever you modify any of the source files. + +## Code scaffolding + +Angular CLI includes powerful code scaffolding tools. To generate a new component, run: + +```bash +ng generate component component-name +``` + +For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run: + +```bash +ng generate --help +``` + +## Building + +To build the project run: + +```bash +ng build +``` + +This will compile your project and store the build artifacts in the `dist/` directory. By default, the production build optimizes your application for performance and speed. + +## Running unit tests + +To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command: + +```bash +ng test +``` + +## Running end-to-end tests + +For end-to-end (e2e) testing, run: + +```bash +ng e2e +``` + +Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs. + +## Additional Resources + +For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page. diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/angular.json b/barcode-scanner-api-samples/scan-single-barcode/angular/angular.json new file mode 100644 index 00000000..367a1fe0 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/angular.json @@ -0,0 +1,99 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "angular": { + "projectType": "application", + "schematics": {}, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:application", + "options": { + "outputPath": "dist/angular", + "index": "src/index.html", + "browser": "src/main.ts", + "polyfills": [ + "zone.js" + ], + "tsConfig": "tsconfig.app.json", + "assets": [ + { + "glob": "**/*", + "input": "public" + } + ], + "styles": [ + "src/styles.css" + ], + "scripts": [] + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "500kB", + "maximumError": "1MB" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "4kB", + "maximumError": "8kB" + } + ], + "outputHashing": "all" + }, + "development": { + "optimization": false, + "extractLicenses": false, + "sourceMap": true + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "configurations": { + "production": { + "buildTarget": "angular:build:production" + }, + "development": { + "buildTarget": "angular:build:development" + } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n" + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "polyfills": [ + "zone.js", + "zone.js/testing" + ], + "tsConfig": "tsconfig.spec.json", + "assets": [ + { + "glob": "**/*", + "input": "public" + } + ], + "styles": [ + "src/styles.css" + ], + "scripts": [] + } + } + } + } + }, + "cli": { + "analytics": false + } +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/package.json b/barcode-scanner-api-samples/scan-single-barcode/angular/package.json new file mode 100644 index 00000000..ec4e1003 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/package.json @@ -0,0 +1,38 @@ +{ + "name": "angular", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "watch": "ng build --watch --configuration development", + "test": "ng test" + }, + "private": true, + "dependencies": { + "@angular/common": "^19.2.0", + "@angular/compiler": "^19.2.0", + "@angular/core": "^19.2.0", + "@angular/forms": "^19.2.0", + "@angular/platform-browser": "^19.2.0", + "@angular/platform-browser-dynamic": "^19.2.0", + "@angular/router": "^19.2.0", + "@dynamsoft/dynamsoft-barcode-reader-bundle": "^10.5.1000-dev-20250418130750", + "rxjs": "~7.8.0", + "tslib": "^2.3.0", + "zone.js": "~0.15.0" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^19.2.8", + "@angular/cli": "^19.2.8", + "@angular/compiler-cli": "^19.2.0", + "@types/jasmine": "~5.1.0", + "jasmine-core": "~5.6.0", + "karma": "~6.4.0", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage": "~2.2.0", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.1.0", + "typescript": "~5.7.2" + } +} diff --git a/hello-world/angular/src/favicon.ico b/barcode-scanner-api-samples/scan-single-barcode/angular/public/favicon.ico similarity index 100% rename from hello-world/angular/src/favicon.ico rename to barcode-scanner-api-samples/scan-single-barcode/angular/public/favicon.ico diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.css b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.css new file mode 100644 index 00000000..24ae6460 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.css @@ -0,0 +1,34 @@ +.dbs-hello-world-page { + width: 100%; + height: 100%; + text-align: center; +} + +.dbs-title { + height: 90px; + display: flex; + justify-content: center; + align-items: center; + padding: 20px 0; +} + +.dbs-title .dbs-title-logo { + width: 60px; + height: 60px; + animation: retate 5s infinite linear; +} + +.dbs-container { + width: 100%; + height: calc(100% - 90px); +} + +@keyframes retate { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(360deg); + } +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.html b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.html new file mode 100644 index 00000000..85a6f853 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.html @@ -0,0 +1,6 @@ +
+
+

Hello World for Angular

+
+
+
diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.spec.ts b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.spec.ts new file mode 100644 index 00000000..9a8153d9 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.spec.ts @@ -0,0 +1,29 @@ +import { TestBed } from '@angular/core/testing'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [AppComponent], + }).compileComponents(); + }); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have the 'angular' title`, () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app.title).toEqual('angular'); + }); + + it('should render title', () => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.nativeElement as HTMLElement; + expect(compiled.querySelector('h1')?.textContent).toContain('Hello, angular'); + }); +}); diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts new file mode 100644 index 00000000..d17d575d --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts @@ -0,0 +1,30 @@ +import { Component } from '@angular/core'; +import { RouterOutlet } from '@angular/router'; +import { BarcodeScanner } from '@dynamsoft/dynamsoft-barcode-reader-bundle'; + +@Component({ + selector: 'app-root', + imports: [RouterOutlet], + templateUrl: './app.component.html', + styleUrl: './app.component.css' +}) +export class AppComponent { + title = 'angular'; + + async ngAfterViewInit(): Promise { + const config = { + license: "YOUR-LICENSE-KEY", + container: ".dbs-container", + engineResourcePaths: { + rootDirectory: "https://npm.scannerproxy.com:802/cdn/@dynamsoft/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", + }, + scannerViewConfig: { + cameraEnhancerUIPath: "https://npm.scannerproxy.com:802/cdn/@dynamsoft/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", + }, + } + const dbs = new BarcodeScanner(config); + dbs.launch().then((result) => { + console.log(result); + }); + } +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.config.ts b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.config.ts new file mode 100644 index 00000000..a1e7d6f8 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.config.ts @@ -0,0 +1,8 @@ +import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core'; +import { provideRouter } from '@angular/router'; + +import { routes } from './app.routes'; + +export const appConfig: ApplicationConfig = { + providers: [provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes)] +}; diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.routes.ts b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.routes.ts new file mode 100644 index 00000000..dc39edb5 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.routes.ts @@ -0,0 +1,3 @@ +import { Routes } from '@angular/router'; + +export const routes: Routes = []; diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/index.html b/barcode-scanner-api-samples/scan-single-barcode/angular/src/index.html new file mode 100644 index 00000000..36c25def --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/src/index.html @@ -0,0 +1,13 @@ + + + + + Dynamsoft Barcode Reader Sample - Hello World (Decode via Camera) + + + + + + + + diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/main.ts b/barcode-scanner-api-samples/scan-single-barcode/angular/src/main.ts new file mode 100644 index 00000000..35b00f34 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/src/main.ts @@ -0,0 +1,6 @@ +import { bootstrapApplication } from '@angular/platform-browser'; +import { appConfig } from './app/app.config'; +import { AppComponent } from './app/app.component'; + +bootstrapApplication(AppComponent, appConfig) + .catch((err) => console.error(err)); diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/styles.css b/barcode-scanner-api-samples/scan-single-barcode/angular/src/styles.css new file mode 100644 index 00000000..a0583309 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/src/styles.css @@ -0,0 +1,16 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +html, +body { + width: 100%; + height: 100%; +} + +#root { + width: 100%; + height: 100%; +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.app.json b/barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.app.json new file mode 100644 index 00000000..3775b37e --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.app.json @@ -0,0 +1,15 @@ +/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ +/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [] + }, + "files": [ + "src/main.ts" + ], + "include": [ + "src/**/*.d.ts" + ] +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.json b/barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.json new file mode 100644 index 00000000..5525117c --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.json @@ -0,0 +1,27 @@ +/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ +/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ +{ + "compileOnSave": false, + "compilerOptions": { + "outDir": "./dist/out-tsc", + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "skipLibCheck": true, + "isolatedModules": true, + "esModuleInterop": true, + "experimentalDecorators": true, + "moduleResolution": "bundler", + "importHelpers": true, + "target": "ES2022", + "module": "ES2022" + }, + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.spec.json b/barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.spec.json new file mode 100644 index 00000000..5fb748d9 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.spec.json @@ -0,0 +1,15 @@ +/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ +/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine" + ] + }, + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/hello-world.html b/barcode-scanner-api-samples/scan-single-barcode/hello-world.html new file mode 100644 index 00000000..4a036936 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/hello-world.html @@ -0,0 +1,47 @@ + + + + + + + Dynamsoft Barcode Scanner Sample - Hello World (Decode via Camera) + + + + + +

Hello World (Decode via Camera)

+
+ + + + \ No newline at end of file diff --git a/hello-world/svelte/.gitignore b/barcode-scanner-api-samples/scan-single-barcode/react/.gitignore similarity index 100% rename from hello-world/svelte/.gitignore rename to barcode-scanner-api-samples/scan-single-barcode/react/.gitignore diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/README.md b/barcode-scanner-api-samples/scan-single-barcode/react/README.md new file mode 100644 index 00000000..da984443 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/react/README.md @@ -0,0 +1,54 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: + +```js +export default tseslint.config({ + extends: [ + // Remove ...tseslint.configs.recommended and replace with this + ...tseslint.configs.recommendedTypeChecked, + // Alternatively, use this for stricter rules + ...tseslint.configs.strictTypeChecked, + // Optionally, add this for stylistic rules + ...tseslint.configs.stylisticTypeChecked, + ], + languageOptions: { + // other options... + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + }, +}) +``` + +You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: + +```js +// eslint.config.js +import reactX from 'eslint-plugin-react-x' +import reactDom from 'eslint-plugin-react-dom' + +export default tseslint.config({ + plugins: { + // Add the react-x and react-dom plugins + 'react-x': reactX, + 'react-dom': reactDom, + }, + rules: { + // other rules... + // Enable its recommended typescript rules + ...reactX.configs['recommended-typescript'].rules, + ...reactDom.configs.recommended.rules, + }, +}) +``` diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/eslint.config.js b/barcode-scanner-api-samples/scan-single-barcode/react/eslint.config.js new file mode 100644 index 00000000..092408a9 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/react/eslint.config.js @@ -0,0 +1,28 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +) diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/index.html b/barcode-scanner-api-samples/scan-single-barcode/react/index.html new file mode 100644 index 00000000..a454578a --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/react/index.html @@ -0,0 +1,12 @@ + + + + + + Dynamsoft Barcode Reader Sample - Hello World (Decode via Camera) + + +
+ + + diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/package.json b/barcode-scanner-api-samples/scan-single-barcode/react/package.json new file mode 100644 index 00000000..36047fb3 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/react/package.json @@ -0,0 +1,30 @@ +{ + "name": "dbs-react", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@dynamsoft/dynamsoft-barcode-reader-bundle": "^10.5.1000-dev-20250417174703", + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "devDependencies": { + "@eslint/js": "^9.22.0", + "@types/react": "^19.0.10", + "@types/react-dom": "^19.0.4", + "@vitejs/plugin-react": "^4.3.4", + "eslint": "^9.22.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^16.0.0", + "typescript": "~5.7.2", + "typescript-eslint": "^8.26.1", + "vite": "^6.3.1" + } +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/src/App.css b/barcode-scanner-api-samples/scan-single-barcode/react/src/App.css new file mode 100644 index 00000000..fa360dd3 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/react/src/App.css @@ -0,0 +1,34 @@ +.dbs-hello-world-page { + width: 100%; + height: 100%; + text-align: center; +} + +.dbs-title { + height: 90px; + display: flex; + justify-content: center; + align-items: center; + padding: 20px 0; +} + +.dbs-title .dbs-title-logo { + width: 60px; + height: 60px; + animation: retate 5s infinite linear; +} + +.dbs-container { + width: 100%; + height: calc(100% - 90px); +} + +@keyframes retate { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(360deg); + } +} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx b/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx new file mode 100644 index 00000000..37abca6a --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx @@ -0,0 +1,34 @@ +import { useEffect } from 'react'; +import reactLogo from "./assets/logo.svg"; +import { BarcodeScanner } from '@dynamsoft/dynamsoft-barcode-reader-bundle'; +import './App.css'; + +function App() { + useEffect(() => { + const config = { + license: "YOUR-LICENSE-KEY", + container: ".dbs-container", + engineResourcePaths: { + rootDirectory: "https://npm.scannerproxy.com:802/cdn/@dynamsoft/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", + }, + scannerViewConfig: { + cameraEnhancerUIPath: "https://npm.scannerproxy.com:802/cdn/@dynamsoft/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", + }, + } + const dbs = new BarcodeScanner(config); + dbs.launch().then((result)=>{ + console.log(result); + }); + }) + return ( +
+
+

Hello World for React

+ logo +
+
+
+ ) +} + +export default App; diff --git a/hello-world/react-hooks/src/assets/logo.svg b/barcode-scanner-api-samples/scan-single-barcode/react/src/assets/logo.svg similarity index 100% rename from hello-world/react-hooks/src/assets/logo.svg rename to barcode-scanner-api-samples/scan-single-barcode/react/src/assets/logo.svg diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/src/index.css b/barcode-scanner-api-samples/scan-single-barcode/react/src/index.css new file mode 100644 index 00000000..8cff3329 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/react/src/index.css @@ -0,0 +1,16 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +html, +body { + width: 100%; + height: 100%; +} + +#root { + width: 100%; + height: 100%; +} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/src/main.tsx b/barcode-scanner-api-samples/scan-single-barcode/react/src/main.tsx new file mode 100644 index 00000000..aa331f78 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/react/src/main.tsx @@ -0,0 +1,5 @@ +import { createRoot } from 'react-dom/client' +import './index.css' +import App from './App.tsx' + +createRoot(document.getElementById('root')!).render() diff --git a/hello-world/vue/env.d.ts b/barcode-scanner-api-samples/scan-single-barcode/react/src/vite-env.d.ts similarity index 100% rename from hello-world/vue/env.d.ts rename to barcode-scanner-api-samples/scan-single-barcode/react/src/vite-env.d.ts diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.app.json b/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.app.json new file mode 100644 index 00000000..358ca9ba --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.app.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.json b/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.json new file mode 100644 index 00000000..1ffef600 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.node.json b/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.node.json new file mode 100644 index 00000000..db0becc8 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.node.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/vite.config.ts b/barcode-scanner-api-samples/scan-single-barcode/react/vite.config.ts new file mode 100644 index 00000000..8b0f57b9 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/react/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react()], +}) diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/.gitignore b/barcode-scanner-api-samples/scan-single-barcode/vue/.gitignore new file mode 100644 index 00000000..a547bf36 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/README.md b/barcode-scanner-api-samples/scan-single-barcode/vue/README.md new file mode 100644 index 00000000..33895ab2 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/README.md @@ -0,0 +1,5 @@ +# Vue 3 + TypeScript + Vite + +This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 ` + + diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/package.json b/barcode-scanner-api-samples/scan-single-barcode/vue/package.json new file mode 100644 index 00000000..80a47d2d --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/package.json @@ -0,0 +1,22 @@ +{ + "name": "vue", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vue-tsc -b && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@dynamsoft/dynamsoft-barcode-reader-bundle": "^10.5.1000-dev-20250418130750", + "vue": "^3.5.13" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.2.2", + "@vue/tsconfig": "^0.7.0", + "typescript": "~5.7.2", + "vite": "^6.3.1", + "vue-tsc": "^2.2.8" + } +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/public/vite.svg b/barcode-scanner-api-samples/scan-single-barcode/vue/public/vite.svg new file mode 100644 index 00000000..e7b8dfb1 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue b/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue new file mode 100644 index 00000000..92ef6909 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/src/assets/vue.svg b/barcode-scanner-api-samples/scan-single-barcode/vue/src/assets/vue.svg new file mode 100644 index 00000000..770e9d33 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/src/assets/vue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/src/main.ts b/barcode-scanner-api-samples/scan-single-barcode/vue/src/main.ts new file mode 100644 index 00000000..2425c0f7 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/src/main.ts @@ -0,0 +1,5 @@ +import { createApp } from 'vue' +import './style.css' +import App from './App.vue' + +createApp(App).mount('#app') diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/src/style.css b/barcode-scanner-api-samples/scan-single-barcode/vue/src/style.css new file mode 100644 index 00000000..051f6089 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/src/style.css @@ -0,0 +1,16 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +html, +body { + width: 100%; + height: 100%; +} + +#app { + width: 100%; + height: 100%; +} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/src/vite-env.d.ts b/barcode-scanner-api-samples/scan-single-barcode/vue/src/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.app.json b/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.app.json new file mode 100644 index 00000000..7fb078ce --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.app.json @@ -0,0 +1,14 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"] +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.json b/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.json new file mode 100644 index 00000000..1ffef600 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.node.json b/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.node.json new file mode 100644 index 00000000..db0becc8 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.node.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/vite.config.ts b/barcode-scanner-api-samples/scan-single-barcode/vue/vite.config.ts new file mode 100644 index 00000000..bbcf80cc --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [vue()], +}) diff --git a/hello-world/README.md b/foundational-api-samples/hello-world/README.md similarity index 100% rename from hello-world/README.md rename to foundational-api-samples/hello-world/README.md diff --git a/hello-world/angular/.editorconfig b/foundational-api-samples/hello-world/angular/.editorconfig similarity index 100% rename from hello-world/angular/.editorconfig rename to foundational-api-samples/hello-world/angular/.editorconfig diff --git a/hello-world/angular/.gitignore b/foundational-api-samples/hello-world/angular/.gitignore similarity index 100% rename from hello-world/angular/.gitignore rename to foundational-api-samples/hello-world/angular/.gitignore diff --git a/hello-world/angular/README.md b/foundational-api-samples/hello-world/angular/README.md similarity index 100% rename from hello-world/angular/README.md rename to foundational-api-samples/hello-world/angular/README.md diff --git a/hello-world/angular/angular.json b/foundational-api-samples/hello-world/angular/angular.json similarity index 100% rename from hello-world/angular/angular.json rename to foundational-api-samples/hello-world/angular/angular.json diff --git a/hello-world/angular/package.json b/foundational-api-samples/hello-world/angular/package.json similarity index 100% rename from hello-world/angular/package.json rename to foundational-api-samples/hello-world/angular/package.json diff --git a/hello-world/angular/src/app/app.component.css b/foundational-api-samples/hello-world/angular/src/app/app.component.css similarity index 100% rename from hello-world/angular/src/app/app.component.css rename to foundational-api-samples/hello-world/angular/src/app/app.component.css diff --git a/hello-world/angular/src/app/app.component.html b/foundational-api-samples/hello-world/angular/src/app/app.component.html similarity index 100% rename from hello-world/angular/src/app/app.component.html rename to foundational-api-samples/hello-world/angular/src/app/app.component.html diff --git a/hello-world/angular/src/app/app.component.ts b/foundational-api-samples/hello-world/angular/src/app/app.component.ts similarity index 100% rename from hello-world/angular/src/app/app.component.ts rename to foundational-api-samples/hello-world/angular/src/app/app.component.ts diff --git a/hello-world/angular/src/app/dynamsoft.config.ts b/foundational-api-samples/hello-world/angular/src/app/dynamsoft.config.ts similarity index 100% rename from hello-world/angular/src/app/dynamsoft.config.ts rename to foundational-api-samples/hello-world/angular/src/app/dynamsoft.config.ts diff --git a/hello-world/angular/src/app/image-capture/image-capture.component.css b/foundational-api-samples/hello-world/angular/src/app/image-capture/image-capture.component.css similarity index 100% rename from hello-world/angular/src/app/image-capture/image-capture.component.css rename to foundational-api-samples/hello-world/angular/src/app/image-capture/image-capture.component.css diff --git a/hello-world/angular/src/app/image-capture/image-capture.component.html b/foundational-api-samples/hello-world/angular/src/app/image-capture/image-capture.component.html similarity index 100% rename from hello-world/angular/src/app/image-capture/image-capture.component.html rename to foundational-api-samples/hello-world/angular/src/app/image-capture/image-capture.component.html diff --git a/hello-world/angular/src/app/image-capture/image-capture.component.ts b/foundational-api-samples/hello-world/angular/src/app/image-capture/image-capture.component.ts similarity index 100% rename from hello-world/angular/src/app/image-capture/image-capture.component.ts rename to foundational-api-samples/hello-world/angular/src/app/image-capture/image-capture.component.ts diff --git a/hello-world/angular/src/app/video-capture/video-capture.component.css b/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.css similarity index 100% rename from hello-world/angular/src/app/video-capture/video-capture.component.css rename to foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.css diff --git a/hello-world/angular/src/app/video-capture/video-capture.component.html b/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.html similarity index 100% rename from hello-world/angular/src/app/video-capture/video-capture.component.html rename to foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.html diff --git a/hello-world/angular/src/app/video-capture/video-capture.component.ts b/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.ts similarity index 100% rename from hello-world/angular/src/app/video-capture/video-capture.component.ts rename to foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.ts diff --git a/foundational-api-samples/hello-world/angular/src/assets/.gitkeep b/foundational-api-samples/hello-world/angular/src/assets/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/foundational-api-samples/hello-world/angular/src/favicon.ico b/foundational-api-samples/hello-world/angular/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..57614f9c967596fad0a3989bec2b1deff33034f6 GIT binary patch literal 15086 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 Nr__JTFzvMr^FKp4S3v*( literal 0 HcmV?d00001 diff --git a/hello-world/angular/src/index.html b/foundational-api-samples/hello-world/angular/src/index.html similarity index 100% rename from hello-world/angular/src/index.html rename to foundational-api-samples/hello-world/angular/src/index.html diff --git a/hello-world/angular/src/main.ts b/foundational-api-samples/hello-world/angular/src/main.ts similarity index 100% rename from hello-world/angular/src/main.ts rename to foundational-api-samples/hello-world/angular/src/main.ts diff --git a/hello-world/angular/src/styles.css b/foundational-api-samples/hello-world/angular/src/styles.css similarity index 100% rename from hello-world/angular/src/styles.css rename to foundational-api-samples/hello-world/angular/src/styles.css diff --git a/hello-world/angular/tsconfig.app.json b/foundational-api-samples/hello-world/angular/tsconfig.app.json similarity index 100% rename from hello-world/angular/tsconfig.app.json rename to foundational-api-samples/hello-world/angular/tsconfig.app.json diff --git a/hello-world/angular/tsconfig.json b/foundational-api-samples/hello-world/angular/tsconfig.json similarity index 100% rename from hello-world/angular/tsconfig.json rename to foundational-api-samples/hello-world/angular/tsconfig.json diff --git a/hello-world/angular/tsconfig.spec.json b/foundational-api-samples/hello-world/angular/tsconfig.spec.json similarity index 100% rename from hello-world/angular/tsconfig.spec.json rename to foundational-api-samples/hello-world/angular/tsconfig.spec.json diff --git a/hello-world/blazor/.gitignore b/foundational-api-samples/hello-world/blazor/.gitignore similarity index 100% rename from hello-world/blazor/.gitignore rename to foundational-api-samples/hello-world/blazor/.gitignore diff --git a/hello-world/blazor/README.md b/foundational-api-samples/hello-world/blazor/README.md similarity index 100% rename from hello-world/blazor/README.md rename to foundational-api-samples/hello-world/blazor/README.md diff --git a/hello-world/blazor/hello-world-blazor/BlazorApp/App.razor b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/App.razor similarity index 100% rename from hello-world/blazor/hello-world-blazor/BlazorApp/App.razor rename to foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/App.razor diff --git a/hello-world/blazor/hello-world-blazor/BlazorApp/BlazorApp.csproj b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/BlazorApp.csproj similarity index 100% rename from hello-world/blazor/hello-world-blazor/BlazorApp/BlazorApp.csproj rename to foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/BlazorApp.csproj diff --git a/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor similarity index 100% rename from hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor rename to foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor diff --git a/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor.css b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor.css similarity index 100% rename from hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor.css rename to foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor.css diff --git a/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor similarity index 100% rename from hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor rename to foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor diff --git a/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor.css b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor.css similarity index 100% rename from hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor.css rename to foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor.css diff --git a/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeImage.razor b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeImage.razor similarity index 100% rename from hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeImage.razor rename to foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeImage.razor diff --git a/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeVideo.razor b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeVideo.razor similarity index 100% rename from hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeVideo.razor rename to foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeVideo.razor diff --git a/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/Home.razor b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/Home.razor similarity index 100% rename from hello-world/blazor/hello-world-blazor/BlazorApp/Pages/Home.razor rename to foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/Home.razor diff --git a/hello-world/blazor/hello-world-blazor/BlazorApp/Program.cs b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Program.cs similarity index 100% rename from hello-world/blazor/hello-world-blazor/BlazorApp/Program.cs rename to foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Program.cs diff --git a/hello-world/blazor/hello-world-blazor/BlazorApp/Properties/launchSettings.json b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Properties/launchSettings.json similarity index 100% rename from hello-world/blazor/hello-world-blazor/BlazorApp/Properties/launchSettings.json rename to foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Properties/launchSettings.json diff --git a/hello-world/blazor/hello-world-blazor/BlazorApp/_Imports.razor b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/_Imports.razor similarity index 100% rename from hello-world/blazor/hello-world-blazor/BlazorApp/_Imports.razor rename to foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/_Imports.razor diff --git a/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/app.css b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/app.css similarity index 100% rename from hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/app.css rename to foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/app.css diff --git a/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css similarity index 100% rename from hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css rename to foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css diff --git a/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css.map b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css.map similarity index 100% rename from hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css.map rename to foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css.map diff --git a/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/decodeImage.js b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/decodeImage.js similarity index 100% rename from hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/decodeImage.js rename to foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/decodeImage.js diff --git a/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/decodeVideo.js b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/decodeVideo.js similarity index 100% rename from hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/decodeVideo.js rename to foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/decodeVideo.js diff --git a/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/favicon.png b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/favicon.png similarity index 100% rename from hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/favicon.png rename to foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/favicon.png diff --git a/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/icon-192.png b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/icon-192.png similarity index 100% rename from hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/icon-192.png rename to foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/icon-192.png diff --git a/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/index.html b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/index.html similarity index 100% rename from hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/index.html rename to foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/index.html diff --git a/hello-world/electron/README.md b/foundational-api-samples/hello-world/electron/README.md similarity index 100% rename from hello-world/electron/README.md rename to foundational-api-samples/hello-world/electron/README.md diff --git a/hello-world/electron/action.js b/foundational-api-samples/hello-world/electron/action.js similarity index 100% rename from hello-world/electron/action.js rename to foundational-api-samples/hello-world/electron/action.js diff --git a/hello-world/electron/index.html b/foundational-api-samples/hello-world/electron/index.html similarity index 100% rename from hello-world/electron/index.html rename to foundational-api-samples/hello-world/electron/index.html diff --git a/hello-world/electron/main.js b/foundational-api-samples/hello-world/electron/main.js similarity index 100% rename from hello-world/electron/main.js rename to foundational-api-samples/hello-world/electron/main.js diff --git a/hello-world/electron/package.json b/foundational-api-samples/hello-world/electron/package.json similarity index 100% rename from hello-world/electron/package.json rename to foundational-api-samples/hello-world/electron/package.json diff --git a/hello-world/electron/style.css b/foundational-api-samples/hello-world/electron/style.css similarity index 100% rename from hello-world/electron/style.css rename to foundational-api-samples/hello-world/electron/style.css diff --git a/hello-world/es6.html b/foundational-api-samples/hello-world/es6.html similarity index 100% rename from hello-world/es6.html rename to foundational-api-samples/hello-world/es6.html diff --git a/hello-world/hello-world.html b/foundational-api-samples/hello-world/hello-world.html similarity index 100% rename from hello-world/hello-world.html rename to foundational-api-samples/hello-world/hello-world.html diff --git a/hello-world/native-ts/index.html b/foundational-api-samples/hello-world/native-ts/index.html similarity index 100% rename from hello-world/native-ts/index.html rename to foundational-api-samples/hello-world/native-ts/index.html diff --git a/hello-world/native-ts/index.ts b/foundational-api-samples/hello-world/native-ts/index.ts similarity index 100% rename from hello-world/native-ts/index.ts rename to foundational-api-samples/hello-world/native-ts/index.ts diff --git a/hello-world/native-ts/package.json b/foundational-api-samples/hello-world/native-ts/package.json similarity index 100% rename from hello-world/native-ts/package.json rename to foundational-api-samples/hello-world/native-ts/package.json diff --git a/hello-world/native-ts/rollup.config.mjs b/foundational-api-samples/hello-world/native-ts/rollup.config.mjs similarity index 100% rename from hello-world/native-ts/rollup.config.mjs rename to foundational-api-samples/hello-world/native-ts/rollup.config.mjs diff --git a/hello-world/native-ts/tsconfig.json b/foundational-api-samples/hello-world/native-ts/tsconfig.json similarity index 100% rename from hello-world/native-ts/tsconfig.json rename to foundational-api-samples/hello-world/native-ts/tsconfig.json diff --git a/hello-world/next/.eslintrc.json b/foundational-api-samples/hello-world/next/.eslintrc.json similarity index 100% rename from hello-world/next/.eslintrc.json rename to foundational-api-samples/hello-world/next/.eslintrc.json diff --git a/hello-world/next/.gitignore b/foundational-api-samples/hello-world/next/.gitignore similarity index 100% rename from hello-world/next/.gitignore rename to foundational-api-samples/hello-world/next/.gitignore diff --git a/hello-world/next/README.md b/foundational-api-samples/hello-world/next/README.md similarity index 100% rename from hello-world/next/README.md rename to foundational-api-samples/hello-world/next/README.md diff --git a/hello-world/next/app/favicon.ico b/foundational-api-samples/hello-world/next/app/favicon.ico similarity index 100% rename from hello-world/next/app/favicon.ico rename to foundational-api-samples/hello-world/next/app/favicon.ico diff --git a/hello-world/next/app/globals.css b/foundational-api-samples/hello-world/next/app/globals.css similarity index 100% rename from hello-world/next/app/globals.css rename to foundational-api-samples/hello-world/next/app/globals.css diff --git a/hello-world/next/app/layout.tsx b/foundational-api-samples/hello-world/next/app/layout.tsx similarity index 100% rename from hello-world/next/app/layout.tsx rename to foundational-api-samples/hello-world/next/app/layout.tsx diff --git a/hello-world/next/app/page.css b/foundational-api-samples/hello-world/next/app/page.css similarity index 100% rename from hello-world/next/app/page.css rename to foundational-api-samples/hello-world/next/app/page.css diff --git a/hello-world/next/app/page.tsx b/foundational-api-samples/hello-world/next/app/page.tsx similarity index 100% rename from hello-world/next/app/page.tsx rename to foundational-api-samples/hello-world/next/app/page.tsx diff --git a/hello-world/next/components/ImageCapture/ImageCapture.css b/foundational-api-samples/hello-world/next/components/ImageCapture/ImageCapture.css similarity index 100% rename from hello-world/next/components/ImageCapture/ImageCapture.css rename to foundational-api-samples/hello-world/next/components/ImageCapture/ImageCapture.css diff --git a/hello-world/next/components/ImageCapture/ImageCapture.tsx b/foundational-api-samples/hello-world/next/components/ImageCapture/ImageCapture.tsx similarity index 100% rename from hello-world/next/components/ImageCapture/ImageCapture.tsx rename to foundational-api-samples/hello-world/next/components/ImageCapture/ImageCapture.tsx diff --git a/hello-world/next/components/VideoCapture/VideoCapture.css b/foundational-api-samples/hello-world/next/components/VideoCapture/VideoCapture.css similarity index 100% rename from hello-world/next/components/VideoCapture/VideoCapture.css rename to foundational-api-samples/hello-world/next/components/VideoCapture/VideoCapture.css diff --git a/hello-world/next/components/VideoCapture/VideoCapture.tsx b/foundational-api-samples/hello-world/next/components/VideoCapture/VideoCapture.tsx similarity index 100% rename from hello-world/next/components/VideoCapture/VideoCapture.tsx rename to foundational-api-samples/hello-world/next/components/VideoCapture/VideoCapture.tsx diff --git a/hello-world/next/dynamsoft.config.ts b/foundational-api-samples/hello-world/next/dynamsoft.config.ts similarity index 100% rename from hello-world/next/dynamsoft.config.ts rename to foundational-api-samples/hello-world/next/dynamsoft.config.ts diff --git a/hello-world/next/next.config.mjs b/foundational-api-samples/hello-world/next/next.config.mjs similarity index 100% rename from hello-world/next/next.config.mjs rename to foundational-api-samples/hello-world/next/next.config.mjs diff --git a/hello-world/next/package.json b/foundational-api-samples/hello-world/next/package.json similarity index 100% rename from hello-world/next/package.json rename to foundational-api-samples/hello-world/next/package.json diff --git a/hello-world/next/public/next.svg b/foundational-api-samples/hello-world/next/public/next.svg similarity index 100% rename from hello-world/next/public/next.svg rename to foundational-api-samples/hello-world/next/public/next.svg diff --git a/hello-world/next/public/vercel.svg b/foundational-api-samples/hello-world/next/public/vercel.svg similarity index 100% rename from hello-world/next/public/vercel.svg rename to foundational-api-samples/hello-world/next/public/vercel.svg diff --git a/hello-world/next/tsconfig.json b/foundational-api-samples/hello-world/next/tsconfig.json similarity index 100% rename from hello-world/next/tsconfig.json rename to foundational-api-samples/hello-world/next/tsconfig.json diff --git a/hello-world/nuxt/.gitignore b/foundational-api-samples/hello-world/nuxt/.gitignore similarity index 100% rename from hello-world/nuxt/.gitignore rename to foundational-api-samples/hello-world/nuxt/.gitignore diff --git a/hello-world/nuxt/README.md b/foundational-api-samples/hello-world/nuxt/README.md similarity index 100% rename from hello-world/nuxt/README.md rename to foundational-api-samples/hello-world/nuxt/README.md diff --git a/hello-world/nuxt/app.vue b/foundational-api-samples/hello-world/nuxt/app.vue similarity index 100% rename from hello-world/nuxt/app.vue rename to foundational-api-samples/hello-world/nuxt/app.vue diff --git a/hello-world/nuxt/assets/logo.svg b/foundational-api-samples/hello-world/nuxt/assets/logo.svg similarity index 100% rename from hello-world/nuxt/assets/logo.svg rename to foundational-api-samples/hello-world/nuxt/assets/logo.svg diff --git a/hello-world/nuxt/assets/main.css b/foundational-api-samples/hello-world/nuxt/assets/main.css similarity index 100% rename from hello-world/nuxt/assets/main.css rename to foundational-api-samples/hello-world/nuxt/assets/main.css diff --git a/hello-world/nuxt/components/ImageCapture.client.vue b/foundational-api-samples/hello-world/nuxt/components/ImageCapture.client.vue similarity index 100% rename from hello-world/nuxt/components/ImageCapture.client.vue rename to foundational-api-samples/hello-world/nuxt/components/ImageCapture.client.vue diff --git a/hello-world/nuxt/components/VideoCapture.client.vue b/foundational-api-samples/hello-world/nuxt/components/VideoCapture.client.vue similarity index 100% rename from hello-world/nuxt/components/VideoCapture.client.vue rename to foundational-api-samples/hello-world/nuxt/components/VideoCapture.client.vue diff --git a/hello-world/nuxt/dynamsoft.config.ts b/foundational-api-samples/hello-world/nuxt/dynamsoft.config.ts similarity index 100% rename from hello-world/nuxt/dynamsoft.config.ts rename to foundational-api-samples/hello-world/nuxt/dynamsoft.config.ts diff --git a/hello-world/nuxt/nuxt.config.ts b/foundational-api-samples/hello-world/nuxt/nuxt.config.ts similarity index 100% rename from hello-world/nuxt/nuxt.config.ts rename to foundational-api-samples/hello-world/nuxt/nuxt.config.ts diff --git a/hello-world/nuxt/package.json b/foundational-api-samples/hello-world/nuxt/package.json similarity index 100% rename from hello-world/nuxt/package.json rename to foundational-api-samples/hello-world/nuxt/package.json diff --git a/hello-world/nuxt/public/favicon.ico b/foundational-api-samples/hello-world/nuxt/public/favicon.ico similarity index 100% rename from hello-world/nuxt/public/favicon.ico rename to foundational-api-samples/hello-world/nuxt/public/favicon.ico diff --git a/hello-world/nuxt/tsconfig.json b/foundational-api-samples/hello-world/nuxt/tsconfig.json similarity index 100% rename from hello-world/nuxt/tsconfig.json rename to foundational-api-samples/hello-world/nuxt/tsconfig.json diff --git a/hello-world/pwa/README.md b/foundational-api-samples/hello-world/pwa/README.md similarity index 100% rename from hello-world/pwa/README.md rename to foundational-api-samples/hello-world/pwa/README.md diff --git a/hello-world/pwa/dynamsoft-192x192.png b/foundational-api-samples/hello-world/pwa/dynamsoft-192x192.png similarity index 100% rename from hello-world/pwa/dynamsoft-192x192.png rename to foundational-api-samples/hello-world/pwa/dynamsoft-192x192.png diff --git a/hello-world/pwa/dynamsoft-512x512.png b/foundational-api-samples/hello-world/pwa/dynamsoft-512x512.png similarity index 100% rename from hello-world/pwa/dynamsoft-512x512.png rename to foundational-api-samples/hello-world/pwa/dynamsoft-512x512.png diff --git a/hello-world/pwa/helloworld-pwa.html b/foundational-api-samples/hello-world/pwa/helloworld-pwa.html similarity index 100% rename from hello-world/pwa/helloworld-pwa.html rename to foundational-api-samples/hello-world/pwa/helloworld-pwa.html diff --git a/hello-world/pwa/helloworld-pwa.json b/foundational-api-samples/hello-world/pwa/helloworld-pwa.json similarity index 100% rename from hello-world/pwa/helloworld-pwa.json rename to foundational-api-samples/hello-world/pwa/helloworld-pwa.json diff --git a/hello-world/pwa/service-worker.js b/foundational-api-samples/hello-world/pwa/service-worker.js similarity index 100% rename from hello-world/pwa/service-worker.js rename to foundational-api-samples/hello-world/pwa/service-worker.js diff --git a/hello-world/react-hooks/.gitignore b/foundational-api-samples/hello-world/react-hooks/.gitignore similarity index 100% rename from hello-world/react-hooks/.gitignore rename to foundational-api-samples/hello-world/react-hooks/.gitignore diff --git a/hello-world/react-hooks/README.md b/foundational-api-samples/hello-world/react-hooks/README.md similarity index 100% rename from hello-world/react-hooks/README.md rename to foundational-api-samples/hello-world/react-hooks/README.md diff --git a/hello-world/react-hooks/package.json b/foundational-api-samples/hello-world/react-hooks/package.json similarity index 100% rename from hello-world/react-hooks/package.json rename to foundational-api-samples/hello-world/react-hooks/package.json diff --git a/hello-world/react-hooks/public/favicon.ico b/foundational-api-samples/hello-world/react-hooks/public/favicon.ico similarity index 100% rename from hello-world/react-hooks/public/favicon.ico rename to foundational-api-samples/hello-world/react-hooks/public/favicon.ico diff --git a/hello-world/react-hooks/public/index.html b/foundational-api-samples/hello-world/react-hooks/public/index.html similarity index 100% rename from hello-world/react-hooks/public/index.html rename to foundational-api-samples/hello-world/react-hooks/public/index.html diff --git a/hello-world/react-hooks/public/logo192.png b/foundational-api-samples/hello-world/react-hooks/public/logo192.png similarity index 100% rename from hello-world/react-hooks/public/logo192.png rename to foundational-api-samples/hello-world/react-hooks/public/logo192.png diff --git a/hello-world/react-hooks/public/logo512.png b/foundational-api-samples/hello-world/react-hooks/public/logo512.png similarity index 100% rename from hello-world/react-hooks/public/logo512.png rename to foundational-api-samples/hello-world/react-hooks/public/logo512.png diff --git a/hello-world/react-hooks/public/manifest.json b/foundational-api-samples/hello-world/react-hooks/public/manifest.json similarity index 100% rename from hello-world/react-hooks/public/manifest.json rename to foundational-api-samples/hello-world/react-hooks/public/manifest.json diff --git a/hello-world/react-hooks/src/App.css b/foundational-api-samples/hello-world/react-hooks/src/App.css similarity index 100% rename from hello-world/react-hooks/src/App.css rename to foundational-api-samples/hello-world/react-hooks/src/App.css diff --git a/hello-world/react-hooks/src/App.tsx b/foundational-api-samples/hello-world/react-hooks/src/App.tsx similarity index 100% rename from hello-world/react-hooks/src/App.tsx rename to foundational-api-samples/hello-world/react-hooks/src/App.tsx diff --git a/hello-world/react/src/assets/logo.svg b/foundational-api-samples/hello-world/react-hooks/src/assets/logo.svg similarity index 100% rename from hello-world/react/src/assets/logo.svg rename to foundational-api-samples/hello-world/react-hooks/src/assets/logo.svg diff --git a/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.css b/foundational-api-samples/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.css similarity index 100% rename from hello-world/react-hooks/src/components/ImageCapture/ImageCapture.css rename to foundational-api-samples/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.css diff --git a/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx b/foundational-api-samples/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx similarity index 100% rename from hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx rename to foundational-api-samples/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx diff --git a/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.css b/foundational-api-samples/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.css similarity index 100% rename from hello-world/react-hooks/src/components/VideoCapture/VideoCapture.css rename to foundational-api-samples/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.css diff --git a/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.tsx b/foundational-api-samples/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.tsx similarity index 100% rename from hello-world/react-hooks/src/components/VideoCapture/VideoCapture.tsx rename to foundational-api-samples/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.tsx diff --git a/hello-world/react-hooks/src/dynamsoft.config.ts b/foundational-api-samples/hello-world/react-hooks/src/dynamsoft.config.ts similarity index 100% rename from hello-world/react-hooks/src/dynamsoft.config.ts rename to foundational-api-samples/hello-world/react-hooks/src/dynamsoft.config.ts diff --git a/hello-world/react-hooks/src/index.css b/foundational-api-samples/hello-world/react-hooks/src/index.css similarity index 100% rename from hello-world/react-hooks/src/index.css rename to foundational-api-samples/hello-world/react-hooks/src/index.css diff --git a/hello-world/react-hooks/src/index.tsx b/foundational-api-samples/hello-world/react-hooks/src/index.tsx similarity index 100% rename from hello-world/react-hooks/src/index.tsx rename to foundational-api-samples/hello-world/react-hooks/src/index.tsx diff --git a/hello-world/react-hooks/src/react-app-env.d.ts b/foundational-api-samples/hello-world/react-hooks/src/react-app-env.d.ts similarity index 100% rename from hello-world/react-hooks/src/react-app-env.d.ts rename to foundational-api-samples/hello-world/react-hooks/src/react-app-env.d.ts diff --git a/hello-world/react-hooks/tsconfig.json b/foundational-api-samples/hello-world/react-hooks/tsconfig.json similarity index 100% rename from hello-world/react-hooks/tsconfig.json rename to foundational-api-samples/hello-world/react-hooks/tsconfig.json diff --git a/hello-world/react/.gitignore b/foundational-api-samples/hello-world/react/.gitignore similarity index 100% rename from hello-world/react/.gitignore rename to foundational-api-samples/hello-world/react/.gitignore diff --git a/hello-world/react/README.md b/foundational-api-samples/hello-world/react/README.md similarity index 100% rename from hello-world/react/README.md rename to foundational-api-samples/hello-world/react/README.md diff --git a/hello-world/react/package.json b/foundational-api-samples/hello-world/react/package.json similarity index 100% rename from hello-world/react/package.json rename to foundational-api-samples/hello-world/react/package.json diff --git a/hello-world/react/public/favicon.ico b/foundational-api-samples/hello-world/react/public/favicon.ico similarity index 100% rename from hello-world/react/public/favicon.ico rename to foundational-api-samples/hello-world/react/public/favicon.ico diff --git a/hello-world/react/public/index.html b/foundational-api-samples/hello-world/react/public/index.html similarity index 100% rename from hello-world/react/public/index.html rename to foundational-api-samples/hello-world/react/public/index.html diff --git a/hello-world/react/public/logo192.png b/foundational-api-samples/hello-world/react/public/logo192.png similarity index 100% rename from hello-world/react/public/logo192.png rename to foundational-api-samples/hello-world/react/public/logo192.png diff --git a/hello-world/react/public/logo512.png b/foundational-api-samples/hello-world/react/public/logo512.png similarity index 100% rename from hello-world/react/public/logo512.png rename to foundational-api-samples/hello-world/react/public/logo512.png diff --git a/hello-world/react/public/manifest.json b/foundational-api-samples/hello-world/react/public/manifest.json similarity index 100% rename from hello-world/react/public/manifest.json rename to foundational-api-samples/hello-world/react/public/manifest.json diff --git a/hello-world/react/public/robots.txt b/foundational-api-samples/hello-world/react/public/robots.txt similarity index 100% rename from hello-world/react/public/robots.txt rename to foundational-api-samples/hello-world/react/public/robots.txt diff --git a/hello-world/react/src/App.css b/foundational-api-samples/hello-world/react/src/App.css similarity index 100% rename from hello-world/react/src/App.css rename to foundational-api-samples/hello-world/react/src/App.css diff --git a/hello-world/react/src/App.tsx b/foundational-api-samples/hello-world/react/src/App.tsx similarity index 100% rename from hello-world/react/src/App.tsx rename to foundational-api-samples/hello-world/react/src/App.tsx diff --git a/hello-world/react/src/logo.svg b/foundational-api-samples/hello-world/react/src/assets/logo.svg similarity index 100% rename from hello-world/react/src/logo.svg rename to foundational-api-samples/hello-world/react/src/assets/logo.svg diff --git a/hello-world/react/src/components/ImageCapture/ImageCapture.css b/foundational-api-samples/hello-world/react/src/components/ImageCapture/ImageCapture.css similarity index 100% rename from hello-world/react/src/components/ImageCapture/ImageCapture.css rename to foundational-api-samples/hello-world/react/src/components/ImageCapture/ImageCapture.css diff --git a/hello-world/react/src/components/ImageCapture/ImageCapture.tsx b/foundational-api-samples/hello-world/react/src/components/ImageCapture/ImageCapture.tsx similarity index 100% rename from hello-world/react/src/components/ImageCapture/ImageCapture.tsx rename to foundational-api-samples/hello-world/react/src/components/ImageCapture/ImageCapture.tsx diff --git a/hello-world/react/src/components/VideoCapture/VideoCapture.css b/foundational-api-samples/hello-world/react/src/components/VideoCapture/VideoCapture.css similarity index 100% rename from hello-world/react/src/components/VideoCapture/VideoCapture.css rename to foundational-api-samples/hello-world/react/src/components/VideoCapture/VideoCapture.css diff --git a/hello-world/react/src/components/VideoCapture/VideoCapture.tsx b/foundational-api-samples/hello-world/react/src/components/VideoCapture/VideoCapture.tsx similarity index 100% rename from hello-world/react/src/components/VideoCapture/VideoCapture.tsx rename to foundational-api-samples/hello-world/react/src/components/VideoCapture/VideoCapture.tsx diff --git a/hello-world/react/src/dynamsoft.config.ts b/foundational-api-samples/hello-world/react/src/dynamsoft.config.ts similarity index 100% rename from hello-world/react/src/dynamsoft.config.ts rename to foundational-api-samples/hello-world/react/src/dynamsoft.config.ts diff --git a/hello-world/react/src/index.css b/foundational-api-samples/hello-world/react/src/index.css similarity index 100% rename from hello-world/react/src/index.css rename to foundational-api-samples/hello-world/react/src/index.css diff --git a/hello-world/react/src/index.tsx b/foundational-api-samples/hello-world/react/src/index.tsx similarity index 100% rename from hello-world/react/src/index.tsx rename to foundational-api-samples/hello-world/react/src/index.tsx diff --git a/foundational-api-samples/hello-world/react/src/logo.svg b/foundational-api-samples/hello-world/react/src/logo.svg new file mode 100644 index 00000000..9dfc1c05 --- /dev/null +++ b/foundational-api-samples/hello-world/react/src/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/hello-world/react/src/react-app-env.d.ts b/foundational-api-samples/hello-world/react/src/react-app-env.d.ts similarity index 100% rename from hello-world/react/src/react-app-env.d.ts rename to foundational-api-samples/hello-world/react/src/react-app-env.d.ts diff --git a/hello-world/react/tsconfig.json b/foundational-api-samples/hello-world/react/tsconfig.json similarity index 100% rename from hello-world/react/tsconfig.json rename to foundational-api-samples/hello-world/react/tsconfig.json diff --git a/hello-world/read-an-image.html b/foundational-api-samples/hello-world/read-an-image.html similarity index 100% rename from hello-world/read-an-image.html rename to foundational-api-samples/hello-world/read-an-image.html diff --git a/hello-world/requirejs.html b/foundational-api-samples/hello-world/requirejs.html similarity index 100% rename from hello-world/requirejs.html rename to foundational-api-samples/hello-world/requirejs.html diff --git a/foundational-api-samples/hello-world/svelte/.gitignore b/foundational-api-samples/hello-world/svelte/.gitignore new file mode 100644 index 00000000..a547bf36 --- /dev/null +++ b/foundational-api-samples/hello-world/svelte/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/hello-world/svelte/README.md b/foundational-api-samples/hello-world/svelte/README.md similarity index 100% rename from hello-world/svelte/README.md rename to foundational-api-samples/hello-world/svelte/README.md diff --git a/hello-world/svelte/index.html b/foundational-api-samples/hello-world/svelte/index.html similarity index 100% rename from hello-world/svelte/index.html rename to foundational-api-samples/hello-world/svelte/index.html diff --git a/hello-world/svelte/package.json b/foundational-api-samples/hello-world/svelte/package.json similarity index 100% rename from hello-world/svelte/package.json rename to foundational-api-samples/hello-world/svelte/package.json diff --git a/hello-world/svelte/src/App.svelte b/foundational-api-samples/hello-world/svelte/src/App.svelte similarity index 100% rename from hello-world/svelte/src/App.svelte rename to foundational-api-samples/hello-world/svelte/src/App.svelte diff --git a/hello-world/svelte/src/components/ImageCapture.svelte b/foundational-api-samples/hello-world/svelte/src/components/ImageCapture.svelte similarity index 100% rename from hello-world/svelte/src/components/ImageCapture.svelte rename to foundational-api-samples/hello-world/svelte/src/components/ImageCapture.svelte diff --git a/hello-world/svelte/src/components/VideoCapture.svelte b/foundational-api-samples/hello-world/svelte/src/components/VideoCapture.svelte similarity index 100% rename from hello-world/svelte/src/components/VideoCapture.svelte rename to foundational-api-samples/hello-world/svelte/src/components/VideoCapture.svelte diff --git a/hello-world/svelte/src/dynamsoft.config.ts b/foundational-api-samples/hello-world/svelte/src/dynamsoft.config.ts similarity index 100% rename from hello-world/svelte/src/dynamsoft.config.ts rename to foundational-api-samples/hello-world/svelte/src/dynamsoft.config.ts diff --git a/hello-world/svelte/src/main.ts b/foundational-api-samples/hello-world/svelte/src/main.ts similarity index 100% rename from hello-world/svelte/src/main.ts rename to foundational-api-samples/hello-world/svelte/src/main.ts diff --git a/hello-world/svelte/src/vite-env.d.ts b/foundational-api-samples/hello-world/svelte/src/vite-env.d.ts similarity index 100% rename from hello-world/svelte/src/vite-env.d.ts rename to foundational-api-samples/hello-world/svelte/src/vite-env.d.ts diff --git a/hello-world/svelte/svelte.config.js b/foundational-api-samples/hello-world/svelte/svelte.config.js similarity index 100% rename from hello-world/svelte/svelte.config.js rename to foundational-api-samples/hello-world/svelte/svelte.config.js diff --git a/hello-world/svelte/tsconfig.json b/foundational-api-samples/hello-world/svelte/tsconfig.json similarity index 100% rename from hello-world/svelte/tsconfig.json rename to foundational-api-samples/hello-world/svelte/tsconfig.json diff --git a/hello-world/svelte/tsconfig.node.json b/foundational-api-samples/hello-world/svelte/tsconfig.node.json similarity index 100% rename from hello-world/svelte/tsconfig.node.json rename to foundational-api-samples/hello-world/svelte/tsconfig.node.json diff --git a/hello-world/svelte/vite.config.ts b/foundational-api-samples/hello-world/svelte/vite.config.ts similarity index 100% rename from hello-world/svelte/vite.config.ts rename to foundational-api-samples/hello-world/svelte/vite.config.ts diff --git a/hello-world/vue/.gitignore b/foundational-api-samples/hello-world/vue/.gitignore similarity index 100% rename from hello-world/vue/.gitignore rename to foundational-api-samples/hello-world/vue/.gitignore diff --git a/hello-world/vue/README.md b/foundational-api-samples/hello-world/vue/README.md similarity index 100% rename from hello-world/vue/README.md rename to foundational-api-samples/hello-world/vue/README.md diff --git a/foundational-api-samples/hello-world/vue/env.d.ts b/foundational-api-samples/hello-world/vue/env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/foundational-api-samples/hello-world/vue/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/hello-world/vue/index.html b/foundational-api-samples/hello-world/vue/index.html similarity index 100% rename from hello-world/vue/index.html rename to foundational-api-samples/hello-world/vue/index.html diff --git a/hello-world/vue/package.json b/foundational-api-samples/hello-world/vue/package.json similarity index 100% rename from hello-world/vue/package.json rename to foundational-api-samples/hello-world/vue/package.json diff --git a/hello-world/vue/public/favicon.ico b/foundational-api-samples/hello-world/vue/public/favicon.ico similarity index 100% rename from hello-world/vue/public/favicon.ico rename to foundational-api-samples/hello-world/vue/public/favicon.ico diff --git a/hello-world/vue/src/App.vue b/foundational-api-samples/hello-world/vue/src/App.vue similarity index 100% rename from hello-world/vue/src/App.vue rename to foundational-api-samples/hello-world/vue/src/App.vue diff --git a/hello-world/vue/src/assets/logo.svg b/foundational-api-samples/hello-world/vue/src/assets/logo.svg similarity index 100% rename from hello-world/vue/src/assets/logo.svg rename to foundational-api-samples/hello-world/vue/src/assets/logo.svg diff --git a/hello-world/vue/src/assets/main.css b/foundational-api-samples/hello-world/vue/src/assets/main.css similarity index 100% rename from hello-world/vue/src/assets/main.css rename to foundational-api-samples/hello-world/vue/src/assets/main.css diff --git a/hello-world/vue/src/components/ImageCapture.vue b/foundational-api-samples/hello-world/vue/src/components/ImageCapture.vue similarity index 100% rename from hello-world/vue/src/components/ImageCapture.vue rename to foundational-api-samples/hello-world/vue/src/components/ImageCapture.vue diff --git a/hello-world/vue/src/components/VideoCapture.vue b/foundational-api-samples/hello-world/vue/src/components/VideoCapture.vue similarity index 100% rename from hello-world/vue/src/components/VideoCapture.vue rename to foundational-api-samples/hello-world/vue/src/components/VideoCapture.vue diff --git a/hello-world/vue/src/dynamsoft.config.ts b/foundational-api-samples/hello-world/vue/src/dynamsoft.config.ts similarity index 100% rename from hello-world/vue/src/dynamsoft.config.ts rename to foundational-api-samples/hello-world/vue/src/dynamsoft.config.ts diff --git a/hello-world/vue/src/main.ts b/foundational-api-samples/hello-world/vue/src/main.ts similarity index 100% rename from hello-world/vue/src/main.ts rename to foundational-api-samples/hello-world/vue/src/main.ts diff --git a/hello-world/vue/tsconfig.config.json b/foundational-api-samples/hello-world/vue/tsconfig.config.json similarity index 100% rename from hello-world/vue/tsconfig.config.json rename to foundational-api-samples/hello-world/vue/tsconfig.config.json diff --git a/hello-world/vue/tsconfig.json b/foundational-api-samples/hello-world/vue/tsconfig.json similarity index 100% rename from hello-world/vue/tsconfig.json rename to foundational-api-samples/hello-world/vue/tsconfig.json diff --git a/hello-world/vue/vite.config.ts b/foundational-api-samples/hello-world/vue/vite.config.ts similarity index 100% rename from hello-world/vue/vite.config.ts rename to foundational-api-samples/hello-world/vue/vite.config.ts diff --git a/hello-world/webview/android/.gitignore b/foundational-api-samples/hello-world/webview/android/.gitignore similarity index 100% rename from hello-world/webview/android/.gitignore rename to foundational-api-samples/hello-world/webview/android/.gitignore diff --git a/hello-world/webview/android/README.md b/foundational-api-samples/hello-world/webview/android/README.md similarity index 100% rename from hello-world/webview/android/README.md rename to foundational-api-samples/hello-world/webview/android/README.md diff --git a/hello-world/webview/android/app/.gitignore b/foundational-api-samples/hello-world/webview/android/app/.gitignore similarity index 100% rename from hello-world/webview/android/app/.gitignore rename to foundational-api-samples/hello-world/webview/android/app/.gitignore diff --git a/hello-world/webview/android/app/build.gradle b/foundational-api-samples/hello-world/webview/android/app/build.gradle similarity index 100% rename from hello-world/webview/android/app/build.gradle rename to foundational-api-samples/hello-world/webview/android/app/build.gradle diff --git a/hello-world/webview/android/app/proguard-rules.pro b/foundational-api-samples/hello-world/webview/android/app/proguard-rules.pro similarity index 100% rename from hello-world/webview/android/app/proguard-rules.pro rename to foundational-api-samples/hello-world/webview/android/app/proguard-rules.pro diff --git a/hello-world/webview/android/app/src/main/AndroidManifest.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/AndroidManifest.xml similarity index 100% rename from hello-world/webview/android/app/src/main/AndroidManifest.xml rename to foundational-api-samples/hello-world/webview/android/app/src/main/AndroidManifest.xml diff --git a/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html b/foundational-api-samples/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html similarity index 100% rename from hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html rename to foundational-api-samples/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html diff --git a/hello-world/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt b/foundational-api-samples/hello-world/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt similarity index 100% rename from hello-world/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt rename to foundational-api-samples/hello-world/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt diff --git a/hello-world/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml similarity index 100% rename from hello-world/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml diff --git a/hello-world/webview/android/app/src/main/res/drawable/ic_launcher_background.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/drawable/ic_launcher_background.xml similarity index 100% rename from hello-world/webview/android/app/src/main/res/drawable/ic_launcher_background.xml rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/drawable/ic_launcher_background.xml diff --git a/hello-world/webview/android/app/src/main/res/layout/activity_main.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/layout/activity_main.xml similarity index 100% rename from hello-world/webview/android/app/src/main/res/layout/activity_main.xml rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/layout/activity_main.xml diff --git a/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml similarity index 100% rename from hello-world/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml diff --git a/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp similarity index 100% rename from hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp diff --git a/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp similarity index 100% rename from hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp diff --git a/hello-world/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp similarity index 100% rename from hello-world/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp diff --git a/hello-world/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp similarity index 100% rename from hello-world/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp diff --git a/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp similarity index 100% rename from hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp diff --git a/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp similarity index 100% rename from hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp diff --git a/hello-world/webview/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp similarity index 100% rename from hello-world/webview/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp diff --git a/hello-world/webview/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp similarity index 100% rename from hello-world/webview/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp diff --git a/hello-world/webview/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp similarity index 100% rename from hello-world/webview/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp diff --git a/hello-world/webview/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp similarity index 100% rename from hello-world/webview/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp diff --git a/hello-world/webview/android/app/src/main/res/values-night/themes.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/values-night/themes.xml similarity index 100% rename from hello-world/webview/android/app/src/main/res/values-night/themes.xml rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/values-night/themes.xml diff --git a/hello-world/webview/android/app/src/main/res/values/colors.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/values/colors.xml similarity index 100% rename from hello-world/webview/android/app/src/main/res/values/colors.xml rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/values/colors.xml diff --git a/hello-world/webview/android/app/src/main/res/values/strings.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/values/strings.xml similarity index 100% rename from hello-world/webview/android/app/src/main/res/values/strings.xml rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/values/strings.xml diff --git a/hello-world/webview/android/app/src/main/res/values/themes.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/values/themes.xml similarity index 100% rename from hello-world/webview/android/app/src/main/res/values/themes.xml rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/values/themes.xml diff --git a/hello-world/webview/android/app/src/main/res/xml/backup_rules.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/xml/backup_rules.xml similarity index 100% rename from hello-world/webview/android/app/src/main/res/xml/backup_rules.xml rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/xml/backup_rules.xml diff --git a/hello-world/webview/android/app/src/main/res/xml/data_extraction_rules.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/xml/data_extraction_rules.xml similarity index 100% rename from hello-world/webview/android/app/src/main/res/xml/data_extraction_rules.xml rename to foundational-api-samples/hello-world/webview/android/app/src/main/res/xml/data_extraction_rules.xml diff --git a/hello-world/webview/android/build.gradle b/foundational-api-samples/hello-world/webview/android/build.gradle similarity index 100% rename from hello-world/webview/android/build.gradle rename to foundational-api-samples/hello-world/webview/android/build.gradle diff --git a/hello-world/webview/android/gradle.properties b/foundational-api-samples/hello-world/webview/android/gradle.properties similarity index 100% rename from hello-world/webview/android/gradle.properties rename to foundational-api-samples/hello-world/webview/android/gradle.properties diff --git a/hello-world/webview/android/gradle/wrapper/gradle-wrapper.jar b/foundational-api-samples/hello-world/webview/android/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from hello-world/webview/android/gradle/wrapper/gradle-wrapper.jar rename to foundational-api-samples/hello-world/webview/android/gradle/wrapper/gradle-wrapper.jar diff --git a/hello-world/webview/android/gradle/wrapper/gradle-wrapper.properties b/foundational-api-samples/hello-world/webview/android/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from hello-world/webview/android/gradle/wrapper/gradle-wrapper.properties rename to foundational-api-samples/hello-world/webview/android/gradle/wrapper/gradle-wrapper.properties diff --git a/hello-world/webview/android/gradlew b/foundational-api-samples/hello-world/webview/android/gradlew similarity index 100% rename from hello-world/webview/android/gradlew rename to foundational-api-samples/hello-world/webview/android/gradlew diff --git a/hello-world/webview/android/gradlew.bat b/foundational-api-samples/hello-world/webview/android/gradlew.bat similarity index 100% rename from hello-world/webview/android/gradlew.bat rename to foundational-api-samples/hello-world/webview/android/gradlew.bat diff --git a/hello-world/webview/android/settings.gradle b/foundational-api-samples/hello-world/webview/android/settings.gradle similarity index 100% rename from hello-world/webview/android/settings.gradle rename to foundational-api-samples/hello-world/webview/android/settings.gradle diff --git a/hello-world/webview/ios/.gitignore b/foundational-api-samples/hello-world/webview/ios/.gitignore similarity index 100% rename from hello-world/webview/ios/.gitignore rename to foundational-api-samples/hello-world/webview/ios/.gitignore diff --git a/hello-world/webview/ios/README.md b/foundational-api-samples/hello-world/webview/ios/README.md similarity index 100% rename from hello-world/webview/ios/README.md rename to foundational-api-samples/hello-world/webview/ios/README.md diff --git a/hello-world/webview/ios/dbrjswebview.xcodeproj/project.pbxproj b/foundational-api-samples/hello-world/webview/ios/dbrjswebview.xcodeproj/project.pbxproj similarity index 100% rename from hello-world/webview/ios/dbrjswebview.xcodeproj/project.pbxproj rename to foundational-api-samples/hello-world/webview/ios/dbrjswebview.xcodeproj/project.pbxproj diff --git a/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/foundational-api-samples/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to foundational-api-samples/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/foundational-api-samples/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to foundational-api-samples/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/hello-world/webview/ios/dbrjswebview/AppDelegate.swift b/foundational-api-samples/hello-world/webview/ios/dbrjswebview/AppDelegate.swift similarity index 100% rename from hello-world/webview/ios/dbrjswebview/AppDelegate.swift rename to foundational-api-samples/hello-world/webview/ios/dbrjswebview/AppDelegate.swift diff --git a/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json b/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from hello-world/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json rename to foundational-api-samples/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json b/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from hello-world/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json rename to foundational-api-samples/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/hello-world/webview/ios/dbrjswebview/Assets.xcassets/Contents.json b/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Assets.xcassets/Contents.json similarity index 100% rename from hello-world/webview/ios/dbrjswebview/Assets.xcassets/Contents.json rename to foundational-api-samples/hello-world/webview/ios/dbrjswebview/Assets.xcassets/Contents.json diff --git a/hello-world/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard b/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from hello-world/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard rename to foundational-api-samples/hello-world/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard diff --git a/hello-world/webview/ios/dbrjswebview/Base.lproj/Main.storyboard b/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Base.lproj/Main.storyboard similarity index 100% rename from hello-world/webview/ios/dbrjswebview/Base.lproj/Main.storyboard rename to foundational-api-samples/hello-world/webview/ios/dbrjswebview/Base.lproj/Main.storyboard diff --git a/hello-world/webview/ios/dbrjswebview/Info.plist b/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Info.plist similarity index 100% rename from hello-world/webview/ios/dbrjswebview/Info.plist rename to foundational-api-samples/hello-world/webview/ios/dbrjswebview/Info.plist diff --git a/hello-world/webview/ios/dbrjswebview/SceneDelegate.swift b/foundational-api-samples/hello-world/webview/ios/dbrjswebview/SceneDelegate.swift similarity index 100% rename from hello-world/webview/ios/dbrjswebview/SceneDelegate.swift rename to foundational-api-samples/hello-world/webview/ios/dbrjswebview/SceneDelegate.swift diff --git a/hello-world/webview/ios/dbrjswebview/ViewController.swift b/foundational-api-samples/hello-world/webview/ios/dbrjswebview/ViewController.swift similarity index 100% rename from hello-world/webview/ios/dbrjswebview/ViewController.swift rename to foundational-api-samples/hello-world/webview/ios/dbrjswebview/ViewController.swift diff --git a/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html b/foundational-api-samples/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html similarity index 100% rename from hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html rename to foundational-api-samples/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html diff --git a/others/debug/.gitignore b/foundational-api-samples/others/debug/.gitignore similarity index 100% rename from others/debug/.gitignore rename to foundational-api-samples/others/debug/.gitignore diff --git a/others/debug/README.md b/foundational-api-samples/others/debug/README.md similarity index 100% rename from others/debug/README.md rename to foundational-api-samples/others/debug/README.md diff --git a/others/debug/app.js b/foundational-api-samples/others/debug/app.js similarity index 100% rename from others/debug/app.js rename to foundational-api-samples/others/debug/app.js diff --git a/others/debug/package.json b/foundational-api-samples/others/debug/package.json similarity index 100% rename from others/debug/package.json rename to foundational-api-samples/others/debug/package.json diff --git a/others/debug/pem/ryans-cert.pem b/foundational-api-samples/others/debug/pem/ryans-cert.pem similarity index 100% rename from others/debug/pem/ryans-cert.pem rename to foundational-api-samples/others/debug/pem/ryans-cert.pem diff --git a/others/debug/pem/ryans-csr.pem b/foundational-api-samples/others/debug/pem/ryans-csr.pem similarity index 100% rename from others/debug/pem/ryans-csr.pem rename to foundational-api-samples/others/debug/pem/ryans-csr.pem diff --git a/others/debug/pem/ryans-key.pem b/foundational-api-samples/others/debug/pem/ryans-key.pem similarity index 100% rename from others/debug/pem/ryans-key.pem rename to foundational-api-samples/others/debug/pem/ryans-key.pem diff --git a/others/debug/public/index.html b/foundational-api-samples/others/debug/public/index.html similarity index 100% rename from others/debug/public/index.html rename to foundational-api-samples/others/debug/public/index.html diff --git a/use-case/README.md b/foundational-api-samples/use-case/README.md similarity index 100% rename from use-case/README.md rename to foundational-api-samples/use-case/README.md diff --git a/use-case/fill-a-form-with-barcode-reading.html b/foundational-api-samples/use-case/fill-a-form-with-barcode-reading.html similarity index 100% rename from use-case/fill-a-form-with-barcode-reading.html rename to foundational-api-samples/use-case/fill-a-form-with-barcode-reading.html diff --git a/use-case/locate-an-item-with-barcode/icons/checkmark-icon.svg b/foundational-api-samples/use-case/locate-an-item-with-barcode/icons/checkmark-icon.svg similarity index 100% rename from use-case/locate-an-item-with-barcode/icons/checkmark-icon.svg rename to foundational-api-samples/use-case/locate-an-item-with-barcode/icons/checkmark-icon.svg diff --git a/use-case/locate-an-item-with-barcode/icons/cross-icon.svg b/foundational-api-samples/use-case/locate-an-item-with-barcode/icons/cross-icon.svg similarity index 100% rename from use-case/locate-an-item-with-barcode/icons/cross-icon.svg rename to foundational-api-samples/use-case/locate-an-item-with-barcode/icons/cross-icon.svg diff --git a/use-case/locate-an-item-with-barcode/icons/dynamsoft-logo.png b/foundational-api-samples/use-case/locate-an-item-with-barcode/icons/dynamsoft-logo.png similarity index 100% rename from use-case/locate-an-item-with-barcode/icons/dynamsoft-logo.png rename to foundational-api-samples/use-case/locate-an-item-with-barcode/icons/dynamsoft-logo.png diff --git a/use-case/locate-an-item-with-barcode/icons/scan-barcode-icon.svg b/foundational-api-samples/use-case/locate-an-item-with-barcode/icons/scan-barcode-icon.svg similarity index 100% rename from use-case/locate-an-item-with-barcode/icons/scan-barcode-icon.svg rename to foundational-api-samples/use-case/locate-an-item-with-barcode/icons/scan-barcode-icon.svg diff --git a/use-case/locate-an-item-with-barcode/index.html b/foundational-api-samples/use-case/locate-an-item-with-barcode/index.html similarity index 100% rename from use-case/locate-an-item-with-barcode/index.html rename to foundational-api-samples/use-case/locate-an-item-with-barcode/index.html diff --git a/use-case/read-a-drivers-license/SampleDriversLicense.jpg b/foundational-api-samples/use-case/read-a-drivers-license/SampleDriversLicense.jpg similarity index 100% rename from use-case/read-a-drivers-license/SampleDriversLicense.jpg rename to foundational-api-samples/use-case/read-a-drivers-license/SampleDriversLicense.jpg diff --git a/use-case/read-a-drivers-license/index.html b/foundational-api-samples/use-case/read-a-drivers-license/index.html similarity index 100% rename from use-case/read-a-drivers-license/index.html rename to foundational-api-samples/use-case/read-a-drivers-license/index.html diff --git a/use-case/read-a-drivers-license/style.css b/foundational-api-samples/use-case/read-a-drivers-license/style.css similarity index 100% rename from use-case/read-a-drivers-license/style.css rename to foundational-api-samples/use-case/read-a-drivers-license/style.css diff --git a/use-case/show-result-texts-on-the-video.html b/foundational-api-samples/use-case/show-result-texts-on-the-video.html similarity index 100% rename from use-case/show-result-texts-on-the-video.html rename to foundational-api-samples/use-case/show-result-texts-on-the-video.html From 540f8e32c1bf231010ba3c3b1d5d65bd1ffd518f Mon Sep 17 00:00:00 2001 From: SHEN <1014628363@qq.com> Date: Fri, 18 Apr 2025 14:30:17 +0800 Subject: [PATCH 096/223] dbs -> barcdoe-scanner --- .../scan-multiple-barcodes/hello-world.html | 14 +++++------ .../angular/src/app/app.component.css | 18 ++++---------- .../angular/src/app/app.component.html | 8 +++---- .../angular/src/app/app.component.ts | 6 ++--- .../scan-single-barcode/hello-world.html | 14 +++++------ .../scan-single-barcode/react/package.json | 2 +- .../scan-single-barcode/react/src/App.css | 8 +++---- .../scan-single-barcode/react/src/App.tsx | 16 ++++++------- .../scan-single-barcode/vue/src/App.vue | 24 +++++++++---------- 9 files changed, 50 insertions(+), 60 deletions(-) diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/hello-world.html b/barcode-scanner-api-samples/scan-multiple-barcodes/hello-world.html index 6681c802..5c6ac3ec 100644 --- a/barcode-scanner-api-samples/scan-multiple-barcodes/hello-world.html +++ b/barcode-scanner-api-samples/scan-multiple-barcodes/hello-world.html @@ -16,13 +16,13 @@ width: 100%; height: 100%; } - .dbs-title { + .barcode-scanner-title { height: 80px; text-align: center; font-size: 20px; padding: 20px 0; } - .dbs-container { + .barcode-scanner-view { width: 100%; height: calc(100% - 80px); } @@ -30,12 +30,12 @@ -

Hello World (Decode via Camera)

-
+

Hello World (Decode via Camera)

+
diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.css b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.css index 24ae6460..f86cdd79 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.css +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.css @@ -1,10 +1,10 @@ -.dbs-hello-world-page { +.barcode-scanner-hello-world-page { width: 100%; height: 100%; text-align: center; } -.dbs-title { +.barcode-scanner-title { height: 90px; display: flex; justify-content: center; @@ -12,23 +12,13 @@ padding: 20px 0; } -.dbs-title .dbs-title-logo { +.barcode-scanner-title .barcode-scanner-title-logo { width: 60px; height: 60px; animation: retate 5s infinite linear; } -.dbs-container { +.barcode-scanner-view { width: 100%; height: calc(100% - 90px); } - -@keyframes retate { - from { - transform: rotate(0deg); - } - - to { - transform: rotate(360deg); - } -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.html b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.html index 85a6f853..f562d897 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.html +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.html @@ -1,6 +1,6 @@ -
-
-

Hello World for Angular

+
+
+

Hello World for Angular

-
+
diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts index d17d575d..642a6eac 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts @@ -14,7 +14,7 @@ export class AppComponent { async ngAfterViewInit(): Promise { const config = { license: "YOUR-LICENSE-KEY", - container: ".dbs-container", + container: ".barcode-scanner-view", engineResourcePaths: { rootDirectory: "https://npm.scannerproxy.com:802/cdn/@dynamsoft/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", }, @@ -22,8 +22,8 @@ export class AppComponent { cameraEnhancerUIPath: "https://npm.scannerproxy.com:802/cdn/@dynamsoft/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", }, } - const dbs = new BarcodeScanner(config); - dbs.launch().then((result) => { + const barcodeScanner = new BarcodeScanner(config); + barcodeScanner.launch().then((result) => { console.log(result); }); } diff --git a/barcode-scanner-api-samples/scan-single-barcode/hello-world.html b/barcode-scanner-api-samples/scan-single-barcode/hello-world.html index 4a036936..e6d2df52 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/hello-world.html +++ b/barcode-scanner-api-samples/scan-single-barcode/hello-world.html @@ -16,13 +16,13 @@ width: 100%; height: 100%; } - .dbs-title { + .barcode-scanner-title { height: 80px; text-align: center; font-size: 20px; padding: 20px 0; } - .dbs-container { + .barcode-scanner-view { width: 100%; height: calc(100% - 80px); } @@ -30,15 +30,15 @@ -

Hello World (Decode via Camera)

-
+

Hello World (Decode via Camera)

+
diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/package.json b/barcode-scanner-api-samples/scan-single-barcode/react/package.json index 36047fb3..b3a14407 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/react/package.json +++ b/barcode-scanner-api-samples/scan-single-barcode/react/package.json @@ -1,5 +1,5 @@ { - "name": "dbs-react", + "name": "react", "private": true, "version": "0.0.0", "type": "module", diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/src/App.css b/barcode-scanner-api-samples/scan-single-barcode/react/src/App.css index fa360dd3..96b0bca8 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/react/src/App.css +++ b/barcode-scanner-api-samples/scan-single-barcode/react/src/App.css @@ -1,10 +1,10 @@ -.dbs-hello-world-page { +.barcode-scanner-hello-world-page { width: 100%; height: 100%; text-align: center; } -.dbs-title { +.barcode-scanner-title { height: 90px; display: flex; justify-content: center; @@ -12,13 +12,13 @@ padding: 20px 0; } -.dbs-title .dbs-title-logo { +.barcode-scanner-title .barcode-scanner-title-logo { width: 60px; height: 60px; animation: retate 5s infinite linear; } -.dbs-container { +.barcode-scanner-view { width: 100%; height: calc(100% - 90px); } diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx b/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx index 37abca6a..fa86a9e3 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx +++ b/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx @@ -7,7 +7,7 @@ function App() { useEffect(() => { const config = { license: "YOUR-LICENSE-KEY", - container: ".dbs-container", + container: ".barcode-scanner-view ", engineResourcePaths: { rootDirectory: "https://npm.scannerproxy.com:802/cdn/@dynamsoft/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", }, @@ -15,18 +15,18 @@ function App() { cameraEnhancerUIPath: "https://npm.scannerproxy.com:802/cdn/@dynamsoft/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", }, } - const dbs = new BarcodeScanner(config); - dbs.launch().then((result)=>{ + const barcodeScanner = new BarcodeScanner(config); + barcodeScanner.launch().then((result)=>{ console.log(result); }); }) return ( -
-
-

Hello World for React

- logo +
+
+

Hello World for React

+ logo
-
+
) } diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue b/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue index 92ef6909..1975a3b5 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue @@ -6,7 +6,7 @@ import vueLogo from "./assets/vue.svg"; onMounted(() => { const config = { license: "YOUR-LICENSE-KEY", - container: ".dbs-container", + container: ".barcode-scanner-view", engineResourcePaths: { rootDirectory: "https://npm.scannerproxy.com:802/cdn/@dynamsoft/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", }, @@ -14,31 +14,31 @@ onMounted(() => { cameraEnhancerUIPath: "https://npm.scannerproxy.com:802/cdn/@dynamsoft/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", }, } - const dbs = new BarcodeScanner(config); - dbs.launch().then((result)=>{ + const barcodeScanner = new BarcodeScanner(config); + barcodeScanner.launch().then((result)=>{ console.log(result); }); }) - - - -

Hello World (Decode via Camera)

-
- - - - \ No newline at end of file + + + + +

+ Hello World (Scan Multiple Barcodes via Camera) +

+ +
+ + + + diff --git a/barcode-scanner-api-samples/scan-single-barcode/README.md b/barcode-scanner-api-samples/scan-single-barcode/README.md index 6678ae8b..293543b1 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/README.md +++ b/barcode-scanner-api-samples/scan-single-barcode/README.md @@ -10,7 +10,7 @@ This sample demonstrates how to use the `BarcodeScanner` API from the [Dynamsoft ## 🔧 How It Works -The sample uses the `BarcodeScanner` class to launch a scanner and decode barcodes from a camera stream. The key configuration includes: +The sample uses the `BarcodeScanner` class to launch a scanner and decode a single barcode from a camera stream. The key configuration includes: - **License Key** – Required to activate the SDK. - **`engineResourcePaths`** – Points to required resources hosted on a CDN or locally. @@ -27,7 +27,7 @@ const config = { }; ``` -The barcodeScanner is launched like this: +The BarcodeScanner instance is created and launched like this: ```ts const barcodeScanner = new Dynamsoft.BarcodeScanner(config); @@ -36,10 +36,10 @@ barcodeScanner.launch(); ## 📌 Notes -- This sample scans **single barcode**, you can configure the `scanMode` to control this behavior. -- To avoid network-related loading issues, you can consider hosting all required resources locally. +- This sample scans one **single barcode**, you can configure `scanMode` to change the behavior to scan multiple barcodes. +- To avoid network-related loading issues, consider hosting all required resources locally. -## 📄 See other barcodeScanner samples +## 📄 See other BarcodeScanner samples * [**Hello World in Angular**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/angular): Read single barcode from camera in an Angular application. * [**Hello World in React**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/react): Read single barcode from camera in a React application. diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.html b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.html index 7daee069..5995cc46 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.html +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.html @@ -3,5 +3,6 @@

Hello World for Angular

+
diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts index c0c6198e..d730c3cf 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts @@ -2,27 +2,39 @@ import { Component } from '@angular/core'; import { BarcodeScanner } from '@dynamsoft/dynamsoft-barcode-reader-bundle'; @Component({ - selector: 'app-root', - templateUrl: './app.component.html', - styleUrl: './app.component.css' + selector: 'app-root', + templateUrl: './app.component.html', + styleUrl: './app.component.css' }) + export class AppComponent { - title = 'angular'; - - async ngAfterViewInit(): Promise { - const config = { - license: "YOUR-LICENSE-KEY", - container: ".barcode-scanner-view", - engineResourcePaths: { - rootDirectory: "https://npm.scannerproxy.com:802/cdn/@dynamsoft/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", - }, - scannerViewConfig: { - cameraEnhancerUIPath: "https://npm.scannerproxy.com:802/cdn/@dynamsoft/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", - }, + title = 'angular'; + + async ngAfterViewInit(): Promise { + // Configuration object for initializing the BarcodeScanner instance + const config = { + + license: "YOUR-LICENSE-KEY", // Replace with your Dynamsoft license key + container: ".barcode-scanner-view", // Specify where to render the scanner UI + + // Specify custom paths for the engine resources + engineResourcePaths: { + rootDirectory: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", + }, + + // Configuration for the scanner UI + scannerViewConfig: { + // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. + cameraEnhancerUIPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", + }, + } + + // Create an instance of the BarcodeScanner with the provided configuration + const barcodeScanner = new BarcodeScanner(config); + + // Launch the scanner; once a barcode is detected, display its text in an alert + barcodeScanner.launch().then((result) => { + alert(result.barcodeResults[0].text); + }); } - const barcodeScanner = new BarcodeScanner(config); - barcodeScanner.launch().then((result) => { - alert(result.barcodeResults[0].text); - }); - } } diff --git a/barcode-scanner-api-samples/scan-single-barcode/hello-world.html b/barcode-scanner-api-samples/scan-single-barcode/hello-world.html index 813c3e33..35963fb9 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/hello-world.html +++ b/barcode-scanner-api-samples/scan-single-barcode/hello-world.html @@ -1,47 +1,68 @@ + + + + + Dynamsoft Barcode Scanner Sample - Hello World (Decode via Camera) + - - - - Dynamsoft Barcode Scanner Sample - Hello World (Decode via Camera) - - - - - -

Hello World (Decode via Camera)

-
- - - - \ No newline at end of file + + + + + + + +

+ Hello World (Scan One Single Barcode via Camera) +

+ +
+ + + + diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx b/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx index 3a94cca8..bb6a305c 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx +++ b/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx @@ -1,34 +1,51 @@ -import { useEffect } from 'react'; +import { useEffect } from "react"; import reactLogo from "./assets/logo.svg"; -import { BarcodeScanner } from '@dynamsoft/dynamsoft-barcode-reader-bundle'; -import './App.css'; +import { BarcodeScanner } from "@dynamsoft/dynamsoft-barcode-reader-bundle"; +import "./App.css"; function App() { useEffect(() => { + // Configuration object for initializing the BarcodeScanner instance const config = { - license: "YOUR-LICENSE-KEY", - container: ".barcode-scanner-view ", + license: "YOUR-LICENSE-KEY", // Replace with your Dynamsoft license key + container: ".barcode-scanner-view", // Specify where to render the scanner UI + + // Specify custom paths for the engine resources engineResourcePaths: { - rootDirectory: "https://npm.scannerproxy.com:802/cdn/@dynamsoft/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", + rootDirectory: + "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", }, + + // Configuration for the scanner UI scannerViewConfig: { - cameraEnhancerUIPath: "https://npm.scannerproxy.com:802/cdn/@dynamsoft/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", + // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. + cameraEnhancerUIPath: + "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", }, - } + }; + + // Create an instance of the BarcodeScanner with the provided configuration const barcodeScanner = new BarcodeScanner(config); - barcodeScanner.launch().then((result)=>{ + + // Launch the scanner; once a barcode is detected, display its text in an alert + barcodeScanner.launch().then((result) => { alert(result.barcodeResults[0].text); }); - }) + }); return (

Hello World for React

- logo + logo
+ {/* This div will host the barcode scanner's camera view */}
- ) + ); } export default App; diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue b/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue index c8e4ae53..d8278e83 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue @@ -4,20 +4,33 @@ import { BarcodeScanner } from '@dynamsoft/dynamsoft-barcode-reader-bundle'; import vueLogo from "./assets/vue.svg"; onMounted(() => { - const config = { - license: "YOUR-LICENSE-KEY", - container: ".barcode-scanner-view", - engineResourcePaths: { - rootDirectory: "https://npm.scannerproxy.com:802/cdn/@dynamsoft/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", - }, - scannerViewConfig: { - cameraEnhancerUIPath: "https://npm.scannerproxy.com:802/cdn/@dynamsoft/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", - }, - } - const barcodeScanner = new BarcodeScanner(config); - barcodeScanner.launch().then((result)=>{ - alert(result.barcodeResults[0].text); - }); + + // Configuration object for initializing the BarcodeScanner instance + const config = { + license: "YOUR-LICENSE-KEY", // Replace with your Dynamsoft license key + container: ".barcode-scanner-view", // Specify where to render the scanner UI + + // Specify custom paths for the engine resources + engineResourcePaths: { + rootDirectory: + "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", + }, + + // Configuration for the scanner UI + scannerViewConfig: { + // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. + cameraEnhancerUIPath: + "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", + }, + }; + + // Create an instance of the BarcodeScanner with the provided configuration + const barcodeScanner = new BarcodeScanner(config); + + // Launch the scanner; once a barcode is detected, display its text in an alert + barcodeScanner.launch().then((result) => { + alert(result.barcodeResults[0].text); + }); }) @@ -27,6 +40,7 @@ onMounted(() => {

Hello World for Vue

+
From e94277a462dece11f4674d238adcacd8f220750f Mon Sep 17 00:00:00 2001 From: Tom Kent Date: Wed, 23 Apr 2025 21:27:36 -0700 Subject: [PATCH 104/223] adds one sample for shopping cart simulation --- .../scan-multiple-barcodes/README.md | 29 ++- .../scan-multiple-barcodes/list-builder.html | 243 ++++++++++++++++++ .../scan-single-barcode/README.md | 3 +- 3 files changed, 270 insertions(+), 5 deletions(-) create mode 100644 barcode-scanner-api-samples/scan-multiple-barcodes/list-builder.html diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/README.md b/barcode-scanner-api-samples/scan-multiple-barcodes/README.md index 2477414d..5b5f5f68 100644 --- a/barcode-scanner-api-samples/scan-multiple-barcodes/README.md +++ b/barcode-scanner-api-samples/scan-multiple-barcodes/README.md @@ -1,16 +1,18 @@ -# 📦 Scan Multiple Barcodes Sample +# 📦 Scan Multiple Barcodes Samples + +## 🚀 Hello World This sample demonstrates how to use the `BarcodeScanner` API from the [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/) to scan **multiple barcodes continuously** from a video stream in a web application. -## ✨ Features +### ✨ Features - Scan multiple 1D/2D barcodes - Live video decoding using `BarcodeScanner` component - Easy integration into your web application - UI rendered into a customizable container -## 🔧 How It Works +### 🔧 How It Works The sample uses the `BarcodeScanner` class to launch a scanner and decode barcodes from a camera stream. The key configuration includes: @@ -42,11 +44,30 @@ const barcodeScanner = new Dynamsoft.BarcodeScanner(config); barcodeScanner.launch(); ``` -## 📌 Notes +### 📌 Notes - This sample scans **multiple unique barcodes**, you can configure `scanMode` to change the behavior to scan one single barcode. - To avoid network-related loading issues, consider hosting all required resources locally. +## 🛒 List Builder + +This sample simulates a shopping experience where users scan barcodes to add items to a dynamic cart. + +### ✨ Features + +- Scan multiple 1D/2D barcodes +- Live video decoding using `BarcodeScanner` component +- Floating and draggable scanner window. +- Dynamic cart updates on each scan. + +### 🔧 How It Works + +The scanning logic mirrors the Hello World sample. + +The UI features a "Scan Barcode" button, a styled cart, and basic interactivity with vanilla JavaScript and CSS. + +A list of 20 dummy products is used, with each scan randomly adding a product to the cart showing its name, shortened barcode, and price. + ## 📄 See other BarcodeScanner samples Multiple samples are provided for single barcode scanning. These samples can be easily adapted to scan multiple unique barcodes by simply updating the `config` object. diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/list-builder.html b/barcode-scanner-api-samples/scan-multiple-barcodes/list-builder.html new file mode 100644 index 00000000..6de3b7b9 --- /dev/null +++ b/barcode-scanner-api-samples/scan-multiple-barcodes/list-builder.html @@ -0,0 +1,243 @@ + + + + + + List-Builder - Scan to Cart Simulation + + + + + + + + +
+

🛒 Scan Barcode to Add Items to Cart

+
+ + + + + + + + +
+

Simulated Shopping Cart

+
+

No items in cart. Start scanning!

+
+
+ + + + diff --git a/barcode-scanner-api-samples/scan-single-barcode/README.md b/barcode-scanner-api-samples/scan-single-barcode/README.md index 293543b1..807ceb8e 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/README.md +++ b/barcode-scanner-api-samples/scan-single-barcode/README.md @@ -47,4 +47,5 @@ barcodeScanner.launch(); Scan multiple barcodes: -* [**Hello World**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes): Scan multiple barcodes from video stream with minimum code in JavaScript. \ No newline at end of file +* [**Hello World**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes): Scan multiple barcodes from video stream with minimum code in JavaScript. +* [**List Builder**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes): Simulates a shopping experience where users scan barcodes to add items to a dynamic cart. \ No newline at end of file From 66b9584dd2f1cf7b4b6e2b6f08e9d788795fc9e8 Mon Sep 17 00:00:00 2001 From: Tom Kent Date: Wed, 23 Apr 2025 21:35:11 -0700 Subject: [PATCH 105/223] Updated readme and more for the new sample --- .../scan-multiple-barcodes/README.md | 2 +- .../{list-builder.html => cart-builder.html} | 0 .../scan-single-barcode/README.md | 2 +- index.html | 23 ++++++++++++------- 4 files changed, 17 insertions(+), 10 deletions(-) rename barcode-scanner-api-samples/scan-multiple-barcodes/{list-builder.html => cart-builder.html} (100%) diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/README.md b/barcode-scanner-api-samples/scan-multiple-barcodes/README.md index 5b5f5f68..5d1be6fc 100644 --- a/barcode-scanner-api-samples/scan-multiple-barcodes/README.md +++ b/barcode-scanner-api-samples/scan-multiple-barcodes/README.md @@ -49,7 +49,7 @@ barcodeScanner.launch(); - This sample scans **multiple unique barcodes**, you can configure `scanMode` to change the behavior to scan one single barcode. - To avoid network-related loading issues, consider hosting all required resources locally. -## 🛒 List Builder +## 🛒 Cart Builder This sample simulates a shopping experience where users scan barcodes to add items to a dynamic cart. diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/list-builder.html b/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html similarity index 100% rename from barcode-scanner-api-samples/scan-multiple-barcodes/list-builder.html rename to barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html diff --git a/barcode-scanner-api-samples/scan-single-barcode/README.md b/barcode-scanner-api-samples/scan-single-barcode/README.md index 807ceb8e..b889de10 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/README.md +++ b/barcode-scanner-api-samples/scan-single-barcode/README.md @@ -48,4 +48,4 @@ barcodeScanner.launch(); Scan multiple barcodes: * [**Hello World**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes): Scan multiple barcodes from video stream with minimum code in JavaScript. -* [**List Builder**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes): Simulates a shopping experience where users scan barcodes to add items to a dynamic cart. \ No newline at end of file +* [**Cart Builder**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes): Simulates a shopping experience where users scan barcodes to add items to a dynamic cart. \ No newline at end of file diff --git a/index.html b/index.html index eeefb031..3d187520 100644 --- a/index.html +++ b/index.html @@ -20,18 +20,12 @@

BarcodeScanner API Samples

-
Hello World
+
Scan Single Barcode
Scan - Single Barcode + JavaScript code to scan a barcode from camera." class="button title" href="barcode-scanner-api-samples/scan-single-barcode/hello-world.html">Hello World
-
+
Scan Multiple Barcodes
+

Foundational API Samples

From a98a10b21f36439b7113985f326fe846d32d648f Mon Sep 17 00:00:00 2001 From: Tom Kent Date: Wed, 23 Apr 2025 21:37:24 -0700 Subject: [PATCH 106/223] add numbers to sample list --- barcode-scanner-api-samples/scan-multiple-barcodes/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/README.md b/barcode-scanner-api-samples/scan-multiple-barcodes/README.md index 5d1be6fc..a144a590 100644 --- a/barcode-scanner-api-samples/scan-multiple-barcodes/README.md +++ b/barcode-scanner-api-samples/scan-multiple-barcodes/README.md @@ -1,7 +1,7 @@ # 📦 Scan Multiple Barcodes Samples -## 🚀 Hello World +## 🚀 1. Hello World This sample demonstrates how to use the `BarcodeScanner` API from the [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/) to scan **multiple barcodes continuously** from a video stream in a web application. @@ -49,7 +49,7 @@ barcodeScanner.launch(); - This sample scans **multiple unique barcodes**, you can configure `scanMode` to change the behavior to scan one single barcode. - To avoid network-related loading issues, consider hosting all required resources locally. -## 🛒 Cart Builder +## 🛒 2. Cart Builder This sample simulates a shopping experience where users scan barcodes to add items to a dynamic cart. From 8e6afd68015f5bab7af565e021a728fbb89659ec Mon Sep 17 00:00:00 2001 From: Tom Kent Date: Wed, 23 Apr 2025 21:39:42 -0700 Subject: [PATCH 107/223] better comment --- barcode-scanner-api-samples/scan-multiple-barcodes/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/README.md b/barcode-scanner-api-samples/scan-multiple-barcodes/README.md index a144a590..e6832448 100644 --- a/barcode-scanner-api-samples/scan-multiple-barcodes/README.md +++ b/barcode-scanner-api-samples/scan-multiple-barcodes/README.md @@ -62,7 +62,7 @@ This sample simulates a shopping experience where users scan barcodes to add ite ### 🔧 How It Works -The scanning logic mirrors the Hello World sample. +The scanning logic mirrors the Hello World sample, but scanned results populate the cart instead of just displaying in the result view. The UI features a "Scan Barcode" button, a styled cart, and basic interactivity with vanilla JavaScript and CSS. From 154a12cc33f4bffa6ab5c2b97a96f0d1a590f2b6 Mon Sep 17 00:00:00 2001 From: Tom Kent Date: Wed, 23 Apr 2025 21:43:36 -0700 Subject: [PATCH 108/223] updated code a bit --- .../scan-multiple-barcodes/cart-builder.html | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html b/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html index 6de3b7b9..3d9c4758 100644 --- a/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html +++ b/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html @@ -177,13 +177,6 @@

Simulated Shopping Cart

let cart = []; - // Initialize Scan Button - window.onload = () => { - document - .getElementById("barcodeBtn") - .addEventListener("click", startScanner); - }; - // Simulate adding product to cart function simulateAddingToCart(barcodeText) { const product = { @@ -218,26 +211,33 @@

Simulated Shopping Cart

}); } - // Draggable Floating Div - const dragDiv = document.getElementById("floatingDiv"); - let offsetX = 0, - offsetY = 0, - isDragging = false; - - dragDiv.addEventListener("mousedown", (e) => { - isDragging = true; - offsetX = e.clientX - dragDiv.offsetLeft; - offsetY = e.clientY - dragDiv.offsetTop; - }); - - document.addEventListener("mousemove", (e) => { - if (isDragging) { - dragDiv.style.left = `${e.clientX - offsetX}px`; - dragDiv.style.top = `${e.clientY - offsetY}px`; - } - }); - - document.addEventListener("mouseup", () => (isDragging = false)); + // Initialize Scan Button + window.onload = () => { + document + .getElementById("barcodeBtn") + .addEventListener("click", startScanner); + + // Make the Floating Div Draggable + const dragDiv = document.getElementById("floatingDiv"); + let offsetX = 0, + offsetY = 0, + isDragging = false; + + dragDiv.addEventListener("mousedown", (e) => { + isDragging = true; + offsetX = e.clientX - dragDiv.offsetLeft; + offsetY = e.clientY - dragDiv.offsetTop; + }); + + document.addEventListener("mousemove", (e) => { + if (isDragging) { + dragDiv.style.left = `${e.clientX - offsetX}px`; + dragDiv.style.top = `${e.clientY - offsetY}px`; + } + }); + + document.addEventListener("mouseup", () => (isDragging = false)); + }; From 8d22296365fa67facd964520a5e9d120f0dafac3 Mon Sep 17 00:00:00 2001 From: SHEN <1014628363@qq.com> Date: Thu, 24 Apr 2025 13:15:23 +0800 Subject: [PATCH 109/223] UPDATE --- .../scan-single-barcode/angular/package.json | 2 +- .../angular/src/app/app.component.ts | 52 +++++++++---------- .../scan-single-barcode/react/package.json | 2 +- .../scan-single-barcode/react/src/App.tsx | 17 +++--- .../scan-single-barcode/vue/package.json | 2 +- .../scan-single-barcode/vue/src/App.vue | 44 +++++++--------- 6 files changed, 52 insertions(+), 67 deletions(-) diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/package.json b/barcode-scanner-api-samples/scan-single-barcode/angular/package.json index ec4e1003..547e6bf0 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/package.json +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/package.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^19.2.0", "@angular/platform-browser-dynamic": "^19.2.0", "@angular/router": "^19.2.0", - "@dynamsoft/dynamsoft-barcode-reader-bundle": "^10.5.1000-dev-20250418130750", + "dynamsoft-barcode-reader-bundle": "10.5.3000-beta-202504231853", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts index d730c3cf..03ae5316 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts @@ -1,40 +1,36 @@ import { Component } from '@angular/core'; -import { BarcodeScanner } from '@dynamsoft/dynamsoft-barcode-reader-bundle'; +import { BarcodeScanner } from 'dynamsoft-barcode-reader-bundle'; @Component({ - selector: 'app-root', - templateUrl: './app.component.html', - styleUrl: './app.component.css' + selector: 'app-root', + templateUrl: './app.component.html', + styleUrl: './app.component.css' }) export class AppComponent { - title = 'angular'; + title = 'angular'; - async ngAfterViewInit(): Promise { - // Configuration object for initializing the BarcodeScanner instance - const config = { + async ngAfterViewInit(): Promise { + // Configuration object for initializing the BarcodeScanner instance + const config = { + license: "YOUR-LICENSE-KEY", // Replace with your Dynamsoft license key + container: ".barcode-scanner-view", // Specify where to render the scanner UI - license: "YOUR-LICENSE-KEY", // Replace with your Dynamsoft license key - container: ".barcode-scanner-view", // Specify where to render the scanner UI + // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. + uiPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@10.5.3000-beta-202504231853/dist/", - // Specify custom paths for the engine resources - engineResourcePaths: { - rootDirectory: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", - }, - - // Configuration for the scanner UI - scannerViewConfig: { - // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. - cameraEnhancerUIPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", - }, - } + // Specify custom paths for the engine resources + engineResourcePaths: { + rootDirectory: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@10.5.3000-beta-202504231853/dist/", + }, + } - // Create an instance of the BarcodeScanner with the provided configuration - const barcodeScanner = new BarcodeScanner(config); + // Create an instance of the BarcodeScanner with the provided configuration + const barcodeScanner = new BarcodeScanner(config); - // Launch the scanner; once a barcode is detected, display its text in an alert - barcodeScanner.launch().then((result) => { - alert(result.barcodeResults[0].text); - }); - } + // Launch the scanner; once a barcode is detected, display its text in an alert + barcodeScanner.launch().then((result) => { + alert(result.barcodeResults[0].text); + }); + } } diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/package.json b/barcode-scanner-api-samples/scan-single-barcode/react/package.json index b3a14407..32116946 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/react/package.json +++ b/barcode-scanner-api-samples/scan-single-barcode/react/package.json @@ -10,7 +10,7 @@ "preview": "vite preview" }, "dependencies": { - "@dynamsoft/dynamsoft-barcode-reader-bundle": "^10.5.1000-dev-20250417174703", + "dynamsoft-barcode-reader-bundle": "10.5.3000-beta-202504231853", "react": "^19.0.0", "react-dom": "^19.0.0" }, diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx b/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx index bb6a305c..ff38ff6d 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx +++ b/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx @@ -1,6 +1,6 @@ import { useEffect } from "react"; import reactLogo from "./assets/logo.svg"; -import { BarcodeScanner } from "@dynamsoft/dynamsoft-barcode-reader-bundle"; +import { BarcodeScanner } from "dynamsoft-barcode-reader-bundle"; import "./App.css"; function App() { @@ -10,19 +10,14 @@ function App() { license: "YOUR-LICENSE-KEY", // Replace with your Dynamsoft license key container: ".barcode-scanner-view", // Specify where to render the scanner UI + // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. + uiPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@10.5.3000-beta-202504231853/dist/", + // Specify custom paths for the engine resources engineResourcePaths: { - rootDirectory: - "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", - }, - - // Configuration for the scanner UI - scannerViewConfig: { - // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. - cameraEnhancerUIPath: - "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@10.5.1000-dev-20250417174703/dist/", + rootDirectory: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@10.5.3000-beta-202504231853/dist/", }, - }; + } // Create an instance of the BarcodeScanner with the provided configuration const barcodeScanner = new BarcodeScanner(config); diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/package.json b/barcode-scanner-api-samples/scan-single-barcode/vue/package.json index 80a47d2d..9839e5e6 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/package.json +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/package.json @@ -9,7 +9,7 @@ "preview": "vite preview" }, "dependencies": { - "@dynamsoft/dynamsoft-barcode-reader-bundle": "^10.5.1000-dev-20250418130750", + "dynamsoft-barcode-reader-bundle": "10.5.3000-beta-202504231853", "vue": "^3.5.13" }, "devDependencies": { diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue b/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue index d8278e83..c8f8a973 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue @@ -1,36 +1,30 @@ From b5420d3f97476a17d3874775bdad17178c0789b7 Mon Sep 17 00:00:00 2001 From: SHEN <1014628363@qq.com> Date: Thu, 24 Apr 2025 13:32:40 +0800 Subject: [PATCH 110/223] change template --- .../angular/src/app/video-capture/video-capture.component.ts | 4 ++-- .../hello-world-blazor/BlazorApp/wwwroot/decodeVideo.js | 4 ++-- foundational-api-samples/hello-world/electron/action.js | 4 ++-- foundational-api-samples/hello-world/es6.html | 4 ++-- foundational-api-samples/hello-world/hello-world.html | 5 +++-- foundational-api-samples/hello-world/native-ts/index.ts | 4 ++-- .../next/components/VideoCapture/VideoCapture.tsx | 4 ++-- .../hello-world/nuxt/components/VideoCapture.client.vue | 4 ++-- foundational-api-samples/hello-world/pwa/helloworld-pwa.html | 4 ++-- .../react-hooks/src/components/VideoCapture/VideoCapture.tsx | 4 ++-- .../react/src/components/VideoCapture/VideoCapture.tsx | 4 ++-- foundational-api-samples/hello-world/requirejs.html | 4 ++-- .../hello-world/svelte/src/components/VideoCapture.svelte | 4 ++-- .../hello-world/vue/src/components/VideoCapture.vue | 4 ++-- 14 files changed, 29 insertions(+), 28 deletions(-) diff --git a/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.ts b/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.ts index 58472732..deb6c1ed 100644 --- a/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.ts +++ b/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.ts @@ -71,13 +71,13 @@ export class VideoCaptureComponent { throw Error(componentDestroyedErrorMsg); } - // Open camera and start scanning single barcode. + // Open camera and start scanning barcode. await this.cameraEnhancer.open(); cameraView.setScanLaserVisible(true); if (this.isDestroyed) { throw Error(componentDestroyedErrorMsg); } - await this.cvRouter.startCapturing('ReadSingleBarcode'); + await this.cvRouter.startCapturing('ReadBarcodes_SpeedFirst'); if (this.isDestroyed) { throw Error(componentDestroyedErrorMsg); } diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/decodeVideo.js b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/decodeVideo.js index 88a0ef74..f0d43ac6 100644 --- a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/decodeVideo.js +++ b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/decodeVideo.js @@ -35,11 +35,11 @@ window.startVideoDecode = async () => { filter.enableResultDeduplication("barcode", true); await cvRouter.addResultFilter(filter); - // Open camera and start scanning single barcode. + // Open camera and start scanning barcode. await cameraEnhancer.open(); cameraView.setScanLaserVisible(true); - await cvRouter.startCapturing("ReadSingleBarcode"); + await cvRouter.startCapturing("ReadBarcodes_SpeedFirst"); } catch (ex) { let errMsg = ex.message || ex; console.error(errMsg); diff --git a/foundational-api-samples/hello-world/electron/action.js b/foundational-api-samples/hello-world/electron/action.js index cd0a65b8..0a331708 100644 --- a/foundational-api-samples/hello-world/electron/action.js +++ b/foundational-api-samples/hello-world/electron/action.js @@ -64,10 +64,10 @@ Dynamsoft.Core.CoreModule.loadWasm(["DBR"]); filter.enableResultDeduplication("barcode", true); await cvRouter.addResultFilter(filter); - // Open camera and start scanning single barcode. + // Open camera and start scanning barcode. await cameraEnhancer.open(); cameraView.setScanLaserVisible(true); - await cvRouter.startCapturing("ReadSingleBarcode"); + await cvRouter.startCapturing("ReadBarcodes_SpeedFirst"); } catch (ex) { let errMsg = ex.message || ex; console.error(errMsg); diff --git a/foundational-api-samples/hello-world/es6.html b/foundational-api-samples/hello-world/es6.html index e979eecd..4e6d0711 100644 --- a/foundational-api-samples/hello-world/es6.html +++ b/foundational-api-samples/hello-world/es6.html @@ -75,10 +75,10 @@

Hello World for ES6 (Decode via Camera)

filter.enableResultDeduplication("barcode", true); await cvRouter.addResultFilter(filter); - // Open camera and start scanning single barcode. + // Open camera and start scanning barcode. await cameraEnhancer.open(); cameraView.setScanLaserVisible(true); - await cvRouter.startCapturing("ReadSingleBarcode"); + await cvRouter.startCapturing("ReadBarcodes_SpeedFirst"); } catch (ex) { let errMsg = ex.message || ex; console.error(errMsg); diff --git a/foundational-api-samples/hello-world/hello-world.html b/foundational-api-samples/hello-world/hello-world.html index 3a798a79..9100ae59 100644 --- a/foundational-api-samples/hello-world/hello-world.html +++ b/foundational-api-samples/hello-world/hello-world.html @@ -15,6 +15,7 @@

Hello World (Decode via Camera)

Results:
+ - - - - - -
-

🛒 Scan Barcode to Add Items to Cart

-
- - - - - - - - -
-

Simulated Shopping Cart

-
-

No items in cart. Start scanning!

-
-
- + + + + + + + + +
+

🛒 Scan Barcode to Add Items to Cart

+
+ + + + + + + + +
+

Simulated Shopping Cart

+
+

No items in cart. Start scanning!

+
+
+ + - - + product.name += ` (${shortenString(barcodeText)})`; + cart.push(product); + updateCartDisplay(); + } + + // Shorten barcode text + const shortenString = (str, max = 15) => + str.length <= max ? str : str.slice(0, max) + "..."; + + // Update Cart UI + function updateCartDisplay() { + const cartDiv = document.getElementById("cart-items"); + cartDiv.innerHTML = ""; + + const header = document.createElement("div"); + header.className = "cart-item"; + header.innerHTML = `ItemPrice`; + cartDiv.appendChild(header); + + cart.forEach((item) => { + const div = document.createElement("div"); + div.className = "cart-item"; + div.innerHTML = `${item.name}$${item.price.toFixed( + 2 + )}`; + cartDiv.appendChild(div); + }); + } + + // Initialize Scan Button + window.onload = () => { + document + .getElementById("barcodeBtn") + .addEventListener("click", startScanner); + + // Make the Floating Div Draggable + const dragDiv = document.getElementById("floatingDiv"); + let offsetX = 0, + offsetY = 0, + isDragging = false; + + dragDiv.addEventListener("mousedown", (e) => { + isDragging = true; + offsetX = e.clientX - dragDiv.offsetLeft; + offsetY = e.clientY - dragDiv.offsetTop; + }); + + document.addEventListener("mousemove", (e) => { + if (isDragging) { + dragDiv.style.left = `${e.clientX - offsetX}px`; + dragDiv.style.top = `${e.clientY - offsetY}px`; + } + }); + + document.addEventListener("mouseup", () => (isDragging = false)); + }; + + + + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/hello-world.html b/barcode-scanner-api-samples/scan-multiple-barcodes/hello-world.html index a8244753..5d4e4e4a 100644 --- a/barcode-scanner-api-samples/scan-multiple-barcodes/hello-world.html +++ b/barcode-scanner-api-samples/scan-multiple-barcodes/hello-world.html @@ -1,84 +1,90 @@ - - - - - Dynamsoft Barcode Scanner Sample - Hello World (Decode via Camera) - - - - - - - - -

- Hello World (Scan Multiple Barcodes via Camera) -

- -
- - - - + + + + + + Dynamsoft Barcode Scanner Sample - Hello World (Decode via Camera) + + + + + + + + + + + +

+ Hello World (Scan Multiple Barcodes via Camera) +

+ +
+ + + + + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/hello-world.html b/barcode-scanner-api-samples/scan-single-barcode/hello-world.html index 35963fb9..64c5d6be 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/hello-world.html +++ b/barcode-scanner-api-samples/scan-single-barcode/hello-world.html @@ -1,68 +1,74 @@ - - - - - Dynamsoft Barcode Scanner Sample - Hello World (Decode via Camera) - - - + + + + + Dynamsoft Barcode Scanner Sample - Hello World (Decode via Camera) + - - + /* Ensure html and body take full viewport size */ + html, + body { + width: 100%; + height: 100%; + } - -

- Hello World (Scan One Single Barcode via Camera) -

- -
+ /* Style for the scanner title */ + .barcode-scanner-title { + height: 80px; + text-align: center; + font-size: 20px; + padding: 20px 0; + } - - - + + + + \ No newline at end of file diff --git a/foundational-api-samples/hello-world/es6.html b/foundational-api-samples/hello-world/es6.html index 4e6d0711..04c95f32 100644 --- a/foundational-api-samples/hello-world/es6.html +++ b/foundational-api-samples/hello-world/es6.html @@ -23,6 +23,7 @@

Hello World for ES6 (Decode via Camera)

CameraEnhancer, MultiFrameResultCrossFilter, } from "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@10.4.3100/dist/dbr.bundle.mjs"; + /** LICENSE ALERT - README * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. */ diff --git a/foundational-api-samples/hello-world/hello-world.html b/foundational-api-samples/hello-world/hello-world.html index 9100ae59..ffe226e7 100644 --- a/foundational-api-samples/hello-world/hello-world.html +++ b/foundational-api-samples/hello-world/hello-world.html @@ -1,84 +1,89 @@ - - - - - - - Dynamsoft Barcode Reader Sample - Hello World (Decode via Camera) - - -

Hello World (Decode via Camera)

-
- Results:
-
- - - + + - /** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=10.4.3100&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ + + - - + const resultsContainer = document.querySelector("#results"); + resultsContainer.textContent = ""; + console.log(result); + for (let item of result.barcodeResultItems) { + resultsContainer.textContent += `${item.formatString}: ${item.text}\n\n`; + } + }, + }); + + // Filter out unchecked and duplicate results. + const filter = new Dynamsoft.Utility.MultiFrameResultCrossFilter(); + // Filter out unchecked barcodes. + filter.enableResultCrossVerification("barcode", true); + // Filter out duplicate barcodes within 3 seconds. + filter.enableResultDeduplication("barcode", true); + await cvRouter.addResultFilter(filter); + + // Open camera and start scanning barcode. + await cameraEnhancer.open(); + cameraView.setScanLaserVisible(true); + await cvRouter.startCapturing("ReadBarcodes_SpeedFirst"); + } catch (ex) { + let errMsg = ex.message || ex; + console.error(errMsg); + alert(errMsg); + } + })(); + + + + \ No newline at end of file diff --git a/foundational-api-samples/hello-world/nuxt/tsconfig.json b/foundational-api-samples/hello-world/nuxt/tsconfig.json index a746f2a7..28b66c52 100644 --- a/foundational-api-samples/hello-world/nuxt/tsconfig.json +++ b/foundational-api-samples/hello-world/nuxt/tsconfig.json @@ -1,4 +1,4 @@ { // https://nuxt.com/docs/guide/concepts/typescript "extends": "./.nuxt/tsconfig.json" -} +} \ No newline at end of file diff --git a/foundational-api-samples/hello-world/read-an-image.html b/foundational-api-samples/hello-world/read-an-image.html index 63e9d726..e2ac3fc0 100644 --- a/foundational-api-samples/hello-world/read-an-image.html +++ b/foundational-api-samples/hello-world/read-an-image.html @@ -1,71 +1,76 @@ - - - - - - - Dynamsoft Barcode Reader Sample - Hello World (Read an Image) - - -

Hello World (Read an Image)

-
- Results:
-
- - + + - /** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=10.4.3100&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ + - - + } catch (ex) { + let errMsg = ex.message || ex; + console.error(errMsg); + alert(errMsg); + } + }); + + + + \ No newline at end of file diff --git a/foundational-api-samples/others/debug/public/index.html b/foundational-api-samples/others/debug/public/index.html index 7245aa88..cc0b81be 100644 --- a/foundational-api-samples/others/debug/public/index.html +++ b/foundational-api-samples/others/debug/public/index.html @@ -1,197 +1,197 @@ - - - - - - Dynamsoft Barcode Reader Sample - Debug - - - -

Read Barcodes from Camera - Debug

- - -

- - - -

- -
-
- - - + + + + - - + }; + for (let ipt of document.querySelectorAll('input[name="video-settings"]')) { + ipt.addEventListener("change", switchVideoSettings); + } + + + + \ No newline at end of file diff --git a/foundational-api-samples/use-case/fill-a-form-with-barcode-reading.html b/foundational-api-samples/use-case/fill-a-form-with-barcode-reading.html index 90d8db4f..f8a6e900 100644 --- a/foundational-api-samples/use-case/fill-a-form-with-barcode-reading.html +++ b/foundational-api-samples/use-case/fill-a-form-with-barcode-reading.html @@ -1,164 +1,167 @@ - - - - - - - Dynamsoft Barcode Reader Sample - Fill Forms with Dynamsoft Barcode Reader - - - -

Fill Forms with Dynamsoft Barcode Reader

-
-

Click each input box to fill in!

- - - -
- - - - - - + + + + + + + + Dynamsoft Barcode Reader Sample - Fill Forms with Dynamsoft Barcode Reader + + + + +

Fill Forms with Dynamsoft Barcode Reader

+
+

Click each input box to fill in!

+ + + +
+ + + + + + + + + \ No newline at end of file diff --git a/foundational-api-samples/use-case/locate-an-item-with-barcode/index.html b/foundational-api-samples/use-case/locate-an-item-with-barcode/index.html index 5f9be674..29f42b53 100644 --- a/foundational-api-samples/use-case/locate-an-item-with-barcode/index.html +++ b/foundational-api-samples/use-case/locate-an-item-with-barcode/index.html @@ -1,248 +1,276 @@ - - - - - - Dynamsoft Barcode Reader Sample - Locate an Item with Barcode - - - - -
-
-

Locate an Item with Barcode

-
-
-

1. Enter or Scan the Item ID that you're seaching for:

-
- - - - -
- -

2. Start searching for the item

- - + } + + + + + +
+
+

Locate an Item with Barcode

+
+
+

1. Enter or Scan the Item ID that you're seaching for:

+
+ + + +
+ +

2. Start searching for the item

+ +
- - Dynamsoft - - - - - - ); } diff --git a/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html b/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html new file mode 100644 index 00000000..85b335ff --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html @@ -0,0 +1,263 @@ + + + + + + + Scan & Search with BarcodeScanner + + + + +

+
+ + + +
+ + +
+ + + + + + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/package.json b/barcode-scanner-api-samples/scan-single-barcode/vue/package.json index 401a5555..e04f301f 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/package.json +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/package.json @@ -9,7 +9,7 @@ "preview": "vite preview" }, "dependencies": { - "dynamsoft-barcode-reader-bundle": "10.5.3000", + "dynamsoft-barcode-reader-bundle": "11.0.3000", "vue": "^3.5.13" }, "devDependencies": { @@ -19,4 +19,4 @@ "vite": "^6.3.1", "vue-tsc": "^2.2.8" } -} +} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue b/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue index 051339b2..7fa7d84f 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue @@ -1,20 +1,22 @@ @@ -35,7 +39,7 @@ onMounted(() => {
-
+
From c2bdf09745d3c591eded12ef26ec6ff44f57a1ce Mon Sep 17 00:00:00 2001 From: SHEN <1014628363@qq.com> Date: Thu, 26 Jun 2025 16:16:40 +0800 Subject: [PATCH 132/223] UPDATE v11 --- .../angular/src/app/app.component.ts | 7 +++++++ .../scan-single-barcode/react/src/App.tsx | 17 ++++++++++++----- .../scan-single-barcode/vue/src/App.vue | 7 +++++++ 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts index 76d4f570..47b60160 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts @@ -21,6 +21,13 @@ export class AppComponent { // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. uiPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.0.3000/dist/", + // showUploadImageButton: true, + // showPoweredByDynamsoft: false, + // scannerViewConfig: { + // showFlashButton: true, + // cameraSwitchControl: "toggleFrontBack", + // }, + // Specify custom paths for the engine resources engineResourcePaths: { rootDirectory: "https://cdn.jsdelivr.net/npm/", diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx b/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx index d4104590..921e389f 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx +++ b/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx @@ -8,24 +8,31 @@ function App() { const hasRun = useRef(false); useEffect(() => { - if(!hasRun.current) { + if (!hasRun.current) { // Configuration object for initializing the BarcodeScanner instance const config = { license: "DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", // Replace with your Dynamsoft license key container: scannerViewRef.current!, // Specify where to render the scanner UI - + // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. uiPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.0.3000/dist/", - + + // showUploadImageButton: true, + // showPoweredByDynamsoft: false, + // scannerViewConfig: { + // showFlashButton: true, + // cameraSwitchControl: "toggleFrontBack", + // }, + // Specify custom paths for the engine resources engineResourcePaths: { rootDirectory: "https://cdn.jsdelivr.net/npm/", }, } - + // Create an instance of the BarcodeScanner with the provided configuration const barcodeScanner = new BarcodeScanner(config); - + // Launch the scanner; once a barcode is detected, display its text in an alert barcodeScanner.launch().then((result) => { if (result.barcodeResults.length) { diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue b/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue index 7fa7d84f..9f4e6c84 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue @@ -14,6 +14,13 @@ onMounted(() => { // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. uiPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.0.3000/dist/", + // showUploadImageButton: true, + // showPoweredByDynamsoft: false, + // scannerViewConfig: { + // showFlashButton: true, + // cameraSwitchControl: "toggleFrontBack", + // }, + // Specify custom paths for the engine resources engineResourcePaths: { rootDirectory: "https://cdn.jsdelivr.net/npm/", From 15a3c685a3c7dd3b8c18341184c2c53b50d96d4e Mon Sep 17 00:00:00 2001 From: SHEN <1014628363@qq.com> Date: Thu, 26 Jun 2025 16:18:56 +0800 Subject: [PATCH 133/223] Update scan-and-search.html --- .../scan-single-barcode/scan-and-search.html | 4 ---- 1 file changed, 4 deletions(-) diff --git a/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html b/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html index 85b335ff..af4c324c 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html +++ b/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html @@ -38,10 +38,6 @@

async function startScanner() { const barcodeScanner = new Dynamsoft.BarcodeScanner({ license: "", // Replace with valid license key - engineResourcePaths: { - rootDirectory: - "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.0.3000/dist/", - }, scanMode: Dynamsoft.EnumScanMode.SM_SINGLE, showUploadImageButton: true, scannerViewConfig: { From c8b732a17ccf0b94dacc0aec8efd2a4ab30b1e7a Mon Sep 17 00:00:00 2001 From: Justin Date: Thu, 26 Jun 2025 17:46:08 +0800 Subject: [PATCH 134/223] update for v11 --- README.md | 1 + .../scan-multiple-barcodes/README.md | 1 + .../scan-single-barcode/README.md | 35 ++++++++++++++++--- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 0c3265ed..bc4dc425 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,7 @@ If you have any questions, feel free to [contact Dynamsoft support](https://www. Get the basic features working with plain/native JavaScript or within a framework like [Angular](https://angular.io/), [React](https://reactjs.org/) or [Vue](https://vuejs.org/), with RTU-BarcodeScanner APIs. * [**Scan Single Barcode**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/hello-world.html) - [run↗](https://demo.dynamsoft.com/samples/dbr/js/barcode-scanner-api-samples/scan-single-barcode/hello-world.html?utm_source=sampleReadme): Scan single barcode from video stream with minimum code in JavaScript. +* [**Scan Single Barcode**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html) - [run↗](https://demo.dynamsoft.com/samples/dbr/js/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html?utm_source=sampleReadme): Scan a barcode to retrieve the relevant product information from the database in JavaScript. * [**Hello World in Angular**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/angular): Read single barcode from camera in an Angular application. * [**Hello World in React**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/react): Read single barcode from camera in a React application. * [**Hello World in Vue**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/vue): Read single barcode from camera in a Vue application. diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/README.md b/barcode-scanner-api-samples/scan-multiple-barcodes/README.md index e6832448..65aff9f6 100644 --- a/barcode-scanner-api-samples/scan-multiple-barcodes/README.md +++ b/barcode-scanner-api-samples/scan-multiple-barcodes/README.md @@ -73,6 +73,7 @@ A list of 20 dummy products is used, with each scan randomly adding a product to Multiple samples are provided for single barcode scanning. These samples can be easily adapted to scan multiple unique barcodes by simply updating the `config` object. * [**Hello World**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode): Scan single barcode from video stream with minimum code in JavaScript. +* [**Scan and Search**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode): Scan a barcode to retrieve the relevant product information from the database in JavaScript. * [**Hello World in Angular**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/angular): Read single barcode from camera in an Angular application. * [**Hello World in React**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/react): Read single barcode from camera in a React application. * [**Hello World in Vue**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/vue): Read single barcode from camera in a Vue application. \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/README.md b/barcode-scanner-api-samples/scan-single-barcode/README.md index b889de10..31be6230 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/README.md +++ b/barcode-scanner-api-samples/scan-single-barcode/README.md @@ -1,14 +1,16 @@ -# 📦 Scan Single Barcode - Hello World +# 📦 Scan Single Barcode + +## 🚀 1.Hello World This sample demonstrates how to use the `BarcodeScanner` API from the [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/) to scan a **single barcode** from a video stream using plain JavaScript. -## ✨ Features +### ✨ Features - Uses `BarcodeScanner` APIs from `dynamsoft-barcode-reader-bundle` - Scans a single barcode at a time - UI rendered to a container element -## 🔧 How It Works +### 🔧 How It Works The sample uses the `BarcodeScanner` class to launch a scanner and decode a single barcode from a camera stream. The key configuration includes: @@ -34,11 +36,34 @@ const barcodeScanner = new Dynamsoft.BarcodeScanner(config); barcodeScanner.launch(); ``` -## 📌 Notes +### 📌 Notes - This sample scans one **single barcode**, you can configure `scanMode` to change the behavior to scan multiple barcodes. - To avoid network-related loading issues, consider hosting all required resources locally. +## 🛒 2. Scan and Search + +This simple demonstrates how to use the `BarcodeScanner` API from the [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/) to scan a product barcode and simulate a search from a product database. + +### ✨ Features + +- Scan Barcodes using your device camera +- Search by Text or Barcode input +- Displays mock product data as search results +- Responsive UI with modern styling + +### 🔧 How It Works + +1. Click the Scan button to launch the barcode scanner. +2. Once a barcode is detected, its value is displayed along with placeholder product information. +3. Alternatively, type a product name or barcode manually in the input field and click Search. +4. Results are displayed in the Search Result text area. + +### 📌 Notes + +- No real backend is connected in this demo; results are mocked. +- You can integrate with a real product API by replacing the placeholder content in the searchResult.value. + ## 📄 See other BarcodeScanner samples * [**Hello World in Angular**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/angular): Read single barcode from camera in an Angular application. @@ -48,4 +73,4 @@ barcodeScanner.launch(); Scan multiple barcodes: * [**Hello World**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes): Scan multiple barcodes from video stream with minimum code in JavaScript. -* [**Cart Builder**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes): Simulates a shopping experience where users scan barcodes to add items to a dynamic cart. \ No newline at end of file +* [**Cart Builder**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes): Simulates a shopping experience where users scan barcodes to add items to a dynamic cart. \ No newline at end of file From 2e1e54161c6f99d5c059839a6e3ffdaa4b13252c Mon Sep 17 00:00:00 2001 From: SHEN <1014628363@qq.com> Date: Mon, 30 Jun 2025 17:48:58 +0800 Subject: [PATCH 135/223] Update cart-builder.html --- .../scan-multiple-barcodes/cart-builder.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html b/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html index b2044e47..995ab5b5 100644 --- a/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html +++ b/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html @@ -242,12 +242,14 @@

Simulated Shopping Cart

document.addEventListener("mouseup", () => (isDragging = false)); dragDiv.addEventListener("touchstart", (e) => { + e.preventDefault(); isDragging = true; offsetX = e.touches[0].clientX - dragDiv.offsetLeft; offsetY = e.touches[0].clientY - dragDiv.offsetTop; }); document.addEventListener("touchmove", (e) => { + e.preventDefault(); if (isDragging) { dragDiv.style.left = `${e.touches[0].clientX - offsetX}px`; dragDiv.style.top = `${e.touches[0].clientY - offsetY}px`; From fcc201f2a93687f54f13324731b4143b78b62136 Mon Sep 17 00:00:00 2001 From: SHEN <1014628363@qq.com> Date: Tue, 1 Jul 2025 16:12:45 +0800 Subject: [PATCH 136/223] Update cart-builder.html --- .../scan-multiple-barcodes/cart-builder.html | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html b/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html index 995ab5b5..00dc4e10 100644 --- a/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html +++ b/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html @@ -72,8 +72,10 @@ position: fixed; top: 400px; left: 100px; - width: 400px; - height: 200px; + width: 50%; + height: 25%; + max-width: 400px; + max-height: 200px; background: #f9f9f9; border: 2px solid #ccc; border-radius: 8px; From 3c89384c52e00fd145d747c9a34965cd7a99a8b1 Mon Sep 17 00:00:00 2001 From: SHEN <1014628363@qq.com> Date: Tue, 1 Jul 2025 16:17:35 +0800 Subject: [PATCH 137/223] Update cart-builder.html --- .../scan-multiple-barcodes/cart-builder.html | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html b/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html index 00dc4e10..92d47364 100644 --- a/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html +++ b/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html @@ -70,12 +70,14 @@ #floatingDiv { position: fixed; - top: 400px; - left: 100px; + top: 40%; + left: 10%; width: 50%; height: 25%; max-width: 400px; max-height: 200px; + min-width: 150px; + min-height: 150px; background: #f9f9f9; border: 2px solid #ccc; border-radius: 8px; From 758347e4f86f3508fe3d63cc6fea7ad58ad677a2 Mon Sep 17 00:00:00 2001 From: SHEN <1014628363@qq.com> Date: Tue, 1 Jul 2025 16:38:05 +0800 Subject: [PATCH 138/223] Update cart-builder.html --- .../scan-multiple-barcodes/cart-builder.html | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html b/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html index 92d47364..c00bba26 100644 --- a/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html +++ b/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html @@ -246,7 +246,6 @@

Simulated Shopping Cart

document.addEventListener("mouseup", () => (isDragging = false)); dragDiv.addEventListener("touchstart", (e) => { - e.preventDefault(); isDragging = true; offsetX = e.touches[0].clientX - dragDiv.offsetLeft; offsetY = e.touches[0].clientY - dragDiv.offsetTop; @@ -258,7 +257,7 @@

Simulated Shopping Cart

dragDiv.style.left = `${e.touches[0].clientX - offsetX}px`; dragDiv.style.top = `${e.touches[0].clientY - offsetY}px`; } - }); + }, { passive: false }); document.addEventListener("touchend", () => (isDragging = false)); }; From 5e717eb07edf304d97736a8b52950f58a12c99b6 Mon Sep 17 00:00:00 2001 From: SHEN <1014628363@qq.com> Date: Fri, 4 Jul 2025 16:06:18 +0800 Subject: [PATCH 139/223] Update cart-builder.html --- .../scan-multiple-barcodes/cart-builder.html | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html b/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html index c00bba26..e6f02e12 100644 --- a/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html +++ b/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html @@ -120,6 +120,7 @@

Simulated Shopping Cart

From c306fdc68a4adcd5070957ef2a1f5c8e3f4304a0 Mon Sep 17 00:00:00 2001 From: SHEN <1014628363@qq.com> Date: Fri, 4 Jul 2025 16:17:33 +0800 Subject: [PATCH 140/223] Update scan-and-search.html --- .../scan-single-barcode/scan-and-search.html | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html b/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html index af4c324c..aa049454 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html +++ b/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html @@ -5,7 +5,7 @@ Scan & Search with BarcodeScanner - + @@ -19,7 +19,7 @@

- + @@ -49,8 +49,10 @@

scanBtn.disabled = true; const result = await barcodeScanner.launch(); - if (result.barcodeResults[0]) + if (result.barcodeResults[0]) { searchResult.value = `Barcode Text to Query from Database: \n\n${result.barcodeResults[0].text} \n\n-------------------\n\nProduct name: xxx \n\nBrand: xxx \n\nCategory: xxx \n\nPrice: xxx \n\nDescription: xxx`; + inputBox.value = result.barcodeResults[0].text; + } scannerContainer.style.display = "none"; scanBtn.disabled = false; @@ -63,6 +65,7 @@

}); searchBtn.addEventListener("click", () => { + if(!inputBox.value) return; searchResult.value = `Text to Query from Database: \n\n${inputBox.value} \n\n-------------------\n\nProduct name: xxx \n\nBrand: xxx \n\nCategory: xxx \n\nPrice: xxx \n\nDescription: xxx`; }); }; From 827b60d37cd0acdc95b983bb1e2181280f3f460e Mon Sep 17 00:00:00 2001 From: SHEN <1014628363@qq.com> Date: Fri, 4 Jul 2025 16:42:38 +0800 Subject: [PATCH 141/223] Update cart-builder.html --- .../scan-multiple-barcodes/cart-builder.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html b/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html index e6f02e12..e8a01e1d 100644 --- a/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html +++ b/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html @@ -83,7 +83,7 @@ border-radius: 8px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); cursor: move; - z-index: 9999; + z-index: 999; padding: 3px; box-sizing: border-box; } From b26beba127a35be06f9260f966c548be5f244b71 Mon Sep 17 00:00:00 2001 From: Justin Date: Fri, 4 Jul 2025 16:47:26 +0800 Subject: [PATCH 142/223] update comment --- .../scan-multiple-barcodes/cart-builder.html | 2 +- .../scan-multiple-barcodes/hello-world.html | 2 +- .../scan-single-barcode/scan-and-search.html | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html b/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html index e8a01e1d..d7d61f8a 100644 --- a/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html +++ b/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html @@ -6,7 +6,7 @@ List-Builder - Scan to Cart Simulation - + diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/hello-world.html b/barcode-scanner-api-samples/scan-multiple-barcodes/hello-world.html index 4d45fc56..dba85a36 100644 --- a/barcode-scanner-api-samples/scan-multiple-barcodes/hello-world.html +++ b/barcode-scanner-api-samples/scan-multiple-barcodes/hello-world.html @@ -7,7 +7,7 @@ Dynamsoft Barcode Scanner Sample - Hello World (Decode via Camera) - + diff --git a/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html b/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html index aa049454..633bbea5 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html +++ b/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html @@ -5,7 +5,11 @@ Scan & Search with BarcodeScanner + + + + From 42efa36d45b083ad15970e05722c7b95ed9e08c6 Mon Sep 17 00:00:00 2001 From: Justin Date: Fri, 4 Jul 2025 17:05:21 +0800 Subject: [PATCH 143/223] update header & trial license --- .../scan-single-barcode/scan-and-search.html | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html b/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html index 633bbea5..19574439 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html +++ b/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html @@ -5,7 +5,7 @@ Scan & Search with BarcodeScanner - + @@ -13,6 +13,8 @@ +

📦 Instant Product Information Lookup

+

Enter a UPC, EAN, or ISBN number to retrieve accurate product data from a specific database

- + @@ -41,7 +43,7 @@

async function startScanner() { const barcodeScanner = new Dynamsoft.BarcodeScanner({ - license: "", // Replace with valid license key + license: "DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", // Replace with valid license key scanMode: Dynamsoft.EnumScanMode.SM_SINGLE, showUploadImageButton: true, scannerViewConfig: { From 50e5226432990f8aaec209e0115f3944f0aade45 Mon Sep 17 00:00:00 2001 From: Justin Date: Fri, 4 Jul 2025 17:58:49 +0800 Subject: [PATCH 144/223] update links --- .../scan-multiple-barcodes/hello-world.html | 5 ++--- .../scan-single-barcode/scan-and-search.html | 2 -- index.html | 4 ++++ 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/hello-world.html b/barcode-scanner-api-samples/scan-multiple-barcodes/hello-world.html index dba85a36..e35bb623 100644 --- a/barcode-scanner-api-samples/scan-multiple-barcodes/hello-world.html +++ b/barcode-scanner-api-samples/scan-multiple-barcodes/hello-world.html @@ -64,8 +64,7 @@

// Set scan mode to detect multiple unique barcodes per scan session scanMode: Dynamsoft.EnumScanMode.SM_MULTI_UNIQUE, - // Display a result view for barcodes detected - showResultView: true, + // showResultView: true, // Enable an "Upload Image" button for scanning barcodes from existing images showUploadImageButton: true, @@ -74,7 +73,7 @@

// Additional configuration for the scanner UI scannerViewConfig: { - showCloseButton: true, // Display a close button on the scanner interface, + // showCloseButton: false, // Uncomment to show a close button in the scanner UI showFlashButton: true, cameraSwitchControl: "toggleFrontBack" }, diff --git a/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html b/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html index 19574439..64343938 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html +++ b/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html @@ -45,10 +45,8 @@

const barcodeScanner = new Dynamsoft.BarcodeScanner({ license: "DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", // Replace with valid license key scanMode: Dynamsoft.EnumScanMode.SM_SINGLE, - showUploadImageButton: true, scannerViewConfig: { container: scannerContainer, - showCloseButton: true, }, }); diff --git a/index.html b/index.html index 9e6ce56a..73a6ea80 100644 --- a/index.html +++ b/index.html @@ -119,6 +119,10 @@

BarcodeScanner API Samples

JavaScript code to scan a barcode from camera.">Hello World
+
Hello World + and simulate a search from a product database.">Scan and Search
Date: Wed, 9 Jul 2025 13:09:54 +0800 Subject: [PATCH 148/223] Update app.component.ts --- .../scan-single-barcode/angular/src/app/app.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts index 47b60160..5fe86552 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts +++ b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts @@ -1,5 +1,5 @@ import { Component, ElementRef, ViewChild } from '@angular/core'; -import { BarcodeScanner, BarcodeScannerConfig, CameraEnhancer, CameraView, CaptureVisionRouter } from 'dynamsoft-barcode-reader-bundle'; +import { BarcodeScanner, BarcodeScannerConfig } from 'dynamsoft-barcode-reader-bundle'; @Component({ selector: 'app-root', From 5f2bf811b6341b6843501e1dcd07bcd06a683cd0 Mon Sep 17 00:00:00 2001 From: SHEN <1014628363@qq.com> Date: Wed, 9 Jul 2025 13:37:55 +0800 Subject: [PATCH 149/223] Update video-capture.component.ts --- .../video-capture/video-capture.component.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.ts b/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.ts index b88d28d6..5ca1a2b0 100644 --- a/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.ts +++ b/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.ts @@ -1,4 +1,4 @@ -import { Component, ElementRef, ViewChild } from '@angular/core'; +import { Component, ElementRef, ViewChild, NgZone } from '@angular/core'; import '../dynamsoft.config'; import { CameraEnhancer, CameraView } from 'dynamsoft-barcode-reader-bundle'; import { CaptureVisionRouter } from 'dynamsoft-barcode-reader-bundle'; @@ -13,6 +13,8 @@ const componentDestroyedErrorMsg = 'VideoCapture Component Destroyed'; standalone: true, }) export class VideoCaptureComponent { + constructor(private ngZone: NgZone) { } + @ViewChild('cameraViewContainer') cameraViewContainer?: ElementRef; resultText = ""; @@ -51,12 +53,13 @@ export class VideoCaptureComponent { this.cvRouter.addResultReceiver({ onDecodedBarcodesReceived: (result) => { if (!result.barcodeResultItems.length) return; - - this.resultText = ''; console.log(result); - for (let item of result.barcodeResultItems) { - this.resultText += `${item.formatString}: ${item.text}\n\n`; - } + this.ngZone.run(() => { + this.resultText = ''; + for (let item of result.barcodeResultItems) { + this.resultText += `${item.formatString}: ${item.text}\n\n`; + } + }); }, }); @@ -103,6 +106,6 @@ export class VideoCaptureComponent { await this.pInit; this.cvRouter?.dispose(); this.cameraEnhancer?.dispose(); - } catch (_) {} + } catch (_) { } } } From a7c8c5c0c075ddf3f3f27a67fe429fbed86e9864 Mon Sep 17 00:00:00 2001 From: SHEN <1014628363@qq.com> Date: Wed, 9 Jul 2025 14:00:30 +0800 Subject: [PATCH 150/223] Update dynamsoft.config.ts --- .../hello-world/svelte/src/dynamsoft.config.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/foundational-api-samples/hello-world/svelte/src/dynamsoft.config.ts b/foundational-api-samples/hello-world/svelte/src/dynamsoft.config.ts index 64a8dca3..2273ee67 100644 --- a/foundational-api-samples/hello-world/svelte/src/dynamsoft.config.ts +++ b/foundational-api-samples/hello-world/svelte/src/dynamsoft.config.ts @@ -3,8 +3,7 @@ import { CoreModule } from "dynamsoft-barcode-reader-bundle"; import { LicenseManager } from "dynamsoft-barcode-reader-bundle"; // Configures the paths where the .wasm files and other necessary resources for modules are located. -// CoreModule.engineResourcePaths.rootDirectory = "https://cdn.jsdelivr.net/npm/"; -CoreModule.engineResourcePaths.rootDirectory = "https://npm.scannerproxy.com:802/cdn/@dynamsoft/"; +CoreModule.engineResourcePaths.rootDirectory = "https://cdn.jsdelivr.net/npm/"; /** LICENSE ALERT - README * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. @@ -22,4 +21,4 @@ LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", { */ // Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(["DBR"]); +CoreModule.loadWasm(); From ea7cb11986861af1bdce1c287f260c692ff80716 Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 9 Jul 2025 15:50:45 +0800 Subject: [PATCH 151/223] update version --- README.md | 2 +- barcode-scanner-api-samples/scan-multiple-barcodes/README.md | 2 +- barcode-scanner-api-samples/scan-single-barcode/README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 53a8a337..f62a64a0 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ A default license is included which allows you to test the sample apps for up to ## Documentation -For the developer guide and full API reference of Dynamsoft Barcode Reader JavaScript library, please check out the [documentation](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/?ver=10.5.3000&utm_source=sampleReadme). +For the developer guide and full API reference of Dynamsoft Barcode Reader JavaScript library, please check out the [documentation](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/?ver=11.0.3000&utm_source=sampleReadme). ## Support diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/README.md b/barcode-scanner-api-samples/scan-multiple-barcodes/README.md index 65aff9f6..e2ad24c2 100644 --- a/barcode-scanner-api-samples/scan-multiple-barcodes/README.md +++ b/barcode-scanner-api-samples/scan-multiple-barcodes/README.md @@ -25,7 +25,7 @@ const config = { license: "YOUR-LICENSE-KEY", engineResourcePaths: { // feel free to change it to your own path - rootDirectory: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@10.5.1000/dist/", + rootDirectory: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.0.3000/dist/", }, container: ".barcode-scanner-view", scanMode: Dynamsoft.EnumScanMode.SM_MULTI_UNIQUE, diff --git a/barcode-scanner-api-samples/scan-single-barcode/README.md b/barcode-scanner-api-samples/scan-single-barcode/README.md index 31be6230..fd1f8e60 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/README.md +++ b/barcode-scanner-api-samples/scan-single-barcode/README.md @@ -23,7 +23,7 @@ const config = { license: "YOUR-LICENSE-KEY", engineResourcePaths: { // feel free to change it to your own path - rootDirectory: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@10.5.1000/dist/", + rootDirectory: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.0.3000/dist/", }, container: ".barcode-scanner-view", }; From 103629ae7e0a4d5734b84ed954526f88767a7aad Mon Sep 17 00:00:00 2001 From: SHEN <1014628363@qq.com> Date: Wed, 9 Jul 2025 15:52:01 +0800 Subject: [PATCH 152/223] UPDATE --- README.md | 2 +- .../scan-multiple-barcodes/cart-builder.html | 2 +- .../scan-multiple-barcodes/hello-world.html | 2 +- .../scan-single-barcode/hello-world.html | 2 +- .../scan-single-barcode/scan-and-search.html | 2 +- foundational-api-samples/hello-world/hello-world.html | 2 +- foundational-api-samples/hello-world/read-an-image.html | 2 +- foundational-api-samples/others/debug/public/index.html | 4 ++-- .../use-case/fill-a-form-with-barcode-reading.html | 2 +- .../use-case/locate-an-item-with-barcode/index.html | 4 ++-- .../use-case/read-a-drivers-license/index.html | 4 ++-- .../use-case/show-result-texts-on-the-video.html | 2 +- 12 files changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 53a8a337..f62a64a0 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ A default license is included which allows you to test the sample apps for up to ## Documentation -For the developer guide and full API reference of Dynamsoft Barcode Reader JavaScript library, please check out the [documentation](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/?ver=10.5.3000&utm_source=sampleReadme). +For the developer guide and full API reference of Dynamsoft Barcode Reader JavaScript library, please check out the [documentation](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/?ver=11.0.3000&utm_source=sampleReadme). ## Support diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html b/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html index d7d61f8a..c66911dd 100644 --- a/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html +++ b/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html @@ -9,7 +9,7 @@ - + + + + + + + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/xml/file_paths.xml b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/xml/file_paths.xml new file mode 100644 index 00000000..bd0c4d80 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/xml/file_paths.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java new file mode 100644 index 00000000..02973278 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java @@ -0,0 +1,18 @@ +package com.getcapacitor.myapp; + +import static org.junit.Assert.*; + +import org.junit.Test; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see Testing documentation + */ +public class ExampleUnitTest { + + @Test + public void addition_isCorrect() throws Exception { + assertEquals(4, 2 + 2); + } +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/build.gradle b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/build.gradle new file mode 100644 index 00000000..f1b3b0e5 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/build.gradle @@ -0,0 +1,29 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + + repositories { + google() + mavenCentral() + } + dependencies { + classpath 'com.android.tools.build:gradle:8.7.2' + classpath 'com.google.gms:google-services:4.4.2' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +apply from: "variables.gradle" + +allprojects { + repositories { + google() + mavenCentral() + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/capacitor.settings.gradle b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/capacitor.settings.gradle new file mode 100644 index 00000000..9a5fa872 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/capacitor.settings.gradle @@ -0,0 +1,3 @@ +// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN +include ':capacitor-android' +project(':capacitor-android').projectDir = new File('../node_modules/@capacitor/android/capacitor') diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle.properties b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle.properties new file mode 100644 index 00000000..2e87c52f --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle.properties @@ -0,0 +1,22 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx1536m + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true + +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle/wrapper/gradle-wrapper.jar b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..a4b76b9530d66f5e68d973ea569d8e19de379189 GIT binary patch literal 43583 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 yu?e%!_ptzGB|8GrCfu%p?(_ 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 GZ~q4|mN%#X literal 0 HcmV?d00001 diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle/wrapper/gradle-wrapper.properties b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..c1d5e018 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradlew b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradlew new file mode 100644 index 00000000..f5feea6d --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradlew @@ -0,0 +1,252 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradlew.bat b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradlew.bat new file mode 100644 index 00000000..9d21a218 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradlew.bat @@ -0,0 +1,94 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/settings.gradle b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/settings.gradle new file mode 100644 index 00000000..3b4431d7 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/settings.gradle @@ -0,0 +1,5 @@ +include ':app' +include ':capacitor-cordova-android-plugins' +project(':capacitor-cordova-android-plugins').projectDir = new File('./capacitor-cordova-android-plugins/') + +apply from: 'capacitor.settings.gradle' \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/variables.gradle b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/variables.gradle new file mode 100644 index 00000000..2c8e4083 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/variables.gradle @@ -0,0 +1,16 @@ +ext { + minSdkVersion = 23 + compileSdkVersion = 35 + targetSdkVersion = 35 + androidxActivityVersion = '1.9.2' + androidxAppCompatVersion = '1.7.0' + androidxCoordinatorLayoutVersion = '1.2.0' + androidxCoreVersion = '1.15.0' + androidxFragmentVersion = '1.8.4' + coreSplashScreenVersion = '1.0.1' + androidxWebkitVersion = '1.12.1' + junitVersion = '4.13.2' + androidxJunitVersion = '1.2.1' + androidxEspressoCoreVersion = '3.6.1' + cordovaAndroidVersion = '10.1.1' +} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/capacitor.config.json b/barcode-scanner-api-samples/scan-single-barcode/capacitor/capacitor.config.json new file mode 100644 index 00000000..72cfd925 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/capacitor.config.json @@ -0,0 +1,6 @@ +{ + "appId": "com.dynamsoft.dbrjs", + "appName": "dbrjs capacitor", + "webDir": "dist", + "bundledWebRuntime": true +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/index.ts b/barcode-scanner-api-samples/scan-single-barcode/capacitor/index.ts new file mode 100644 index 00000000..0a4fef73 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/index.ts @@ -0,0 +1,35 @@ +import { BarcodeScanner, BarcodeScannerConfig } from "dynamsoft-barcode-reader-bundle"; + +// Configuration object for initializing the BarcodeScanner instance +const config: BarcodeScannerConfig = { + license: "DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", // Replace with your Dynamsoft license key + + // Specify where to render the scanner UI + // If container is not specified, the UI will take up the full screen + container: document.querySelector(".barcode-scanner-view") as HTMLElement, // Specify where to render the scanner UI + + // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. + uiPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.0.6000/dist/barcode-scanner.ui.xml", + + // showUploadImageButton: true, + // scannerViewConfig: { + // showFlashButton: true, + // cameraSwitchControl: "toggleFrontBack", + // }, + + // Specify custom paths for the engine resources + engineResourcePaths: { + rootDirectory: "https://cdn.jsdelivr.net/npm/", + }, +}; + +// Create a new instance of the Dynamsoft Barcode Scanner +const barcodeScanner = new BarcodeScanner(config); + +(async()=>{ + // Launch the scanner; once a barcode is detected, display its text in an alert + let result = await barcodeScanner.launch(); + if (result.barcodeResults.length) { + alert(result.barcodeResults[0].text); + } +})(); diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/.gitignore b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/.gitignore new file mode 100644 index 00000000..f4702997 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/.gitignore @@ -0,0 +1,13 @@ +App/build +App/Pods +App/output +App/App/public +DerivedData +xcuserdata + +# Cordova plugins for Capacitor +capacitor-cordova-ios-plugins + +# Generated Config files +App/App/capacitor.config.json +App/App/config.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App.xcodeproj/project.pbxproj b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App.xcodeproj/project.pbxproj new file mode 100644 index 00000000..bf705a81 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App.xcodeproj/project.pbxproj @@ -0,0 +1,408 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 48; + objects = { + +/* Begin PBXBuildFile section */ + 2FAD9763203C412B000D30F8 /* config.xml in Resources */ = {isa = PBXBuildFile; fileRef = 2FAD9762203C412B000D30F8 /* config.xml */; }; + 50379B232058CBB4000EE86E /* capacitor.config.json in Resources */ = {isa = PBXBuildFile; fileRef = 50379B222058CBB4000EE86E /* capacitor.config.json */; }; + 504EC3081FED79650016851F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 504EC3071FED79650016851F /* AppDelegate.swift */; }; + 504EC30D1FED79650016851F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 504EC30B1FED79650016851F /* Main.storyboard */; }; + 504EC30F1FED79650016851F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 504EC30E1FED79650016851F /* Assets.xcassets */; }; + 504EC3121FED79650016851F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 504EC3101FED79650016851F /* LaunchScreen.storyboard */; }; + 50B271D11FEDC1A000F3C39B /* public in Resources */ = {isa = PBXBuildFile; fileRef = 50B271D01FEDC1A000F3C39B /* public */; }; + A084ECDBA7D38E1E42DFC39D /* Pods_App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 2FAD9762203C412B000D30F8 /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = config.xml; sourceTree = ""; }; + 50379B222058CBB4000EE86E /* capacitor.config.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = capacitor.config.json; sourceTree = ""; }; + 504EC3041FED79650016851F /* App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = App.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 504EC3071FED79650016851F /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 504EC30C1FED79650016851F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 504EC30E1FED79650016851F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 504EC3111FED79650016851F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 504EC3131FED79650016851F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 50B271D01FEDC1A000F3C39B /* public */ = {isa = PBXFileReference; lastKnownFileType = folder; path = public; sourceTree = ""; }; + AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_App.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + AF51FD2D460BCFE21FA515B2 /* Pods-App.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.release.xcconfig"; path = "Pods/Target Support Files/Pods-App/Pods-App.release.xcconfig"; sourceTree = ""; }; + FC68EB0AF532CFC21C3344DD /* Pods-App.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.debug.xcconfig"; path = "Pods/Target Support Files/Pods-App/Pods-App.debug.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 504EC3011FED79650016851F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A084ECDBA7D38E1E42DFC39D /* Pods_App.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 27E2DDA53C4D2A4D1A88CE4A /* Frameworks */ = { + isa = PBXGroup; + children = ( + AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 504EC2FB1FED79650016851F = { + isa = PBXGroup; + children = ( + 504EC3061FED79650016851F /* App */, + 504EC3051FED79650016851F /* Products */, + 7F8756D8B27F46E3366F6CEA /* Pods */, + 27E2DDA53C4D2A4D1A88CE4A /* Frameworks */, + ); + sourceTree = ""; + }; + 504EC3051FED79650016851F /* Products */ = { + isa = PBXGroup; + children = ( + 504EC3041FED79650016851F /* App.app */, + ); + name = Products; + sourceTree = ""; + }; + 504EC3061FED79650016851F /* App */ = { + isa = PBXGroup; + children = ( + 50379B222058CBB4000EE86E /* capacitor.config.json */, + 504EC3071FED79650016851F /* AppDelegate.swift */, + 504EC30B1FED79650016851F /* Main.storyboard */, + 504EC30E1FED79650016851F /* Assets.xcassets */, + 504EC3101FED79650016851F /* LaunchScreen.storyboard */, + 504EC3131FED79650016851F /* Info.plist */, + 2FAD9762203C412B000D30F8 /* config.xml */, + 50B271D01FEDC1A000F3C39B /* public */, + ); + path = App; + sourceTree = ""; + }; + 7F8756D8B27F46E3366F6CEA /* Pods */ = { + isa = PBXGroup; + children = ( + FC68EB0AF532CFC21C3344DD /* Pods-App.debug.xcconfig */, + AF51FD2D460BCFE21FA515B2 /* Pods-App.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 504EC3031FED79650016851F /* App */ = { + isa = PBXNativeTarget; + buildConfigurationList = 504EC3161FED79650016851F /* Build configuration list for PBXNativeTarget "App" */; + buildPhases = ( + 6634F4EFEBD30273BCE97C65 /* [CP] Check Pods Manifest.lock */, + 504EC3001FED79650016851F /* Sources */, + 504EC3011FED79650016851F /* Frameworks */, + 504EC3021FED79650016851F /* Resources */, + 9592DBEFFC6D2A0C8D5DEB22 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = App; + productName = App; + productReference = 504EC3041FED79650016851F /* App.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 504EC2FC1FED79650016851F /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 0920; + TargetAttributes = { + 504EC3031FED79650016851F = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = 504EC2FF1FED79650016851F /* Build configuration list for PBXProject "App" */; + compatibilityVersion = "Xcode 8.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 504EC2FB1FED79650016851F; + packageReferences = ( + ); + productRefGroup = 504EC3051FED79650016851F /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 504EC3031FED79650016851F /* App */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 504EC3021FED79650016851F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 504EC3121FED79650016851F /* LaunchScreen.storyboard in Resources */, + 50B271D11FEDC1A000F3C39B /* public in Resources */, + 504EC30F1FED79650016851F /* Assets.xcassets in Resources */, + 50379B232058CBB4000EE86E /* capacitor.config.json in Resources */, + 504EC30D1FED79650016851F /* Main.storyboard in Resources */, + 2FAD9763203C412B000D30F8 /* config.xml in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 6634F4EFEBD30273BCE97C65 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-App-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 9592DBEFFC6D2A0C8D5DEB22 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-App/Pods-App-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 504EC3001FED79650016851F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 504EC3081FED79650016851F /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 504EC30B1FED79650016851F /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 504EC30C1FED79650016851F /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 504EC3101FED79650016851F /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 504EC3111FED79650016851F /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 504EC3141FED79650016851F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 504EC3151FED79650016851F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 504EC3171FED79650016851F /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FC68EB0AF532CFC21C3344DD /* Pods-App.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + INFOPLIST_FILE = App/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 1.0; + OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\""; + PRODUCT_BUNDLE_IDENTIFIER = com.dynamsoft.dbrjs; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 504EC3181FED79650016851F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AF51FD2D460BCFE21FA515B2 /* Pods-App.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + INFOPLIST_FILE = App/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.dynamsoft.dbrjs; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = ""; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 504EC2FF1FED79650016851F /* Build configuration list for PBXProject "App" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 504EC3141FED79650016851F /* Debug */, + 504EC3151FED79650016851F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 504EC3161FED79650016851F /* Build configuration list for PBXNativeTarget "App" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 504EC3171FED79650016851F /* Debug */, + 504EC3181FED79650016851F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 504EC2FC1FED79650016851F /* Project object */; +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/AppDelegate.swift b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/AppDelegate.swift new file mode 100644 index 00000000..c3cd83b5 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/AppDelegate.swift @@ -0,0 +1,49 @@ +import UIKit +import Capacitor + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + func applicationWillResignActive(_ application: UIApplication) { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. + } + + func applicationDidEnterBackground(_ application: UIApplication) { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. + } + + func applicationWillEnterForeground(_ application: UIApplication) { + // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. + } + + func applicationDidBecomeActive(_ application: UIApplication) { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + } + + func applicationWillTerminate(_ application: UIApplication) { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + } + + func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool { + // Called when the app was launched with a url. Feel free to add additional processing here, + // but if you want the App API to support tracking app url opens, make sure to keep this call + return ApplicationDelegateProxy.shared.application(app, open: url, options: options) + } + + func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { + // Called when the app was launched with an activity, including Universal Links. + // Feel free to add additional processing here, but if you want the App API to support + // tracking app url opens, make sure to keep this call + return ApplicationDelegateProxy.shared.application(application, continue: userActivity, restorationHandler: restorationHandler) + } + +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..adf6ba01dbe256605c5152ac1fd78ae99aaa2a8d GIT binary patch literal 110522 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 C`SD)> literal 0 HcmV?d00001 diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..9b7d382d --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,14 @@ +{ + "images" : [ + { + "filename" : "AppIcon-512@2x.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Contents.json b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Contents.json new file mode 100644 index 00000000..da4a164c --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json new file mode 100644 index 00000000..d7d96a67 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "splash-2732x2732-2.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "splash-2732x2732-1.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "splash-2732x2732.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png new file mode 100644 index 0000000000000000000000000000000000000000..33ea6c970f2df1db62a624a55e5bbcc4ee07bbdf GIT binary patch literal 41273 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 literal 0 HcmV?d00001 diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png new file mode 100644 index 0000000000000000000000000000000000000000..33ea6c970f2df1db62a624a55e5bbcc4ee07bbdf GIT binary patch literal 41273 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 literal 0 HcmV?d00001 diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png new file mode 100644 index 0000000000000000000000000000000000000000..33ea6c970f2df1db62a624a55e5bbcc4ee07bbdf GIT binary patch literal 41273 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 literal 0 HcmV?d00001 diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Base.lproj/LaunchScreen.storyboard b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..e7ae5d78 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Base.lproj/Main.storyboard b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Base.lproj/Main.storyboard new file mode 100644 index 00000000..b44df7be --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Base.lproj/Main.storyboard @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Info.plist b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Info.plist new file mode 100644 index 00000000..18184968 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Info.plist @@ -0,0 +1,51 @@ + + + + + NSCameraUsageDescription + Decoding barcodes from video needs to access your camera. + CFBundleDevelopmentRegion + en + CFBundleDisplayName + dbrjs capacitor + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/Podfile b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/Podfile new file mode 100644 index 00000000..bb7762ae --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/Podfile @@ -0,0 +1,24 @@ +require_relative '../../node_modules/@capacitor/ios/scripts/pods_helpers' + +platform :ios, '14.0' +use_frameworks! + +# workaround to avoid Xcode caching of Pods that requires +# Product -> Clean Build Folder after new Cordova plugins installed +# Requires CocoaPods 1.6 or newer +install! 'cocoapods', :disable_input_output_paths => true + +def capacitor_pods + pod 'Capacitor', :path => '../../node_modules/@capacitor/ios' + pod 'CapacitorCordova', :path => '../../node_modules/@capacitor/ios' + +end + +target 'App' do + capacitor_pods + # Add your Pods here +end + +post_install do |installer| + assertDeploymentTarget(installer) +end diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/capacitorApp.zip b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/capacitorApp.zip new file mode 100644 index 0000000000000000000000000000000000000000..b096bbdd221150faae215fe15795d4667be91196 GIT binary patch literal 488880 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
  • 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 vnZJ4A;x=Cu zpNhbVCrO0=Ue>Gv#0NI8fREAo%}2Hu@PY8_>!PSBb?Z}^&}?hMJaS4Gve4foC{1^Gq>_xVvBNGnF6M;Usuf3GYt z5$iNp_F9e-0K6_|`JBE0QSrt(Gxr|!VyU8Qt7CyseezhV0=~5d5>u`U`xfY_;qSJj zFv2PdH4A`NAR@-%jww6bvn>$r+Mc}ttI@xdO;Ef$uK=bi-a#=?Cz2XPIi239bDEb` zea8p)IrH!8fD%B#%7MItt__;Y7N{O-x27^&At%{KKGM+$;e(_BJs58qN&Cfd)H;DM z7{s%v3lBz!lE~R9Qa=G=!cgQrR2xFO3C+ekFlUye$n9jjP7BC`<+ojW!2lV_Znp0~ z+=#z|h&d0o=_=0;>MNksuBbqbljm8Y6?{?z34HI_zw-mCnIPaLq1SSE3Hu|!2srP`=R@xMixm6 zKJ{&foHZhu;ZT@J_bd|1H6?Q`PORKPDX7`lj~GPgabX!`qDk}BVN-F*Oyfs?4H~P zcBTTa#-7z)4GZ+~qZMTkul@ek`bI0}BTa);B;wv<*j|2xD$i9~F!Ni#X47KMHXd%T zx7vuN74IN(a|q8N(JKi)OsyGoy}fyV`}%5@H>qEiZ?ek_9p!!e=vQQgfo?Pi5#-zD zRaso*757X-C~%sMA&lFAdo=78t^I6u

    ?u-lKCpT74 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 literal 0 HcmV?d00001 diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/package.json b/barcode-scanner-api-samples/scan-single-barcode/capacitor/package.json new file mode 100644 index 00000000..24dd4df7 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/package.json @@ -0,0 +1,24 @@ +{ + "name": "dbrjs-capacitor", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "build": "tsc && rollup -c", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "@capacitor/android": "^7.4.2", + "@capacitor/cli": "^7.4.2", + "@capacitor/core": "^7.4.2", + "@capacitor/ios": "^7.4.2", + "@rollup/plugin-node-resolve": "^15.3.0", + "@rollup/plugin-typescript": "^12.1.1", + "dynamsoft-barcode-reader-bundle": "11.0.6000", + "rollup": "^4.24.0", + "tslib": "^2.8.0", + "typescript": "^5.6.3" + } +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/public/index.html b/barcode-scanner-api-samples/scan-single-barcode/capacitor/public/index.html new file mode 100644 index 00000000..22685d65 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/public/index.html @@ -0,0 +1,21 @@ + + + + + + + Dynamsoft Barcode Reader Sample - Hello World (Decode via Camera) + + + +

    Hello World (Scan One Single Barcode via Camera)

    +
    + + + + + + + + + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/rollup.config.mjs b/barcode-scanner-api-samples/scan-single-barcode/capacitor/rollup.config.mjs new file mode 100644 index 00000000..dab19334 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/rollup.config.mjs @@ -0,0 +1,28 @@ +import fs from 'fs/promises'; +import typescript from "@rollup/plugin-typescript"; +import { nodeResolve } from "@rollup/plugin-node-resolve"; + +// https://rollupjs.org/guide/en/#configuration-files +export default async() => { + await fs.mkdir("./dist", { recursive: true, force: true }); + fs.cp("./public/", "./dist/", { recursive: true, force: true }) + return [ + { + input: "./index.ts", + plugins: [ + typescript({ + tsconfig: "./tsconfig.json" + }), + nodeResolve({ + exportConditions: ["browser", "default", "module", "import"], + }), + ], + output: [ + { + file: "./dist/index.js", + format: "umd", + }, + ], + }, + ]; +}; diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/tsconfig.json b/barcode-scanner-api-samples/scan-single-barcode/capacitor/tsconfig.json new file mode 100644 index 00000000..35e8318a --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/capacitor/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "es2017", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "module": "ESNext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + } +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/electron/README.md b/barcode-scanner-api-samples/scan-single-barcode/electron/README.md new file mode 100644 index 00000000..12573415 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/electron/README.md @@ -0,0 +1,17 @@ +# 📦 Scan Single Barcode - Electron + +This sample demonstrates how to use the `BarcodeScanner` API from the [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/overview/javascript/) in a **Electron** app to scan a single barcode using the camera. + +## ✨ Features + +- Easy integration with pre-built UI +- Renders barcodeScanner inside a container +- Scans one barcode at a time from video + +## 📌 Customization + +Please refer to sample [`scan-multiple-barcodes`](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes) or check the official [documentation](https://dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/barcode-scanner-customization.html). + +## 📄 Support + +If you have any questions, feel free to [contact Dynamsoft Support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/barcode-scanner-api-samples/scan-single-barcode/electron/action.js b/barcode-scanner-api-samples/scan-single-barcode/electron/action.js new file mode 100644 index 00000000..5b6f0295 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/electron/action.js @@ -0,0 +1,22 @@ +// Configuration object for initializing the BarcodeScanner instance. Refer to https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/api-reference/barcode-scanner.html#barcodescannerconfig +let config = { + license: "DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", // Replace with your Dynamsoft license key + container: document.querySelector(".barcode-scanner-view"), // Specify where to render the scanner UI + + // showUploadImageButton: true, + // scannerViewConfig: { + // showFlashButton: true, + // cameraSwitchControl: "toggleFrontBack", + // }, +}; + +// Create a new instance of the Dynamsoft Barcode Scanner +const barcodeScanner = new Dynamsoft.BarcodeScanner(config); + +// Launch the scanner and handle the scanned result +barcodeScanner.launch().then((result) => { + // Display the first detected barcode's text in an alert + if (result.barcodeResults.length) { + alert(result.barcodeResults[0].text); + } +}); diff --git a/barcode-scanner-api-samples/scan-single-barcode/electron/index.html b/barcode-scanner-api-samples/scan-single-barcode/electron/index.html new file mode 100644 index 00000000..5e734485 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/electron/index.html @@ -0,0 +1,61 @@ + + + + + + + + Dynamsoft Barcode Scanner Sample - Hello World (Decode via Camera) + + + + +

    + Hello World (Scan One Single Barcode via Camera) +

    + +
    + + + + + + + + + + + + diff --git a/barcode-scanner-api-samples/scan-single-barcode/electron/main.js b/barcode-scanner-api-samples/scan-single-barcode/electron/main.js new file mode 100644 index 00000000..452d42f9 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/electron/main.js @@ -0,0 +1,29 @@ +const { app, BrowserWindow } = require("electron"); + +function createWindow() { + const win = new BrowserWindow({ + width: 800, + height: 600, + webPreferences: { + nativeWindowOpen: true, + }, + }); + + win.loadFile("index.html"); +} + +app.whenReady().then(() => { + createWindow(); + + app.on("activate", () => { + if (BrowserWindow.getAllWindows().length === 0) { + createWindow(); + } + }); +}); + +app.on("window-all-closed", () => { + if (process.platform !== "darwin") { + app.quit(); + } +}); diff --git a/barcode-scanner-api-samples/scan-single-barcode/electron/package.json b/barcode-scanner-api-samples/scan-single-barcode/electron/package.json new file mode 100644 index 00000000..afc17b89 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/electron/package.json @@ -0,0 +1,26 @@ +{ + "name": "dbrjs-electron-sample", + "version": "1.2.0", + "description": "How to read barcodes from a video input in an Electron App", + "main": "main.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "electron ." + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Dynamsoft/barcode-reader-javascript-samples.git" + }, + "author": "Dynamsoft", + "license": "ISC", + "bugs": { + "url": "https://github.com/Dynamsoft/barcode-reader-javascript-samples/issues" + }, + "homepage": "https://github.com/Dynamsoft/barcode-reader-javascript-samples#readme", + "devDependencies": { + "electron": "^26.4.1" + }, + "dependencies": { + "dynamsoft-barcode-reader-bundle": "11.0.6000" + } +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/electron/style.css b/barcode-scanner-api-samples/scan-single-barcode/electron/style.css new file mode 100644 index 00000000..917e0cc1 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/electron/style.css @@ -0,0 +1,6 @@ +#results { + width: 100%; + height: 10vh; + overflow: auto; + white-space: pre-wrap; +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/es6.html b/barcode-scanner-api-samples/scan-single-barcode/es6.html new file mode 100644 index 00000000..741ad42e --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/es6.html @@ -0,0 +1,88 @@ + + + + + + + + Dynamsoft Barcode Scanner Sample - Hello World (Decode via Camera) + + + + +

    + Hello World (Scan One Single Barcode via Camera) +

    + +
    + + + + + + + + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/hello-world.html b/barcode-scanner-api-samples/scan-single-barcode/hello-world.html index fc0ade20..019ad007 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/hello-world.html +++ b/barcode-scanner-api-samples/scan-single-barcode/hello-world.html @@ -7,13 +7,49 @@ Dynamsoft Barcode Scanner Sample - Hello World (Decode via Camera) + + + +

    + Hello World (Scan One Single Barcode via Camera) +

    + +
    + + + - - - -

    - Hello World (Scan One Single Barcode via Camera) -

    - -
    - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/native-ts/README.md b/barcode-scanner-api-samples/scan-single-barcode/native-ts/README.md new file mode 100644 index 00000000..eb7d5663 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/native-ts/README.md @@ -0,0 +1,26 @@ +# 📦 Scan Single Barcode - Typescript + +This sample demonstrates how to use the `BarcodeScanner` API from the [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/overview/javascript/) in a **Typescript** app to scan a single barcode using the camera. + +## ✨ Features + +- Easy integration with pre-built UI +- Renders barcodeScanner inside a container +- Scans one barcode at a time from video + +## 🚀 Quick Start + +```bash +npm install +npm run build +``` + +Open `dist/index.html` in your browser. + +## 📌 Customization + +Please refer to sample [`scan-multiple-barcodes`](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes) or check the official [documentation](https://dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/barcode-scanner-customization.html). + +## 📄 Support + +If you have any questions, feel free to [contact Dynamsoft Support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/barcode-scanner-api-samples/scan-single-barcode/native-ts/index.ts b/barcode-scanner-api-samples/scan-single-barcode/native-ts/index.ts new file mode 100644 index 00000000..0a4fef73 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/native-ts/index.ts @@ -0,0 +1,35 @@ +import { BarcodeScanner, BarcodeScannerConfig } from "dynamsoft-barcode-reader-bundle"; + +// Configuration object for initializing the BarcodeScanner instance +const config: BarcodeScannerConfig = { + license: "DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", // Replace with your Dynamsoft license key + + // Specify where to render the scanner UI + // If container is not specified, the UI will take up the full screen + container: document.querySelector(".barcode-scanner-view") as HTMLElement, // Specify where to render the scanner UI + + // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. + uiPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.0.6000/dist/barcode-scanner.ui.xml", + + // showUploadImageButton: true, + // scannerViewConfig: { + // showFlashButton: true, + // cameraSwitchControl: "toggleFrontBack", + // }, + + // Specify custom paths for the engine resources + engineResourcePaths: { + rootDirectory: "https://cdn.jsdelivr.net/npm/", + }, +}; + +// Create a new instance of the Dynamsoft Barcode Scanner +const barcodeScanner = new BarcodeScanner(config); + +(async()=>{ + // Launch the scanner; once a barcode is detected, display its text in an alert + let result = await barcodeScanner.launch(); + if (result.barcodeResults.length) { + alert(result.barcodeResults[0].text); + } +})(); diff --git a/barcode-scanner-api-samples/scan-single-barcode/native-ts/package.json b/barcode-scanner-api-samples/scan-single-barcode/native-ts/package.json new file mode 100644 index 00000000..05ca7796 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/native-ts/package.json @@ -0,0 +1,20 @@ +{ + "name": "dbrjs-capacitor", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "build": "tsc && rollup -c", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "@rollup/plugin-node-resolve": "^15.3.0", + "@rollup/plugin-typescript": "^12.1.1", + "dynamsoft-barcode-reader-bundle": "11.0.6000", + "rollup": "^4.24.0", + "tslib": "^2.8.0", + "typescript": "^5.6.3" + } +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/native-ts/public/index.html b/barcode-scanner-api-samples/scan-single-barcode/native-ts/public/index.html new file mode 100644 index 00000000..292324a8 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/native-ts/public/index.html @@ -0,0 +1,17 @@ + + + + + + + Dynamsoft Barcode Reader Sample - Hello World (Decode via Camera) + + + +

    Hello World (Scan One Single Barcode via Camera)

    +
    + + + + + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/native-ts/rollup.config.mjs b/barcode-scanner-api-samples/scan-single-barcode/native-ts/rollup.config.mjs new file mode 100644 index 00000000..dab19334 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/native-ts/rollup.config.mjs @@ -0,0 +1,28 @@ +import fs from 'fs/promises'; +import typescript from "@rollup/plugin-typescript"; +import { nodeResolve } from "@rollup/plugin-node-resolve"; + +// https://rollupjs.org/guide/en/#configuration-files +export default async() => { + await fs.mkdir("./dist", { recursive: true, force: true }); + fs.cp("./public/", "./dist/", { recursive: true, force: true }) + return [ + { + input: "./index.ts", + plugins: [ + typescript({ + tsconfig: "./tsconfig.json" + }), + nodeResolve({ + exportConditions: ["browser", "default", "module", "import"], + }), + ], + output: [ + { + file: "./dist/index.js", + format: "umd", + }, + ], + }, + ]; +}; diff --git a/barcode-scanner-api-samples/scan-single-barcode/native-ts/tsconfig.json b/barcode-scanner-api-samples/scan-single-barcode/native-ts/tsconfig.json new file mode 100644 index 00000000..35e8318a --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/native-ts/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "es2017", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "module": "ESNext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + } +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/pwa/README.md b/barcode-scanner-api-samples/scan-single-barcode/pwa/README.md new file mode 100644 index 00000000..c55a68fd --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/pwa/README.md @@ -0,0 +1,17 @@ +# 📦 Scan Single Barcode - PWA + +This sample shows how to integrate the `BarcodeScanner` API from the [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/overview/javascript/) into a **PWA** application to scan a single barcode from video. + +## ✨ Features + +- Easy integration with pre-built UI +- BarcodeScanner instance created in a component +- Scans one barcode at a time from video + +## 📌 Customization + +Please refer to sample [`scan-multiple-barcodes`](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes) or check the official [documentation](https://dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/barcode-scanner-customization.html). + +## 📄 Support + +If you have any questions, feel free to [contact Dynamsoft Support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/barcode-scanner-api-samples/scan-single-barcode/pwa/dynamsoft-192x192.png b/barcode-scanner-api-samples/scan-single-barcode/pwa/dynamsoft-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..e02348bebe310ace87fe77d58e4e76dc581da970 GIT binary patch literal 6638 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 literal 0 HcmV?d00001 diff --git a/barcode-scanner-api-samples/scan-single-barcode/pwa/dynamsoft-512x512.png b/barcode-scanner-api-samples/scan-single-barcode/pwa/dynamsoft-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..1e0ec7dc683f5f9d9208e4e2faf5ab12a46bba67 GIT binary patch literal 9938 zcmeHtd05if`!?20HZ|omPMMYAz<0FLL|k&msaz{{)Z7sjk7erLt01<)T$7cEd{&?s8_r2ch8m^0r&-q;EIp;a&+~?fS z{T$MNa<<>LWzQB62(-=7!Nv^)+5kLm0Bzm`{46JYSOtERaBlX;K-8{%JfQGJ_)({$ zAkfpCt!u$w0_Cq_9DHyf(Dpa$U!^>q?R$Zj>T$N-aqif#IDBv{8gw)i8-mt!j1CS* zyP<61#2cmM`3X0 z309EL?V1D6>#t!D&CgZhBCQ~QIOXm1ljd=3ELzi8&-gG(A8w>+Vx|W-h8vl}bu|t2 z;f64MLm1rfFxw)CjOKca!6DfAI4cO?=^sOg zj`_P;4DQcq0wxTW5F7)8>*=o#>92}TPXG6+(b0d`#>Kgz|LgDnv0>cl#27Tp4UNOb z$D)9R3xlqA6=Qxp79AXijXjOUM*TI5Kb^tGVR2`$F`CDZYaZ~5z=UG)xPzaoJ2{y< zVsLT67!=yk#tH&7pcfGlYHq79y-U)TS&&VRiEz_b4NH)?^x-?&F(0IVrVgosKp~PbUP`;P2E<>cE=;P z4#=^iUtDmtvvH+pR(jqDcKz|df9fRSdTqw$r?p(IZ4Z`ZDTQ2V{nH;JVsWYrE}khV z=$qf*4my82$xaLO%T?e|`05}C^vf^*KKwfg|03c4*)FKQqP9D6?|Hqu37;I{E~XzN z;nLOBknCPeEs7`|Dt0Z<`BDKXsMEQoKO{51xZvE` zQ{K0|l|bh&JpqAEy&K}lneg)Z#rAv@VKEn+Q#XX6HC=j;z7qs;Xx##O`9%Rq{v|xe zd|C$2%<~E~o3vGXn?5i!v{&_pmL~|L`MnMZq-vzE{|!#e7GIT&rm8esu8gLl_9u=f z1D*g){NV|lFm)W9ohTaMzOj@o_k>{Rk}&wqBaJE?cLrP`Pui~1i?fNG*fwo)!>_tf zHy3d3$72y*plq|r`*1LE}|nLi4@fM$XfD=qnWc09h5YstliAbK~!%9u`PIQsOR z>GXn}^nof#2dXlvavcv30+jj_xd9=F<#)&7MN!GK9*i63mfwRjzM2n>;GB!-e6>|> zJegozuu*@xqr4?bA+OJO_bp4>1y$5`SMg4wL>TdneBFT01K;xU+gQ;+xV^LK$4i@E z<~|^>J6kUamwS0ZD{_t%T+E(-lO+!jinc)oP2G0ui+OkByO`}i4uFFs6E|~wsEQ(M z60tMgTu_fgQ5!^qa3!sdm+Hwa`-m}toz6)|1`dY_aGY;&CpZ~!U!5{l+zG`A;Xc$< zhRcVg+TxZON_dAXMAR^_kC$=ms8 z<%(F1nB3a>2M8Tek(?I|SK5V?@l!^Z$ve-d$-k+}m3y%)Hr9A@jKXT4fOPl%F~}cN zd%cj*%E{Z2c748)Wvx|(!Y2;#1X3Qb2$AH+?!|Vu{fQFvj`NPJ9>3zY(KT}lWgQk< zeoVCo7l0!wN0Ruqfh(`oY;F(7^}HodV=hf(UwYZoIA4TGKXpsdVvgEY3vCn!fNw2M z6-`_6N;D+9C?Cz`t~!YOT?tMB51dmy74182IIp90{LuL;rJz7z2?0eM-N-IzT73W` zm`$c@7k*dO#w#XiPfp&!?yp*Ti=|%kp&pqEy??Dx9VZjAat6l9_WRQl-x@Qr2OJZ9 zXDS-A@*5h2{B(5nCl*8Q)amT$7u}oBOzgsi>=KV8V>_3+q`{qhDorn}E-6IV>y=s8 zxZUE7<^0QyAj{y|I1K&C zJ&{j#;Og5Mic(~+S591I_X(k}zvp4E0`oJ6Aa1&AC4G|53iPvfX=hKh2OPi;Kcx>% zAfz9{Q}J$eF!!#z;G}CIUd%x%EP6{kClZ-Mh)KG%&sqgQoOA-7#=X|5jL9@xeX)FK z@0%%~>a(UW+^T*Q(?pMR(Nuuk2OsG``v3u z!2|2H{#1DKku_RU_At6Ue5?TF{9&FgTso6bA+OWBq9+mOH>$u^ODH1@0R+mvuuR4o*giOSU0@pzx~i2IE7M%S0n(TgkKHv7-_wT3!=-g-Vt`Qtm! zmlMk9Cp`z$ers#fF4~P-UFN|vRfrXsd2XQ}I5DoWLl2fM;kkhKR<%jEEPH)>4WT^0 z;7N@y;gWH9mjvFCeHF*;x|TR~ul(9T8+7dw$4B%%5wxted(rnSQE77-W`R28{)|FNUoG8iG7?FfY6*U_7h4aXyr8^) zUsY~d&ETQQgT*P($;)bi-!0{%5PPbgoHiOj<*Z_&z*27+vB@XAKx3&NWvx*)BxuP} zXJ#g@EwnW0>Kte9A&&Otr{3JJfm@*_efcmFYA+{P)EkB|ae*4R%5Aa|dELGjN#k@4 zRCYxs{iY1xSt#UldEOg21dmQrWYG7%{9c_Xf<+&GHnL3ihO^OWzf?pO?%isk5)3~@ z=<$FLnIL!L=6{ExoNvpME=NvB!qUwiOn5Ip9(7e-CyP^yTV6gc?km5R2W4wbY%bro zuv0By`F_6rehC(CF%Z+Z4b@d>r4yD5BR)m^ir`Ufi|$v5M}(0#!SeaEkX(knZG7hCdkY{K0}Ffx$T|&19<%+Hw<&cyQ8DyI>!#vVrHM*uA77 zSmEY7{Vy()&k3ek833LUYM-_uS3)||SKnwO_E$aGmokGADheM}F8;jokuSMFJ$ zw%;|2b#D0)ue04LDZKuE;ZUEBf$EXPJ+jfug7g9U7zuSG!e7a>N{;ZtH}mZTOB_FD zM5bJFXj51pqo}>TJybnF>3KEc82IkeTz>9@YBvJ)gyI7C&9e>jALbuz{PCD4NGtKn z(d+K?ol8|kGXGAk0#8sod2o)#5<_&S1=wRD9P#9qdh_JU*yJ) zBRw}{aAZ`(uVz!f9S_kv2;jxF(~!9q*r|n^>`a%?#Tq-8+RhC|6gLltWF8JV7rXS< zq-7Y(utlZ&^+F7zI}PD9D3?1hnUoM_1Hoh8h~tC63Iz91y`afg?q=GXEA_SPLC z1&R0}+pQClJ2App*YZbsRnnF{rm~&zH1G>(SZz{~*hM%zR|dCGUvZX6@A;SM``CGb zFps?;9qp|YA1b{)Z2F$C?yx7QaL@jDkb{Gg_ldF>(x>21>lt`XV634!kzCLZ=>4A_hxY*rZ77A@k z@(K?rR&uaemeK)cb{s#;Fw9Qtq{KX9dOGb8j3nuROf2XybJGWLOe^RFpDHq$3d>17 zYn^(?gp+cTk}Coecd4^?lpke2q}eCc65J`(T{UE_<2Q+>27w#7bYnLSNsf4m(LIfX zcfViUy1(Plm{DBs0$C)if@qY@XPGy+^Op}Ji)S|XQ|ggIGb)-oKFsy*kuvQ(t7oD5EDunNn?bv+iV9?wVXI^w^TN&#mb4NZeeT7h^RqzrZu| z3ei_!sK0y%3mmV!DEX^QK0#-YVGRq@CeZq%!C7;=`(KSt2tB@;<#$~jC@XwB%^FUw zH9s&p<$O*fuyKDOQt-$$g`b1kE~^|t2Gy5tlPP~-O8X88ncPQYz9MaCBfP^^F={4U z3SN1Y2)E!3$(G=LkvTJ_W{V`{va=rd43@pKK1#$bQNlipm2H7O3SuNj-y%%g%I^dB z$K~16MaT6mm(O&1R)71`t(ViAb6eJlngY_DsNoQ44!LJtWR>Oe*Zw4#kgPR?kq)zev9*!h=GNu3(ix7>c$~e~vR~%aZU)hzJ`bU^gPeY>9QNBN-?77IHFC&W{#`&#! zx;fqs!JKX-El)Ar0;`Y_?A1ZpqTsM;Yw}>d!Fzk~wK%r|Rd@7^$7a>Om`nc8u%4`P&I*)wy)t8Zva69)Q@v8(3)~YxQs(ChXQ?vY>oTBSE)acX0HbLk6{V`);TWuWjjDUn_DAmw(vb&N}aXKdQH-e)Enkx**egIWoJ@!L77VW z>EwAYU>Te#`+^mDXImIwMsQZg9CAlyIlCU8+qF+TcX8}p?GVYXJ#yaZ$|TWbL+;V_ zIQ+Zw#p#&xP5Bn$)mCpOz(1=mN}^uyw8+J!z%I6O3#7r2UXGHbvoL98k!*~eENCEO ziA&d8?Gdr3E?q9&E?0}6Jj$FbziPAxW50>7bi}|Xe9SsvIFVaGo+e5?N;FnW zQs!_)Il};D@7RSIzq^!OQot`+j;bS3{8DeGRCG;%Gj->72oO_esZ&4>2 zRtBf&zaF1Xe&tH;GpxyqD_xg4FU2b9 z*9+E~OYy6Gh`UO@29KkVx;RLdrVGEApnq}lLo0i66)9u4e%RQRkwwf_{&27;Jo55c z7JagGQ;_T59#{-G6(J6HxAn80U}>{84!O~_>?4&=O6EemC*B=Ls!GZgs{)4}=VV(f z7JDhZq+D%^!++xtSyl#R@1YB>0FEG4*M%D;a)K!Cr7wG|dM1Rl7g_hVBQ{OQB@;_J z3L2%OK_2{fpAmzl3c7SI(^AxrA}21%zu|>e_j+c2rZnA1Dj>33BLkOSI204UZ8ir) zG6XD}vWE;%vlF^ci*u2`$Qu|t9?z8{=bm!%rs?9X1_`eic7s4zrqt~62euqVq2PmE z`EY3W_+kevr}K^ptlKeOpg5FEFrgI>0u1qOqI5`MW?*W%n@6c{CIJF8dmkXhp+iws zP86O@y_ih<;)awjMkpG{3w!FPT3Z3JlpSZVHqVZ?qe6BQM{Ben`UmKnGP>MDS6&VA zvr???7jcR(kC$5RK-^0#X6icjXFC4rPTy?6K*qGSMhgj%^d^wHWokT`b7yDWLNmwS zJi@$qlsA19I`9DNCIel z*burge7|@2q)t&j*&19wf3@{jPfyKFUH!#fcw|6v3K58B3w)IAAAYT8x>~*=^H1bE zisl|Yp<>`bjx9R(B;w7~z|0Gj-;08}I$j)rt(nBgXEZqw)1qY@VV+_6v~jLOOC z?deesZaY&}?Li@N1U9~Wj9P?2iXc9IuKtjLXJmsqS!*^?p{h<-G`Ie05GVA4I{B7j z_uQ%+E{P9^VX=>|(n}K`G6l+@{=*xmnnWTN{v@za#2BY;(?R>b|h8Z2cSymSoK)8g^gCpjEob9e^s1$j;2v3U)>8SxDH*l z67@s7Ljg&eQxUUu|6(grJ>@^$^o8NpQFM!q9TQ{CeY+krK{c+;sJ)|&(V$LO!1af_ z9hu84+uL7rOiTbY-RdU}r`c||Uc0(^Yw@3I-^0`Ahi*!}$WlaHD~PJ@ zy+KYNK~w#|{3);lTpnF>Yrl`@8qbB4bjK?)| z)YNGxq*T-aae6^d4oZIHtlZGEJ^k4Yq+vIO&^XgNs>0c!&W6Wa9Ap)#tDExU$p??; z^hUg+HPRsW@yaO~@yWvOg!0%!+47wGP;5dYAKKJ;tJuDIq+vPRVlL}?k>bLI3!5_^ z{^@gRIo;d+a6!z&>QyW+PUuA?!hdmHn(RP#+Y_HE2vWZI^N!|-iEYrb-XrO81}RJ|WR@RhXC8sH*6Ds^-bf;cOT2FC zK6|)4x47U?JGex>3dC%tm6h96mq@bTR=dvh=oBb zePGr>9c^?ID&ZCLOy2f(LG5RXJyl?CY#`#M0O9D>yD5t%5ZeJ>?qzo%&v&nH-X`!j zpG`CMOL}l{($u~DlPBT@vUUl#NDcS1;3fX`SIBj>s@Pf81{_V`rHfmMyK(hgm9;s% zkYA*%5$Dk9e1ebQ1B&^{;M(h9Jcj^BE@U*I5TgFqNR`91g#ujH0G#E+O)sO@bM`0K z>rQS|u>^8QiwmM5K`*?6E6qguYb<5xP=RQ)GIMl2CljWP#=n+{EHuNkdtIFY!Z$<# zO57aYatO&CNoE*?^(-ZdW>%%|BLu07@`*8Ht8AnqNw&s+cH1a!_OWoS2!%Sr8yNoq z?#Jvm2pg7QE=-@eh*@qp^Xk2DgO%Uf1aW(&L7WrenQ7bvHzeDObCPe!OfHm&;Vnrs zcN9M{;O}H3nt6R0LNSfRSzWkOxwc0bby{H#&acCEPCH-B>}Igq;C}op?9QL3N|HRH zrlwUx&XuMFxO=h>*eN>X7GeIgPrqpaBNei*v_B}im?R>)b9zwGUX1XtE-zVneCQ@J zP%(_D83==SXjr;fM34VG{?%V;!gDiEi?UAj$;9EE34s(pG?$ScXjSp-Q291YgRqaR zHDUb5uq$8P3`mPYd&!D~9JyiXIi)Avj)EJ?HoiKRPyqc)m&x~vNM>%L9cMl;M(gS| zd$%0(v7NFL94Rk19Md5G%nzVCE0^W5a^gy>7dMgV4bB;F$Rw7%;-qt=tN=1*yv`nT zbw>`aUT@RaWc!fFoMPYS*ntax40G z2aztdSHO4GBD#5rrX=~AL%fGuo{)uv84y;VIhdJ@&e0UG*ROrnslIz|<9sUk1M8#p z>eL#L+hiAzks2Bv?N*;U2pf*{|Ay$n_c)mVY0b9g{p#e|gxCa3Pj)!3@`x zQ#W1mRyqnhRi~FSqn9)>c2idC6__}YPn-2DA_q`u;L?3op5hhi*W3F9NIH1pOm)f{ z8_zi$Ho*L?&6wq{x>Ub3T`nDrB&k*%DCfJ}@nmGz0r}JB;i#%rsrMR?pvz1gimq+; z$JDKIV9d1G(~PAqSVmo+?^fisgZ75FN&nqd2are~_7uNV?3B=Ua++D(Bhi>xpv}L| z4DqzL&5OO<*56W|Qt#|_{<;7uNyxEWbm&}MXlMBmqwA+^h4FK}1&6hNAEuF3x{6w& zILQH>2WQD1zk13NYx^FR^XGiZ5u~u?Q;NdN0vMdPzm$QU_2cuILwGs1bL6l}mc*-6 z9U5M!B4=u&YHpO0Mv@98uk*{|wdq?}*QQTo%ulrv;O!a`I})44X_>B1)pzvT^9)-; z>Kep7H={# zB(K%znv=jRYT)ubrdy=p)}s*!Wq}#C3Oh zrOT1|(1Q$5wWp37ESvs3XnKZC=nHQhdIlys2HA=ro~MSyVl|xineDoiyxZCFUIb5m z0lqK1VT7cR!ONe2Du#!5&7`OZTcqt?)3h(0C-p9YED4|S1l$2k&{vvZO_n^$DxE!6 zJ(46Oe&XK6d7c72`g}R{-T4Rp)v101P0^4Mh5SAQG@tO7_P~T?$kEo>hI%aM;{O0-etMGt literal 0 HcmV?d00001 diff --git a/barcode-scanner-api-samples/scan-single-barcode/pwa/helloworld-pwa.html b/barcode-scanner-api-samples/scan-single-barcode/pwa/helloworld-pwa.html new file mode 100644 index 00000000..a4e47410 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/pwa/helloworld-pwa.html @@ -0,0 +1,98 @@ + + + + + + + + Dynamsoft Barcode Reader PWA Sample - Hello World (Decode via Camera) + + + + + + + + + + + + +

    + Hello World (Scan One Single Barcode via Camera) +

    + +
    + + + + + + + + + + + + + diff --git a/barcode-scanner-api-samples/scan-single-barcode/pwa/helloworld-pwa.json b/barcode-scanner-api-samples/scan-single-barcode/pwa/helloworld-pwa.json new file mode 100644 index 00000000..1c6c8e42 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/pwa/helloworld-pwa.json @@ -0,0 +1,22 @@ +{ + "name": "Dynamsoft Barcode Reader Progressive Web App", + "short_name": "DBR-PWA", + "description": "Progressive Web App that reads barcodes from a video input with Dynamsoft Barcode Reader.", + "start_url": "./helloworld-pwa.html", + "scope": ".", + "display": "standalone", + "theme_color": "#B12A34", + "background_color": "#B12A34", + "icons": [ + { + "src": "./dynamsoft-512x512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "./dynamsoft-192x192.png", + "sizes": "192x192", + "type": "image/png" + } + ] +} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/pwa/service-worker.js b/barcode-scanner-api-samples/scan-single-barcode/pwa/service-worker.js new file mode 100644 index 00000000..3af6a731 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/pwa/service-worker.js @@ -0,0 +1,83 @@ +const engineResourcePaths = { + dbrBundle: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.0.6000/dist/", +}; + +// Files to cache +const cacheName = "helloworld-pwa"; +// Here we choose some files into appShellFiles to cache. +// To keep it simple, you can put all the files +// in "node_modules/dynamsoft-barcode-reader-bundle/dist" into the list. +const appShellFiles = [ + "./helloworld-pwa.html", + "./dynamsoft-192x192.png", + "./dynamsoft-512x512.png", + "./helloworld-pwa.json", + `${engineResourcePaths.dbrBundle}dbr.bundle.worker.js`, + `${engineResourcePaths.dbrBundle}dynamsoft-barcode-reader-bundle.js` + `${engineResourcePaths.dbrBundle}dynamsoft-barcode-reader-bundle.wasm`, + `${engineResourcePaths.dbrBundle}models/OneDDeblur.data`, + `${engineResourcePaths.dbrBundle}parser-resources/AADHAAR_Map.txt`, + `${engineResourcePaths.dbrBundle}parser-resources/AADHAAR.dcpres`, + `${engineResourcePaths.dbrBundle}parser-resources/AAMVA_DL_ID_WITH_MAG_STRIPE.dcpres`, + `${engineResourcePaths.dbrBundle}parser-resources/AAMVA_DL_ID.dcpres`, + `${engineResourcePaths.dbrBundle}parser-resources/AAMVA_Map.txt`, + `${engineResourcePaths.dbrBundle}parser-resources/GS1_AI_Map.txt`, + `${engineResourcePaths.dbrBundle}parser-resources/GS1_AI.txt`, + `${engineResourcePaths.dbrBundle}parser-resources/MRTD_Map.txt`, + `${engineResourcePaths.dbrBundle}parser-resources/MRTD_TD1_ID.dcpres`, + `${engineResourcePaths.dbrBundle}parser-resources/MRTD_TD2_FRENCH_ID.dcpres`, + `${engineResourcePaths.dbrBundle}parser-resources/MRTD_TD2_ID.dcpres`, + `${engineResourcePaths.dbrBundle}parser-resources/MRTD_TD2_VISA.dcpres`, + `${engineResourcePaths.dbrBundle}parser-resources/MRTD_TD3_PASSPORT.dcpres`, + `${engineResourcePaths.dbrBundle}parser-resources/MRTD_TD3_VISA.dcpres`, + `${engineResourcePaths.dbrBundle}parser-resources/SOUTH_AFRICA_DL_Map.txt`, + `${engineResourcePaths.dbrBundle}parser-resources/SOUTH_AFRICA_DL.dcpres`, + `${engineResourcePaths.dbrBundle}parser-resources/VIN_Map.txt`, + `${engineResourcePaths.dbrBundle}parser-resources/VIN.dcpres`, + `${engineResourcePaths.dbrBundle}templates/DBR-PresetTemplates.json`, + `${engineResourcePaths.dbrBundle}ui/barcode-scanner.ui.xml`, + `${engineResourcePaths.dbrBundle}ui/dce.ui.xml`, + `${engineResourcePaths.dbrBundle}ui/dls.license.dialog.html`, +]; + +// Installing Service Worker +self.addEventListener("install", (e) => { + console.log("[Service Worker] Install"); + e.waitUntil( + (async () => { + const cache = await caches.open(cacheName); + console.log(cache); + console.log("[Service Worker] Caching all: app shell and content"); + await cache.addAll(appShellFiles); + })() + ); +}); + +self.addEventListener("fetch", (e) => { + e.respondWith( + (async () => { + // Fetch cached response if exists + const cachedResponse = await caches.match(e.request); + console.log(`[Service Worker] Fetching resource: ${e.request.url}`); + if (cachedResponse) { + return cachedResponse; + } + + // Otherwise, fetch from network + const response = await fetch(e.request); + + if ( + e.request.method !== "POST" && + // Authorization requests should not be cached + !/https:\/\/.*?\.dynamsoft.com\/auth/.test(e.request.url) + // You can add other filter conditions + ) { + const cache = await caches.open(cacheName); + console.log(`[Service Worker] Caching new resource: ${e.request.url}`); + cache.put(e.request, response.clone()); + } + + return response; + })() + ); +}); diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/.gitignore b/barcode-scanner-api-samples/scan-single-barcode/react/.gitignore index a547bf36..b398d222 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/react/.gitignore +++ b/barcode-scanner-api-samples/scan-single-barcode/react/.gitignore @@ -22,3 +22,5 @@ dist-ssr *.njsproj *.sln *.sw? + +package-lock.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/README.md b/barcode-scanner-api-samples/scan-single-barcode/react/README.md index 14c86058..10f597f1 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/react/README.md +++ b/barcode-scanner-api-samples/scan-single-barcode/react/README.md @@ -19,7 +19,7 @@ npm install ### 2. Start the App ```bash -npm start +npm run dev ``` Then open http://localhost:3000/ to view the sample app. diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/eslint.config.js b/barcode-scanner-api-samples/scan-single-barcode/react/eslint.config.js deleted file mode 100644 index 092408a9..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/react/eslint.config.js +++ /dev/null @@ -1,28 +0,0 @@ -import js from '@eslint/js' -import globals from 'globals' -import reactHooks from 'eslint-plugin-react-hooks' -import reactRefresh from 'eslint-plugin-react-refresh' -import tseslint from 'typescript-eslint' - -export default tseslint.config( - { ignores: ['dist'] }, - { - extends: [js.configs.recommended, ...tseslint.configs.recommended], - files: ['**/*.{ts,tsx}'], - languageOptions: { - ecmaVersion: 2020, - globals: globals.browser, - }, - plugins: { - 'react-hooks': reactHooks, - 'react-refresh': reactRefresh, - }, - rules: { - ...reactHooks.configs.recommended.rules, - 'react-refresh/only-export-components': [ - 'warn', - { allowConstantExport: true }, - ], - }, - }, -) diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/package.json b/barcode-scanner-api-samples/scan-single-barcode/react/package.json index c89b82d1..aa2b87c1 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/react/package.json +++ b/barcode-scanner-api-samples/scan-single-barcode/react/package.json @@ -1,30 +1,29 @@ { - "name": "react", + "name": "dbr-react", "private": true, "version": "0.0.0", "type": "module", "scripts": { "dev": "vite", "build": "tsc -b && vite build", - "lint": "eslint .", "preview": "vite preview" }, "dependencies": { "dynamsoft-barcode-reader-bundle": "11.0.6000", - "react": "^19.0.0", - "react-dom": "^19.0.0" + "react": "^19.1.1", + "react-dom": "^19.1.1" }, "devDependencies": { - "@eslint/js": "^9.22.0", - "@types/react": "^19.0.10", - "@types/react-dom": "^19.0.4", - "@vitejs/plugin-react": "^4.3.4", - "eslint": "^9.22.0", + "@eslint/js": "^9.33.0", + "@types/react": "^19.1.10", + "@types/react-dom": "^19.1.7", + "@vitejs/plugin-react": "^5.0.0", + "eslint": "^9.33.0", "eslint-plugin-react-hooks": "^5.2.0", - "eslint-plugin-react-refresh": "^0.4.19", - "globals": "^16.0.0", - "typescript": "~5.7.2", - "typescript-eslint": "^8.26.1", - "vite": "^6.3.1" + "eslint-plugin-react-refresh": "^0.4.20", + "globals": "^16.3.0", + "typescript": "~5.8.3", + "typescript-eslint": "^8.39.1", + "vite": "^7.1.2" } -} \ No newline at end of file +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/src/App.css b/barcode-scanner-api-samples/scan-single-barcode/react/src/App.css deleted file mode 100644 index 96b0bca8..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/react/src/App.css +++ /dev/null @@ -1,34 +0,0 @@ -.barcode-scanner-hello-world-page { - width: 100%; - height: 100%; - text-align: center; -} - -.barcode-scanner-title { - height: 90px; - display: flex; - justify-content: center; - align-items: center; - padding: 20px 0; -} - -.barcode-scanner-title .barcode-scanner-title-logo { - width: 60px; - height: 60px; - animation: retate 5s infinite linear; -} - -.barcode-scanner-view { - width: 100%; - height: calc(100% - 90px); -} - -@keyframes retate { - from { - transform: rotate(0deg); - } - - to { - transform: rotate(360deg); - } -} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx b/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx index bb4d2088..4dd4fb84 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx +++ b/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx @@ -1,60 +1,65 @@ -import { useEffect, useRef } from "react"; -import reactLogo from "./assets/logo.svg"; -import { BarcodeScanner } from "dynamsoft-barcode-reader-bundle"; -import "./App.css"; +import { useEffect, useRef } from 'react'; +import { BarcodeScanner, type BarcodeScannerConfig } from "dynamsoft-barcode-reader-bundle"; + function App() { - const scannerViewRef = useRef(null); - const hasRun = useRef(false); - - useEffect(() => { - if (!hasRun.current) { - // Configuration object for initializing the BarcodeScanner instance - const config = { - license: "DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", // Replace with your Dynamsoft license key - container: scannerViewRef.current!, // Specify where to render the scanner UI - - // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. - uiPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.0.6000/dist/", - - // showUploadImageButton: true, - // scannerViewConfig: { - // showFlashButton: true, - // cameraSwitchControl: "toggleFrontBack", - // }, - - // Specify custom paths for the engine resources - engineResourcePaths: { - rootDirectory: "https://cdn.jsdelivr.net/npm/", - }, - } + const barcodeScannerViewRef = useRef(null); + const hasRun = useRef(false); // walkaround react strict mode + + useEffect(() => { + if(hasRun.current){ return; } // walkaround react strict mode - // Create an instance of the BarcodeScanner with the provided configuration - const barcodeScanner = new BarcodeScanner(config); + // Configuration object for initializing the BarcodeScanner instance + const config: BarcodeScannerConfig = { + license: "DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", // Replace with your Dynamsoft license key - // Launch the scanner; once a barcode is detected, display its text in an alert - barcodeScanner.launch().then((result) => { - if (result.barcodeResults.length) { - alert(result.barcodeResults[0].text); - } - }); - hasRun.current = true; + // Specify where to render the scanner UI + // If container is not specified, the UI will take up the full screen + container: barcodeScannerViewRef.current!, + + // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. + uiPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.0.6000/dist/ui/barcode-scanner.ui.xml", + + // showUploadImageButton: true, + // scannerViewConfig: { + // showFlashButton: true, + // cameraSwitchControl: "toggleFrontBack", + // }, + + // Specify custom paths for the engine resources + engineResourcePaths: { + rootDirectory: "https://cdn.jsdelivr.net/npm/", + }, } + + // Create an instance of the BarcodeScanner with the provided configuration + const barcodeScanner = new BarcodeScanner(config); + + (async ()=>{ + // Launch the scanner; once a barcode is detected, display its text in an alert + let result = await barcodeScanner.launch(); + if (result.barcodeResults.length) { + alert(result.barcodeResults[0].text); + } + })(); + + hasRun.current = true; + + //// We have bug in react strict mode. + //// It will be fixed in next version. + // return ()=>{ + // // Dispose of the barcode scanner when the component unmounts + // barcodeScanner?.dispose(); + // }; }, []); + return ( -
    - - - + + + + + + + + +
    -
    -

    Hello World for React

    - logo + <> +

    Barcode Scanner for React

    +
    - {/* This div will host the barcode scanner's camera view */} -
    -
    - ); + + ) } -export default App; +export default App diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/src/assets/logo.svg b/barcode-scanner-api-samples/scan-single-barcode/react/src/assets/logo.svg deleted file mode 100644 index 9dfc1c05..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/react/src/assets/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/src/index.css b/barcode-scanner-api-samples/scan-single-barcode/react/src/index.css deleted file mode 100644 index 8cff3329..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/react/src/index.css +++ /dev/null @@ -1,16 +0,0 @@ -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -html, -body { - width: 100%; - height: 100%; -} - -#root { - width: 100%; - height: 100%; -} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/src/main.tsx b/barcode-scanner-api-samples/scan-single-barcode/react/src/main.tsx index aa331f78..4aff0256 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/react/src/main.tsx +++ b/barcode-scanner-api-samples/scan-single-barcode/react/src/main.tsx @@ -1,5 +1,9 @@ +import { StrictMode } from 'react' import { createRoot } from 'react-dom/client' -import './index.css' import App from './App.tsx' -createRoot(document.getElementById('root')!).render() +createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.app.json b/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.app.json index 358ca9ba..227a6c67 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.app.json +++ b/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.app.json @@ -1,16 +1,16 @@ { "compilerOptions": { "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", - "target": "ES2020", + "target": "ES2022", "useDefineForClassFields": true, - "lib": ["ES2020", "DOM", "DOM.Iterable"], + "lib": ["ES2022", "DOM", "DOM.Iterable"], "module": "ESNext", "skipLibCheck": true, /* Bundler mode */ "moduleResolution": "bundler", "allowImportingTsExtensions": true, - "isolatedModules": true, + "verbatimModuleSyntax": true, "moduleDetection": "force", "noEmit": true, "jsx": "react-jsx", @@ -19,6 +19,7 @@ "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, + "erasableSyntaxOnly": true, "noFallthroughCasesInSwitch": true, "noUncheckedSideEffectImports": true }, diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.node.json b/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.node.json index db0becc8..f85a3990 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.node.json +++ b/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.node.json @@ -1,7 +1,7 @@ { "compilerOptions": { "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", - "target": "ES2022", + "target": "ES2023", "lib": ["ES2023"], "module": "ESNext", "skipLibCheck": true, @@ -9,7 +9,7 @@ /* Bundler mode */ "moduleResolution": "bundler", "allowImportingTsExtensions": true, - "isolatedModules": true, + "verbatimModuleSyntax": true, "moduleDetection": "force", "noEmit": true, @@ -17,6 +17,7 @@ "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, + "erasableSyntaxOnly": true, "noFallthroughCasesInSwitch": true, "noUncheckedSideEffectImports": true }, diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/vite.config.ts b/barcode-scanner-api-samples/scan-single-barcode/react/vite.config.ts index a14bb4d5..8b0f57b9 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/react/vite.config.ts +++ b/barcode-scanner-api-samples/scan-single-barcode/react/vite.config.ts @@ -4,5 +4,4 @@ import react from '@vitejs/plugin-react' // https://vite.dev/config/ export default defineConfig({ plugins: [react()], - base: "./" }) diff --git a/barcode-scanner-api-samples/scan-single-barcode/requirejs.html b/barcode-scanner-api-samples/scan-single-barcode/requirejs.html new file mode 100644 index 00000000..f5004617 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/requirejs.html @@ -0,0 +1,94 @@ + + + + + + + + Dynamsoft Barcode Scanner Sample - Hello World (Decode via Camera) + + + + +

    + Hello World (Scan One Single Barcode via Camera) +

    + +
    + + + + + + + + + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/.gitignore b/barcode-scanner-api-samples/scan-single-barcode/svelte/.gitignore new file mode 100644 index 00000000..b398d222 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/svelte/.gitignore @@ -0,0 +1,26 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +package-lock.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/README.md b/barcode-scanner-api-samples/scan-single-barcode/svelte/README.md new file mode 100644 index 00000000..ccb3dcaf --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/svelte/README.md @@ -0,0 +1,33 @@ +# 📦 Scan Single Barcode - Svelte + +This sample shows how to integrate the `BarcodeScanner` API from the [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/overview/javascript/) into a **Svelte** application to scan a single barcode from video. + +## ✨ Features + +- Easy integration with pre-built UI +- BarcodeScanner instance created in a Svelte component +- Scans one barcode at a time from video + +## 🚀 Quick Start + +### 1. Install Dependencies + +```bash +npm install +``` + +### 2. Run the App + +```bash +npm run dev +``` + +Then open http://localhost:5173/ to view the sample app. + +## 📌 Customization + +Please refer to sample [`scan-multiple-barcodes`](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes) or check the official [documentation](https://dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/barcode-scanner-customization.html). + +## 📄 Support + +If you have any questions, feel free to [contact Dynamsoft Support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/index.html b/barcode-scanner-api-samples/scan-single-barcode/svelte/index.html new file mode 100644 index 00000000..dce29517 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/svelte/index.html @@ -0,0 +1,12 @@ + + + + + + Dynamsoft Barcode Reader Sample - Hello World (Decode via Camera) + + +
    + + + diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/package.json b/barcode-scanner-api-samples/scan-single-barcode/svelte/package.json new file mode 100644 index 00000000..5534a71c --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/svelte/package.json @@ -0,0 +1,24 @@ +{ + "name": "dbrjs-svelte-sample", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "check": "svelte-check --tsconfig ./tsconfig.json" + }, + "dependencies": { + "dynamsoft-barcode-reader-bundle": "11.0.6000" + }, + "devDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.2", + "@tsconfig/svelte": "^5.0.2", + "svelte": "^4.2.12", + "svelte-check": "^3.6.6", + "tslib": "^2.6.2", + "typescript": "^5.2.2", + "vite": "^5.1.6" + } +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/src/App.svelte b/barcode-scanner-api-samples/scan-single-barcode/svelte/src/App.svelte new file mode 100644 index 00000000..5dd6d8bf --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/svelte/src/App.svelte @@ -0,0 +1,55 @@ + + +
    +

    Barcode Scanner for Svelte

    +
    +
    +
    diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/src/main.ts b/barcode-scanner-api-samples/scan-single-barcode/svelte/src/main.ts new file mode 100644 index 00000000..8c4eaed9 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/svelte/src/main.ts @@ -0,0 +1,7 @@ +import App from "./App.svelte"; + +const app = new App({ + target: document.getElementById("app")!, +}); + +export default app; diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/src/vite-env.d.ts b/barcode-scanner-api-samples/scan-single-barcode/svelte/src/vite-env.d.ts similarity index 53% rename from barcode-scanner-api-samples/scan-single-barcode/react/src/vite-env.d.ts rename to barcode-scanner-api-samples/scan-single-barcode/svelte/src/vite-env.d.ts index 11f02fe2..4078e747 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/react/src/vite-env.d.ts +++ b/barcode-scanner-api-samples/scan-single-barcode/svelte/src/vite-env.d.ts @@ -1 +1,2 @@ +/// /// diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/svelte.config.js b/barcode-scanner-api-samples/scan-single-barcode/svelte/svelte.config.js new file mode 100644 index 00000000..b0683fd2 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/svelte/svelte.config.js @@ -0,0 +1,7 @@ +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' + +export default { + // Consult https://svelte.dev/docs#compile-time-svelte-preprocess + // for more information about preprocessors + preprocess: vitePreprocess(), +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/tsconfig.json b/barcode-scanner-api-samples/scan-single-barcode/svelte/tsconfig.json new file mode 100644 index 00000000..5fb548f2 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/svelte/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "@tsconfig/svelte/tsconfig.json", + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "module": "ESNext", + "resolveJsonModule": true, + /** + * Typecheck JS in `.svelte` and `.js` files by default. + * Disable checkJs if you'd like to use dynamic types in JS. + * Note that setting allowJs false does not prevent the use + * of JS in `.svelte` files. + */ + "allowJs": true, + "checkJs": true, + "isolatedModules": true + }, + "include": ["src/**/*.ts", "src/**/*.js", "src/**/*.svelte"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/tsconfig.node.json b/barcode-scanner-api-samples/scan-single-barcode/svelte/tsconfig.node.json new file mode 100644 index 00000000..d02c37df --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/svelte/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "strict": true + }, + "include": ["vite.config.ts"] +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/vite.config.ts b/barcode-scanner-api-samples/scan-single-barcode/svelte/vite.config.ts new file mode 100644 index 00000000..2aeffabd --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/svelte/vite.config.ts @@ -0,0 +1,8 @@ +import { defineConfig } from 'vite' +import { svelte } from '@sveltejs/vite-plugin-svelte' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [svelte()], + base: "./" +}) diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/.gitignore b/barcode-scanner-api-samples/scan-single-barcode/vue/.gitignore index a547bf36..b398d222 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/.gitignore +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/.gitignore @@ -22,3 +22,5 @@ dist-ssr *.njsproj *.sln *.sw? + +package-lock.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/index.html b/barcode-scanner-api-samples/scan-single-barcode/vue/index.html index f91cce4c..6f337734 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/index.html +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/index.html @@ -2,7 +2,6 @@ - Dynamsoft Barcode Reader Sample - Hello World (Decode via Camera) diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/package.json b/barcode-scanner-api-samples/scan-single-barcode/vue/package.json index fc511e0b..e9ff9f84 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/package.json +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/package.json @@ -1,5 +1,5 @@ { - "name": "vue", + "name": "dbr-vue", "private": true, "version": "0.0.0", "type": "module", @@ -10,13 +10,13 @@ }, "dependencies": { "dynamsoft-barcode-reader-bundle": "11.0.6000", - "vue": "^3.5.13" + "vue": "^3.5.18" }, "devDependencies": { - "@vitejs/plugin-vue": "^5.2.2", + "@vitejs/plugin-vue": "^6.0.1", "@vue/tsconfig": "^0.7.0", - "typescript": "~5.7.2", - "vite": "^6.3.1", - "vue-tsc": "^2.2.8" + "typescript": "~5.8.3", + "vite": "^7.1.2", + "vue-tsc": "^3.0.5" } -} \ No newline at end of file +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/public/vite.svg b/barcode-scanner-api-samples/scan-single-barcode/vue/public/vite.svg deleted file mode 100644 index e7b8dfb1..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue b/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue index e11700c0..3a7f3dc5 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue @@ -1,18 +1,21 @@ - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/src/assets/vue.svg b/barcode-scanner-api-samples/scan-single-barcode/vue/src/assets/vue.svg deleted file mode 100644 index 770e9d33..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/src/assets/vue.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/src/main.ts b/barcode-scanner-api-samples/scan-single-barcode/vue/src/main.ts index 2425c0f7..01433bca 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/src/main.ts +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/src/main.ts @@ -1,5 +1,4 @@ import { createApp } from 'vue' -import './style.css' import App from './App.vue' createApp(App).mount('#app') diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/src/style.css b/barcode-scanner-api-samples/scan-single-barcode/vue/src/style.css deleted file mode 100644 index 051f6089..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/src/style.css +++ /dev/null @@ -1,16 +0,0 @@ -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -html, -body { - width: 100%; - height: 100%; -} - -#app { - width: 100%; - height: 100%; -} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.app.json b/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.app.json index 7fb078ce..3dbbc453 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.app.json +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.app.json @@ -7,6 +7,7 @@ "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, + "erasableSyntaxOnly": true, "noFallthroughCasesInSwitch": true, "noUncheckedSideEffectImports": true }, diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.node.json b/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.node.json index db0becc8..f85a3990 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.node.json +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.node.json @@ -1,7 +1,7 @@ { "compilerOptions": { "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", - "target": "ES2022", + "target": "ES2023", "lib": ["ES2023"], "module": "ESNext", "skipLibCheck": true, @@ -9,7 +9,7 @@ /* Bundler mode */ "moduleResolution": "bundler", "allowImportingTsExtensions": true, - "isolatedModules": true, + "verbatimModuleSyntax": true, "moduleDetection": "force", "noEmit": true, @@ -17,6 +17,7 @@ "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, + "erasableSyntaxOnly": true, "noFallthroughCasesInSwitch": true, "noUncheckedSideEffectImports": true }, diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/vite.config.ts b/barcode-scanner-api-samples/scan-single-barcode/vue/vite.config.ts index 4796231d..bbcf80cc 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/vite.config.ts +++ b/barcode-scanner-api-samples/scan-single-barcode/vue/vite.config.ts @@ -4,5 +4,4 @@ import vue from '@vitejs/plugin-vue' // https://vite.dev/config/ export default defineConfig({ plugins: [vue()], - base: "./" }) diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/.gitignore b/barcode-scanner-api-samples/scan-single-barcode/webview/android/.gitignore new file mode 100644 index 00000000..aa724b77 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/README.md b/barcode-scanner-api-samples/scan-single-barcode/webview/android/README.md new file mode 100644 index 00000000..5af39a6a --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/README.md @@ -0,0 +1,24 @@ +# Hello-world for Android WebView - Dynamsoft Barcode Reader Sample + +This sample demonstrates how to use the [Dynamsoft Barcode Reader](https://www.dynamsoft.com/barcode-reader/overview/) JS Edition in Android. + +If you want to learn how to use the Android Edition SDK in javascript, you can check [Android WebView Barcode Scanning](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/v9.x/android/JavaScript/WebViewBarcodeScanning). + +The Android Webview sample uses native APIs to handle some of the details of webview. If you want a framework, you can refer to the [capacitor sample](../../capacitor/). + +## 👓 Camera Permission + +Notice we add camera permission in `AndroidManifest.xml`. + +[app/src/main/AndroidManifest.xml](app/src/main/AndroidManifest.xml): +```xml + +``` + +## 📌 Customization + +Please refer to sample [`scan-multiple-barcodes`](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes) or check the official [documentation](https://dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/barcode-scanner-customization.html). + +## 📄 Support + +If you have any questions, feel free to [contact Dynamsoft Support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/.gitignore b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/.gitignore new file mode 100644 index 00000000..42afabfd --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/build.gradle b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/build.gradle new file mode 100644 index 00000000..33d838de --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/build.gradle @@ -0,0 +1,45 @@ +plugins { + id 'com.android.application' + id 'org.jetbrains.kotlin.android' +} + +android { + namespace 'com.dynamsoft.dbrjswebview' + compileSdk 33 + + defaultConfig { + applicationId "com.dynamsoft.dbrjswebview" + minSdk 19 + targetSdk 33 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = '1.8' + } +} + +dependencies { + + implementation 'androidx.core:core-ktx:1.7.0' + implementation 'androidx.appcompat:appcompat:1.4.1' + implementation 'com.google.android.material:material:1.5.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' + implementation 'androidx.webkit:webkit:1.4.0' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' +} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/proguard-rules.pro b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/proguard-rules.pro new file mode 100644 index 00000000..481bb434 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/AndroidManifest.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..f557697e --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/assets/decodeBarcodeInVideo.html b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/assets/decodeBarcodeInVideo.html new file mode 100644 index 00000000..019ad007 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/assets/decodeBarcodeInVideo.html @@ -0,0 +1,85 @@ + + + + + + + + Dynamsoft Barcode Scanner Sample - Hello World (Decode via Camera) + + + + +

    + Hello World (Scan One Single Barcode via Camera) +

    + +
    + + + + + + + + + + + + + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt new file mode 100644 index 00000000..8ecaf703 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt @@ -0,0 +1,105 @@ +package com.dynamsoft.dbrjswebview + +import android.Manifest +import android.annotation.SuppressLint +import android.content.pm.PackageManager +import android.net.Uri +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.webkit.* +import androidx.activity.result.contract.ActivityResultContracts +import androidx.annotation.RequiresApi +import androidx.core.content.ContextCompat +import androidx.webkit.WebViewAssetLoader +import androidx.webkit.WebViewClientCompat + +class MainActivity : AppCompatActivity() { + @SuppressLint("SetJavaScriptEnabled") + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + + val myWebView: WebView = findViewById(R.id.webview) + myWebView.settings.javaScriptEnabled = true + myWebView.settings.mediaPlaybackRequiresUserGesture = false + myWebView.settings.domStorageEnabled = true + + myWebView.webViewClient = MyWebViewClient() + myWebView.webChromeClient = MyWebChromeClient() + + myWebView.loadUrl("https://appassets.androidplatform.net/assets/decodeBarcodeInVideo.html") + } + + // Warning: If you use online url, you don't need `LocalContentWebViewClient` + // Refer: https://developer.android.com/develop/ui/views/layout/webapps/load-local-content?hl=en + private inner class MyWebViewClient : WebViewClientCompat() { + + private val assetLoader = WebViewAssetLoader.Builder() + .addPathHandler("/assets/", WebViewAssetLoader.AssetsPathHandler(this@MainActivity)) + .build() + + @RequiresApi(21) + override fun shouldInterceptRequest( + view: WebView, + request: WebResourceRequest + ): WebResourceResponse? { + return assetLoader.shouldInterceptRequest(request.url) + } + + // to support API < 21 + @Deprecated("Deprecated in Java") + override fun shouldInterceptRequest( + view: WebView, + url: String + ): WebResourceResponse? { + return assetLoader.shouldInterceptRequest(Uri.parse(url)) + } + } + + var cameraPermissionReq: PermissionRequest? = null + private inner class MyWebChromeClient : WebChromeClient() { + @RequiresApi(21) + override fun onPermissionRequest(request: PermissionRequest) { + if(request.resources.contains(PermissionRequest.RESOURCE_VIDEO_CAPTURE)){ + // Refer: https://developer.android.com/training/permissions/requesting + if(ContextCompat.checkSelfPermission( + this@MainActivity, + Manifest.permission.CAMERA + ) == PackageManager.PERMISSION_GRANTED){ + // You can use the API that requires the permission. + request.grant(arrayOf(PermissionRequest.RESOURCE_VIDEO_CAPTURE)) + }else{ + // You can directly ask for the permission. + // The registered ActivityResultCallback gets the result of this request. + this@MainActivity.cameraPermissionReq = request + requestCameraPermissionLauncher.launch(Manifest.permission.CAMERA) + } + }else{ + request.deny() + } + } + } + + // Refer: https://developer.android.com/training/permissions/requesting + @RequiresApi(21) + val requestCameraPermissionLauncher = registerForActivityResult( + ActivityResultContracts.RequestPermission() + ) { isGranted: Boolean -> + // Refer: https://www.dynamsoft.com/codepool/use-barcode-scanner-in-android-webview.html#set-up-webview + this@MainActivity.runOnUiThread { + if (isGranted) { + // Permission is granted. Continue the action or workflow in your + // app. + cameraPermissionReq?.grant(arrayOf(PermissionRequest.RESOURCE_VIDEO_CAPTURE)) + } else { + // Explain to the user that the feature is unavailable because the + // feature requires a permission that the user has denied. At the + // same time, respect the user's decision. Don't link to system + // settings in an effort to convince the user to change their + // decision. + cameraPermissionReq?.deny() + } + cameraPermissionReq = null + } + } +} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 00000000..2b068d11 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/drawable/ic_launcher_background.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 00000000..07d5da9c --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/layout/activity_main.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/layout/activity_main.xml new file mode 100644 index 00000000..7b58479b --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..eca70cfe --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 00000000..eca70cfe --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml new file mode 100644 index 00000000..6f3b755b --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..c209e78ecd372343283f4157dcfd918ec5165bb3 GIT binary patch literal 1404 zcmV-?1%vuhNk&F=1pok7MM6+kP&il$0000G0000-002h-06|PpNX!5L00Dqw+t%{r zzW2vH!KF=w&cMnnN@{whkTw+#mAh0SV?YL=)3MimFYCWp#fpdtz~8$hD5VPuQgtcN zXl<@<#Cme5f5yr2h%@8TWh?)bSK`O z^Z@d={gn7J{iyxL_y_%J|L>ep{dUxUP8a{byupH&!UNR*OutO~0{*T4q5R6@ApLF! z5{w?Z150gC7#>(VHFJZ-^6O@PYp{t!jH(_Z*nzTK4 zkc{fLE4Q3|mA2`CWQ3{8;gxGizgM!zccbdQoOLZc8hThi-IhN90RFT|zlxh3Ty&VG z?Fe{#9RrRnxzsu|Lg2ddugg7k%>0JeD+{XZ7>Z~{=|M+sh1MF7~ zz>To~`~LVQe1nNoR-gEzkpe{Ak^7{{ZBk2i_<+`Bq<^GB!RYG+z)h;Y3+<{zlMUYd zrd*W4w&jZ0%kBuDZ1EW&KLpyR7r2=}fF2%0VwHM4pUs}ZI2egi#DRMYZPek*^H9YK zay4Iy3WXFG(F14xYsoDA|KXgGc5%2DhmQ1gFCkrgHBm!lXG8I5h*uf{rn48Z!_@ z4Bk6TJAB2CKYqPjiX&mWoW>OPFGd$wqroa($ne7EUK;#3VYkXaew%Kh^3OrMhtjYN?XEoY`tRPQsAkH-DSL^QqyN0>^ zmC>{#F14jz4GeW{pJoRpLFa_*GI{?T93^rX7SPQgT@LbLqpNA}<@2wH;q493)G=1Y z#-sCiRNX~qf3KgiFzB3I>4Z%AfS(3$`-aMIBU+6?gbgDb!)L~A)je+;fR0jWLL-Fu z4)P{c7{B4Hp91&%??2$v9iRSFnuckHUm}or9seH6 z>%NbT+5*@L5(I9j@06@(!{ZI?U0=pKn8uwIg&L{JV14+8s2hnvbRrU|hZCd}IJu7*;;ECgO%8_*W Kmw_-CKmY()leWbG literal 0 HcmV?d00001 diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..b2dfe3d1ba5cf3ee31b3ecc1ced89044a1f3b7a9 GIT binary patch literal 2898 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 literal 0 HcmV?d00001 diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..4f0f1d64e58ba64d180ce43ee13bf9a17835fbca GIT binary patch literal 982 zcmV;{11bDcNk&G_0{{S5MM6+kP&il$0000G0000l001ul06|PpNU8t;00Dqo+t#w^ z^1csucXz7-Qrhzl9HuHB%l>&>1tG2^vb*E&k^T3$FG1eQZ51g$uv4V+kI`0<^1Z@N zk?Jjh$olyC%l>)Xq;7!>{iBj&BjJ`P&$fsCfpve_epJOBkTF?nu-B7D!hO=2ZR}

    C%4 zc_9eOXvPbC4kzU8YowIA8cW~Uv|eB&yYwAObSwL2vY~UYI7NXPvf3b+c^?wcs~_t{ ze_m66-0)^{JdOMKPwjpQ@Sna!*?$wTZ~su*tNv7o!gXT!GRgivP}ec?5>l1!7<(rT zds|8x(qGc673zrvYIz;J23FG{9nHMnAuP}NpAED^laz3mAN1sy+NXK)!6v1FxQ;lh zOBLA>$~P3r4b*NcqR;y6pwyhZ3_PiDb|%n1gGjl3ZU}ujInlP{eks-#oA6>rh&g+!f`hv#_%JrgYPu z(U^&XLW^QX7F9Z*SRPpQl{B%x)_AMp^}_v~?j7 zapvHMKxSf*Mtyx8I}-<*UGn3)oHd(nn=)BZ`d$lDBwq_GL($_TPaS{UeevT(AJ`p0 z9%+hQb6z)U9qjbuXjg|dExCLjpS8$VKQ55VsIC%@{N5t{NsW)=hNGI`J=x97_kbz@ E0Of=7!TQj4N+cqN`nQhxvX7dAV-`K|Ub$-q+H-5I?Tx0g9jWxd@A|?POE8`3b8fO$T))xP* z(X?&brZw({`)WU&rdAs1iTa0x6F@PIxJ&&L|dpySV!ID|iUhjCcKz(@mE z!x@~W#3H<)4Ae(4eQJRk`Iz3<1)6^m)0b_4_TRZ+cz#eD3f8V;2r-1fE!F}W zEi0MEkTTx}8i1{`l_6vo0(Vuh0HD$I4SjZ=?^?k82R51bC)2D_{y8mi_?X^=U?2|F{Vr7s!k(AZC$O#ZMyavHhlQ7 zUR~QXuH~#o#>(b$u4?s~HLF*3IcF7023AlwAYudn0FV~|odGH^05AYPEfR)8p`i{n zwg3zPVp{+wOsxKc>)(pMupKF!Y2HoUqQ3|Yu|8lwR=?5zZuhG6J?H`bSNk_wPoM{u zSL{c@pY7+c2kck>`^q1^^gR0QB7Y?KUD{vz-uVX~;V-rW)PDcI)$_UjgVV?S?=oLR zf4}zz{#*R_{LkiJ#0RdQLNC^2Vp%JPEUvG9ra2BVZ92(p9h7Ka@!yf9(lj#}>+|u* z;^_?KWdzkM`6gqPo9;;r6&JEa)}R3X{(CWv?NvgLeOTq$cZXqf7|sPImi-7cS8DCN zGf;DVt3Am`>hH3{4-WzH43Ftx)SofNe^-#|0HdCo<+8Qs!}TZP{HH8~z5n`ExcHuT zDL1m&|DVpIy=xsLO>8k92HcmfSKhflQ0H~9=^-{#!I1g(;+44xw~=* zxvNz35vfsQE)@)Zsp*6_GjYD};Squ83<_?^SbALb{a`j<0Gn%6JY!zhp=Fg}Ga2|8 z52e1WU%^L1}15Ex0fF$e@eCT(()_P zvV?CA%#Sy08_U6VPt4EtmVQraWJX` zh=N|WQ>LgrvF~R&qOfB$!%D3cGv?;Xh_z$z7k&s4N)$WYf*k=|*jCEkO19{h_(%W4 zPuOqbCw`SeAX*R}UUsbVsgtuG?xs(#Ikx9`JZoQFz0n*7ZG@Fv@kZk`gzO$HoA9kN z8U5{-yY zvV{`&WKU2$mZeoBmiJrEdzUZAv1sRxpePdg1)F*X^Y)zp^Y*R;;z~vOv-z&)&G)JQ{m!C9cmziu1^nHA z`#`0c>@PnQ9CJKgC5NjJD8HM3|KC(g5nnCq$n0Gsu_DXk36@ql%npEye|?%RmG)

    FJ$wK}0tWNB{uH;AM~i literal 0 HcmV?d00001 diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..948a3070fe34c611c42c0d3ad3013a0dce358be0 GIT binary patch literal 1900 zcmV-y2b1_xNk&Fw2LJ$9MM6+kP&il$0000G0001A003VA06|PpNH75a00DqwTbm-~ zullQTcXxO9ki!OCRx^i?oR|n!<8G0=kI^!JSjFi-LL*`V;ET0H2IXfU0*i>o6o6Gy zRq6Ap5(_{XLdXcL-MzlN`ugSdZY_`jXhcENAu)N_0?GhF))9R;E`!bo9p?g?SRgw_ zEXHhFG$0{qYOqhdX<(wE4N@es3VIo$%il%6xP9gjiBri+2pI6aY4 zJbgh-Ud|V%3O!IcHKQx1FQH(_*TK;1>FQWbt^$K1zNn^cczkBs=QHCYZ8b&l!UV{K z{L0$KCf_&KR^}&2Fe|L&?1I7~pBENnCtCuH3sjcx6$c zwqkNkru);ie``q+_QI;IYLD9OV0ZxkuyBz|5<$1BH|vtey$> z5oto4=l-R-Aaq`Dk0}o9N0VrkqW_#;!u{!bJLDq%0092{Ghe=F;(kn} z+sQ@1=UlX30+2nWjkL$B^b!H2^QYO@iFc0{(-~yXj2TWz?VG{v`Jg zg}WyYnwGgn>{HFaG7E~pt=)sOO}*yd(UU-D(E&x{xKEl6OcU?pl)K%#U$dn1mDF19 zSw@l8G!GNFB3c3VVK0?uyqN&utT-D5%NM4g-3@Sii9tSXKtwce~uF zS&Jn746EW^wV~8zdQ1XC28~kXu8+Yo9p!<8h&(Q({J*4DBglPdpe4M_mD8AguZFn~ ztiuO~{6Bx?SfO~_ZV(GIboeR9~hAym{{fV|VM=77MxDrbW6`ujX z<3HF(>Zr;#*uCvC*bpoSr~C$h?_%nXps@A)=l_;({Fo#6Y1+Zv`!T5HB+)#^-Ud_; zBwftPN=d8Vx)*O1Mj+0oO=mZ+NVH*ptNDC-&zZ7Hwho6UQ#l-yNvc0Cm+2$$6YUk2D2t#vdZX-u3>-Be1u9gtTBiMB^xwWQ_rgvGpZ6(C@e23c!^K=>ai-Rqu zhqT`ZQof;9Bu!AD(i^PCbYV%yha9zuoKMp`U^z;3!+&d@Hud&_iy!O-$b9ZLcSRh? z)R|826w}TU!J#X6P%@Zh=La$I6zXa#h!B;{qfug}O%z@K{EZECu6zl)7CiNi%xti0 zB{OKfAj83~iJvmpTU|&q1^?^cIMn2RQ?jeSB95l}{DrEPTW{_gmU_pqTc)h@4T>~& zluq3)GM=xa(#^VU5}@FNqpc$?#SbVsX!~RH*5p0p@w z;~v{QMX0^bFT1!cXGM8K9FP+=9~-d~#TK#ZE{4umGT=;dfvWi?rYj;^l_Zxywze`W z^Cr{55U@*BalS}K%Czii_80e0#0#Zkhlij4-~I@}`-JFJ7$5{>LnoJSs??J8kWVl6|8A}RCGAu9^rAsfCE=2}tHwl93t0C?#+jMpvr7O3`2=tr{Hg$=HlnjVG^ewm|Js0J*kfPa6*GhtB>`fN!m#9J(sU!?(OSfzY*zS(FJ<-Vb zfAIg+`U)YaXv#sY(c--|X zEB+TVyZ%Ie4L$gi#Fc++`h6%vzsS$pjz9aLt+ZL(g;n$Dzy5=m=_TV(3H8^C{r0xd zp#a%}ht55dOq?yhwYPrtp-m1xXp;4X;)NhxxUpgP%XTLmO zcjaFva^}dP3$&sfFTIR_jC=2pHh9kpI@2(6V*GQo7Ws)`j)hd+tr@P~gR*2gO@+1? zG<`_tB+LJuF|SZ9tIec;h%}}6WClT`L>HSW?E{Hp1h^+mlbf_$9zA>!ug>NALJsO{ mU%z=YwVD?}XMya)Bp;vlyE5&E_6!fzx9pwrdz474!~g(M6R?N? literal 0 HcmV?d00001 diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..1b9a6956b3acdc11f40ce2bb3f6efbd845cc243f GIT binary patch literal 3918 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�(p-{x$&=IACIfoAR!za)F-^da-t3#0Dycnp zwO~NVXwXCl;jE<}>%@xz|=8fIJAB?>+E{7)|4l${4ngA3G|=r z2Dyv;VVWSgZx9Wj>qUjleGl3Ei9K4>h!(lPS%8VOG>Xu0%6VDz^O=bjJmuP7>DeUv zrbI}MlHB^^d?{zv6d=@_ZD2lg1&G7UjnVN{1}9WkaM3H~btX0GtSzB+tZ^qRgWo4m z!GmimlG$=wgXCnr6j@m<1gAL46#T~5Bnm=2{^@>|t&`9mkEPddj zAvG~@Tv~TAm2i%VW}R-g(Z0)z-Y|szHr@rk>4MAyG*Ma*7Yh#H7(!-5>DZ@8r;_dx z{prSe<>~099F8vsYd2xff7uAS%7{S)f(|@me3t2$iy&NEc7OUEchp@9A|X;;IA>8!oX+y(BKJ$EzV* znR$z;!L$s7uy@{OT~nG#B!NRraT8(X##Ho!0r_o@gg0CA-9H^;-uE&?$2$nHv_00o z%cbuUc-tCx$Uh&EZ4Nf4Zgqv)Y6>usG3>GeQnxx_Z6+PcbX-+ysbt1hQ`K1LDpOE? zrAhIZhSN9yVIAOa22gn577tbc&i3|3V8NWy&!tw##`}9*x}gtI^h1DzZRA>UuaJG) zaZ7j)dq!O}{?#8Y7~7i6fHh4{`pL?>-18|p!S75Y#^DM>-S3)vuZG+Q7l@ek zQP~#cBpWgg#mApc_sPYjpw8odQuRokmTkzcNl`^CcKB7e&;zViV;{Y{o^Y$%7i0m# z62%#1Lq!RC?}lK>%mp}T!3Xv;L*0v*>USLm``N%>w>@fwC+#T&Tx2bN4w(20JB}oU zuSa6v^kXi0xPs?pbaOHnyiqq6By1EZY9OZ^^QA>{q-Hsd&m`pbQ%8121aWG-F5xf zlZ%;B{;C>X19|`^_?dVyCq>n+41w7|!tUS!{9rHlbhX=SZO5CQ^;!Du_E7*`GiR^Q w)2!4MKjfSAeNo!9>IaV6aUZ*?W>} zs4%E?srLW`CJh0GCIK@hTkrW7A15Iu%N&?Q^$0+!{Tv&|t^Y@u%!L zglTg&?Q5q#ijZ;&HBQ?FNPp;k3J5!&{^+SGq?AX~SiOM9jJMRpyP?RCr@z38AQyy&WRMaC;n4una$~nJKSp?q|s8F00c9?Q! zY_ovvjTFm+DeQM^LXJ#v0}6HRt3R1%5PT*}W!k8BEM;Jrj8dIceFo2fhzTqaB3KKk zGlCLI)gU25(#u6ch6GeB1k@eHq7l{EHXv0n6xE#ws#ri}08kkCf8hUt{|Ejb`2YW* zvg}0nSSX1m=76s?sZhRY$K=3dpJ+y*eDULGnL2}4>4nvW^7_<~wIM_5fjvwt4h1|g z)g0Z6ZFq9j<~9~b8((~TN{Z?ZQfw|is&Xp~AC61sj;xItKyCHdI|tCMC_LbXF>~vR z=w6V3^H=W4CbAgR4#xw}ETTwu2guW~=Crl@SMXv85jQ=%y!s^?m4PI0My7MWICO;- z175jm%&PcPWh8QdOU(#8bp4!N7ET-+)N}N2zk2)8ch|4Q&lPFNQgT-thu053`r*h3 z_8dI@G;`zn;lH$zX3RzIk`E8~`J=BBdR}qD%n@vVG1834)!pS1Y?zVkJGtsa(sB~y zNfMYKsOJb%5J(0ivK8d+l2D2y&5X!cg3BG!AJ}910|_${nF}sC1QF^nLIhzXk-Y#x z0)&1iK!O;Og0Ky!;`b~v%b$`S4E&fB)1NB4v@8wr( z&+NX4e^&o)ecb=)dd~C!{(1e6t?&9j{l8%U*k4)?`(L3;Qjw z#w7FS+U(94MaJKS!J9O8^$)36_J8;thW#2$y9i{bB{?M{QS_inZIJ!jwqAbfXYVd$ zQ5fC$6Nc9hFi8m^;oI-%C#BS|c8vy+@{jx6hFcf^_;2VRgkoN(0h!_VSGmgNPRsxI z8$rTo0LaYq-H5i&gtj81=&xU?H-Y2==G@uQV7E`@+2E9XQW@{&j`?EOktk|Ho{HU>ZqDzvgjwBmdex z&uZNd2C1h{{}2k6Ys9$*nFP3;K%u!MhW`uZy7Sn`1M1zs@Es&;z*Z>Gsh@-3Fe6pE zQD2@cqF((NrRevgvLsvM_8;;iNyJ5nyPyy?e!kvKjGj`6diRFBEe49Oa7wwkJFV7Z z$YT&DWloYu-H?3<0BKn9L&JYDT-SK~*6c5pi18P26$JESKRYj{T7Zk6KiRJcbvOO*{P56Q6s8msbeI3>|j>K9}Q9UBeq*inXKemCm`-<5|-$ZyN4u$(3 z&HcvqehFD%5Yrmykg-^d`=BSa8(i=>ZoC77^mWY{evp(km@aHqhUECBz76YiR+VYK zY_avFC~V3$=`6C4JhfHAQ@DZtUOwH`L;oYX6zK0-uI^?hS$ALfq}A7evR;ohJHij} zHSZdW?EKv9U1s4oD*<(0oQ*;MaQ6@cvGL zuHCPgm_NhVsgp^sfr*ia^Db}swo1?O(_Q2)y+S$CBm+g=9wCOUPbz(x)_GbaKa@A7 zuI&!ynLiZRT#V%_y_-D`0Z5lT*auoe{(U5NylTzFSJW()W-#F6*&A`LNO1bV#Y;QJ zSbLBnp|B^dtK|KIWC|No>JjWBWE@n7O)x{&^E(WMeMvp57#qA8m* zeTow*U@_86B#Fm*rxyYu5PRWaWHx8y> z*qmHEp(AMDl0v)ij(AY8fnH=~ZwwjVAbu*m5;xPfidh@ov6d8g zfJsi&!QyK53Es%sC39ts;54V68koALD4b|%tNHW0bIkZAJKa=W&FomJSEDT>W1xIX z1x%Z>AvNIsSPLcn3RTcHXb@KB?cuM)=x6fcIx>&(GxqZ8w3p#jJ(GVgc*`c0HG}dv zIop&Qim!K1NFwic%07KcjWgHBPUkq7f~lj;TPqVGTiT#cUeim>;nY`>h@a*S{qQex zQ`z62WK|Mj)Y{tfF{;T4P;c8$Q|KU?Joh zIkA^z%X7z|r>4aTh@|StTi!-r1D!g=zb#3d#{{&K3CqE$Iz-UH<%37c zRfkO`&uM%#AD3PHv`g5t0e^O%nVL0d{Xlx^EjEC3#skF@`zl-7PF^0oxW)1!C!JxR zWvuAHH?)61FKA1QeT*_sY7;_Id#!GmV4n`MO{~sv}VLSK` zXRw=Y=Clz*00B(5y^K;gCZMAzjT5+c3IC=)l(9VIDdatpxj3y89WwI|bH&$!ZEvp` zPR!T@#!(|KfI-w?!&+7$N3F6>tD{YO4Qg$d_`nNEdfVCha9vaPn0jI0`)`@*72hq! zpU5ND^P*RoEkbD5o#az(-g=Y)L>HH>Oc%}$ zT3Rs_ih0;4+Lv4Y;@Iv(;fUbQ=i-G(#>vghec~*j(I#r|5mqFiJBpzi&hzEcD{u$< zRsm0BVYn=pT;0>R(itW|*D&;O%bOc7et9ACaH#J>z3A1A~6fdP>pmbM%xzm4>|;c_?B+%sl;Qs2{t!60$^u zH1t@9^6>;?!FuusnISi$f5CL&;z?EqJN$FBuWDA#D5`cy_UvCFIVvf{c?4N0teh;d zET$7aVbj08KTQS!x?Nd1Is8q8qFzs}a=!@nJ;7FSfCY^T@D-gpw`w<6e#X3+;O}1h z$%I!M)0bg|EKUA04Qjn@+x{Rj8vt6Wn!R|3A92z}^$KfF5(#CWr4y#~re1CN4i4w0 z#GsypBR{xA3Er7sgAi(|}1-W?s~n$7?K|9WL8kpVfw-;#b9 z+mn;=ep!162U5R>_t}fOt~tE?s#m( zO-S$7>Ay6*hHdZ)7_oU915WYYCIX;hFI-U2EWYX!pllONr@Q--2o~`!isi6vTPLJ4@(|o=%NHYjo0_S&q*UQIROw@*N-By@PaQ&;YxFZ0aR zX&}LeOEz);#m~Hwm^VAY8DK}b$F4bo{jMN?d!lxKPhNklzr^Cd`0f4oJr^z=I|l`* zm8AHm*fPV`0=lF3Pnnp}&J0N1X@}-D94YvmUabFrLGSnTz7Mu^21F#O5tN#CuY9Vh zUZBH=ez%h*wkf0hBtXJh1SN3d+IF{gzT7lp)j}n?03lt;XSQRAh7qd&v;RwTYDuQ# zbI2*r<>?x-G0@hM{;%{VBD7nLKt~D`T~-HAt5;h%i0_=Ifs=yHma5dhJ+QMG?Ux(a z|E?1CMy1!~oA`FP!k~iG=t&5#>bVdz=peT8HMB6Y)#7PpETtNryT^+Rv3vpJaF^zP z{H}0-LyV9Fu21ID%wO9f1IKlFr1p4c{o-?03vyB-tr5duk^&L$;m_|f$vs`^Sl{j2 z95}oY{LlY+=ZS%J+tZoXCd0*sSU7w^gjovXn+g7uyra5{cU49@yHf#Z^Jl-$9cIfo z+AJuxH$VLb=#+uBbVmUjnx zxb1pZ@-O9=AIk4@S)m6fJ2?{HrNYwwnL3a45muuNjr;6$O`bGEM0T4A2_S$t=86*- zcO+0mywg*j#A4mU}enR_!cGmIYQ;qwfchWtFEXL)AK%*;=j znYne+hS4EMy3S)C*mZ1KI>!+)0V@9!N6H$Y}~MJ{rYuf zz^KljIWvFi-?#?V@LPR&c6Nn{!=XM z>}-h$S76;$H{E{Y%@^zlmOl^efBwa%UU+jJD9UVukQ3ti_kH-?H*RC0?M1W%FCvMB zM_+v6fk$6X2sx)-p~B3&Kl{nscK}pNLM*qjtpaf9>AU{-iPKQZR8yCg!TY}Qg*(;) z)gdvCcB%kppZc$VdvsK@)3l1{&DG!d_6OHOS`y=ITLEVu`unSKA2E%JD*DVX{LJ}K z9l>hMRDqxQh0lnpGHpVYneX}eA3Pt|2v%=q;rt)``R|#bDyB)OXY&vI_@|*}h}G?^ z@aZ4_!7cQPX`!fW_?{oT1NTwHs#l5L-0`E|y@48<3Q^HFf8=Idi zpJYD%1MkII!~|7I^WGo)IF=?{>ACnjJ_WUi39C}!Q{QnheVJqeKKqq5^o5CBde(g9 zvw$X6^jz_^E2$wSw4!q5*RG(C2_^XO$HBn_55vbl44OnTTRwRaePP0vo{K)U1#99& z<>rq7V&V(<&@I%MFoN5zrY}sz=(*-L&}1QQ*a%`u25h{cFj===17eB_uGuzG&byQ< zrm8BJZl4r_E$3k|Wo6FW0-6M7>qac5uFQsQcmkLWGfeH74S3Z_rJ!jgN++!@i=HW8 zkyjI(oPH-+-N#Qc^-mpNO`bc6r=2-<%&Wy5K1vfFJB(L_IkpS6fY^NmuL8qsgj>MD zn~BHH9WM~32_3vd=W&B)k7F9q%stJx+b_L_X-4zr^LVUMCmyCTA3sWtkvsmME?Xiy z?xOSfB=_$oY06~J-HcCq&)qcW{j;uP;?Dm}=hkq?zh&n!;m((-G-u_t|6x399Q;>A zgNpxoJNj{u|MFDH7Rhq@FCAl0dE|ddnl!oh9{Lq?@JDoR6L;C941IK`ISfdE$4S zE0AUQ8+2|Ncl_q5QkSp#AODp~(^mfP&%Au@@|TBQwoP`UU+V{6u8|)6ZA{~uKmQ*M zmrMTDU8S~8Eqi{^v0Ug&5Upcm#y7Z1(RbgZAG8jB$eRwCspQ)>5;U)oGZ&E5aeR*K z8Yt`Y0$G))Yd(Y3KH}tA4`-_QmNke5hU_|nq=xtyjwW(_o?itz>B>WM&^63bNdQ)k@-IgDHW*RW$Xo9#RzrTrCn7L2H{9Amq|qNg@#eZY=|P zCoI?2s+L)zsM%WX(NbVEY^`C>lFjIBYmJ6@DKJ0ZT4&F&WHW!dwa%QzOG!?jY_2(S zDcEzZbz*2Q!43|z))9yOP9X1Xt%DXzwY(3tl-TR=Qb_MbZYRrooh;dYYmS!U_as1(=YVB?Q_A|tNu5Ut&_q3jbfDM zoFxT^uEuH`nX3*sB%K?GuHUkweYReBwnHqh3P)~`+s3+Tj!rDA1e)8vuBv5J*IsxC zkd^~b(aGzArj08{>cnzOuy04C+C`}gb|Yz-1avxeWzev3NzcHbz_&4W@QCr$z3~w=8Ua- z`;vfG1~BP8CyLb=F7t1am~ph_#|O%$khSJ9%Vtcn)YmpgQxF?xM^_Vb+5fnpB^W0I`f%X8gb9#X{Q-yJG0{Z56aWeI&zPxnf5pdJA38bM`cYnS#x)% z`n1tFf$i)W-hGm(f9mde^=X@NcV_lFb=P`4&CI&H=IArijGwdCk&X@uQ$5xmj!~^? z#$ROCI)V-~t%L%GS#wo@U27ddR`4`3)WoB{R-4snfNrfee|kI8^bu#yDgYqOwas9# zmcb`3!kRJ`Cr=_tq)8aMt{aGtUZsqwVlj6DgCGre>AEt&x8H_in!x@uwgExIh|-mA zjdaC(29~CTVSaaF7HPbql&*9Uo8P@f)>LqCXclr}peS7_1BQ28u9PO8Eq1@`l3q9o zkfKCaO2?T?ZyA6loW<#9_c^O=m<&h}CA!ineAD@=(gbq`vyT|tiJ6#^B1$P;;qax` z55k&Q?wEh#87niLo*+n4L@65J(Nz~=Ya%7^(miLb(E>A3B@|Jjl;FU&D>o|9#7PJH z?|ago!o;WC^h=|T7PVBg(DAB}72cyUS zb(f>Bwbr!F1eTCO5fpj<{PqhY5>143p?~5ZA5H40);=@M#MYvrB6gqHbU_!GSY??i z%s=>-ciA4*zOOZHds0a(kWewZ4h(k8h(ua7HX)Au&mY~H8KY6(_cb$_&fA@QjIW-*heP3%$d!m5^AdnT}`12qA^c@!g3DOwZ5WwE2?)-yU z!)Vx#Mtxt?FzFTwK!77sy7)sMzUd->w4^bxtpM2j!b1pjgyk zGKwWGeb4)^zjy{9Es&PU1}gwg?|J#L$KJB7ett9@4M%-nGtIQr0>Fl@8-yh`-+1ed zS6r}(MeSvgSoFmH*_WPu@i?}!AB~2?;i&IxrkNg~cQ9Som98tcq)k^|eeER|Zl77t za-TVUc;DNvzVXJ%w52+#weN?+;i#{f#!Oc&z?81*N>^e~ltRS%ZI@lR{rs()HmqG! zx*}ZrI-EZ}ckJMiy>A^oofwDfC~IH)z8{VHKGT@#E5I(Ll&+MnMCl>~AV7+>Gi%mF zkU1QlKASdR0B80!YhP<$Ywi0?W2Ux45oPfxv9QolWzJPD^weBfvo4SONxP35106sAmh(e+vAs0GboFD@PvNs)jNPvarhW}0YliZEg{Gazv z+JDIpoojRVPr<*C|BTq<`6ga{5q^8^!|0cxe=rZ!zxH3%f5ZO0cQ*Z<^$Yt2{|Ek0 zyT|*F+CO@K;(owBKtGg!S^xj-Z~rga2m6nxKl9J=fBSuNKW_dLKWhJKeg^-Xe`^1? z`TyJj)8E!#>_3Y?uKrwqq3LJ#SGU>AzUO|6`nR^u&3FNN_jGOc zw)Nw`wr3yIKhgcee6IaN=ws>M{6677%)hPwx&HzC(f&u~&)6@b2kNRzBDQAP0*H73 zq%McOmRk{B3i47qRe=DA*$&odrbEJZ*pV9XXa&p@wlW~@Yfs>V{yiTtplMhgM*-Bz zsSnlq&pG;z0OUN%$~$3=g1UF+G*>+17eRbBf3=y79J}KR8owon@$1Z7MIrvvWWH)34nK2SD)GsrJ{l z1Cl#oVo3A8qY3e=aF)qzms~FG#2$LzT=gs&aVMOj>(%{y<&O0cG!nCiESl~x=^dF{ zKvj8F1K8Ng171wwM5Fh4KoQw`_c6#y$(5cAm7e}~nJ#A*fx+c9;y#&W!#VukR)ugk zKp3=+;Ut+IYn%m+r4d*<`L2h%aDnX5}^!5R|H;(34AoVWjRx(msBZvk;rCI*|~ zdOijqI@9Z{Vu!~jvHW{lBa$rnl4+!s_5sfK3bCGk-B%iDe&@-}+%fOKU|(9?V1 zHE8&@4z)Kx!RAvAs z!Wic9=o#(bg?kc-G68-m(jZ`^=XGUXb)}t(%&~sjFnV^sEX%hSy6UKC4iOhgV=BHV z2w`4g7Y=s#Vu2B_?#VQ|hP39@eArgfX>-0S+dd&^mx0*wp}>)x;c4RUgxz%;oNe?& z-7-lJ@Y^2^C;=qJsxx5|xF)*pTGhch2B&kxtn;f!7=gznk}I3}Dh}(CoMXgA5-p&kS202!l?!fT3t|HG*rIP~mS* z$Wjo}jq3}z$Qq!9yrtd3fM0N629ZM?LU$nv@Tv9b7I;D|;0H2dsA~g7Z7zp1| zB)XmrkMgF6OQr|R)HHD^TE{Y#j!~SR?b`Xt3Qs`B+x<hxexYeAjMUWdZ-*n9%(1)Wb(n2U<><7&9dwGJmrob)4%H? zlQ%z+L-^$dFhhH|@u$%97Qz?*Ynh2VG@q|?8vY&L74&fs&_b&3$x&Oyjl~LQDRRap zJU4U*R+(2Dd!G+lh8!V{pT_UJn+^1Qg6$` zqkNm(a#hWyc6SP+p5=C4HL8-m`pO`5o~`-LI?_h5CsH?F_%?nDodmz&pWR20WTpJE z?N|wSzLjMUK8E)a2tI}Lf;+;*M|h3Y(U#>)g1>zk9|Hd}oZAa2 zLYBWBoSW!Ts!RwXr^8h+U*@{9{zqS^iH)Op<;r`Uw~nc}<^$V~_i%$GFjaG?X1@E|M`h)nekvFKt`Dh-f>@|0-`Xoq)o` zx;JmzDfOV9qCx|EVpogEe0LK~tGS?5$$L_i6P$P6wIsCQaP_;d{{N=iV@+8LI}o#( zvo*Ejy=IIn{rdIQh1&q-{EuohpVOjJ^Q3lD*YTp37$^RRgn8ihpdu5{Ct%5-KO!VL zcNB6dUajXI9jkm-P|i3~GB-A(X`P1Oqqb$tcku)UJw0w3GeUijb__#QT4j%64z%EeB7S?jlWwx_7&+EEvB|6N=kV}DwnyAlX=?j`) zmU#!$*^@NIu#n_d7;WoJV@*Fbv9|yJO4;n|BNF2xy(54RyB>t~8lUOUW$&2%Nwi1y zx6JxW88>U2$#qhl^6KUbtmg9}D0o5vYDT7kWJthLGkpGnN4T>{St^_EU>4;DmLF9o zr|LqsA8_MoNLQ=}w?8u!ziSZ@PC#Y<#9uJFo-ozVo6D;<8j^1$c|qAE3ZTE5i~zmE z$BU5lw6l=EWsg^y^;8>r9qH{xfL|~PZYK#md$zZ0?o11gV<*WSW~cgy2GYGQir%wf zt4iW8D+;s*;RGrmd(-T<@2&j(Cb9xhV*l-x`TpK`xq|7p?5R%5*s!69?2c!cC*VY* z2DE^9pvOPLU!1e}wA8S8opcTJ3`NB>hY=JQnL~QFXR4K8A$BqJnoEB$wn-%u@E6Mh zCfMF4kusv3N!(aHC}4)Xs^xoOwXd%e^6pi5|DZo=Q25j+6HlJ^7FodH6y1bMROR^q zGu6)fopS`h%Sw<;ZH%TEPf+#81-#_v+@8nlR0jLcIDKQtLleOC)6yLZgC!D9X3GgS zohwU{v$jl=quD#Go^hB{`@Qw*a%`(^jyT~=q^bWgGzRj;|12J55HWdCWV}EB|K=%N z3Nq-qxJJ`>^|1MNN+q}zTB&ooE3j==AgK@^UW<^oSbeALa2peF)Th6{@sj0KyMNHZ zksk1+MXN2tv+22A%cQOGpS9)77(uP9mh+!5T5ERLvF@b}$+WvXM45Z?-kCa)fb~f1 znVbTD$Gx-0Zxc`0D@YgHakge6SL0H`-vN_x?AP0>iGH0_EE&=v83hMJgaKAI0jJXm zVxVz;X<$v6WW7}fxROO7vr#YLP;;lij5VrX{;>7kK6TtOH&6|Ar^xo>00%+u$C4@# z>!jOt6*3><171+WxoZnKDTzJtDRw+T030;yI}~uV@9fCnei^I*j>Bp&mzP2d=FPb_ zCM*l_+$LDR3B*a!A$g#>xsrZvw0lckxmMg>0aQd7tPyN=t{dgXb;Ie+T8{fZH=gdu zM7Rg9c(kg(Jg0?ARRRl=AONFKrvFj)lTY$KfT%6^6s`mk*ABGhsce*LsoD>K{z_M2 ziPpnu+lw22PfF!CoId^6n*G4H(Ix+#+N{C(da7t1BYMGEaE#PdpOLxsVD5riQXHp@OX;`S`8VnpM~)I920w~<3|mo0 zf8~Az`*?2?H&gZ&*K&bRkV@qzvMlRHXys8*Ze2+1c?5o!^+$&MHxB@4Ee5cke52R! zmn7AZtY6ST%ixgU5)%$%QcwHj7Es-Qu^kLAPwy%7pGBw_4Q9#da^W2$}axNHr03)_nw z5?yuNmXrI5HgS46)c5&}B)Tts49oU92>3xBLLy}FMUW=84DQbVq^;7_e7|(Sdz|&J z73N+M`rc2rt*oSWu#7S{*s~nH6HRHJS1SmzeXk|;CA)FI4bat3<%}nkB%;;?=F>B7ms9QSxv#@+69;@>QaR?REYX4&)=itG>rM{<{A79Rmk)`5ON#GL`*KX%}Ihk3w(RtM-WLt z?f&FLF}4N^yE!(pZ&Yj&Bc`~K0@4_}*0Om?wN|}4WJ>WL;G^H2*QpgEkGA~OET-Km zkwz|5{6dnz1U<2Pe9DNL>3g5FEIvp1jzP&2K#z~j%g6!7B;^zF+o95?fV{3mnB8*RMhCDNp>Am-3e@jNfMj?jHV$MWjk!DDKP zkAz$Y?Sr)!GUOX}qTQ5aMh|wq1uq}~joWyKl=b_LboM#wi{CMuz5x6BKlA-qy++cM01D3b7`uD z#l6M4pI;JCypO8JZ6?U&wNxR!{4oB_ zlV!x9+-&Qy6{%MQ{~yoZGkKiTSC`YS_j22~G;xUV855g2&C(zm^V!(wpcm@zn{%!g z4}JGo(sGZ1O~to-}le

    UmY2RIYtNPVDpE$%vda+HD#3m z&VuXJ{BK&Qe+rBa7eq}Q(bq|tn(RrJAk|ztj2(i{d>nmQnM?;HF2k&9sA6up5tmjl z7lySlzMbifH17-m-Lwa_F&e7nOH?ESi3#ckR3tsM+jsck3`oG!uMS}|eAwVXv>}qxwq?QY%QJ0}r@^;fhuUA9W z*BVl>TGo&N004@xSiwDUXUvp51sVmqO3m)=B55aPwf@0=e}cN+$-BdKxY`YrT_4)0 z_d10#i44Q*rFr8MC>*)v$EJvz``(pb{e&*6k+b zsMz%($|1+8hn8c2?P(l@;Rb&CsZeYoCI3?2!LqjbwPXW3z4G$Qfj=cT5Yb%vY0(AX oeb?AaKtwrnc|$|zzw9vfvn^aJJ!zd)XFXqqy0000001=f@-~a#s literal 0 HcmV?d00001 diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values-night/themes.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values-night/themes.xml new file mode 100644 index 00000000..77300351 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values-night/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/colors.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/colors.xml new file mode 100644 index 00000000..f8c6127d --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/strings.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..5d77158e --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Dynamsoft Barcode + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/themes.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/themes.xml new file mode 100644 index 00000000..e2ed77aa --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/xml/backup_rules.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/xml/backup_rules.xml new file mode 100644 index 00000000..fa0f996d --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/xml/backup_rules.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/xml/data_extraction_rules.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/xml/data_extraction_rules.xml new file mode 100644 index 00000000..9ee9997b --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/xml/data_extraction_rules.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/build.gradle b/barcode-scanner-api-samples/scan-single-barcode/webview/android/build.gradle new file mode 100644 index 00000000..ab2b874f --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/build.gradle @@ -0,0 +1,6 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +plugins { + id 'com.android.application' version '7.4.2' apply false + id 'com.android.library' version '7.4.2' apply false + id 'org.jetbrains.kotlin.android' version '1.8.0' apply false +} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle.properties b/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle.properties new file mode 100644 index 00000000..3c5031eb --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle.properties @@ -0,0 +1,23 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official +# Enables namespacing of each library's R class so that its R class includes only the +# resources declared in the library itself and none from the library's dependencies, +# thereby reducing the size of the R class for that library +android.nonTransitiveRClass=true \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle/wrapper/gradle-wrapper.jar b/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f GIT binary patch literal 59203 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

    K7UpUK$>l@ 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 E2O(~oYXATM literal 0 HcmV?d00001 diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle/wrapper/gradle-wrapper.properties b/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..dea1f353 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Thu Apr 13 17:46:19 CST 2023 +distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradlew b/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradlew new file mode 100644 index 00000000..4f906e0c --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradlew.bat b/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradlew.bat new file mode 100644 index 00000000..107acd32 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/settings.gradle b/barcode-scanner-api-samples/scan-single-barcode/webview/android/settings.gradle new file mode 100644 index 00000000..e5f9d85d --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/android/settings.gradle @@ -0,0 +1,16 @@ +pluginManagement { + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + } +} +rootProject.name = "Dynamsoft Barcode" +include ':app' diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/.gitignore b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/.gitignore new file mode 100644 index 00000000..ba1ff083 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/.gitignore @@ -0,0 +1,90 @@ +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## User settings +xcuserdata/ + +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 + +## Obj-C/Swift specific +*.hmap + +## App packaging +*.ipa +*.dSYM.zip +*.dSYM + +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager +# +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. +# Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + +.build/ + +# CocoaPods +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# +# Pods/ +# +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace + +# Carthage +# +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build/ + +# Accio dependency management +Dependencies/ +.accio/ + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/#source-control + +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/README.md b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/README.md new file mode 100644 index 00000000..a498670c --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/README.md @@ -0,0 +1,25 @@ +# Hello-world for iOS WKWebView - Dynamsoft Barcode Reader Sample + +This sample demonstrates how to use the [Dynamsoft Barcode Reader](https://www.dynamsoft.com/barcode-reader/overview/) JS Edition in iOS(Swift). + +If you want to learn how to use the iOS Edition SDK in javascript, you can check [iOS WebView Barcode Scanning](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/v9.x/ios/JavaScript/WebViewBarcodeScanning) + +The iOS Webview sample uses native APIs to handle some of the details of webview. If you want a framework, you can refer to the [capacitor sample](../../capacitor/). + +## 👓 Camera Permission + +Notice we add camera permission in `Info.plist`. + +[dbrjswebview/Info.plist](dbrjswebview/Info.plist): +```xml +NSCameraUsageDescription +Decoding barcodes from video needs to access your camera. +``` + +## 📌 Customization + +Please refer to sample [`scan-multiple-barcodes`](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes) or check the official [documentation](https://dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/barcode-scanner-customization.html). + +## 📄 Support + +If you have any questions, feel free to [contact Dynamsoft Support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.pbxproj b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.pbxproj new file mode 100644 index 00000000..7f7ce301 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.pbxproj @@ -0,0 +1,373 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 68309E9F29F28D950016A358 /* html in Resources */ = {isa = PBXBuildFile; fileRef = 68309E9E29F28D950016A358 /* html */; }; + 68A0A94529EE855E00DC7D57 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68A0A94429EE855E00DC7D57 /* AppDelegate.swift */; }; + 68A0A94729EE855E00DC7D57 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68A0A94629EE855E00DC7D57 /* SceneDelegate.swift */; }; + 68A0A94929EE855E00DC7D57 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68A0A94829EE855E00DC7D57 /* ViewController.swift */; }; + 68A0A94C29EE855E00DC7D57 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 68A0A94A29EE855E00DC7D57 /* Main.storyboard */; }; + 68A0A94E29EE856100DC7D57 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 68A0A94D29EE856100DC7D57 /* Assets.xcassets */; }; + 68A0A95129EE856100DC7D57 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 68A0A94F29EE856100DC7D57 /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 68309E9E29F28D950016A358 /* html */ = {isa = PBXFileReference; lastKnownFileType = folder; path = html; sourceTree = ""; }; + 68A0A94129EE855E00DC7D57 /* dbrjswebview.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = dbrjswebview.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 68A0A94429EE855E00DC7D57 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 68A0A94629EE855E00DC7D57 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 68A0A94829EE855E00DC7D57 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 68A0A94B29EE855E00DC7D57 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 68A0A94D29EE856100DC7D57 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 68A0A95029EE856100DC7D57 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 68A0A95229EE856100DC7D57 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 68A0A93E29EE855E00DC7D57 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 68A0A93829EE855E00DC7D57 = { + isa = PBXGroup; + children = ( + 68A0A94329EE855E00DC7D57 /* dbrjswebview */, + 68A0A94229EE855E00DC7D57 /* Products */, + ); + sourceTree = ""; + }; + 68A0A94229EE855E00DC7D57 /* Products */ = { + isa = PBXGroup; + children = ( + 68A0A94129EE855E00DC7D57 /* dbrjswebview.app */, + ); + name = Products; + sourceTree = ""; + }; + 68A0A94329EE855E00DC7D57 /* dbrjswebview */ = { + isa = PBXGroup; + children = ( + 68309E9E29F28D950016A358 /* html */, + 68A0A94429EE855E00DC7D57 /* AppDelegate.swift */, + 68A0A94629EE855E00DC7D57 /* SceneDelegate.swift */, + 68A0A94829EE855E00DC7D57 /* ViewController.swift */, + 68A0A94A29EE855E00DC7D57 /* Main.storyboard */, + 68A0A94D29EE856100DC7D57 /* Assets.xcassets */, + 68A0A94F29EE856100DC7D57 /* LaunchScreen.storyboard */, + 68A0A95229EE856100DC7D57 /* Info.plist */, + ); + path = dbrjswebview; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 68A0A94029EE855E00DC7D57 /* dbrjswebview */ = { + isa = PBXNativeTarget; + buildConfigurationList = 68A0A95529EE856100DC7D57 /* Build configuration list for PBXNativeTarget "dbrjswebview" */; + buildPhases = ( + 68A0A93D29EE855E00DC7D57 /* Sources */, + 68A0A93E29EE855E00DC7D57 /* Frameworks */, + 68A0A93F29EE855E00DC7D57 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = dbrjswebview; + productName = dbrjswebview; + productReference = 68A0A94129EE855E00DC7D57 /* dbrjswebview.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 68A0A93929EE855E00DC7D57 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1400; + LastUpgradeCheck = 1400; + TargetAttributes = { + 68A0A94029EE855E00DC7D57 = { + CreatedOnToolsVersion = 14.0.1; + }; + }; + }; + buildConfigurationList = 68A0A93C29EE855E00DC7D57 /* Build configuration list for PBXProject "dbrjswebview" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 68A0A93829EE855E00DC7D57; + productRefGroup = 68A0A94229EE855E00DC7D57 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 68A0A94029EE855E00DC7D57 /* dbrjswebview */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 68A0A93F29EE855E00DC7D57 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 68A0A95129EE856100DC7D57 /* LaunchScreen.storyboard in Resources */, + 68309E9F29F28D950016A358 /* html in Resources */, + 68A0A94E29EE856100DC7D57 /* Assets.xcassets in Resources */, + 68A0A94C29EE855E00DC7D57 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 68A0A93D29EE855E00DC7D57 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 68A0A94929EE855E00DC7D57 /* ViewController.swift in Sources */, + 68A0A94529EE855E00DC7D57 /* AppDelegate.swift in Sources */, + 68A0A94729EE855E00DC7D57 /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 68A0A94A29EE855E00DC7D57 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 68A0A94B29EE855E00DC7D57 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 68A0A94F29EE856100DC7D57 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 68A0A95029EE856100DC7D57 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 68A0A95329EE856100DC7D57 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 68A0A95429EE856100DC7D57 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 68A0A95629EE856100DC7D57 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = KK22Q4GV82; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = dbrjswebview/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = DyBarcode; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UIStatusBarStyle = ""; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + IPHONEOS_DEPLOYMENT_TARGET = 14.3; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.dynamsoft.dbrjswebview; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 68A0A95729EE856100DC7D57 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = KK22Q4GV82; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = dbrjswebview/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = DyBarcode; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UIStatusBarStyle = ""; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + IPHONEOS_DEPLOYMENT_TARGET = 14.3; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.dynamsoft.dbrjswebview; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 68A0A93C29EE855E00DC7D57 /* Build configuration list for PBXProject "dbrjswebview" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 68A0A95329EE856100DC7D57 /* Debug */, + 68A0A95429EE856100DC7D57 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 68A0A95529EE856100DC7D57 /* Build configuration list for PBXNativeTarget "dbrjswebview" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 68A0A95629EE856100DC7D57 /* Debug */, + 68A0A95729EE856100DC7D57 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 68A0A93929EE855E00DC7D57 /* Project object */; +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/AppDelegate.swift b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/AppDelegate.swift new file mode 100644 index 00000000..ad05d455 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/AppDelegate.swift @@ -0,0 +1,36 @@ +// +// AppDelegate.swift +// dbrjswebview +// +// Created by Dynamsoft on 2023/4/18. +// + +import UIKit + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { + + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + // MARK: UISceneSession Lifecycle + + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } + + +} + diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 00000000..eb878970 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..13613e3e --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/Contents.json b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..865e9329 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Base.lproj/Main.storyboard b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Base.lproj/Main.storyboard new file mode 100644 index 00000000..85dc8abf --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Base.lproj/Main.storyboard @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Info.plist b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Info.plist new file mode 100644 index 00000000..93bb4788 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Info.plist @@ -0,0 +1,27 @@ + + + + + NSCameraUsageDescription + Decoding barcodes from video needs to access your camera. + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + + diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/SceneDelegate.swift b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/SceneDelegate.swift new file mode 100644 index 00000000..0860c7e6 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/SceneDelegate.swift @@ -0,0 +1,52 @@ +// +// SceneDelegate.swift +// dbrjswebview +// +// Created by Dynamsoft on 2023/4/18. +// + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + guard let _ = (scene as? UIWindowScene) else { return } + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } + + +} + diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/ViewController.swift b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/ViewController.swift new file mode 100644 index 00000000..4e787292 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/ViewController.swift @@ -0,0 +1,116 @@ +// +// ViewController.swift +// dbrjswebview +// +// Created by Dynamsoft on 2023/4/18. +// + +import UIKit +import WebKit + +// Refer: https://developer.apple.com/documentation/webkit/viewing_desktop_or_mobile_web_content_using_a_web_view +class ViewController: UIViewController, WKUIDelegate { + + let webView: WKWebView + + required init?(coder: NSCoder) { + print("entered init") + let configuration = WKWebViewConfiguration() + configuration.allowsInlineMediaPlayback = true + configuration.mediaTypesRequiringUserActionForPlayback = [] + // Refer: https://stackoverflow.com/a/51736967 + configuration.websiteDataStore = WKWebsiteDataStore.default() + webView = WKWebView(frame: .init(), configuration: configuration) + + super.init(coder: coder) + } + + // Refer: https://www.hackingwithswift.com/articles/112/the-ultimate-guide-to-wkwebview + override func loadView() { + self.view = webView + } + + override func viewDidLoad() { + super.viewDidLoad() + print("entered viewDidLoad") + // Do any additional setup after loading the view. + + // Refer: https://stackoverflow.com/a/40316507 + webView.uiDelegate = self + + //let url = URL(string: "https://your.online.website/target/page.html")! + //webView.load(URLRequest(url: url)) + + // load local html + let fileUrl = Bundle.main.url(forResource: "html/decodeFileInVideo", withExtension: "html")! + webView.loadFileURL(fileUrl, allowingReadAccessTo: fileUrl) + print("finish viewDidLoad") + } + + // Refer: https://stackoverflow.com/a/40316507 + + func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, + completionHandler: @escaping () -> Void) { + + let alertController = UIAlertController(title: nil, message: message, preferredStyle: .actionSheet) + alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in + completionHandler() + })) + + present(alertController, animated: true, completion: nil) + } + + + func webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, + completionHandler: @escaping (Bool) -> Void) { + + let alertController = UIAlertController(title: nil, message: message, preferredStyle: .actionSheet) + + alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in + completionHandler(true) + })) + + alertController.addAction(UIAlertAction(title: "Cancel", style: .default, handler: { (action) in + completionHandler(false) + })) + + present(alertController, animated: true, completion: nil) + } + + + func webView(_ webView: WKWebView, runJavaScriptTextInputPanelWithPrompt prompt: String, defaultText: String?, initiatedByFrame frame: WKFrameInfo, + completionHandler: @escaping (String?) -> Void) { + + let alertController = UIAlertController(title: nil, message: prompt, preferredStyle: .actionSheet) + + alertController.addTextField { (textField) in + textField.text = defaultText + } + + alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in + if let text = alertController.textFields?.first?.text { + completionHandler(text) + } else { + completionHandler(defaultText) + } + })) + + alertController.addAction(UIAlertAction(title: "Cancel", style: .default, handler: { (action) in + completionHandler(nil) + })) + + present(alertController, animated: true, completion: nil) + } + + // Auto grant camera access + // Refer: https://stackoverflow.com/a/72729381/6414094 + func webView(_ webView: WKWebView, + requestMediaCapturePermissionFor + origin: WKSecurityOrigin,initiatedByFrame + frame: WKFrameInfo,type: WKMediaCaptureType, + decisionHandler: @escaping (WKPermissionDecision) -> Void){ + decisionHandler(.grant) + } + +} + diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/html/decodeFileInVideo.html b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/html/decodeFileInVideo.html new file mode 100644 index 00000000..019ad007 --- /dev/null +++ b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/html/decodeFileInVideo.html @@ -0,0 +1,85 @@ + + + + + + + + Dynamsoft Barcode Scanner Sample - Hello World (Decode via Camera) + + + + +

    + Hello World (Scan One Single Barcode via Camera) +

    + +
    + + + + + + + + + + + + + \ No newline at end of file diff --git a/foundational-api-samples/hello-world/pwa/service-worker.js b/foundational-api-samples/hello-world/pwa/service-worker.js index 62afc1bf..3af6a731 100644 --- a/foundational-api-samples/hello-world/pwa/service-worker.js +++ b/foundational-api-samples/hello-world/pwa/service-worker.js @@ -4,6 +4,9 @@ const engineResourcePaths = { // Files to cache const cacheName = "helloworld-pwa"; +// Here we choose some files into appShellFiles to cache. +// To keep it simple, you can put all the files +// in "node_modules/dynamsoft-barcode-reader-bundle/dist" into the list. const appShellFiles = [ "./helloworld-pwa.html", "./dynamsoft-192x192.png", From 1ed3648275e83389dc3b7b8c492509774a9ddd93 Mon Sep 17 00:00:00 2001 From: Keillion Date: Tue, 2 Sep 2025 09:56:17 +0800 Subject: [PATCH 180/223] add more sample link in readme --- .../scan-single-barcode/README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/barcode-scanner-api-samples/scan-single-barcode/README.md b/barcode-scanner-api-samples/scan-single-barcode/README.md index d2836d05..35cbba46 100644 --- a/barcode-scanner-api-samples/scan-single-barcode/README.md +++ b/barcode-scanner-api-samples/scan-single-barcode/README.md @@ -131,6 +131,15 @@ It allows users to dynamically select a scanning template (e.g., DPM, Dot Code, * [**Hello World in Angular**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/angular): Read single barcode from camera in an Angular application. * [**Hello World in React**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/react): Read single barcode from camera in a React application. * [**Hello World in Vue**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/vue): Read single barcode from camera in a Vue application. +* [**Hello World in Svelte**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/svelte): Read single barcode from camera in a Svelte application. +* [**Hello World in Capacitor**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/capacitor): Read single barcode from camera in a Capacitor application. +* [**Hello World in Webview**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/webview): Read single barcode from camera in a Webview application. +* [**Hello World in Typescript**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/native-ts): Read single barcode from camera in a Typescript application. +* [**Hello World in Electron**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/electron): Read single barcode from camera in a Electron application. +* [**Hello World in Blazor**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/blazor): Read single barcode from camera in a Blazor application. +* [**Hello World in RequireJS**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/requirejs.html): Read single barcode from camera in a RequireJS application. +* [**Hello World in ES6**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/es6.html): Read single barcode from camera in a ES6 application. +* [**Hello World in PWA**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/pwa): Read single barcode from camera in a PWA application. Scan multiple barcodes: From 3971e8f0f9926c569ad9b90dac37c879ae03fb6d Mon Sep 17 00:00:00 2001 From: Keillion Date: Tue, 2 Sep 2025 10:02:57 +0800 Subject: [PATCH 181/223] Shallower folder hierarchies --- .../BlazorApp => }/App.razor | 0 .../BlazorApp => }/BlazorApp.csproj | 0 .../BlazorApp => }/Layout/MainLayout.razor | 0 .../BlazorApp => }/Pages/Home.razor | 0 .../BlazorApp => }/Program.cs | 0 .../Properties/launchSettings.json | 0 .../BlazorApp => }/_Imports.razor | 0 .../BlazorApp => }/wwwroot/index.html | 0 .../capacitor/ios/capacitorApp.zip | Bin 488880 -> 0 bytes 9 files changed, 0 insertions(+), 0 deletions(-) rename barcode-scanner-api-samples/scan-single-barcode/blazor/{hello-world-blazor/BlazorApp => }/App.razor (100%) rename barcode-scanner-api-samples/scan-single-barcode/blazor/{hello-world-blazor/BlazorApp => }/BlazorApp.csproj (100%) rename barcode-scanner-api-samples/scan-single-barcode/blazor/{hello-world-blazor/BlazorApp => }/Layout/MainLayout.razor (100%) rename barcode-scanner-api-samples/scan-single-barcode/blazor/{hello-world-blazor/BlazorApp => }/Pages/Home.razor (100%) rename barcode-scanner-api-samples/scan-single-barcode/blazor/{hello-world-blazor/BlazorApp => }/Program.cs (100%) rename barcode-scanner-api-samples/scan-single-barcode/blazor/{hello-world-blazor/BlazorApp => }/Properties/launchSettings.json (100%) rename barcode-scanner-api-samples/scan-single-barcode/blazor/{hello-world-blazor/BlazorApp => }/_Imports.razor (100%) rename barcode-scanner-api-samples/scan-single-barcode/blazor/{hello-world-blazor/BlazorApp => }/wwwroot/index.html (100%) delete mode 100644 barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/capacitorApp.zip diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/hello-world-blazor/BlazorApp/App.razor b/barcode-scanner-api-samples/scan-single-barcode/blazor/App.razor similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/blazor/hello-world-blazor/BlazorApp/App.razor rename to barcode-scanner-api-samples/scan-single-barcode/blazor/App.razor diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/hello-world-blazor/BlazorApp/BlazorApp.csproj b/barcode-scanner-api-samples/scan-single-barcode/blazor/BlazorApp.csproj similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/blazor/hello-world-blazor/BlazorApp/BlazorApp.csproj rename to barcode-scanner-api-samples/scan-single-barcode/blazor/BlazorApp.csproj diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor b/barcode-scanner-api-samples/scan-single-barcode/blazor/Layout/MainLayout.razor similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor rename to barcode-scanner-api-samples/scan-single-barcode/blazor/Layout/MainLayout.razor diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/hello-world-blazor/BlazorApp/Pages/Home.razor b/barcode-scanner-api-samples/scan-single-barcode/blazor/Pages/Home.razor similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/blazor/hello-world-blazor/BlazorApp/Pages/Home.razor rename to barcode-scanner-api-samples/scan-single-barcode/blazor/Pages/Home.razor diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/hello-world-blazor/BlazorApp/Program.cs b/barcode-scanner-api-samples/scan-single-barcode/blazor/Program.cs similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/blazor/hello-world-blazor/BlazorApp/Program.cs rename to barcode-scanner-api-samples/scan-single-barcode/blazor/Program.cs diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/hello-world-blazor/BlazorApp/Properties/launchSettings.json b/barcode-scanner-api-samples/scan-single-barcode/blazor/Properties/launchSettings.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/blazor/hello-world-blazor/BlazorApp/Properties/launchSettings.json rename to barcode-scanner-api-samples/scan-single-barcode/blazor/Properties/launchSettings.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/hello-world-blazor/BlazorApp/_Imports.razor b/barcode-scanner-api-samples/scan-single-barcode/blazor/_Imports.razor similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/blazor/hello-world-blazor/BlazorApp/_Imports.razor rename to barcode-scanner-api-samples/scan-single-barcode/blazor/_Imports.razor diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/hello-world-blazor/BlazorApp/wwwroot/index.html b/barcode-scanner-api-samples/scan-single-barcode/blazor/wwwroot/index.html similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/blazor/hello-world-blazor/BlazorApp/wwwroot/index.html rename to barcode-scanner-api-samples/scan-single-barcode/blazor/wwwroot/index.html diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/capacitorApp.zip b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/capacitorApp.zip deleted file mode 100644 index b096bbdd221150faae215fe15795d4667be91196..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 488880 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
  • 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 vnZJ4A;x=Cu zpNhbVCrO0=Ue>Gv#0NI8fREAo%}2Hu@PY8_>!PSBb?Z}^&}?hMJaS4Gve4foC{1^Gq>_xVvBNGnF6M;Usuf3GYt z5$iNp_F9e-0K6_|`JBE0QSrt(Gxr|!VyU8Qt7CyseezhV0=~5d5>u`U`xfY_;qSJj zFv2PdH4A`NAR@-%jww6bvn>$r+Mc}ttI@xdO;Ef$uK=bi-a#=?Cz2XPIi239bDEb` zea8p)IrH!8fD%B#%7MItt__;Y7N{O-x27^&At%{KKGM+$;e(_BJs58qN&Cfd)H;DM z7{s%v3lBz!lE~R9Qa=G=!cgQrR2xFO3C+ekFlUye$n9jjP7BC`<+ojW!2lV_Znp0~ z+=#z|h&d0o=_=0;>MNksuBbqbljm8Y6?{?z34HI_zw-mCnIPaLq1SSE3Hu|!2srP`=R@xMixm6 zKJ{&foHZhu;ZT@J_bd|1H6?Q`PORKPDX7`lj~GPgabX!`qDk}BVN-F*Oyfs?4H~P zcBTTa#-7z)4GZ+~qZMTkul@ek`bI0}BTa);B;wv<*j|2xD$i9~F!Ni#X47KMHXd%T zx7vuN74IN(a|q8N(JKi)OsyGoy}fyV`}%5@H>qEiZ?ek_9p!!e=vQQgfo?Pi5#-zD zRaso*757X-C~%sMA&lFAdo=78t^I6u

    ?u-lKCpT74 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 From 5290e1fa95ece174f0cafd0c8907b1ba96f5b86e Mon Sep 17 00:00:00 2001 From: Justin Date: Tue, 2 Sep 2025 14:55:02 +0800 Subject: [PATCH 182/223] Add links for new framework samples --- README.md | 9 +++ .../scan-multiple-barcodes/README.md | 11 +++- index.html | 61 ++++++++++++++++++- 3 files changed, 77 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 791afe48..ca158121 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,15 @@ Get the basic features working with plain/native JavaScript or within a framewor * [**Hello World in Angular**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/angular): Read single barcode from camera in an Angular application. * [**Hello World in React**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/react): Read single barcode from camera in a React application. * [**Hello World in Vue**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/vue): Read single barcode from camera in a Vue application. +* [**Hello World in Svelte**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/svelte): Read single barcode from camera in a Svelte application. +* [**Hello World in Capacitor**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/capacitor): Read single barcode from camera in a Capacitor application. +* [**Hello World in Webview**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/webview): Read single barcode from camera in a Webview application. +* [**Hello World in Typescript**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/native-ts): Read single barcode from camera in a Typescript application. +* [**Hello World in Electron**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/electron): Read single barcode from camera in a Electron application. +* [**Hello World in Blazor**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/blazor): Read single barcode from camera in a Blazor application. +* [**Hello World in RequireJS**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/requirejs.html): Read single barcode from camera in a RequireJS application. +* [**Hello World in ES6**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/es6.html): Read single barcode from camera in a ES6 application. +* [**Hello World in PWA**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/pwa): Read single barcode from camera in a PWA application. **Scan multiple barcodes** diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/README.md b/barcode-scanner-api-samples/scan-multiple-barcodes/README.md index c1df723a..06dc7bd7 100644 --- a/barcode-scanner-api-samples/scan-multiple-barcodes/README.md +++ b/barcode-scanner-api-samples/scan-multiple-barcodes/README.md @@ -112,4 +112,13 @@ Multiple samples are provided for single barcode scanning. These samples can be * [**Use customized template**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/use-customized-template): Use different customized templates for scanning various barcode types. * [**Hello World in Angular**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/angular): Read single barcode from camera in an Angular application. * [**Hello World in React**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/react): Read single barcode from camera in a React application. -* [**Hello World in Vue**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/vue): Read single barcode from camera in a Vue application. \ No newline at end of file +* [**Hello World in Vue**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/vue): Read single barcode from camera in a Vue application. +* [**Hello World in Svelte**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/svelte): Read single barcode from camera in a Svelte application. +* [**Hello World in Capacitor**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/capacitor): Read single barcode from camera in a Capacitor application. +* [**Hello World in Webview**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/webview): Read single barcode from camera in a Webview application. +* [**Hello World in Typescript**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/native-ts): Read single barcode from camera in a Typescript application. +* [**Hello World in Electron**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/electron): Read single barcode from camera in a Electron application. +* [**Hello World in Blazor**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/blazor): Read single barcode from camera in a Blazor application. +* [**Hello World in RequireJS**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/requirejs.html): Read single barcode from camera in a RequireJS application. +* [**Hello World in ES6**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/es6.html): Read single barcode from camera in a ES6 application. +* [**Hello World in PWA**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/pwa): Read single barcode from camera in a PWA application. \ No newline at end of file diff --git a/index.html b/index.html index 4d79cc2a..3bd7947f 100644 --- a/index.html +++ b/index.html @@ -131,14 +131,14 @@

    BarcodeScanner API Samples

    templates for scanning various barcode types.">Use Customized Template
  • Scan Multiple Barcodes
    From 8a2f441ceb83cf51753021496f100d2b1b879745 Mon Sep 17 00:00:00 2001 From: Justin Date: Tue, 2 Sep 2025 15:57:42 +0800 Subject: [PATCH 183/223] add framework logo --- index.html | 44 +++++++++++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/index.html b/index.html index 3bd7947f..7a9b09f1 100644 --- a/index.html +++ b/index.html @@ -156,24 +156,32 @@

    BarcodeScanner API Samples

    @@ -338,22 +352,30 @@

    Foundational API Samples

    From ace37604661651fd6946a02af94728ba89426b66 Mon Sep 17 00:00:00 2001 From: Justin Date: Tue, 2 Sep 2025 17:18:48 +0800 Subject: [PATCH 184/223] fix prompt message --- .../use-case/read-and-parse-GS1-AI/index.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/foundational-api-samples/use-case/read-and-parse-GS1-AI/index.html b/foundational-api-samples/use-case/read-and-parse-GS1-AI/index.html index 4689e91c..ca1126b2 100644 --- a/foundational-api-samples/use-case/read-and-parse-GS1-AI/index.html +++ b/foundational-api-samples/use-case/read-and-parse-GS1-AI/index.html @@ -4,9 +4,9 @@ - - - + + + Dynamsoft Barcode Reader Sample - Read a GS1-AI @@ -167,7 +167,7 @@

    Read a GS1-AI

    async function backToCameraMode() { closeResultAlert(); - document.querySelector("#span-tip").innerText = "Aim at the barcode on the driver's license."; + document.querySelector("#span-tip").innerText = "Aim at the GS1 barcode."; await switchToVideo(); } @@ -184,7 +184,7 @@

    Read a GS1-AI

    async function switchToVideo() { document.querySelector("#main-container").style.display = "block"; - document.querySelector("#span-tip").innerText = "Aim at the barcode on the driver's license."; + document.querySelector("#span-tip").innerText = "Aim at the GS1 barcode."; document.querySelector("#span-tip").hidden = false; cameraViewContainer.style.display = "block"; From b4f2df03c4dcdf33a6ca5a0ae749864a3e9d0b35 Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 3 Sep 2025 09:31:40 +0800 Subject: [PATCH 185/223] fix canonical URL --- .../use-case/fill-a-form-with-barcode-reading.html | 2 +- .../use-case/read-and-parse-GS1-AI/index.html | 2 +- .../use-case/show-result-texts-on-the-video.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/foundational-api-samples/use-case/fill-a-form-with-barcode-reading.html b/foundational-api-samples/use-case/fill-a-form-with-barcode-reading.html index 341658b7..90a214a6 100644 --- a/foundational-api-samples/use-case/fill-a-form-with-barcode-reading.html +++ b/foundational-api-samples/use-case/fill-a-form-with-barcode-reading.html @@ -6,7 +6,7 @@ - + Dynamsoft Barcode Reader Sample - Fill Forms with Dynamsoft Barcode Reader - - - -

    - Hello World (Scan Multiple Barcodes via Camera) -

    - -
    - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/README.md b/barcode-scanner-api-samples/scan-single-barcode/README.md deleted file mode 100644 index 35cbba46..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/README.md +++ /dev/null @@ -1,148 +0,0 @@ -# 📦 Scan Single Barcode - -## 🚀 1.Hello World - -This sample demonstrates how to use the `BarcodeScanner` API from the [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/) to scan a **single barcode** from a video stream using plain JavaScript. - -### ✨ Features - -- Uses `BarcodeScanner` APIs from `dynamsoft-barcode-reader-bundle` -- Scans a single barcode at a time -- UI rendered to a container element - -### 🔧 How It Works - -The sample uses the `BarcodeScanner` class to launch a scanner and decode a single barcode from a camera stream. The key configuration includes: - -- **License Key** – Required to activate the SDK. -- **`engineResourcePaths`** – Points to required resources hosted on a CDN or locally. -- **UI container** – An HTML element where the scanner is rendered. - -```ts -const config = { - license: "YOUR-LICENSE-KEY", - engineResourcePaths: { - // feel free to change it to your own path - rootDirectory: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.0.6000/dist/", - }, - container: ".barcode-scanner-view", -}; -``` - -The BarcodeScanner instance is created and launched like this: - -```ts -const barcodeScanner = new Dynamsoft.BarcodeScanner(config); -barcodeScanner.launch(); -``` - -### 📌 Notes - -- This sample scans one **single barcode**, you can configure `scanMode` to change the behavior to scan multiple barcodes. -- To avoid network-related loading issues, consider hosting all required resources locally. - -## 🛒 2. Scan and Search - -This simple demonstrates how to use the `BarcodeScanner` API to scan a product barcode and simulate a search from a product database. - -### ✨ Features - -- Scan Barcodes using your device camera -- Search by Text or Barcode input -- Displays mock product data as search results -- Responsive UI with modern styling - -### 🔄 Sample Usage Flow - -1. Click the Scan button to launch the barcode scanner. -2. Once a barcode is detected, its value is displayed along with placeholder product information. -3. Alternatively, type a product name or barcode manually in the input field and click Search. -4. Results are displayed in the Search Result text area. - -### 📌 Notes - -- No real backend is connected in this demo; results are mocked. -- You can integrate with a real product API by replacing the placeholder content in the searchResult.value. - -## 📷 3. Pick One To Fill - -A web-based form-filling utility that uses the `BarcodeScanner` to scan and auto-fill fields by simply opening the camera and scanning a barcode. - -### ✨ Features - -- Field-specific Camera Activation -Open the camera individually for different fields. - -- Manual control when to start decoding -Start decoding manually after aiming at the target to reduce the risk of misreads and missed barcodes. - -- Auto-Fill with Scan Result -Automatically populates input fields with scanned barcode values. - -### 🔄 Sample Usage Flow - -1. Click the "Open Camera" button to activate the camera. - -2. Aim at the sample image shown below. - -3. Click the "Decode" button to start barcode recognition. - -4. If only one barcode is detected, its value will be automatically filled into the corresponding field. - If multiple barcodes are detected, the video stream will freeze, and you’ll need to manually select one from the decoded results to fill in. - -### 📌 Notes - -- This usage is especially suitable for scenarios with densely packed barcodes, where secondary confirmation or manual selection is highly needed. -- You can find a sample reference image in `./pick-one-to-fill/`. - -## 🎥 4. Use Customized Template - -This is a sample web application demonstrating how to use the `BarcodeScanner` with different customized templates for scanning various barcode types. - -It allows users to dynamically select a scanning template (e.g., DPM, Dot Code, OneD Retail, OneD Industrial), and launch a camera-based barcode scanner accordingly. - -### ✨ Features - -- Support for custom barcode scanning templates using local JSON files. - -- Easily switch between different template configurations. - -### 🔄 Sample Usage Flow - -1. Open the HTML file in a browser. The app will automatically initialize the scanner using the ReadDPM template. - -2. Choose from the available templates: - - Direct Part Marking (DPM) - - Dot Code - - OneD Retail - - OneD Industrial - - Scanner Loads with Selected Template. When a new template is selected, the scanner is re-initialized using the corresponding .json file. - -3. Point your camera at a barcode matching the selected template type. A popup alert will display the result upon successful detection. - -### 📌 Notes - -- The scanner is disposed and recreated every time a different template is selected, ensuring the correct settings are applied. -- You can find sample images in `./use-customized-template/`. - -## 📄 See other BarcodeScanner samples - -* [**Hello World in Angular**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/angular): Read single barcode from camera in an Angular application. -* [**Hello World in React**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/react): Read single barcode from camera in a React application. -* [**Hello World in Vue**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/vue): Read single barcode from camera in a Vue application. -* [**Hello World in Svelte**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/svelte): Read single barcode from camera in a Svelte application. -* [**Hello World in Capacitor**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/capacitor): Read single barcode from camera in a Capacitor application. -* [**Hello World in Webview**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/webview): Read single barcode from camera in a Webview application. -* [**Hello World in Typescript**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/native-ts): Read single barcode from camera in a Typescript application. -* [**Hello World in Electron**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/electron): Read single barcode from camera in a Electron application. -* [**Hello World in Blazor**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/blazor): Read single barcode from camera in a Blazor application. -* [**Hello World in RequireJS**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/requirejs.html): Read single barcode from camera in a RequireJS application. -* [**Hello World in ES6**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/es6.html): Read single barcode from camera in a ES6 application. -* [**Hello World in PWA**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/pwa): Read single barcode from camera in a PWA application. - -Scan multiple barcodes: - -* [**Hello World**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes): Scan multiple barcodes from video stream with minimum code in JavaScript. -* [**Cart Builder**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes): Simulates a shopping experience where users scan barcodes to add items to a dynamic cart. -* [**Batch Inventory**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/main/barcode-scanner-api-samples/scan-multiple-barcodes/batch-inventory/index.html): An inventory management tool scan barcodes in batches and provide real-time analysis of the scanned data. \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadDPM.json b/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadDPM.json deleted file mode 100644 index ec54f7e2..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadDPM.json +++ /dev/null @@ -1,141 +0,0 @@ -{ - "BarcodeReaderTaskSettingOptions": [ - { - "BarcodeFormatIds": [ - "BF_DATAMATRIX" - ], - "DPMCodeReadingModes": [ - { - "Mode": "DPMCRM_GENERAL" - } - ], - "ExpectedBarcodesCount": 1, - "Name": "task_read_dpm", - "SectionArray": [ - { - "ImageParameterName": "ip_read_dpm", - "Section": "ST_REGION_PREDETECTION", - "StageArray": [ - { - "Stage": "SST_PREDETECT_REGIONS" - } - ] - }, - { - "ImageParameterName": "ip_read_dpm", - "Section": "ST_BARCODE_LOCALIZATION", - "StageArray": [ - { - "LocalizationModes": [ - { - "Mode": "LM_STATISTICS_MARKS" - }, - { - "Mode": "LM_CONNECTED_BLOCKS" - } - ], - "Stage": "SST_LOCALIZE_CANDIDATE_BARCODES" - }, - { - "Stage": "SST_LOCALIZE_BARCODES" - } - ] - }, - { - "ImageParameterName": "ip_read_dpm", - "Section": "ST_BARCODE_DECODING", - "StageArray": [ - { - "Stage": "SST_RESIST_DEFORMATION" - }, - { - "Stage": "SST_COMPLEMENT_BARCODE" - }, - { - "Stage": "SST_SCALE_BARCODE_IMAGE" - }, - { - "Stage": "SST_DECODE_BARCODES" - } - ] - } - ], - "TextResultOrderModes": [ - { - "Mode": "TROM_POSITION" - }, - { - "Mode": "TROM_FORMAT" - }, - { - "Mode": "TROM_CONFIDENCE" - } - ] - } - ], - "CaptureVisionTemplates": [ - { - "ImageROIProcessingNameArray": [ - "roi_read_dpm" - ], - "Name": "ReadDPM" - } - ], - "ImageParameterOptions": [ - { - "ApplicableStages": [ - { - "Stage": "SST_INPUT_COLOR_IMAGE" - }, - { - "Stage": "SST_SCALE_IMAGE" - }, - { - "Stage": "SST_CONVERT_TO_GRAYSCALE" - }, - { - "Stage": "SST_TRANSFORM_GRAYSCALE" - }, - { - "Stage": "SST_ENHANCE_GRAYSCALE" - }, - { - "Stage": "SST_BINARIZE_IMAGE" - }, - { - "Stage": "SST_DETECT_TEXTURE" - }, - { - "Stage": "SST_REMOVE_TEXTURE_FROM_GRAYSCALE" - }, - { - "Stage": "SST_BINARIZE_TEXTURE_REMOVED_GRAYSCALE" - }, - { - "Stage": "SST_FIND_CONTOURS" - }, - { - "Stage": "SST_DETECT_SHORTLINES" - }, - { - "Stage": "SST_ASSEMBLE_LINES" - }, - { - "Stage": "SST_DETECT_TEXT_ZONES" - }, - { - "Stage": "SST_REMOVE_TEXT_ZONES_FROM_BINARY" - } - ], - "Name": "ip_read_dpm" - } - ], - "TargetROIDefOptions": [ - { - "Name": "roi_read_dpm", - "TaskSettingNameArray": [ - "task_read_dpm" - ] - } - ] -} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadDotcode.json b/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadDotcode.json deleted file mode 100644 index f552988d..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadDotcode.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "BarcodeFormatSpecificationOptions": [ - { - "BarcodeFormatIds": [ - "BF_DOTCODE" - ], - "MinResultConfidence": 0, - "Name": "FP_1" - } - ], - "BarcodeReaderTaskSettingOptions": [ - { - "BarcodeFormatIds": [ - "BF_DOTCODE" - ], - "BarcodeFormatSpecificationNameArray": [ - "FP_1" - ], - "ExpectedBarcodesCount": 1, - "Name": "BR_1", - "SectionArray": [ - { - "ImageParameterName": "IP_1", - "Section": "ST_REGION_PREDETECTION", - "StageArray": [ - { - "Stage": "SST_PREDETECT_REGIONS" - } - ] - }, - { - "ImageParameterName": "IP_1", - "Section": "ST_BARCODE_LOCALIZATION", - "StageArray": [ - { - "LocalizationModes": [ - { - "Mode": "LM_STATISTICS_MARKS" - } - ], - "Stage": "SST_LOCALIZE_CANDIDATE_BARCODES" - } - ] - }, - { - "ImageParameterName": "IP_1", - "Section": "ST_BARCODE_DECODING", - "StageArray": [ - { - "DeblurModes": [ - { - "Mode": "DM_DEEP_ANALYSIS" - } - ], - "Stage": "SST_DECODE_BARCODES" - } - ] - } - ] - } - ], - "CaptureVisionTemplates": [ - { - "ImageROIProcessingNameArray": [ - "roi_default" - ], - "Name": "ReadDotcode" - } - ], - "ImageParameterOptions": [ - { - "ApplicableStages": [ - { - "GrayscaleTransformationModes": [ - { - "Mode": "GTM_INVERTED" - } - ], - "Stage": "SST_TRANSFORM_GRAYSCALE" - }, - { - "BinarizationModes": [ - { - "BlockSizeX": 9, - "BlockSizeY": 9, - "EnableFillBinaryVacancy": 0, - "Mode": "BM_LOCAL_BLOCK", - "ThresholdCompensation": 20 - }, - { - "BlockSizeX": 15, - "BlockSizeY": 15, - "EnableFillBinaryVacancy": 0, - "Mode": "BM_LOCAL_BLOCK", - "MorphOperation": "open", - "MorphOperationKernelSizeX": 3, - "MorphOperationKernelSizeY": 3, - "MorphShape": "Ellipse" - }, - { - "BlockSizeX": 15, - "BlockSizeY": 15, - "EnableFillBinaryVacancy": 0, - "Mode": "BM_LOCAL_BLOCK", - "ThresholdCompensation": 20 - } - ], - "Stage": "SST_BINARIZE_IMAGE" - }, - { - "Stage": "SST_DETECT_TEXTURE", - "TextureDetectionModes": [ - { - "Mode": "TDM_SKIP" - } - ] - } - ], - "Name": "IP_1" - } - ], - "TargetROIDefOptions": [ - { - "Name": "roi_default", - "TaskSettingNameArray": [ - "BR_1" - ] - } - ] -} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadOneDIndustrial.json b/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadOneDIndustrial.json deleted file mode 100644 index c07ecd7a..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadOneDIndustrial.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "BarcodeReaderTaskSettingOptions": [ - { - "BarcodeFormatIds": ["BF_CODE_128", "BF_CODE_39", "BF_ITF", "BF_MATRIX_25", "BF_USPSINTELLIGENTMAIL"], - "ExpectedBarcodesCount": 1, - "Name": "task_read_single_barcode", - "SectionArray": [ - { - "ImageParameterName": "ip_read_single_barcode", - "Section": "ST_REGION_PREDETECTION" - }, - { - "ImageParameterName": "ip_read_single_barcode", - "Section": "ST_BARCODE_LOCALIZATION", - "StageArray": [ - { - "LocalizationModes": [ - { - "Mode": "LM_SCAN_DIRECTLY", - "ScanDirection": 2 - }, - { - "Mode": "LM_CONNECTED_BLOCKS" - } - ], - "Stage": "SST_LOCALIZE_CANDIDATE_BARCODES" - } - ] - }, - { - "ImageParameterName": "ip_read_single_barcode", - "Section": "ST_BARCODE_DECODING", - "StageArray": [ - { - "DeblurModes": [ - { - "Mode": "DM_BASED_ON_LOC_BIN" - }, - { - "Mode": "DM_DIRECT_BINARIZATION" - }, - { - "Mode": "DM_DEEP_ANALYSIS" - } - ], - "Stage": "SST_DECODE_BARCODES" - } - ] - } - ] - } - ], - "CaptureVisionTemplates": [ - { - "ImageROIProcessingNameArray": [ - "roi_read_single_barcode" - ], - "Name": "ReadOneDIndustrial" - } - ], - "ImageParameterOptions": [ - { - "ApplicableStages": [ - { - "BinarizationModes": [ - { - "BlockSizeX": 27, - "BlockSizeY": 27, - "EnableFillBinaryVacancy": 0, - "Mode": "BM_LOCAL_BLOCK" - } - ], - "Stage": "SST_BINARIZE_IMAGE" - } - ], - "Name": "ip_read_single_barcode" - } - ], - "TargetROIDefOptions": [ - { - "Name": "roi_read_single_barcode", - "TaskSettingNameArray": [ - "task_read_single_barcode" - ] - } - ] -} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadOneDRetail.json b/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadOneDRetail.json deleted file mode 100644 index d69905f7..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadOneDRetail.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "BarcodeReaderTaskSettingOptions": [ - { - "BarcodeFormatIds": ["BF_EAN_13", "BF_EAN_8", "BF_UPC_A", "BF_UPC_E"], - "ExpectedBarcodesCount": 0, - "Name": "task_read_single_barcode", - "SectionArray": [ - { - "ImageParameterName": "ip_read_single_barcode", - "Section": "ST_REGION_PREDETECTION" - }, - { - "ImageParameterName": "ip_read_single_barcode", - "Section": "ST_BARCODE_LOCALIZATION", - "StageArray": [ - { - "LocalizationModes": [ - { - "Mode": "LM_SCAN_DIRECTLY", - "ScanDirection": 2 - }, - { - "Mode": "LM_CONNECTED_BLOCKS" - } - ], - "Stage": "SST_LOCALIZE_CANDIDATE_BARCODES" - } - ] - }, - { - "ImageParameterName": "ip_read_single_barcode", - "Section": "ST_BARCODE_DECODING", - "StageArray": [ - { - "DeblurModes": [ - { - "Mode": "DM_BASED_ON_LOC_BIN" - }, - { - "Mode": "DM_DIRECT_BINARIZATION" - }, - { - "Mode": "DM_DEEP_ANALYSIS" - } - ], - "Stage": "SST_DECODE_BARCODES" - } - ] - } - ] - } - ], - "CaptureVisionTemplates": [ - { - "ImageROIProcessingNameArray": [ - "roi_read_single_barcode" - ], - "Name": "ReadOneDRetail" - } - ], - "ImageParameterOptions": [ - { - "ApplicableStages": [ - { - "BinarizationModes": [ - { - "BlockSizeX": 27, - "BlockSizeY": 27, - "EnableFillBinaryVacancy": 0, - "Mode": "BM_LOCAL_BLOCK" - } - ], - "Stage": "SST_BINARIZE_IMAGE" - } - ], - "Name": "ip_read_single_barcode" - } - ], - "TargetROIDefOptions": [ - { - "Name": "roi_read_single_barcode", - "TaskSettingNameArray": [ - "task_read_single_barcode" - ] - } - ] -} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/cigarette-dotcode.png b/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/cigarette-dotcode.png deleted file mode 100644 index 8c7e481a1dba5db471561f9f79c8cb6f32c6e707..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19150 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�jd@ED;H>5qU;kS-DG>` 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/-HEXOTz!ig?knZ@rvfSuTS& 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 - - - - - - Use Customized Template with BarcodeScanner - - - - - - - - -

    -
    Use Customized Template
    -
    -
    - - - - -
    -
    -
    -
    - - - - - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/README.md b/foundational-api-samples/hello-world/README.md deleted file mode 100644 index 32a6d23d..00000000 --- a/foundational-api-samples/hello-world/README.md +++ /dev/null @@ -1,102 +0,0 @@ -# The Hello World Sample Set - -As you have already gone through the [user guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.0.6000#hello-world---simplest-implementation), you may have come across some basic "Hello World" code that can help you create a simple web application using our SDK quickly. - -In this set of samples, we will revisit the "Hello World" code and show how to implement it using some popular frameworks, such as Angular, React, and Vue. - -Let's now go through each of the samples. - -## Hello World - -In this example, you will learn the minimum codes required to initialize and set up the SDK. - -Let's quickly break down the methods used in order: - -- `Dynamsoft.License.LicenseManager.initLicense()`: This method initializes the license for using the SDK in the application. -- `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 [`Image Source Adapter`](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 object created with `Dynamsoft.DCE.CameraEnhancer.createInstance(view)` - - **Coordinate Image-Processing Tasks** - - The coordination happens behind the scenes. `cvRouter` starts the process by specifying a preset template "ReadSingleBarcode" with 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 `resultReceiver` is registered to `cvRouter` via the method `addResultReceiver()`. - ```js - cvRouter.addResultReceiver(resultReceiver); - ``` - - Also note that reading from video is extremely fast and there could be many duplicate results. We can use a `MultiFrameResultCrossFilter` object 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/?lang=js). - -## Hello World - Read Barcodes from an Image - -The second sample processes static images and returns barcode results. - -In this sample, an event listener is set up so that the SDK decodes any images that the user uploads. - -When working with the CaptureVisionRouter class for single image processing, the main method to use is [`capture`](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/single-image-processing.html?lang=js), You can find more details about this method at the link above. - -## Hello World in Angular - -Read more in the README under "angular". - -## Hello World in Blazor - -Read more in the README under "blazor". - -## Hello World in Electron - -Read more in the README under "electron". - -## Hello World in Next.js - -Read more in the README under "next". - -## Hello World in NuxtJS - -Read more in the README under "nuxt". - -## Hello World in PWA - -Read more in the README under "pwa". - -## Hello World in React - -Read more in the README under "react". - -## Hello World in React using Hooks - -Read more in the README under "react-hooks". - -## Hello World in Svelte - -Read more in the README under "svelte". - -## Hello World in Vue - -Read more in the README under "vue". - -## Hello World with RequireJS - -This sample shows how to use the SDK in a web page based on RequireJS. - -## Hello World with ES6 - -This sample shows how to use the SDK in a web page based on ES6 (also known as ECMAScript 2015 or ECMAScript 6). - -## Hello World with WebView - -Read more in the README under "webview". - -## Support - -If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/foundational-api-samples/hello-world/hello-world.html b/foundational-api-samples/hello-world/hello-world.html deleted file mode 100644 index 4f7b72f8..00000000 --- a/foundational-api-samples/hello-world/hello-world.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - - - Dynamsoft Barcode Reader Sample - Hello World (Decode via Camera) - - - -

    Hello World (Decode via Camera)

    -
    - Results:
    -
    - - - - - - - - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/react/.gitignore b/foundational-api-samples/hello-world/react/.gitignore deleted file mode 100644 index 4d29575d..00000000 --- a/foundational-api-samples/hello-world/react/.gitignore +++ /dev/null @@ -1,23 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# production -/build - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/foundational-api-samples/hello-world/react/README.md b/foundational-api-samples/hello-world/react/README.md deleted file mode 100644 index 77617a4c..00000000 --- a/foundational-api-samples/hello-world/react/README.md +++ /dev/null @@ -1,411 +0,0 @@ -# Hello World Sample for React - -[React](https://reactjs.org/) is a JavaScript library meant explicitly for creating interactive UIs. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a React application. Note that in this sample we will use `TypeScript` and define components as classes. Also, there is another sample `react-hooks` using `Hooks` in React. - -In this guide, we will be using [`dynamsoft-barcode-reader-bundle 11.0.6000](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/11.0.6000). - -> Note: -> -> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! -> -> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. - -## Official Sample - -*
    Hello World in React - Source Code - -## Preparation - -Make sure you have [node](https://nodejs.org/) installed. `node 16.20.1` and `react 18.2.0` are used in the example below. - -## Quick Start - -```cmd -npm install -npm start -``` -Then open http://localhost:3000/ to view the sample app. - -## Creating the sample project - -In this section, we will be creating a React application utilizing the Dynamsoft Barcode Reader bundle sdk. - -We'll be exploring how you could create a page that not only enables barcode scanning via a webcam or a built-in camera, but also decode barcodes from local images. - -By the end of this guide, you'll have a good understanding of the SDK and be ready to discover more ways to use it! - -### Create a Bootstrapped Raw React Application with TypeScript - -```cmd -npx create-react-app my-app --template typescript -``` - -### **CD** to the root directory of the application and install necessary libraries - -```cmd -cd my-app -npm install dynamsoft-barcode-reader-bundle@11.0.6000 -E -``` - -## Start to implement - -### Add file "dynamsoft.config.ts" at the root of the app to configure libraries - -```typescript -/* /src/dynamsoft.config.ts */ -import { CoreModule } from "dynamsoft-core"; -import { LicenseManager } from "dynamsoft-license"; -import "dynamsoft-barcode-reader"; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths.rootDirectory = "https://cdn.jsdelivr.net/npm/"; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", { - executeNow: true, -}); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.0.6000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload .wasm file for reading barcodes. It will save time on the initial decoding by skipping the resource loading. -CoreModule.loadWasm(); -``` - -> Note: -> -> * `initLicense()` specify a license key to use the library. You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=sample&product=dbr&package=js to get your own trial license good for 30 days. -> * `engineResourcePaths` tells the library where to get the necessary resources at runtime. - - -### Build directory structure - -* Create a directory `components` under `/src/`, and then create two other directories, `VideoCapture` and `ImageCapture` under `/components/`. - -### Create and edit the `VideoCapture` component - -* Create `VideoCapture.tsx` under `/src/components/VideoCapture/`. The `VideoCapture` component helps decode barcodes via camera. - -* In `VideoCapture.tsx`, add code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```tsx -/* /src/components/VideoCapture/VideoCapture.tsx */ -import React from "react"; -import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { CameraEnhancer, CameraView } from "dynamsoft-camera-enhancer"; -import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; -import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; -import "./VideoCapture.css"; - -const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; - -class VideoCapture extends React.Component { - state = { - resultText: "" - }; - cameraViewContainer: React.RefObject = React.createRef(); - - resolveInit?: () => void; - pInit: Promise = new Promise((r) => (this.resolveInit = r)); - isDestroyed = false; - - cvRouter?: CaptureVisionRouter; - cameraEnhancer?: CameraEnhancer; - - async componentDidMount() { - try { - // Create a `CameraView` instance for UI control and a `CameraEnhancer` instance for camera control. - const cameraView = await CameraView.createInstance(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } // Check if component is destroyed after every async - - this.cameraEnhancer = await CameraEnhancer.createInstance(cameraView); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Get default UI and append it to DOM. - this.cameraViewContainer.current!.append(cameraView.getUIElement()); - - // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. - this.cvRouter = await CaptureVisionRouter.createInstance(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - this.cvRouter.setInput(this.cameraEnhancer); - - // Define a callback for results. - this.cvRouter.addResultReceiver({ - onDecodedBarcodesReceived: (result) => { - if (!result.barcodeResultItems.length) return; - - let _resultText = ""; - console.log(result); - for (let item of result.barcodeResultItems) { - _resultText += `${item.formatString}: ${item.text}\n\n`; - } - this.setState({resultText: _resultText}) - }, - }); - - // Filter out unchecked and duplicate results. - const filter = new MultiFrameResultCrossFilter(); - // Filter out unchecked barcodes. - filter.enableResultCrossVerification("barcode", true); - // Filter out duplicate barcodes within 3 seconds. - filter.enableResultDeduplication("barcode", true); - await this.cvRouter.addResultFilter(filter); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Open camera and start scanning single barcode. - await this.cameraEnhancer.open(); - cameraView.setScanLaserVisible(true); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - await this.cvRouter.startCapturing("ReadSingleBarcode"); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - } catch (ex: any) { - if ((ex as Error)?.message === componentDestroyedErrorMsg) { - console.log(componentDestroyedErrorMsg); - } else { - let errMsg = ex.message || ex; - console.error(errMsg); - alert(errMsg); - } - } - - // Resolve pInit promise once initialization is complete. - this.resolveInit!(); - } - - async componentWillUnmount() { - this.isDestroyed = true; - try { - // Wait for the pInit to complete before disposing resources. - await this.pInit; - this.cvRouter?.dispose(); - this.cameraEnhancer?.dispose(); - } catch (_) {} - } - - render() { - return ( -
    -
    -
    - Results: -
    {this.state.resultText}
    -
    - ); - } -} - -export default VideoCapture; -``` - -> Note: -> -> * The component should never update (check the code for `shouldComponentUpdate()`) so that events bound to the UI stay valid. -> * Also, during 'development', React executes setup and cleanup phases twice in [Strict Mode](https://react.dev/reference/react/StrictMode). To ensure proper functioning of VideoCapture in development, it's advised to avoid using Strict Mode for this component. -> However, if you're still interested on using Strict Mode, we do have a workaround available. Please contact our [support team](#Support) for further assistance. -> * If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customizing-the-ui) - -### Create and edit the `ImageCapture` component - -* Create `ImageCapture.tsx` under `/src/components/ImageCapture/`. The `ImageCapture` component helps decode barcodes in an image. - -* In `ImageCapture.tsx`, add code for initializing and destroying the `CaptureVisionRouter` instance. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```tsx -/* /src/components/ImageCapture/ImageCapture.tsx */ -import React, { ChangeEvent } from "react"; -import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { EnumCapturedResultItemType } from "dynamsoft-core"; -import type { BarcodeResultItem } from "dynamsoft-barcode-reader"; -import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; -import "./ImageCapture.css"; - -class ImageCapture extends React.Component { - resultsContainer: React.RefObject = React.createRef(); - - pCvRouter: Promise | null = null; - isDestroyed = false; - - async captureImage(e: ChangeEvent) { - let files = [...(e.target.files as any as File[])]; - e.target.value = ""; // reset input - this.resultsContainer.current!.innerText = ""; - - try { - const cvRouter = await (this.pCvRouter = this.pCvRouter || CaptureVisionRouter.createInstance()); - if (this.isDestroyed) return; - - for (let file of files) { - // Decode selected image with 'ReadBarcodes_ReadRateFirst' template. - const result = await cvRouter.capture(file, "ReadBarcodes_ReadRateFirst"); - console.log(result); - if (this.isDestroyed) return; - - // Print file name if there's multiple files - if (files.length > 1) { - this.resultsContainer.current!.innerText += `\n${file.name}:\n`; - } - for (let _item of result.items) { - if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { - continue; // check if captured result item is a barcode - } - let item = _item as BarcodeResultItem; - this.resultsContainer.current!.innerText += item.text + "\n"; - } - // If no items are found, display that no barcode was detected - if (!result.items.length) this.resultsContainer.current!.innerText += "No barcode found\n"; - } - } catch (ex: any) { - let errMsg = ex.message || ex; - console.error(errMsg); - alert(errMsg); - } - } - - async componentWillUnmount() { - this.isDestroyed = true; - if (this.pCvRouter) { - try { - (await this.pCvRouter).dispose(); - } catch (_) {} - } - } - - render() { - return ( -
    -
    - -
    -
    -
    - ); - } -} - -export default ImageCapture; -``` - -### Add the `VideoCapture` and `ImageCapture` component to `App.tsx` - -* On `/src/App.tsx`, we will edit the component so that it offers buttons to switch components between `VideoCapture` and `ImageCapture`. - -* Add following code to `App.tsx`. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```tsx -/* src/App.tsx */ -import React from "react"; -import reactLogo from "./assets/logo.svg"; -import "./dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import VideoCapture from "./components/VideoCapture/VideoCapture"; -import ImageCapture from "./components/ImageCapture/ImageCapture"; -import "./App.css"; - -enum Modes { - VIDEO_CAPTURE = "video", - IMAGE_CAPTURE = "image", -} - -class App extends React.Component { - state = { - mode: Modes.VIDEO_CAPTURE, - }; - - showVideoCapture = () => { - this.setState({ - mode: Modes.VIDEO_CAPTURE, - }); - }; - - showImageCapture = () => { - this.setState({ - mode: Modes.IMAGE_CAPTURE, - }); - }; - - render() { - return ( -
    -
    -

    Hello World for React

    - logo -
    -
    - - -
    -
    {this.state.mode === Modes.VIDEO_CAPTURE ? : }
    -
    - ); - } -} - -export default App; -``` - -* Try running the project. - -```cmd -npm start -``` - -If you have followed all the steps correctly, you should now have a functioning page that allows you to scan barcodes from a webcam or a built-in camera. Additionally, if you want to decode a local image, you can click the `Decode Image` button and select the image you want to decode. Any barcodes that are detected will be displayed in a dialog. - -## Development server - -Runs the app in the development mode.\ -Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.\ -You will also see any lint errors in the console. - -## Build - -Builds the app for production to the `build` folder.\ -It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.\ -Your app is ready to be deployed! - -See the section about [deployment](https://create-react-app.dev/docs/deployment/) for more information. - -## Support - -If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/foundational-api-samples/hello-world/react/package.json b/foundational-api-samples/hello-world/react/package.json deleted file mode 100644 index 76008e84..00000000 --- a/foundational-api-samples/hello-world/react/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "dbrjs-react-sample", - "version": "0.1.0", - "private": true, - "homepage": "./", - "dependencies": { - "@testing-library/jest-dom": "^5.17.0", - "@testing-library/react": "^13.4.0", - "@testing-library/user-event": "^13.5.0", - "@types/jest": "^27.5.2", - "@types/node": "^16.18.98", - "@types/react": "^18.3.3", - "@types/react-dom": "^18.3.0", - "dynamsoft-barcode-reader-bundle": "11.0.6000", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "react-scripts": "5.0.1", - "typescript": "^4.9.5", - "web-vitals": "^2.1.4" - }, - "scripts": { - "start": "react-scripts start", - "build": "react-scripts build", - "test": "react-scripts test", - "eject": "react-scripts eject" - }, - "eslintConfig": { - "extends": [ - "react-app", - "react-app/jest" - ] - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - } -} diff --git a/foundational-api-samples/hello-world/react/public/favicon.ico b/foundational-api-samples/hello-world/react/public/favicon.ico deleted file mode 100644 index a11777cc471a4344702741ab1c8a588998b1311a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ diff --git a/foundational-api-samples/hello-world/react/public/index.html b/foundational-api-samples/hello-world/react/public/index.html deleted file mode 100644 index a88f5d4d..00000000 --- a/foundational-api-samples/hello-world/react/public/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - Hello World for React - Dynamsoft Barcode Reader Sample - - - -
    - - - diff --git a/foundational-api-samples/hello-world/react/public/logo192.png b/foundational-api-samples/hello-world/react/public/logo192.png deleted file mode 100644 index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN diff --git a/foundational-api-samples/hello-world/react/public/manifest.json b/foundational-api-samples/hello-world/react/public/manifest.json deleted file mode 100644 index fc7ce894..00000000 --- a/foundational-api-samples/hello-world/react/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} \ No newline at end of file diff --git a/foundational-api-samples/hello-world/react/public/robots.txt b/foundational-api-samples/hello-world/react/public/robots.txt deleted file mode 100644 index e9e57dc4..00000000 --- a/foundational-api-samples/hello-world/react/public/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: diff --git a/foundational-api-samples/hello-world/react/src/App.css b/foundational-api-samples/hello-world/react/src/App.css deleted file mode 100644 index 4b1f0cbc..00000000 --- a/foundational-api-samples/hello-world/react/src/App.css +++ /dev/null @@ -1,50 +0,0 @@ -.hello-world-page { - text-align: center; -} -.title { - display: flex; - justify-content: center; - align-items: center; - margin-top: 20px; -} -.title .title-logo { - width: 60px; - height: 60px; - animation: retate 5s infinite linear; -} -.buttons-container { - text-align: center; - margin: 20px auto; -} -.buttons-container button { - display: inline-block; - border: 1px solid black; - padding: 5px 15px; - background-color: transparent; - cursor: pointer; -} -.buttons-container button:first-child { - border-top-left-radius: 10px; - border-bottom-left-radius: 10px; - border-right: transparent; -} -.buttons-container button:nth-child(2) { - border-top-right-radius: 10px; - border-bottom-right-radius: 10px; - border-left: transparent; -} - -@media screen and (max-width: 800px) { - .buttons-container { - width: 70%; - } -} - -@keyframes retate { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/foundational-api-samples/hello-world/react/src/App.tsx b/foundational-api-samples/hello-world/react/src/App.tsx deleted file mode 100644 index 4aa79319..00000000 --- a/foundational-api-samples/hello-world/react/src/App.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import React from "react"; -import reactLogo from "./assets/logo.svg"; -import "./dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import VideoCapture from "./components/VideoCapture/VideoCapture"; -import ImageCapture from "./components/ImageCapture/ImageCapture"; -import "./App.css"; - -enum Modes { - VIDEO_CAPTURE = "video", - IMAGE_CAPTURE = "image", -} - -class App extends React.Component { - state = { - mode: Modes.VIDEO_CAPTURE, - }; - - showVideoCapture = () => { - this.setState({ - mode: Modes.VIDEO_CAPTURE, - }); - }; - - showImageCapture = () => { - this.setState({ - mode: Modes.IMAGE_CAPTURE, - }); - }; - - render() { - return ( -
    -
    -

    Hello World for React

    - logo -
    -
    - - -
    -
    {this.state.mode === Modes.VIDEO_CAPTURE ? : }
    -
    - ); - } -} - -export default App; diff --git a/foundational-api-samples/hello-world/react/src/assets/logo.svg b/foundational-api-samples/hello-world/react/src/assets/logo.svg deleted file mode 100644 index 9dfc1c05..00000000 --- a/foundational-api-samples/hello-world/react/src/assets/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/react/src/components/ImageCapture/ImageCapture.css b/foundational-api-samples/hello-world/react/src/components/ImageCapture/ImageCapture.css deleted file mode 100644 index 03da581c..00000000 --- a/foundational-api-samples/hello-world/react/src/components/ImageCapture/ImageCapture.css +++ /dev/null @@ -1,20 +0,0 @@ -.image-capture-container { - width: 100%; - height: 100%; - font-family: Consolas, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, - Courier New, monospace; -} - -.image-capture-container .input-container { - width: 80%; - height: 100%; - display: flex; - justify-content: center; - border: 1px solid black; - margin: 0 auto; -} - -.image-capture-container .results { - margin-top: 20px; - height: 100%; -} diff --git a/foundational-api-samples/hello-world/react/src/components/ImageCapture/ImageCapture.tsx b/foundational-api-samples/hello-world/react/src/components/ImageCapture/ImageCapture.tsx deleted file mode 100644 index ce70cdf5..00000000 --- a/foundational-api-samples/hello-world/react/src/components/ImageCapture/ImageCapture.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import React, { ChangeEvent } from "react"; -import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { EnumCapturedResultItemType } from "dynamsoft-barcode-reader-bundle"; -import type { BarcodeResultItem } from "dynamsoft-barcode-reader-bundle"; -import { CaptureVisionRouter } from "dynamsoft-barcode-reader-bundle"; -import "./ImageCapture.css"; - -class ImageCapture extends React.Component { - resultsContainer: React.RefObject = React.createRef(); - - pCvRouter: Promise | null = null; - isDestroyed = false; - - async captureImage(e: ChangeEvent) { - let files = [...(e.target.files as any as File[])]; - e.target.value = ""; // reset input - this.resultsContainer.current!.innerText = ""; - - try { - const cvRouter = await (this.pCvRouter = this.pCvRouter || CaptureVisionRouter.createInstance()); - if (this.isDestroyed) return; - - for (let file of files) { - // Decode selected image with 'ReadBarcodes_ReadRateFirst' template. - const result = await cvRouter.capture(file, "ReadBarcodes_ReadRateFirst"); - console.log(result); - if (this.isDestroyed) return; - - // Print file name if there's multiple files - if (files.length > 1) { - this.resultsContainer.current!.innerText += `\n${file.name}:\n`; - } - for (let _item of result.items) { - if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { - continue; // check if captured result item is a barcode - } - let item = _item as BarcodeResultItem; - this.resultsContainer.current!.innerText += item.text + "\n"; - } - // If no items are found, display that no barcode was detected - if (!result.items.length) this.resultsContainer.current!.innerText += "No barcode found\n"; - } - } catch (ex: any) { - let errMsg = ex.message || ex; - console.error(errMsg); - alert(errMsg); - } - } - - async componentWillUnmount() { - this.isDestroyed = true; - if (this.pCvRouter) { - try { - (await this.pCvRouter).dispose(); - } catch (_) {} - } - } - - render() { - return ( -
    -
    - -
    -
    -
    - ); - } -} - -export default ImageCapture; diff --git a/foundational-api-samples/hello-world/react/src/components/VideoCapture/VideoCapture.css b/foundational-api-samples/hello-world/react/src/components/VideoCapture/VideoCapture.css deleted file mode 100644 index 9bfe13ad..00000000 --- a/foundational-api-samples/hello-world/react/src/components/VideoCapture/VideoCapture.css +++ /dev/null @@ -1,6 +0,0 @@ -.results { - width: 100%; - height: 10vh; - overflow: auto; - white-space: pre-wrap; -} diff --git a/foundational-api-samples/hello-world/react/src/components/VideoCapture/VideoCapture.tsx b/foundational-api-samples/hello-world/react/src/components/VideoCapture/VideoCapture.tsx deleted file mode 100644 index e5c3d8b0..00000000 --- a/foundational-api-samples/hello-world/react/src/components/VideoCapture/VideoCapture.tsx +++ /dev/null @@ -1,117 +0,0 @@ -import React from "react"; -import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { CameraEnhancer, CameraView } from "dynamsoft-barcode-reader-bundle"; -import { CaptureVisionRouter } from "dynamsoft-barcode-reader-bundle"; -import { MultiFrameResultCrossFilter } from "dynamsoft-barcode-reader-bundle"; -import "./VideoCapture.css"; - -const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; - -class VideoCapture extends React.Component { - state = { - resultText: "", - }; - cameraViewContainer: React.RefObject = React.createRef(); - - resolveInit?: () => void; - pInit: Promise = new Promise((r) => (this.resolveInit = r)); - isDestroyed = false; - - cvRouter?: CaptureVisionRouter; - cameraEnhancer?: CameraEnhancer; - - async componentDidMount() { - try { - // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. - const cameraView = await CameraView.createInstance(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } // Check if component is destroyed after every async - - this.cameraEnhancer = await CameraEnhancer.createInstance(cameraView); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Get default UI and append it to DOM. - this.cameraViewContainer.current!.append(cameraView.getUIElement()); - - // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. - this.cvRouter = await CaptureVisionRouter.createInstance(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - this.cvRouter.setInput(this.cameraEnhancer); - - // Define a callback for results. - this.cvRouter.addResultReceiver({ - onDecodedBarcodesReceived: (result) => { - if (!result.barcodeResultItems.length) return; - - let _resultText = ""; - console.log(result); - for (let item of result.barcodeResultItems) { - _resultText += `${item.formatString}: ${item.text}\n\n`; - } - this.setState({ resultText: _resultText }); - }, - }); - - // Filter out unchecked and duplicate results. - const filter = new MultiFrameResultCrossFilter(); - // Filter out unchecked barcodes. - filter.enableResultCrossVerification("barcode", true); - // Filter out duplicate barcodes within 3 seconds. - filter.enableResultDeduplication("barcode", true); - await this.cvRouter.addResultFilter(filter); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Open camera and start scanning barcode. - await this.cameraEnhancer.open(); - cameraView.setScanLaserVisible(true); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - await this.cvRouter.startCapturing("ReadBarcodes_SpeedFirst"); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - } catch (ex: any) { - if ((ex as Error)?.message === componentDestroyedErrorMsg) { - console.log(componentDestroyedErrorMsg); - } else { - let errMsg = ex.message || ex; - console.error(errMsg); - alert(errMsg); - } - } - - // Resolve pInit promise once initialization is complete. - this.resolveInit!(); - } - - async componentWillUnmount() { - this.isDestroyed = true; - try { - // Wait for the pInit to complete before disposing resources. - await this.pInit; - this.cvRouter?.dispose(); - this.cameraEnhancer?.dispose(); - } catch (_) {} - } - - render() { - return ( -
    -
    -
    - Results: -
    {this.state.resultText}
    -
    - ); - } -} - -export default VideoCapture; diff --git a/foundational-api-samples/hello-world/react/src/index.css b/foundational-api-samples/hello-world/react/src/index.css deleted file mode 100644 index e9927237..00000000 --- a/foundational-api-samples/hello-world/react/src/index.css +++ /dev/null @@ -1,11 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", - "Droid Sans", "Helvetica Neue", sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; -} diff --git a/foundational-api-samples/hello-world/react/src/index.tsx b/foundational-api-samples/hello-world/react/src/index.tsx deleted file mode 100644 index 625b6731..00000000 --- a/foundational-api-samples/hello-world/react/src/index.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import ReactDOM from "react-dom/client"; -import "./index.css"; -import App from "./App"; - -const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); -root.render(); diff --git a/foundational-api-samples/hello-world/react/src/logo.svg b/foundational-api-samples/hello-world/react/src/logo.svg deleted file mode 100644 index 9dfc1c05..00000000 --- a/foundational-api-samples/hello-world/react/src/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/react/src/react-app-env.d.ts b/foundational-api-samples/hello-world/react/src/react-app-env.d.ts deleted file mode 100644 index 6431bc5f..00000000 --- a/foundational-api-samples/hello-world/react/src/react-app-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/foundational-api-samples/hello-world/react/tsconfig.json b/foundational-api-samples/hello-world/react/tsconfig.json deleted file mode 100644 index a273b0cf..00000000 --- a/foundational-api-samples/hello-world/react/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], - "allowJs": true, - "skipLibCheck": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": true, - "module": "esnext", - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx" - }, - "include": [ - "src" - ] -} diff --git a/foundational-api-samples/hello-world/read-an-image.html b/foundational-api-samples/hello-world/read-an-image.html deleted file mode 100644 index c10ee605..00000000 --- a/foundational-api-samples/hello-world/read-an-image.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - Dynamsoft Barcode Reader Sample - Hello World (Read an Image) - - - -

    Hello World (Read an Image)

    -
    - Results:
    -
    - - - - - - - - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/vue/src/dynamsoft.config.ts b/foundational-api-samples/hello-world/vue/src/dynamsoft.config.ts deleted file mode 100644 index 712bebaa..00000000 --- a/foundational-api-samples/hello-world/vue/src/dynamsoft.config.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { CoreModule } from "dynamsoft-barcode-reader-bundle"; -import { LicenseManager } from "dynamsoft-barcode-reader-bundle"; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths.rootDirectory = "https://cdn.jsdelivr.net/npm/"; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", { - executeNow: true, -}); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.0.6000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(); diff --git a/foundational-api-samples/use-case/README.md b/foundational-api-samples/use-case/README.md deleted file mode 100644 index a9a95536..00000000 --- a/foundational-api-samples/use-case/README.md +++ /dev/null @@ -1,52 +0,0 @@ -## Read Barcodes and Fill Form Fields - -It's difficult to type long text on mobile devices, but if that text is encoded in a barcode, we can use the SDK to read the barcode and automatically enter the text. - -The following sample demonstrates how to utilize the SDK to fill out form fields. - -*
    Read Barcodes and Fill Form Fields - Demo -* Read Barcodes and Fill Form Fields - Source Code - -## Read the PDF417 Barcode on the Driver's License - -The PDF417 barcode on an AAMVA-compatible driver's license contains information encoded following the DL/ID Card Design Standard. Together with a simple parse function, we can use the SDK to read and extract the information. - -The following official sample shows how to use the SDK to read and extract driver's license information. - -* Read the PDF417 Barcode on the Driver's License - Demo -* Read the PDF417 Barcode on the Driver's License - Source Code - -Also, see [Driver's License Scanner SDK for Mobile and Web](https://www.dynamsoft.com/use-cases/driver-license/). - -## Read Barcodes via Camera and Show Result Texts on the Video - -When the SDK picks up a barcode in a video stream, it will automatically highlight it with a built-in style. But it is also possible to show the barcode text on the video with the help of the function `convertToPageCoordinates()` or `convertToClientCoordinates()`. - -The following official sample shows how to show the result texts on the video. - -* Read barcodes via camera and show result texts on the video - Demo -* Read barcodes via camera and show result texts on the video - Source Code - -## Locate an Item via Barcode - -Searching for a specific item among numerous identical boxes can be challenging. However, with the Dynamsoft Barcode Reader (DBR) SDK, we can locate the item quickly by scanning through the barcodes. - -The following sample demonstrates how to utilize the SDK to find an item using a barcode among many barcodes. - -Additionally, this sample demonstrates how to utilize the SDK to fill out form fields, creating a custom UI with [Dynamsoft Camera Enhancer (DCE)](https://www.dynamsoft.com/camera-enhancer/docs/core/introduction/index.html), and using DCE to draw shapes/images on the CameraView to create indicators for each barcode that has been detected! - -* Locate an Item with Barcode - Demo -* Locate an Item with Barcode - Source Code - -## Read the GS1-AI Barcode and Parse it - -GS1-AI barcodes contain standardized information such as product ID (GTIN), expiration date, batch/lot number, and more, encoded using specific Application Identifiers (AIs). - -This sample demonstrates how to scan a GS1 Application Identifier (AI) barcode using the Dynamsoft Barcode Reader SDK and parse its structured data. - -* Read the GS1-AI Barcode and Parse It - Demo -* Read the GS1-AI Barcode and Parse It - Source Code - -## Support - -If you have any questions, feel free to [contact Dynamsoft](https://www.dynamsoft.com/company/contact/). diff --git a/foundational-api-samples/use-case/fill-a-form-with-barcode-reading.html b/foundational-api-samples/use-case/fill-a-form-with-barcode-reading.html deleted file mode 100644 index 90a214a6..00000000 --- a/foundational-api-samples/use-case/fill-a-form-with-barcode-reading.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - - - Dynamsoft Barcode Reader Sample - Fill Forms with Dynamsoft Barcode Reader - - - - -

    Fill Forms with Dynamsoft Barcode Reader

    -
    -

    Click each input box to fill in!

    - - - -
    - - - - - - - - - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/angular/src/assets/.gitkeep b/frameworks/angular/README.md similarity index 100% rename from foundational-api-samples/hello-world/angular/src/assets/.gitkeep rename to frameworks/angular/README.md diff --git a/foundational-api-samples/hello-world/angular/.editorconfig b/frameworks/angular/scan-using-foundational-api/.editorconfig similarity index 100% rename from foundational-api-samples/hello-world/angular/.editorconfig rename to frameworks/angular/scan-using-foundational-api/.editorconfig diff --git a/foundational-api-samples/hello-world/angular/.gitignore b/frameworks/angular/scan-using-foundational-api/.gitignore similarity index 100% rename from foundational-api-samples/hello-world/angular/.gitignore rename to frameworks/angular/scan-using-foundational-api/.gitignore diff --git a/foundational-api-samples/hello-world/angular/README.md b/frameworks/angular/scan-using-foundational-api/README.md similarity index 100% rename from foundational-api-samples/hello-world/angular/README.md rename to frameworks/angular/scan-using-foundational-api/README.md diff --git a/foundational-api-samples/hello-world/angular/angular.json b/frameworks/angular/scan-using-foundational-api/angular.json similarity index 100% rename from foundational-api-samples/hello-world/angular/angular.json rename to frameworks/angular/scan-using-foundational-api/angular.json diff --git a/foundational-api-samples/hello-world/angular/package.json b/frameworks/angular/scan-using-foundational-api/package.json similarity index 100% rename from foundational-api-samples/hello-world/angular/package.json rename to frameworks/angular/scan-using-foundational-api/package.json diff --git a/foundational-api-samples/hello-world/angular/src/app/app.component.css b/frameworks/angular/scan-using-foundational-api/src/app/app.component.css similarity index 100% rename from foundational-api-samples/hello-world/angular/src/app/app.component.css rename to frameworks/angular/scan-using-foundational-api/src/app/app.component.css diff --git a/foundational-api-samples/hello-world/angular/src/app/app.component.html b/frameworks/angular/scan-using-foundational-api/src/app/app.component.html similarity index 100% rename from foundational-api-samples/hello-world/angular/src/app/app.component.html rename to frameworks/angular/scan-using-foundational-api/src/app/app.component.html diff --git a/foundational-api-samples/hello-world/angular/src/app/app.component.ts b/frameworks/angular/scan-using-foundational-api/src/app/app.component.ts similarity index 100% rename from foundational-api-samples/hello-world/angular/src/app/app.component.ts rename to frameworks/angular/scan-using-foundational-api/src/app/app.component.ts diff --git a/foundational-api-samples/hello-world/angular/src/app/dynamsoft.config.ts b/frameworks/angular/scan-using-foundational-api/src/app/dynamsoft.config.ts similarity index 100% rename from foundational-api-samples/hello-world/angular/src/app/dynamsoft.config.ts rename to frameworks/angular/scan-using-foundational-api/src/app/dynamsoft.config.ts diff --git a/foundational-api-samples/hello-world/angular/src/app/image-capture/image-capture.component.css b/frameworks/angular/scan-using-foundational-api/src/app/image-capture/image-capture.component.css similarity index 100% rename from foundational-api-samples/hello-world/angular/src/app/image-capture/image-capture.component.css rename to frameworks/angular/scan-using-foundational-api/src/app/image-capture/image-capture.component.css diff --git a/foundational-api-samples/hello-world/angular/src/app/image-capture/image-capture.component.html b/frameworks/angular/scan-using-foundational-api/src/app/image-capture/image-capture.component.html similarity index 100% rename from foundational-api-samples/hello-world/angular/src/app/image-capture/image-capture.component.html rename to frameworks/angular/scan-using-foundational-api/src/app/image-capture/image-capture.component.html diff --git a/foundational-api-samples/hello-world/angular/src/app/image-capture/image-capture.component.ts b/frameworks/angular/scan-using-foundational-api/src/app/image-capture/image-capture.component.ts similarity index 100% rename from foundational-api-samples/hello-world/angular/src/app/image-capture/image-capture.component.ts rename to frameworks/angular/scan-using-foundational-api/src/app/image-capture/image-capture.component.ts diff --git a/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.css b/frameworks/angular/scan-using-foundational-api/src/app/video-capture/video-capture.component.css similarity index 100% rename from foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.css rename to frameworks/angular/scan-using-foundational-api/src/app/video-capture/video-capture.component.css diff --git a/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.html b/frameworks/angular/scan-using-foundational-api/src/app/video-capture/video-capture.component.html similarity index 100% rename from foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.html rename to frameworks/angular/scan-using-foundational-api/src/app/video-capture/video-capture.component.html diff --git a/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.ts b/frameworks/angular/scan-using-foundational-api/src/app/video-capture/video-capture.component.ts similarity index 100% rename from foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.ts rename to frameworks/angular/scan-using-foundational-api/src/app/video-capture/video-capture.component.ts diff --git a/frameworks/angular/scan-using-foundational-api/src/assets/.gitkeep b/frameworks/angular/scan-using-foundational-api/src/assets/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/foundational-api-samples/hello-world/angular/src/favicon.ico b/frameworks/angular/scan-using-foundational-api/src/favicon.ico similarity index 100% rename from foundational-api-samples/hello-world/angular/src/favicon.ico rename to frameworks/angular/scan-using-foundational-api/src/favicon.ico diff --git a/foundational-api-samples/hello-world/angular/src/index.html b/frameworks/angular/scan-using-foundational-api/src/index.html similarity index 100% rename from foundational-api-samples/hello-world/angular/src/index.html rename to frameworks/angular/scan-using-foundational-api/src/index.html diff --git a/foundational-api-samples/hello-world/angular/src/main.ts b/frameworks/angular/scan-using-foundational-api/src/main.ts similarity index 100% rename from foundational-api-samples/hello-world/angular/src/main.ts rename to frameworks/angular/scan-using-foundational-api/src/main.ts diff --git a/foundational-api-samples/hello-world/angular/src/styles.css b/frameworks/angular/scan-using-foundational-api/src/styles.css similarity index 100% rename from foundational-api-samples/hello-world/angular/src/styles.css rename to frameworks/angular/scan-using-foundational-api/src/styles.css diff --git a/foundational-api-samples/hello-world/angular/tsconfig.app.json b/frameworks/angular/scan-using-foundational-api/tsconfig.app.json similarity index 100% rename from foundational-api-samples/hello-world/angular/tsconfig.app.json rename to frameworks/angular/scan-using-foundational-api/tsconfig.app.json diff --git a/foundational-api-samples/hello-world/angular/tsconfig.json b/frameworks/angular/scan-using-foundational-api/tsconfig.json similarity index 100% rename from foundational-api-samples/hello-world/angular/tsconfig.json rename to frameworks/angular/scan-using-foundational-api/tsconfig.json diff --git a/foundational-api-samples/hello-world/angular/tsconfig.spec.json b/frameworks/angular/scan-using-foundational-api/tsconfig.spec.json similarity index 100% rename from foundational-api-samples/hello-world/angular/tsconfig.spec.json rename to frameworks/angular/scan-using-foundational-api/tsconfig.spec.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/.editorconfig b/frameworks/angular/scan-using-rtu-api/.editorconfig similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/angular/.editorconfig rename to frameworks/angular/scan-using-rtu-api/.editorconfig diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/.gitignore b/frameworks/angular/scan-using-rtu-api/.gitignore similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/angular/.gitignore rename to frameworks/angular/scan-using-rtu-api/.gitignore diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/README.md b/frameworks/angular/scan-using-rtu-api/README.md similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/angular/README.md rename to frameworks/angular/scan-using-rtu-api/README.md diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/angular.json b/frameworks/angular/scan-using-rtu-api/angular.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/angular/angular.json rename to frameworks/angular/scan-using-rtu-api/angular.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/package.json b/frameworks/angular/scan-using-rtu-api/package.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/angular/package.json rename to frameworks/angular/scan-using-rtu-api/package.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.css b/frameworks/angular/scan-using-rtu-api/src/app/app.component.css similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.css rename to frameworks/angular/scan-using-rtu-api/src/app/app.component.css diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.html b/frameworks/angular/scan-using-rtu-api/src/app/app.component.html similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.html rename to frameworks/angular/scan-using-rtu-api/src/app/app.component.html diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts b/frameworks/angular/scan-using-rtu-api/src/app/app.component.ts similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts rename to frameworks/angular/scan-using-rtu-api/src/app/app.component.ts diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.config.ts b/frameworks/angular/scan-using-rtu-api/src/app/app.config.ts similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.config.ts rename to frameworks/angular/scan-using-rtu-api/src/app/app.config.ts diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.routes.ts b/frameworks/angular/scan-using-rtu-api/src/app/app.routes.ts similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.routes.ts rename to frameworks/angular/scan-using-rtu-api/src/app/app.routes.ts diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/index.html b/frameworks/angular/scan-using-rtu-api/src/index.html similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/angular/src/index.html rename to frameworks/angular/scan-using-rtu-api/src/index.html diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/main.ts b/frameworks/angular/scan-using-rtu-api/src/main.ts similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/angular/src/main.ts rename to frameworks/angular/scan-using-rtu-api/src/main.ts diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/styles.css b/frameworks/angular/scan-using-rtu-api/src/styles.css similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/angular/src/styles.css rename to frameworks/angular/scan-using-rtu-api/src/styles.css diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.app.json b/frameworks/angular/scan-using-rtu-api/tsconfig.app.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.app.json rename to frameworks/angular/scan-using-rtu-api/tsconfig.app.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.json b/frameworks/angular/scan-using-rtu-api/tsconfig.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.json rename to frameworks/angular/scan-using-rtu-api/tsconfig.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.spec.json b/frameworks/angular/scan-using-rtu-api/tsconfig.spec.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.spec.json rename to frameworks/angular/scan-using-rtu-api/tsconfig.spec.json diff --git a/frameworks/blazor/README.md b/frameworks/blazor/README.md new file mode 100644 index 00000000..e69de29b diff --git a/foundational-api-samples/hello-world/blazor/.gitignore b/frameworks/blazor/scan-using-foundational-api/.gitignore similarity index 100% rename from foundational-api-samples/hello-world/blazor/.gitignore rename to frameworks/blazor/scan-using-foundational-api/.gitignore diff --git a/foundational-api-samples/hello-world/blazor/README.md b/frameworks/blazor/scan-using-foundational-api/README.md similarity index 100% rename from foundational-api-samples/hello-world/blazor/README.md rename to frameworks/blazor/scan-using-foundational-api/README.md diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/App.razor b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/App.razor similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/blazor/App.razor rename to frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/App.razor diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/BlazorApp.csproj b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/BlazorApp.csproj similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/blazor/BlazorApp.csproj rename to frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/BlazorApp.csproj diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Layout/MainLayout.razor similarity index 100% rename from foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor rename to frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Layout/MainLayout.razor diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor.css b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Layout/MainLayout.razor.css similarity index 100% rename from foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor.css rename to frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Layout/MainLayout.razor.css diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Layout/NavMenu.razor similarity index 100% rename from foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor rename to frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Layout/NavMenu.razor diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor.css b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Layout/NavMenu.razor.css similarity index 100% rename from foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor.css rename to frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Layout/NavMenu.razor.css diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeImage.razor b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Pages/DecodeImage.razor similarity index 100% rename from foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeImage.razor rename to frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Pages/DecodeImage.razor diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeVideo.razor b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Pages/DecodeVideo.razor similarity index 100% rename from foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeVideo.razor rename to frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Pages/DecodeVideo.razor diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/Home.razor b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Pages/Home.razor similarity index 100% rename from foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/Home.razor rename to frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Pages/Home.razor diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/Program.cs b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Program.cs similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/blazor/Program.cs rename to frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Program.cs diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/Properties/launchSettings.json b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Properties/launchSettings.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/blazor/Properties/launchSettings.json rename to frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/Properties/launchSettings.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/_Imports.razor b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/_Imports.razor similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/blazor/_Imports.razor rename to frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/_Imports.razor diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/app.css b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/css/app.css similarity index 100% rename from foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/app.css rename to frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/css/app.css diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css similarity index 100% rename from foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css rename to frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css.map b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css.map similarity index 100% rename from foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css.map rename to frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css.map diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/decodeImage.js b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/decodeImage.js similarity index 100% rename from foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/decodeImage.js rename to frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/decodeImage.js diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/decodeVideo.js b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/decodeVideo.js similarity index 100% rename from foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/decodeVideo.js rename to frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/decodeVideo.js diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/favicon.png b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/favicon.png similarity index 100% rename from foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/favicon.png rename to frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/favicon.png diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/icon-192.png b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/icon-192.png similarity index 100% rename from foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/icon-192.png rename to frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/icon-192.png diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/index.html b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/index.html similarity index 100% rename from foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/index.html rename to frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/index.html diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/.gitignore b/frameworks/blazor/scan-using-rtu-api/.gitignore similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/blazor/.gitignore rename to frameworks/blazor/scan-using-rtu-api/.gitignore diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/App.razor b/frameworks/blazor/scan-using-rtu-api/App.razor similarity index 100% rename from foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/App.razor rename to frameworks/blazor/scan-using-rtu-api/App.razor diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/BlazorApp.csproj b/frameworks/blazor/scan-using-rtu-api/BlazorApp.csproj similarity index 100% rename from foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/BlazorApp.csproj rename to frameworks/blazor/scan-using-rtu-api/BlazorApp.csproj diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/Layout/MainLayout.razor b/frameworks/blazor/scan-using-rtu-api/Layout/MainLayout.razor similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/blazor/Layout/MainLayout.razor rename to frameworks/blazor/scan-using-rtu-api/Layout/MainLayout.razor diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/Pages/Home.razor b/frameworks/blazor/scan-using-rtu-api/Pages/Home.razor similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/blazor/Pages/Home.razor rename to frameworks/blazor/scan-using-rtu-api/Pages/Home.razor diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Program.cs b/frameworks/blazor/scan-using-rtu-api/Program.cs similarity index 100% rename from foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Program.cs rename to frameworks/blazor/scan-using-rtu-api/Program.cs diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Properties/launchSettings.json b/frameworks/blazor/scan-using-rtu-api/Properties/launchSettings.json similarity index 100% rename from foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Properties/launchSettings.json rename to frameworks/blazor/scan-using-rtu-api/Properties/launchSettings.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/README.md b/frameworks/blazor/scan-using-rtu-api/README.md similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/blazor/README.md rename to frameworks/blazor/scan-using-rtu-api/README.md diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/_Imports.razor b/frameworks/blazor/scan-using-rtu-api/_Imports.razor similarity index 100% rename from foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/_Imports.razor rename to frameworks/blazor/scan-using-rtu-api/_Imports.razor diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/wwwroot/index.html b/frameworks/blazor/scan-using-rtu-api/wwwroot/index.html similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/blazor/wwwroot/index.html rename to frameworks/blazor/scan-using-rtu-api/wwwroot/index.html diff --git a/frameworks/capacitor/README.md b/frameworks/capacitor/README.md new file mode 100644 index 00000000..e69de29b diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/README.md b/frameworks/capacitor/scan-using-rtu-api/README.md similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/README.md rename to frameworks/capacitor/scan-using-rtu-api/README.md diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/.gitignore b/frameworks/capacitor/scan-using-rtu-api/android/.gitignore similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/.gitignore rename to frameworks/capacitor/scan-using-rtu-api/android/.gitignore diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/.gitignore b/frameworks/capacitor/scan-using-rtu-api/android/app/.gitignore similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/.gitignore rename to frameworks/capacitor/scan-using-rtu-api/android/app/.gitignore diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/build.gradle b/frameworks/capacitor/scan-using-rtu-api/android/app/build.gradle similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/build.gradle rename to frameworks/capacitor/scan-using-rtu-api/android/app/build.gradle diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/capacitor.build.gradle b/frameworks/capacitor/scan-using-rtu-api/android/app/capacitor.build.gradle similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/capacitor.build.gradle rename to frameworks/capacitor/scan-using-rtu-api/android/app/capacitor.build.gradle diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/proguard-rules.pro b/frameworks/capacitor/scan-using-rtu-api/android/app/proguard-rules.pro similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/proguard-rules.pro rename to frameworks/capacitor/scan-using-rtu-api/android/app/proguard-rules.pro diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java b/frameworks/capacitor/scan-using-rtu-api/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/AndroidManifest.xml b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/AndroidManifest.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/AndroidManifest.xml rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/AndroidManifest.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/java/com/dynamsoft/dbrjs/MainActivity.java b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/java/com/dynamsoft/dbrjs/MainActivity.java similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/java/com/dynamsoft/dbrjs/MainActivity.java rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/java/com/dynamsoft/dbrjs/MainActivity.java diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-land-hdpi/splash.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-land-hdpi/splash.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-land-hdpi/splash.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-land-hdpi/splash.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-land-mdpi/splash.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-land-mdpi/splash.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-land-mdpi/splash.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-land-mdpi/splash.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-land-xhdpi/splash.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-land-xhdpi/splash.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-land-xhdpi/splash.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-land-xhdpi/splash.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-land-xxhdpi/splash.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-land-xxhdpi/splash.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-land-xxhdpi/splash.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-land-xxhdpi/splash.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-land-xxxhdpi/splash.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-land-xxxhdpi/splash.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-land-xxxhdpi/splash.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-land-xxxhdpi/splash.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-port-hdpi/splash.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-port-hdpi/splash.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-port-hdpi/splash.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-port-hdpi/splash.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-port-mdpi/splash.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-port-mdpi/splash.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-port-mdpi/splash.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-port-mdpi/splash.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-port-xhdpi/splash.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-port-xhdpi/splash.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-port-xhdpi/splash.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-port-xhdpi/splash.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-port-xxhdpi/splash.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-port-xxhdpi/splash.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-port-xxhdpi/splash.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-port-xxhdpi/splash.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-port-xxxhdpi/splash.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-port-xxxhdpi/splash.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-port-xxxhdpi/splash.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-port-xxxhdpi/splash.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable/ic_launcher_background.xml b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable/ic_launcher_background.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable/ic_launcher_background.xml rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable/ic_launcher_background.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable/splash.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable/splash.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable/splash.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/drawable/splash.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/layout/activity_main.xml b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/layout/activity_main.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/layout/activity_main.xml rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/layout/activity_main.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-hdpi/ic_launcher.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-mdpi/ic_launcher.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/values/ic_launcher_background.xml b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/values/ic_launcher_background.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/values/ic_launcher_background.xml rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/values/ic_launcher_background.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/values/strings.xml b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/values/strings.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/values/strings.xml rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/values/strings.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/values/styles.xml b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/values/styles.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/values/styles.xml rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/values/styles.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/xml/file_paths.xml b/frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/xml/file_paths.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/xml/file_paths.xml rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/main/res/xml/file_paths.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java b/frameworks/capacitor/scan-using-rtu-api/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java rename to frameworks/capacitor/scan-using-rtu-api/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/build.gradle b/frameworks/capacitor/scan-using-rtu-api/android/build.gradle similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/build.gradle rename to frameworks/capacitor/scan-using-rtu-api/android/build.gradle diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/capacitor.settings.gradle b/frameworks/capacitor/scan-using-rtu-api/android/capacitor.settings.gradle similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/capacitor.settings.gradle rename to frameworks/capacitor/scan-using-rtu-api/android/capacitor.settings.gradle diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle.properties b/frameworks/capacitor/scan-using-rtu-api/android/gradle.properties similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle.properties rename to frameworks/capacitor/scan-using-rtu-api/android/gradle.properties diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle/wrapper/gradle-wrapper.jar b/frameworks/capacitor/scan-using-rtu-api/android/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle/wrapper/gradle-wrapper.jar rename to frameworks/capacitor/scan-using-rtu-api/android/gradle/wrapper/gradle-wrapper.jar diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle/wrapper/gradle-wrapper.properties b/frameworks/capacitor/scan-using-rtu-api/android/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle/wrapper/gradle-wrapper.properties rename to frameworks/capacitor/scan-using-rtu-api/android/gradle/wrapper/gradle-wrapper.properties diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradlew b/frameworks/capacitor/scan-using-rtu-api/android/gradlew similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradlew rename to frameworks/capacitor/scan-using-rtu-api/android/gradlew diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradlew.bat b/frameworks/capacitor/scan-using-rtu-api/android/gradlew.bat similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradlew.bat rename to frameworks/capacitor/scan-using-rtu-api/android/gradlew.bat diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/settings.gradle b/frameworks/capacitor/scan-using-rtu-api/android/settings.gradle similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/settings.gradle rename to frameworks/capacitor/scan-using-rtu-api/android/settings.gradle diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/variables.gradle b/frameworks/capacitor/scan-using-rtu-api/android/variables.gradle similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/android/variables.gradle rename to frameworks/capacitor/scan-using-rtu-api/android/variables.gradle diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/capacitor.config.json b/frameworks/capacitor/scan-using-rtu-api/capacitor.config.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/capacitor.config.json rename to frameworks/capacitor/scan-using-rtu-api/capacitor.config.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/index.ts b/frameworks/capacitor/scan-using-rtu-api/index.ts similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/index.ts rename to frameworks/capacitor/scan-using-rtu-api/index.ts diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/.gitignore b/frameworks/capacitor/scan-using-rtu-api/ios/.gitignore similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/.gitignore rename to frameworks/capacitor/scan-using-rtu-api/ios/.gitignore diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App.xcodeproj/project.pbxproj b/frameworks/capacitor/scan-using-rtu-api/ios/App/App.xcodeproj/project.pbxproj similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App.xcodeproj/project.pbxproj rename to frameworks/capacitor/scan-using-rtu-api/ios/App/App.xcodeproj/project.pbxproj diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/frameworks/capacitor/scan-using-rtu-api/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to frameworks/capacitor/scan-using-rtu-api/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/AppDelegate.swift b/frameworks/capacitor/scan-using-rtu-api/ios/App/App/AppDelegate.swift similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/AppDelegate.swift rename to frameworks/capacitor/scan-using-rtu-api/ios/App/App/AppDelegate.swift diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png b/frameworks/capacitor/scan-using-rtu-api/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png rename to frameworks/capacitor/scan-using-rtu-api/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json b/frameworks/capacitor/scan-using-rtu-api/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json rename to frameworks/capacitor/scan-using-rtu-api/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Contents.json b/frameworks/capacitor/scan-using-rtu-api/ios/App/App/Assets.xcassets/Contents.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Contents.json rename to frameworks/capacitor/scan-using-rtu-api/ios/App/App/Assets.xcassets/Contents.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json b/frameworks/capacitor/scan-using-rtu-api/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json rename to frameworks/capacitor/scan-using-rtu-api/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png b/frameworks/capacitor/scan-using-rtu-api/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png rename to frameworks/capacitor/scan-using-rtu-api/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png b/frameworks/capacitor/scan-using-rtu-api/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png rename to frameworks/capacitor/scan-using-rtu-api/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png b/frameworks/capacitor/scan-using-rtu-api/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png rename to frameworks/capacitor/scan-using-rtu-api/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Base.lproj/LaunchScreen.storyboard b/frameworks/capacitor/scan-using-rtu-api/ios/App/App/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Base.lproj/LaunchScreen.storyboard rename to frameworks/capacitor/scan-using-rtu-api/ios/App/App/Base.lproj/LaunchScreen.storyboard diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Base.lproj/Main.storyboard b/frameworks/capacitor/scan-using-rtu-api/ios/App/App/Base.lproj/Main.storyboard similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Base.lproj/Main.storyboard rename to frameworks/capacitor/scan-using-rtu-api/ios/App/App/Base.lproj/Main.storyboard diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Info.plist b/frameworks/capacitor/scan-using-rtu-api/ios/App/App/Info.plist similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Info.plist rename to frameworks/capacitor/scan-using-rtu-api/ios/App/App/Info.plist diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/Podfile b/frameworks/capacitor/scan-using-rtu-api/ios/App/Podfile similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/Podfile rename to frameworks/capacitor/scan-using-rtu-api/ios/App/Podfile diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/package.json b/frameworks/capacitor/scan-using-rtu-api/package.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/package.json rename to frameworks/capacitor/scan-using-rtu-api/package.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/public/index.html b/frameworks/capacitor/scan-using-rtu-api/public/index.html similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/public/index.html rename to frameworks/capacitor/scan-using-rtu-api/public/index.html diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/rollup.config.mjs b/frameworks/capacitor/scan-using-rtu-api/rollup.config.mjs similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/rollup.config.mjs rename to frameworks/capacitor/scan-using-rtu-api/rollup.config.mjs diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/tsconfig.json b/frameworks/capacitor/scan-using-rtu-api/tsconfig.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/capacitor/tsconfig.json rename to frameworks/capacitor/scan-using-rtu-api/tsconfig.json diff --git a/frameworks/electron/README.md b/frameworks/electron/README.md new file mode 100644 index 00000000..e69de29b diff --git a/foundational-api-samples/hello-world/electron/README.md b/frameworks/electron/scan-using-foundational-api/README.md similarity index 100% rename from foundational-api-samples/hello-world/electron/README.md rename to frameworks/electron/scan-using-foundational-api/README.md diff --git a/foundational-api-samples/hello-world/electron/action.js b/frameworks/electron/scan-using-foundational-api/action.js similarity index 100% rename from foundational-api-samples/hello-world/electron/action.js rename to frameworks/electron/scan-using-foundational-api/action.js diff --git a/foundational-api-samples/hello-world/electron/index.html b/frameworks/electron/scan-using-foundational-api/index.html similarity index 100% rename from foundational-api-samples/hello-world/electron/index.html rename to frameworks/electron/scan-using-foundational-api/index.html diff --git a/barcode-scanner-api-samples/scan-single-barcode/electron/main.js b/frameworks/electron/scan-using-foundational-api/main.js similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/electron/main.js rename to frameworks/electron/scan-using-foundational-api/main.js diff --git a/barcode-scanner-api-samples/scan-single-barcode/electron/package.json b/frameworks/electron/scan-using-foundational-api/package.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/electron/package.json rename to frameworks/electron/scan-using-foundational-api/package.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/electron/style.css b/frameworks/electron/scan-using-foundational-api/style.css similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/electron/style.css rename to frameworks/electron/scan-using-foundational-api/style.css diff --git a/barcode-scanner-api-samples/scan-single-barcode/electron/README.md b/frameworks/electron/scan-using-rtu-api/README.md similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/electron/README.md rename to frameworks/electron/scan-using-rtu-api/README.md diff --git a/barcode-scanner-api-samples/scan-single-barcode/electron/action.js b/frameworks/electron/scan-using-rtu-api/action.js similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/electron/action.js rename to frameworks/electron/scan-using-rtu-api/action.js diff --git a/barcode-scanner-api-samples/scan-single-barcode/electron/index.html b/frameworks/electron/scan-using-rtu-api/index.html similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/electron/index.html rename to frameworks/electron/scan-using-rtu-api/index.html diff --git a/foundational-api-samples/hello-world/electron/main.js b/frameworks/electron/scan-using-rtu-api/main.js similarity index 100% rename from foundational-api-samples/hello-world/electron/main.js rename to frameworks/electron/scan-using-rtu-api/main.js diff --git a/foundational-api-samples/hello-world/electron/package.json b/frameworks/electron/scan-using-rtu-api/package.json similarity index 100% rename from foundational-api-samples/hello-world/electron/package.json rename to frameworks/electron/scan-using-rtu-api/package.json diff --git a/foundational-api-samples/hello-world/electron/style.css b/frameworks/electron/scan-using-rtu-api/style.css similarity index 100% rename from foundational-api-samples/hello-world/electron/style.css rename to frameworks/electron/scan-using-rtu-api/style.css diff --git a/frameworks/es6/README.md b/frameworks/es6/README.md new file mode 100644 index 00000000..e69de29b diff --git a/foundational-api-samples/hello-world/es6.html b/frameworks/es6/scan-using-foundational-api/es6.html similarity index 100% rename from foundational-api-samples/hello-world/es6.html rename to frameworks/es6/scan-using-foundational-api/es6.html diff --git a/barcode-scanner-api-samples/scan-single-barcode/es6.html b/frameworks/es6/scan-using-rtu-api/es6.html similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/es6.html rename to frameworks/es6/scan-using-rtu-api/es6.html diff --git a/frameworks/native-ts/README.md b/frameworks/native-ts/README.md new file mode 100644 index 00000000..e69de29b diff --git a/foundational-api-samples/hello-world/native-ts/index.html b/frameworks/native-ts/scan-using-foundational-api/index.html similarity index 100% rename from foundational-api-samples/hello-world/native-ts/index.html rename to frameworks/native-ts/scan-using-foundational-api/index.html diff --git a/foundational-api-samples/hello-world/native-ts/index.ts b/frameworks/native-ts/scan-using-foundational-api/index.ts similarity index 100% rename from foundational-api-samples/hello-world/native-ts/index.ts rename to frameworks/native-ts/scan-using-foundational-api/index.ts diff --git a/foundational-api-samples/hello-world/native-ts/package.json b/frameworks/native-ts/scan-using-foundational-api/package.json similarity index 100% rename from foundational-api-samples/hello-world/native-ts/package.json rename to frameworks/native-ts/scan-using-foundational-api/package.json diff --git a/foundational-api-samples/hello-world/native-ts/rollup.config.mjs b/frameworks/native-ts/scan-using-foundational-api/rollup.config.mjs similarity index 100% rename from foundational-api-samples/hello-world/native-ts/rollup.config.mjs rename to frameworks/native-ts/scan-using-foundational-api/rollup.config.mjs diff --git a/barcode-scanner-api-samples/scan-single-barcode/native-ts/tsconfig.json b/frameworks/native-ts/scan-using-foundational-api/tsconfig.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/native-ts/tsconfig.json rename to frameworks/native-ts/scan-using-foundational-api/tsconfig.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/native-ts/README.md b/frameworks/native-ts/scan-using-rtu-api/README.md similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/native-ts/README.md rename to frameworks/native-ts/scan-using-rtu-api/README.md diff --git a/barcode-scanner-api-samples/scan-single-barcode/native-ts/index.ts b/frameworks/native-ts/scan-using-rtu-api/index.ts similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/native-ts/index.ts rename to frameworks/native-ts/scan-using-rtu-api/index.ts diff --git a/barcode-scanner-api-samples/scan-single-barcode/native-ts/package.json b/frameworks/native-ts/scan-using-rtu-api/package.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/native-ts/package.json rename to frameworks/native-ts/scan-using-rtu-api/package.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/native-ts/public/index.html b/frameworks/native-ts/scan-using-rtu-api/public/index.html similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/native-ts/public/index.html rename to frameworks/native-ts/scan-using-rtu-api/public/index.html diff --git a/barcode-scanner-api-samples/scan-single-barcode/native-ts/rollup.config.mjs b/frameworks/native-ts/scan-using-rtu-api/rollup.config.mjs similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/native-ts/rollup.config.mjs rename to frameworks/native-ts/scan-using-rtu-api/rollup.config.mjs diff --git a/foundational-api-samples/hello-world/native-ts/tsconfig.json b/frameworks/native-ts/scan-using-rtu-api/tsconfig.json similarity index 100% rename from foundational-api-samples/hello-world/native-ts/tsconfig.json rename to frameworks/native-ts/scan-using-rtu-api/tsconfig.json diff --git a/frameworks/next/README.md b/frameworks/next/README.md new file mode 100644 index 00000000..e69de29b diff --git a/foundational-api-samples/hello-world/next/.eslintrc.json b/frameworks/next/scan-using-foundational-api/.eslintrc.json similarity index 100% rename from foundational-api-samples/hello-world/next/.eslintrc.json rename to frameworks/next/scan-using-foundational-api/.eslintrc.json diff --git a/foundational-api-samples/hello-world/next/.gitignore b/frameworks/next/scan-using-foundational-api/.gitignore similarity index 100% rename from foundational-api-samples/hello-world/next/.gitignore rename to frameworks/next/scan-using-foundational-api/.gitignore diff --git a/foundational-api-samples/hello-world/next/README.md b/frameworks/next/scan-using-foundational-api/README.md similarity index 100% rename from foundational-api-samples/hello-world/next/README.md rename to frameworks/next/scan-using-foundational-api/README.md diff --git a/foundational-api-samples/hello-world/next/app/favicon.ico b/frameworks/next/scan-using-foundational-api/app/favicon.ico similarity index 100% rename from foundational-api-samples/hello-world/next/app/favicon.ico rename to frameworks/next/scan-using-foundational-api/app/favicon.ico diff --git a/foundational-api-samples/hello-world/next/app/globals.css b/frameworks/next/scan-using-foundational-api/app/globals.css similarity index 100% rename from foundational-api-samples/hello-world/next/app/globals.css rename to frameworks/next/scan-using-foundational-api/app/globals.css diff --git a/foundational-api-samples/hello-world/next/app/layout.tsx b/frameworks/next/scan-using-foundational-api/app/layout.tsx similarity index 100% rename from foundational-api-samples/hello-world/next/app/layout.tsx rename to frameworks/next/scan-using-foundational-api/app/layout.tsx diff --git a/foundational-api-samples/hello-world/next/app/page.css b/frameworks/next/scan-using-foundational-api/app/page.css similarity index 100% rename from foundational-api-samples/hello-world/next/app/page.css rename to frameworks/next/scan-using-foundational-api/app/page.css diff --git a/foundational-api-samples/hello-world/next/app/page.tsx b/frameworks/next/scan-using-foundational-api/app/page.tsx similarity index 100% rename from foundational-api-samples/hello-world/next/app/page.tsx rename to frameworks/next/scan-using-foundational-api/app/page.tsx diff --git a/foundational-api-samples/hello-world/next/components/ImageCapture/ImageCapture.css b/frameworks/next/scan-using-foundational-api/components/ImageCapture/ImageCapture.css similarity index 100% rename from foundational-api-samples/hello-world/next/components/ImageCapture/ImageCapture.css rename to frameworks/next/scan-using-foundational-api/components/ImageCapture/ImageCapture.css diff --git a/foundational-api-samples/hello-world/next/components/ImageCapture/ImageCapture.tsx b/frameworks/next/scan-using-foundational-api/components/ImageCapture/ImageCapture.tsx similarity index 100% rename from foundational-api-samples/hello-world/next/components/ImageCapture/ImageCapture.tsx rename to frameworks/next/scan-using-foundational-api/components/ImageCapture/ImageCapture.tsx diff --git a/foundational-api-samples/hello-world/next/components/VideoCapture/VideoCapture.css b/frameworks/next/scan-using-foundational-api/components/VideoCapture/VideoCapture.css similarity index 100% rename from foundational-api-samples/hello-world/next/components/VideoCapture/VideoCapture.css rename to frameworks/next/scan-using-foundational-api/components/VideoCapture/VideoCapture.css diff --git a/foundational-api-samples/hello-world/next/components/VideoCapture/VideoCapture.tsx b/frameworks/next/scan-using-foundational-api/components/VideoCapture/VideoCapture.tsx similarity index 100% rename from foundational-api-samples/hello-world/next/components/VideoCapture/VideoCapture.tsx rename to frameworks/next/scan-using-foundational-api/components/VideoCapture/VideoCapture.tsx diff --git a/foundational-api-samples/hello-world/next/dynamsoft.config.ts b/frameworks/next/scan-using-foundational-api/dynamsoft.config.ts similarity index 100% rename from foundational-api-samples/hello-world/next/dynamsoft.config.ts rename to frameworks/next/scan-using-foundational-api/dynamsoft.config.ts diff --git a/foundational-api-samples/hello-world/next/next.config.mjs b/frameworks/next/scan-using-foundational-api/next.config.mjs similarity index 100% rename from foundational-api-samples/hello-world/next/next.config.mjs rename to frameworks/next/scan-using-foundational-api/next.config.mjs diff --git a/foundational-api-samples/hello-world/next/package.json b/frameworks/next/scan-using-foundational-api/package.json similarity index 100% rename from foundational-api-samples/hello-world/next/package.json rename to frameworks/next/scan-using-foundational-api/package.json diff --git a/foundational-api-samples/hello-world/next/public/next.svg b/frameworks/next/scan-using-foundational-api/public/next.svg similarity index 100% rename from foundational-api-samples/hello-world/next/public/next.svg rename to frameworks/next/scan-using-foundational-api/public/next.svg diff --git a/foundational-api-samples/hello-world/next/public/vercel.svg b/frameworks/next/scan-using-foundational-api/public/vercel.svg similarity index 100% rename from foundational-api-samples/hello-world/next/public/vercel.svg rename to frameworks/next/scan-using-foundational-api/public/vercel.svg diff --git a/foundational-api-samples/hello-world/next/tsconfig.json b/frameworks/next/scan-using-foundational-api/tsconfig.json similarity index 100% rename from foundational-api-samples/hello-world/next/tsconfig.json rename to frameworks/next/scan-using-foundational-api/tsconfig.json diff --git a/frameworks/nuxt/README.md b/frameworks/nuxt/README.md new file mode 100644 index 00000000..e69de29b diff --git a/foundational-api-samples/hello-world/nuxt/.gitignore b/frameworks/nuxt/scan-using-foundational-api/.gitignore similarity index 100% rename from foundational-api-samples/hello-world/nuxt/.gitignore rename to frameworks/nuxt/scan-using-foundational-api/.gitignore diff --git a/foundational-api-samples/hello-world/nuxt/README.md b/frameworks/nuxt/scan-using-foundational-api/README.md similarity index 100% rename from foundational-api-samples/hello-world/nuxt/README.md rename to frameworks/nuxt/scan-using-foundational-api/README.md diff --git a/foundational-api-samples/hello-world/nuxt/app.vue b/frameworks/nuxt/scan-using-foundational-api/app.vue similarity index 100% rename from foundational-api-samples/hello-world/nuxt/app.vue rename to frameworks/nuxt/scan-using-foundational-api/app.vue diff --git a/foundational-api-samples/hello-world/nuxt/assets/logo.svg b/frameworks/nuxt/scan-using-foundational-api/assets/logo.svg similarity index 100% rename from foundational-api-samples/hello-world/nuxt/assets/logo.svg rename to frameworks/nuxt/scan-using-foundational-api/assets/logo.svg diff --git a/foundational-api-samples/hello-world/nuxt/assets/main.css b/frameworks/nuxt/scan-using-foundational-api/assets/main.css similarity index 100% rename from foundational-api-samples/hello-world/nuxt/assets/main.css rename to frameworks/nuxt/scan-using-foundational-api/assets/main.css diff --git a/foundational-api-samples/hello-world/nuxt/components/ImageCapture.client.vue b/frameworks/nuxt/scan-using-foundational-api/components/ImageCapture.client.vue similarity index 100% rename from foundational-api-samples/hello-world/nuxt/components/ImageCapture.client.vue rename to frameworks/nuxt/scan-using-foundational-api/components/ImageCapture.client.vue diff --git a/foundational-api-samples/hello-world/nuxt/components/VideoCapture.client.vue b/frameworks/nuxt/scan-using-foundational-api/components/VideoCapture.client.vue similarity index 100% rename from foundational-api-samples/hello-world/nuxt/components/VideoCapture.client.vue rename to frameworks/nuxt/scan-using-foundational-api/components/VideoCapture.client.vue diff --git a/foundational-api-samples/hello-world/nuxt/dynamsoft.config.ts b/frameworks/nuxt/scan-using-foundational-api/dynamsoft.config.ts similarity index 100% rename from foundational-api-samples/hello-world/nuxt/dynamsoft.config.ts rename to frameworks/nuxt/scan-using-foundational-api/dynamsoft.config.ts diff --git a/foundational-api-samples/hello-world/nuxt/nuxt.config.ts b/frameworks/nuxt/scan-using-foundational-api/nuxt.config.ts similarity index 100% rename from foundational-api-samples/hello-world/nuxt/nuxt.config.ts rename to frameworks/nuxt/scan-using-foundational-api/nuxt.config.ts diff --git a/foundational-api-samples/hello-world/nuxt/package.json b/frameworks/nuxt/scan-using-foundational-api/package.json similarity index 100% rename from foundational-api-samples/hello-world/nuxt/package.json rename to frameworks/nuxt/scan-using-foundational-api/package.json diff --git a/foundational-api-samples/hello-world/nuxt/public/favicon.ico b/frameworks/nuxt/scan-using-foundational-api/public/favicon.ico similarity index 100% rename from foundational-api-samples/hello-world/nuxt/public/favicon.ico rename to frameworks/nuxt/scan-using-foundational-api/public/favicon.ico diff --git a/foundational-api-samples/hello-world/nuxt/tsconfig.json b/frameworks/nuxt/scan-using-foundational-api/tsconfig.json similarity index 100% rename from foundational-api-samples/hello-world/nuxt/tsconfig.json rename to frameworks/nuxt/scan-using-foundational-api/tsconfig.json diff --git a/frameworks/pwa/README.md b/frameworks/pwa/README.md new file mode 100644 index 00000000..e69de29b diff --git a/foundational-api-samples/hello-world/pwa/README.md b/frameworks/pwa/scan-using-foundational-api/README.md similarity index 100% rename from foundational-api-samples/hello-world/pwa/README.md rename to frameworks/pwa/scan-using-foundational-api/README.md diff --git a/barcode-scanner-api-samples/scan-single-barcode/pwa/dynamsoft-192x192.png b/frameworks/pwa/scan-using-foundational-api/dynamsoft-192x192.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/pwa/dynamsoft-192x192.png rename to frameworks/pwa/scan-using-foundational-api/dynamsoft-192x192.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/pwa/dynamsoft-512x512.png b/frameworks/pwa/scan-using-foundational-api/dynamsoft-512x512.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/pwa/dynamsoft-512x512.png rename to frameworks/pwa/scan-using-foundational-api/dynamsoft-512x512.png diff --git a/foundational-api-samples/hello-world/pwa/helloworld-pwa.html b/frameworks/pwa/scan-using-foundational-api/helloworld-pwa.html similarity index 100% rename from foundational-api-samples/hello-world/pwa/helloworld-pwa.html rename to frameworks/pwa/scan-using-foundational-api/helloworld-pwa.html diff --git a/barcode-scanner-api-samples/scan-single-barcode/pwa/helloworld-pwa.json b/frameworks/pwa/scan-using-foundational-api/helloworld-pwa.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/pwa/helloworld-pwa.json rename to frameworks/pwa/scan-using-foundational-api/helloworld-pwa.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/pwa/service-worker.js b/frameworks/pwa/scan-using-foundational-api/service-worker.js similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/pwa/service-worker.js rename to frameworks/pwa/scan-using-foundational-api/service-worker.js diff --git a/barcode-scanner-api-samples/scan-single-barcode/pwa/README.md b/frameworks/pwa/scan-using-rtu-api/README.md similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/pwa/README.md rename to frameworks/pwa/scan-using-rtu-api/README.md diff --git a/foundational-api-samples/hello-world/pwa/dynamsoft-192x192.png b/frameworks/pwa/scan-using-rtu-api/dynamsoft-192x192.png similarity index 100% rename from foundational-api-samples/hello-world/pwa/dynamsoft-192x192.png rename to frameworks/pwa/scan-using-rtu-api/dynamsoft-192x192.png diff --git a/foundational-api-samples/hello-world/pwa/dynamsoft-512x512.png b/frameworks/pwa/scan-using-rtu-api/dynamsoft-512x512.png similarity index 100% rename from foundational-api-samples/hello-world/pwa/dynamsoft-512x512.png rename to frameworks/pwa/scan-using-rtu-api/dynamsoft-512x512.png diff --git a/barcode-scanner-api-samples/scan-single-barcode/pwa/helloworld-pwa.html b/frameworks/pwa/scan-using-rtu-api/helloworld-pwa.html similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/pwa/helloworld-pwa.html rename to frameworks/pwa/scan-using-rtu-api/helloworld-pwa.html diff --git a/foundational-api-samples/hello-world/pwa/helloworld-pwa.json b/frameworks/pwa/scan-using-rtu-api/helloworld-pwa.json similarity index 100% rename from foundational-api-samples/hello-world/pwa/helloworld-pwa.json rename to frameworks/pwa/scan-using-rtu-api/helloworld-pwa.json diff --git a/foundational-api-samples/hello-world/pwa/service-worker.js b/frameworks/pwa/scan-using-rtu-api/service-worker.js similarity index 100% rename from foundational-api-samples/hello-world/pwa/service-worker.js rename to frameworks/pwa/scan-using-rtu-api/service-worker.js diff --git a/frameworks/react/README.md b/frameworks/react/README.md new file mode 100644 index 00000000..e69de29b diff --git a/foundational-api-samples/hello-world/react-hooks/.gitignore b/frameworks/react/scan-using-foundational-api/.gitignore similarity index 100% rename from foundational-api-samples/hello-world/react-hooks/.gitignore rename to frameworks/react/scan-using-foundational-api/.gitignore diff --git a/foundational-api-samples/hello-world/react-hooks/README.md b/frameworks/react/scan-using-foundational-api/README.md similarity index 100% rename from foundational-api-samples/hello-world/react-hooks/README.md rename to frameworks/react/scan-using-foundational-api/README.md diff --git a/foundational-api-samples/hello-world/react-hooks/package.json b/frameworks/react/scan-using-foundational-api/package.json similarity index 100% rename from foundational-api-samples/hello-world/react-hooks/package.json rename to frameworks/react/scan-using-foundational-api/package.json diff --git a/foundational-api-samples/hello-world/react-hooks/public/favicon.ico b/frameworks/react/scan-using-foundational-api/public/favicon.ico similarity index 100% rename from foundational-api-samples/hello-world/react-hooks/public/favicon.ico rename to frameworks/react/scan-using-foundational-api/public/favicon.ico diff --git a/foundational-api-samples/hello-world/react-hooks/public/index.html b/frameworks/react/scan-using-foundational-api/public/index.html similarity index 100% rename from foundational-api-samples/hello-world/react-hooks/public/index.html rename to frameworks/react/scan-using-foundational-api/public/index.html diff --git a/foundational-api-samples/hello-world/react-hooks/public/logo192.png b/frameworks/react/scan-using-foundational-api/public/logo192.png similarity index 100% rename from foundational-api-samples/hello-world/react-hooks/public/logo192.png rename to frameworks/react/scan-using-foundational-api/public/logo192.png diff --git a/foundational-api-samples/hello-world/react-hooks/public/logo512.png b/frameworks/react/scan-using-foundational-api/public/logo512.png similarity index 100% rename from foundational-api-samples/hello-world/react-hooks/public/logo512.png rename to frameworks/react/scan-using-foundational-api/public/logo512.png diff --git a/foundational-api-samples/hello-world/react-hooks/public/manifest.json b/frameworks/react/scan-using-foundational-api/public/manifest.json similarity index 100% rename from foundational-api-samples/hello-world/react-hooks/public/manifest.json rename to frameworks/react/scan-using-foundational-api/public/manifest.json diff --git a/foundational-api-samples/hello-world/react-hooks/src/App.css b/frameworks/react/scan-using-foundational-api/src/App.css similarity index 100% rename from foundational-api-samples/hello-world/react-hooks/src/App.css rename to frameworks/react/scan-using-foundational-api/src/App.css diff --git a/foundational-api-samples/hello-world/react-hooks/src/App.tsx b/frameworks/react/scan-using-foundational-api/src/App.tsx similarity index 100% rename from foundational-api-samples/hello-world/react-hooks/src/App.tsx rename to frameworks/react/scan-using-foundational-api/src/App.tsx diff --git a/foundational-api-samples/hello-world/react-hooks/src/assets/logo.svg b/frameworks/react/scan-using-foundational-api/src/assets/logo.svg similarity index 100% rename from foundational-api-samples/hello-world/react-hooks/src/assets/logo.svg rename to frameworks/react/scan-using-foundational-api/src/assets/logo.svg diff --git a/foundational-api-samples/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.css b/frameworks/react/scan-using-foundational-api/src/components/ImageCapture/ImageCapture.css similarity index 100% rename from foundational-api-samples/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.css rename to frameworks/react/scan-using-foundational-api/src/components/ImageCapture/ImageCapture.css diff --git a/foundational-api-samples/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx b/frameworks/react/scan-using-foundational-api/src/components/ImageCapture/ImageCapture.tsx similarity index 100% rename from foundational-api-samples/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx rename to frameworks/react/scan-using-foundational-api/src/components/ImageCapture/ImageCapture.tsx diff --git a/foundational-api-samples/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.css b/frameworks/react/scan-using-foundational-api/src/components/VideoCapture/VideoCapture.css similarity index 100% rename from foundational-api-samples/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.css rename to frameworks/react/scan-using-foundational-api/src/components/VideoCapture/VideoCapture.css diff --git a/foundational-api-samples/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.tsx b/frameworks/react/scan-using-foundational-api/src/components/VideoCapture/VideoCapture.tsx similarity index 100% rename from foundational-api-samples/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.tsx rename to frameworks/react/scan-using-foundational-api/src/components/VideoCapture/VideoCapture.tsx diff --git a/foundational-api-samples/hello-world/react-hooks/src/dynamsoft.config.ts b/frameworks/react/scan-using-foundational-api/src/dynamsoft.config.ts similarity index 100% rename from foundational-api-samples/hello-world/react-hooks/src/dynamsoft.config.ts rename to frameworks/react/scan-using-foundational-api/src/dynamsoft.config.ts diff --git a/foundational-api-samples/hello-world/react-hooks/src/index.css b/frameworks/react/scan-using-foundational-api/src/index.css similarity index 100% rename from foundational-api-samples/hello-world/react-hooks/src/index.css rename to frameworks/react/scan-using-foundational-api/src/index.css diff --git a/foundational-api-samples/hello-world/react-hooks/src/index.tsx b/frameworks/react/scan-using-foundational-api/src/index.tsx similarity index 100% rename from foundational-api-samples/hello-world/react-hooks/src/index.tsx rename to frameworks/react/scan-using-foundational-api/src/index.tsx diff --git a/foundational-api-samples/hello-world/react-hooks/src/react-app-env.d.ts b/frameworks/react/scan-using-foundational-api/src/react-app-env.d.ts similarity index 100% rename from foundational-api-samples/hello-world/react-hooks/src/react-app-env.d.ts rename to frameworks/react/scan-using-foundational-api/src/react-app-env.d.ts diff --git a/foundational-api-samples/hello-world/react-hooks/tsconfig.json b/frameworks/react/scan-using-foundational-api/tsconfig.json similarity index 100% rename from foundational-api-samples/hello-world/react-hooks/tsconfig.json rename to frameworks/react/scan-using-foundational-api/tsconfig.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/.gitignore b/frameworks/react/scan-using-rtu-api/.gitignore similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/react/.gitignore rename to frameworks/react/scan-using-rtu-api/.gitignore diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/README.md b/frameworks/react/scan-using-rtu-api/README.md similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/react/README.md rename to frameworks/react/scan-using-rtu-api/README.md diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/index.html b/frameworks/react/scan-using-rtu-api/index.html similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/react/index.html rename to frameworks/react/scan-using-rtu-api/index.html diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/package.json b/frameworks/react/scan-using-rtu-api/package.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/react/package.json rename to frameworks/react/scan-using-rtu-api/package.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx b/frameworks/react/scan-using-rtu-api/src/App.tsx similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx rename to frameworks/react/scan-using-rtu-api/src/App.tsx diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/src/main.tsx b/frameworks/react/scan-using-rtu-api/src/main.tsx similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/react/src/main.tsx rename to frameworks/react/scan-using-rtu-api/src/main.tsx diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.app.json b/frameworks/react/scan-using-rtu-api/tsconfig.app.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.app.json rename to frameworks/react/scan-using-rtu-api/tsconfig.app.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.json b/frameworks/react/scan-using-rtu-api/tsconfig.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.json rename to frameworks/react/scan-using-rtu-api/tsconfig.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.node.json b/frameworks/react/scan-using-rtu-api/tsconfig.node.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.node.json rename to frameworks/react/scan-using-rtu-api/tsconfig.node.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/vite.config.ts b/frameworks/react/scan-using-rtu-api/vite.config.ts similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/react/vite.config.ts rename to frameworks/react/scan-using-rtu-api/vite.config.ts diff --git a/frameworks/requirejs/README.md b/frameworks/requirejs/README.md new file mode 100644 index 00000000..e69de29b diff --git a/foundational-api-samples/hello-world/requirejs.html b/frameworks/requirejs/scan-using-foundational-api/requirejs.html similarity index 100% rename from foundational-api-samples/hello-world/requirejs.html rename to frameworks/requirejs/scan-using-foundational-api/requirejs.html diff --git a/barcode-scanner-api-samples/scan-single-barcode/requirejs.html b/frameworks/requirejs/scan-using-rtu-api/requirejs.html similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/requirejs.html rename to frameworks/requirejs/scan-using-rtu-api/requirejs.html diff --git a/frameworks/svelte/README.md b/frameworks/svelte/README.md new file mode 100644 index 00000000..e69de29b diff --git a/foundational-api-samples/hello-world/svelte/.gitignore b/frameworks/svelte/scan-using-foundational-api/.gitignore similarity index 100% rename from foundational-api-samples/hello-world/svelte/.gitignore rename to frameworks/svelte/scan-using-foundational-api/.gitignore diff --git a/foundational-api-samples/hello-world/svelte/README.md b/frameworks/svelte/scan-using-foundational-api/README.md similarity index 100% rename from foundational-api-samples/hello-world/svelte/README.md rename to frameworks/svelte/scan-using-foundational-api/README.md diff --git a/foundational-api-samples/hello-world/svelte/index.html b/frameworks/svelte/scan-using-foundational-api/index.html similarity index 100% rename from foundational-api-samples/hello-world/svelte/index.html rename to frameworks/svelte/scan-using-foundational-api/index.html diff --git a/foundational-api-samples/hello-world/svelte/logo.svg b/frameworks/svelte/scan-using-foundational-api/logo.svg similarity index 100% rename from foundational-api-samples/hello-world/svelte/logo.svg rename to frameworks/svelte/scan-using-foundational-api/logo.svg diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/package.json b/frameworks/svelte/scan-using-foundational-api/package.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/svelte/package.json rename to frameworks/svelte/scan-using-foundational-api/package.json diff --git a/foundational-api-samples/hello-world/svelte/src/App.svelte b/frameworks/svelte/scan-using-foundational-api/src/App.svelte similarity index 100% rename from foundational-api-samples/hello-world/svelte/src/App.svelte rename to frameworks/svelte/scan-using-foundational-api/src/App.svelte diff --git a/foundational-api-samples/hello-world/svelte/src/components/ImageCapture.svelte b/frameworks/svelte/scan-using-foundational-api/src/components/ImageCapture.svelte similarity index 100% rename from foundational-api-samples/hello-world/svelte/src/components/ImageCapture.svelte rename to frameworks/svelte/scan-using-foundational-api/src/components/ImageCapture.svelte diff --git a/foundational-api-samples/hello-world/svelte/src/components/VideoCapture.svelte b/frameworks/svelte/scan-using-foundational-api/src/components/VideoCapture.svelte similarity index 100% rename from foundational-api-samples/hello-world/svelte/src/components/VideoCapture.svelte rename to frameworks/svelte/scan-using-foundational-api/src/components/VideoCapture.svelte diff --git a/foundational-api-samples/hello-world/svelte/src/dynamsoft.config.ts b/frameworks/svelte/scan-using-foundational-api/src/dynamsoft.config.ts similarity index 100% rename from foundational-api-samples/hello-world/svelte/src/dynamsoft.config.ts rename to frameworks/svelte/scan-using-foundational-api/src/dynamsoft.config.ts diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/src/main.ts b/frameworks/svelte/scan-using-foundational-api/src/main.ts similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/svelte/src/main.ts rename to frameworks/svelte/scan-using-foundational-api/src/main.ts diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/src/vite-env.d.ts b/frameworks/svelte/scan-using-foundational-api/src/vite-env.d.ts similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/svelte/src/vite-env.d.ts rename to frameworks/svelte/scan-using-foundational-api/src/vite-env.d.ts diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/svelte.config.js b/frameworks/svelte/scan-using-foundational-api/svelte.config.js similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/svelte/svelte.config.js rename to frameworks/svelte/scan-using-foundational-api/svelte.config.js diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/tsconfig.json b/frameworks/svelte/scan-using-foundational-api/tsconfig.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/svelte/tsconfig.json rename to frameworks/svelte/scan-using-foundational-api/tsconfig.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/tsconfig.node.json b/frameworks/svelte/scan-using-foundational-api/tsconfig.node.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/svelte/tsconfig.node.json rename to frameworks/svelte/scan-using-foundational-api/tsconfig.node.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/vite.config.ts b/frameworks/svelte/scan-using-foundational-api/vite.config.ts similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/svelte/vite.config.ts rename to frameworks/svelte/scan-using-foundational-api/vite.config.ts diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/.gitignore b/frameworks/svelte/scan-using-rtu-api/.gitignore similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/svelte/.gitignore rename to frameworks/svelte/scan-using-rtu-api/.gitignore diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/README.md b/frameworks/svelte/scan-using-rtu-api/README.md similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/svelte/README.md rename to frameworks/svelte/scan-using-rtu-api/README.md diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/index.html b/frameworks/svelte/scan-using-rtu-api/index.html similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/svelte/index.html rename to frameworks/svelte/scan-using-rtu-api/index.html diff --git a/foundational-api-samples/hello-world/svelte/package.json b/frameworks/svelte/scan-using-rtu-api/package.json similarity index 100% rename from foundational-api-samples/hello-world/svelte/package.json rename to frameworks/svelte/scan-using-rtu-api/package.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/src/App.svelte b/frameworks/svelte/scan-using-rtu-api/src/App.svelte similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/svelte/src/App.svelte rename to frameworks/svelte/scan-using-rtu-api/src/App.svelte diff --git a/foundational-api-samples/hello-world/svelte/src/main.ts b/frameworks/svelte/scan-using-rtu-api/src/main.ts similarity index 100% rename from foundational-api-samples/hello-world/svelte/src/main.ts rename to frameworks/svelte/scan-using-rtu-api/src/main.ts diff --git a/foundational-api-samples/hello-world/svelte/src/vite-env.d.ts b/frameworks/svelte/scan-using-rtu-api/src/vite-env.d.ts similarity index 100% rename from foundational-api-samples/hello-world/svelte/src/vite-env.d.ts rename to frameworks/svelte/scan-using-rtu-api/src/vite-env.d.ts diff --git a/foundational-api-samples/hello-world/svelte/svelte.config.js b/frameworks/svelte/scan-using-rtu-api/svelte.config.js similarity index 100% rename from foundational-api-samples/hello-world/svelte/svelte.config.js rename to frameworks/svelte/scan-using-rtu-api/svelte.config.js diff --git a/foundational-api-samples/hello-world/svelte/tsconfig.json b/frameworks/svelte/scan-using-rtu-api/tsconfig.json similarity index 100% rename from foundational-api-samples/hello-world/svelte/tsconfig.json rename to frameworks/svelte/scan-using-rtu-api/tsconfig.json diff --git a/foundational-api-samples/hello-world/svelte/tsconfig.node.json b/frameworks/svelte/scan-using-rtu-api/tsconfig.node.json similarity index 100% rename from foundational-api-samples/hello-world/svelte/tsconfig.node.json rename to frameworks/svelte/scan-using-rtu-api/tsconfig.node.json diff --git a/foundational-api-samples/hello-world/svelte/vite.config.ts b/frameworks/svelte/scan-using-rtu-api/vite.config.ts similarity index 100% rename from foundational-api-samples/hello-world/svelte/vite.config.ts rename to frameworks/svelte/scan-using-rtu-api/vite.config.ts diff --git a/frameworks/vue/README.md b/frameworks/vue/README.md new file mode 100644 index 00000000..e69de29b diff --git a/foundational-api-samples/hello-world/vue/.gitignore b/frameworks/vue/scan-using-foundational-api/.gitignore similarity index 100% rename from foundational-api-samples/hello-world/vue/.gitignore rename to frameworks/vue/scan-using-foundational-api/.gitignore diff --git a/foundational-api-samples/hello-world/vue/README.md b/frameworks/vue/scan-using-foundational-api/README.md similarity index 100% rename from foundational-api-samples/hello-world/vue/README.md rename to frameworks/vue/scan-using-foundational-api/README.md diff --git a/foundational-api-samples/hello-world/vue/env.d.ts b/frameworks/vue/scan-using-foundational-api/env.d.ts similarity index 100% rename from foundational-api-samples/hello-world/vue/env.d.ts rename to frameworks/vue/scan-using-foundational-api/env.d.ts diff --git a/foundational-api-samples/hello-world/vue/index.html b/frameworks/vue/scan-using-foundational-api/index.html similarity index 100% rename from foundational-api-samples/hello-world/vue/index.html rename to frameworks/vue/scan-using-foundational-api/index.html diff --git a/foundational-api-samples/hello-world/vue/package.json b/frameworks/vue/scan-using-foundational-api/package.json similarity index 100% rename from foundational-api-samples/hello-world/vue/package.json rename to frameworks/vue/scan-using-foundational-api/package.json diff --git a/foundational-api-samples/hello-world/vue/public/favicon.ico b/frameworks/vue/scan-using-foundational-api/public/favicon.ico similarity index 100% rename from foundational-api-samples/hello-world/vue/public/favicon.ico rename to frameworks/vue/scan-using-foundational-api/public/favicon.ico diff --git a/foundational-api-samples/hello-world/vue/src/App.vue b/frameworks/vue/scan-using-foundational-api/src/App.vue similarity index 100% rename from foundational-api-samples/hello-world/vue/src/App.vue rename to frameworks/vue/scan-using-foundational-api/src/App.vue diff --git a/foundational-api-samples/hello-world/vue/src/assets/logo.svg b/frameworks/vue/scan-using-foundational-api/src/assets/logo.svg similarity index 100% rename from foundational-api-samples/hello-world/vue/src/assets/logo.svg rename to frameworks/vue/scan-using-foundational-api/src/assets/logo.svg diff --git a/foundational-api-samples/hello-world/vue/src/assets/main.css b/frameworks/vue/scan-using-foundational-api/src/assets/main.css similarity index 100% rename from foundational-api-samples/hello-world/vue/src/assets/main.css rename to frameworks/vue/scan-using-foundational-api/src/assets/main.css diff --git a/foundational-api-samples/hello-world/vue/src/components/ImageCapture.vue b/frameworks/vue/scan-using-foundational-api/src/components/ImageCapture.vue similarity index 100% rename from foundational-api-samples/hello-world/vue/src/components/ImageCapture.vue rename to frameworks/vue/scan-using-foundational-api/src/components/ImageCapture.vue diff --git a/foundational-api-samples/hello-world/vue/src/components/VideoCapture.vue b/frameworks/vue/scan-using-foundational-api/src/components/VideoCapture.vue similarity index 100% rename from foundational-api-samples/hello-world/vue/src/components/VideoCapture.vue rename to frameworks/vue/scan-using-foundational-api/src/components/VideoCapture.vue diff --git a/foundational-api-samples/hello-world/react/src/dynamsoft.config.ts b/frameworks/vue/scan-using-foundational-api/src/dynamsoft.config.ts similarity index 100% rename from foundational-api-samples/hello-world/react/src/dynamsoft.config.ts rename to frameworks/vue/scan-using-foundational-api/src/dynamsoft.config.ts diff --git a/foundational-api-samples/hello-world/vue/src/main.ts b/frameworks/vue/scan-using-foundational-api/src/main.ts similarity index 100% rename from foundational-api-samples/hello-world/vue/src/main.ts rename to frameworks/vue/scan-using-foundational-api/src/main.ts diff --git a/foundational-api-samples/hello-world/vue/tsconfig.config.json b/frameworks/vue/scan-using-foundational-api/tsconfig.config.json similarity index 100% rename from foundational-api-samples/hello-world/vue/tsconfig.config.json rename to frameworks/vue/scan-using-foundational-api/tsconfig.config.json diff --git a/foundational-api-samples/hello-world/vue/tsconfig.json b/frameworks/vue/scan-using-foundational-api/tsconfig.json similarity index 100% rename from foundational-api-samples/hello-world/vue/tsconfig.json rename to frameworks/vue/scan-using-foundational-api/tsconfig.json diff --git a/foundational-api-samples/hello-world/vue/vite.config.ts b/frameworks/vue/scan-using-foundational-api/vite.config.ts similarity index 100% rename from foundational-api-samples/hello-world/vue/vite.config.ts rename to frameworks/vue/scan-using-foundational-api/vite.config.ts diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/.gitignore b/frameworks/vue/scan-using-rtu-api/.gitignore similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/vue/.gitignore rename to frameworks/vue/scan-using-rtu-api/.gitignore diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/README.md b/frameworks/vue/scan-using-rtu-api/README.md similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/vue/README.md rename to frameworks/vue/scan-using-rtu-api/README.md diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/index.html b/frameworks/vue/scan-using-rtu-api/index.html similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/vue/index.html rename to frameworks/vue/scan-using-rtu-api/index.html diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/package.json b/frameworks/vue/scan-using-rtu-api/package.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/vue/package.json rename to frameworks/vue/scan-using-rtu-api/package.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue b/frameworks/vue/scan-using-rtu-api/src/App.vue similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue rename to frameworks/vue/scan-using-rtu-api/src/App.vue diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/src/main.ts b/frameworks/vue/scan-using-rtu-api/src/main.ts similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/vue/src/main.ts rename to frameworks/vue/scan-using-rtu-api/src/main.ts diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/src/vite-env.d.ts b/frameworks/vue/scan-using-rtu-api/src/vite-env.d.ts similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/vue/src/vite-env.d.ts rename to frameworks/vue/scan-using-rtu-api/src/vite-env.d.ts diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.app.json b/frameworks/vue/scan-using-rtu-api/tsconfig.app.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.app.json rename to frameworks/vue/scan-using-rtu-api/tsconfig.app.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.json b/frameworks/vue/scan-using-rtu-api/tsconfig.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.json rename to frameworks/vue/scan-using-rtu-api/tsconfig.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.node.json b/frameworks/vue/scan-using-rtu-api/tsconfig.node.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.node.json rename to frameworks/vue/scan-using-rtu-api/tsconfig.node.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/vite.config.ts b/frameworks/vue/scan-using-rtu-api/vite.config.ts similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/vue/vite.config.ts rename to frameworks/vue/scan-using-rtu-api/vite.config.ts diff --git a/frameworks/webview/README.md b/frameworks/webview/README.md new file mode 100644 index 00000000..e69de29b diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/.gitignore b/frameworks/webview/scan-using-foundational-api/android/.gitignore similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/.gitignore rename to frameworks/webview/scan-using-foundational-api/android/.gitignore diff --git a/foundational-api-samples/hello-world/webview/android/README.md b/frameworks/webview/scan-using-foundational-api/android/README.md similarity index 100% rename from foundational-api-samples/hello-world/webview/android/README.md rename to frameworks/webview/scan-using-foundational-api/android/README.md diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/.gitignore b/frameworks/webview/scan-using-foundational-api/android/app/.gitignore similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/.gitignore rename to frameworks/webview/scan-using-foundational-api/android/app/.gitignore diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/build.gradle b/frameworks/webview/scan-using-foundational-api/android/app/build.gradle similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/build.gradle rename to frameworks/webview/scan-using-foundational-api/android/app/build.gradle diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/proguard-rules.pro b/frameworks/webview/scan-using-foundational-api/android/app/proguard-rules.pro similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/proguard-rules.pro rename to frameworks/webview/scan-using-foundational-api/android/app/proguard-rules.pro diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/AndroidManifest.xml b/frameworks/webview/scan-using-foundational-api/android/app/src/main/AndroidManifest.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/AndroidManifest.xml rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/AndroidManifest.xml diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html b/frameworks/webview/scan-using-foundational-api/android/app/src/main/assets/decodeBarcodeInVideo.html similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/assets/decodeBarcodeInVideo.html diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt b/frameworks/webview/scan-using-foundational-api/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/drawable/ic_launcher_background.xml b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/drawable/ic_launcher_background.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/drawable/ic_launcher_background.xml rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/drawable/ic_launcher_background.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/layout/activity_main.xml b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/layout/activity_main.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/layout/activity_main.xml rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/layout/activity_main.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values-night/themes.xml b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/values-night/themes.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values-night/themes.xml rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/values-night/themes.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/colors.xml b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/values/colors.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/colors.xml rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/values/colors.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/strings.xml b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/values/strings.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/strings.xml rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/values/strings.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/themes.xml b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/values/themes.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/themes.xml rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/values/themes.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/xml/backup_rules.xml b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/xml/backup_rules.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/xml/backup_rules.xml rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/xml/backup_rules.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/xml/data_extraction_rules.xml b/frameworks/webview/scan-using-foundational-api/android/app/src/main/res/xml/data_extraction_rules.xml similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/xml/data_extraction_rules.xml rename to frameworks/webview/scan-using-foundational-api/android/app/src/main/res/xml/data_extraction_rules.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/build.gradle b/frameworks/webview/scan-using-foundational-api/android/build.gradle similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/build.gradle rename to frameworks/webview/scan-using-foundational-api/android/build.gradle diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle.properties b/frameworks/webview/scan-using-foundational-api/android/gradle.properties similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle.properties rename to frameworks/webview/scan-using-foundational-api/android/gradle.properties diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle/wrapper/gradle-wrapper.jar b/frameworks/webview/scan-using-foundational-api/android/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle/wrapper/gradle-wrapper.jar rename to frameworks/webview/scan-using-foundational-api/android/gradle/wrapper/gradle-wrapper.jar diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle/wrapper/gradle-wrapper.properties b/frameworks/webview/scan-using-foundational-api/android/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle/wrapper/gradle-wrapper.properties rename to frameworks/webview/scan-using-foundational-api/android/gradle/wrapper/gradle-wrapper.properties diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradlew b/frameworks/webview/scan-using-foundational-api/android/gradlew similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/gradlew rename to frameworks/webview/scan-using-foundational-api/android/gradlew diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradlew.bat b/frameworks/webview/scan-using-foundational-api/android/gradlew.bat similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/gradlew.bat rename to frameworks/webview/scan-using-foundational-api/android/gradlew.bat diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/settings.gradle b/frameworks/webview/scan-using-foundational-api/android/settings.gradle similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/settings.gradle rename to frameworks/webview/scan-using-foundational-api/android/settings.gradle diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/.gitignore b/frameworks/webview/scan-using-foundational-api/ios/.gitignore similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/ios/.gitignore rename to frameworks/webview/scan-using-foundational-api/ios/.gitignore diff --git a/foundational-api-samples/hello-world/webview/ios/README.md b/frameworks/webview/scan-using-foundational-api/ios/README.md similarity index 100% rename from foundational-api-samples/hello-world/webview/ios/README.md rename to frameworks/webview/scan-using-foundational-api/ios/README.md diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.pbxproj b/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview.xcodeproj/project.pbxproj similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.pbxproj rename to frameworks/webview/scan-using-foundational-api/ios/dbrjswebview.xcodeproj/project.pbxproj diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to frameworks/webview/scan-using-foundational-api/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to frameworks/webview/scan-using-foundational-api/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/AppDelegate.swift b/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/AppDelegate.swift similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/AppDelegate.swift rename to frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/AppDelegate.swift diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json b/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json rename to frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json b/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json rename to frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/Contents.json b/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/Assets.xcassets/Contents.json similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/Contents.json rename to frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/Assets.xcassets/Contents.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard b/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard rename to frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Base.lproj/Main.storyboard b/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/Base.lproj/Main.storyboard similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Base.lproj/Main.storyboard rename to frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/Base.lproj/Main.storyboard diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Info.plist b/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/Info.plist similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Info.plist rename to frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/Info.plist diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/SceneDelegate.swift b/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/SceneDelegate.swift similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/SceneDelegate.swift rename to frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/SceneDelegate.swift diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/ViewController.swift b/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/ViewController.swift similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/ViewController.swift rename to frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/ViewController.swift diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html b/frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/html/decodeFileInVideo.html similarity index 100% rename from foundational-api-samples/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html rename to frameworks/webview/scan-using-foundational-api/ios/dbrjswebview/html/decodeFileInVideo.html diff --git a/foundational-api-samples/hello-world/webview/android/.gitignore b/frameworks/webview/scan-using-rtu-api/android/.gitignore similarity index 100% rename from foundational-api-samples/hello-world/webview/android/.gitignore rename to frameworks/webview/scan-using-rtu-api/android/.gitignore diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/README.md b/frameworks/webview/scan-using-rtu-api/android/README.md similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/README.md rename to frameworks/webview/scan-using-rtu-api/android/README.md diff --git a/foundational-api-samples/hello-world/webview/android/app/.gitignore b/frameworks/webview/scan-using-rtu-api/android/app/.gitignore similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/.gitignore rename to frameworks/webview/scan-using-rtu-api/android/app/.gitignore diff --git a/foundational-api-samples/hello-world/webview/android/app/build.gradle b/frameworks/webview/scan-using-rtu-api/android/app/build.gradle similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/build.gradle rename to frameworks/webview/scan-using-rtu-api/android/app/build.gradle diff --git a/foundational-api-samples/hello-world/webview/android/app/proguard-rules.pro b/frameworks/webview/scan-using-rtu-api/android/app/proguard-rules.pro similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/proguard-rules.pro rename to frameworks/webview/scan-using-rtu-api/android/app/proguard-rules.pro diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/AndroidManifest.xml b/frameworks/webview/scan-using-rtu-api/android/app/src/main/AndroidManifest.xml similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/AndroidManifest.xml rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/AndroidManifest.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/assets/decodeBarcodeInVideo.html b/frameworks/webview/scan-using-rtu-api/android/app/src/main/assets/decodeBarcodeInVideo.html similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/assets/decodeBarcodeInVideo.html rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/assets/decodeBarcodeInVideo.html diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt b/frameworks/webview/scan-using-rtu-api/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/drawable/ic_launcher_background.xml b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/drawable/ic_launcher_background.xml similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/drawable/ic_launcher_background.xml rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/drawable/ic_launcher_background.xml diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/layout/activity_main.xml b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/layout/activity_main.xml similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/layout/activity_main.xml rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/layout/activity_main.xml diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/values-night/themes.xml b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/values-night/themes.xml similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/values-night/themes.xml rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/values-night/themes.xml diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/values/colors.xml b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/values/colors.xml similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/values/colors.xml rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/values/colors.xml diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/values/strings.xml b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/values/strings.xml similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/values/strings.xml rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/values/strings.xml diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/values/themes.xml b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/values/themes.xml similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/values/themes.xml rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/values/themes.xml diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/xml/backup_rules.xml b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/xml/backup_rules.xml similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/xml/backup_rules.xml rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/xml/backup_rules.xml diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/xml/data_extraction_rules.xml b/frameworks/webview/scan-using-rtu-api/android/app/src/main/res/xml/data_extraction_rules.xml similarity index 100% rename from foundational-api-samples/hello-world/webview/android/app/src/main/res/xml/data_extraction_rules.xml rename to frameworks/webview/scan-using-rtu-api/android/app/src/main/res/xml/data_extraction_rules.xml diff --git a/foundational-api-samples/hello-world/webview/android/build.gradle b/frameworks/webview/scan-using-rtu-api/android/build.gradle similarity index 100% rename from foundational-api-samples/hello-world/webview/android/build.gradle rename to frameworks/webview/scan-using-rtu-api/android/build.gradle diff --git a/foundational-api-samples/hello-world/webview/android/gradle.properties b/frameworks/webview/scan-using-rtu-api/android/gradle.properties similarity index 100% rename from foundational-api-samples/hello-world/webview/android/gradle.properties rename to frameworks/webview/scan-using-rtu-api/android/gradle.properties diff --git a/foundational-api-samples/hello-world/webview/android/gradle/wrapper/gradle-wrapper.jar b/frameworks/webview/scan-using-rtu-api/android/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from foundational-api-samples/hello-world/webview/android/gradle/wrapper/gradle-wrapper.jar rename to frameworks/webview/scan-using-rtu-api/android/gradle/wrapper/gradle-wrapper.jar diff --git a/foundational-api-samples/hello-world/webview/android/gradle/wrapper/gradle-wrapper.properties b/frameworks/webview/scan-using-rtu-api/android/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from foundational-api-samples/hello-world/webview/android/gradle/wrapper/gradle-wrapper.properties rename to frameworks/webview/scan-using-rtu-api/android/gradle/wrapper/gradle-wrapper.properties diff --git a/foundational-api-samples/hello-world/webview/android/gradlew b/frameworks/webview/scan-using-rtu-api/android/gradlew similarity index 100% rename from foundational-api-samples/hello-world/webview/android/gradlew rename to frameworks/webview/scan-using-rtu-api/android/gradlew diff --git a/foundational-api-samples/hello-world/webview/android/gradlew.bat b/frameworks/webview/scan-using-rtu-api/android/gradlew.bat similarity index 100% rename from foundational-api-samples/hello-world/webview/android/gradlew.bat rename to frameworks/webview/scan-using-rtu-api/android/gradlew.bat diff --git a/foundational-api-samples/hello-world/webview/android/settings.gradle b/frameworks/webview/scan-using-rtu-api/android/settings.gradle similarity index 100% rename from foundational-api-samples/hello-world/webview/android/settings.gradle rename to frameworks/webview/scan-using-rtu-api/android/settings.gradle diff --git a/foundational-api-samples/hello-world/webview/ios/.gitignore b/frameworks/webview/scan-using-rtu-api/ios/.gitignore similarity index 100% rename from foundational-api-samples/hello-world/webview/ios/.gitignore rename to frameworks/webview/scan-using-rtu-api/ios/.gitignore diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/README.md b/frameworks/webview/scan-using-rtu-api/ios/README.md similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/ios/README.md rename to frameworks/webview/scan-using-rtu-api/ios/README.md diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview.xcodeproj/project.pbxproj b/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview.xcodeproj/project.pbxproj similarity index 100% rename from foundational-api-samples/hello-world/webview/ios/dbrjswebview.xcodeproj/project.pbxproj rename to frameworks/webview/scan-using-rtu-api/ios/dbrjswebview.xcodeproj/project.pbxproj diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from foundational-api-samples/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to frameworks/webview/scan-using-rtu-api/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from foundational-api-samples/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to frameworks/webview/scan-using-rtu-api/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/AppDelegate.swift b/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/AppDelegate.swift similarity index 100% rename from foundational-api-samples/hello-world/webview/ios/dbrjswebview/AppDelegate.swift rename to frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/AppDelegate.swift diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json b/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from foundational-api-samples/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json rename to frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json b/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from foundational-api-samples/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json rename to frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Assets.xcassets/Contents.json b/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/Assets.xcassets/Contents.json similarity index 100% rename from foundational-api-samples/hello-world/webview/ios/dbrjswebview/Assets.xcassets/Contents.json rename to frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/Assets.xcassets/Contents.json diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard b/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from foundational-api-samples/hello-world/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard rename to frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Base.lproj/Main.storyboard b/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/Base.lproj/Main.storyboard similarity index 100% rename from foundational-api-samples/hello-world/webview/ios/dbrjswebview/Base.lproj/Main.storyboard rename to frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/Base.lproj/Main.storyboard diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Info.plist b/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/Info.plist similarity index 100% rename from foundational-api-samples/hello-world/webview/ios/dbrjswebview/Info.plist rename to frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/Info.plist diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/SceneDelegate.swift b/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/SceneDelegate.swift similarity index 100% rename from foundational-api-samples/hello-world/webview/ios/dbrjswebview/SceneDelegate.swift rename to frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/SceneDelegate.swift diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/ViewController.swift b/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/ViewController.swift similarity index 100% rename from foundational-api-samples/hello-world/webview/ios/dbrjswebview/ViewController.swift rename to frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/ViewController.swift diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/html/decodeFileInVideo.html b/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/html/decodeFileInVideo.html similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/html/decodeFileInVideo.html rename to frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/html/decodeFileInVideo.html diff --git a/barcode-scanner-api-samples/scan-single-barcode/hello-world.html b/hello-world.html similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/hello-world.html rename to hello-world.html diff --git a/scenarios/README..md b/scenarios/README..md new file mode 100644 index 00000000..e69de29b diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/batch-inventory/index.css b/scenarios/batch-inventory/index.css similarity index 100% rename from barcode-scanner-api-samples/scan-multiple-barcodes/batch-inventory/index.css rename to scenarios/batch-inventory/index.css diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/batch-inventory/index.html b/scenarios/batch-inventory/index.html similarity index 100% rename from barcode-scanner-api-samples/scan-multiple-barcodes/batch-inventory/index.html rename to scenarios/batch-inventory/index.html diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html b/scenarios/cart-builder.html similarity index 100% rename from barcode-scanner-api-samples/scan-multiple-barcodes/cart-builder.html rename to scenarios/cart-builder.html diff --git a/foundational-api-samples/others/debug/.gitignore b/scenarios/debug/.gitignore similarity index 100% rename from foundational-api-samples/others/debug/.gitignore rename to scenarios/debug/.gitignore diff --git a/foundational-api-samples/others/debug/README.md b/scenarios/debug/README.md similarity index 100% rename from foundational-api-samples/others/debug/README.md rename to scenarios/debug/README.md diff --git a/foundational-api-samples/others/debug/app.js b/scenarios/debug/app.js similarity index 100% rename from foundational-api-samples/others/debug/app.js rename to scenarios/debug/app.js diff --git a/foundational-api-samples/others/debug/package.json b/scenarios/debug/package.json similarity index 100% rename from foundational-api-samples/others/debug/package.json rename to scenarios/debug/package.json diff --git a/foundational-api-samples/others/debug/pem/ryans-cert.pem b/scenarios/debug/pem/ryans-cert.pem similarity index 100% rename from foundational-api-samples/others/debug/pem/ryans-cert.pem rename to scenarios/debug/pem/ryans-cert.pem diff --git a/foundational-api-samples/others/debug/pem/ryans-csr.pem b/scenarios/debug/pem/ryans-csr.pem similarity index 100% rename from foundational-api-samples/others/debug/pem/ryans-csr.pem rename to scenarios/debug/pem/ryans-csr.pem diff --git a/foundational-api-samples/others/debug/pem/ryans-key.pem b/scenarios/debug/pem/ryans-key.pem similarity index 100% rename from foundational-api-samples/others/debug/pem/ryans-key.pem rename to scenarios/debug/pem/ryans-key.pem diff --git a/foundational-api-samples/others/debug/public/index.html b/scenarios/debug/public/index.html similarity index 100% rename from foundational-api-samples/others/debug/public/index.html rename to scenarios/debug/public/index.html diff --git a/foundational-api-samples/use-case/locate-an-item-with-barcode/icons/checkmark-icon.svg b/scenarios/locate-an-item-with-barcode/icons/checkmark-icon.svg similarity index 100% rename from foundational-api-samples/use-case/locate-an-item-with-barcode/icons/checkmark-icon.svg rename to scenarios/locate-an-item-with-barcode/icons/checkmark-icon.svg diff --git a/foundational-api-samples/use-case/locate-an-item-with-barcode/icons/cross-icon.svg b/scenarios/locate-an-item-with-barcode/icons/cross-icon.svg similarity index 100% rename from foundational-api-samples/use-case/locate-an-item-with-barcode/icons/cross-icon.svg rename to scenarios/locate-an-item-with-barcode/icons/cross-icon.svg diff --git a/foundational-api-samples/use-case/locate-an-item-with-barcode/icons/dynamsoft-logo.png b/scenarios/locate-an-item-with-barcode/icons/dynamsoft-logo.png similarity index 100% rename from foundational-api-samples/use-case/locate-an-item-with-barcode/icons/dynamsoft-logo.png rename to scenarios/locate-an-item-with-barcode/icons/dynamsoft-logo.png diff --git a/foundational-api-samples/use-case/locate-an-item-with-barcode/icons/scan-barcode-icon.svg b/scenarios/locate-an-item-with-barcode/icons/scan-barcode-icon.svg similarity index 100% rename from foundational-api-samples/use-case/locate-an-item-with-barcode/icons/scan-barcode-icon.svg rename to scenarios/locate-an-item-with-barcode/icons/scan-barcode-icon.svg diff --git a/foundational-api-samples/use-case/locate-an-item-with-barcode/index.html b/scenarios/locate-an-item-with-barcode/index.html similarity index 100% rename from foundational-api-samples/use-case/locate-an-item-with-barcode/index.html rename to scenarios/locate-an-item-with-barcode/index.html diff --git a/barcode-scanner-api-samples/scan-single-barcode/pick-one-to-fill/index.css b/scenarios/pick-one-to-fill/index.css similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/pick-one-to-fill/index.css rename to scenarios/pick-one-to-fill/index.css diff --git a/barcode-scanner-api-samples/scan-single-barcode/pick-one-to-fill/index.html b/scenarios/pick-one-to-fill/index.html similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/pick-one-to-fill/index.html rename to scenarios/pick-one-to-fill/index.html diff --git a/barcode-scanner-api-samples/scan-single-barcode/pick-one-to-fill/package-label.png b/scenarios/pick-one-to-fill/package-label.png similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/pick-one-to-fill/package-label.png rename to scenarios/pick-one-to-fill/package-label.png diff --git a/foundational-api-samples/use-case/read-a-drivers-license/SampleDriversLicense.jpg b/scenarios/read-a-drivers-license/SampleDriversLicense.jpg similarity index 100% rename from foundational-api-samples/use-case/read-a-drivers-license/SampleDriversLicense.jpg rename to scenarios/read-a-drivers-license/SampleDriversLicense.jpg diff --git a/foundational-api-samples/use-case/read-a-drivers-license/index.html b/scenarios/read-a-drivers-license/index.html similarity index 100% rename from foundational-api-samples/use-case/read-a-drivers-license/index.html rename to scenarios/read-a-drivers-license/index.html diff --git a/foundational-api-samples/use-case/read-a-drivers-license/style.css b/scenarios/read-a-drivers-license/style.css similarity index 100% rename from foundational-api-samples/use-case/read-a-drivers-license/style.css rename to scenarios/read-a-drivers-license/style.css diff --git a/foundational-api-samples/use-case/read-and-parse-GS1-AI/index.css b/scenarios/read-and-parse-GS1-AI/index.css similarity index 100% rename from foundational-api-samples/use-case/read-and-parse-GS1-AI/index.css rename to scenarios/read-and-parse-GS1-AI/index.css diff --git a/foundational-api-samples/use-case/read-and-parse-GS1-AI/index.html b/scenarios/read-and-parse-GS1-AI/index.html similarity index 100% rename from foundational-api-samples/use-case/read-and-parse-GS1-AI/index.html rename to scenarios/read-and-parse-GS1-AI/index.html diff --git a/foundational-api-samples/use-case/read-and-parse-GS1-AI/read_and_parse_gs1.json b/scenarios/read-and-parse-GS1-AI/read_and_parse_gs1.json similarity index 100% rename from foundational-api-samples/use-case/read-and-parse-GS1-AI/read_and_parse_gs1.json rename to scenarios/read-and-parse-GS1-AI/read_and_parse_gs1.json diff --git a/foundational-api-samples/use-case/read-and-parse-GS1-AI/read_gs1.json b/scenarios/read-and-parse-GS1-AI/read_gs1.json similarity index 100% rename from foundational-api-samples/use-case/read-and-parse-GS1-AI/read_gs1.json rename to scenarios/read-and-parse-GS1-AI/read_gs1.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html b/scenarios/scan-and-search.html similarity index 100% rename from barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html rename to scenarios/scan-and-search.html diff --git a/foundational-api-samples/use-case/show-result-texts-on-the-video.html b/scenarios/show-result-texts-on-the-video.html similarity index 100% rename from foundational-api-samples/use-case/show-result-texts-on-the-video.html rename to scenarios/show-result-texts-on-the-video.html From 52b8c5a10b743ea9dbe81ff080059c972afe306d Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 29 Oct 2025 14:27:57 +0800 Subject: [PATCH 190/223] add use-case samples --- .../scan-using-foundational-api/README.md | 6 +- .../scan-using-foundational-api/package.json | 2 +- .../src/app/dynamsoft.config.ts | 2 +- .../angular/scan-using-rtu-api/package.json | 2 +- .../src/app/app.component.ts | 2 +- .../scan-using-foundational-api/README.md | 6 +- .../BlazorApp/wwwroot/index.html | 4 +- .../scan-using-rtu-api/wwwroot/index.html | 4 +- .../capacitor/scan-using-rtu-api/index.ts | 2 +- .../capacitor/scan-using-rtu-api/package.json | 2 +- .../scan-using-foundational-api/README.md | 6 +- .../scan-using-foundational-api/action.js | 2 +- .../scan-using-foundational-api/package.json | 2 +- .../electron/scan-using-rtu-api/index.html | 2 +- .../electron/scan-using-rtu-api/package.json | 2 +- .../es6/scan-using-foundational-api/es6.html | 4 +- frameworks/es6/scan-using-rtu-api/es6.html | 4 +- .../scan-using-foundational-api/package.json | 2 +- .../native-ts/scan-using-rtu-api/index.ts | 2 +- .../native-ts/scan-using-rtu-api/package.json | 2 +- .../scan-using-foundational-api/README.md | 6 +- .../dynamsoft.config.ts | 2 +- .../scan-using-foundational-api/package.json | 2 +- .../scan-using-foundational-api/README.md | 6 +- .../dynamsoft.config.ts | 2 +- .../scan-using-foundational-api/package.json | 2 +- .../pwa/scan-using-foundational-api/README.md | 8 +- .../helloworld-pwa.html | 4 +- .../service-worker.js | 2 +- .../scan-using-rtu-api/helloworld-pwa.html | 2 +- .../pwa/scan-using-rtu-api/service-worker.js | 2 +- .../scan-using-foundational-api/README.md | 6 +- .../scan-using-foundational-api/package.json | 2 +- .../src/dynamsoft.config.ts | 2 +- .../react/scan-using-rtu-api/package.json | 2 +- .../react/scan-using-rtu-api/src/App.tsx | 2 +- .../requirejs.html | 4 +- .../scan-using-rtu-api/requirejs.html | 4 +- .../scan-using-foundational-api/README.md | 6 +- .../scan-using-foundational-api/package.json | 2 +- .../src/dynamsoft.config.ts | 2 +- .../svelte/scan-using-rtu-api/package.json | 2 +- .../svelte/scan-using-rtu-api/src/App.svelte | 2 +- .../vue/scan-using-foundational-api/README.md | 6 +- .../scan-using-foundational-api/package.json | 2 +- .../src/dynamsoft.config.ts | 2 +- .../vue/scan-using-rtu-api/package.json | 2 +- frameworks/vue/scan-using-rtu-api/src/App.vue | 2 +- .../src/main/assets/decodeBarcodeInVideo.html | 4 +- .../dbrjswebview/html/decodeFileInVideo.html | 4 +- .../src/main/assets/decodeBarcodeInVideo.html | 2 +- .../dbrjswebview/html/decodeFileInVideo.html | 2 +- hello-world.html | 6 +- scenarios/batch-inventory/index.html | 2 +- scenarios/cart-builder.html | 2 +- scenarios/debug/public/index.html | 4 +- .../locate-an-item-with-barcode/index.html | 4 +- scenarios/pick-one-to-fill/index.html | 2 +- scenarios/read-a-drivers-license/index.html | 4 +- .../read_and_parse_dl.json | 197 ++++++++++++++++++ scenarios/read-and-parse-GS1-AI/index.html | 4 +- scenarios/read-and-parse-GS1-AI/read_gs1.json | 114 ---------- scenarios/scan-1D-Industrial/README.md | 0 .../ReadOneDIndustrial.json | 95 +++++++++ scenarios/scan-1D-Industrial/index.html | 101 +++++++++ scenarios/scan-1D-Retail/README.md | 0 scenarios/scan-1D-Retail/ReadOneDRetail.json | 98 +++++++++ scenarios/scan-1D-Retail/index.html | 101 +++++++++ scenarios/scan-and-search.html | 2 +- scenarios/scan-any-codes/README.md | 0 .../scan-any-codes/ReadAllBarcodeFormats.json | 112 ++++++++++ scenarios/scan-any-codes/index.html | 101 +++++++++ scenarios/scan-common-2D-codes/README.md | 0 .../scan-common-2D-codes/ReadCommon2D.json | 110 ++++++++++ scenarios/scan-common-2D-codes/index.html | 101 +++++++++ scenarios/scan-datamatrix-code/README.md | 0 .../scan-datamatrix-code/ReadDataMatrix.json | 101 +++++++++ scenarios/scan-datamatrix-code/index.html | 101 +++++++++ scenarios/scan-from-distance/README.md | 0 .../ReadDistantBarcodes.json | 138 ++++++++++++ scenarios/scan-from-distance/index.html | 101 +++++++++ scenarios/scan-qr-code/README.md | 0 scenarios/scan-qr-code/ReadQR.json | 90 ++++++++ scenarios/scan-qr-code/index.html | 101 +++++++++ scenarios/show-result-texts-on-the-video.html | 4 +- 85 files changed, 1746 insertions(+), 210 deletions(-) create mode 100644 scenarios/read-a-drivers-license/read_and_parse_dl.json delete mode 100644 scenarios/read-and-parse-GS1-AI/read_gs1.json create mode 100644 scenarios/scan-1D-Industrial/README.md create mode 100644 scenarios/scan-1D-Industrial/ReadOneDIndustrial.json create mode 100644 scenarios/scan-1D-Industrial/index.html create mode 100644 scenarios/scan-1D-Retail/README.md create mode 100644 scenarios/scan-1D-Retail/ReadOneDRetail.json create mode 100644 scenarios/scan-1D-Retail/index.html create mode 100644 scenarios/scan-any-codes/README.md create mode 100644 scenarios/scan-any-codes/ReadAllBarcodeFormats.json create mode 100644 scenarios/scan-any-codes/index.html create mode 100644 scenarios/scan-common-2D-codes/README.md create mode 100644 scenarios/scan-common-2D-codes/ReadCommon2D.json create mode 100644 scenarios/scan-common-2D-codes/index.html create mode 100644 scenarios/scan-datamatrix-code/README.md create mode 100644 scenarios/scan-datamatrix-code/ReadDataMatrix.json create mode 100644 scenarios/scan-datamatrix-code/index.html create mode 100644 scenarios/scan-from-distance/README.md create mode 100644 scenarios/scan-from-distance/ReadDistantBarcodes.json create mode 100644 scenarios/scan-from-distance/index.html create mode 100644 scenarios/scan-qr-code/README.md create mode 100644 scenarios/scan-qr-code/ReadQR.json create mode 100644 scenarios/scan-qr-code/index.html diff --git a/frameworks/angular/scan-using-foundational-api/README.md b/frameworks/angular/scan-using-foundational-api/README.md index 7f09da45..e664cff0 100644 --- a/frameworks/angular/scan-using-foundational-api/README.md +++ b/frameworks/angular/scan-using-foundational-api/README.md @@ -2,7 +2,7 @@ [Angular](https://angular.dev/) is one of the most popular and mature JavaScript frameworks. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into an Angular application. Note that in this sample, `TypeScript` is used. -In this guide, we will be using [`dynamsoft-barcode-reader-bundle 11.0.6000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/11.0.6000). +In this guide, we will be using [`dynamsoft-barcode-reader-bundle 11.2.2000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/11.2.2000). > Note: > @@ -61,7 +61,7 @@ Below is the configuration used for this sample. ```cmd cd my-app -npm install dynamsoft-barcode-reader-bundle@11.0.6000 -E +npm install dynamsoft-barcode-reader-bundle@11.2.2000 -E ``` ## Start to implement @@ -86,7 +86,7 @@ LicenseManager.initLicense('DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9', true); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.0.6000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. + * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.2000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. * LICENSE ALERT - THE END */ diff --git a/frameworks/angular/scan-using-foundational-api/package.json b/frameworks/angular/scan-using-foundational-api/package.json index aaa7e2ae..047fed17 100644 --- a/frameworks/angular/scan-using-foundational-api/package.json +++ b/frameworks/angular/scan-using-foundational-api/package.json @@ -18,7 +18,7 @@ "@angular/platform-browser": "^17.3.0", "@angular/platform-browser-dynamic": "^17.3.0", "@angular/router": "^17.3.0", - "dynamsoft-barcode-reader-bundle": "11.0.6000", + "dynamsoft-barcode-reader-bundle": "11.2.2000", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.14.3" diff --git a/frameworks/angular/scan-using-foundational-api/src/app/dynamsoft.config.ts b/frameworks/angular/scan-using-foundational-api/src/app/dynamsoft.config.ts index 164ae2d4..486d2984 100644 --- a/frameworks/angular/scan-using-foundational-api/src/app/dynamsoft.config.ts +++ b/frameworks/angular/scan-using-foundational-api/src/app/dynamsoft.config.ts @@ -15,7 +15,7 @@ LicenseManager.initLicense('DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9', { /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.0.6000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. + * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.2000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. * LICENSE ALERT - THE END */ diff --git a/frameworks/angular/scan-using-rtu-api/package.json b/frameworks/angular/scan-using-rtu-api/package.json index f3cf9924..a8a6e528 100644 --- a/frameworks/angular/scan-using-rtu-api/package.json +++ b/frameworks/angular/scan-using-rtu-api/package.json @@ -16,7 +16,7 @@ "@angular/platform-browser": "^19.2.0", "@angular/platform-browser-dynamic": "^19.2.0", "@angular/router": "^19.2.0", - "dynamsoft-barcode-reader-bundle": "11.0.6000", + "dynamsoft-barcode-reader-bundle": "11.2.2000", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" diff --git a/frameworks/angular/scan-using-rtu-api/src/app/app.component.ts b/frameworks/angular/scan-using-rtu-api/src/app/app.component.ts index 994f07ae..88a13926 100644 --- a/frameworks/angular/scan-using-rtu-api/src/app/app.component.ts +++ b/frameworks/angular/scan-using-rtu-api/src/app/app.component.ts @@ -23,7 +23,7 @@ export class AppComponent { container: this.barcodeScannerViewRef.nativeElement, // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. - uiPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.0.6000/dist/ui/barcode-scanner.ui.xml", + uiPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.2.2000/dist/ui/barcode-scanner.ui.xml", // showUploadImageButton: true, // scannerViewConfig: { diff --git a/frameworks/blazor/scan-using-foundational-api/README.md b/frameworks/blazor/scan-using-foundational-api/README.md index bcf4eb96..3053e2f5 100644 --- a/frameworks/blazor/scan-using-foundational-api/README.md +++ b/frameworks/blazor/scan-using-foundational-api/README.md @@ -2,7 +2,7 @@ [Blazor](https://dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blazor) is a framework for building interactive client-side web apps with .NET and C#. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a Blazor application using [JavaScript Interlop](https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/call-javascript-from-dotnet?view=aspnetcore-8.0#invoke-js-functions). -In this guide, we will be using [`dynamsoft-barcode-reader-bundle 11.0.6000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/11.0.6000). We also used .NET 8.0 (version 8.0.8) to develop this sample. To ensure the sample app runs properly, please refer to this guide to update your .NET installation - https://learn.microsoft.com/en-us/dotnet/core/install/upgrade. +In this guide, we will be using [`dynamsoft-barcode-reader-bundle 11.2.2000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/11.2.2000). We also used .NET 8.0 (version 8.0.8) to develop this sample. To ensure the sample app runs properly, please refer to this guide to update your .NET installation - https://learn.microsoft.com/en-us/dotnet/core/install/upgrade. > Note: > @@ -283,7 +283,7 @@ Inside the `wwwroot\index.html` file, we will initialize the license and necessa ... - + - + + diff --git a/frameworks/electron/scan-using-rtu-api/package.json b/frameworks/electron/scan-using-rtu-api/package.json index afc17b89..10a71b39 100644 --- a/frameworks/electron/scan-using-rtu-api/package.json +++ b/frameworks/electron/scan-using-rtu-api/package.json @@ -21,6 +21,6 @@ "electron": "^26.4.1" }, "dependencies": { - "dynamsoft-barcode-reader-bundle": "11.0.6000" + "dynamsoft-barcode-reader-bundle": "11.2.2000" } } diff --git a/frameworks/es6/scan-using-foundational-api/es6.html b/frameworks/es6/scan-using-foundational-api/es6.html index e6192cd4..5168e648 100644 --- a/frameworks/es6/scan-using-foundational-api/es6.html +++ b/frameworks/es6/scan-using-foundational-api/es6.html @@ -22,7 +22,7 @@

    Hello World for ES6 (Decode via Camera)

    CameraView, CameraEnhancer, MultiFrameResultCrossFilter, - } from "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.0.6000/dist/dbr.bundle.mjs"; + } from "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.2.2000/dist/dbr.bundle.mjs"; /** LICENSE ALERT - README * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. @@ -33,7 +33,7 @@

    Hello World for ES6 (Decode via Camera)

    /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.0.6000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. + * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.2000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. * LICENSE ALERT - THE END */ diff --git a/frameworks/es6/scan-using-rtu-api/es6.html b/frameworks/es6/scan-using-rtu-api/es6.html index 741ad42e..964fe893 100644 --- a/frameworks/es6/scan-using-rtu-api/es6.html +++ b/frameworks/es6/scan-using-rtu-api/es6.html @@ -17,7 +17,7 @@

    + + + diff --git a/frameworks/pwa/scan-using-rtu-api/service-worker.js b/frameworks/pwa/scan-using-rtu-api/service-worker.js index 3af6a731..53258c2b 100644 --- a/frameworks/pwa/scan-using-rtu-api/service-worker.js +++ b/frameworks/pwa/scan-using-rtu-api/service-worker.js @@ -1,5 +1,5 @@ const engineResourcePaths = { - dbrBundle: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.0.6000/dist/", + dbrBundle: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.2.2000/dist/", }; // Files to cache diff --git a/frameworks/react/scan-using-foundational-api/README.md b/frameworks/react/scan-using-foundational-api/README.md index 904168bb..35e37e1f 100644 --- a/frameworks/react/scan-using-foundational-api/README.md +++ b/frameworks/react/scan-using-foundational-api/README.md @@ -2,7 +2,7 @@ [React](https://reactjs.org/) is a JavaScript library meant explicitly for creating interactive UIs. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a React application. Note that in this sample we will use `TypeScript` and [Hooks](https://reactjs.org/docs/hooks-intro.html). Also, there is another sample `react` defining components as classes in React. -In this guide, we will be using [`dynamsoft-barcode-reader-bundle 11.0.6000](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/11.0.6000). +In this guide, we will be using [`dynamsoft-barcode-reader-bundle 11.2.2000](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/11.2.2000). > Note: > @@ -44,7 +44,7 @@ npx create-react-app my-app --template typescript ```cmd cd my-app -npm install dynamsoft-barcode-reader-bundle@11.0.6000 -E +npm install dynamsoft-barcode-reader-bundle@11.2.2000 -E ``` ## Start to implement @@ -71,7 +71,7 @@ LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", { /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.0.6000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. + * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.2000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. * LICENSE ALERT - THE END */ diff --git a/frameworks/react/scan-using-foundational-api/package.json b/frameworks/react/scan-using-foundational-api/package.json index 205aca57..88d41eab 100644 --- a/frameworks/react/scan-using-foundational-api/package.json +++ b/frameworks/react/scan-using-foundational-api/package.json @@ -11,7 +11,7 @@ "@types/node": "^16.18.99", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", - "dynamsoft-barcode-reader-bundle": "11.0.6000", + "dynamsoft-barcode-reader-bundle": "11.2.2000", "react": "^18.3.1", "react-dom": "^18.3.1", "react-scripts": "5.0.1", diff --git a/frameworks/react/scan-using-foundational-api/src/dynamsoft.config.ts b/frameworks/react/scan-using-foundational-api/src/dynamsoft.config.ts index 712bebaa..8e0e916b 100644 --- a/frameworks/react/scan-using-foundational-api/src/dynamsoft.config.ts +++ b/frameworks/react/scan-using-foundational-api/src/dynamsoft.config.ts @@ -15,7 +15,7 @@ LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", { /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.0.6000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. + * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.2000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. * LICENSE ALERT - THE END */ diff --git a/frameworks/react/scan-using-rtu-api/package.json b/frameworks/react/scan-using-rtu-api/package.json index aa2b87c1..f3e5bfad 100644 --- a/frameworks/react/scan-using-rtu-api/package.json +++ b/frameworks/react/scan-using-rtu-api/package.json @@ -9,7 +9,7 @@ "preview": "vite preview" }, "dependencies": { - "dynamsoft-barcode-reader-bundle": "11.0.6000", + "dynamsoft-barcode-reader-bundle": "11.2.2000", "react": "^19.1.1", "react-dom": "^19.1.1" }, diff --git a/frameworks/react/scan-using-rtu-api/src/App.tsx b/frameworks/react/scan-using-rtu-api/src/App.tsx index 4dd4fb84..5bb2ec8c 100644 --- a/frameworks/react/scan-using-rtu-api/src/App.tsx +++ b/frameworks/react/scan-using-rtu-api/src/App.tsx @@ -18,7 +18,7 @@ function App() { container: barcodeScannerViewRef.current!, // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. - uiPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.0.6000/dist/ui/barcode-scanner.ui.xml", + uiPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.2.2000/dist/ui/barcode-scanner.ui.xml", // showUploadImageButton: true, // scannerViewConfig: { diff --git a/frameworks/requirejs/scan-using-foundational-api/requirejs.html b/frameworks/requirejs/scan-using-foundational-api/requirejs.html index 07b05db1..aa5f9257 100644 --- a/frameworks/requirejs/scan-using-foundational-api/requirejs.html +++ b/frameworks/requirejs/scan-using-foundational-api/requirejs.html @@ -18,7 +18,7 @@

    Hello World for RequireJS (Decode via Camera)

    + + + diff --git a/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/html/decodeFileInVideo.html b/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/html/decodeFileInVideo.html index 019ad007..0e965cea 100644 --- a/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/html/decodeFileInVideo.html +++ b/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/html/decodeFileInVideo.html @@ -17,7 +17,7 @@

    - + diff --git a/hello-world.html b/hello-world.html index 019ad007..f276587d 100644 --- a/hello-world.html +++ b/hello-world.html @@ -17,7 +17,7 @@

    - + @@ -26,7 +26,6 @@

    let config = { license: "DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", // Replace with your Dynamsoft license key container: document.querySelector(".barcode-scanner-view"), // Specify where to render the scanner UI - // showUploadImageButton: true, // scannerViewConfig: { // showFlashButton: true, @@ -42,7 +41,10 @@

    // Display the first detected barcode's text in an alert if (result.barcodeResults.length) { alert(result.barcodeResults[0].text); + } else{ + alert("No barcode found"); } + }); diff --git a/scenarios/batch-inventory/index.html b/scenarios/batch-inventory/index.html index 94578a6e..6422384c 100644 --- a/scenarios/batch-inventory/index.html +++ b/scenarios/batch-inventory/index.html @@ -7,7 +7,7 @@ Batch Inventory with BarcodeScanner - + diff --git a/scenarios/cart-builder.html b/scenarios/cart-builder.html index 76406105..d4353b30 100644 --- a/scenarios/cart-builder.html +++ b/scenarios/cart-builder.html @@ -7,7 +7,7 @@ List-Builder - Scan to Cart Simulation - + diff --git a/scenarios/debug/public/index.html b/scenarios/debug/public/index.html index 3ba0f097..45d82f6b 100644 --- a/scenarios/debug/public/index.html +++ b/scenarios/debug/public/index.html @@ -22,7 +22,7 @@

    Read Barcodes from Camera - Debug


    - + + @@ -318,7 +318,7 @@
    /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.0.6000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. + * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.2000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. * LICENSE ALERT - THE END */ diff --git a/scenarios/pick-one-to-fill/index.html b/scenarios/pick-one-to-fill/index.html index 0c4fc783..5bbb54f7 100644 --- a/scenarios/pick-one-to-fill/index.html +++ b/scenarios/pick-one-to-fill/index.html @@ -7,7 +7,7 @@ Pick One To Fill with BarcodeScanner - + diff --git a/scenarios/read-a-drivers-license/index.html b/scenarios/read-a-drivers-license/index.html index 4829a416..2c6d615c 100644 --- a/scenarios/read-a-drivers-license/index.html +++ b/scenarios/read-a-drivers-license/index.html @@ -49,7 +49,7 @@

    Read a Driver's License

    - + @@ -63,7 +63,7 @@

    Read a Driver's License

    /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.0.6000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. + * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.2000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. * LICENSE ALERT - THE END */ diff --git a/scenarios/read-a-drivers-license/read_and_parse_dl.json b/scenarios/read-a-drivers-license/read_and_parse_dl.json new file mode 100644 index 00000000..a312bce9 --- /dev/null +++ b/scenarios/read-a-drivers-license/read_and_parse_dl.json @@ -0,0 +1,197 @@ +{ + "BarcodeReaderTaskSettingOptions": [ + { + "Name": "task_pdf417_barcode", + "MaxThreadsInOneTask":1, + "ExpectedBarcodesCount": 1, + "BarcodeFormatIds": [ + "BF_PDF417" + ], + "SectionArray": [ + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip_localize_barcode", + "StageArray": [ + { + "LocalizationModes": [ + { + "Mode": "LM_CONNECTED_BLOCKS" + }, + { + "Mode": "LM_SCAN_DIRECTLY" + } + ], + "Stage": "SST_LOCALIZE_CANDIDATE_BARCODES" + }, + { + "Stage": "SST_LOCALIZE_BARCODES" + } + ] + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip_decode_barcode", + "StageArray": [ + { + "DeblurModes": [ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_THRESHOLD_BINARIZATION" + }, + { + "Mode": "DM_DEEP_ANALYSIS", + "Methods": ["TwoDGeneral"] + } + ], + "Stage": "SST_DECODE_BARCODES" + } + ] + } + ] + } + ], + "CaptureVisionTemplates": [ + { + "Name": "ReadDriversLicense", + "ImageROIProcessingNameArray": [ + "roi_pdf417_barcode" + ], + "SemanticProcessingNameArray": [ + "sp_dl" + ] + } + ], + "ImageParameterOptions": [ + { + "Name": "ip_localize_barcode", + "ApplicableStages": [ + { + "Stage": "SST_INPUT_COLOR_IMAGE" + }, + { + "Stage": "SST_SCALE_IMAGE" + }, + { + "Stage": "SST_CONVERT_TO_GRAYSCALE" + }, + { + "Stage": "SST_TRANSFORM_GRAYSCALE" + }, + { + "Stage": "SST_ENHANCE_GRAYSCALE" + }, + { + "Stage": "SST_BINARIZE_IMAGE" + }, + { + "Stage": "SST_DETECT_TEXTURE" + }, + { + "Stage": "SST_REMOVE_TEXTURE_FROM_GRAYSCALE" + }, + { + "Stage": "SST_BINARIZE_TEXTURE_REMOVED_GRAYSCALE" + }, + { + "Stage": "SST_FIND_CONTOURS" + }, + { + "Stage": "SST_DETECT_SHORTLINES" + }, + { + "Stage": "SST_ASSEMBLE_LINES" + }, + { + "Stage": "SST_DETECT_TEXT_ZONES" + }, + { + "Stage": "SST_REMOVE_TEXT_ZONES_FROM_BINARY" + } + ] + }, + { + "Name": "ip_decode_barcode", + "ApplicableStages": [ + { + "Stage": "SST_INPUT_COLOR_IMAGE" + }, + { + "ImageScaleSetting": { + "EdgeLengthThreshold": 100000, + "ScaleType": "ST_SCALE_DOWN" + }, + "Stage": "SST_SCALE_IMAGE" + }, + { + "Stage": "SST_CONVERT_TO_GRAYSCALE" + }, + { + "Stage": "SST_TRANSFORM_GRAYSCALE" + }, + { + "Stage": "SST_ENHANCE_GRAYSCALE" + }, + { + "Stage": "SST_BINARIZE_IMAGE" + }, + { + "Stage": "SST_DETECT_TEXTURE" + }, + { + "Stage": "SST_REMOVE_TEXTURE_FROM_GRAYSCALE" + }, + { + "Stage": "SST_BINARIZE_TEXTURE_REMOVED_GRAYSCALE" + }, + { + "Stage": "SST_FIND_CONTOURS" + }, + { + "Stage": "SST_DETECT_SHORTLINES" + }, + { + "Stage": "SST_ASSEMBLE_LINES" + }, + { + "Stage": "SST_DETECT_TEXT_ZONES" + }, + { + "Stage": "SST_REMOVE_TEXT_ZONES_FROM_BINARY" + } + ] + } + ], + "TargetROIDefOptions": [ + { + "Name": "roi_pdf417_barcode", + "TaskSettingNameArray": [ + "task_pdf417_barcode" + ] + } + ], + "SemanticProcessingOptions": [ + { + "Name": "sp_dl", + "ReferenceObjectFilter": { + "ReferenceTargetROIDefNameArray": [ + "roi_pdf417_barcode" + ] + }, + "TaskSettingNameArray": [ + "dcp_dl" + ] + } + ], + "CodeParserTaskSettingOptions": [ + { + "Name": "dcp_dl", + "CodeSpecifications": [ + "AAMVA_DL_ID", + "AAMVA_DL_ID_WITH_MAG_STRIPE", + "SOUTH_AFRICA_DL" + ] + } + ] +} \ No newline at end of file diff --git a/scenarios/read-and-parse-GS1-AI/index.html b/scenarios/read-and-parse-GS1-AI/index.html index 3e49d35b..f1fc7015 100644 --- a/scenarios/read-and-parse-GS1-AI/index.html +++ b/scenarios/read-and-parse-GS1-AI/index.html @@ -50,7 +50,7 @@

    Read a GS1-AI

    - + + + + + + + + + + + \ No newline at end of file diff --git a/scenarios/scan-1D-Retail/README.md b/scenarios/scan-1D-Retail/README.md new file mode 100644 index 00000000..e69de29b diff --git a/scenarios/scan-1D-Retail/ReadOneDRetail.json b/scenarios/scan-1D-Retail/ReadOneDRetail.json new file mode 100644 index 00000000..2204c359 --- /dev/null +++ b/scenarios/scan-1D-Retail/ReadOneDRetail.json @@ -0,0 +1,98 @@ +{ + "GlobalParameter": + { + "IntraOpNumThreads": 2 + }, + "CaptureVisionTemplates": [ + { + "ImageROIProcessingNameArray": [ + "ROI_OneDRetail" + ], + "Name": "ReadOneDRetail", + "MaxParallelTasks": 0, + "Timeout": 500 + } + ], + "TargetROIDefOptions": [ + { + "Name": "ROI_OneDRetail", + "TaskSettingNameArray": [ + "Task_OneDRetail" + ] + } + ], + "BarcodeReaderTaskSettingOptions": [ + { + "Name": "Task_OneDRetail", + "BarcodeFormatIds": ["BF_EAN_13", "BF_EAN_8", "BF_UPC_A", "BF_UPC_E"], + "ExpectedBarcodesCount":0, + "MaxThreadsInOneTask": 1, + "SectionArray": [ + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip", + "StageArray": [ + { + "Stage": "SST_LOCALIZE_CANDIDATE_BARCODES", + "LocalizationModes": [ + { + "Mode": "LM_SCAN_DIRECTLY", + "ScanDirection": 2 + }, + { + "Mode": "LM_CONNECTED_BLOCKS" + }, + { + "Mode": "LM_NEURAL_NETWORK", + "ModelNameArray": ["OneDLocalization"] + } + ] + } + ] + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip", + "StageArray": [ + { + "Stage": "SST_DECODE_BARCODES", + "DeblurModes":[ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_THRESHOLD_BINARIZATION" + }, + { + "Mode": "DM_NEURAL_NETWORK", + "ModelNameArray": ["EAN13Decoder", "OneDDeblur"] + }, + { + "Mode": "DM_DEEP_ANALYSIS" + } + ] + } + ] + } + ] + } + ], + "ImageParameterOptions": [ + { + "ApplicableStages": [ + { + "Stage": "SST_SCALE_IMAGE" + }, + { + "GrayscaleTransformationModes": [ + { + "Mode": "GTM_ORIGINAL" + } + ], + "Stage": "SST_TRANSFORM_GRAYSCALE" + } + ], + "Name": "ip" + } + ] +} \ No newline at end of file diff --git a/scenarios/scan-1D-Retail/index.html b/scenarios/scan-1D-Retail/index.html new file mode 100644 index 00000000..e4badad7 --- /dev/null +++ b/scenarios/scan-1D-Retail/index.html @@ -0,0 +1,101 @@ + + + + + + + + Dynamsoft Barcode Scanner Sample - Scan oneD Retail codes + + + + +

    + Scan oneD Retail codes +

    + +
    + + + + + + + + + + + + + \ No newline at end of file diff --git a/scenarios/scan-and-search.html b/scenarios/scan-and-search.html index 5d7a3b1d..1fcf4aff 100644 --- a/scenarios/scan-and-search.html +++ b/scenarios/scan-and-search.html @@ -7,7 +7,7 @@ Scan & Search with BarcodeScanner - + diff --git a/scenarios/scan-any-codes/README.md b/scenarios/scan-any-codes/README.md new file mode 100644 index 00000000..e69de29b diff --git a/scenarios/scan-any-codes/ReadAllBarcodeFormats.json b/scenarios/scan-any-codes/ReadAllBarcodeFormats.json new file mode 100644 index 00000000..a5fb2c4a --- /dev/null +++ b/scenarios/scan-any-codes/ReadAllBarcodeFormats.json @@ -0,0 +1,112 @@ +{ + "GlobalParameter": + { + "IntraOpNumThreads": 2 + }, + "CaptureVisionTemplates": [ + { + "Name": "ReadCommon1DAnd2D", + "ImageROIProcessingNameArray": [ + "roi-read-barcodes" + ], + "Timeout": 500, + "MaxParallelTasks": 0 + } + ], + "TargetROIDefOptions": [ + { + "Name": "roi-read-barcodes", + "TaskSettingNameArray": [ + "task-read-barcodes" + ] + } + ], + "BarcodeReaderTaskSettingOptions": [ + { + "Name": "task-read-barcodes", + "BarcodeFormatIds": ["BF_ALL"], + "ExpectedBarcodesCount": 0, + "MaxThreadsInOneTask": 1, + "SectionArray": [ + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip-read-barcodes", + "StageArray": [ + { + "Stage": "SST_LOCALIZE_CANDIDATE_BARCODES", + "LocalizationModes": [ + { + "Mode": "LM_CONNECTED_BLOCKS" + }, + { + "Mode": "LM_SCAN_DIRECTLY" + } + ] + }, + { + "Stage": "SST_LOCALIZE_BARCODES" + } + ] + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip-read-barcodes", + "StageArray": [ + { + "Stage": "SST_DECODE_BARCODES", + "DeblurModes": [ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_THRESHOLD_BINARIZATION" + }, + { + "Mode": "DM_NEURAL_NETWORK", + "ModelNameArray": [ + "Code128Decoder", + "EAN13Decoder" + ] + }, + { + "Mode": "DM_DEEP_ANALYSIS", + "Methods": ["OneDGeneral","TwoDGeneral"] + } + ] + } + ] + } + ] + } + ], + "ImageParameterOptions": [ + { + "Name": "ip-read-barcodes", + "ApplicableStages": [ + { + "Stage": "SST_DETECT_TEXT_ZONES", + "TextDetectionMode": { + "Mode": "TTDM_LINE", + "Direction": "UNKNOWN", + "Sensitivity": 3 + } + }, + { + "Stage": "SST_REMOVE_TEXT_ZONES_FROM_BINARY", + "IfEraseTextZone": 1 + }, + { + "Stage": "SST_BINARIZE_IMAGE" + }, + { + "Stage": "SST_TRANSFORM_GRAYSCALE", + "GrayscaleTransformationModes": [ + { + "Mode": "GTM_ORIGINAL" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/scenarios/scan-any-codes/index.html b/scenarios/scan-any-codes/index.html new file mode 100644 index 00000000..70c7ec39 --- /dev/null +++ b/scenarios/scan-any-codes/index.html @@ -0,0 +1,101 @@ + + + + + + + + Dynamsoft Barcode Scanner Sample - Scan Any codes + + + + +

    + Scan Any codes +

    + +
    + + + + + + + + + + + + + \ No newline at end of file diff --git a/scenarios/scan-common-2D-codes/README.md b/scenarios/scan-common-2D-codes/README.md new file mode 100644 index 00000000..e69de29b diff --git a/scenarios/scan-common-2D-codes/ReadCommon2D.json b/scenarios/scan-common-2D-codes/ReadCommon2D.json new file mode 100644 index 00000000..69399de7 --- /dev/null +++ b/scenarios/scan-common-2D-codes/ReadCommon2D.json @@ -0,0 +1,110 @@ +{ + "GlobalParameter": + { + "IntraOpNumThreads": 2 + }, + "CaptureVisionTemplates": [ + { + "ImageROIProcessingNameArray": [ + "ROI_Common2D" + ], + "Name": "ReadCommon2D", + "MaxParallelTasks": 0, + "Timeout": 500 + } + ], + "TargetROIDefOptions": [ + { + "Name": "ROI_Common2D", + "TaskSettingNameArray": [ + "Task_Common2D" + ] + } + ], + "BarcodeReaderTaskSettingOptions": [ + { + "Name": "Task_Common2D", + "BarcodeFormatIds": ["BF_QR_CODE", "BF_DATAMATRIX", "BF_PDF417"], + "ExpectedBarcodesCount":1, + "MaxThreadsInOneTask": 1, + "SectionArray": [ + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip", + "StageArray": [ + { + "Stage": "SST_LOCALIZE_CANDIDATE_BARCODES", + "LocalizationModes": [ + { + "Mode": "LM_CONNECTED_BLOCKS" + }, + { + "Mode": "LM_LINES" + }, + { + "Mode": "LM_NEURAL_NETWORK", + "ModelNameArray": ["DataMatrixQRCodeLocalization"] + } + ] + } + ] + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip", + "StageArray": [ + { + "Stage": "SST_DECODE_BARCODES", + "DeblurModes": [ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_THRESHOLD_BINARIZATION" + }, + { + "Mode": "DM_DEEP_ANALYSIS", + "Methods": ["TwoDGeneral"] + } + ] + }, + { + "Stage": "SST_COMPLEMENT_BARCODE", + "BarcodeComplementModes": [ + { + "Mode": "BCM_GENERAL" + } + ] + }, + { + "Stage": "SST_RESIST_DEFORMATION", + "DeformationResistingModes": [ + { + "Mode" : "DRM_AUTO" + } + ] + } + ] + } + ] + } + ], + "ImageParameterOptions": [ + { + "ApplicableStages": [ + { + "Stage": "SST_SCALE_IMAGE" + }, + { + "GrayscaleTransformationModes": [ + { + "Mode": "GTM_ORIGINAL" + } + ], + "Stage": "SST_TRANSFORM_GRAYSCALE" + } + ], + "Name": "ip" + } + ] +} \ No newline at end of file diff --git a/scenarios/scan-common-2D-codes/index.html b/scenarios/scan-common-2D-codes/index.html new file mode 100644 index 00000000..52ecceba --- /dev/null +++ b/scenarios/scan-common-2D-codes/index.html @@ -0,0 +1,101 @@ + + + + + + + + Dynamsoft Barcode Scanner Sample - Scan Common 2D codes + + + + +

    + Scan Common 2D codes +

    + +
    + + + + + + + + + + + + + \ No newline at end of file diff --git a/scenarios/scan-datamatrix-code/README.md b/scenarios/scan-datamatrix-code/README.md new file mode 100644 index 00000000..e69de29b diff --git a/scenarios/scan-datamatrix-code/ReadDataMatrix.json b/scenarios/scan-datamatrix-code/ReadDataMatrix.json new file mode 100644 index 00000000..9d1b27de --- /dev/null +++ b/scenarios/scan-datamatrix-code/ReadDataMatrix.json @@ -0,0 +1,101 @@ +{ + "GlobalParameter": + { + "IntraOpNumThreads": 2 + }, + "CaptureVisionTemplates": [ + { + "ImageROIProcessingNameArray": [ + "ROI_DataMatrix" + ], + "Name": "ReadDataMatrix", + "MaxParallelTasks": 0, + "Timeout": 500 + } + ], + "TargetROIDefOptions": [ + { + "Name": "ROI_DataMatrix", + "TaskSettingNameArray": [ + "Task_DataMatrix" + ] + } + ], + "BarcodeReaderTaskSettingOptions": [ + { + "Name": "Task_DataMatrix", + "BarcodeFormatIds": ["BF_DATAMATRIX"], + "ExpectedBarcodesCount": 0, + "MaxThreadsInOneTask": 1, + "SectionArray": [ + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip", + "StageArray": [ + { + "Stage": "SST_LOCALIZE_CANDIDATE_BARCODES", + "LocalizationModes": [ + { + "Mode": "LM_CONNECTED_BLOCKS" + }, + { + "Mode": "LM_LINES" + }, + { + "Mode": "LM_NEURAL_NETWORK", + "ModelNameArray": ["DataMatrixQRCodeLocalization"] + } + ] + } + ] + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip", + "StageArray": [ + { + "Stage": "SST_DECODE_BARCODES", + "DeblurModes":[ + { + "Mode": "DM_DIRECT_BINARIZATION" + }, + { + "Mode": "DM_DEEP_ANALYSIS" + } + ] + }, + { + "Stage": "SST_RESIST_DEFORMATION", + "DeformationResistingModes": [ + { + "Mode" : "DRM_AUTO" + } + ] + } + ] + } + ] + } + ], + "ImageParameterOptions": [ + { + "ApplicableStages": [ + { + "Stage": "SST_SCALE_IMAGE" + }, + { + "GrayscaleTransformationModes": [ + { + "Mode": "GTM_ORIGINAL" + }, + { + "Mode": "GTM_INVERTED" + } + ], + "Stage": "SST_TRANSFORM_GRAYSCALE" + } + ], + "Name": "ip" + } + ] +} \ No newline at end of file diff --git a/scenarios/scan-datamatrix-code/index.html b/scenarios/scan-datamatrix-code/index.html new file mode 100644 index 00000000..8c934126 --- /dev/null +++ b/scenarios/scan-datamatrix-code/index.html @@ -0,0 +1,101 @@ + + + + + + + + Dynamsoft Barcode Scanner Sample - Scan DataMatrix codes + + + + +

    + Scan DataMatrix codes +

    + +
    + + + + + + + + + + + + + \ No newline at end of file diff --git a/scenarios/scan-from-distance/README.md b/scenarios/scan-from-distance/README.md new file mode 100644 index 00000000..e69de29b diff --git a/scenarios/scan-from-distance/ReadDistantBarcodes.json b/scenarios/scan-from-distance/ReadDistantBarcodes.json new file mode 100644 index 00000000..356c3a4f --- /dev/null +++ b/scenarios/scan-from-distance/ReadDistantBarcodes.json @@ -0,0 +1,138 @@ +{ + "GlobalParameter": + { + "IntraOpNumThreads": 2 + }, + "BarcodeReaderTaskSettingOptions": [ + { + "ExpectedBarcodesCount": 0, + "Name": "task_read_distant_barcodes", + "SectionArray": [ + { + "ImageParameterName": "ip_read_distant_barcodes", + "Section": "ST_BARCODE_LOCALIZATION", + "StageArray": [ + { + "LocalizationModes": [ + { + "Mode": "LM_CONNECTED_BLOCKS" + } + ], + "Stage": "SST_LOCALIZE_CANDIDATE_BARCODES" + }, + { + "Stage": "SST_LOCALIZE_BARCODES" + } + ] + }, + { + "ImageParameterName": "ip_read_distant_barcodes", + "Section": "ST_BARCODE_DECODING", + "StageArray": [ + { + "Stage": "SST_RESIST_DEFORMATION" + }, + { + "Stage": "SST_COMPLEMENT_BARCODE" + }, + { + "BarcodeScaleModes": [ + { + "Mode": "BSM_LINEAR_INTERPOLATION", + "ModuleSizeThreshold": 4, + "TargetModuleSize": 6 + } + ], + "Stage": "SST_SCALE_BARCODE_IMAGE" + }, + { + "Stage": "SST_DECODE_BARCODES" + } + ] + } + ], + "TextResultOrderModes": [ + { + "Mode": "TROM_POSITION" + }, + { + "Mode": "TROM_FORMAT" + }, + { + "Mode": "TROM_CONFIDENCE" + } + ] + } + ], + "CaptureVisionTemplates": [ + { + "ImageROIProcessingNameArray": [ + "roi_read_distant_barcodes" + ], + "MaxParallelTasks": 0, + "Name": "ReadDistantBarcodes", + "Timeout": 5000 + } + ], + "ImageParameterOptions": [ + { + "ApplicableStages": [ + { + "Stage": "SST_INPUT_COLOR_IMAGE" + }, + { + "ImageScaleSetting": { + "EdgeLengthThreshold": 10000, + "ScaleType": "ST_SCALE_DOWN" + }, + "Stage": "SST_SCALE_IMAGE" + }, + { + "Stage": "SST_CONVERT_TO_GRAYSCALE" + }, + { + "Stage": "SST_TRANSFORM_GRAYSCALE" + }, + { + "Stage": "SST_ENHANCE_GRAYSCALE" + }, + { + "Stage": "SST_BINARIZE_IMAGE" + }, + { + "Stage": "SST_DETECT_TEXTURE" + }, + { + "Stage": "SST_REMOVE_TEXTURE_FROM_GRAYSCALE" + }, + { + "Stage": "SST_BINARIZE_TEXTURE_REMOVED_GRAYSCALE" + }, + { + "Stage": "SST_FIND_CONTOURS" + }, + { + "Stage": "SST_DETECT_SHORTLINES" + }, + { + "Stage": "SST_ASSEMBLE_LINES" + }, + { + "Stage": "SST_DETECT_TEXT_ZONES" + }, + { + "Stage": "SST_REMOVE_TEXT_ZONES_FROM_BINARY" + } + ], + "Name": "ip_read_distant_barcodes" + } + ], + "TargetROIDefOptions": [ + { + "Name": "roi_read_distant_barcodes", + "TaskSettingNameArray": [ + "task_read_distant_barcodes" + ] + } + ] +} \ No newline at end of file diff --git a/scenarios/scan-from-distance/index.html b/scenarios/scan-from-distance/index.html new file mode 100644 index 00000000..c745de41 --- /dev/null +++ b/scenarios/scan-from-distance/index.html @@ -0,0 +1,101 @@ + + + + + + + + Dynamsoft Barcode Scanner Sample - Scan From Distance + + + + +

    + Scan From Distance +

    + +
    + + + + + + + + + + + + + \ No newline at end of file diff --git a/scenarios/scan-qr-code/README.md b/scenarios/scan-qr-code/README.md new file mode 100644 index 00000000..e69de29b diff --git a/scenarios/scan-qr-code/ReadQR.json b/scenarios/scan-qr-code/ReadQR.json new file mode 100644 index 00000000..16432df9 --- /dev/null +++ b/scenarios/scan-qr-code/ReadQR.json @@ -0,0 +1,90 @@ +{ + "GlobalParameter": + { + "IntraOpNumThreads": 2 + }, + "CaptureVisionTemplates": [ + { + "ImageROIProcessingNameArray": [ + "ROI_QR" + ], + "Name": "ReadQR", + "MaxParallelTasks": 0, + "Timeout": 500 + } + ], + "TargetROIDefOptions": [ + { + "Name": "ROI_QR", + "TaskSettingNameArray": [ + "Task_QR" + ] + } + ], + "BarcodeReaderTaskSettingOptions": [ + { + "Name": "Task_QR", + "BarcodeFormatIds": ["BF_QR_CODE"], + "ExpectedBarcodesCount":0, + "MaxThreadsInOneTask": 1, + "SectionArray": [ + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip", + "StageArray": [ + { + "Stage": "SST_LOCALIZE_CANDIDATE_BARCODES", + "LocalizationModes": [ + { + "Mode": "LM_CONNECTED_BLOCKS" + }, + { + "Mode": "LM_NEURAL_NETWORK", + "ModelNameArray": ["DataMatrixQRCodeLocalization"] + } + ] + } + ] + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip", + "StageArray": [ + { + "Stage": "SST_DECODE_BARCODES", + "DeblurModes":[ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_DIRECT_BINARIZATION" + }, + { + "Mode": "DM_DEEP_ANALYSIS" + } + ] + } + ] + } + ] + } + ], + "ImageParameterOptions": [ + { + "ApplicableStages": [ + { + "Stage": "SST_SCALE_IMAGE" + }, + { + "GrayscaleTransformationModes": [ + { + "Mode": "GTM_ORIGINAL" + } + ], + "Stage": "SST_TRANSFORM_GRAYSCALE" + } + ], + "Name": "ip" + } + ] +} \ No newline at end of file diff --git a/scenarios/scan-qr-code/index.html b/scenarios/scan-qr-code/index.html new file mode 100644 index 00000000..a7dbfc8d --- /dev/null +++ b/scenarios/scan-qr-code/index.html @@ -0,0 +1,101 @@ + + + + + + + + Dynamsoft Barcode Scanner Sample - Scan QR codes + + + + +

    + Scan QR codes +

    + +
    + + + + + + + + + + + + + \ No newline at end of file diff --git a/scenarios/show-result-texts-on-the-video.html b/scenarios/show-result-texts-on-the-video.html index 0c6d82e0..dbee3cbb 100644 --- a/scenarios/show-result-texts-on-the-video.html +++ b/scenarios/show-result-texts-on-the-video.html @@ -45,7 +45,7 @@

    Display Barcode Results as Video Overlays

    Scan barcodes to display results as overlays on video

    - + From 2adb13960339cd12f77f563687549d40152962f0 Mon Sep 17 00:00:00 2001 From: Keillion Date: Fri, 31 Oct 2025 14:04:59 +0800 Subject: [PATCH 195/223] gs1ai rtu sample --- .../scan-using-rtu-api/convert-GS1AI-title.js | 386 ++++++++++++++++++ .../scan-using-rtu-api/index.html | 256 ++++++++++++ .../scan-using-rtu-api/info.svg | 11 + ...logo-dynamsoft-blackBg-190x47-DZ66W3xz.png | Bin 0 -> 5449 bytes .../scan-using-rtu-api/rtu_gs1.json | 163 ++++++++ .../scan-using-rtu-api/style.css | 200 +++++++++ 6 files changed, 1016 insertions(+) create mode 100644 scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/convert-GS1AI-title.js create mode 100644 scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/index.html create mode 100644 scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/info.svg create mode 100644 scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/logo-dynamsoft-blackBg-190x47-DZ66W3xz.png create mode 100644 scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/rtu_gs1.json create mode 100644 scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/style.css diff --git a/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/convert-GS1AI-title.js b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/convert-GS1AI-title.js new file mode 100644 index 00000000..83a7e976 --- /dev/null +++ b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/convert-GS1AI-title.js @@ -0,0 +1,386 @@ +const funcConvertGs1AIToTitle = (gs1AI) => { + switch(gs1AI){ + case "00": + return "SSCC"; + case "01": + return "GTIN"; + case "02": + return "CONTENT"; + case "10": + return "BATCH/LOT"; + case "11": + return "PROD DATE"; + case "12": + return "DUE DATE"; + case "13": + return "PACK DATE"; + case "15": + return "BEST BY"; + case "16": + return "SELL BY"; + case "17": + return "EXPIRY"; + case "20": + return "VARIANT"; + case "21": + return "SERIAL"; + case "22": + return "CPV"; + case "235": + return "TPX"; + case "240": + return "ADDITIONAL ID"; + case "241": + return "CUST. PART No."; + case "242": + return "MTO VARIANT"; + case "243": + return "PCN"; + case "250": + return "SECONDARY SERIAL"; + case "251": + return "REF. TO SOURCE"; + case "253": + return "GDTI"; + case "254": + return "GLN EXTENSION COMPONENT"; + case "255": + return "GCN"; + case "30": + return "VAR. COUNT"; + case "310n": + return "NET WEIGHT (kg)"; + case "311n": + return "LENGTH (m)"; + case "312n": + return "WIDTH (m)"; + case "313n": + return "HEIGHT (m)"; + case "314n": + return "AREA (m2)"; + case "315n": + return "NET VOLUME (l)"; + case "316n": + return "NET VOLUME (m3)"; + case "320n": + return "NET WEIGHT (lb)"; + case "321n": + return "LENGTH (in)"; + case "322n": + return "LENGTH (ft)"; + case "323n": + return "LENGTH (yd)"; + case "324n": + return "WIDTH (in)"; + case "325n": + return "WIDTH (ft)"; + case "326n": + return "WIDTH (yd)"; + case "327n": + return "HEIGHT (in)"; + case "328n": + return "HEIGHT (ft)"; + case "329n": + return "HEIGHT (yd)"; + case "330n": + return "GROSS WEIGHT (kg)"; + case "331n": + return "LENGTH (m), log"; + case "332n": + return "WIDTH (m), log"; + case "333n": + return "HEIGHT (m), log"; + case "334n": + return "AREA (m2), log"; + case "335n": + return "VOLUME (l), log"; + case "336n": + return "VOLUME (m3), log"; + case "337n": + return "KG PER m²"; + case "340n": + return "GROSS WEIGHT (lb)"; + case "341n": + return "LENGTH (in), log"; + case "342n": + return "LENGTH (ft), log"; + case "343n": + return "LENGTH (yd), log"; + case "344n": + return "WIDTH (in), log"; + case "345n": + return "WIDTH (ft), log"; + case "346n": + return "WIDTH (yd), log"; + case "347n": + return "HEIGHT (in), log"; + case "348n": + return "HEIGHT (ft), log"; + case "349n": + return "HEIGHT (yd), log"; + case "350n": + return "AREA (in2)"; + case "351n": + return "AREA (ft2)"; + case "352n": + return "AREA (yd2)"; + case "353n": + return "AREA (in2), log"; + case "354n": + return "AREA (ft2), log"; + case "355n": + return "AREA (yd2), log"; + case "356n": + return "NET WEIGHT (t)"; + case "357n": + return "NET VOLUME (oz)"; + case "360n": + return "NET VOLUME (q)"; + case "361n": + return "NET VOLUME (g)"; + case "362n": + return "VOLUME (q), log"; + case "363n": + return "VOLUME (g), log"; + case "364n": + return "VOLUME (in3)"; + case "365n": + return "VOLUME (ft3)"; + case "366n": + return "VOLUME (yd3)"; + case "367n": + return "VOLUME (in3), log"; + case "368n": + return "VOLUME (ft3), log"; + case "369n": + return "VOLUME (yd3), log"; + case "37": + return "COUNT"; + case "390n": + return "AMOUNT"; + case "391n": + return "AMOUNT"; + case "392n": + return "PRICE"; + case "393n": + return "PRICE"; + case "394n": + return "PRCNT OFF"; + case "395n": + return "PRICE/UoM"; + case "400": + return "ORDER NUMBER"; + case "401": + return "GINC"; + case "402": + return "GSIN"; + case "403": + return "ROUTE"; + case "410": + return "SHIP TO LOC"; + case "411": + return "BILL TO"; + case "412": + return "PURCHASE FROM"; + case "413": + return "SHIP FOR LOC"; + case "414": + return "LOC No."; + case "415": + return "PAY TO"; + case "416": + return "PROD/SERV LOC"; + case "417": + return "PARTY"; + case "420": + return "SHIP TO POST"; + case "421": + return "SHIP TO POST"; + case "422": + return "ORIGIN"; + case "423": + return "COUNTRY - INITIAL PROCESS"; + case "424": + return "COUNTRY - PROCESS"; + case "425": + return "COUNTRY - DISASSEMBLY"; + case "426": + return "COUNTRY - FULL PROCESS"; + case "427": + return "ORIGIN SUBDIVISION"; + case "4300": + return "SHIP TO COMP"; + case "4301": + return "SHIP TO NAME"; + case "4302": + return "SHIP TO ADD1"; + case "4303": + return "SHIP TO ADD2"; + case "4304": + return "SHIP TO SUB"; + case "4305": + return "SHIP TO LOC"; + case "4306": + return "SHIP TO REG"; + case "4307": + return "SHIP TO COUNTRY"; + case "4308": + return "SHIP TO PHONE"; + case "4309": + return "SHIP TO GEO"; + case "4310": + return "RTN TO COMP"; + case "4311": + return "RTN TO NAME"; + case "4312": + return "RTN TO ADD1"; + case "4313": + return "RTN TO ADD2"; + case "4314": + return "RTN TO SUB"; + case "4315": + return "RTN TO LOC"; + case "4316": + return "RTN TO REG"; + case "4317": + return "RTN TO COUNTRY"; + case "4318": + return "RTN TO POST"; + case "4319": + return "RTN TO PHONE"; + case "4320": + return "SRV DESCRIPTION"; + case "4321": + return "DANGEROUS GOODS"; + case "4322": + return "AUTH LEAVE"; + case "4323": + return "SIG REQUIRED"; + case "4324": + return "NBEF DEL DT"; + case "4325": + return "NAFT DEL DT"; + case "4326": + return "REL DATE"; + case "4330": + return "MAX TEMP F"; + case "4331": + return "MAX TEMP C"; + case "4332": + return "MIN TEMP F"; + case "4333": + return "MIN TEMP C"; + case "7001": + return "NSN"; + case "7002": + return "MEAT CUT"; + case "7003": + return "EXPIRY TIME"; + case "7004": + return "ACTIVE POTENCY"; + case "7005": + return "CATCH AREA"; + case "7006": + return "FIRST FREEZE DATE"; + case "7007": + return "HARVEST DATE"; + case "7008": + return "AQUATIC SPECIES"; + case "7009": + return "FISHING GEAR TYPE"; + case "7010": + return "PROD METHOD"; + case "7011": + return "TEST BY DATE"; + case "7020": + return "REFURB LOT"; + case "7021": + return "FUNC STAT"; + case "7022": + return "REV STAT"; + case "7023": + return "GIAI - ASSEMBLY"; + // Note: '703s' typically implies a range (e.g., 7030-7039) or a structure, + // using '703' as a placeholder for the fixed-length AI. + case "703s": + return "PROCESSOR"; + case "7040": + return "UIC+EXT"; + case "710": + return "NHRN PZN"; + case "711": + return "NHRN CIP"; + case "712": + return "NHRN CN"; + case "713": + return "NHRN DRN"; + case "714": + return "NHRN AIM"; + case "715": + return "NHRN NDC"; + // Note: '723s' implies a range (e.g., 7230-7239) or a structure, + // using '723' as a placeholder for the fixed-length AI. + case "723s": + return "CERT"; + case "7240": + return "PROTOCOL"; + case "7241": + return "AIDC MEDIA TYPE"; + case "7242": + return "VCN"; + case "8001": + return "DIMENSIONS"; + case "8002": + return "CMT No."; + case "8003": + return "GRAI"; + case "8004": + return "GIAI"; + case "8005": + return "PRICE PER UNIT"; + case "8006": + return "ITIP"; + case "8007": + return "IBAN"; + case "8008": + return "PROD TIME"; + case "8009": + return "OPTSEN"; + case "8010": + return "CPID"; + case "8011": + return "CPID SERIAL"; + case "8012": + return "VERSION"; + case "8013": + return "GMN"; + case "8017": + return "GSRN - PROVIDER"; + case "8018": + return "GSRN - RECIPIENT"; + case "8019": + return "SRIN"; + case "8020": + return "REF No."; + case "8026": + return "ITIP CONTENT"; + case "8030": + return "DIGSIG"; + // case "8110": + // return "-"; + case "8111": + return "POINTS"; + // case "8112": + // return "-"; + case "8200": + return "PRODUCT URL"; + } + let intAI = parseInt(gs1AI); + if(intAI >= 716 && intAI < 723){ + return "NHRN"; + } + if(intAI >= 90 && intAI <= 99){ + return "INTERNAL"; + } + return title; +}; \ No newline at end of file diff --git a/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/index.html b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/index.html new file mode 100644 index 00000000..e116dae6 --- /dev/null +++ b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/index.html @@ -0,0 +1,256 @@ + + + + + + Read a GS1 Application Identifier (AI) + + + +
    +
    Read a GS1 Application Identifier (AI)
    +
    +
    +
    + +
    + + +
    + + + + + diff --git a/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/info.svg b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/info.svg new file mode 100644 index 00000000..f0dab9d4 --- /dev/null +++ b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/info.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/logo-dynamsoft-blackBg-190x47-DZ66W3xz.png b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/logo-dynamsoft-blackBg-190x47-DZ66W3xz.png new file mode 100644 index 0000000000000000000000000000000000000000..7967e8edbde77fcdf84333b58ac1046f821c9e0b GIT binary patch literal 5449 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 LnIX#&&Jq6u=Qz1) literal 0 HcmV?d00001 diff --git a/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/rtu_gs1.json b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/rtu_gs1.json new file mode 100644 index 00000000..67497355 --- /dev/null +++ b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/rtu_gs1.json @@ -0,0 +1,163 @@ +{ + "BarcodeReaderTaskSettingOptions": [ + { + "Name": "task_gs1_ai_barcode", + "ExpectedBarcodesCount": 1, + "BarcodeFormatIds": [ + "BF_GS1_DATABAR", + "BF_CODE_128", + "BF_GS1_COMPOSITE", + "BF_DATAMATRIX", + "BF_QR_CODE" + ], + "BarcodeFormatSpecificationNameArray": [ + "bfs_gs1_ai" + ], + "SectionArray": [ + { + "Section": "ST_REGION_PREDETECTION", + "ImageParameterName": "ip_localize_barcode", + "StageArray": [ + { + "Stage": "SST_PREDETECT_REGIONS" + } + ] + }, + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip_localize_barcode", + "StageArray": [ + { + "LocalizationModes": [ + { + "Mode": "LM_SCAN_DIRECTLY", + "ScanDirection": 2 + }, + { + "Mode": "LM_CONNECTED_BLOCKS", + "ModelNameArray": [] + }, + { + "Mode": "LM_CONNECTED_BLOCKS", + "ModelNameArray": [ + "OneDLocalization" + ] + } + ], + "Stage": "SST_LOCALIZE_CANDIDATE_BARCODES" + }, + { + "Stage": "SST_LOCALIZE_BARCODES" + } + ] + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip_localize_barcode", + "StageArray": [ + { + "Stage": "SST_RESIST_DEFORMATION" + }, + { + "Stage": "SST_COMPLEMENT_BARCODE" + }, + { + "Stage": "SST_SCALE_BARCODE_IMAGE" + }, + { + "DeblurModes": [ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_THRESHOLD_BINARIZATION" + }, + { + "Mode": "DM_DIRECT_BINARIZATION" + }, + { + "Mode": "DM_NEURAL_NETWORK", + "ModelNameArray": [ + "Code128Decoder" + ] + }, + { + "Mode": "DM_DEEP_ANALYSIS" + } + ], + "Stage": "SST_DECODE_BARCODES" + } + ] + } + ] + } + ], + "BarcodeFormatSpecificationOptions": [ + { + "Name": "bfs_gs1_ai", + "BarcodeFormatIds": [ + "BF_GS1_DATABAR", + "BF_CODE_128", + "BF_GS1_COMPOSITE", + "BF_DATAMATRIX", + "BF_QR_CODE" + ], + "IncludeTrailingCheckDigit": 0, + "IncludeImpliedAI01": 1 + } + ], + "CaptureVisionTemplates": [ + { + "Name": "ReadBarcodes_SpeedFirst", + "ImageROIProcessingNameArray": [ + "roi_gs1_ai_barcode" + ] + }, + { + "Name": "ReadBarcodes_ReadRateFirst", + "ImageROIProcessingNameArray": [ + "roi_gs1_ai_barcode" + ] + } + ], + "ImageParameterOptions": [ + { + "Name": "ip_localize_barcode", + "ApplicableStages": [ + { + "Stage": "SST_BINARIZE_IMAGE", + "BinarizationModes": [ + { + "Mode": "BM_LOCAL_BLOCK" + } + ] + }, + { + "Stage": "SST_BINARIZE_TEXTURE_REMOVED_GRAYSCALE" + }, + { + "Stage": "SST_TRANSFORM_GRAYSCALE", + "GrayscaleTransformationModes": [ + { + "Mode": "GTM_ORIGINAL" + }, + { + "Mode": "GTM_INVERTED" + } + ] + } + ] + } + ], + "TargetROIDefOptions": [ + { + "Name": "roi_gs1_ai_barcode", + "TaskSettingNameArray": [ + "task_gs1_ai_barcode" + ] + } + ], + "GlobalParameter": { + "IntraOpNumThreads": 1 + } +} diff --git a/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/style.css b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/style.css new file mode 100644 index 00000000..0cd02c7c --- /dev/null +++ b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/style.css @@ -0,0 +1,200 @@ + +* { + box-sizing: border-box; +} +html, +body { + margin: 0; + padding: 0; + height: 100%; + font-family: Arial, Helvetica, sans-serif; + font-size: 20px; +} +html { + width: 100%; + background: rgb(50, 50, 50); +} +body { + max-width: 720px; + margin: 0 auto; +} + +.barcode-scanner-view{ + width:100%; + height:100%; +} + +.landing-page { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + position: relative; +} + +.landing-title { + color: white; + font-size: 28px; + text-align: center; + padding: 0 24px; + position: absolute; + width: 100%; + bottom: max(60%, calc(50% + 70px)); +} + +.play-button { + width: 80px; + height: 80px; + background: white; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); + transition: transform 0.2s, box-shadow 0.2s, opacity 0.2s; + position: relative; +} +.play-button:hover { + transform: scale(1.1); + box-shadow: 0 12px 24px rgba(0, 0, 0, 0.3); +} +.play-button:active { + transform: scale(0.95); +} +.play-button.disabled { + opacity: 0.8; + cursor: not-allowed; + pointer-events: none; +} +.play-button.disabled .play-icon { + display: none; +} +.play-button.disabled::before { + content: ""; + position: absolute; + width: 70px; + height: 70px; + border: 3px solid rgba(254, 142, 20, 0.3); + border-top-color: #fe8e14; + border-radius: 50%; + animation: spin 1s linear infinite; +} +.play-button.disabled::after { + content: "Loading"; + position: absolute; + color: #fe8e14; + font-size: 12px; + font-weight: bold; + letter-spacing: 0.5px; +} +@keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +.play-icon { + width: 0; + height: 0; + border-left: 24px solid #fe8e14; + border-top: 16px solid transparent; + border-bottom: 16px solid transparent; + margin-left: 6px; +} + +.landing-page .logo { + position: absolute; + bottom: 8%; + left: 50%; + transform: translateX(-50%); +} +.landing-page .logo img { + width: 95px; + height: 23.5px; +} + +.result-page { + background: rgb(222, 223, 225); + width: 100%; + min-height: 100%; + padding: 1px; + position: relative; +} + +.barcode-text { + background: rgb(245, 245, 245); + font-size: 18px; + line-height: 32px; + margin: 1px 0 10px; + padding: 14px 30px; + word-break: break-all; + color: rgb(50, 50, 50); + font-weight: bold; +} + +.gs1AI-info > div { + background: rgb(245, 245, 245); + font-size: 18px; + line-height: 32px; + margin: 1px 0; + padding: 14px 30px; + color: rgb(102, 102, 102); +} +.gs1AI-info > div > span:first-child{ + color: rgb(50, 50, 50); +} +.has-info::after{ + content: url("info.svg"); + margin-left: 2px; + position: relative; + top: 1px; + cursor: pointer; +} + +.goods-name { + font-weight: bolder; +} + +.back-to-scan { + width: calc(100% - 52px); + margin: 26px; + padding: 14px; + font-family: Arial, Helvetica, sans-serif; + font-size: 24px; + line-height: 32px; + background: #fe8e14; + text-align: center; + color: white; + border-radius: 6px; + display: block; + border: 0; + cursor: pointer; +} +.back-to-scan:hover{ + transform: scale(1.05); +} +.back-to-scan:active { + transform: scale(0.95); +} + +.result-page .powered-by-dynamsoft{ + height:74px; +} +.result-page .powered-by-dynamsoft:after{ + content: "Powered by Dynamsoft"; + position: absolute; + bottom: 0; + height: 74px; + font-size: 16px; + line-height: 74px; + color: rgb(119, 119, 119); + width: 100%; + text-align: center; +} + +.dm-camera-mn-toast{position:absolute;font-size:max(1.25vmin,16px);line-height:max(3vmin,32px);padding:0 max(0.5vmin,4px);left:50%;bottom:max(12.5vmin,100px);transform:translateX(-50%);color:#fff;border-radius:max(0.5vmin,4px);background:rgba(100,100,100,0.5);} From 5b2fb7cd35563b661d9509cc0326e15c048005a0 Mon Sep 17 00:00:00 2001 From: Keillion Date: Fri, 31 Oct 2025 14:26:00 +0800 Subject: [PATCH 196/223] Update main.yml --- .github/workflows/main.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e6d513d1..bf6eb231 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -11,7 +11,7 @@ on: jobs: # This workflow contains a single job called "build" Build-Demo: - if: ${{ github.ref == 'refs/heads/demo' }} + if: ${{ github.ref == 'refs/heads/2025_Nov_re-structure' }} # The type of runner that the job will run on runs-on: self-hosted @@ -25,7 +25,7 @@ jobs: run: | cd /home/ubuntu [ -d barcode-reader-javascript-samples ] && rm -rf barcode-reader-javascript-samples - git clone --depth 1 -b demo https://github.com/Dynamsoft/barcode-reader-javascript-samples.git + git clone --depth 1 -b 2025_Nov_re-structure https://github.com/Dynamsoft/barcode-reader-javascript-samples.git - name: Sync files uses: SamKirkland/FTP-Deploy-Action@4.3.0 @@ -34,5 +34,5 @@ jobs: username: ${{ secrets.FTP_DEMO_USERNAME }} password: ${{ secrets.FTP_DEMO_PASSWORD }} port: 21 - local-dir: /home/ubuntu/barcode-reader-javascript-samples/ - server-dir: /Demo.dynamsoft.com/Samples/DBR/JS/ + local-dir: /home/ubuntu/barcode-reader-javascript-samples/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/ + server-dir: /Demo.dynamsoft.com/Samples/DBR/JS/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/ From 2bd33c5320942e2be1867d8abc6084a021dda6fa Mon Sep 17 00:00:00 2001 From: Justin Date: Fri, 31 Oct 2025 14:28:09 +0800 Subject: [PATCH 197/223] add readmes --- frameworks/README.md | 38 +- scenarios/batch-inventory/README.md | 41 ++ scenarios/cart-builder/README.md | 43 ++ .../{ => cart-builder}/cart-builder.html | 0 scenarios/debug/README.md | 4 +- .../locate-an-item-with-barcode/README.md | 38 ++ scenarios/pick-one-to-fill/README.md | 35 ++ scenarios/read-a-drivers-license/README.md | 40 ++ .../read_and_parse_dl.json | 79 +--- scenarios/read-and-parse-GS1-AI/README.md | 49 +++ .../index.css | 0 .../index.html | 0 .../read_and_parse_gs1.json | 0 .../scan-using-rtu-api/convert-GS1AI-title.js | 386 ++++++++++++++++++ .../scan-using-rtu-api/index.html | 256 ++++++++++++ .../scan-using-rtu-api/info.svg | 11 + ...logo-dynamsoft-blackBg-190x47-DZ66W3xz.png | Bin 0 -> 5449 bytes .../scan-using-rtu-api/rtu_gs1.json | 163 ++++++++ .../scan-using-rtu-api/style.css | 200 +++++++++ scenarios/scan-1D-Industrial/README.md | 39 +- scenarios/scan-1D-Retail/README.md | 36 +- scenarios/scan-and-search/README.md | 39 ++ .../scan-and-search.html | 0 scenarios/scan-any-codes/README.md | 30 +- .../scan-any-codes/ReadAllBarcodeFormats.json | 74 +++- scenarios/scan-common-2D-codes/README.md | 37 ++ scenarios/scan-from-distance/README.md | 35 +- scenarios/scan-qr-code/README.md | 43 +- .../show-result-texts-on-the-video/README.md | 32 ++ .../show-result-texts-on-the-video.html | 0 30 files changed, 1574 insertions(+), 174 deletions(-) create mode 100644 scenarios/batch-inventory/README.md create mode 100644 scenarios/cart-builder/README.md rename scenarios/{ => cart-builder}/cart-builder.html (100%) create mode 100644 scenarios/locate-an-item-with-barcode/README.md create mode 100644 scenarios/pick-one-to-fill/README.md create mode 100644 scenarios/read-a-drivers-license/README.md create mode 100644 scenarios/read-and-parse-GS1-AI/README.md rename scenarios/read-and-parse-GS1-AI/{ => scan-using-foundational-api}/index.css (100%) rename scenarios/read-and-parse-GS1-AI/{ => scan-using-foundational-api}/index.html (100%) rename scenarios/read-and-parse-GS1-AI/{ => scan-using-foundational-api}/read_and_parse_gs1.json (100%) create mode 100644 scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/convert-GS1AI-title.js create mode 100644 scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/index.html create mode 100644 scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/info.svg create mode 100644 scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/logo-dynamsoft-blackBg-190x47-DZ66W3xz.png create mode 100644 scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/rtu_gs1.json create mode 100644 scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/style.css create mode 100644 scenarios/scan-and-search/README.md rename scenarios/{ => scan-and-search}/scan-and-search.html (100%) create mode 100644 scenarios/show-result-texts-on-the-video/README.md rename scenarios/{ => show-result-texts-on-the-video}/show-result-texts-on-the-video.html (100%) diff --git a/frameworks/README.md b/frameworks/README.md index 9b089669..c7812e62 100644 --- a/frameworks/README.md +++ b/frameworks/README.md @@ -4,29 +4,33 @@ This directory contains framework-specific examples demonstrating how to integra ## Sample list -- [frameworks/angular/](./frameworks/angular/) — Angular examples. -- [frameworks/blazor/](./frameworks/blazor/) — Blazor (.NET) examples. -- [frameworks/capacitor/](./frameworks/capacitor/) — Capacitor mobile hybrid examples. -- [frameworks/electron/](./frameworks/electron/) — Electron desktop examples. -- [frameworks/es6/](./frameworks/es6/) — Plain ES6 module examples. -- [frameworks/native-ts/](./frameworks/native-ts/) — Native TypeScript examples. -- [frameworks/next/](./frameworks/next/) — Next.js examples. -- [frameworks/nuxt/](./frameworks/nuxt/) — Nuxt examples. -- [frameworks/pwa/](./frameworks/pwa/) — Progressive Web App examples. -- [frameworks/react/](./frameworks/react/) — React examples. -- [frameworks/requirejs/](./frameworks/requirejs/) — RequireJS (AMD) examples. -- [frameworks/svelte/](./frameworks/svelte/) — Svelte examples. -- [frameworks/vue/](./frameworks/vue/) — Vue examples. -- [frameworks/webview/](./frameworks/webview/) — Native WebView examples for Android/iOS. +- [angular/](./angular/) — Angular examples. +- [blazor/](./blazor/) — Blazor (.NET) examples. +- [capacitor/](./capacitor/) — Capacitor mobile hybrid examples. +- [electron/](./electron/) — Electron desktop examples. +- [es6/](./es6/) — Plain ES6 module examples. +- [native-ts/](./native-ts/) — Native TypeScript examples. +- [next/](./next/) — Next.js examples. +- [nuxt/](./nuxt/) — Nuxt examples. +- [pwa/](./pwa/) — Progressive Web App examples. +- [react/](./react/) — React examples. +- [requirejs/](./requirejs/) — RequireJS (AMD) examples. +- [svelte/](./svelte/) — Svelte examples. +- [vue/](./vue/) — Vue examples. +- [webview/](./webview/) — Native WebView examples for Android/iOS. ## Quick start 1. Browse into a framework subfolder and choose a subexample, e.g.: - - cd frameworks/react/scan-using-foundational-api -2. Follow the subexample README for exact steps. Typical commands: + ```cmd + cd react/scan-using-rtu-api + ``` +1. Follow the subexample README for exact steps. Typical commands: + ```cmd - npm install - npm run dev (or npm start / npm run build per the subexample) -3. Open the local dev URL shown in the terminal (ensure you use localhost or HTTPS for camera access). + ``` +2. Open the local dev URL shown in the terminal (ensure you use localhost or HTTPS for camera access). ## Notes diff --git a/scenarios/batch-inventory/README.md b/scenarios/batch-inventory/README.md new file mode 100644 index 00000000..9414c435 --- /dev/null +++ b/scenarios/batch-inventory/README.md @@ -0,0 +1,41 @@ +# 🧾 Batch Inventory + +A lightweight demo for batch scanning and simple inventory collection. The sample uses the Dynamsoft Barcode Reader bundle to capture barcodes in sessions, automatically deduplicate entries, and present a session summary for quick analysis or export. + +## Included files + +- `index.html` — main demo page (camera scanner UI + session controls). +- `index.css` — styles for the demo. + +## ✨ Features + +- Batch scanning mode with automatic per-session deduplication +- Real-time session summary: + - Total unique barcodes + - Barcode format/type distribution + - Session duration + +## 🔧 How it works + +- The page creates a BarcodeScanner instance configured for multi-unique capture (SM_MULTI_UNIQUE or equivalent) so duplicate barcodes within the same session are ignored. +- Scanned values are accumulated in-memory and analyzed to produce session metrics (counts, distribution, duration). +- Users can stop a session to view the summary, or restart scanning to begin a new session. + +## Quick start + +Opening HTML files directly may not work as expected. Instead, run a local development server. Here’s a quick method using [Visual Studio Code](https://code.visualstudio.com/): + +1. Install the [Five Server extension](https://marketplace.visualstudio.com/items?itemName=yandeu.five-server) from the VS Code Marketplace. + +2. Right-click on `index.html` and select "Open with Five Server". + +## 💡 Tips + +- Use a fixed camera mount or consistent hand positioning for higher throughput. +- For large exports, consider paginating or streaming results to a backend. + +## 📌 Notes + +- Run on localhost or HTTPS to allow camera access. +- This demo is intended for prototyping and UX testing; integrate with backend storage for production use. +- Replace the included demo/trial license with a valid Dynamsoft license for extended evaluation. \ No newline at end of file diff --git a/scenarios/cart-builder/README.md b/scenarios/cart-builder/README.md new file mode 100644 index 00000000..ebd5c5be --- /dev/null +++ b/scenarios/cart-builder/README.md @@ -0,0 +1,43 @@ +# 🛒 Cart Builder + +A lightweight demo that simulates a shopping experience: scan a barcode and add a product to a dynamic on‑page cart. The sample uses the Dynamsoft Barcode Reader bundle to perform live video decoding and demonstrates a simple UX for point‑of‑sale or prototype flows. + +## Included files + +- `cart-builder.html` — single‑file sample. + +## ✨ Features + +- Live camera decoding (1D / 2D) using Dynamsoft BarcodeScanner API +- Floating, draggable scanner window attached to the page +- Sessioned scans: each unique scan appends a product to the simulated cart +- Demo product list (20 dummy products) and simple cart UI with name and price + +## 🔧 How it works + +- The page loads the Dynamsoft Barcode Reader bundle and creates a BarcodeScanner instance configured with: + - SM_MULTI_UNIQUE scan mode (to prefer unique entries) + - a duplicateForgetTime to avoid rapid duplicate captures + - a scanner UI mounted into a floating container +- When a unique barcode is detected, the sample maps the scan to a random demo product, appends it to the in‑memory cart, and refreshes the cart display. +- The floating scanner can be dragged around the viewport and is hidden when not in use. + +## Quick start + +Opening HTML files directly may not work as expected. Instead, run a local development server. Here’s a quick method using [Visual Studio Code](https://code.visualstudio.com/): + +1. Install the [Five Server extension](https://marketplace.visualstudio.com/items?itemName=yandeu.five-server) from the VS Code Marketplace. + +2. Right-click on `cart-builder.html` and select "Open with Five Server". + +## 💡 Tips + +- Use localhost or HTTPS to allow camera access. +- Ensure good lighting and hold barcodes steady for best results. +- For real projects, replace the demo product mapping with a backend lookup using the scanned barcode value. + +## 📌 Notes + +- This is a front‑end prototype intended for demo and UX testing only. +- Replace the license key with a valid Dynamsoft license for production/testing beyond the included trial behavior. +- See the repository root `README.md` for running instructions, trial licenses and API documentation links. \ No newline at end of file diff --git a/scenarios/cart-builder.html b/scenarios/cart-builder/cart-builder.html similarity index 100% rename from scenarios/cart-builder.html rename to scenarios/cart-builder/cart-builder.html diff --git a/scenarios/debug/README.md b/scenarios/debug/README.md index 0bc80664..12b9f452 100644 --- a/scenarios/debug/README.md +++ b/scenarios/debug/README.md @@ -6,7 +6,7 @@ This sample is designed to: 2. Check if your device and browser are compatible with the camera and to what extent. 3. Collect video frames for analysis. (Require to host the sample locally) -You can directly debug 1 and 2 in this link: [https://demo.dynamsoft.com/Samples/DBR/JS/foundational-api-samples/others/debug/public/index.html](https://demo.dynamsoft.com/Samples/DBR/JS/foundational-api-samples/others/debug/public/index.html) +You can directly debug 1 and 2 in this link: [https://demo.dynamsoft.com/Samples/DBR/JS/scenarios/debug/public/index.html](https://demo.dynamsoft.com/Samples/DBR/JS/scenarios/debug/public/index.html) Item 3 we will introduce in detail. @@ -20,7 +20,7 @@ The following shows how to host the sample and collect frames. The sample can be downloaded from -Debug Sample on GitHub +Debug Sample on GitHub Note that the entire folder is required. To download only the files in this folder, try using "https://downgit.github.io/#/home". diff --git a/scenarios/locate-an-item-with-barcode/README.md b/scenarios/locate-an-item-with-barcode/README.md new file mode 100644 index 00000000..90de1bf5 --- /dev/null +++ b/scenarios/locate-an-item-with-barcode/README.md @@ -0,0 +1,38 @@ +# 🔎 Locate an Item with Barcode + +A focused demo that helps locate and highlight items in a UI by scanning barcodes. Useful for inventory lookup, picking workflows, or warehouse/retail assistance where scanning a code should point you to the corresponding item on screen. + +## Included files + +- `index.html` — main demo page (camera + UI to locate items). +- `icons/` — UI icons used by the sample (checkmark, cross, logo). + +## ✨ Features + +- Scan a barcode (or fill in text) and find the matching item in the displayed list +- Visual highlight and status feedback for match / no-match cases +- Simple UI for quick prototyping of locate-by-barcode workflows + +## 🔧 How it works + +- The page runs a barcode scanner that decodes incoming frames. +- Decoded barcode values are compared against an on-page item dataset (client-side lookup). +- When a match is found the sample highlights the matched item and shows contextual feedback; when no match is found it displays an unmatched-result state. + +## Quick start + +Opening HTML files directly may not work as expected. Instead, run a local development server. Here’s a quick method using [Visual Studio Code](https://code.visualstudio.com/): + +1. Install the [Five Server extension](https://marketplace.visualstudio.com/items?itemName=yandeu.five-server) from the VS Code Marketplace. + +2. Right-click on `index.html` and select "Open with Five Server". + +## 💡 Tips + +- Good lighting and steady camera framing improve decode accuracy. +- Use the icons folder as a reference for UI feedback and quick prototyping. + +## 📌 Notes + +- Serve via localhost or HTTPS to enable camera access. +- See the repository root `README.md` for running instructions, trial licenses and API documentation \ No newline at end of file diff --git a/scenarios/pick-one-to-fill/README.md b/scenarios/pick-one-to-fill/README.md new file mode 100644 index 00000000..b280b595 --- /dev/null +++ b/scenarios/pick-one-to-fill/README.md @@ -0,0 +1,35 @@ +# ✅ Pick One to Fill + +A compact demo that helps pick the correct item from several candidates by scanning barcodes. The sample uses the Dynamsoft Barcode Reader bundle to decode barcodes from camera or image input and demonstrates a simple match-and-highlight UX. + +## Included files + +- `index.html` — main demo page. +- `index.css` — styles for the demo. +- `package-label.png` — sample product label used by the demo. + +## ✨ Features + +- Field-specific Camera Activation Open the camera individually for different fields. +- Manual control when to start decoding Start decoding manually after aiming at the target to reduce the risk of misreads and missed barcodes. +- Auto-Fill with Scan Result Automatically populates input fields with scanned barcode values. + +## 🔄 Sample Usage Flow + +1. Click the "Open Camera" button to activate the camera. +2. Aim at the sample image shown below. +3. Click the "Decode" button to start barcode recognition. +4. If only one barcode is detected, its value will be automatically filled into the corresponding field. If multiple barcodes are detected, the video stream will freeze, and you’ll need to manually select one from the decoded results to fill in. + +## Quick start + +Opening HTML files directly may not work as expected. Instead, run a local development server. Here’s a quick method using [Visual Studio Code](https://code.visualstudio.com/): + +1. Install the [Five Server extension](https://marketplace.visualstudio.com/items?itemName=yandeu.five-server) from the VS Code Marketplace. + +2. Right-click on `index.html` and select "Open with Five Server". + +## 📌 Notes + +- This usage is especially suitable for scenarios with densely packed barcodes, where secondary confirmation or manual selection is highly needed. +- You can find a sample reference image in ·./pick-one-to-fill/· \ No newline at end of file diff --git a/scenarios/read-a-drivers-license/README.md b/scenarios/read-a-drivers-license/README.md new file mode 100644 index 00000000..af235728 --- /dev/null +++ b/scenarios/read-a-drivers-license/README.md @@ -0,0 +1,40 @@ +# 🪪 Read a Driver's License + +A focused demo that decodes and parses barcode data from driver's license images (camera or file input). The sample demonstrates extracting structured fields (name, DOB, license number, address, etc.) using a parsing template. + +## Included files + +- `index.html` — main demo page (camera + image input UI). +- `SampleDriversLicense.jpg` — example license image. +- `read_and_parse_dl.json` — parsing template / configuration used by the sample. +- `style.css` — page styles. + +## ✨ Features + +- Decode driver's license barcode (PDF417 / AAMVA formats) from camera or static image +- Parse and display structured fields +- Simple UI for testing and validating parsing rules + +## 🔧 How it works + +- The page initializes the barcode scanner to decode the license barcode from an image or live video frame. +- The sample parsed fields are rendered in the UI alongside the raw decoded text; the sample also highlights parsing errors or missing fields for easier troubleshooting. + +## Quick start + +Opening HTML files directly may not work as expected. Instead, run a local development server. Here’s a quick method using [Visual Studio Code](https://code.visualstudio.com/): + +1. Install the [Five Server extension](https://marketplace.visualstudio.com/items?itemName=yandeu.five-server) from the VS Code Marketplace. + +2. Right-click on `index.html` and select "Open with Five Server". + +## 💡 Tips + +- Use high-resolution images or a higher camera resolution for reliable decoding and parsing. +- Test with multiple sample licenses to ensure the parsing template covers expected variants. + +## 📌 Notes + +- Serve via localhost or HTTPS to enable camera access. +- Replace the included trial/demo license with a valid Dynamsoft license for extended evaluation. +- See the repository root `README.md` for running instructions and API documentation. \ No newline at end of file diff --git a/scenarios/read-a-drivers-license/read_and_parse_dl.json b/scenarios/read-a-drivers-license/read_and_parse_dl.json index a312bce9..883d3b60 100644 --- a/scenarios/read-a-drivers-license/read_and_parse_dl.json +++ b/scenarios/read-a-drivers-license/read_and_parse_dl.json @@ -10,7 +10,7 @@ "SectionArray": [ { "Section": "ST_BARCODE_LOCALIZATION", - "ImageParameterName": "ip_localize_barcode", + "ImageParameterName": "ip", "StageArray": [ { "LocalizationModes": [ @@ -30,7 +30,7 @@ }, { "Section": "ST_BARCODE_DECODING", - "ImageParameterName": "ip_decode_barcode", + "ImageParameterName": "ip", "StageArray": [ { "DeblurModes": [ @@ -57,62 +57,12 @@ "Name": "ReadDriversLicense", "ImageROIProcessingNameArray": [ "roi_pdf417_barcode" - ], - "SemanticProcessingNameArray": [ - "sp_dl" ] } ], "ImageParameterOptions": [ { - "Name": "ip_localize_barcode", - "ApplicableStages": [ - { - "Stage": "SST_INPUT_COLOR_IMAGE" - }, - { - "Stage": "SST_SCALE_IMAGE" - }, - { - "Stage": "SST_CONVERT_TO_GRAYSCALE" - }, - { - "Stage": "SST_TRANSFORM_GRAYSCALE" - }, - { - "Stage": "SST_ENHANCE_GRAYSCALE" - }, - { - "Stage": "SST_BINARIZE_IMAGE" - }, - { - "Stage": "SST_DETECT_TEXTURE" - }, - { - "Stage": "SST_REMOVE_TEXTURE_FROM_GRAYSCALE" - }, - { - "Stage": "SST_BINARIZE_TEXTURE_REMOVED_GRAYSCALE" - }, - { - "Stage": "SST_FIND_CONTOURS" - }, - { - "Stage": "SST_DETECT_SHORTLINES" - }, - { - "Stage": "SST_ASSEMBLE_LINES" - }, - { - "Stage": "SST_DETECT_TEXT_ZONES" - }, - { - "Stage": "SST_REMOVE_TEXT_ZONES_FROM_BINARY" - } - ] - }, - { - "Name": "ip_decode_barcode", + "Name": "ip", "ApplicableStages": [ { "Stage": "SST_INPUT_COLOR_IMAGE" @@ -170,28 +120,5 @@ "task_pdf417_barcode" ] } - ], - "SemanticProcessingOptions": [ - { - "Name": "sp_dl", - "ReferenceObjectFilter": { - "ReferenceTargetROIDefNameArray": [ - "roi_pdf417_barcode" - ] - }, - "TaskSettingNameArray": [ - "dcp_dl" - ] - } - ], - "CodeParserTaskSettingOptions": [ - { - "Name": "dcp_dl", - "CodeSpecifications": [ - "AAMVA_DL_ID", - "AAMVA_DL_ID_WITH_MAG_STRIPE", - "SOUTH_AFRICA_DL" - ] - } ] } \ No newline at end of file diff --git a/scenarios/read-and-parse-GS1-AI/README.md b/scenarios/read-and-parse-GS1-AI/README.md new file mode 100644 index 00000000..1c699c4e --- /dev/null +++ b/scenarios/read-and-parse-GS1-AI/README.md @@ -0,0 +1,49 @@ +# 🔢 Read and Parse GS1 (AI) + +A focused demo that decodes GS1-formatted barcodes and parses Application Identifiers (AIs) to extract structured product and logistic data (GTIN, batch/lot, expiry, weight, serial, etc.). This folder contains two implementation styles so you can choose the integration that best fits your project. + +## Included files + +- scan-using-foundational-api/ — Foundational single-file implementation: + - `index.html` — demo page. + - `index.css` — styles used by the foundational demo. + - `read_and_parse_gs1.json` — GS1 template file used by this implementation. + +- scan-using-rtu-api/ — RTU implementation: + - `rtu.html` — RTU demo page. + - `rtu_gs1.json` — GS1 template file used by this implementation. + - `convert-GS1AI-title.js` — helper to convert or format AI titles for display. + - `style.css` — RTU demo styles. + - `info.svg`, `logo-dynamsoft-blackBg-190x47-DZ66W3xz.png` — visual assets used by the RTU demo. + +## ✨ Features + +- Decode GS1 barcodes (GS1-128 / EAN / GS1 Databar variants) from live camera or static image inputs. +- Parse AI-tagged payloads into structured fields (GTIN, batch/lot, expiry, weight, serial, etc.). + +## 🔧 How it works + +- Both demos initialize the barcode scanner to decode GS1 payloads from camera frames or image files. +- Decoded GS1 strings are parsed according to the provided JSON template (mapping AIs to labels and formats). +- The foundational demo is a compact single-page example that loads `read_and_parse_gs1.json` and renders parsed fields alongside the raw payload. +- The RTU demo demonstrates a more integrated UI flow (uses `rtu_gs1.json`, helper script `convert-GS1AI-title.js`, and additional assets/styles) suitable for embedding into larger apps. + +## Quick start + +Opening HTML files directly may not work as expected. Instead, run a local development server. Here’s a quick method using [Visual Studio Code](https://code.visualstudio.com/): + +1. Install the [Five Server extension](https://marketplace.visualstudio.com/items?itemName=yandeu.five-server) from the VS Code Marketplace. + +2. Right-click on `index.html` and select "Open with Five Server". + +## 💡 Tips + +- Use high-resolution images or increase camera resolution for small or dense GS1 fields. +- Validate AI date/number formats (some AIs imply decimal places or YY/MM/YY formats). +- Use the RTU implementation as a reference if you need a richer runtime UI integration. + +## 📌 Notes + +- Serve the demos via localhost or HTTPS to allow camera access. +- Replace the included trial/demo license with a valid Dynamsoft license for extended evaluation or production use. +- See the repository root `README.md` for running instructions, licensing and API documentation links. \ No newline at end of file diff --git a/scenarios/read-and-parse-GS1-AI/index.css b/scenarios/read-and-parse-GS1-AI/scan-using-foundational-api/index.css similarity index 100% rename from scenarios/read-and-parse-GS1-AI/index.css rename to scenarios/read-and-parse-GS1-AI/scan-using-foundational-api/index.css diff --git a/scenarios/read-and-parse-GS1-AI/index.html b/scenarios/read-and-parse-GS1-AI/scan-using-foundational-api/index.html similarity index 100% rename from scenarios/read-and-parse-GS1-AI/index.html rename to scenarios/read-and-parse-GS1-AI/scan-using-foundational-api/index.html diff --git a/scenarios/read-and-parse-GS1-AI/read_and_parse_gs1.json b/scenarios/read-and-parse-GS1-AI/scan-using-foundational-api/read_and_parse_gs1.json similarity index 100% rename from scenarios/read-and-parse-GS1-AI/read_and_parse_gs1.json rename to scenarios/read-and-parse-GS1-AI/scan-using-foundational-api/read_and_parse_gs1.json diff --git a/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/convert-GS1AI-title.js b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/convert-GS1AI-title.js new file mode 100644 index 00000000..83a7e976 --- /dev/null +++ b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/convert-GS1AI-title.js @@ -0,0 +1,386 @@ +const funcConvertGs1AIToTitle = (gs1AI) => { + switch(gs1AI){ + case "00": + return "SSCC"; + case "01": + return "GTIN"; + case "02": + return "CONTENT"; + case "10": + return "BATCH/LOT"; + case "11": + return "PROD DATE"; + case "12": + return "DUE DATE"; + case "13": + return "PACK DATE"; + case "15": + return "BEST BY"; + case "16": + return "SELL BY"; + case "17": + return "EXPIRY"; + case "20": + return "VARIANT"; + case "21": + return "SERIAL"; + case "22": + return "CPV"; + case "235": + return "TPX"; + case "240": + return "ADDITIONAL ID"; + case "241": + return "CUST. PART No."; + case "242": + return "MTO VARIANT"; + case "243": + return "PCN"; + case "250": + return "SECONDARY SERIAL"; + case "251": + return "REF. TO SOURCE"; + case "253": + return "GDTI"; + case "254": + return "GLN EXTENSION COMPONENT"; + case "255": + return "GCN"; + case "30": + return "VAR. COUNT"; + case "310n": + return "NET WEIGHT (kg)"; + case "311n": + return "LENGTH (m)"; + case "312n": + return "WIDTH (m)"; + case "313n": + return "HEIGHT (m)"; + case "314n": + return "AREA (m2)"; + case "315n": + return "NET VOLUME (l)"; + case "316n": + return "NET VOLUME (m3)"; + case "320n": + return "NET WEIGHT (lb)"; + case "321n": + return "LENGTH (in)"; + case "322n": + return "LENGTH (ft)"; + case "323n": + return "LENGTH (yd)"; + case "324n": + return "WIDTH (in)"; + case "325n": + return "WIDTH (ft)"; + case "326n": + return "WIDTH (yd)"; + case "327n": + return "HEIGHT (in)"; + case "328n": + return "HEIGHT (ft)"; + case "329n": + return "HEIGHT (yd)"; + case "330n": + return "GROSS WEIGHT (kg)"; + case "331n": + return "LENGTH (m), log"; + case "332n": + return "WIDTH (m), log"; + case "333n": + return "HEIGHT (m), log"; + case "334n": + return "AREA (m2), log"; + case "335n": + return "VOLUME (l), log"; + case "336n": + return "VOLUME (m3), log"; + case "337n": + return "KG PER m²"; + case "340n": + return "GROSS WEIGHT (lb)"; + case "341n": + return "LENGTH (in), log"; + case "342n": + return "LENGTH (ft), log"; + case "343n": + return "LENGTH (yd), log"; + case "344n": + return "WIDTH (in), log"; + case "345n": + return "WIDTH (ft), log"; + case "346n": + return "WIDTH (yd), log"; + case "347n": + return "HEIGHT (in), log"; + case "348n": + return "HEIGHT (ft), log"; + case "349n": + return "HEIGHT (yd), log"; + case "350n": + return "AREA (in2)"; + case "351n": + return "AREA (ft2)"; + case "352n": + return "AREA (yd2)"; + case "353n": + return "AREA (in2), log"; + case "354n": + return "AREA (ft2), log"; + case "355n": + return "AREA (yd2), log"; + case "356n": + return "NET WEIGHT (t)"; + case "357n": + return "NET VOLUME (oz)"; + case "360n": + return "NET VOLUME (q)"; + case "361n": + return "NET VOLUME (g)"; + case "362n": + return "VOLUME (q), log"; + case "363n": + return "VOLUME (g), log"; + case "364n": + return "VOLUME (in3)"; + case "365n": + return "VOLUME (ft3)"; + case "366n": + return "VOLUME (yd3)"; + case "367n": + return "VOLUME (in3), log"; + case "368n": + return "VOLUME (ft3), log"; + case "369n": + return "VOLUME (yd3), log"; + case "37": + return "COUNT"; + case "390n": + return "AMOUNT"; + case "391n": + return "AMOUNT"; + case "392n": + return "PRICE"; + case "393n": + return "PRICE"; + case "394n": + return "PRCNT OFF"; + case "395n": + return "PRICE/UoM"; + case "400": + return "ORDER NUMBER"; + case "401": + return "GINC"; + case "402": + return "GSIN"; + case "403": + return "ROUTE"; + case "410": + return "SHIP TO LOC"; + case "411": + return "BILL TO"; + case "412": + return "PURCHASE FROM"; + case "413": + return "SHIP FOR LOC"; + case "414": + return "LOC No."; + case "415": + return "PAY TO"; + case "416": + return "PROD/SERV LOC"; + case "417": + return "PARTY"; + case "420": + return "SHIP TO POST"; + case "421": + return "SHIP TO POST"; + case "422": + return "ORIGIN"; + case "423": + return "COUNTRY - INITIAL PROCESS"; + case "424": + return "COUNTRY - PROCESS"; + case "425": + return "COUNTRY - DISASSEMBLY"; + case "426": + return "COUNTRY - FULL PROCESS"; + case "427": + return "ORIGIN SUBDIVISION"; + case "4300": + return "SHIP TO COMP"; + case "4301": + return "SHIP TO NAME"; + case "4302": + return "SHIP TO ADD1"; + case "4303": + return "SHIP TO ADD2"; + case "4304": + return "SHIP TO SUB"; + case "4305": + return "SHIP TO LOC"; + case "4306": + return "SHIP TO REG"; + case "4307": + return "SHIP TO COUNTRY"; + case "4308": + return "SHIP TO PHONE"; + case "4309": + return "SHIP TO GEO"; + case "4310": + return "RTN TO COMP"; + case "4311": + return "RTN TO NAME"; + case "4312": + return "RTN TO ADD1"; + case "4313": + return "RTN TO ADD2"; + case "4314": + return "RTN TO SUB"; + case "4315": + return "RTN TO LOC"; + case "4316": + return "RTN TO REG"; + case "4317": + return "RTN TO COUNTRY"; + case "4318": + return "RTN TO POST"; + case "4319": + return "RTN TO PHONE"; + case "4320": + return "SRV DESCRIPTION"; + case "4321": + return "DANGEROUS GOODS"; + case "4322": + return "AUTH LEAVE"; + case "4323": + return "SIG REQUIRED"; + case "4324": + return "NBEF DEL DT"; + case "4325": + return "NAFT DEL DT"; + case "4326": + return "REL DATE"; + case "4330": + return "MAX TEMP F"; + case "4331": + return "MAX TEMP C"; + case "4332": + return "MIN TEMP F"; + case "4333": + return "MIN TEMP C"; + case "7001": + return "NSN"; + case "7002": + return "MEAT CUT"; + case "7003": + return "EXPIRY TIME"; + case "7004": + return "ACTIVE POTENCY"; + case "7005": + return "CATCH AREA"; + case "7006": + return "FIRST FREEZE DATE"; + case "7007": + return "HARVEST DATE"; + case "7008": + return "AQUATIC SPECIES"; + case "7009": + return "FISHING GEAR TYPE"; + case "7010": + return "PROD METHOD"; + case "7011": + return "TEST BY DATE"; + case "7020": + return "REFURB LOT"; + case "7021": + return "FUNC STAT"; + case "7022": + return "REV STAT"; + case "7023": + return "GIAI - ASSEMBLY"; + // Note: '703s' typically implies a range (e.g., 7030-7039) or a structure, + // using '703' as a placeholder for the fixed-length AI. + case "703s": + return "PROCESSOR"; + case "7040": + return "UIC+EXT"; + case "710": + return "NHRN PZN"; + case "711": + return "NHRN CIP"; + case "712": + return "NHRN CN"; + case "713": + return "NHRN DRN"; + case "714": + return "NHRN AIM"; + case "715": + return "NHRN NDC"; + // Note: '723s' implies a range (e.g., 7230-7239) or a structure, + // using '723' as a placeholder for the fixed-length AI. + case "723s": + return "CERT"; + case "7240": + return "PROTOCOL"; + case "7241": + return "AIDC MEDIA TYPE"; + case "7242": + return "VCN"; + case "8001": + return "DIMENSIONS"; + case "8002": + return "CMT No."; + case "8003": + return "GRAI"; + case "8004": + return "GIAI"; + case "8005": + return "PRICE PER UNIT"; + case "8006": + return "ITIP"; + case "8007": + return "IBAN"; + case "8008": + return "PROD TIME"; + case "8009": + return "OPTSEN"; + case "8010": + return "CPID"; + case "8011": + return "CPID SERIAL"; + case "8012": + return "VERSION"; + case "8013": + return "GMN"; + case "8017": + return "GSRN - PROVIDER"; + case "8018": + return "GSRN - RECIPIENT"; + case "8019": + return "SRIN"; + case "8020": + return "REF No."; + case "8026": + return "ITIP CONTENT"; + case "8030": + return "DIGSIG"; + // case "8110": + // return "-"; + case "8111": + return "POINTS"; + // case "8112": + // return "-"; + case "8200": + return "PRODUCT URL"; + } + let intAI = parseInt(gs1AI); + if(intAI >= 716 && intAI < 723){ + return "NHRN"; + } + if(intAI >= 90 && intAI <= 99){ + return "INTERNAL"; + } + return title; +}; \ No newline at end of file diff --git a/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/index.html b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/index.html new file mode 100644 index 00000000..e116dae6 --- /dev/null +++ b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/index.html @@ -0,0 +1,256 @@ + + + + + + Read a GS1 Application Identifier (AI) + + + +
    +
    Read a GS1 Application Identifier (AI)
    +
    +
    +
    + +
    + + +
    + + + + + diff --git a/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/info.svg b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/info.svg new file mode 100644 index 00000000..f0dab9d4 --- /dev/null +++ b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/info.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/logo-dynamsoft-blackBg-190x47-DZ66W3xz.png b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/logo-dynamsoft-blackBg-190x47-DZ66W3xz.png new file mode 100644 index 0000000000000000000000000000000000000000..7967e8edbde77fcdf84333b58ac1046f821c9e0b GIT binary patch literal 5449 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 LnIX#&&Jq6u=Qz1) literal 0 HcmV?d00001 diff --git a/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/rtu_gs1.json b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/rtu_gs1.json new file mode 100644 index 00000000..67497355 --- /dev/null +++ b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/rtu_gs1.json @@ -0,0 +1,163 @@ +{ + "BarcodeReaderTaskSettingOptions": [ + { + "Name": "task_gs1_ai_barcode", + "ExpectedBarcodesCount": 1, + "BarcodeFormatIds": [ + "BF_GS1_DATABAR", + "BF_CODE_128", + "BF_GS1_COMPOSITE", + "BF_DATAMATRIX", + "BF_QR_CODE" + ], + "BarcodeFormatSpecificationNameArray": [ + "bfs_gs1_ai" + ], + "SectionArray": [ + { + "Section": "ST_REGION_PREDETECTION", + "ImageParameterName": "ip_localize_barcode", + "StageArray": [ + { + "Stage": "SST_PREDETECT_REGIONS" + } + ] + }, + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip_localize_barcode", + "StageArray": [ + { + "LocalizationModes": [ + { + "Mode": "LM_SCAN_DIRECTLY", + "ScanDirection": 2 + }, + { + "Mode": "LM_CONNECTED_BLOCKS", + "ModelNameArray": [] + }, + { + "Mode": "LM_CONNECTED_BLOCKS", + "ModelNameArray": [ + "OneDLocalization" + ] + } + ], + "Stage": "SST_LOCALIZE_CANDIDATE_BARCODES" + }, + { + "Stage": "SST_LOCALIZE_BARCODES" + } + ] + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip_localize_barcode", + "StageArray": [ + { + "Stage": "SST_RESIST_DEFORMATION" + }, + { + "Stage": "SST_COMPLEMENT_BARCODE" + }, + { + "Stage": "SST_SCALE_BARCODE_IMAGE" + }, + { + "DeblurModes": [ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_THRESHOLD_BINARIZATION" + }, + { + "Mode": "DM_DIRECT_BINARIZATION" + }, + { + "Mode": "DM_NEURAL_NETWORK", + "ModelNameArray": [ + "Code128Decoder" + ] + }, + { + "Mode": "DM_DEEP_ANALYSIS" + } + ], + "Stage": "SST_DECODE_BARCODES" + } + ] + } + ] + } + ], + "BarcodeFormatSpecificationOptions": [ + { + "Name": "bfs_gs1_ai", + "BarcodeFormatIds": [ + "BF_GS1_DATABAR", + "BF_CODE_128", + "BF_GS1_COMPOSITE", + "BF_DATAMATRIX", + "BF_QR_CODE" + ], + "IncludeTrailingCheckDigit": 0, + "IncludeImpliedAI01": 1 + } + ], + "CaptureVisionTemplates": [ + { + "Name": "ReadBarcodes_SpeedFirst", + "ImageROIProcessingNameArray": [ + "roi_gs1_ai_barcode" + ] + }, + { + "Name": "ReadBarcodes_ReadRateFirst", + "ImageROIProcessingNameArray": [ + "roi_gs1_ai_barcode" + ] + } + ], + "ImageParameterOptions": [ + { + "Name": "ip_localize_barcode", + "ApplicableStages": [ + { + "Stage": "SST_BINARIZE_IMAGE", + "BinarizationModes": [ + { + "Mode": "BM_LOCAL_BLOCK" + } + ] + }, + { + "Stage": "SST_BINARIZE_TEXTURE_REMOVED_GRAYSCALE" + }, + { + "Stage": "SST_TRANSFORM_GRAYSCALE", + "GrayscaleTransformationModes": [ + { + "Mode": "GTM_ORIGINAL" + }, + { + "Mode": "GTM_INVERTED" + } + ] + } + ] + } + ], + "TargetROIDefOptions": [ + { + "Name": "roi_gs1_ai_barcode", + "TaskSettingNameArray": [ + "task_gs1_ai_barcode" + ] + } + ], + "GlobalParameter": { + "IntraOpNumThreads": 1 + } +} diff --git a/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/style.css b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/style.css new file mode 100644 index 00000000..0cd02c7c --- /dev/null +++ b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/style.css @@ -0,0 +1,200 @@ + +* { + box-sizing: border-box; +} +html, +body { + margin: 0; + padding: 0; + height: 100%; + font-family: Arial, Helvetica, sans-serif; + font-size: 20px; +} +html { + width: 100%; + background: rgb(50, 50, 50); +} +body { + max-width: 720px; + margin: 0 auto; +} + +.barcode-scanner-view{ + width:100%; + height:100%; +} + +.landing-page { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + position: relative; +} + +.landing-title { + color: white; + font-size: 28px; + text-align: center; + padding: 0 24px; + position: absolute; + width: 100%; + bottom: max(60%, calc(50% + 70px)); +} + +.play-button { + width: 80px; + height: 80px; + background: white; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); + transition: transform 0.2s, box-shadow 0.2s, opacity 0.2s; + position: relative; +} +.play-button:hover { + transform: scale(1.1); + box-shadow: 0 12px 24px rgba(0, 0, 0, 0.3); +} +.play-button:active { + transform: scale(0.95); +} +.play-button.disabled { + opacity: 0.8; + cursor: not-allowed; + pointer-events: none; +} +.play-button.disabled .play-icon { + display: none; +} +.play-button.disabled::before { + content: ""; + position: absolute; + width: 70px; + height: 70px; + border: 3px solid rgba(254, 142, 20, 0.3); + border-top-color: #fe8e14; + border-radius: 50%; + animation: spin 1s linear infinite; +} +.play-button.disabled::after { + content: "Loading"; + position: absolute; + color: #fe8e14; + font-size: 12px; + font-weight: bold; + letter-spacing: 0.5px; +} +@keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +.play-icon { + width: 0; + height: 0; + border-left: 24px solid #fe8e14; + border-top: 16px solid transparent; + border-bottom: 16px solid transparent; + margin-left: 6px; +} + +.landing-page .logo { + position: absolute; + bottom: 8%; + left: 50%; + transform: translateX(-50%); +} +.landing-page .logo img { + width: 95px; + height: 23.5px; +} + +.result-page { + background: rgb(222, 223, 225); + width: 100%; + min-height: 100%; + padding: 1px; + position: relative; +} + +.barcode-text { + background: rgb(245, 245, 245); + font-size: 18px; + line-height: 32px; + margin: 1px 0 10px; + padding: 14px 30px; + word-break: break-all; + color: rgb(50, 50, 50); + font-weight: bold; +} + +.gs1AI-info > div { + background: rgb(245, 245, 245); + font-size: 18px; + line-height: 32px; + margin: 1px 0; + padding: 14px 30px; + color: rgb(102, 102, 102); +} +.gs1AI-info > div > span:first-child{ + color: rgb(50, 50, 50); +} +.has-info::after{ + content: url("info.svg"); + margin-left: 2px; + position: relative; + top: 1px; + cursor: pointer; +} + +.goods-name { + font-weight: bolder; +} + +.back-to-scan { + width: calc(100% - 52px); + margin: 26px; + padding: 14px; + font-family: Arial, Helvetica, sans-serif; + font-size: 24px; + line-height: 32px; + background: #fe8e14; + text-align: center; + color: white; + border-radius: 6px; + display: block; + border: 0; + cursor: pointer; +} +.back-to-scan:hover{ + transform: scale(1.05); +} +.back-to-scan:active { + transform: scale(0.95); +} + +.result-page .powered-by-dynamsoft{ + height:74px; +} +.result-page .powered-by-dynamsoft:after{ + content: "Powered by Dynamsoft"; + position: absolute; + bottom: 0; + height: 74px; + font-size: 16px; + line-height: 74px; + color: rgb(119, 119, 119); + width: 100%; + text-align: center; +} + +.dm-camera-mn-toast{position:absolute;font-size:max(1.25vmin,16px);line-height:max(3vmin,32px);padding:0 max(0.5vmin,4px);left:50%;bottom:max(12.5vmin,100px);transform:translateX(-50%);color:#fff;border-radius:max(0.5vmin,4px);background:rgba(100,100,100,0.5);} diff --git a/scenarios/scan-1D-Industrial/README.md b/scenarios/scan-1D-Industrial/README.md index 88b72c19..46471497 100644 --- a/scenarios/scan-1D-Industrial/README.md +++ b/scenarios/scan-1D-Industrial/README.md @@ -1,11 +1,23 @@ -# Scan 1D Industrial +# 🏭 Scan 1D Industrial -This sample demonstrates tuning for industrial 1D barcodes (high-density, damaged, or specialized 1D formats) using the Dynamsoft Barcode Reader (JavaScript edition). +A focused demo for decoding industrial-strength 1D barcodes (high-density, damaged, or specialized barcodes) using the Dynamsoft Barcode Reader (JavaScript edition). The sample demonstrates scanner tuning and UI patterns for robust 1D scanning in demanding environments. ## Included files -- `index.html` — Demo page and UI. -- `ReadOneDIndustrial.json` — Example configuration used by the sample. +- `index.html` — main demo page (camera + UI). +- `ReadOneDIndustrial.json` — example decoder configuration used by the sample. + +## ✨ Features + +- Optimized decoding for dense or damaged 1D barcodes (industrial use) +- Live camera decoding with tuned parameters for resilience +- Example configuration file for quick parameter adjustments + +## 🔧 How it works + +- The page initializes a BarcodeScanner instance with settings optimized for industrial 1D symbols (longer decode windows, direction tolerance, damage-tolerance options). +- Decoder parameters are loaded from `ReadOneDIndustrial.json` so you can tweak thresholds, expected symbologies, and scan regions without changing application code. +- The UI accepts live camera input and shows decoded results. ## Quick start @@ -13,17 +25,16 @@ Opening HTML files directly may not work as expected. Instead, run a local devel 1. Install the [Five Server extension](https://marketplace.visualstudio.com/items?itemName=yandeu.five-server) from the VS Code Marketplace. -2. Right-click on `index.html` and select "Open with Five Server". This will serve the application at `http://127.0.0.1:5500/index.html`. - -3. Allow camera access when prompted and point the camera at a barcode. +2. Right-click on `index.html` and select "Open with Five Server". -## What this sample shows +## 💡 Tips -- Decoder parameters targeted for industrial 1D symbols (damage-tolerance, scan direction). -- Handling low-contrast or distorted barcodes. -- Example configuration and practical tuning tips. +- Increase camera resolution and ensure steady framing for small or dense barcodes. +- Narrow the region-of-interest (ROI) to focus decoding on likely barcode areas and improve throughput. +- Use the included JSON to experiment with parameters (thresholds, expected symbologies, scan direction). -## Notes +## 📌 Notes -- Serve via localhost/HTTPS to enable camera access. -- See the repository root `README.md` for general instructions and API docs. \ No newline at end of file +- Serve via localhost or HTTPS to enable camera access. +- Replace the demo/trial license with a valid Dynamsoft license for extended evaluation or production use. +- See the repository root `README.md` for running instructions and API documentation links. \ No newline at end of file diff --git a/scenarios/scan-1D-Retail/README.md b/scenarios/scan-1D-Retail/README.md index bdf0d3ef..277b2778 100644 --- a/scenarios/scan-1D-Retail/README.md +++ b/scenarios/scan-1D-Retail/README.md @@ -1,11 +1,22 @@ -# Scan 1D Retail +# 🛒 Scan 1D Retail -This sample demonstrates tuning for retail 1D barcodes (high-density, damaged, or specialized 1D formats) using the Dynamsoft Barcode Reader (JavaScript edition). +A demo tuned for retail 1D barcodes (UPC/EAN etc.) demonstrating speed and accuracy trade-offs for checkout-like scenarios. ## Included files -- `index.html` — Demo page and UI. -- `ReadOneDRetail.json` — Example configuration used by the sample. +- `index.html` — demo page (camera + UI). +- `ReadOneDRetail.json` — example decoder configuration for retail 1D formats. + +## ✨ Features + +- Optimized decoding for common retail 1D symbologies +- Fast decode settings for high-throughput scenarios +- Example configuration for quick adjustments + +## 🔧 How it works + +- The scanner uses a retail-focused config to prioritize 1D formats and reduce unnecessary decoding overhead. +- Results appear in a compact UI suitable for POS prototyping; parameters are stored in the JSON file for easy tuning. ## Quick start @@ -13,17 +24,14 @@ Opening HTML files directly may not work as expected. Instead, run a local devel 1. Install the [Five Server extension](https://marketplace.visualstudio.com/items?itemName=yandeu.five-server) from the VS Code Marketplace. -2. Right-click on `index.html` and select "Open with Five Server". This will serve the application at `http://127.0.0.1:5500/index.html`. - -3. Allow camera access when prompted and point the camera at a barcode. +2. Right-click on `index.html` and select "Open with Five Server". -## What this sample shows +## 💡 Tips -- Decoder parameters targeted for retail 1D symbols (damage-tolerance, scan direction). -- Handling low-contrast or distorted barcodes. -- Example configuration and practical tuning tips. +- Use fixed camera mount or consistent hand positioning for fast scans. +- Narrow ROI to the expected barcode area to improve throughput. -## Notes +## 📌 Notes -- Serve via localhost/HTTPS to enable camera access. -- See the repository root `README.md` for general instructions and API docs. \ No newline at end of file +- Serve on localhost/HTTPS to allow camera access. +- Replace the trial/demo license for extended evaluation. \ No newline at end of file diff --git a/scenarios/scan-and-search/README.md b/scenarios/scan-and-search/README.md new file mode 100644 index 00000000..e4908b8a --- /dev/null +++ b/scenarios/scan-and-search/README.md @@ -0,0 +1,39 @@ +# 🔍 Scan and Search + +A demo that scans a barcode and performs a lookup/search operation (product or inventory lookup) using the Dynamsoft Barcode Reader (JavaScript edition). + +## Included files + +- `scan-and-search.html` — single‑file demo (scan UI + search/lookup flow). + +## ✨ Features + +- Scan Barcodes using your device camera +- Search by Text or Barcode input +- Displays mock product data as search results +- Responsive UI with modern styling + +### 🔄 Sample Usage Flow + +1. Click the Scan button to launch the barcode scanner. +2. Once a barcode is detected, its value is displayed along with placeholder product information. +3. Alternatively, type a product name or barcode manually in the input field and click Search. +4. Results are displayed in the Search Result text area. + +## Quick start + +Opening HTML files directly may not work as expected. Instead, run a local development server. Here’s a quick method using [Visual Studio Code](https://code.visualstudio.com/): + +1. Install the [Five Server extension](https://marketplace.visualstudio.com/items?itemName=yandeu.five-server) from the VS Code Marketplace. + +2. Right-click on `index.html` and select "Open with Five Server". + +## 💡 Tips + +- No real backend is connected in this demo; results are mocked. +- You can integrate with a real product API by replacing the placeholder content in the searchResult.value. + +## 📌 Notes + +- Intended as a prototype UX; secure and validate lookups before production use. +- See root `README.md` for running instructions and licensing. \ No newline at end of file diff --git a/scenarios/scan-and-search.html b/scenarios/scan-and-search/scan-and-search.html similarity index 100% rename from scenarios/scan-and-search.html rename to scenarios/scan-and-search/scan-and-search.html diff --git a/scenarios/scan-any-codes/README.md b/scenarios/scan-any-codes/README.md index 678282f7..f344f7e6 100644 --- a/scenarios/scan-any-codes/README.md +++ b/scenarios/scan-any-codes/README.md @@ -1,11 +1,16 @@ -# Scan Any Codes +# 🔀 Scan Any Codes -This sample demonstrates scanning a wide range of barcode formats (1D and 2D) using the Dynamsoft Barcode Reader (JavaScript edition). It shows how to enable multiple formats and tune settings for broad-format detection. +A demo configured to detect a wide range of barcode formats (1D and 2D). Useful when you need broad-format support in one flow. ## Included files -- `index.html` — Demo page (camera & image input) and UI. -- `ReadAllBarcodeFormats.json` — Example configuration used by the sample. +- `index.html` — demo page (camera & image input). +- `ReadAllBarcodeFormats.json` — example configuration for enabling multiple formats. + +## ✨ Features + +- Detect many barcode symbologies (1D + 2D) in a single run +- Example JSON to control enabled formats ## Quick start @@ -13,17 +18,14 @@ Opening HTML files directly may not work as expected. Instead, run a local devel 1. Install the [Five Server extension](https://marketplace.visualstudio.com/items?itemName=yandeu.five-server) from the VS Code Marketplace. -2. Right-click on `index.html` and select "Open with Five Server". This will serve the application at `http://127.0.0.1:5500/index.html`. - -3. Allow camera access when prompted and point the camera at a barcode. +2. Right-click on `index.html` and select "Open with Five Server". -## What this sample shows +## 💡 Tips -- Enabling many barcode formats for broad detection. -- Performance considerations when enabling many formats. -- Using a sample configuration file to manage decoder settings. +- If performance is slow, disable seldom-used formats in the JSON config. +- Use ROI and resolution tuning to balance speed and accuracy. -## Notes +## 📌 Notes -- Run via HTTP(S) or localhost; opening files via `file://` may break module loading or camera permissions. -- See the repository root `README.md` for general instructions and API documentation links. \ No newline at end of file +- Use localhost/HTTPS to enable camera access. +- Adjust the sample configuration for your target deployment. \ No newline at end of file diff --git a/scenarios/scan-any-codes/ReadAllBarcodeFormats.json b/scenarios/scan-any-codes/ReadAllBarcodeFormats.json index 419fb14b..7b84731a 100644 --- a/scenarios/scan-any-codes/ReadAllBarcodeFormats.json +++ b/scenarios/scan-any-codes/ReadAllBarcodeFormats.json @@ -86,9 +86,79 @@ }, { "Name": "task-read-barcodes-decode-image", + "ExpectedBarcodesCount": 999, + "MaxThreadsInOneTask": 1, "BarcodeFormatIds": ["BF_ALL"], - "BaseBarcodeReaderTaskSettingName": "task-read-barcodes-read-rate", - "ExpectedBarcodesCount": 999 + "SectionArray": [ + { + "Section": "ST_BARCODE_LOCALIZATION", + "ImageParameterName": "ip-read-barcodes-read-rate", + "StageArray": [ + { + "Stage": "SST_LOCALIZE_CANDIDATE_BARCODES", + "LocalizationModes": [ + { + "Mode": "LM_CONNECTED_BLOCKS" + }, + { + "Mode": "LM_LINES" + }, + { + "Mode": "LM_STATISTICS" + }, + { + "Mode": "LM_NEURAL_NETWORK" + } + ] + } + ] + }, + { + "Section": "ST_BARCODE_DECODING", + "ImageParameterName": "ip-read-barcodes-read-rate", + "StageArray": [ + { + "Stage": "SST_DECODE_BARCODES", + "DeblurModes": [ + { + "Mode": "DM_BASED_ON_LOC_BIN" + }, + { + "Mode": "DM_THRESHOLD_BINARIZATION" + }, + { + "Mode": "DM_DIRECT_BINARIZATION" + }, + { + "Mode": "DM_NEURAL_NETWORK" + }, + { + "Mode": "DM_SMOOTHING" + }, + { + "Mode": "DM_DEEP_ANALYSIS" + } + ] + }, + { + "Stage": "SST_COMPLEMENT_BARCODE", + "BarcodeComplementModes": [ + { + "Mode": "BCM_GENERAL" + } + ] + }, + { + "Stage": "SST_RESIST_DEFORMATION", + "DeformationResistingModes": [ + { + "Mode" : "DRM_AUTO" + } + ] + } + ] + } + ] } ], "ImageParameterOptions": [ diff --git a/scenarios/scan-common-2D-codes/README.md b/scenarios/scan-common-2D-codes/README.md index e69de29b..0aa7c011 100644 --- a/scenarios/scan-common-2D-codes/README.md +++ b/scenarios/scan-common-2D-codes/README.md @@ -0,0 +1,37 @@ +# 🗂 Scan Common 2D Codes + +A demo focused on decoding common 2D barcode formats (QR, DataMatrix, PDF417, etc.) using the Dynamsoft Barcode Reader (JavaScript edition). + +## Included files + +- `index.html` — demo page (camera & image input). +- `ReadCommon2D.json` — example decoder configuration for common 2D formats. + +## ✨ Features + +- Prioritized decoding for frequent 2D symbologies +- Demo configuration for 2D-specific tuning (ROI, resolution) +- Example JSON to tweak decoder behavior + +## 🔧 How it works + +- The scanner loads a 2D-focused configuration and decodes frames accordingly. +- The demo displays decoded results, format metadata and provides simple controls to adjust ROI or decoder options. + +## Quick start + +Opening HTML files directly may not work as expected. Instead, run a local development server. Here’s a quick method using [Visual Studio Code](https://code.visualstudio.com/): + +1. Install the [Five Server extension](https://marketplace.visualstudio.com/items?itemName=yandeu.five-server) from the VS Code Marketplace. + +2. Right-click on `index.html` and select "Open with Five Server". + +## 💡 Tips + +- Increase camera resolution for dense 2D codes. +- Limit enabled formats if you only need a subset to improve throughput. + +## 📌 Notes + +- Serve on localhost/HTTPS for camera access. +- Replace the trial/demo license with a valid license for extended testing. \ No newline at end of file diff --git a/scenarios/scan-from-distance/README.md b/scenarios/scan-from-distance/README.md index 328a8139..02b79095 100644 --- a/scenarios/scan-from-distance/README.md +++ b/scenarios/scan-from-distance/README.md @@ -1,11 +1,21 @@ -# Scan From Distance +# 🔭 Scan From Distance -This sample demonstrates techniques for scanning barcodes from a distance, including ROI, zoom and resolution tuning with the Dynamsoft Barcode Reader (JavaScript edition). +A demo that demonstrates techniques for scanning barcodes from a distance (ROI, zoom and resolution tuning) using the Dynamsoft Barcode Reader (JavaScript edition). ## Included files -- `index.html` — Demo page (camera & image input) and UI. -- `ReadDistantBarcodes.json` — Example configuration used by the sample. +- `index.html` — demo page (camera + UI). +- `ReadDistantBarcodes.json` — example configuration used by the sample. + +## ✨ Features + +- Camera/ROI/decoder tuning for distant targets +- Example configuration for resolution and ROI adjustments + +## 🔧 How it works + +- The demo adjusts camera resolution and ROI to favor distant targets, and exposes decoder parameters to improve detection at smaller apparent sizes. +- The sample shows common trade-offs and provides an example JSON to reproduce settings. ## Quick start @@ -13,17 +23,14 @@ Opening HTML files directly may not work as expected. Instead, run a local devel 1. Install the [Five Server extension](https://marketplace.visualstudio.com/items?itemName=yandeu.five-server) from the VS Code Marketplace. -2. Right-click on `index.html` and select "Open with Five Server". This will serve the application at `http://127.0.0.1:5500/index.html`. - -3. Allow camera access when prompted and point the camera at a barcode. +2. Right-click on `index.html` and select "Open with Five Server". -## What this sample shows +## 💡 Tips -- Adjusting camera resolution and ROI for distant targets. -- Using zoom/scale strategies and decoder parameters to improve distant scanning. -- Practical trade-offs between resolution and performance. +- Use a tripod or stable mount for distant scanning. +- Increase camera resolution and narrow ROI to target likely barcode areas. -## Notes +## 📌 Notes -- Use a stable mount or tripod for consistent distant scanning results. -- Serve via localhost/HTTPS for camera permissions; see root `README.md` for API docs. \ No newline at end of file +- Serve on localhost/HTTPS to enable camera access. +- For production, pair software tuning with suitable optics/camera hardware. \ No newline at end of file diff --git a/scenarios/scan-qr-code/README.md b/scenarios/scan-qr-code/README.md index ebd3fd54..2b52cd4b 100644 --- a/scenarios/scan-qr-code/README.md +++ b/scenarios/scan-qr-code/README.md @@ -1,36 +1,37 @@ -# Scan QR Code +# 📱 Scan QR Code -This sample demonstrates scanning QR codes from camera video or static images using the Dynamsoft Barcode Reader (JavaScript edition). It focuses on QR-specific tuning and shows how to configure the scanner for best results with common QR scenarios. +A focused demo for scanning QR codes from camera video or static images using the Dynamsoft Barcode Reader (JavaScript edition). Demonstrates QR-specific tuning and configuration. ## Included files -- `index.html` — Demo page (camera & image input) and UI. -- `ReadQR.json` — A `CaptureVisionTemplate` used by the sample, you can adjust the configuration manually if necessary. +- `index.html` — demo page (camera & image input). +- `ReadQR.json` — sample configuration/template used by the demo. -## Quick start +## ✨ Features -Opening HTML files directly may not work as expected. Instead, run a local development server. Here’s a quick method using [Visual Studio Code](https://code.visualstudio.com/): +- Targeted QR decoding for improved performance +- Camera and static image input support +- Loadable JSON configuration for decoder settings -1. Install the [Five Server extension](https://marketplace.visualstudio.com/items?itemName=yandeu.five-server) from the VS Code Marketplace. +## 🔧 How it works -2. Right-click on `index.html` and select "Open with Five Server". This will serve the application at `http://127.0.0.1:5500/index.html`. +- The demo configures the scanner to prioritize QR decoding and applies ROI/resolution adjustments for common QR scenarios. +- Decoded payloads are displayed; configuration can be adjusted via `ReadQR.json`. -3. Allow camera access when prompted and point the camera at a QR code. +## Quick start -## What this sample shows +Opening HTML files directly may not work as expected. Instead, run a local development server. Here’s a quick method using [Visual Studio Code](https://code.visualstudio.com/): + +1. Install the [Five Server extension](https://marketplace.visualstudio.com/items?itemName=yandeu.five-server) from the VS Code Marketplace. -- Enabling QR code decoding and disabling unnecessary formats for faster performance. -- Adjusting region-of-interest (ROI) and camera resolution for different use cases. -- Using the provided `ReadQR.json` for configuration and how to load custom settings. +2. Right-click on `index.html` and select "Open with Five Server". -## Tips +## 💡 Tips -- For best results, ensure good lighting and steady camera framing. -- If scanning from distance, increase camera resolution or adjust ROI/zoom. -- When testing locally, use localhost or HTTPS to allow camera access. +- For small QR symbols increase camera resolution or reduce ROI. +- Good lighting and steady framing improves decode reliability. -## Notes +## 📌 Notes -- Run via HTTP(S) or localhost; opening files via `file://` may break module loading or camera permissions. -- A trial license is included for short evaluation; [request a longer trial](https://www.dynamsoft.com/customer/license/trialLicense?product=dbr&package=js&utm_source=sampleReadme) from Dynamsoft if needed. -- See the repository root `README.md` for general instructions and API documentation links. \ No newline at end of file +- Serve via localhost/HTTPS for camera permissions. +- Replace trial/demo license with a valid Dynamsoft license for extended use. \ No newline at end of file diff --git a/scenarios/show-result-texts-on-the-video/README.md b/scenarios/show-result-texts-on-the-video/README.md new file mode 100644 index 00000000..a72116e8 --- /dev/null +++ b/scenarios/show-result-texts-on-the-video/README.md @@ -0,0 +1,32 @@ +# 🎥 Show Result Texts on the Video + +A demo that overlays decoded barcode text directly onto the live camera video. Useful for UX patterns that require visual confirmation of decoded results in context. + +## Included files + +- `show-result-texts-on-the-video.html` — demo page that overlays decoded text on video. + +## ✨ Features + +- Live camera decoding with on‑video text overlays +- Map decoded bounding boxes to overlay positions +- Visual feedback for multiple simultaneous detections + +## 🔧 How it works + +- The scanner decodes frames and returns results with coordinates. +- The demo maps result coordinates to the video element and renders text labels/boxes at the corresponding positions. +- Labels update in real time as the scanner finds or loses targets. + +## Quick start + +Opening HTML files directly may not work as expected. Instead, run a local development server. Here’s a quick method using [Visual Studio Code](https://code.visualstudio.com/): + +1. Install the [Five Server extension](https://marketplace.visualstudio.com/items?itemName=yandeu.five-server) from the VS Code Marketplace. + +2. Right-click on `index.html` and select "Open with Five Server". + +## 💡 Tips + +- Use steady lighting and keep barcodes within the camera view for stable overlays. +- Run on localhost/HTTPS to allow camera access. \ No newline at end of file diff --git a/scenarios/show-result-texts-on-the-video.html b/scenarios/show-result-texts-on-the-video/show-result-texts-on-the-video.html similarity index 100% rename from scenarios/show-result-texts-on-the-video.html rename to scenarios/show-result-texts-on-the-video/show-result-texts-on-the-video.html From 9f6e5ed57478aa47106de37ca5bee60d9924bc69 Mon Sep 17 00:00:00 2001 From: Justin Date: Fri, 31 Oct 2025 16:53:19 +0800 Subject: [PATCH 198/223] update template --- .../scan-datamatrix-code/ReadDataMatrix.json | 15 +++++++++++++++ .../scan-from-distance/ReadDistantBarcodes.json | 17 +++++++++++++++++ scenarios/scan-qr-code/ReadQR.json | 11 +++++++++++ 3 files changed, 43 insertions(+) diff --git a/scenarios/scan-datamatrix-code/ReadDataMatrix.json b/scenarios/scan-datamatrix-code/ReadDataMatrix.json index 1aa72a10..bad7fe7e 100644 --- a/scenarios/scan-datamatrix-code/ReadDataMatrix.json +++ b/scenarios/scan-datamatrix-code/ReadDataMatrix.json @@ -35,10 +35,24 @@ ] } ], + "BarcodeFormatSpecificationOptions": [ + { + "BarcodeFormatIds": [ + "BF_DATAMATRIX" + ], + "EnableDataMatrixECC000-140" : 1, + "DataMatrixSizeOptions" : + [ + "DMS_ALL" + ], + "Name": "FS_0" + } + ], "BarcodeReaderTaskSettingOptions": [ { "Name": "Task_DataMatrix", "BarcodeFormatIds": ["BF_DATAMATRIX"], + "BarcodeFormatSpecificationNameArray" : ["FS_0"], "ExpectedBarcodesCount": 1, "MaxThreadsInOneTask": 1, "SectionArray": [ @@ -96,6 +110,7 @@ { "Name": "Task_DataMatrix_ReadRate", "BarcodeFormatIds": ["BF_DATAMATRIX"], + "BarcodeFormatSpecificationNameArray" : ["FS_0"], "ExpectedBarcodesCount":999, "MaxThreadsInOneTask": 1, "SectionArray": [ diff --git a/scenarios/scan-from-distance/ReadDistantBarcodes.json b/scenarios/scan-from-distance/ReadDistantBarcodes.json index ed333fe7..2e1b3527 100644 --- a/scenarios/scan-from-distance/ReadDistantBarcodes.json +++ b/scenarios/scan-from-distance/ReadDistantBarcodes.json @@ -16,6 +16,9 @@ "LocalizationModes": [ { "Mode": "LM_CONNECTED_BLOCKS" + }, + { + "Mode": "LM_NEURAL_NETWORK" } ], "Stage": "SST_LOCALIZE_CANDIDATE_BARCODES" @@ -134,5 +137,19 @@ "task_read_distant_barcodes" ] } + ], + "CaptureVisionModelOptions": [ + { + "Name": "OneDLocalization", + "ModelArgs": { + "ImageDimensionThreshold": 3000000 + } + }, + { + "Name": "DataMatrixQRCodeLocalization", + "ModelArgs": { + "ImageDimensionThreshold": 3000000 + } + } ] } \ No newline at end of file diff --git a/scenarios/scan-qr-code/ReadQR.json b/scenarios/scan-qr-code/ReadQR.json index 335cd7d8..7c90b111 100644 --- a/scenarios/scan-qr-code/ReadQR.json +++ b/scenarios/scan-qr-code/ReadQR.json @@ -35,10 +35,20 @@ ] } ], + "BarcodeFormatSpecificationOptions": [ + { + "BarcodeFormatIds": [ + "BF_QR_CODE" + ], + "EnableQRCodeModel1" : 1, + "Name": "FS_0" + } + ], "BarcodeReaderTaskSettingOptions": [ { "Name": "Task_QR", "BarcodeFormatIds": ["BF_QR_CODE"], + "BarcodeFormatSpecificationNameArray" : ["FS_0"], "ExpectedBarcodesCount":1, "MaxThreadsInOneTask": 1, "SectionArray": [ @@ -81,6 +91,7 @@ { "Name": "Task_QR_ReadRate", "BarcodeFormatIds": ["BF_QR_CODE"], + "BarcodeFormatSpecificationNameArray" : ["FS_0"], "ExpectedBarcodesCount": 999, "MaxThreadsInOneTask": 1, "SectionArray": [ From e5ec7b8d055aff21a71259a84118de97a12ab185 Mon Sep 17 00:00:00 2001 From: Justin Date: Mon, 3 Nov 2025 10:16:11 +0800 Subject: [PATCH 199/223] fix scan-any-code template --- scenarios/scan-any-codes/ReadAllBarcodeFormats.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scenarios/scan-any-codes/ReadAllBarcodeFormats.json b/scenarios/scan-any-codes/ReadAllBarcodeFormats.json index 7b84731a..0f725e47 100644 --- a/scenarios/scan-any-codes/ReadAllBarcodeFormats.json +++ b/scenarios/scan-any-codes/ReadAllBarcodeFormats.json @@ -92,7 +92,7 @@ "SectionArray": [ { "Section": "ST_BARCODE_LOCALIZATION", - "ImageParameterName": "ip-read-barcodes-read-rate", + "ImageParameterName": "ip-read-barcodes", "StageArray": [ { "Stage": "SST_LOCALIZE_CANDIDATE_BARCODES", @@ -115,7 +115,7 @@ }, { "Section": "ST_BARCODE_DECODING", - "ImageParameterName": "ip-read-barcodes-read-rate", + "ImageParameterName": "ip-read-barcodes", "StageArray": [ { "Stage": "SST_DECODE_BARCODES", From 14cd7aa694bdde1d9823c4e1b7f81de36c0087a1 Mon Sep 17 00:00:00 2001 From: Justin Date: Mon, 3 Nov 2025 15:52:57 +0800 Subject: [PATCH 200/223] update sample list --- README.md | 30 +++++++++++++++--------------- scenarios/README.md | 6 +++--- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 279250a0..2b324d52 100644 --- a/README.md +++ b/README.md @@ -58,21 +58,21 @@ If you have any questions, feel free to [contact Dynamsoft support](https://www. ### Scenarios -- [pick-one-to-fill/](./scenarios/pick-one-to-fill/) -- [cart-builder](./scenarios/cart-builder.html) -- [scan-and-search](./scenarios/scan-and-search.html) -- [show-result-texts-on-the-video](./scenarios/show-result-texts-on-the-video.html) -- [batch-inventory/](./scenarios/batch-inventory/) -- [read-a-drivers-license/](./scenarios/read-a-drivers-license/) -- [read-and-parse-GS1-AI/](./scenarios/read-and-parse-GS1-AI/) -- [scan-qr-code/](./scenarios/scan-qr-code/) -- [scan-any-codes/](./scenarios/scan-any-codes/) -- [scan-common-2D-codes/](./scenarios/scan-common-2D-codes/) -- [scan-1D-Retail/](./scenarios/scan-1D-Retail/) -- [scan-1D-Industrial/](./scenarios/scan-1D-Industrial/) -- [scan-from-distance/](./scenarios/scan-from-distance/) -- [locate-an-item-with-barcode/](./scenarios/locate-an-item-with-barcode/) -- [debug/](./scenarios/debug/) +- [pick-one-to-fill/](./scenarios/pick-one-to-fill/) — Picking the correct one from multiple candidates by scanning barcodes. +- [cart-builder.html](./scenarios/cart-builder/) — Single-page demo illustrating adding scanned items into a shopping cart. +- [scan-and-search.html](./scenarios/scan-and-search/) — Example that scans a barcode and performs a lookup/search operation. +- [show-result-texts-on-the-video.html](./scenarios/show-result-texts-on-the-video/) — Overlay decoded text on live video while scanning. +- [batch-inventory/](./scenarios/batch-inventory/) — Batch scanning workflow for inventory collection and export. +- [read-a-drivers-license/](./scenarios/read-a-drivers-license/) — Demo for reading and parsing a driver's license image/data. +- [read-and-parse-GS1-AI/](./scenarios/read-and-parse-GS1-AI/) — Example showing GS1 AI parsing and data extraction. +- [scan-qr-code/](./scenarios/scan-qr-code/) — QR code targeted demo and settings. +- [scan-any-codes/](./scenarios/scan-any-codes/) — Demo configured to detect a wide range of barcode formats. +- [scan-common-2D-codes/](./scenarios/scan-common-2D-codes/) — Focused on common 2D barcode formats decoding. +- [scan-1D-Retail/](./scenarios/scan-1D-Retail/) — 1D retail barcode tuning example. +- [scan-1D-Industrial/](./scenarios/scan-1D-Industrial/) — 1D industrial barcode tuning example. +- [scan-from-distance/](./scenarios/scan-from-distance/) — Demo for scanning barcodes from a distance (zoom/ROI tuning). +- [locate-an-item-with-barcode/](./scenarios/locate-an-item-with-barcode/) — UI to help locate items with barcodes in a list or layout. +- [debug/](./scenarios/debug/) — Debug utilities and a small server (frame collector) used for testing and troubleshooting. ### Official Online Demo diff --git a/scenarios/README.md b/scenarios/README.md index 036bf842..9c21591a 100644 --- a/scenarios/README.md +++ b/scenarios/README.md @@ -5,9 +5,9 @@ This directory contains focused scenario samples that show common real-world use Included samples - [pick-one-to-fill/](./pick-one-to-fill/) — Picking the correct one from multiple candidates by scanning barcodes. -- [cart-builder.html](./cart-builder.html) — Single-page demo illustrating adding scanned items into a shopping cart. -- [scan-and-search.html](./scan-and-search.html) — Example that scans a barcode and performs a lookup/search operation. -- [show-result-texts-on-the-video.html](./show-result-texts-on-the-video.html) — Overlay decoded text on live video while scanning. +- [cart-builder.html](./cart-builder/) — Single-page demo illustrating adding scanned items into a shopping cart. +- [scan-and-search.html](./scan-and-search/) — Example that scans a barcode and performs a lookup/search operation. +- [show-result-texts-on-the-video.html](./show-result-texts-on-the-video/) — Overlay decoded text on live video while scanning. - [batch-inventory/](./batch-inventory/) — Batch scanning workflow for inventory collection and export. - [read-a-drivers-license/](./read-a-drivers-license/) — Demo for reading and parsing a driver's license image/data. - [read-and-parse-GS1-AI/](./read-and-parse-GS1-AI/) — Example showing GS1 AI parsing and data extraction. From fc840531281137ad10bdd52d317a96ddfc052767 Mon Sep 17 00:00:00 2001 From: Justin Date: Mon, 3 Nov 2025 17:22:58 +0800 Subject: [PATCH 201/223] update sample index --- README.md | 6 +++--- scenarios/README.md | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 2b324d52..eaf01e2a 100644 --- a/README.md +++ b/README.md @@ -59,9 +59,9 @@ If you have any questions, feel free to [contact Dynamsoft support](https://www. ### Scenarios - [pick-one-to-fill/](./scenarios/pick-one-to-fill/) — Picking the correct one from multiple candidates by scanning barcodes. -- [cart-builder.html](./scenarios/cart-builder/) — Single-page demo illustrating adding scanned items into a shopping cart. -- [scan-and-search.html](./scenarios/scan-and-search/) — Example that scans a barcode and performs a lookup/search operation. -- [show-result-texts-on-the-video.html](./scenarios/show-result-texts-on-the-video/) — Overlay decoded text on live video while scanning. +- [cart-builder/](./scenarios/cart-builder/) — Single-page demo illustrating adding scanned items into a shopping cart. +- [scan-and-search/](./scenarios/scan-and-search/) — Example that scans a barcode and performs a lookup/search operation. +- [show-result-texts-on-the-video/](./scenarios/show-result-texts-on-the-video/) — Overlay decoded text on live video while scanning. - [batch-inventory/](./scenarios/batch-inventory/) — Batch scanning workflow for inventory collection and export. - [read-a-drivers-license/](./scenarios/read-a-drivers-license/) — Demo for reading and parsing a driver's license image/data. - [read-and-parse-GS1-AI/](./scenarios/read-and-parse-GS1-AI/) — Example showing GS1 AI parsing and data extraction. diff --git a/scenarios/README.md b/scenarios/README.md index 9c21591a..08c272cb 100644 --- a/scenarios/README.md +++ b/scenarios/README.md @@ -5,9 +5,9 @@ This directory contains focused scenario samples that show common real-world use Included samples - [pick-one-to-fill/](./pick-one-to-fill/) — Picking the correct one from multiple candidates by scanning barcodes. -- [cart-builder.html](./cart-builder/) — Single-page demo illustrating adding scanned items into a shopping cart. -- [scan-and-search.html](./scan-and-search/) — Example that scans a barcode and performs a lookup/search operation. -- [show-result-texts-on-the-video.html](./show-result-texts-on-the-video/) — Overlay decoded text on live video while scanning. +- [cart-builder/](./cart-builder/) — Single-page demo illustrating adding scanned items into a shopping cart. +- [scan-and-search/](./scan-and-search/) — Example that scans a barcode and performs a lookup/search operation. +- [show-result-texts-on-the-video/](./show-result-texts-on-the-video/) — Overlay decoded text on live video while scanning. - [batch-inventory/](./batch-inventory/) — Batch scanning workflow for inventory collection and export. - [read-a-drivers-license/](./read-a-drivers-license/) — Demo for reading and parsing a driver's license image/data. - [read-and-parse-GS1-AI/](./read-and-parse-GS1-AI/) — Example showing GS1 AI parsing and data extraction. From 0c36fb6b6233b8ad9bff96d7d1212eedbc97689e Mon Sep 17 00:00:00 2001 From: Keillion Date: Wed, 5 Nov 2025 14:05:56 +0800 Subject: [PATCH 202/223] support CC-B --- .../scan-using-rtu-api/index.html | 40 +++++++++++++++---- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/index.html b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/index.html index e116dae6..a76f7d4e 100644 --- a/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/index.html +++ b/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/index.html @@ -92,9 +92,9 @@ while(!parseSuccess){ - let result; + let result, is_EANUPC; try{ - result = await funcOpenScanner(); + [result, is_EANUPC] = await funcOpenScanner(); }catch(ex){ alert(`Scanner error: ${ex.message || ex}`); // if scanner throw error, most time it can't work anymore, just stop then debug @@ -109,7 +109,7 @@ await funcHandleBarcodeImageAndText(result); try{ - await funcParseResult(result); + await funcParseResult(result, is_EANUPC); parseSuccess = true; }catch(ex){ // maybe just because format not supported @@ -124,6 +124,8 @@ }; const funcOpenScanner = async () => { + let is_EANUPC = false; + // Initialize the Dynamsoft Barcode Scanner const barcodeScanner = new Dynamsoft.BarcodeScanner({ // Please don't forget to replace YOUR_LICENSE_KEY_HERE @@ -136,8 +138,22 @@ showCloseButton: false, cameraSwitchControl: "toggleFrontBack", }, - onInitReady: (components) => { + onInitReady: async(components) => { // Do something with the foundational components + + let irr = new Dynamsoft.CVR.IntermediateResultReceiver(); + irr.onDecodedBarcodesReceived=(result, info)=>{ + if(!info.isSectionLevelResult && result.decodedBarcodes.length > 0){ + const barcode = result.decodedBarcodes[0]; + //console.log(barcode) + if(["EAN_8","EAN_13","UPC_A","UPC_E"].includes(barcode.formatString)){ + is_EANUPC = true; + } + } + } + let irrmanager = components.cvRouter.getIntermediateResultManager(); + await irrmanager.addResultReceiver(irr); + // Set the scan laser to be visible in cameraView components.cameraView.setScanLaserVisible(true); @@ -154,7 +170,7 @@ }); // Launch the scanner and wait for the result - return await barcodeScanner.launch(); + return [await barcodeScanner.launch(), is_EANUPC]; }; const funcHandleBarcodeImageAndText = async(result)=>{ @@ -178,15 +194,25 @@ } - const funcParseResult = async(result)=>{ + const funcParseResult = async(result, is_EANUPC)=>{ const barcodeResult = result.barcodeResults[0]; + let bytes = barcodeResult.bytes; const strNotValidGS1AI = "Not a GS1-compliant barcode."; // Parse GS1 barcode let parseResult; try{ - parseResult = await parser.parse(barcodeResult.bytes); + if (is_EANUPC) { + if (barcodeResult.formatString === "GS1_COMPOSITE" ){ + let barcodeText = barcodeResult.text.split('|')[0]; + // if EAN/UPC 's length is less than 14, add zero to the front + let zero_count = 14 - barcodeText.length; + // unshift '01', 48 is '0', 49 is '1' + bytes = new Uint8Array([48, 49, ...new Array(zero_count).fill(48), ...bytes]); + } + } + parseResult = await parser.parse(bytes); }catch(ex){ console.error(ex); throw Error(strNotValidGS1AI); From 65f7fe50de4c6020e1ddc6c19783afb5b2ff38e1 Mon Sep 17 00:00:00 2001 From: Publisher-Dynamsoft <65145280+DMGithubPublisher@users.noreply.github.com> Date: Wed, 5 Nov 2025 14:39:51 +0800 Subject: [PATCH 203/223] Update main.yml use the specific runner --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bf6eb231..e442042f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -14,7 +14,7 @@ jobs: if: ${{ github.ref == 'refs/heads/2025_Nov_re-structure' }} # The type of runner that the job will run on - runs-on: self-hosted + runs-on: [self-hosted, sample-upload] env: ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true From c18ac910b946e3a26107dbdca8a73010d70c16db Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 5 Nov 2025 15:25:23 +0800 Subject: [PATCH 204/223] update anycode sample --- index.html | 2 +- scenarios/README.md | 2 +- .../README.md | 0 .../ReadCommon1DAnd2D.json} | 52 +++++++++---------- .../index.html | 12 ++--- 5 files changed, 34 insertions(+), 34 deletions(-) rename scenarios/{scan-any-codes => scan-common-1D-and-2D}/README.md (100%) rename scenarios/{scan-any-codes/ReadAllBarcodeFormats.json => scan-common-1D-and-2D/ReadCommon1DAnd2D.json} (82%) rename scenarios/{scan-any-codes => scan-common-1D-and-2D}/index.html (90%) diff --git a/index.html b/index.html index 5c0ecb6c..af1652eb 100644 --- a/index.html +++ b/index.html @@ -815,7 +815,7 @@

    Scenario Samples (16)

    -
    Scan Any CodesSource + diff --git a/scenarios/README.md b/scenarios/README.md index 08c272cb..93519345 100644 --- a/scenarios/README.md +++ b/scenarios/README.md @@ -12,7 +12,7 @@ Included samples - [read-a-drivers-license/](./read-a-drivers-license/) — Demo for reading and parsing a driver's license image/data. - [read-and-parse-GS1-AI/](./read-and-parse-GS1-AI/) — Example showing GS1 AI parsing and data extraction. - [scan-qr-code/](./scan-qr-code/) — QR code targeted demo and settings. -- [scan-any-codes/](./scan-any-codes/) — Demo configured to detect a wide range of barcode formats. +- [scan-common-1D-and-2D/](./scan-common-1D-and-2D/) — Demo configured to detect a wide range of barcode formats. - [scan-common-2D-codes/](./scan-common-2D-codes/) — Focused on common 2D barcode formats decoding. - [scan-1D-Retail/](./scan-1D-Retail/) — 1D retail barcode tuning example. - [scan-1D-Industrial/](./scan-1D-Industrial/) — 1D industrial barcode tuning example. diff --git a/scenarios/scan-any-codes/README.md b/scenarios/scan-common-1D-and-2D/README.md similarity index 100% rename from scenarios/scan-any-codes/README.md rename to scenarios/scan-common-1D-and-2D/README.md diff --git a/scenarios/scan-any-codes/ReadAllBarcodeFormats.json b/scenarios/scan-common-1D-and-2D/ReadCommon1DAnd2D.json similarity index 82% rename from scenarios/scan-any-codes/ReadAllBarcodeFormats.json rename to scenarios/scan-common-1D-and-2D/ReadCommon1DAnd2D.json index 0f725e47..3f4a1ac3 100644 --- a/scenarios/scan-any-codes/ReadAllBarcodeFormats.json +++ b/scenarios/scan-common-1D-and-2D/ReadCommon1DAnd2D.json @@ -5,7 +5,7 @@ }, "CaptureVisionTemplates": [ { - "Name": "ReadAllBarcodeFormats", + "Name": "ReadCommon1DAnd2D", "ImageROIProcessingNameArray": [ "roi-read-barcodes" ], @@ -13,9 +13,9 @@ "MaxParallelTasks": 0 }, { - "Name": "ReadAllBarcodeFormats_DecodeImage", + "Name": "ReadCommon1DAnd2D_ReadRate", "ImageROIProcessingNameArray": [ - "roi-read-barcodes-decode-image" + "roi-read-barcodes-read-rate" ], "Timeout": 10000, "MaxParallelTasks": 0 @@ -29,16 +29,15 @@ ] }, { - "Name": "roi-read-barcodes-decode-image", + "Name": "roi-read-barcodes-read-rate", "TaskSettingNameArray": [ - "task-read-barcodes-decode-image" + "task-read-barcodes-read-rate" ] } ], "BarcodeReaderTaskSettingOptions": [ { "Name": "task-read-barcodes", - "BarcodeFormatIds": ["BF_ALL"], "ExpectedBarcodesCount": 0, "MaxThreadsInOneTask": 1, "SectionArray": [ @@ -53,8 +52,8 @@ "Mode": "LM_CONNECTED_BLOCKS" }, { - "Mode": "LM_LINES" - } + "Mode": "LM_SCAN_DIRECTLY" + } ] }, { @@ -67,28 +66,38 @@ "ImageParameterName": "ip-read-barcodes", "StageArray": [ { - "Stage": "SST_DECODE_BARCODES", "DeblurModes": [ { - "Mode": "DM_DIRECT_BINARIZATION" + "Mode": "DM_BASED_ON_LOC_BIN" }, { - "Mode": "DM_NEURAL_NETWORK" + "Mode": "DM_THRESHOLD_BINARIZATION" }, { - "Mode": "DM_DEEP_ANALYSIS" + "Mode": "DM_NEURAL_NETWORK", + "ModelNameArray": [ + "Code128Decoder", + "EAN13Decoder" + ] + }, + { + "Mode": "DM_DEEP_ANALYSIS", + "Methods": ["OneDGeneral","TwoDGeneral"] } - ] + ], + "Stage": "SST_DECODE_BARCODES" } ] } ] }, { - "Name": "task-read-barcodes-decode-image", - "ExpectedBarcodesCount": 999, + "Name": "task-read-barcodes-read-rate", + "ExpectedBarcodesCount": 0, "MaxThreadsInOneTask": 1, - "BarcodeFormatIds": ["BF_ALL"], + "BarcodeFormatIds": [ + "BF_DEFAULT" + ], "SectionArray": [ { "Section": "ST_BARCODE_LOCALIZATION", @@ -99,16 +108,10 @@ "LocalizationModes": [ { "Mode": "LM_CONNECTED_BLOCKS" - }, - { - "Mode": "LM_LINES" - }, - { - "Mode": "LM_STATISTICS" }, { "Mode": "LM_NEURAL_NETWORK" - } + } ] } ] @@ -131,9 +134,6 @@ }, { "Mode": "DM_NEURAL_NETWORK" - }, - { - "Mode": "DM_SMOOTHING" }, { "Mode": "DM_DEEP_ANALYSIS" diff --git a/scenarios/scan-any-codes/index.html b/scenarios/scan-common-1D-and-2D/index.html similarity index 90% rename from scenarios/scan-any-codes/index.html rename to scenarios/scan-common-1D-and-2D/index.html index 898b60d9..f8a151a4 100644 --- a/scenarios/scan-any-codes/index.html +++ b/scenarios/scan-common-1D-and-2D/index.html @@ -5,13 +5,13 @@ - Dynamsoft Barcode Scanner Sample - Scan Any codes + Dynamsoft Barcode Scanner Sample - Scan Common 1D And 2D

    - Scan Any codes + Scan Common 1D And 2D

    @@ -31,10 +31,10 @@

    showFlashButton: true, cameraSwitchControl: "toggleFrontBack", }, - templateFilePath:'./ReadAllBarcodeFormats.json', - utilizedTemplateNames:{"single": "ReadAllBarcodeFormats", - "multi_unique": "ReadAllBarcodeFormats", - "image": "ReadAllBarcodeFormats_DecodeImage"}, + templateFilePath:'./ReadCommon1DAnd2D.json', + utilizedTemplateNames:{"single": "ReadCommon1DAnd2D", + "multi_unique": "ReadCommon1DAnd2D", + "image": "ReadCommon1DAnd2D_ReadRate"}, onInitReady: (components) => { // Set the scan region to a rectangle with percentage values by cameraEnhancer let region = { From 087b705ed032780369b9ecfe8dee95b0896c1d88 Mon Sep 17 00:00:00 2001 From: Justin Date: Wed, 5 Nov 2025 17:40:26 +0800 Subject: [PATCH 205/223] update index page links --- index.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index af1652eb..9104a4d7 100644 --- a/index.html +++ b/index.html @@ -789,9 +789,9 @@

    Scenario Samples (16)

    Workflow Examples
    -
    Cart BuilderSource + -
    Scan and SearchSource + @@ -799,7 +799,7 @@

    Scenario Samples (16)

    - @@ -825,7 +825,7 @@

    Scenario Samples (16)

    - From cdbc2ec07a179adc23440f1d455fdad27a06e231 Mon Sep 17 00:00:00 2001 From: Justin Date: Thu, 6 Nov 2025 09:25:07 +0800 Subject: [PATCH 206/223] fix links in the index page --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index eaf01e2a..0a718871 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ If you have any questions, feel free to [contact Dynamsoft support](https://www. - [read-a-drivers-license/](./scenarios/read-a-drivers-license/) — Demo for reading and parsing a driver's license image/data. - [read-and-parse-GS1-AI/](./scenarios/read-and-parse-GS1-AI/) — Example showing GS1 AI parsing and data extraction. - [scan-qr-code/](./scenarios/scan-qr-code/) — QR code targeted demo and settings. -- [scan-any-codes/](./scenarios/scan-any-codes/) — Demo configured to detect a wide range of barcode formats. +- [scan-common-1D-and-2D/](./scenarios/scan-common-1D-and-2D/) — Demo configured to detect a wide range of barcode formats. - [scan-common-2D-codes/](./scenarios/scan-common-2D-codes/) — Focused on common 2D barcode formats decoding. - [scan-1D-Retail/](./scenarios/scan-1D-Retail/) — 1D retail barcode tuning example. - [scan-1D-Industrial/](./scenarios/scan-1D-Industrial/) — 1D industrial barcode tuning example. From f9591711c56d15057e6a6c48a10f8ec15e66392f Mon Sep 17 00:00:00 2001 From: Justin Date: Fri, 7 Nov 2025 18:13:06 +0800 Subject: [PATCH 207/223] remove space --- scenarios/scan-1D-Industrial/ReadOneDIndustrial.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scenarios/scan-1D-Industrial/ReadOneDIndustrial.json b/scenarios/scan-1D-Industrial/ReadOneDIndustrial.json index 18c61541..c414b31a 100644 --- a/scenarios/scan-1D-Industrial/ReadOneDIndustrial.json +++ b/scenarios/scan-1D-Industrial/ReadOneDIndustrial.json @@ -39,7 +39,7 @@ { "Name": "Task_Industrial", "BarcodeFormatSpecificationNameArray": ["bfs1"], - "BarcodeFormatIds": ["BF_CODE_128", "BF_CODE_39", "BF_ITF", "BF_CODABAR", "BF_MSI_CODE "], + "BarcodeFormatIds": ["BF_CODE_128", "BF_CODE_39", "BF_ITF", "BF_CODABAR", "BF_MSI_CODE"], "ExpectedBarcodesCount":1, "MaxThreadsInOneTask": 1, "SectionArray": [ From 7d9dec005f831feec1b1b7b2f5a43557d4624e39 Mon Sep 17 00:00:00 2001 From: Justin Date: Tue, 11 Nov 2025 13:51:45 +0800 Subject: [PATCH 208/223] update version to 11.2.4000 --- README.md | 2 +- frameworks/angular/scan-using-foundational-api/README.md | 6 +++--- .../angular/scan-using-foundational-api/package.json | 2 +- .../src/app/dynamsoft.config.ts | 2 +- frameworks/angular/scan-using-rtu-api/package.json | 2 +- .../angular/scan-using-rtu-api/src/app/app.component.ts | 2 +- frameworks/blazor/scan-using-foundational-api/README.md | 6 +++--- .../hello-world-blazor/BlazorApp/wwwroot/index.html | 4 ++-- frameworks/blazor/scan-using-rtu-api/wwwroot/index.html | 4 ++-- frameworks/capacitor/scan-using-rtu-api/index.ts | 2 +- frameworks/capacitor/scan-using-rtu-api/package.json | 2 +- frameworks/electron/scan-using-foundational-api/README.md | 6 +++--- frameworks/electron/scan-using-foundational-api/action.js | 2 +- .../electron/scan-using-foundational-api/package.json | 2 +- frameworks/electron/scan-using-rtu-api/index.html | 2 +- frameworks/electron/scan-using-rtu-api/package.json | 2 +- frameworks/es6/scan-using-foundational-api/es6.html | 4 ++-- frameworks/es6/scan-using-rtu-api/es6.html | 4 ++-- .../native-ts/scan-using-foundational-api/package.json | 2 +- frameworks/native-ts/scan-using-rtu-api/index.ts | 2 +- frameworks/native-ts/scan-using-rtu-api/package.json | 2 +- frameworks/next/scan-using-foundational-api/README.md | 6 +++--- .../next/scan-using-foundational-api/dynamsoft.config.ts | 2 +- frameworks/next/scan-using-foundational-api/package.json | 2 +- frameworks/nuxt/scan-using-foundational-api/README.md | 6 +++--- .../nuxt/scan-using-foundational-api/dynamsoft.config.ts | 2 +- frameworks/nuxt/scan-using-foundational-api/package.json | 2 +- frameworks/pwa/scan-using-foundational-api/README.md | 8 ++++---- .../pwa/scan-using-foundational-api/helloworld-pwa.html | 4 ++-- .../pwa/scan-using-foundational-api/service-worker.js | 2 +- frameworks/pwa/scan-using-rtu-api/helloworld-pwa.html | 2 +- frameworks/pwa/scan-using-rtu-api/service-worker.js | 2 +- frameworks/react/scan-using-foundational-api/README.md | 6 +++--- frameworks/react/scan-using-foundational-api/package.json | 2 +- .../scan-using-foundational-api/src/dynamsoft.config.ts | 2 +- frameworks/react/scan-using-rtu-api/package.json | 2 +- frameworks/react/scan-using-rtu-api/src/App.tsx | 2 +- .../requirejs/scan-using-foundational-api/requirejs.html | 4 ++-- frameworks/requirejs/scan-using-rtu-api/requirejs.html | 4 ++-- frameworks/svelte/scan-using-foundational-api/README.md | 6 +++--- .../svelte/scan-using-foundational-api/package.json | 2 +- .../scan-using-foundational-api/src/dynamsoft.config.ts | 2 +- frameworks/svelte/scan-using-rtu-api/package.json | 2 +- frameworks/svelte/scan-using-rtu-api/src/App.svelte | 2 +- frameworks/vue/scan-using-foundational-api/README.md | 6 +++--- frameworks/vue/scan-using-foundational-api/package.json | 2 +- .../scan-using-foundational-api/src/dynamsoft.config.ts | 2 +- frameworks/vue/scan-using-rtu-api/package.json | 2 +- frameworks/vue/scan-using-rtu-api/src/App.vue | 2 +- .../android/app/src/main/assets/decodeBarcodeInVideo.html | 4 ++-- .../ios/dbrjswebview/html/decodeFileInVideo.html | 4 ++-- .../android/app/src/main/assets/decodeBarcodeInVideo.html | 2 +- .../ios/dbrjswebview/html/decodeFileInVideo.html | 2 +- hello-world.html | 2 +- scenarios/batch-inventory/index.html | 2 +- scenarios/cart-builder/cart-builder.html | 2 +- scenarios/debug/public/index.html | 4 ++-- scenarios/locate-an-item-with-barcode/index.html | 4 ++-- scenarios/pick-one-to-fill/index.html | 2 +- scenarios/read-a-drivers-license/index.html | 4 ++-- .../scan-using-foundational-api/index.html | 4 ++-- .../read-and-parse-GS1-AI/scan-using-rtu-api/index.html | 2 +- scenarios/scan-1D-Industrial/index.html | 2 +- scenarios/scan-1D-Retail/index.html | 2 +- scenarios/scan-and-search/scan-and-search.html | 2 +- scenarios/scan-common-1D-and-2D/index.html | 2 +- scenarios/scan-common-2D-codes/index.html | 2 +- scenarios/scan-datamatrix-code/index.html | 2 +- scenarios/scan-from-distance/index.html | 2 +- scenarios/scan-qr-code/index.html | 2 +- .../show-result-texts-on-the-video.html | 4 ++-- 71 files changed, 104 insertions(+), 104 deletions(-) diff --git a/README.md b/README.md index 0a718871..51128d49 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ A default license is included which allows you to test the sample apps for up to ## Documentation -For the developer guide and full API reference of Dynamsoft Barcode Reader JavaScript library, please check out the [documentation](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/?ver=11.2.2000&utm_source=sampleReadme). +For the developer guide and full API reference of Dynamsoft Barcode Reader JavaScript library, please check out the [documentation](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/?ver=11.2.4000&utm_source=sampleReadme). ## Support diff --git a/frameworks/angular/scan-using-foundational-api/README.md b/frameworks/angular/scan-using-foundational-api/README.md index e664cff0..34bfdabe 100644 --- a/frameworks/angular/scan-using-foundational-api/README.md +++ b/frameworks/angular/scan-using-foundational-api/README.md @@ -2,7 +2,7 @@ [Angular](https://angular.dev/) is one of the most popular and mature JavaScript frameworks. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into an Angular application. Note that in this sample, `TypeScript` is used. -In this guide, we will be using [`dynamsoft-barcode-reader-bundle 11.2.2000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/11.2.2000). +In this guide, we will be using [`dynamsoft-barcode-reader-bundle 11.2.4000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/11.2.4000). > Note: > @@ -61,7 +61,7 @@ Below is the configuration used for this sample. ```cmd cd my-app -npm install dynamsoft-barcode-reader-bundle@11.2.2000 -E +npm install dynamsoft-barcode-reader-bundle@11.2.4000 -E ``` ## Start to implement @@ -86,7 +86,7 @@ LicenseManager.initLicense('DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9', true); /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.2000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. + * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.4000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. * LICENSE ALERT - THE END */ diff --git a/frameworks/angular/scan-using-foundational-api/package.json b/frameworks/angular/scan-using-foundational-api/package.json index 047fed17..38257365 100644 --- a/frameworks/angular/scan-using-foundational-api/package.json +++ b/frameworks/angular/scan-using-foundational-api/package.json @@ -18,7 +18,7 @@ "@angular/platform-browser": "^17.3.0", "@angular/platform-browser-dynamic": "^17.3.0", "@angular/router": "^17.3.0", - "dynamsoft-barcode-reader-bundle": "11.2.2000", + "dynamsoft-barcode-reader-bundle": "11.2.4000", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.14.3" diff --git a/frameworks/angular/scan-using-foundational-api/src/app/dynamsoft.config.ts b/frameworks/angular/scan-using-foundational-api/src/app/dynamsoft.config.ts index 486d2984..c9a00589 100644 --- a/frameworks/angular/scan-using-foundational-api/src/app/dynamsoft.config.ts +++ b/frameworks/angular/scan-using-foundational-api/src/app/dynamsoft.config.ts @@ -15,7 +15,7 @@ LicenseManager.initLicense('DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9', { /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.2000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. + * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.4000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. * LICENSE ALERT - THE END */ diff --git a/frameworks/angular/scan-using-rtu-api/package.json b/frameworks/angular/scan-using-rtu-api/package.json index a8a6e528..ec3245cf 100644 --- a/frameworks/angular/scan-using-rtu-api/package.json +++ b/frameworks/angular/scan-using-rtu-api/package.json @@ -16,7 +16,7 @@ "@angular/platform-browser": "^19.2.0", "@angular/platform-browser-dynamic": "^19.2.0", "@angular/router": "^19.2.0", - "dynamsoft-barcode-reader-bundle": "11.2.2000", + "dynamsoft-barcode-reader-bundle": "11.2.4000", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" diff --git a/frameworks/angular/scan-using-rtu-api/src/app/app.component.ts b/frameworks/angular/scan-using-rtu-api/src/app/app.component.ts index 88a13926..db4bb914 100644 --- a/frameworks/angular/scan-using-rtu-api/src/app/app.component.ts +++ b/frameworks/angular/scan-using-rtu-api/src/app/app.component.ts @@ -23,7 +23,7 @@ export class AppComponent { container: this.barcodeScannerViewRef.nativeElement, // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. - uiPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.2.2000/dist/ui/barcode-scanner.ui.xml", + uiPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.2.4000/dist/ui/barcode-scanner.ui.xml", // showUploadImageButton: true, // scannerViewConfig: { diff --git a/frameworks/blazor/scan-using-foundational-api/README.md b/frameworks/blazor/scan-using-foundational-api/README.md index 3053e2f5..770df583 100644 --- a/frameworks/blazor/scan-using-foundational-api/README.md +++ b/frameworks/blazor/scan-using-foundational-api/README.md @@ -2,7 +2,7 @@ [Blazor](https://dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blazor) is a framework for building interactive client-side web apps with .NET and C#. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a Blazor application using [JavaScript Interlop](https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/call-javascript-from-dotnet?view=aspnetcore-8.0#invoke-js-functions). -In this guide, we will be using [`dynamsoft-barcode-reader-bundle 11.2.2000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/11.2.2000). We also used .NET 8.0 (version 8.0.8) to develop this sample. To ensure the sample app runs properly, please refer to this guide to update your .NET installation - https://learn.microsoft.com/en-us/dotnet/core/install/upgrade. +In this guide, we will be using [`dynamsoft-barcode-reader-bundle 11.2.4000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/11.2.4000). We also used .NET 8.0 (version 8.0.8) to develop this sample. To ensure the sample app runs properly, please refer to this guide to update your .NET installation - https://learn.microsoft.com/en-us/dotnet/core/install/upgrade. > Note: > @@ -283,7 +283,7 @@ Inside the `wwwroot\index.html` file, we will initialize the license and necessa ... - + - + + diff --git a/frameworks/electron/scan-using-rtu-api/package.json b/frameworks/electron/scan-using-rtu-api/package.json index 10a71b39..96e25a02 100644 --- a/frameworks/electron/scan-using-rtu-api/package.json +++ b/frameworks/electron/scan-using-rtu-api/package.json @@ -21,6 +21,6 @@ "electron": "^26.4.1" }, "dependencies": { - "dynamsoft-barcode-reader-bundle": "11.2.2000" + "dynamsoft-barcode-reader-bundle": "11.2.4000" } } diff --git a/frameworks/es6/scan-using-foundational-api/es6.html b/frameworks/es6/scan-using-foundational-api/es6.html index 5168e648..41374119 100644 --- a/frameworks/es6/scan-using-foundational-api/es6.html +++ b/frameworks/es6/scan-using-foundational-api/es6.html @@ -22,7 +22,7 @@

    Hello World for ES6 (Decode via Camera)

    CameraView, CameraEnhancer, MultiFrameResultCrossFilter, - } from "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.2.2000/dist/dbr.bundle.mjs"; + } from "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.2.4000/dist/dbr.bundle.mjs"; /** LICENSE ALERT - README * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. @@ -33,7 +33,7 @@

    Hello World for ES6 (Decode via Camera)

    /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.2000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. + * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.4000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. * LICENSE ALERT - THE END */ diff --git a/frameworks/es6/scan-using-rtu-api/es6.html b/frameworks/es6/scan-using-rtu-api/es6.html index 964fe893..555836ca 100644 --- a/frameworks/es6/scan-using-rtu-api/es6.html +++ b/frameworks/es6/scan-using-rtu-api/es6.html @@ -17,7 +17,7 @@

    + + + diff --git a/frameworks/pwa/scan-using-rtu-api/service-worker.js b/frameworks/pwa/scan-using-rtu-api/service-worker.js index 53258c2b..3e56f3bc 100644 --- a/frameworks/pwa/scan-using-rtu-api/service-worker.js +++ b/frameworks/pwa/scan-using-rtu-api/service-worker.js @@ -1,5 +1,5 @@ const engineResourcePaths = { - dbrBundle: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.2.2000/dist/", + dbrBundle: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.2.4000/dist/", }; // Files to cache diff --git a/frameworks/react/scan-using-foundational-api/README.md b/frameworks/react/scan-using-foundational-api/README.md index 35e37e1f..10202715 100644 --- a/frameworks/react/scan-using-foundational-api/README.md +++ b/frameworks/react/scan-using-foundational-api/README.md @@ -2,7 +2,7 @@ [React](https://reactjs.org/) is a JavaScript library meant explicitly for creating interactive UIs. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a React application. Note that in this sample we will use `TypeScript` and [Hooks](https://reactjs.org/docs/hooks-intro.html). Also, there is another sample `react` defining components as classes in React. -In this guide, we will be using [`dynamsoft-barcode-reader-bundle 11.2.2000](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/11.2.2000). +In this guide, we will be using [`dynamsoft-barcode-reader-bundle 11.2.4000](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/11.2.4000). > Note: > @@ -44,7 +44,7 @@ npx create-react-app my-app --template typescript ```cmd cd my-app -npm install dynamsoft-barcode-reader-bundle@11.2.2000 -E +npm install dynamsoft-barcode-reader-bundle@11.2.4000 -E ``` ## Start to implement @@ -71,7 +71,7 @@ LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", { /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.2000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. + * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.4000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. * LICENSE ALERT - THE END */ diff --git a/frameworks/react/scan-using-foundational-api/package.json b/frameworks/react/scan-using-foundational-api/package.json index 88d41eab..465c9542 100644 --- a/frameworks/react/scan-using-foundational-api/package.json +++ b/frameworks/react/scan-using-foundational-api/package.json @@ -11,7 +11,7 @@ "@types/node": "^16.18.99", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", - "dynamsoft-barcode-reader-bundle": "11.2.2000", + "dynamsoft-barcode-reader-bundle": "11.2.4000", "react": "^18.3.1", "react-dom": "^18.3.1", "react-scripts": "5.0.1", diff --git a/frameworks/react/scan-using-foundational-api/src/dynamsoft.config.ts b/frameworks/react/scan-using-foundational-api/src/dynamsoft.config.ts index 8e0e916b..bc2c9faa 100644 --- a/frameworks/react/scan-using-foundational-api/src/dynamsoft.config.ts +++ b/frameworks/react/scan-using-foundational-api/src/dynamsoft.config.ts @@ -15,7 +15,7 @@ LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", { /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.2000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. + * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.4000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. * LICENSE ALERT - THE END */ diff --git a/frameworks/react/scan-using-rtu-api/package.json b/frameworks/react/scan-using-rtu-api/package.json index f3e5bfad..17b99ee0 100644 --- a/frameworks/react/scan-using-rtu-api/package.json +++ b/frameworks/react/scan-using-rtu-api/package.json @@ -9,7 +9,7 @@ "preview": "vite preview" }, "dependencies": { - "dynamsoft-barcode-reader-bundle": "11.2.2000", + "dynamsoft-barcode-reader-bundle": "11.2.4000", "react": "^19.1.1", "react-dom": "^19.1.1" }, diff --git a/frameworks/react/scan-using-rtu-api/src/App.tsx b/frameworks/react/scan-using-rtu-api/src/App.tsx index 5bb2ec8c..aa450e03 100644 --- a/frameworks/react/scan-using-rtu-api/src/App.tsx +++ b/frameworks/react/scan-using-rtu-api/src/App.tsx @@ -18,7 +18,7 @@ function App() { container: barcodeScannerViewRef.current!, // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. - uiPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.2.2000/dist/ui/barcode-scanner.ui.xml", + uiPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.2.4000/dist/ui/barcode-scanner.ui.xml", // showUploadImageButton: true, // scannerViewConfig: { diff --git a/frameworks/requirejs/scan-using-foundational-api/requirejs.html b/frameworks/requirejs/scan-using-foundational-api/requirejs.html index aa5f9257..05c6ca12 100644 --- a/frameworks/requirejs/scan-using-foundational-api/requirejs.html +++ b/frameworks/requirejs/scan-using-foundational-api/requirejs.html @@ -18,7 +18,7 @@

    Hello World for RequireJS (Decode via Camera)

    + + + diff --git a/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/html/decodeFileInVideo.html b/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/html/decodeFileInVideo.html index 0e965cea..a7b6b8f2 100644 --- a/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/html/decodeFileInVideo.html +++ b/frameworks/webview/scan-using-rtu-api/ios/dbrjswebview/html/decodeFileInVideo.html @@ -17,7 +17,7 @@

    - + diff --git a/hello-world.html b/hello-world.html index f276587d..21c3103f 100644 --- a/hello-world.html +++ b/hello-world.html @@ -17,7 +17,7 @@

    - + diff --git a/scenarios/batch-inventory/index.html b/scenarios/batch-inventory/index.html index 6422384c..3f4467fd 100644 --- a/scenarios/batch-inventory/index.html +++ b/scenarios/batch-inventory/index.html @@ -7,7 +7,7 @@ Batch Inventory with BarcodeScanner - + diff --git a/scenarios/cart-builder/cart-builder.html b/scenarios/cart-builder/cart-builder.html index d4353b30..b5f39afd 100644 --- a/scenarios/cart-builder/cart-builder.html +++ b/scenarios/cart-builder/cart-builder.html @@ -7,7 +7,7 @@ List-Builder - Scan to Cart Simulation - + diff --git a/scenarios/debug/public/index.html b/scenarios/debug/public/index.html index 45d82f6b..88fef2e0 100644 --- a/scenarios/debug/public/index.html +++ b/scenarios/debug/public/index.html @@ -22,7 +22,7 @@

    Read Barcodes from Camera - Debug


    - + + @@ -318,7 +318,7 @@
    /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.2000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. + * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.4000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. * LICENSE ALERT - THE END */ diff --git a/scenarios/pick-one-to-fill/index.html b/scenarios/pick-one-to-fill/index.html index 5bbb54f7..49cfe1c4 100644 --- a/scenarios/pick-one-to-fill/index.html +++ b/scenarios/pick-one-to-fill/index.html @@ -7,7 +7,7 @@ Pick One To Fill with BarcodeScanner - + diff --git a/scenarios/read-a-drivers-license/index.html b/scenarios/read-a-drivers-license/index.html index 2c6d615c..89bfb537 100644 --- a/scenarios/read-a-drivers-license/index.html +++ b/scenarios/read-a-drivers-license/index.html @@ -49,7 +49,7 @@

    Read a Driver's License

    - + @@ -63,7 +63,7 @@

    Read a Driver's License

    /** * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.2000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. + * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.4000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. * LICENSE ALERT - THE END */ diff --git a/scenarios/read-and-parse-GS1-AI/scan-using-foundational-api/index.html b/scenarios/read-and-parse-GS1-AI/scan-using-foundational-api/index.html index f1fc7015..798586eb 100644 --- a/scenarios/read-and-parse-GS1-AI/scan-using-foundational-api/index.html +++ b/scenarios/read-and-parse-GS1-AI/scan-using-foundational-api/index.html @@ -50,7 +50,7 @@

    Read a GS1-AI

    - + + + diff --git a/scenarios/scan-1D-Retail/index.html b/scenarios/scan-1D-Retail/index.html index 470a1d82..ace180a0 100644 --- a/scenarios/scan-1D-Retail/index.html +++ b/scenarios/scan-1D-Retail/index.html @@ -17,7 +17,7 @@

    - + diff --git a/scenarios/scan-and-search/scan-and-search.html b/scenarios/scan-and-search/scan-and-search.html index 1fcf4aff..ccdb207c 100644 --- a/scenarios/scan-and-search/scan-and-search.html +++ b/scenarios/scan-and-search/scan-and-search.html @@ -7,7 +7,7 @@ Scan & Search with BarcodeScanner - + diff --git a/scenarios/scan-common-1D-and-2D/index.html b/scenarios/scan-common-1D-and-2D/index.html index f8a151a4..51cdcae1 100644 --- a/scenarios/scan-common-1D-and-2D/index.html +++ b/scenarios/scan-common-1D-and-2D/index.html @@ -17,7 +17,7 @@

    - + diff --git a/scenarios/scan-common-2D-codes/index.html b/scenarios/scan-common-2D-codes/index.html index 8a52c6ce..cf2412f6 100644 --- a/scenarios/scan-common-2D-codes/index.html +++ b/scenarios/scan-common-2D-codes/index.html @@ -17,7 +17,7 @@

    - + diff --git a/scenarios/scan-datamatrix-code/index.html b/scenarios/scan-datamatrix-code/index.html index a6daa3c1..f4048818 100644 --- a/scenarios/scan-datamatrix-code/index.html +++ b/scenarios/scan-datamatrix-code/index.html @@ -17,7 +17,7 @@

    - + diff --git a/scenarios/scan-from-distance/index.html b/scenarios/scan-from-distance/index.html index c745de41..5f9cc5be 100644 --- a/scenarios/scan-from-distance/index.html +++ b/scenarios/scan-from-distance/index.html @@ -17,7 +17,7 @@

    - + diff --git a/scenarios/scan-qr-code/index.html b/scenarios/scan-qr-code/index.html index 8bae3240..6b1f64de 100644 --- a/scenarios/scan-qr-code/index.html +++ b/scenarios/scan-qr-code/index.html @@ -17,7 +17,7 @@

    - + diff --git a/scenarios/show-result-texts-on-the-video/show-result-texts-on-the-video.html b/scenarios/show-result-texts-on-the-video/show-result-texts-on-the-video.html index dbee3cbb..09791187 100644 --- a/scenarios/show-result-texts-on-the-video/show-result-texts-on-the-video.html +++ b/scenarios/show-result-texts-on-the-video/show-result-texts-on-the-video.html @@ -45,7 +45,7 @@

    Display Barcode Results as Video Overlays

    Scan barcodes to display results as overlays on video

    - + - - + From 6e5440d56a9ef4fc15ddbaa0316f7ab859b9c4a4 Mon Sep 17 00:00:00 2001 From: Tom Kent Date: Fri, 14 Nov 2025 16:44:16 -0800 Subject: [PATCH 213/223] Fix duplicate project names and Android applicationId conflicts - Fix duplicate Android applicationId for both webview projects: - foundational: com.dynamsoft.dbrjswebview.foundational - rtu: com.dynamsoft.dbrjswebview.rtu - Fix duplicate Android rootProject names in settings.gradle - Fix duplicate package.json names: - capacitor: dbrjs-capacitor-rtu - native-ts: dbrjs-native-ts-rtu - electron foundational: dbrjs-electron-foundational - electron rtu: dbrjs-electron-rtu - svelte foundational: dbrjs-svelte-foundational - svelte rtu: dbrjs-svelte-rtu Resolves IDE/Gradle workspace conflicts and console errors --- frameworks/capacitor/scan-using-rtu-api/package.json | 2 +- frameworks/electron/scan-using-foundational-api/package.json | 2 +- frameworks/electron/scan-using-rtu-api/package.json | 2 +- frameworks/native-ts/scan-using-rtu-api/package.json | 2 +- frameworks/svelte/scan-using-foundational-api/package.json | 2 +- frameworks/svelte/scan-using-rtu-api/package.json | 2 +- .../scan-using-foundational-api/android/app/build.gradle | 4 ++-- .../scan-using-foundational-api/android/settings.gradle | 2 +- .../webview/scan-using-rtu-api/android/app/build.gradle | 4 ++-- frameworks/webview/scan-using-rtu-api/android/settings.gradle | 2 +- 10 files changed, 12 insertions(+), 12 deletions(-) diff --git a/frameworks/capacitor/scan-using-rtu-api/package.json b/frameworks/capacitor/scan-using-rtu-api/package.json index 120fc430..592e4268 100644 --- a/frameworks/capacitor/scan-using-rtu-api/package.json +++ b/frameworks/capacitor/scan-using-rtu-api/package.json @@ -1,5 +1,5 @@ { - "name": "dbrjs-capacitor", + "name": "dbrjs-capacitor-rtu", "version": "1.0.0", "description": "", "main": "index.js", diff --git a/frameworks/electron/scan-using-foundational-api/package.json b/frameworks/electron/scan-using-foundational-api/package.json index 96e25a02..131d56f7 100644 --- a/frameworks/electron/scan-using-foundational-api/package.json +++ b/frameworks/electron/scan-using-foundational-api/package.json @@ -1,5 +1,5 @@ { - "name": "dbrjs-electron-sample", + "name": "dbrjs-electron-foundational", "version": "1.2.0", "description": "How to read barcodes from a video input in an Electron App", "main": "main.js", diff --git a/frameworks/electron/scan-using-rtu-api/package.json b/frameworks/electron/scan-using-rtu-api/package.json index 96e25a02..4d6bf7ab 100644 --- a/frameworks/electron/scan-using-rtu-api/package.json +++ b/frameworks/electron/scan-using-rtu-api/package.json @@ -1,5 +1,5 @@ { - "name": "dbrjs-electron-sample", + "name": "dbrjs-electron-rtu", "version": "1.2.0", "description": "How to read barcodes from a video input in an Electron App", "main": "main.js", diff --git a/frameworks/native-ts/scan-using-rtu-api/package.json b/frameworks/native-ts/scan-using-rtu-api/package.json index 03b5ce56..e58f5b55 100644 --- a/frameworks/native-ts/scan-using-rtu-api/package.json +++ b/frameworks/native-ts/scan-using-rtu-api/package.json @@ -1,5 +1,5 @@ { - "name": "dbrjs-capacitor", + "name": "dbrjs-native-ts-rtu", "version": "1.0.0", "description": "", "main": "index.js", diff --git a/frameworks/svelte/scan-using-foundational-api/package.json b/frameworks/svelte/scan-using-foundational-api/package.json index 7100687f..127bcdd0 100644 --- a/frameworks/svelte/scan-using-foundational-api/package.json +++ b/frameworks/svelte/scan-using-foundational-api/package.json @@ -1,5 +1,5 @@ { - "name": "dbrjs-svelte-sample", + "name": "dbrjs-svelte-foundational", "private": true, "version": "0.0.0", "type": "module", diff --git a/frameworks/svelte/scan-using-rtu-api/package.json b/frameworks/svelte/scan-using-rtu-api/package.json index 7100687f..8dd81d20 100644 --- a/frameworks/svelte/scan-using-rtu-api/package.json +++ b/frameworks/svelte/scan-using-rtu-api/package.json @@ -1,5 +1,5 @@ { - "name": "dbrjs-svelte-sample", + "name": "dbrjs-svelte-rtu", "private": true, "version": "0.0.0", "type": "module", diff --git a/frameworks/webview/scan-using-foundational-api/android/app/build.gradle b/frameworks/webview/scan-using-foundational-api/android/app/build.gradle index 33d838de..083a80d3 100644 --- a/frameworks/webview/scan-using-foundational-api/android/app/build.gradle +++ b/frameworks/webview/scan-using-foundational-api/android/app/build.gradle @@ -4,11 +4,11 @@ plugins { } android { - namespace 'com.dynamsoft.dbrjswebview' + namespace 'com.dynamsoft.dbrjswebview.foundational' compileSdk 33 defaultConfig { - applicationId "com.dynamsoft.dbrjswebview" + applicationId "com.dynamsoft.dbrjswebview.foundational" minSdk 19 targetSdk 33 versionCode 1 diff --git a/frameworks/webview/scan-using-foundational-api/android/settings.gradle b/frameworks/webview/scan-using-foundational-api/android/settings.gradle index e5f9d85d..f3df45df 100644 --- a/frameworks/webview/scan-using-foundational-api/android/settings.gradle +++ b/frameworks/webview/scan-using-foundational-api/android/settings.gradle @@ -12,5 +12,5 @@ dependencyResolutionManagement { mavenCentral() } } -rootProject.name = "Dynamsoft Barcode" +rootProject.name = "Dynamsoft Barcode - Foundational API" include ':app' diff --git a/frameworks/webview/scan-using-rtu-api/android/app/build.gradle b/frameworks/webview/scan-using-rtu-api/android/app/build.gradle index 33d838de..f115c819 100644 --- a/frameworks/webview/scan-using-rtu-api/android/app/build.gradle +++ b/frameworks/webview/scan-using-rtu-api/android/app/build.gradle @@ -4,11 +4,11 @@ plugins { } android { - namespace 'com.dynamsoft.dbrjswebview' + namespace 'com.dynamsoft.dbrjswebview.rtu' compileSdk 33 defaultConfig { - applicationId "com.dynamsoft.dbrjswebview" + applicationId "com.dynamsoft.dbrjswebview.rtu" minSdk 19 targetSdk 33 versionCode 1 diff --git a/frameworks/webview/scan-using-rtu-api/android/settings.gradle b/frameworks/webview/scan-using-rtu-api/android/settings.gradle index e5f9d85d..4b8a48f1 100644 --- a/frameworks/webview/scan-using-rtu-api/android/settings.gradle +++ b/frameworks/webview/scan-using-rtu-api/android/settings.gradle @@ -12,5 +12,5 @@ dependencyResolutionManagement { mavenCentral() } } -rootProject.name = "Dynamsoft Barcode" +rootProject.name = "Dynamsoft Barcode - RTU API" include ':app' From 815e55b1177c113dd0987f87f3f349a719383c40 Mon Sep 17 00:00:00 2001 From: Tom Kent Date: Fri, 14 Nov 2025 16:56:57 -0800 Subject: [PATCH 214/223] Update dependencies to fix security vulnerabilities - Update electron from ^26.4.1 to ^33.2.0 (fixes 4 medium severity issues) - ASAR Integrity Bypass via resource modification - Heap Buffer Overflow in NativeImage - Update vite from ^5.1.6 to ^6.0.5 (fixes 2 low severity issues) - Middleware file serving issue - server.fs settings not applied to HTML files - Update multer from ^1.4.2 to ^1.4.5-lts.1 (fixes 1 high severity issue) - Denial of Service via memory leaks from unclosed streams Resolves GitHub Dependabot alerts #36, #37, #42, #43, #44, #47, #48 --- frameworks/electron/scan-using-foundational-api/package.json | 2 +- frameworks/electron/scan-using-rtu-api/package.json | 2 +- frameworks/svelte/scan-using-foundational-api/package.json | 2 +- frameworks/svelte/scan-using-rtu-api/package.json | 2 +- scenarios/debug/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frameworks/electron/scan-using-foundational-api/package.json b/frameworks/electron/scan-using-foundational-api/package.json index 131d56f7..5f6d1d80 100644 --- a/frameworks/electron/scan-using-foundational-api/package.json +++ b/frameworks/electron/scan-using-foundational-api/package.json @@ -18,7 +18,7 @@ }, "homepage": "https://github.com/Dynamsoft/barcode-reader-javascript-samples#readme", "devDependencies": { - "electron": "^26.4.1" + "electron": "^33.2.0" }, "dependencies": { "dynamsoft-barcode-reader-bundle": "11.2.4000" diff --git a/frameworks/electron/scan-using-rtu-api/package.json b/frameworks/electron/scan-using-rtu-api/package.json index 4d6bf7ab..9cbd8e51 100644 --- a/frameworks/electron/scan-using-rtu-api/package.json +++ b/frameworks/electron/scan-using-rtu-api/package.json @@ -18,7 +18,7 @@ }, "homepage": "https://github.com/Dynamsoft/barcode-reader-javascript-samples#readme", "devDependencies": { - "electron": "^26.4.1" + "electron": "^33.2.0" }, "dependencies": { "dynamsoft-barcode-reader-bundle": "11.2.4000" diff --git a/frameworks/svelte/scan-using-foundational-api/package.json b/frameworks/svelte/scan-using-foundational-api/package.json index 127bcdd0..2923e632 100644 --- a/frameworks/svelte/scan-using-foundational-api/package.json +++ b/frameworks/svelte/scan-using-foundational-api/package.json @@ -19,6 +19,6 @@ "svelte-check": "^3.6.6", "tslib": "^2.6.2", "typescript": "^5.2.2", - "vite": "^5.1.6" + "vite": "^6.0.5" } } diff --git a/frameworks/svelte/scan-using-rtu-api/package.json b/frameworks/svelte/scan-using-rtu-api/package.json index 8dd81d20..55d62db7 100644 --- a/frameworks/svelte/scan-using-rtu-api/package.json +++ b/frameworks/svelte/scan-using-rtu-api/package.json @@ -19,6 +19,6 @@ "svelte-check": "^3.6.6", "tslib": "^2.6.2", "typescript": "^5.2.2", - "vite": "^5.1.6" + "vite": "^6.0.5" } } diff --git a/scenarios/debug/package.json b/scenarios/debug/package.json index 9eec8064..13ff7737 100644 --- a/scenarios/debug/package.json +++ b/scenarios/debug/package.json @@ -11,6 +11,6 @@ "dependencies": { "cors": "^2.8.5", "express": "^4.17.1", - "multer": "^1.4.2" + "multer": "^1.4.5-lts.1" } } From adb473fcb4714597a3fac6f70593b5bc784fa3ae Mon Sep 17 00:00:00 2001 From: Justin Date: Tue, 18 Nov 2025 16:42:55 +0800 Subject: [PATCH 215/223] add VIN sample folder --- README.md | 1 + index.html | 14 +++++- scenarios/README.md | 2 + scenarios/read-a-drivers-license/README.md | 2 +- .../{read_and_parse_dl.json => read_dl.json} | 0 scenarios/read-vin/README.md | 40 ++++++++++++++++++ scenarios/read-vin/SampleVIN.png | Bin 0 -> 264997 bytes 7 files changed, 56 insertions(+), 3 deletions(-) rename scenarios/read-a-drivers-license/{read_and_parse_dl.json => read_dl.json} (100%) create mode 100644 scenarios/read-vin/README.md create mode 100644 scenarios/read-vin/SampleVIN.png diff --git a/README.md b/README.md index 1f5c7063..37ea01c4 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,7 @@ If you have any questions, feel free to [contact Dynamsoft support](https://www. - [show-result-texts-on-the-video/](./scenarios/show-result-texts-on-the-video/) — Overlay decoded text on live video while scanning. - [batch-inventory/](./scenarios/batch-inventory/) — Batch scanning workflow for inventory collection and export. - [read-a-drivers-license/](./scenarios/read-a-drivers-license/) — Demo for reading and parsing a driver's license image/data. +- [read-vin/](./scenarios/read-vin/) — Demo for reading and parsing a VIN(vehicle identification number) code. - [read-and-parse-GS1-AI/](./scenarios/read-and-parse-GS1-AI/) — Example showing GS1 AI parsing and data extraction. - [scan-qr-code/](./scenarios/scan-qr-code/) — QR code targeted demo and settings. - [scan-common-1D-and-2D/](./scenarios/scan-common-1D-and-2D/) — Demo configured to detect a wide range of barcode formats. diff --git a/index.html b/index.html index d2411b12..41113b52 100644 --- a/index.html +++ b/index.html @@ -29,7 +29,6 @@ - - - -
    -

    🛒 Scan Barcode to Add Items to Cart

    -
    - - - - - - - - -
    -

    Simulated Shopping Cart

    -
    -

    No items in cart. Start scanning!

    -
    -
    - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-multiple-barcodes/hello-world.html b/barcode-scanner-api-samples/scan-multiple-barcodes/hello-world.html deleted file mode 100644 index 4a2bbc3c..00000000 --- a/barcode-scanner-api-samples/scan-multiple-barcodes/hello-world.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - Dynamsoft Barcode Scanner Sample - Hello World (Decode via Camera) - - - - - - - - - - - -

    - Hello World (Scan Multiple Barcodes via Camera) -

    - -
    - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/README.md b/barcode-scanner-api-samples/scan-single-barcode/README.md deleted file mode 100644 index fe965170..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/README.md +++ /dev/null @@ -1,170 +0,0 @@ -# 📦 Scan Single Barcode - -## 🚀 1.Hello World - -This sample demonstrates how to use the `BarcodeScanner` API from the [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/) to scan a **single barcode** from a video stream using plain JavaScript. - -### ✨ Features - -- Uses `BarcodeScanner` APIs from `dynamsoft-barcode-reader-bundle` -- Scans a single barcode at a time -- UI rendered to a container element - -### 🔧 How It Works - -The sample uses the `BarcodeScanner` class to launch a scanner and decode a single barcode from a camera stream. The key configuration includes: - -- **License Key** – Required to activate the SDK. -- **`engineResourcePaths`** – Points to required resources hosted on a CDN or locally. -- **UI container** – An HTML element where the scanner is rendered. - -```ts -const config = { - license: "YOUR-LICENSE-KEY", - engineResourcePaths: { - // feel free to change it to your own path - rootDirectory: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.2.4000/dist/", - }, - container: ".barcode-scanner-view", -}; -``` - -The BarcodeScanner instance is created and launched like this: - -```ts -const barcodeScanner = new Dynamsoft.BarcodeScanner(config); -barcodeScanner.launch(); -``` - -### 📌 Notes - -- This sample scans one **single barcode**, you can configure `scanMode` to change the behavior to scan multiple barcodes. -- To avoid network-related loading issues, consider hosting all required resources locally. - -## 🛒 2. Scan and Search - -This simple demonstrates how to use the `BarcodeScanner` API to scan a product barcode and simulate a search from a product database. - -### ✨ Features - -- Scan Barcodes using your device camera -- Search by Text or Barcode input -- Displays mock product data as search results -- Responsive UI with modern styling - -### 🔄 Sample Usage Flow - -1. Click the Scan button to launch the barcode scanner. -2. Once a barcode is detected, its value is displayed along with placeholder product information. -3. Alternatively, type a product name or barcode manually in the input field and click Search. -4. Results are displayed in the Search Result text area. - -### 📌 Notes - -- No real backend is connected in this demo; results are mocked. -- You can integrate with a real product API by replacing the placeholder content in the searchResult.value. - -## 📷 3. Pick One To Fill - -A web-based form-filling utility that uses the `BarcodeScanner` to scan and auto-fill fields by simply opening the camera and scanning a barcode. - -### ✨ Features - -- Field-specific Camera Activation -Open the camera individually for different fields. - -- Manual control when to start decoding -Start decoding manually after aiming at the target to reduce the risk of misreads and missed barcodes. - -- Auto-Fill with Scan Result -Automatically populates input fields with scanned barcode values. - -### 🔄 Sample Usage Flow - -1. Click the "Open Camera" button to activate the camera. - -2. Aim at the sample image shown below. - -3. Click the "Decode" button to start barcode recognition. - -4. If only one barcode is detected, its value will be automatically filled into the corresponding field. - If multiple barcodes are detected, the video stream will freeze, and you’ll need to manually select one from the decoded results to fill in. - -### 📌 Notes - -- This usage is especially suitable for scenarios with densely packed barcodes, where secondary confirmation or manual selection is highly needed. -- You can find a sample reference image in `./pick-one-to-fill/`. - -## 🎥 4. Use Customized Template - -This is a sample web application demonstrating how to use the `BarcodeScanner` with different customized templates for scanning various barcode types. - -It allows users to dynamically select a scanning template (e.g., DPM, Dot Code, OneD Retail, OneD Industrial), and launch a camera-based barcode scanner accordingly. - -### ✨ Features - -- Support for custom barcode scanning templates using local JSON files. - -- Easily switch between different template configurations. - -### 🔄 Sample Usage Flow - -1. Open the HTML file in a browser. The app will automatically initialize the scanner using the ReadDPM template. - -2. Choose from the available templates: - - Direct Part Marking (DPM) - - Dot Code - - OneD Retail - - OneD Industrial - - Scanner Loads with Selected Template. When a new template is selected, the scanner is re-initialized using the corresponding .json file. - -3. Point your camera at a barcode matching the selected template type. A popup alert will display the result upon successful detection. - -### 📌 Notes - -- The scanner is disposed and recreated every time a different template is selected, ensuring the correct settings are applied. -- You can find sample images in `./use-customized-template/`. - -## 🧾 5. Read and Parse GS1 AI - -This sample demonstrates how to read a GS1-formatted barcode string (containing Application Identifiers, AIs) and parse it into human‑readable fields using a local AI definition file. - -### ✨ Features - -- Parse GS1 AI strings into labeled fields (GTIN, expiration, batch/lot, serial, etc.). -- Map AI keys to readable titles. -- Browser example with a small UI (`index.html`) and styling (`style.css`). -- Utility script (`convert-GS1AI-title.js`) that converts raw GS1 data to a structured object. - -### 🔧 How It Works - -- `index.html` provides an input area where you can paste a scanned GS1 barcode value (or test values). -- `convert-GS1AI-title.js` parses the GS1 string into AI-value pairs and looks up human-friendly labels. -- Parsed results are shown in the page for easy inspection or copy-paste into downstream systems. - -### 📌 Notes - -- This sample focuses on parsing and presentation; integrate the parser into your scanner workflow to convert live scan results to structured data. -- For accurate parsing of variable-length AIs, ensure your input uses proper GS1 separators when applicable. - -## 📄 See other BarcodeScanner samples - -* [**Hello World in Angular**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/angular): Read single barcode from camera in an Angular application. -* [**Hello World in React**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/react): Read single barcode from camera in a React application. -* [**Hello World in Vue**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/vue): Read single barcode from camera in a Vue application. -* [**Hello World in Svelte**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/svelte): Read single barcode from camera in a Svelte application. -* [**Hello World in Capacitor**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/capacitor): Read single barcode from camera in a Capacitor application. -* [**Hello World in Webview**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/webview): Read single barcode from camera in a Webview application. -* [**Hello World in Typescript**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/native-ts): Read single barcode from camera in a Typescript application. -* [**Hello World in Electron**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/electron): Read single barcode from camera in a Electron application. -* [**Hello World in Blazor**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/blazor): Read single barcode from camera in a Blazor application. -* [**Hello World in RequireJS**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/requirejs.html): Read single barcode from camera in a RequireJS application. -* [**Hello World in ES6**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/es6.html): Read single barcode from camera in a ES6 application. -* [**Hello World in PWA**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-single-barcode/pwa): Read single barcode from camera in a PWA application. - -Scan multiple barcodes: - -* [**Hello World**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes): Scan multiple barcodes from video stream with minimum code in JavaScript. -* [**Cart Builder**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes): Simulates a shopping experience where users scan barcodes to add items to a dynamic cart. -* [**Batch Inventory**](https://github.com/Dynamsoft/barcode-reader-javascript-samples/blob/main/barcode-scanner-api-samples/scan-multiple-barcodes/batch-inventory/index.html): An inventory management tool scan barcodes in batches and provide real-time analysis of the scanned data. \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/.editorconfig b/barcode-scanner-api-samples/scan-single-barcode/angular/.editorconfig deleted file mode 100644 index f166060d..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/.editorconfig +++ /dev/null @@ -1,17 +0,0 @@ -# Editor configuration, see https://editorconfig.org -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -insert_final_newline = true -trim_trailing_whitespace = true - -[*.ts] -quote_type = single -ij_typescript_use_double_quotes = false - -[*.md] -max_line_length = off -trim_trailing_whitespace = false diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/.gitignore b/barcode-scanner-api-samples/scan-single-barcode/angular/.gitignore deleted file mode 100644 index cc7b1413..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/.gitignore +++ /dev/null @@ -1,42 +0,0 @@ -# See https://docs.github.com/get-started/getting-started-with-git/ignoring-files for more about ignoring files. - -# Compiled output -/dist -/tmp -/out-tsc -/bazel-out - -# Node -/node_modules -npm-debug.log -yarn-error.log - -# IDEs and editors -.idea/ -.project -.classpath -.c9/ -*.launch -.settings/ -*.sublime-workspace - -# Visual Studio Code -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -.history/* - -# Miscellaneous -/.angular/cache -.sass-cache/ -/connect.lock -/coverage -/libpeerconnection.log -testem.log -/typings - -# System files -.DS_Store -Thumbs.db diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/README.md b/barcode-scanner-api-samples/scan-single-barcode/angular/README.md deleted file mode 100644 index e31e5b7c..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# 📦 Scan Single Barcode - Angular - -This sample shows how to integrate the `BarcodeScanner` from the [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/overview/javascript/) in an **Angular** project for scanning a single barcode from live video. - -## ✨ Features - -- Easy integration with pre-built UI -- BarcodeScanner initialized in Angular component -- Scans one barcode at a time from video - -## 🚀 Quick Start - -### 1. Install Dependencies - -```bash -npm install -``` - -### 2. Run the App - -```bash -npm run start -``` - -Then open your browser at http://localhost:4200 to view the sample app. - -## 📌 Customization - -Please refer to sample [`scan-multiple-barcodes`](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes) or check the official [documentation](https://dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/barcode-scanner-customization.html). - -## 📄 Support - -If you have any questions, feel free to [contact Dynamsoft Support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/angular.json b/barcode-scanner-api-samples/scan-single-barcode/angular/angular.json deleted file mode 100644 index 60a82d23..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/angular.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "$schema": "./node_modules/@angular/cli/lib/config/schema.json", - "version": 1, - "newProjectRoot": "projects", - "projects": { - "angular": { - "projectType": "application", - "schematics": {}, - "root": "", - "sourceRoot": "src", - "prefix": "app", - "architect": { - "build": { - "builder": "@angular-devkit/build-angular:application", - "options": { - "outputPath": "dist/angular", - "index": "src/index.html", - "browser": "src/main.ts", - "polyfills": [ - "zone.js" - ], - "tsConfig": "tsconfig.app.json", - "assets": [ - { - "glob": "**/*", - "input": "public" - } - ], - "styles": [ - "src/styles.css" - ], - "scripts": [], - "baseHref": "./" - }, - "configurations": { - "production": { - "budgets": [ - { - "type": "initial", - "maximumWarning": "1000kb", - "maximumError": "1MB" - }, - { - "type": "anyComponentStyle", - "maximumWarning": "4kB", - "maximumError": "8kB" - } - ], - "outputHashing": "all" - }, - "development": { - "optimization": false, - "extractLicenses": false, - "sourceMap": true - } - }, - "defaultConfiguration": "production" - }, - "serve": { - "builder": "@angular-devkit/build-angular:dev-server", - "configurations": { - "production": { - "buildTarget": "angular:build:production" - }, - "development": { - "buildTarget": "angular:build:development" - } - }, - "defaultConfiguration": "development" - }, - "extract-i18n": { - "builder": "@angular-devkit/build-angular:extract-i18n" - }, - "test": { - "builder": "@angular-devkit/build-angular:karma", - "options": { - "polyfills": [ - "zone.js", - "zone.js/testing" - ], - "tsConfig": "tsconfig.spec.json", - "assets": [ - { - "glob": "**/*", - "input": "public" - } - ], - "styles": [ - "src/styles.css" - ], - "scripts": [] - } - } - } - } - }, - "cli": { - "analytics": false - } -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/package.json b/barcode-scanner-api-samples/scan-single-barcode/angular/package.json deleted file mode 100644 index ec3245cf..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "angular", - "version": "0.0.0", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build", - "watch": "ng build --watch --configuration development" - }, - "private": true, - "dependencies": { - "@angular/common": "^19.2.0", - "@angular/compiler": "^19.2.0", - "@angular/core": "^19.2.0", - "@angular/forms": "^19.2.0", - "@angular/platform-browser": "^19.2.0", - "@angular/platform-browser-dynamic": "^19.2.0", - "@angular/router": "^19.2.0", - "dynamsoft-barcode-reader-bundle": "11.2.4000", - "rxjs": "~7.8.0", - "tslib": "^2.3.0", - "zone.js": "~0.15.0" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^19.2.8", - "@angular/cli": "^19.2.8", - "@angular/compiler-cli": "^19.2.0", - "@types/jasmine": "~5.1.0", - "jasmine-core": "~5.6.0", - "karma": "~6.4.0", - "karma-chrome-launcher": "~3.2.0", - "karma-coverage": "~2.2.0", - "karma-jasmine": "~5.1.0", - "karma-jasmine-html-reporter": "~2.1.0", - "typescript": "~5.7.2" - } -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.css b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.css deleted file mode 100644 index 3a163bca..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.css +++ /dev/null @@ -1,24 +0,0 @@ -.barcode-scanner-hello-world-page { - width: 100%; - height: 100%; - text-align: center; -} - -.barcode-scanner-title { - height: 90px; - display: flex; - justify-content: center; - align-items: center; - padding: 20px 0; -} - -.barcode-scanner-title .barcode-scanner-title-logo { - width: 40px; - height: 40px; - margin-left: 10px; -} - -.barcode-scanner-view { - width: 100%; - height: calc(100% - 90px); -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.html b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.html deleted file mode 100644 index 1e505568..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.html +++ /dev/null @@ -1,7 +0,0 @@ -
    -
    -

    Hello World for Angular

    -
    - -
    -
    diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts deleted file mode 100644 index a9941b96..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.component.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { Component, ElementRef, ViewChild } from '@angular/core'; -import { BarcodeScanner, BarcodeScannerConfig } from 'dynamsoft-barcode-reader-bundle'; - -@Component({ - selector: 'app-root', - templateUrl: './app.component.html', - styleUrl: './app.component.css' -}) - -export class AppComponent { - title = 'angular'; - barcodeScanner: BarcodeScanner | null = null; - - @ViewChild('barcodeScannerViewRef') barcodeScannerViewRef!: ElementRef; - - async ngAfterViewInit(): Promise { - // Configuration object for initializing the BarcodeScanner instance - const config: BarcodeScannerConfig = { - license: "DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", // Replace with your Dynamsoft license key - - // Specify where to render the scanner UI - // If container is not specified, the UI will take up the full screen - container: this.barcodeScannerViewRef.nativeElement, - - // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. - uiPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.2.4000/dist/ui/barcode-scanner.ui.xml", - - // showUploadImageButton: true, - // scannerViewConfig: { - // showFlashButton: true, - // cameraSwitchControl: "toggleFrontBack", - // }, - - // Specify custom paths for the engine resources - engineResourcePaths: { - rootDirectory: "https://cdn.jsdelivr.net/npm/", - }, - } - - // Create an instance of the BarcodeScanner with the provided configuration - this.barcodeScanner = new BarcodeScanner(config); - - // Launch the scanner; once a barcode is detected, display its text in an alert - let result = await this.barcodeScanner.launch(); - if (result.barcodeResults.length) { - alert(result.barcodeResults[0].text); - } - } - async ngOnDestroy(): Promise { - // Dispose of the barcode scanner when the component unmounts - this.barcodeScanner?.dispose(); - } -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.config.ts b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.config.ts deleted file mode 100644 index a1e7d6f8..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.config.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core'; -import { provideRouter } from '@angular/router'; - -import { routes } from './app.routes'; - -export const appConfig: ApplicationConfig = { - providers: [provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes)] -}; diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.routes.ts b/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.routes.ts deleted file mode 100644 index dc39edb5..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/src/app/app.routes.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Routes } from '@angular/router'; - -export const routes: Routes = []; diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/index.html b/barcode-scanner-api-samples/scan-single-barcode/angular/src/index.html deleted file mode 100644 index bae20c6b..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/src/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - Dynamsoft Barcode Reader Sample - Hello World (Decode via Camera) - - - - - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/main.ts b/barcode-scanner-api-samples/scan-single-barcode/angular/src/main.ts deleted file mode 100644 index 35b00f34..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/src/main.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { bootstrapApplication } from '@angular/platform-browser'; -import { appConfig } from './app/app.config'; -import { AppComponent } from './app/app.component'; - -bootstrapApplication(AppComponent, appConfig) - .catch((err) => console.error(err)); diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/src/styles.css b/barcode-scanner-api-samples/scan-single-barcode/angular/src/styles.css deleted file mode 100644 index a0583309..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/src/styles.css +++ /dev/null @@ -1,16 +0,0 @@ -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -html, -body { - width: 100%; - height: 100%; -} - -#root { - width: 100%; - height: 100%; -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.app.json b/barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.app.json deleted file mode 100644 index 3775b37e..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.app.json +++ /dev/null @@ -1,15 +0,0 @@ -/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ -/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/app", - "types": [] - }, - "files": [ - "src/main.ts" - ], - "include": [ - "src/**/*.d.ts" - ] -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.json b/barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.json deleted file mode 100644 index 5525117c..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.json +++ /dev/null @@ -1,27 +0,0 @@ -/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ -/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ -{ - "compileOnSave": false, - "compilerOptions": { - "outDir": "./dist/out-tsc", - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "skipLibCheck": true, - "isolatedModules": true, - "esModuleInterop": true, - "experimentalDecorators": true, - "moduleResolution": "bundler", - "importHelpers": true, - "target": "ES2022", - "module": "ES2022" - }, - "angularCompilerOptions": { - "enableI18nLegacyMessageIdFormat": false, - "strictInjectionParameters": true, - "strictInputAccessModifiers": true, - "strictTemplates": true - } -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.spec.json b/barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.spec.json deleted file mode 100644 index 5fb748d9..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/angular/tsconfig.spec.json +++ /dev/null @@ -1,15 +0,0 @@ -/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ -/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/spec", - "types": [ - "jasmine" - ] - }, - "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/.gitignore b/barcode-scanner-api-samples/scan-single-barcode/blazor/.gitignore deleted file mode 100644 index e6c4e46a..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/blazor/.gitignore +++ /dev/null @@ -1,486 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from `dotnet new gitignore` - -# dotenv files -.env - -# User-specific files -*.rsuser -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Mono auto generated files -mono_crash.* - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -[Ww][Ii][Nn]32/ -[Aa][Rr][Mm]/ -[Aa][Rr][Mm]64/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ -[Ll]ogs/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUnit -*.VisualState.xml -TestResult.xml -nunit-*.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET -project.lock.json -project.fragment.lock.json -artifacts/ - -# Tye -.tye/ - -# ASP.NET Scaffolding -ScaffoldingReadMe.txt - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_h.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*_wpftmp.csproj -*.log -*.tlog -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Coverlet is a free, cross platform Code Coverage Tool -coverage*.json -coverage*.xml -coverage*.info - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# NuGet Symbol Packages -*.snupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx -*.appxbundle -*.appxupload - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!?*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser -*- [Bb]ackup.rdl -*- [Bb]ackup ([0-9]).rdl -*- [Bb]ackup ([0-9][0-9]).rdl - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio 6 auto-generated project file (contains which files were open etc.) -*.vbp - -# Visual Studio 6 workspace and project file (working project files containing files to include in project) -*.dsw -*.dsp - -# Visual Studio 6 technical files -*.ncb -*.aps - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# CodeRush personal settings -.cr/personal - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - -# Visual Studio History (VSHistory) files -.vshistory/ - -# BeatPulse healthcheck temp database -healthchecksdb - -# Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ - -# Ionide (cross platform F# VS Code tools) working folder -.ionide/ - -# Fody - auto-generated XML schema -FodyWeavers.xsd - -# VS Code files for those working on multiple tools -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -*.code-workspace - -# Local History for Visual Studio Code -.history/ - -# Windows Installer files from build outputs -*.cab -*.msi -*.msix -*.msm -*.msp - -# JetBrains Rider -*.sln.iml -.idea - -## -## Visual studio for Mac -## - - -# globs -Makefile.in -*.userprefs -*.usertasks -config.make -config.status -aclocal.m4 -install-sh -autom4te.cache/ -*.tar.gz -tarballs/ -test-results/ - -# Mac bundle stuff -*.dmg -*.app - -# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore -# General -.DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns -.com.apple.timemachine.donotpresent - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - -# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore -# Windows thumbnail cache files -Thumbs.db -ehthumbs.db -ehthumbs_vista.db - -# Dump file -*.stackdump - -# Folder config file -[Dd]esktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Windows Installer files -*.cab -*.msi -*.msix -*.msm -*.msp - -# Windows shortcuts -*.lnk - -# Vim temporary swap files -*.swp - -PublishProfiles diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/App.razor b/barcode-scanner-api-samples/scan-single-barcode/blazor/App.razor deleted file mode 100644 index 6fd3ed1b..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/blazor/App.razor +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - Not found - -

    Sorry, there's nothing at this address.

    -
    -
    -
    diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/BlazorApp.csproj b/barcode-scanner-api-samples/scan-single-barcode/blazor/BlazorApp.csproj deleted file mode 100644 index 8e50d8dc..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/blazor/BlazorApp.csproj +++ /dev/null @@ -1,18 +0,0 @@ - - - - net8.0 - enable - enable - - - - - - - - - - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/Layout/MainLayout.razor b/barcode-scanner-api-samples/scan-single-barcode/blazor/Layout/MainLayout.razor deleted file mode 100644 index 5a584b18..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/blazor/Layout/MainLayout.razor +++ /dev/null @@ -1,4 +0,0 @@ -@inherits LayoutComponentBase -
    - @Body -
    diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/Pages/Home.razor b/barcode-scanner-api-samples/scan-single-barcode/blazor/Pages/Home.razor deleted file mode 100644 index c94ddbd7..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/blazor/Pages/Home.razor +++ /dev/null @@ -1,25 +0,0 @@ -@page "/" -@inject IJSRuntime JS - -Dynamsoft Barcode Reader Sample - Hello World (Decode via Camera) - -

    Barcode Scanner for Svelte

    -
    -
    - -@code { - // reference: https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/call-javascript-from-dotnet?view=aspnetcore-8.0#invoke-js-functions - - - protected override async Task OnAfterRenderAsync(bool firstRender) - { - if (firstRender) - { - // This code will only run once after the component has rendered. - // It's the ideal place to call JavaScript functions that - // need access to the rendered HTML. - var resultTxt = await JS.InvokeAsync("decodeBarcodeViaCamera"); - await JS.InvokeVoidAsync("alert", resultTxt); - } - } -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/Program.cs b/barcode-scanner-api-samples/scan-single-barcode/blazor/Program.cs deleted file mode 100644 index e6ef32a3..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/blazor/Program.cs +++ /dev/null @@ -1,11 +0,0 @@ -using BlazorApp; -using Microsoft.AspNetCore.Components.Web; -using Microsoft.AspNetCore.Components.WebAssembly.Hosting; - -var builder = WebAssemblyHostBuilder.CreateDefault(args); -builder.RootComponents.Add("#app"); -builder.RootComponents.Add("head::after"); - -builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); - -await builder.Build().RunAsync(); diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/Properties/launchSettings.json b/barcode-scanner-api-samples/scan-single-barcode/blazor/Properties/launchSettings.json deleted file mode 100644 index e25d8f48..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/blazor/Properties/launchSettings.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "$schema": "http://json.schemastore.org/launchsettings.json", - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:17951", - "sslPort": 44366 - } - }, - "profiles": { - "http": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", - "applicationUrl": "http://localhost:5244", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "https": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", - "applicationUrl": "https://localhost:7074;http://localhost:5244", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/README.md b/barcode-scanner-api-samples/scan-single-barcode/blazor/README.md deleted file mode 100644 index c25f2ed6..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/blazor/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# 📦 Scan Single Barcode - Blazor - -This sample demonstrates how to use the `BarcodeScanner` API from the [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/overview/javascript/) in a **Blazor** app to scan a single barcode using the camera. - -## ✨ Features - -- Easy integration with pre-built UI -- Renders barcodeScanner inside a container -- Scans one barcode at a time from video - -## 📌 Customization - -Please refer to sample [`scan-multiple-barcodes`](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes) or check the official [documentation](https://dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/barcode-scanner-customization.html). - -## 📄 Support - -If you have any questions, feel free to [contact Dynamsoft Support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/_Imports.razor b/barcode-scanner-api-samples/scan-single-barcode/blazor/_Imports.razor deleted file mode 100644 index 2c3956ad..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/blazor/_Imports.razor +++ /dev/null @@ -1,10 +0,0 @@ -@using System.Net.Http -@using System.Net.Http.Json -@using Microsoft.AspNetCore.Components.Forms -@using Microsoft.AspNetCore.Components.Routing -@using Microsoft.AspNetCore.Components.Web -@using Microsoft.AspNetCore.Components.Web.Virtualization -@using Microsoft.AspNetCore.Components.WebAssembly.Http -@using Microsoft.JSInterop -@using BlazorApp -@using BlazorApp.Layout diff --git a/barcode-scanner-api-samples/scan-single-barcode/blazor/wwwroot/index.html b/barcode-scanner-api-samples/scan-single-barcode/blazor/wwwroot/index.html deleted file mode 100644 index a728dd6b..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/blazor/wwwroot/index.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - BlazorApp - - - - -
    -
    - - - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/README.md b/barcode-scanner-api-samples/scan-single-barcode/capacitor/README.md deleted file mode 100644 index 24b2f172..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/README.md +++ /dev/null @@ -1,43 +0,0 @@ -# 📦 Scan Single Barcode - Capacitor - -This sample demonstrates how to use the `BarcodeScanner` API from the [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/overview/javascript/) in a **Capacitor** app to scan a single barcode using the camera. - -We use typescript and rollup inside capacitor for demonstration. You can use any framework you like, or even vanilla javascript. - -## ✨ Features - -- Easy integration with pre-built UI -- Renders barcodeScanner inside a Capacitor container -- Scans one barcode at a time from video - -## 🚀 Quick Start - -```bash -npm install -npm run build -npx cap sync -``` - -Then build your app in Android Studio and Xcode. - -## 👓 Camera Permission - -Notice we add camera permission in `AndroidManifest.xml` and `Info.plist`. - -[android/app/src/main/AndroidManifest.xml](android/app/src/main/AndroidManifest.xml): -```xml - -``` -[ios/App/App/Info.plist](ios/App/App/Info.plist): -```xml -NSCameraUsageDescription -Decoding barcodes from video needs to access your camera. -``` - -## 📌 Customization - -Please refer to sample [`scan-multiple-barcodes`](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes) or check the official [documentation](https://dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/barcode-scanner-customization.html). - -## 📄 Support - -If you have any questions, feel free to [contact Dynamsoft Support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/.gitignore b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/.gitignore deleted file mode 100644 index 48354a3d..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/.gitignore +++ /dev/null @@ -1,101 +0,0 @@ -# Using Android gitignore template: https://github.com/github/gitignore/blob/HEAD/Android.gitignore - -# Built application files -*.apk -*.aar -*.ap_ -*.aab - -# Files for the ART/Dalvik VM -*.dex - -# Java class files -*.class - -# Generated files -bin/ -gen/ -out/ -# Uncomment the following line in case you need and you don't have the release build type files in your app -# release/ - -# Gradle files -.gradle/ -build/ - -# Local configuration file (sdk path, etc) -local.properties - -# Proguard folder generated by Eclipse -proguard/ - -# Log Files -*.log - -# Android Studio Navigation editor temp files -.navigation/ - -# Android Studio captures folder -captures/ - -# IntelliJ -*.iml -.idea/workspace.xml -.idea/tasks.xml -.idea/gradle.xml -.idea/assetWizardSettings.xml -.idea/dictionaries -.idea/libraries -# Android Studio 3 in .gitignore file. -.idea/caches -.idea/modules.xml -# Comment next line if keeping position of elements in Navigation Editor is relevant for you -.idea/navEditor.xml - -# Keystore files -# Uncomment the following lines if you do not want to check your keystore files in. -#*.jks -#*.keystore - -# External native build folder generated in Android Studio 2.2 and later -.externalNativeBuild -.cxx/ - -# Google Services (e.g. APIs or Firebase) -# google-services.json - -# Freeline -freeline.py -freeline/ -freeline_project_description.json - -# fastlane -fastlane/report.xml -fastlane/Preview.html -fastlane/screenshots -fastlane/test_output -fastlane/readme.md - -# Version control -vcs.xml - -# lint -lint/intermediates/ -lint/generated/ -lint/outputs/ -lint/tmp/ -# lint/reports/ - -# Android Profiling -*.hprof - -# Cordova plugins for Capacitor -capacitor-cordova-android-plugins - -# Copied web assets -app/src/main/assets/public - -# Generated Config files -app/src/main/assets/capacitor.config.json -app/src/main/assets/capacitor.plugins.json -app/src/main/res/xml/config.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/.gitignore b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/.gitignore deleted file mode 100644 index 043df802..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/build/* -!/build/.npmkeep diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/build.gradle b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/build.gradle deleted file mode 100644 index a2585f06..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/build.gradle +++ /dev/null @@ -1,54 +0,0 @@ -apply plugin: 'com.android.application' - -android { - namespace "com.dynamsoft.dbrjs" - compileSdk rootProject.ext.compileSdkVersion - defaultConfig { - applicationId "com.dynamsoft.dbrjs" - minSdkVersion rootProject.ext.minSdkVersion - targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 1 - versionName "1.0" - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - aaptOptions { - // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. - // Default: https://android.googlesource.com/platform/frameworks/base/+/282e181b58cf72b6ca770dc7ca5f91f135444502/tools/aapt/AaptAssets.cpp#61 - ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~' - } - } - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } -} - -repositories { - flatDir{ - dirs '../capacitor-cordova-android-plugins/src/main/libs', 'libs' - } -} - -dependencies { - implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion" - implementation "androidx.coordinatorlayout:coordinatorlayout:$androidxCoordinatorLayoutVersion" - implementation "androidx.core:core-splashscreen:$coreSplashScreenVersion" - implementation project(':capacitor-android') - testImplementation "junit:junit:$junitVersion" - androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion" - androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion" - implementation project(':capacitor-cordova-android-plugins') -} - -apply from: 'capacitor.build.gradle' - -try { - def servicesJSON = file('google-services.json') - if (servicesJSON.text) { - apply plugin: 'com.google.gms.google-services' - } -} catch(Exception e) { - logger.info("google-services.json not found, google-services plugin not applied. Push Notifications won't work") -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/capacitor.build.gradle b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/capacitor.build.gradle deleted file mode 100644 index bbfb44fa..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/capacitor.build.gradle +++ /dev/null @@ -1,19 +0,0 @@ -// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN - -android { - compileOptions { - sourceCompatibility JavaVersion.VERSION_21 - targetCompatibility JavaVersion.VERSION_21 - } -} - -apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle" -dependencies { - - -} - - -if (hasProperty('postBuildExtras')) { - postBuildExtras() -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/proguard-rules.pro b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/proguard-rules.pro deleted file mode 100644 index f1b42451..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java deleted file mode 100644 index f2c2217e..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.getcapacitor.myapp; - -import static org.junit.Assert.*; - -import android.content.Context; -import androidx.test.ext.junit.runners.AndroidJUnit4; -import androidx.test.platform.app.InstrumentationRegistry; -import org.junit.Test; -import org.junit.runner.RunWith; - -/** - * Instrumented test, which will execute on an Android device. - * - * @see Testing documentation - */ -@RunWith(AndroidJUnit4.class) -public class ExampleInstrumentedTest { - - @Test - public void useAppContext() throws Exception { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); - - assertEquals("com.getcapacitor.app", appContext.getPackageName()); - } -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/AndroidManifest.xml b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index 4cc824b9..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/java/com/dynamsoft/dbrjs/MainActivity.java b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/java/com/dynamsoft/dbrjs/MainActivity.java deleted file mode 100644 index f3250895..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/java/com/dynamsoft/dbrjs/MainActivity.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.dynamsoft.dbrjs; - -import com.getcapacitor.BridgeActivity; - -public class MainActivity extends BridgeActivity {} diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-land-hdpi/splash.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-land-hdpi/splash.png deleted file mode 100644 index e31573b4fc93e60d171f4046c0220e1463075d9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7705 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 wKmFJ0_JHhk1&0B>;%YXATM diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-land-mdpi/splash.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-land-mdpi/splash.png deleted file mode 100644 index f7a64923ea1a0565d25fa139c176d6bf42184e48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4040 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 XyOn+%7f`N3b2T^T3uj5+eShz7v)7qy diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-land-xhdpi/splash.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-land-xhdpi/splash.png deleted file mode 100644 index 807725501bdd92e94e51e7b2b0006f69e0083a0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9251 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 diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-land-xxhdpi/splash.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-land-xxhdpi/splash.png deleted file mode 100644 index 14c6c8fe39fcd51a0414866ad28cbe8ff3acb060..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13984 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®q@N z14_H8ofW)l{|J8q+a)eH)I0r)>WXdzV%7J>PA~6_J)KLT90iYa^K=Wz7D!OybzqSru=f4?|KFl;Y)gP_H6V4x`~kZ6fE(xM1&;?72-TZNk+0 zr+Crr5yl%Iy@vfmt3eYFl!jIvPGFz^8Ek+2`48O1_pCX3xNWh-zBa{rIcc%+=|XVj zANYTg&s}TKb#OztQrCW(Xk?V^i{`q~%HtcveTxq(_HKeC9GzrtguMT4Nvs@KakPTA z9>*8bBZmLz`lK5=l)=b|=dT3a5ag^a1^znZyx5QKfUb1b9yacArRp%3@QWo(hrsCU z-K!-=jDmv!zb7XT>)r|-Z0Ry}lk2;dk-ECqMwr_nKN#x*X6~B5hVIN>6$1HwBz3Of z=Pk){AL5*=d90f17_qZEJLm;Q%WMdX=*N&!ki@E&cy7?>{1ssAH(tACtp*r@d^til z)x(1#6(kPD+joSF&J3sxJU@{-sWCS+pZq{Gsx=?z4wP;>?)1yHv0?X?VP{}cX4~aH zxeBPKw_rgW8rvewS1W2#^y+c>-183iMbJCqc38RN_o~__9-n|jcd&oA`m7*&Fqqpc z;Tev*0LS-ZK47Sq1unfvP1S43uA12P?PJmI8BeTYPr~R*tYUm^0;U%Hmu?bSZHEK6 zPjsW=E67Kq-&trmf;)UkmRABH2U)V)-eRT$j(%G12lLMsThSsU10iP#{)ZnvjzN$d z*K%P3`}oqyvpWP~venr>3viH8^`)Ma*=B31hw*Q+tqE>i2y7w!(o^lI^Yss^=tHW( z;cnCT(%B1gLz+TRGW9roFjI1EQTu-u`(f#RmZ8;FSN(bsC1J;+(i_R6mrW=yYx$cy z#%QKVrEx~kVMg~yo?^N28Wnk6x%L;J8i|*|ANEiNjq(Vhzuzl3ikpA*G!Z}kLAzAI z9qnySo%D|AuJj12%h;Otqjs(>LPj?rNdeU8so>P(C>XMzlho94ZD#w=cCOOU;=3&^ zsqAG!i{~lY271D|m>ztPV`)X@FO_;`wPjppYNQpM+ncvtz1lZjN>!Q^*I}T%uP78Z7tbV2$q3W_)14=kLFyJ z1GqL6T>ClgeZorL!}xP4f%OB_EsmJ`uw7dGWNV9OLlhb|UMpVhc{4@Bhh`tO!ZqzD zhusd<=K^ah!L@gQ?6dOpI-ge^e>S5W9eII57Zu16eU?GRbgKTeVk9yS{iK|O(zLR> zheb?;jwGCHS80NCn=jKxgJ>}qu4l%5NPihjzazGv#J?Jcyl;<#IW&x4mm>nrW8>}C z3U@aeD~)*F(0o^2{GnKVm$Jr#aZE ztl~TOkM^SdzJapQ((!-i8b!RkVQBKkL`2ZCBuy!qI1L{3Er526plVols~68U-^9Px zR(3{j;Z9RHX^muc0dUywJ|`yyZFf=k&-Gb#m4u73Lm5Ks%BfHj%2|gjn#i> zLC5pO$2Em9H;qoKQmMtl<@wgtPF1%2HariD5O~u>8=^*J&au~JH%Ih@&2Uging3U_ z0bzfKucW$ZHSx}!#buB?+-J)%RQbbXM-!BJTS&#dU_@lxU6>te2O+9 z@F{F{Nb!;{Cd`Gx+$G?11aB~S#wIH%D=*=7f7H@D@%B1)&bF$@t3JDq4l*%(wJTlh zo`?uMq{YilKUewPNaC)GuOr<8j9&ofqRU__BRUX^x8Cj3a;a$rXzgXqW>LR#CUn%~m)t zYC&ol(gAkbc^fd`xWU&bk5vT6KbFmsR=O78Bn%t7 znbw&=c+|T&#r+bls5rU6D#HMvqA<|;)BV%jOMonkm^p$7Vcel-Wwn$=uAJv&(8W>% z9))Fxpl*(%E#wFm_m!U~2HqgZs^2vaGeY(UfYKrSHV}w^D0N6!se5Ewy)Yy-!(2

    aKj2hWG7>znxs|SE zN4rHtiSPqLskWp(?(_YYwgq+1@8v+~8As|(bC>$D(atG3ZE8-ZM3SVcg|vHQz$I=!(A`k`5= zOqR>&%G)$)k*QLz7MTB9wleWpv&N9Sta64wy}3Ytd?x!Ja8z>(z~(3UNFu^eFmn#6 zw!!gUxOuZi$PQIs*ixfZR3iLyADJ z5&s%tPfk>V!x|A-;oq%1!yk9H$UBP0ToA*EDtz(^!_AnF1bBQ7joj|? z5b)gSI8c8O$PYFE!vXJ<4gebg*9G9P2wcB{#kv0FItc5T@PDNo)}Rh4Us}L{e}xzW zhwt`)j`M)mP=G6H0;^&q=I0{jU%bIRkF#uLF;{vVC&H|_uc diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-land-xxxhdpi/splash.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-land-xxxhdpi/splash.png deleted file mode 100644 index 244ca2506dbe0fd8f6a05520ac7d1a629ea81438..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17683 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 diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-port-xxhdpi/splash.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-port-xxhdpi/splash.png deleted file mode 100644 index bfabe6871a17a5e95b78fb30d49b7d2b4d2fe4c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13346 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

    VwO4Hu8X}%XHUAz_J@50rzbkIsat>4oWtQt< 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 diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-port-xxxhdpi/splash.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-port-xxxhdpi/splash.png deleted file mode 100644 index 6929071268eb03ee0f088142b6523566b78550e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17489 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 KR&><$`~L^lv%S~= diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml deleted file mode 100644 index c7bd21db..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable/ic_launcher_background.xml b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable/ic_launcher_background.xml deleted file mode 100644 index d5fccc53..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable/ic_launcher_background.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable/splash.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/drawable/splash.png deleted file mode 100644 index f7a64923ea1a0565d25fa139c176d6bf42184e48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4040 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 XyOn+%7f`N3b2T^T3uj5+eShz7v)7qy diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/layout/activity_main.xml b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/layout/activity_main.xml deleted file mode 100644 index b5ad1387..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index 036d09bc..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index 036d09bc..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index c023e50595074292c7361183a64de08cf9686c9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2786 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 diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png deleted file mode 100644 index 2127973b2d318df7085734d236d0ec649a2b0292..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3450 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 diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 4d1e077104cd61e6a4c3707e87363b523077245a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3981 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 nm0GElTB(&OnKI&V600000NkvXXu0mjff+~0a diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png deleted file mode 100644 index df0f15880bee46332dfc6622583215194f948b0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5036 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 diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 6cdf97c1196d48e9833487ff6de7c4cfc4e1232d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6644 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 diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png deleted file mode 100644 index 2960cbb6104b915c84760f889deed9bff2b3e17a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9793 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 y3vD~Wi9;mL_v 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 diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png deleted file mode 100644 index a40d73e9c68ea638c28c7b13e4bcd1e179a3a102..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15916 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 - - #FFFFFF - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/values/strings.xml b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/values/strings.xml deleted file mode 100644 index ced650f8..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/values/strings.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - dbrjs capacitor - dbrjs capacitor - com.dynamsoft.dbrjs - com.dynamsoft.dbrjs - diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/values/styles.xml b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/values/styles.xml deleted file mode 100644 index be874e54..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/xml/file_paths.xml b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/xml/file_paths.xml deleted file mode 100644 index bd0c4d80..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/main/res/xml/file_paths.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java deleted file mode 100644 index 02973278..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.getcapacitor.myapp; - -import static org.junit.Assert.*; - -import org.junit.Test; - -/** - * Example local unit test, which will execute on the development machine (host). - * - * @see Testing documentation - */ -public class ExampleUnitTest { - - @Test - public void addition_isCorrect() throws Exception { - assertEquals(4, 2 + 2); - } -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/build.gradle b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/build.gradle deleted file mode 100644 index f1b3b0e5..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/build.gradle +++ /dev/null @@ -1,29 +0,0 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. - -buildscript { - - repositories { - google() - mavenCentral() - } - dependencies { - classpath 'com.android.tools.build:gradle:8.7.2' - classpath 'com.google.gms:google-services:4.4.2' - - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files - } -} - -apply from: "variables.gradle" - -allprojects { - repositories { - google() - mavenCentral() - } -} - -task clean(type: Delete) { - delete rootProject.buildDir -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/capacitor.settings.gradle b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/capacitor.settings.gradle deleted file mode 100644 index 9a5fa872..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/capacitor.settings.gradle +++ /dev/null @@ -1,3 +0,0 @@ -// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN -include ':capacitor-android' -project(':capacitor-android').projectDir = new File('../node_modules/@capacitor/android/capacitor') diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle.properties b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle.properties deleted file mode 100644 index 2e87c52f..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle.properties +++ /dev/null @@ -1,22 +0,0 @@ -# Project-wide Gradle settings. - -# IDE (e.g. Android Studio) users: -# Gradle settings configured through the IDE *will override* -# any settings specified in this file. - -# For more details on how to configure your build environment visit -# http://www.gradle.org/docs/current/userguide/build_environment.html - -# Specifies the JVM arguments used for the daemon process. -# The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-Xmx1536m - -# When configured, Gradle will run in incubating parallel mode. -# This option should only be used with decoupled projects. More details, visit -# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true - -# AndroidX package structure to make it clearer which packages are bundled with the -# Android operating system, and which are packaged with your app's APK -# https://developer.android.com/topic/libraries/support-library/androidx-rn -android.useAndroidX=true diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle/wrapper/gradle-wrapper.jar b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index a4b76b9530d66f5e68d973ea569d8e19de379189..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43583 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 yu?e%!_ptzGB|8GrCfu%p?(_ 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 GZ~q4|mN%#X diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle/wrapper/gradle-wrapper.properties b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index c1d5e018..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,7 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip -networkTimeout=10000 -validateDistributionUrl=true -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradlew b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradlew deleted file mode 100644 index f5feea6d..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradlew +++ /dev/null @@ -1,252 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s -' "$PWD" ) || exit - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - if ! command -v java >/dev/null 2>&1 - then - die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, -# and any embedded shellness will be escaped. -# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be -# treated as '${Hostname}' itself on the command line. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradlew.bat b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradlew.bat deleted file mode 100644 index 9d21a218..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/gradlew.bat +++ /dev/null @@ -1,94 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem -@rem SPDX-License-Identifier: Apache-2.0 -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/settings.gradle b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/settings.gradle deleted file mode 100644 index 3b4431d7..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/settings.gradle +++ /dev/null @@ -1,5 +0,0 @@ -include ':app' -include ':capacitor-cordova-android-plugins' -project(':capacitor-cordova-android-plugins').projectDir = new File('./capacitor-cordova-android-plugins/') - -apply from: 'capacitor.settings.gradle' \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/variables.gradle b/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/variables.gradle deleted file mode 100644 index 2c8e4083..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/android/variables.gradle +++ /dev/null @@ -1,16 +0,0 @@ -ext { - minSdkVersion = 23 - compileSdkVersion = 35 - targetSdkVersion = 35 - androidxActivityVersion = '1.9.2' - androidxAppCompatVersion = '1.7.0' - androidxCoordinatorLayoutVersion = '1.2.0' - androidxCoreVersion = '1.15.0' - androidxFragmentVersion = '1.8.4' - coreSplashScreenVersion = '1.0.1' - androidxWebkitVersion = '1.12.1' - junitVersion = '4.13.2' - androidxJunitVersion = '1.2.1' - androidxEspressoCoreVersion = '3.6.1' - cordovaAndroidVersion = '10.1.1' -} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/capacitor.config.json b/barcode-scanner-api-samples/scan-single-barcode/capacitor/capacitor.config.json deleted file mode 100644 index 72cfd925..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/capacitor.config.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "appId": "com.dynamsoft.dbrjs", - "appName": "dbrjs capacitor", - "webDir": "dist", - "bundledWebRuntime": true -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/index.ts b/barcode-scanner-api-samples/scan-single-barcode/capacitor/index.ts deleted file mode 100644 index 50ff24a0..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/index.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { BarcodeScanner, BarcodeScannerConfig } from "dynamsoft-barcode-reader-bundle"; - -// Configuration object for initializing the BarcodeScanner instance -const config: BarcodeScannerConfig = { - license: "DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", // Replace with your Dynamsoft license key - - // Specify where to render the scanner UI - // If container is not specified, the UI will take up the full screen - container: document.querySelector(".barcode-scanner-view") as HTMLElement, // Specify where to render the scanner UI - - // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. - uiPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.2.4000/dist/ui/barcode-scanner.ui.xml", - - // showUploadImageButton: true, - // scannerViewConfig: { - // showFlashButton: true, - // cameraSwitchControl: "toggleFrontBack", - // }, - - // Specify custom paths for the engine resources - engineResourcePaths: { - rootDirectory: "https://cdn.jsdelivr.net/npm/", - }, -}; - -// Create a new instance of the Dynamsoft Barcode Scanner -const barcodeScanner = new BarcodeScanner(config); - -(async()=>{ - // Launch the scanner; once a barcode is detected, display its text in an alert - let result = await barcodeScanner.launch(); - if (result.barcodeResults.length) { - alert(result.barcodeResults[0].text); - } -})(); diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/.gitignore b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/.gitignore deleted file mode 100644 index f4702997..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -App/build -App/Pods -App/output -App/App/public -DerivedData -xcuserdata - -# Cordova plugins for Capacitor -capacitor-cordova-ios-plugins - -# Generated Config files -App/App/capacitor.config.json -App/App/config.xml diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App.xcodeproj/project.pbxproj b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App.xcodeproj/project.pbxproj deleted file mode 100644 index bf705a81..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App.xcodeproj/project.pbxproj +++ /dev/null @@ -1,408 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 48; - objects = { - -/* Begin PBXBuildFile section */ - 2FAD9763203C412B000D30F8 /* config.xml in Resources */ = {isa = PBXBuildFile; fileRef = 2FAD9762203C412B000D30F8 /* config.xml */; }; - 50379B232058CBB4000EE86E /* capacitor.config.json in Resources */ = {isa = PBXBuildFile; fileRef = 50379B222058CBB4000EE86E /* capacitor.config.json */; }; - 504EC3081FED79650016851F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 504EC3071FED79650016851F /* AppDelegate.swift */; }; - 504EC30D1FED79650016851F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 504EC30B1FED79650016851F /* Main.storyboard */; }; - 504EC30F1FED79650016851F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 504EC30E1FED79650016851F /* Assets.xcassets */; }; - 504EC3121FED79650016851F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 504EC3101FED79650016851F /* LaunchScreen.storyboard */; }; - 50B271D11FEDC1A000F3C39B /* public in Resources */ = {isa = PBXBuildFile; fileRef = 50B271D01FEDC1A000F3C39B /* public */; }; - A084ECDBA7D38E1E42DFC39D /* Pods_App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 2FAD9762203C412B000D30F8 /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = config.xml; sourceTree = ""; }; - 50379B222058CBB4000EE86E /* capacitor.config.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = capacitor.config.json; sourceTree = ""; }; - 504EC3041FED79650016851F /* App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = App.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 504EC3071FED79650016851F /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 504EC30C1FED79650016851F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 504EC30E1FED79650016851F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 504EC3111FED79650016851F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 504EC3131FED79650016851F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 50B271D01FEDC1A000F3C39B /* public */ = {isa = PBXFileReference; lastKnownFileType = folder; path = public; sourceTree = ""; }; - AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_App.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - AF51FD2D460BCFE21FA515B2 /* Pods-App.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.release.xcconfig"; path = "Pods/Target Support Files/Pods-App/Pods-App.release.xcconfig"; sourceTree = ""; }; - FC68EB0AF532CFC21C3344DD /* Pods-App.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.debug.xcconfig"; path = "Pods/Target Support Files/Pods-App/Pods-App.debug.xcconfig"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 504EC3011FED79650016851F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - A084ECDBA7D38E1E42DFC39D /* Pods_App.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 27E2DDA53C4D2A4D1A88CE4A /* Frameworks */ = { - isa = PBXGroup; - children = ( - AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 504EC2FB1FED79650016851F = { - isa = PBXGroup; - children = ( - 504EC3061FED79650016851F /* App */, - 504EC3051FED79650016851F /* Products */, - 7F8756D8B27F46E3366F6CEA /* Pods */, - 27E2DDA53C4D2A4D1A88CE4A /* Frameworks */, - ); - sourceTree = ""; - }; - 504EC3051FED79650016851F /* Products */ = { - isa = PBXGroup; - children = ( - 504EC3041FED79650016851F /* App.app */, - ); - name = Products; - sourceTree = ""; - }; - 504EC3061FED79650016851F /* App */ = { - isa = PBXGroup; - children = ( - 50379B222058CBB4000EE86E /* capacitor.config.json */, - 504EC3071FED79650016851F /* AppDelegate.swift */, - 504EC30B1FED79650016851F /* Main.storyboard */, - 504EC30E1FED79650016851F /* Assets.xcassets */, - 504EC3101FED79650016851F /* LaunchScreen.storyboard */, - 504EC3131FED79650016851F /* Info.plist */, - 2FAD9762203C412B000D30F8 /* config.xml */, - 50B271D01FEDC1A000F3C39B /* public */, - ); - path = App; - sourceTree = ""; - }; - 7F8756D8B27F46E3366F6CEA /* Pods */ = { - isa = PBXGroup; - children = ( - FC68EB0AF532CFC21C3344DD /* Pods-App.debug.xcconfig */, - AF51FD2D460BCFE21FA515B2 /* Pods-App.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 504EC3031FED79650016851F /* App */ = { - isa = PBXNativeTarget; - buildConfigurationList = 504EC3161FED79650016851F /* Build configuration list for PBXNativeTarget "App" */; - buildPhases = ( - 6634F4EFEBD30273BCE97C65 /* [CP] Check Pods Manifest.lock */, - 504EC3001FED79650016851F /* Sources */, - 504EC3011FED79650016851F /* Frameworks */, - 504EC3021FED79650016851F /* Resources */, - 9592DBEFFC6D2A0C8D5DEB22 /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = App; - productName = App; - productReference = 504EC3041FED79650016851F /* App.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 504EC2FC1FED79650016851F /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 0920; - TargetAttributes = { - 504EC3031FED79650016851F = { - CreatedOnToolsVersion = 9.2; - LastSwiftMigration = 1100; - ProvisioningStyle = Automatic; - }; - }; - }; - buildConfigurationList = 504EC2FF1FED79650016851F /* Build configuration list for PBXProject "App" */; - compatibilityVersion = "Xcode 8.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 504EC2FB1FED79650016851F; - packageReferences = ( - ); - productRefGroup = 504EC3051FED79650016851F /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 504EC3031FED79650016851F /* App */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 504EC3021FED79650016851F /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 504EC3121FED79650016851F /* LaunchScreen.storyboard in Resources */, - 50B271D11FEDC1A000F3C39B /* public in Resources */, - 504EC30F1FED79650016851F /* Assets.xcassets in Resources */, - 50379B232058CBB4000EE86E /* capacitor.config.json in Resources */, - 504EC30D1FED79650016851F /* Main.storyboard in Resources */, - 2FAD9763203C412B000D30F8 /* config.xml in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 6634F4EFEBD30273BCE97C65 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-App-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 9592DBEFFC6D2A0C8D5DEB22 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-App/Pods-App-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 504EC3001FED79650016851F /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 504EC3081FED79650016851F /* AppDelegate.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 504EC30B1FED79650016851F /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 504EC30C1FED79650016851F /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 504EC3101FED79650016851F /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 504EC3111FED79650016851F /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 504EC3141FED79650016851F /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 504EC3151FED79650016851F /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 504EC3171FED79650016851F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = FC68EB0AF532CFC21C3344DD /* Pods-App.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - INFOPLIST_FILE = App/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 1.0; - OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\""; - PRODUCT_BUNDLE_IDENTIFIER = com.dynamsoft.dbrjs; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 504EC3181FED79650016851F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = AF51FD2D460BCFE21FA515B2 /* Pods-App.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - INFOPLIST_FILE = App/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.dynamsoft.dbrjs; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = ""; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 504EC2FF1FED79650016851F /* Build configuration list for PBXProject "App" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 504EC3141FED79650016851F /* Debug */, - 504EC3151FED79650016851F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 504EC3161FED79650016851F /* Build configuration list for PBXNativeTarget "App" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 504EC3171FED79650016851F /* Debug */, - 504EC3181FED79650016851F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 504EC2FC1FED79650016851F /* Project object */; -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d98100..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/AppDelegate.swift b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/AppDelegate.swift deleted file mode 100644 index c3cd83b5..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/AppDelegate.swift +++ /dev/null @@ -1,49 +0,0 @@ -import UIKit -import Capacitor - -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - - var window: UIWindow? - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - // Override point for customization after application launch. - return true - } - - func applicationWillResignActive(_ application: UIApplication) { - // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. - } - - func applicationDidEnterBackground(_ application: UIApplication) { - // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. - } - - func applicationWillEnterForeground(_ application: UIApplication) { - // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. - } - - func applicationDidBecomeActive(_ application: UIApplication) { - // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. - } - - func applicationWillTerminate(_ application: UIApplication) { - // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. - } - - func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool { - // Called when the app was launched with a url. Feel free to add additional processing here, - // but if you want the App API to support tracking app url opens, make sure to keep this call - return ApplicationDelegateProxy.shared.application(app, open: url, options: options) - } - - func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { - // Called when the app was launched with an activity, including Universal Links. - // Feel free to add additional processing here, but if you want the App API to support - // tracking app url opens, make sure to keep this call - return ApplicationDelegateProxy.shared.application(application, continue: userActivity, restorationHandler: restorationHandler) - } - -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png deleted file mode 100644 index adf6ba01dbe256605c5152ac1fd78ae99aaa2a8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110522 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 C`SD)> diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 9b7d382d..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "images" : [ - { - "filename" : "AppIcon-512@2x.png", - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Contents.json b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Contents.json deleted file mode 100644 index da4a164c..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json deleted file mode 100644 index d7d96a67..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "splash-2732x2732-2.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "splash-2732x2732-1.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "splash-2732x2732.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png deleted file mode 100644 index 33ea6c970f2df1db62a624a55e5bbcc4ee07bbdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41273 zcmeHvcT|&E*ykHSBNh;JqzD9IP*5R&N{28KWdx+DfKoy+A~p0*5(h_Mq|A&6C{o0s z4IrrW790>}s47hX2}MA_5F#akkYwMy(b@0Y^X=~0{cF#j_^9ymWWx9d1}tXhO$0N5J<3{VjPZXQ0^5P5g3r0=1E(An$eEP{IDp zMfHmTCfJ)^KSl*%FGX2i_K5QF(7mpJGLkol&;t$lVME;HBm8{*gY_Z|6(GBMV4M4E zq=G!uCB(;2;Ro&m#AvJsh>WhaZ+AWT|*nGeg>(o zrK+x>r>>)?sUiRMr2sxH==u#kTlD#_&jSBusBkkRBtQ>|3=a=i3qPfX3-Uy2=<4bs z)isftnyO$A)!<0~5Vr_b|6s*$7SPyWk07sr5HFm+JlCR|J1#WDPyrk%Zwh_^|C;p= z{t6Qa7&5{w0I8v-&Ycp}@w&&q{Q^RRe4&S5_dsHOv3^+pkYKQ{#=m_7ZsJ04!8dXL z6Vv~G{GT2GLVNMzzt8wD$KvPr?<0ak&V_-~_zK8>**o}hWB?Xviw(ww26`9jKleUTPW*qLzXu&kypOx=Hcbfor21L_yQK~7J@ZY;I5jghNh~f z?q!WLdg{7*n(C_RT6*g0ysj5<*S&5;{@YatTw1XAWsTE%8oGMwr~Xq{&}FW>g}D81 zJ74$EyMYVxa|0*r<>%&!MF#kLD#-r}qn-)Q7Z(IR7#!WH|M>e0CMMQFxEo%+;0M9B zrf20ZoHNnV(ACmX)l}1fhI{d%-Ua{Q5I27h>;<%;0tk+pm)CVY>~(kSDJ?fmRjh}m zuIgz`4_#Gv53TE}ZaOz^Xlb}>VX>z*zkMH#^9bd-z_;&T|3Cb`Rgf1Lf^NS5*LJvp z$@Lw*AH9OXRgL@_I+w74Ut7Lj@{qgexp{EIz)-=1yZ+eg3SWQi^?!{3&usWjENJw9 z;TODa!MGbC;ch|LA3Q;{{;KogZD z`?U!?a^tct_eI`YLxY^uw)y^dMVjIvVJ{Qf3NPt!XGAAj-Q*8!@N4y@?%YKCa(r}$akrvSez9|1lBd<6Ii@Dbo6z(;_O03U(>ZxCoTne3{L zSm>r@hi}9pOg~L$(dZoK@uq4j6O_Nic(an~Wu_drNe`O6*2I{t3p_2(LO`I#BWqjZltZ*$)!bsmZXBi9N@>B>s(W`by^`W$t5K<&Rq;(12&xucPo z9@P*22i3KmKUj>_oqL7WCDJVci;s|<9GEaYtr%; zMJDm$zyV!u-w0g6a1`|k*di)wC;?l?0h=f1(GN=59~fiXr{<@Bo}WqVOj$gHsA5_H zAqdW62ArVV_sFO!8k{pRKK%mMNPv@5{UHwHtP^5vyc;G=?43Z>9YPvbtpY~I0`fhA zT1}sWQFI1Y=Qk*nTk#L7zQEO3kWWj{P3AV6dC_T-=-#K+ZK~^%rcv zok$;gSx_YfU?q22j}k)h(X$crfLe3n2pMR}GNA;oRgR1K=jyr*%fXUY zq$^DGT=;%J^D=XGD4P&$k$45mT3@2QwNJ4ZnFJ#Osn(J0WfLd8G#`VcOG*9;t;v4K zZ=Y!Q0-49xf`4x8D+SUT2ETNx!}HSWy^Yj%?`MtQaI&843Qu{{06<})0fx!7Cuzk> zX34hHSog9VT%fC_G34Ytr~9!PZ^*ui*^w98Hlo!-A}M>&8qa5&%~fY#wnOG;iw_(L z#Rr377_oN_W^oGeCqIBo4r&SKEst-r8XfVFDWd5ko~vi0w*9vU?go}01Foq=t0iZ| zc~4!MB8_A5ct7)`E)v(0*^_2>MXQMw;L! zVPd4w59l>7_`t5)dZZT8eb{pMKL=yfOg71gFk}#5lBCitiJDKVOO6-mowCzo- zxvI%`Bo@l9gSoxE>6vV6*Jz$-8$S?zk7XT53Q~31{$f+M=k)=g`%#?cxb0O>;Ew0j znu<#TbQ7-I0B3o@>D~p~{r@Y0-xf^*whbdR9f3pDPfBxMrH*kQ==#(ty9V7b-5lhEfUDA0vnWX$jKRBGnt~ z4KVEZWqagPgHJN8KDZ82jH-XFRSAo{a`4UhgJrunDJ*epvFh~x@MHlCE`0#5COiH*ZS^W5>|&;Znr4Kv-f9zlzp16-m{ z;isz8ft%VI`!=ada z;yBG=?z7_eg{Mbvc0tb=2&=x7WdJ_a)GO#4r6WEkRL>AN2q+k;B8#`Hl3w1T** z4s{e_0os{9!Gwg&E$Y&7n0hKa0egfPq>x|rS4@wO(3+S)_0YKXJ^K9cc8gl8ea$M+ zqE{{ua7?SH?*P*y3&_O1AcQd265QVZRILG1msNoHg?bmlBVgQb4mK!VfR+sg20BV4 zP+<)mM-BYR2CK%7OZils4bihtZ51dKYNdn;o(K)4HN5a)mpwOpM&9(7ca1v6vy}na zT48S!$anQkvx><*g38VNNNXIC&!uF!7qK?O<@C0K!bm|#K&DWe4q#$W;1{Yt-38J# zosL|4K$;icS*^6w?7csxZ=$(A;aA8DMBAZQh(NSND&lFV4h-WS?Y&idV)jG&t{*Zmq7l`*;h))3u2RCU4@o$9Z=O+@{^t~pgV$aj6jU?XSh0GtYwiID9=44` zg;qBXUs0I44MjwZJj4+JB(D7hR7bU=m{Jb&6FUg7&rqE?$!a(iL`tP2O|sY<#NiUs zsEcBkw;kut^JMAGjFHd}ohUUm_0JVc<<;n`2;JCea8q36g~lxhp4{zD1M1lRX$i%F zQ{{|l92MtGwELC%Vy#=ffRq+FNRVRZ>a*Zj#>f-kk{2nh;4SG7A+2Mn)H}6j(su}i z{RE@j*qT_#@nI@M?!XAJq%e1a&`cg#={-y{=cqg->DN|SUHN<$cdp&0UobNW5Th+- z`3*E&L)p_DJ2{tgs5=;=-J9k0r1T+^^#WLW#1DtXtw-n4SDjAm=h#`o z#Fl-a-xs)+OxV4<=L~Zl;B3}S1#9P?xv@jbOg|4U;{Lb#BfTS#ry%S~)^BpGxoy$= zxQPS|ySI+rXL~9a|69)Pj{`OHIR=Z7fLP#HMqT|d_!vvDU3yKx%z2EqB;34pXEt)w zmpFB4aj`Qf`>oOGt}j>Gx5gLhXm>|H%UJ2CKu;0Gw+k2Sw0+{=$epJ|>EUX+*8M2ts5*cZzCS&brN+{`W0Af2@%W9Nc z`%eF~(7y2Lo*maV5srqoDv^y25EgQhPwh3Be)@FSRSssx;Ui$z%=UZ#(=!9oXBj!y zEU)6#)%2;WX2_4CxzCf45%&jD zhSga{3WdAFottIx?L{ds8-O> z#Z5OaRu&t%?2wH~uPDZp4o-OwTr}g3sr3kti|=duw^um*vQ#^#7oI%yZoA+&!{LJE zgaqYT$+A8BZMuWTR+Fp8#_kAq9oMdGSSm>;F_Tz&1K+vNXG%ZoJ79sh+@UH{zo41@3VK)T-maPlJ$~>@EFl&rwKR#pDt^&Ef&S{8sjnVCgwP);+ zuhzpA+;2uwsf7ZOOGNTsAi-^?F_>*G-yGq~@$Ds1M14y7)5v4N!=OP1p?mTC$S(n07-#s!gT4Sin=ADd8SSY@ygkSDd;;zu- zeqpW?trSPk+=!X7bs~fhEx26si;)T>7qM_%lW)uxvZObkU6shon9A^G`^UIt2W6)E z-@0=X6k466XbM6154CP(wAU%14ALO+7q~tSriG7yy6V%NsaLk2nd9Yh5au3CTm9UL zl)Jn3z7R?|Cz5wEcC*0nZ`;R+ayx;{+LOY!hNOj6T`Hr0bFdW~Si0x-9d~#-yCIe} zXyDGdPDb0`uY2Zf#S!co}0fI(c;WX7el5=)1U~C--L=y{Cp7 zSe9X{LZJ=<^6ojXl^MvT0~luIrc4R$5Ow4Vr2y@TBw0eV+~Qbu zO*m_Jf$TWaX3l#n*s8-5C3bAt=tqwFcnPhmAYy$ns15sJ9znTL&7 zy51R+oyM08h_hm0H{{S`SFTwRR8_%D`ApZl5rVaVe8)@S(Dy;MJd5d2T9;bfzx`f^ z^P4i(xg2ReOG*;HC7va+HJb8SY29{i=T@=mf!9YVrpz?Mr+Zdn93@;;K8f}l8GZi! zfR4J_>r?x)3|ZoB4FKnZ>GTY04M6Mw5vk*8b2%GNtIqkHp7K|J)A+t_~fnv?uNVao>B=>9anCV;w2XsnG0Ttnla%8=8wHTRw>o+Tbj#v5}Qx`NCG>w+#qyJU(bcTe~TS_V3M)*Wd- zcL%O_I8`kx(&jOlW7J+2WlmyYv}=B5Lq*v-zV;d3S;1)idd$Xw!0Ei_TT}I4g%@6% zQZn`;^{(9D=tPRXnJ*{3a`TstUP`-X->W_Sod;57J5F)KWDgX85rf%=vMA<15nHr^ zj9CBQs2%5Eh2O#4tJRFFoZA9zn3uPsT3w0K(K+zfMXc0ZGF&cgp;TFQ+Pa4P52I|r z-fo24!5A#ag#ObZQ{JX9{ds{g4ra`+D50}09Zfz%hfr!l>W|*lrafOw!K9Q2Uu8{$ z;-bGc6jqZMU$TLjqwOrH5^4?j*c7;T|KR3hg>()xLrXRstP3bZhU0n3uR@f_WRLA? z&RPrS-NJfq%6QT$ruy#@I~|1nLj3bB_B^bLsT`^=@OXGuB|lzjaRqmJcITG+ZolKk zR|!YvxYKTRJHYil;?;iG;BW~hicTn#*yC{6bCMosH_K^gIE(UY7?leK`cc*6o}x!j z*2h0TMRCm(Qb*_xGCN~TdL(>SfzhWZUd5#Cdx&-Kf?AnPOGp?sn}i=?n^sfQ%8%d& zlrd48O;?8IPmQ8kdvLEZHk#F1AK56|bdKFj-d4;;FN!!e6FvrLpK7$GK zIZ6F^1B%1&zdFKDcG_G2h>1g4_A>+LJ{#CX&-Ho?yNz`Ay_(NWJti0ZYd;qV z-nQYmYCudq$=Yhh5+aFL(cUHW6 znQfob|9UsYdc0A~+zY_)O+f@yZTTLAi$)jB# zXDa3{{l>b4FxX@K`) zu^RnoFBXVypIA-C#?HH^3bIiW-Aixv$Q)ALNGNRU)X>FEykzuiEnh!z;7x|Oq{xRD zzY2`DD0kL!l2Bw#$`wWe_BgfjmBtU8P_I;s^fdFO(zQmy`{m?xK}pe^l+Cq!ve4?fX+LXPoRQqkId%u9*wq)euW=4nsHO;;o7znw zg7wyOywx$`txj}S5MV{PUhGYeEpKW*SU>hBEbAd-d>_WnUUF>4zT~Hbgt`^G7_SOl zqUIpm$63w~|F)(eV~map1eUws576p8 zXG%^jP1CC?dXm{5&+xVRC=tO=im;C35tu!$QKwkjT^gBibyT3#Q7MZ8mUsbDxKfRi zk?>YRK(YwRWqHDfY~5qJt{zHTiz8H!L(0 zRw*Z}E?eCh3044daZi%WCD2Lb9Jtn&m3Oz{pj)?&>EpFG0-@|{E~Fd085p1CPGp4* zmbDC64E1@`XzGLvS!AM6XxOacXKK&e3f51Q$~~PP&cw(;&Q@g{?$43+kcnvL^ zZcW^zD6~;b3W{-2AkzJE-~l(hymPCqTi~>JEP+~HRQSsbK(W+BC|Fh-=hE$X{8H`oEV%ugZ?}GpVLf!N zRsE7h{wsQhIah~wK;3@tU(h4&K1*@F-^V`)%9#Ir;Zylodb48F(D36E3{FOilXPh)kQb#RSvT(jS zUmgV0{#vEAd&JYPgXUKPc!xJ~NiT|Kg8Mr*Pn8EbgC)fmC4bAB>$&C>kfX@~xhg_A(dj!7V;de`$7A?)s@Cu925UuEtMAXS(oUq4H=h;#Xcg4`r1e z;=DaJMGxC-!L0``$ECJhH+If7a`Dqqa_4|bEuteb=jH2h)RG~q&7+L1{*3vvZ%*xb zw81L6X~m02Z~&CQw8n*Ogv2c0qYawgF`}0&#ePafn%w2gVR8}Hi$N>fVIK@p@j};b zPX1N9VIV5MbxK5u^R8;09xsh}vR4sS*ok{0kYDD$uiJn~ZNJOgrGMZN0=%LhtVdmY zlCIT8$b3LrAXbQBKPY3gqdlUBV|=qqXR4P8a;+;dtE$6tPQ^AOCVLkH&VD#4q;7ff zU5Zg=#cEG|#8f0SSl3q&%}1<&yT*J!I_V;(ToAt;g!HpN`C+A5u*H7BBLYk=OZ1$I zYL0Kd;tn-$FI^@S-?0!XD_2MkKs9_$5&DE&jCd2~kO-2z63^^Kh=xU8ard@iYRf^& z6Ok*FiD?p^biAOS$_!y;OA{)pM-uih`(Qn_2PqfEn6_j2JF5u?D5lvQ%EWqznN-+G zG8Qyh#;x!HC(@^dG{U*Yw5KtBdGoQ5 zOXoA#z>>7hhMwqT$&ks@xvi1nP<+onL2)yG+%{sn>ecm~*pp;`vQ20Qw2vEmLfg1Z zgO?mA2^8{coBL;1M$f}!7<;0~??kiWVZNhtO94OUh$cjU32PQSAhfBP@*}Y~WmG{R z_V*w5dVcV`ZJc!2+#q<^fICxlC<_)LgDkbssaUwYQBoPJkRQsS|IW6p$o+*yVHpVL zoljDPx$6e1{3>ccHg7;&?WUlUZJ+Gz*Xa;X@BFOF#@-KdupIwGYVrBA%g~C*{{=0y zj^+sNRd>epVsFhKEPriIUwVVzCT3#j(9xSuR>P%d$HuG->#31|MGi z{-IP`yZfJ?bvQ4M??ZjY?4G};cXFR~$ANg8O(sSHbVI4O<2yB|6kLWTAu*wtwMWJ8 z%x$gByko-NRn+o6T_T1h8c%lsjRurKDSE3|{hBH56-T@_+J;oqu-@lQZ$9l(NHA&S zG!>oPM;p@sr3JNoHBo7Lx+NG`Z5v*XYmdq8t|A6TBa&a6$_^emW|JY)y8RT5eiVI@ zy>(2K`hbgr!->#FS9!3tG6@!Z!i%)qsMDbX2M{*igW}a{)s#(6FK#7t`F9NdMMZF1 zEJDtDE76bnH7~Atd8;k-D;ZLbI#TgI+lbwqGmC>P6k2Iw1}QOMa{q11ZRvS7NHGf$ zbK`D?+=!3~=F!aK#deTKFn!JF?Oa8W#C`UdUtO~ z7s%WVg%t|JUyRnCEBC|s&~p!6RK|iihKT4*_*#)Jowq-xeq9KsjENK^E2GXiUXKpu zCrB?cc;4sMh|rRaaJLX{5At7dUKbNv^(AhuOYXmUO3<()@w%2iMq9nRy zcuKL$35#5p>=8_G>my`80fJAu8mc_rxZGa1@`F^EX`1-FWfoVK17c!aWtNNpn{ra% z<%Wgc8-C1DP8Md(k~K=NAYc*XUT1dq<5dNLnU@7M$yin(#qyh!aNRrg`de9|vZTgs z=aPeQGPrlA--2Ny@?WHa=_^!$Fuo1F1^lQ+lErLg*Bvlviz=I2wc?~+TAqK;05x2i zph!xMMQezKs)>9aCdL9lxA!Rshy?~#tO9d4*m|fS1fX6arXJ(feVceFDidLlkA4J2 z67d#fdu7rYuiwJZ5A?k0hZ&_s|J-;oma?j`PQ1f@6K2pl$H*S$M9$2455(7$2!ge* z*TZJTjiN@kCG9T3Kvz@ZX248{j?{T9B3Ids>#T^4U9QYEf9H|dEaKSpykPAPBk1*2 zjquirntl7$y2spR#tp!`-1EEBR8sZ_x>3Pc{XTAC!>qA6(%w1M_U01-v-@0>iGn-_ z5q%5R)twznV-djX)OWG^7F2388~Z7#;u(dC$YOTi@StWQQY*UC^<+L&G;qLza`n@k zhOC^x&7(f(#NgCd92T$A_fD^xcLTxzgp{<=7#RI%gCy05lG+JaR4mnbj*r#ihD985 zUtB%vs#cKd75BISg=x_yk0>jt#hg$`(Sxh^f*YZIh1xwpq))Gk@mEL^OCv2$(B+*T za;=MO_xi#Bw*=mHmy|6h<;RS>L3ewdQ^4X72H& z)u(S$POfsQ(TU1fow}1aW}-$;^?S+SDbi=TN_P8mU;p^^em`NNbRdm;eo8SESL)`NQkC{AS*5A<7pB zFQ!|+TwUs3_LU@jPJ%1b#!XXS84!buW;nldCr@PZitRD`G0d>-QgYS-;LYf#?v=1V zyXY5#9iyr3n5FrROIoXdccW{Gxd}lv_-NkX=HE0uEaQ`&tjtU&x~lYI#f^KqNLiG;V;jyIfna}9tag&JSeG(kf7kBq+Oez{*Vl&wP=}j1ELCizgPxa zoxNN%?ctfa`~;-3NjFdEa!mwbPN;S5hUf1bTMIM&W+!>UIR=Zk8t1WFu?+Oy*-%Y zbolyK>Lu7>gE%6*WXlTW*de)tm;&3Zd6;CHljBV%PfAJ8~GJCbloEcg8dAS4## ziQrCssT=In6FYq4;d^!OV56PIg-cbzW6WYGLkx)F2@gYP>?E;TDtd4A>Xo6Urze&v z3D-m%cH|8XIj~z|W6qQdtUN$Pj|jDX+$xXQv~^-FFFslFpT*PTI;1&^x3$t;kEOkS zB5YF*$>GinUe?&WJzP6Oj#2ctDxhih{DXt{JYg&u{7BkcK=TseIGjL+>iP^X(aKMv z`hhxo0r|pE7+99}bZ;tpo4<1)G~>R&;ujUA>GlBI_XhndVb!JC{?1$|bZU61M&mU0HRn*|OxQm(bP zV4Xlu4~u4*Cy$;#=qqw_mc98?Bi(?a36<1RzJoSr*QHvv4!f6H;R&=mZR9vkcmK&G zooIWhvDQy-?p7zx7DqDUF92vz+OsXv8l-nx=U}aL?lyOY^Lu2NcwU-Bad?%@T~IKDT>;Y)-?E2(e?9F~vfy*IgtgdwxBo zyu|7Ll6c94GyVzn@nDx;y>*wmpzC~15r^jm4BoA(lVCD@W_o#MO$I_EmbD(Iv zt%#R%brPX%uLrzVDE8(qnFZb?%ZUCcnBOn>$#898>Cnl{r>`@_b);w`>>fdLzyhL) zSBJ^6%k|``AMUdk@P+SpmXZ$0NQxAXc~avIk3nw0ya91sLIR^4l|o=L1NGB4IR$7{ z8$~mz!X>%@qhYW)={>UBX672O`UTdO$ucnm+QEwJ3)5Y$oQs`=+(p#=S0kXy1$XHP=5>Ha zwWm-UlLvqg;F-sl*@&5rFKL8O2kpYyG{Y;xd%X?@1k0Kug-qg zwT%m&$G#}ocTV})2bYmHz#B}~9ztM5LsFns5xiU2P!fb1p~k_E^POp74A|RP=Tpat?4`T-SBmGyQoH~Vf zQ8Kld?0*WFYuIquiL1zfu}!>4RU^TU+c&;%RbM5%C_Vq^7skSqi+}|?%6Eerh zMQ`XcnJikGG}P@axXjA)W{u1psZ zd{M&0f4C=Zv>`!XGj?+XiX4Ofe0^trjfFAk>{Ux#(fLH3Xg&NgA&IjA7nu#@I*Z^{ z?g<;wbcF8TnSn>PLX21Mi$R?iX5%E4nX|Uq(uno|n5z+RT8M-4zFsro6kMsOxa)%#sL0 zujcQOY?;=}`bd!7tXO|*fQ|(+5Yj0{8>hC9RSgOaQt}mJ*LxA4`f^f8>lxEtkotU= z`&Cis9Kuh6_4!Uvea+QY*OKTj0c>cDO0aVi+9!b;e;-`<3OTBfF&eCLaL+0id%h%f zE2b~#ZZ%$c``DL$P6bM}0#5QOx4u2Fw30zto1zZ-bMF-LpQR5OB?-A(zcE%(5eMnp zN7iMG%U+0JBl^T`;yX)~yq(W0rb&y@>L8S4M0xeC`_vC9$XG=el7__gJUMIRgh2bs zQ}no3^@{ZBaX|E(KpyXO4rgJ0q-wsrx;&~fa*h3SRWryp2VxJ%fwcWE7!R4rfmA?wveyhr;mPwc#C^T~p<% zE$AwQnCcOART=B)BbERfJe1p>5gS-d?v@*zdR2MoY)POc_fP;xk%GKu(iN;+R_i?# zQZEx&vB!UOy9k7=HUQc+ZGb|)r4-RE6x7)>1cDv!OA`P6OU~Fx8%4{)AHnpQdy1na z>S}A&{(Su9_T)KU-xIvP%`w!ln1#c%t>gqPLDxkNQpp=VXdq1Ve+Um)pWAL4yASi` zF5L;Pd;~gwhx~B74YnjOm>_<}1Js`td(;iT=5#S^6KO(^9gi(yS_a$9_C9NB_OhY%h0HQEdjo=m(jzU!nZY%Rw z?w{P3>shEY1Ge}b`S3t4!FLLNDDXpp9|{lx{7~SB0zVY^p}<9euOGig0$(-rlZtPy zz)z+43FKE_;Pd0Rpx{>(_(hkmzQE^4K0osL5ki0;3j9#uhXOwoKm_;#i7$}8QUQNg z;O`3jU4g$V@OK6N6$E|-=_?cR1=4?6Vc#|ARQe$B*9vbgOc%~sqMx31{pr5}7WQ#E diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png deleted file mode 100644 index 33ea6c970f2df1db62a624a55e5bbcc4ee07bbdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41273 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 diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png deleted file mode 100644 index 33ea6c970f2df1db62a624a55e5bbcc4ee07bbdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41273 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 diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Base.lproj/LaunchScreen.storyboard b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index e7ae5d78..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Base.lproj/Main.storyboard b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Base.lproj/Main.storyboard deleted file mode 100644 index b44df7be..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Base.lproj/Main.storyboard +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Info.plist b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Info.plist deleted file mode 100644 index 18184968..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/App/Info.plist +++ /dev/null @@ -1,51 +0,0 @@ - - - - - NSCameraUsageDescription - Decoding barcodes from video needs to access your camera. - CFBundleDevelopmentRegion - en - CFBundleDisplayName - dbrjs capacitor - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - $(MARKETING_VERSION) - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/Podfile b/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/Podfile deleted file mode 100644 index bb7762ae..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/ios/App/Podfile +++ /dev/null @@ -1,24 +0,0 @@ -require_relative '../../node_modules/@capacitor/ios/scripts/pods_helpers' - -platform :ios, '14.0' -use_frameworks! - -# workaround to avoid Xcode caching of Pods that requires -# Product -> Clean Build Folder after new Cordova plugins installed -# Requires CocoaPods 1.6 or newer -install! 'cocoapods', :disable_input_output_paths => true - -def capacitor_pods - pod 'Capacitor', :path => '../../node_modules/@capacitor/ios' - pod 'CapacitorCordova', :path => '../../node_modules/@capacitor/ios' - -end - -target 'App' do - capacitor_pods - # Add your Pods here -end - -post_install do |installer| - assertDeploymentTarget(installer) -end diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/package.json b/barcode-scanner-api-samples/scan-single-barcode/capacitor/package.json deleted file mode 100644 index 120fc430..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "dbrjs-capacitor", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "build": "tsc && rollup -c", - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC", - "dependencies": { - "@capacitor/android": "^7.4.2", - "@capacitor/cli": "^7.4.2", - "@capacitor/core": "^7.4.2", - "@capacitor/ios": "^7.4.2", - "@rollup/plugin-node-resolve": "^15.3.0", - "@rollup/plugin-typescript": "^12.1.1", - "dynamsoft-barcode-reader-bundle": "11.2.4000", - "rollup": "^4.24.0", - "tslib": "^2.8.0", - "typescript": "^5.6.3" - } -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/public/index.html b/barcode-scanner-api-samples/scan-single-barcode/capacitor/public/index.html deleted file mode 100644 index 22685d65..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/public/index.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - Dynamsoft Barcode Reader Sample - Hello World (Decode via Camera) - - - -

    Hello World (Scan One Single Barcode via Camera)

    -
    - - - - - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/rollup.config.mjs b/barcode-scanner-api-samples/scan-single-barcode/capacitor/rollup.config.mjs deleted file mode 100644 index dab19334..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/rollup.config.mjs +++ /dev/null @@ -1,28 +0,0 @@ -import fs from 'fs/promises'; -import typescript from "@rollup/plugin-typescript"; -import { nodeResolve } from "@rollup/plugin-node-resolve"; - -// https://rollupjs.org/guide/en/#configuration-files -export default async() => { - await fs.mkdir("./dist", { recursive: true, force: true }); - fs.cp("./public/", "./dist/", { recursive: true, force: true }) - return [ - { - input: "./index.ts", - plugins: [ - typescript({ - tsconfig: "./tsconfig.json" - }), - nodeResolve({ - exportConditions: ["browser", "default", "module", "import"], - }), - ], - output: [ - { - file: "./dist/index.js", - format: "umd", - }, - ], - }, - ]; -}; diff --git a/barcode-scanner-api-samples/scan-single-barcode/capacitor/tsconfig.json b/barcode-scanner-api-samples/scan-single-barcode/capacitor/tsconfig.json deleted file mode 100644 index 35e8318a..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/capacitor/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "compilerOptions": { - "target": "es2017", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], - "allowJs": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": true, - "module": "ESNext", - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - } -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/electron/README.md b/barcode-scanner-api-samples/scan-single-barcode/electron/README.md deleted file mode 100644 index 5db7f2f3..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/electron/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# 📦 Scan Single Barcode - Electron - -This sample demonstrates how to use the `BarcodeScanner` API from the [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/overview/javascript/) in a **Electron** app to scan a single barcode using the camera. - -## ✨ Features - -- Easy integration with pre-built UI -- Renders barcodeScanner inside a container -- Scans one barcode at a time from video - -## 🚀 Quick Start - -### 1. Install Dependencies - -```bash -npm install -``` - -### 2. Start the App - -```bash -npm run start -``` - -## 📌 Customization - -Please refer to sample [`scan-multiple-barcodes`](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes) or check the official [documentation](https://dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/barcode-scanner-customization.html). - -## 📄 Support - -If you have any questions, feel free to [contact Dynamsoft Support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/barcode-scanner-api-samples/scan-single-barcode/electron/action.js b/barcode-scanner-api-samples/scan-single-barcode/electron/action.js deleted file mode 100644 index 5b6f0295..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/electron/action.js +++ /dev/null @@ -1,22 +0,0 @@ -// Configuration object for initializing the BarcodeScanner instance. Refer to https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/api-reference/barcode-scanner.html#barcodescannerconfig -let config = { - license: "DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", // Replace with your Dynamsoft license key - container: document.querySelector(".barcode-scanner-view"), // Specify where to render the scanner UI - - // showUploadImageButton: true, - // scannerViewConfig: { - // showFlashButton: true, - // cameraSwitchControl: "toggleFrontBack", - // }, -}; - -// Create a new instance of the Dynamsoft Barcode Scanner -const barcodeScanner = new Dynamsoft.BarcodeScanner(config); - -// Launch the scanner and handle the scanned result -barcodeScanner.launch().then((result) => { - // Display the first detected barcode's text in an alert - if (result.barcodeResults.length) { - alert(result.barcodeResults[0].text); - } -}); diff --git a/barcode-scanner-api-samples/scan-single-barcode/electron/index.html b/barcode-scanner-api-samples/scan-single-barcode/electron/index.html deleted file mode 100644 index d887df60..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/electron/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - Dynamsoft Barcode Scanner Sample - Hello World (Decode via Camera) - - - - -

    - Hello World (Scan One Single Barcode via Camera) -

    - -
    - - - - - - - - - - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/electron/main.js b/barcode-scanner-api-samples/scan-single-barcode/electron/main.js deleted file mode 100644 index 452d42f9..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/electron/main.js +++ /dev/null @@ -1,29 +0,0 @@ -const { app, BrowserWindow } = require("electron"); - -function createWindow() { - const win = new BrowserWindow({ - width: 800, - height: 600, - webPreferences: { - nativeWindowOpen: true, - }, - }); - - win.loadFile("index.html"); -} - -app.whenReady().then(() => { - createWindow(); - - app.on("activate", () => { - if (BrowserWindow.getAllWindows().length === 0) { - createWindow(); - } - }); -}); - -app.on("window-all-closed", () => { - if (process.platform !== "darwin") { - app.quit(); - } -}); diff --git a/barcode-scanner-api-samples/scan-single-barcode/electron/package.json b/barcode-scanner-api-samples/scan-single-barcode/electron/package.json deleted file mode 100644 index 96e25a02..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/electron/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "dbrjs-electron-sample", - "version": "1.2.0", - "description": "How to read barcodes from a video input in an Electron App", - "main": "main.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "start": "electron ." - }, - "repository": { - "type": "git", - "url": "git+https://github.com/Dynamsoft/barcode-reader-javascript-samples.git" - }, - "author": "Dynamsoft", - "license": "ISC", - "bugs": { - "url": "https://github.com/Dynamsoft/barcode-reader-javascript-samples/issues" - }, - "homepage": "https://github.com/Dynamsoft/barcode-reader-javascript-samples#readme", - "devDependencies": { - "electron": "^26.4.1" - }, - "dependencies": { - "dynamsoft-barcode-reader-bundle": "11.2.4000" - } -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/electron/style.css b/barcode-scanner-api-samples/scan-single-barcode/electron/style.css deleted file mode 100644 index 917e0cc1..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/electron/style.css +++ /dev/null @@ -1,6 +0,0 @@ -#results { - width: 100%; - height: 10vh; - overflow: auto; - white-space: pre-wrap; -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/es6.html b/barcode-scanner-api-samples/scan-single-barcode/es6.html deleted file mode 100644 index 555836ca..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/es6.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - Dynamsoft Barcode Scanner Sample - Hello World (Decode via Camera) - - - - -

    - Hello World (Scan One Single Barcode via Camera) -

    - -
    - - - - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/hello-world.html b/barcode-scanner-api-samples/scan-single-barcode/hello-world.html deleted file mode 100644 index a7b6b8f2..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/hello-world.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - Dynamsoft Barcode Scanner Sample - Hello World (Decode via Camera) - - - - -

    - Hello World (Scan One Single Barcode via Camera) -

    - -
    - - - - - - - - - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/native-ts/README.md b/barcode-scanner-api-samples/scan-single-barcode/native-ts/README.md deleted file mode 100644 index eb7d5663..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/native-ts/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# 📦 Scan Single Barcode - Typescript - -This sample demonstrates how to use the `BarcodeScanner` API from the [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/overview/javascript/) in a **Typescript** app to scan a single barcode using the camera. - -## ✨ Features - -- Easy integration with pre-built UI -- Renders barcodeScanner inside a container -- Scans one barcode at a time from video - -## 🚀 Quick Start - -```bash -npm install -npm run build -``` - -Open `dist/index.html` in your browser. - -## 📌 Customization - -Please refer to sample [`scan-multiple-barcodes`](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes) or check the official [documentation](https://dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/barcode-scanner-customization.html). - -## 📄 Support - -If you have any questions, feel free to [contact Dynamsoft Support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/barcode-scanner-api-samples/scan-single-barcode/native-ts/index.ts b/barcode-scanner-api-samples/scan-single-barcode/native-ts/index.ts deleted file mode 100644 index 50ff24a0..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/native-ts/index.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { BarcodeScanner, BarcodeScannerConfig } from "dynamsoft-barcode-reader-bundle"; - -// Configuration object for initializing the BarcodeScanner instance -const config: BarcodeScannerConfig = { - license: "DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", // Replace with your Dynamsoft license key - - // Specify where to render the scanner UI - // If container is not specified, the UI will take up the full screen - container: document.querySelector(".barcode-scanner-view") as HTMLElement, // Specify where to render the scanner UI - - // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. - uiPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.2.4000/dist/ui/barcode-scanner.ui.xml", - - // showUploadImageButton: true, - // scannerViewConfig: { - // showFlashButton: true, - // cameraSwitchControl: "toggleFrontBack", - // }, - - // Specify custom paths for the engine resources - engineResourcePaths: { - rootDirectory: "https://cdn.jsdelivr.net/npm/", - }, -}; - -// Create a new instance of the Dynamsoft Barcode Scanner -const barcodeScanner = new BarcodeScanner(config); - -(async()=>{ - // Launch the scanner; once a barcode is detected, display its text in an alert - let result = await barcodeScanner.launch(); - if (result.barcodeResults.length) { - alert(result.barcodeResults[0].text); - } -})(); diff --git a/barcode-scanner-api-samples/scan-single-barcode/native-ts/package.json b/barcode-scanner-api-samples/scan-single-barcode/native-ts/package.json deleted file mode 100644 index 03b5ce56..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/native-ts/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "dbrjs-capacitor", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "build": "tsc && rollup -c", - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC", - "dependencies": { - "@rollup/plugin-node-resolve": "^15.3.0", - "@rollup/plugin-typescript": "^12.1.1", - "dynamsoft-barcode-reader-bundle": "11.2.4000", - "rollup": "^4.24.0", - "tslib": "^2.8.0", - "typescript": "^5.6.3" - } -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/native-ts/public/index.html b/barcode-scanner-api-samples/scan-single-barcode/native-ts/public/index.html deleted file mode 100644 index 292324a8..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/native-ts/public/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - Dynamsoft Barcode Reader Sample - Hello World (Decode via Camera) - - - -

    Hello World (Scan One Single Barcode via Camera)

    -
    - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/native-ts/rollup.config.mjs b/barcode-scanner-api-samples/scan-single-barcode/native-ts/rollup.config.mjs deleted file mode 100644 index dab19334..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/native-ts/rollup.config.mjs +++ /dev/null @@ -1,28 +0,0 @@ -import fs from 'fs/promises'; -import typescript from "@rollup/plugin-typescript"; -import { nodeResolve } from "@rollup/plugin-node-resolve"; - -// https://rollupjs.org/guide/en/#configuration-files -export default async() => { - await fs.mkdir("./dist", { recursive: true, force: true }); - fs.cp("./public/", "./dist/", { recursive: true, force: true }) - return [ - { - input: "./index.ts", - plugins: [ - typescript({ - tsconfig: "./tsconfig.json" - }), - nodeResolve({ - exportConditions: ["browser", "default", "module", "import"], - }), - ], - output: [ - { - file: "./dist/index.js", - format: "umd", - }, - ], - }, - ]; -}; diff --git a/barcode-scanner-api-samples/scan-single-barcode/native-ts/tsconfig.json b/barcode-scanner-api-samples/scan-single-barcode/native-ts/tsconfig.json deleted file mode 100644 index 35e8318a..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/native-ts/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "compilerOptions": { - "target": "es2017", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], - "allowJs": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": true, - "module": "ESNext", - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - } -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/pick-one-to-fill/index.css b/barcode-scanner-api-samples/scan-single-barcode/pick-one-to-fill/index.css deleted file mode 100644 index b74c0282..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/pick-one-to-fill/index.css +++ /dev/null @@ -1,112 +0,0 @@ -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -html, -body { - width: 100%; - height: 100%; - display: flex; - justify-content: center; - align-items: center; - font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Microsoft YaHei', 'PingFang SC', 'Hiragino Sans GB', sans-serif; -} - -input { - height: 100%; - flex: 1; - min-width: 0; - border: 1px solid #AAAAAA; - padding: 0 5px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.container { - width: 100%; - height: 100%; - display: flex; - flex-direction: column; -} - -.container .barcode-scanner-view { - width: 100%; - height: 60%; - display: none; -} - -.container .guide-view { - width: 100%; - height: 60%; - background-color: #202020; - display: flex; - justify-content: center; - align-items: center; - padding: 0 50px; - color: #5D5D5D; - font-size: 16px; - text-align: center; -} - -.container .form-view { - width: 100%; - height: 40%; - display: flex; - flex-direction: column; - justify-content: space-around; - align-items: center; -} - -.container .form-view .item { - width: calc(100% - 30px); - height: 42px; - display: flex; - align-items: center; -} - -.container .form-view .item .content { - width: 83%; - height: 100%; - display: flex; -} - -.container .form-view .sn .content input, -.container .form-view .mac .content input, -.container .form-view .eid .content input { - border-right: unset; - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.container .form-view .item .title { - width: 17%; - height: 100%; - display: flex; - align-items: center; -} - -.container .form-view .item .content .open-btn, -.container .form-view .item .content .decode-btn { - height: 100%; - border: unset; - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; - color: #FFFFFF; - font-size: 16px; - font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Microsoft YaHei', 'PingFang SC', 'Hiragino Sans GB', sans-serif; - cursor: pointer; -} - -.container .form-view .item .content .open-btn { - width: 35%; - background-color: #306877; -} - -.container .form-view .item .content .decode-btn { - width: 50%; - background-color: #FE8E14; - display: none; -} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/pick-one-to-fill/index.html b/barcode-scanner-api-samples/scan-single-barcode/pick-one-to-fill/index.html deleted file mode 100644 index 49cfe1c4..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/pick-one-to-fill/index.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - Pick One To Fill with BarcodeScanner - - - - - - - - -
    - -
    -
    - Please click the "Open Camera" button below to open the scanning interface. -
    - -
    -
    - - -
    -
    - -
    - - - -
    -
    -
    - -
    - - - -
    -
    -
    - -
    - - - -
    -
    -
    -
    - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/pick-one-to-fill/package-label.png b/barcode-scanner-api-samples/scan-single-barcode/pick-one-to-fill/package-label.png deleted file mode 100644 index 349d76dba607ed07298d73f864df7e18bf7043ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44796 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%0Almd7{=IWp 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 diff --git a/barcode-scanner-api-samples/scan-single-barcode/pwa/README.md b/barcode-scanner-api-samples/scan-single-barcode/pwa/README.md deleted file mode 100644 index c55a68fd..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/pwa/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# 📦 Scan Single Barcode - PWA - -This sample shows how to integrate the `BarcodeScanner` API from the [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/overview/javascript/) into a **PWA** application to scan a single barcode from video. - -## ✨ Features - -- Easy integration with pre-built UI -- BarcodeScanner instance created in a component -- Scans one barcode at a time from video - -## 📌 Customization - -Please refer to sample [`scan-multiple-barcodes`](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes) or check the official [documentation](https://dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/barcode-scanner-customization.html). - -## 📄 Support - -If you have any questions, feel free to [contact Dynamsoft Support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/barcode-scanner-api-samples/scan-single-barcode/pwa/dynamsoft-192x192.png b/barcode-scanner-api-samples/scan-single-barcode/pwa/dynamsoft-192x192.png deleted file mode 100644 index e02348bebe310ace87fe77d58e4e76dc581da970..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6638 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 diff --git a/barcode-scanner-api-samples/scan-single-barcode/pwa/dynamsoft-512x512.png b/barcode-scanner-api-samples/scan-single-barcode/pwa/dynamsoft-512x512.png deleted file mode 100644 index 1e0ec7dc683f5f9d9208e4e2faf5ab12a46bba67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9938 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 diff --git a/barcode-scanner-api-samples/scan-single-barcode/pwa/helloworld-pwa.html b/barcode-scanner-api-samples/scan-single-barcode/pwa/helloworld-pwa.html deleted file mode 100644 index 45643f91..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/pwa/helloworld-pwa.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - Dynamsoft Barcode Reader PWA Sample - Hello World (Decode via Camera) - - - - - - - - - - - - -

    - Hello World (Scan One Single Barcode via Camera) -

    - -
    - - - - - - - - - - - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/pwa/helloworld-pwa.json b/barcode-scanner-api-samples/scan-single-barcode/pwa/helloworld-pwa.json deleted file mode 100644 index 1c6c8e42..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/pwa/helloworld-pwa.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "Dynamsoft Barcode Reader Progressive Web App", - "short_name": "DBR-PWA", - "description": "Progressive Web App that reads barcodes from a video input with Dynamsoft Barcode Reader.", - "start_url": "./helloworld-pwa.html", - "scope": ".", - "display": "standalone", - "theme_color": "#B12A34", - "background_color": "#B12A34", - "icons": [ - { - "src": "./dynamsoft-512x512.png", - "sizes": "512x512", - "type": "image/png" - }, - { - "src": "./dynamsoft-192x192.png", - "sizes": "192x192", - "type": "image/png" - } - ] -} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/pwa/service-worker.js b/barcode-scanner-api-samples/scan-single-barcode/pwa/service-worker.js deleted file mode 100644 index 0fb7589b..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/pwa/service-worker.js +++ /dev/null @@ -1,92 +0,0 @@ -const engineResourcePaths = { - dbrBundle: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.2.4000/dist/", -}; - -// Files to cache -const cacheName = "helloworld-pwa"; -// Here we choose some files into appShellFiles to cache. -// To keep it simple, you can put all the files -// in "node_modules/dynamsoft-barcode-reader-bundle/dist" into the list. -const appShellFiles = [ - "./helloworld-pwa.html", - "./dynamsoft-192x192.png", - "./dynamsoft-512x512.png", - "./helloworld-pwa.json", - `${engineResourcePaths.dbrBundle}dbr.bundle.worker.js`, - `${engineResourcePaths.dbrBundle}dynamsoft-barcode-reader-bundle.js`, - `${engineResourcePaths.dbrBundle}dynamsoft-barcode-reader-bundle.wasm`, - `${engineResourcePaths.dbrBundle}dynamsoft-barcode-reader-bundle-ml-simd.js`, - `${engineResourcePaths.dbrBundle}dynamsoft-barcode-reader-bundle-ml-simd.wasm`, - `${engineResourcePaths.dbrBundle}dynamsoft-barcode-reader-bundle-ml-simd-pthread.js`, - `${engineResourcePaths.dbrBundle}dynamsoft-barcode-reader-bundle-ml-simd-pthread.worker.js`, - `${engineResourcePaths.dbrBundle}dynamsoft-barcode-reader-bundle-ml-simd-pthread.wasm`, - `${engineResourcePaths.dbrBundle}models/OneDDeblur.data`, - `${engineResourcePaths.dbrBundle}models/OneDLocalization.data`, - `${engineResourcePaths.dbrBundle}models/DataMatrixQRCodeLocalization.data`, - `${engineResourcePaths.dbrBundle}models/Code128Decoder.data`, - `${engineResourcePaths.dbrBundle}models/EAN13Decoder.data`, - `${engineResourcePaths.dbrBundle}parser-resources/AADHAAR_Map.txt`, - `${engineResourcePaths.dbrBundle}parser-resources/AADHAAR.dcpres`, - `${engineResourcePaths.dbrBundle}parser-resources/AAMVA_DL_ID_WITH_MAG_STRIPE.dcpres`, - `${engineResourcePaths.dbrBundle}parser-resources/AAMVA_DL_ID.dcpres`, - `${engineResourcePaths.dbrBundle}parser-resources/AAMVA_Map.txt`, - `${engineResourcePaths.dbrBundle}parser-resources/GS1_AI_Map.txt`, - `${engineResourcePaths.dbrBundle}parser-resources/GS1_AI.txt`, - `${engineResourcePaths.dbrBundle}parser-resources/MRTD_Map.txt`, - `${engineResourcePaths.dbrBundle}parser-resources/MRTD_TD1_ID.dcpres`, - `${engineResourcePaths.dbrBundle}parser-resources/MRTD_TD2_FRENCH_ID.dcpres`, - `${engineResourcePaths.dbrBundle}parser-resources/MRTD_TD2_ID.dcpres`, - `${engineResourcePaths.dbrBundle}parser-resources/MRTD_TD2_VISA.dcpres`, - `${engineResourcePaths.dbrBundle}parser-resources/MRTD_TD3_PASSPORT.dcpres`, - `${engineResourcePaths.dbrBundle}parser-resources/MRTD_TD3_VISA.dcpres`, - `${engineResourcePaths.dbrBundle}parser-resources/SOUTH_AFRICA_DL_Map.txt`, - `${engineResourcePaths.dbrBundle}parser-resources/SOUTH_AFRICA_DL.dcpres`, - `${engineResourcePaths.dbrBundle}parser-resources/VIN_Map.txt`, - `${engineResourcePaths.dbrBundle}parser-resources/VIN.dcpres`, - `${engineResourcePaths.dbrBundle}templates/DBR-PresetTemplates.json`, - `${engineResourcePaths.dbrBundle}ui/barcode-scanner.ui.xml`, - `${engineResourcePaths.dbrBundle}ui/dce.ui.xml`, - `${engineResourcePaths.dbrBundle}ui/dls.license.dialog.html`, -]; - -// Installing Service Worker -self.addEventListener("install", (e) => { - console.log("[Service Worker] Install"); - e.waitUntil( - (async () => { - const cache = await caches.open(cacheName); - console.log(cache); - console.log("[Service Worker] Caching all: app shell and content"); - await cache.addAll(appShellFiles); - })() - ); -}); - -self.addEventListener("fetch", (e) => { - e.respondWith( - (async () => { - // Fetch cached response if exists - const cachedResponse = await caches.match(e.request); - console.log(`[Service Worker] Fetching resource: ${e.request.url}`); - if (cachedResponse) { - return cachedResponse; - } - - // Otherwise, fetch from network - const response = await fetch(e.request); - - if ( - e.request.method !== "POST" && - // Authorization requests should not be cached - !/https:\/\/.*?\.dynamsoft.com\/auth/.test(e.request.url) - // You can add other filter conditions - ) { - const cache = await caches.open(cacheName); - console.log(`[Service Worker] Caching new resource: ${e.request.url}`); - cache.put(e.request, response.clone()); - } - - return response; - })() - ); -}); diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/.gitignore b/barcode-scanner-api-samples/scan-single-barcode/react/.gitignore deleted file mode 100644 index b398d222..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/react/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? - -package-lock.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/README.md b/barcode-scanner-api-samples/scan-single-barcode/react/README.md deleted file mode 100644 index 10f597f1..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/react/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# 📦 Scan Single Barcode - React - -This sample demonstrates how to use the `BarcodeScanner` API from the [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/overview/javascript/) in a **React** app to scan a single barcode using the camera. - -## ✨ Features - -- Easy integration with pre-built UI -- Renders barcodeScanner inside a React container -- Scans one barcode at a time from video - -## 🚀 Quick Start - -### 1. Install Dependencies - -```bash -npm install -``` - -### 2. Start the App - -```bash -npm run dev -``` - -Then open http://localhost:3000/ to view the sample app. - -## 📌 Customization - -Please refer to sample [`scan-multiple-barcodes`](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes) or check the official [documentation](https://dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/barcode-scanner-customization.html). - -## 📄 Support - -If you have any questions, feel free to [contact Dynamsoft Support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/index.html b/barcode-scanner-api-samples/scan-single-barcode/react/index.html deleted file mode 100644 index a454578a..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/react/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - Dynamsoft Barcode Reader Sample - Hello World (Decode via Camera) - - -
    - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/package.json b/barcode-scanner-api-samples/scan-single-barcode/react/package.json deleted file mode 100644 index 17b99ee0..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/react/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "dbr-react", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "tsc -b && vite build", - "preview": "vite preview" - }, - "dependencies": { - "dynamsoft-barcode-reader-bundle": "11.2.4000", - "react": "^19.1.1", - "react-dom": "^19.1.1" - }, - "devDependencies": { - "@eslint/js": "^9.33.0", - "@types/react": "^19.1.10", - "@types/react-dom": "^19.1.7", - "@vitejs/plugin-react": "^5.0.0", - "eslint": "^9.33.0", - "eslint-plugin-react-hooks": "^5.2.0", - "eslint-plugin-react-refresh": "^0.4.20", - "globals": "^16.3.0", - "typescript": "~5.8.3", - "typescript-eslint": "^8.39.1", - "vite": "^7.1.2" - } -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx b/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx deleted file mode 100644 index 85fc7cfa..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/react/src/App.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import { useEffect, useRef } from 'react'; -import { BarcodeScanner, type BarcodeScannerConfig } from "dynamsoft-barcode-reader-bundle"; - - -function App() { - const barcodeScannerViewRef = useRef(null); - - useEffect(() => { - - // Configuration object for initializing the BarcodeScanner instance - const config: BarcodeScannerConfig = { - license: "DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", // Replace with your Dynamsoft license key - - // Specify where to render the scanner UI - // If container is not specified, the UI will take up the full screen - container: barcodeScannerViewRef.current!, - - // Specify the path for the definition file "barcode-scanner.ui.xml" for the scanner view. - uiPath: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader-bundle@11.2.4000/dist/ui/barcode-scanner.ui.xml", - - // showUploadImageButton: true, - // scannerViewConfig: { - // showFlashButton: true, - // cameraSwitchControl: "toggleFrontBack", - // }, - - // Specify custom paths for the engine resources - engineResourcePaths: { - rootDirectory: "https://cdn.jsdelivr.net/npm/", - }, - } - - // Create an instance of the BarcodeScanner with the provided configuration - const barcodeScanner = new BarcodeScanner(config); - - (async ()=>{ - // Launch the scanner; once a barcode is detected, display its text in an alert - let result = await barcodeScanner.launch(); - if (result.barcodeResults.length) { - alert(result.barcodeResults[0].text); - } - })(); - - return ()=>{ - // Dispose of the barcode scanner when the component unmounts - barcodeScanner?.dispose(); - }; - }, []); - - return ( - <> -

    Barcode Scanner for React

    -
    -
    - - ) -} - -export default App diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/src/main.tsx b/barcode-scanner-api-samples/scan-single-barcode/react/src/main.tsx deleted file mode 100644 index 4aff0256..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/react/src/main.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { StrictMode } from 'react' -import { createRoot } from 'react-dom/client' -import App from './App.tsx' - -createRoot(document.getElementById('root')!).render( - - - , -) diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.app.json b/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.app.json deleted file mode 100644 index 227a6c67..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.app.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "compilerOptions": { - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", - "target": "ES2022", - "useDefineForClassFields": true, - "lib": ["ES2022", "DOM", "DOM.Iterable"], - "module": "ESNext", - "skipLibCheck": true, - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "verbatimModuleSyntax": true, - "moduleDetection": "force", - "noEmit": true, - "jsx": "react-jsx", - - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "erasableSyntaxOnly": true, - "noFallthroughCasesInSwitch": true, - "noUncheckedSideEffectImports": true - }, - "include": ["src"] -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.json b/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.json deleted file mode 100644 index 1ffef600..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "files": [], - "references": [ - { "path": "./tsconfig.app.json" }, - { "path": "./tsconfig.node.json" } - ] -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.node.json b/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.node.json deleted file mode 100644 index f85a3990..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/react/tsconfig.node.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "compilerOptions": { - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", - "target": "ES2023", - "lib": ["ES2023"], - "module": "ESNext", - "skipLibCheck": true, - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "verbatimModuleSyntax": true, - "moduleDetection": "force", - "noEmit": true, - - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "erasableSyntaxOnly": true, - "noFallthroughCasesInSwitch": true, - "noUncheckedSideEffectImports": true - }, - "include": ["vite.config.ts"] -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/react/vite.config.ts b/barcode-scanner-api-samples/scan-single-barcode/react/vite.config.ts deleted file mode 100644 index 8b0f57b9..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/react/vite.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' - -// https://vite.dev/config/ -export default defineConfig({ - plugins: [react()], -}) diff --git a/barcode-scanner-api-samples/scan-single-barcode/read-and-parse-GS1-AI/convert-GS1AI-title.js b/barcode-scanner-api-samples/scan-single-barcode/read-and-parse-GS1-AI/convert-GS1AI-title.js deleted file mode 100644 index 83a7e976..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/read-and-parse-GS1-AI/convert-GS1AI-title.js +++ /dev/null @@ -1,386 +0,0 @@ -const funcConvertGs1AIToTitle = (gs1AI) => { - switch(gs1AI){ - case "00": - return "SSCC"; - case "01": - return "GTIN"; - case "02": - return "CONTENT"; - case "10": - return "BATCH/LOT"; - case "11": - return "PROD DATE"; - case "12": - return "DUE DATE"; - case "13": - return "PACK DATE"; - case "15": - return "BEST BY"; - case "16": - return "SELL BY"; - case "17": - return "EXPIRY"; - case "20": - return "VARIANT"; - case "21": - return "SERIAL"; - case "22": - return "CPV"; - case "235": - return "TPX"; - case "240": - return "ADDITIONAL ID"; - case "241": - return "CUST. PART No."; - case "242": - return "MTO VARIANT"; - case "243": - return "PCN"; - case "250": - return "SECONDARY SERIAL"; - case "251": - return "REF. TO SOURCE"; - case "253": - return "GDTI"; - case "254": - return "GLN EXTENSION COMPONENT"; - case "255": - return "GCN"; - case "30": - return "VAR. COUNT"; - case "310n": - return "NET WEIGHT (kg)"; - case "311n": - return "LENGTH (m)"; - case "312n": - return "WIDTH (m)"; - case "313n": - return "HEIGHT (m)"; - case "314n": - return "AREA (m2)"; - case "315n": - return "NET VOLUME (l)"; - case "316n": - return "NET VOLUME (m3)"; - case "320n": - return "NET WEIGHT (lb)"; - case "321n": - return "LENGTH (in)"; - case "322n": - return "LENGTH (ft)"; - case "323n": - return "LENGTH (yd)"; - case "324n": - return "WIDTH (in)"; - case "325n": - return "WIDTH (ft)"; - case "326n": - return "WIDTH (yd)"; - case "327n": - return "HEIGHT (in)"; - case "328n": - return "HEIGHT (ft)"; - case "329n": - return "HEIGHT (yd)"; - case "330n": - return "GROSS WEIGHT (kg)"; - case "331n": - return "LENGTH (m), log"; - case "332n": - return "WIDTH (m), log"; - case "333n": - return "HEIGHT (m), log"; - case "334n": - return "AREA (m2), log"; - case "335n": - return "VOLUME (l), log"; - case "336n": - return "VOLUME (m3), log"; - case "337n": - return "KG PER m²"; - case "340n": - return "GROSS WEIGHT (lb)"; - case "341n": - return "LENGTH (in), log"; - case "342n": - return "LENGTH (ft), log"; - case "343n": - return "LENGTH (yd), log"; - case "344n": - return "WIDTH (in), log"; - case "345n": - return "WIDTH (ft), log"; - case "346n": - return "WIDTH (yd), log"; - case "347n": - return "HEIGHT (in), log"; - case "348n": - return "HEIGHT (ft), log"; - case "349n": - return "HEIGHT (yd), log"; - case "350n": - return "AREA (in2)"; - case "351n": - return "AREA (ft2)"; - case "352n": - return "AREA (yd2)"; - case "353n": - return "AREA (in2), log"; - case "354n": - return "AREA (ft2), log"; - case "355n": - return "AREA (yd2), log"; - case "356n": - return "NET WEIGHT (t)"; - case "357n": - return "NET VOLUME (oz)"; - case "360n": - return "NET VOLUME (q)"; - case "361n": - return "NET VOLUME (g)"; - case "362n": - return "VOLUME (q), log"; - case "363n": - return "VOLUME (g), log"; - case "364n": - return "VOLUME (in3)"; - case "365n": - return "VOLUME (ft3)"; - case "366n": - return "VOLUME (yd3)"; - case "367n": - return "VOLUME (in3), log"; - case "368n": - return "VOLUME (ft3), log"; - case "369n": - return "VOLUME (yd3), log"; - case "37": - return "COUNT"; - case "390n": - return "AMOUNT"; - case "391n": - return "AMOUNT"; - case "392n": - return "PRICE"; - case "393n": - return "PRICE"; - case "394n": - return "PRCNT OFF"; - case "395n": - return "PRICE/UoM"; - case "400": - return "ORDER NUMBER"; - case "401": - return "GINC"; - case "402": - return "GSIN"; - case "403": - return "ROUTE"; - case "410": - return "SHIP TO LOC"; - case "411": - return "BILL TO"; - case "412": - return "PURCHASE FROM"; - case "413": - return "SHIP FOR LOC"; - case "414": - return "LOC No."; - case "415": - return "PAY TO"; - case "416": - return "PROD/SERV LOC"; - case "417": - return "PARTY"; - case "420": - return "SHIP TO POST"; - case "421": - return "SHIP TO POST"; - case "422": - return "ORIGIN"; - case "423": - return "COUNTRY - INITIAL PROCESS"; - case "424": - return "COUNTRY - PROCESS"; - case "425": - return "COUNTRY - DISASSEMBLY"; - case "426": - return "COUNTRY - FULL PROCESS"; - case "427": - return "ORIGIN SUBDIVISION"; - case "4300": - return "SHIP TO COMP"; - case "4301": - return "SHIP TO NAME"; - case "4302": - return "SHIP TO ADD1"; - case "4303": - return "SHIP TO ADD2"; - case "4304": - return "SHIP TO SUB"; - case "4305": - return "SHIP TO LOC"; - case "4306": - return "SHIP TO REG"; - case "4307": - return "SHIP TO COUNTRY"; - case "4308": - return "SHIP TO PHONE"; - case "4309": - return "SHIP TO GEO"; - case "4310": - return "RTN TO COMP"; - case "4311": - return "RTN TO NAME"; - case "4312": - return "RTN TO ADD1"; - case "4313": - return "RTN TO ADD2"; - case "4314": - return "RTN TO SUB"; - case "4315": - return "RTN TO LOC"; - case "4316": - return "RTN TO REG"; - case "4317": - return "RTN TO COUNTRY"; - case "4318": - return "RTN TO POST"; - case "4319": - return "RTN TO PHONE"; - case "4320": - return "SRV DESCRIPTION"; - case "4321": - return "DANGEROUS GOODS"; - case "4322": - return "AUTH LEAVE"; - case "4323": - return "SIG REQUIRED"; - case "4324": - return "NBEF DEL DT"; - case "4325": - return "NAFT DEL DT"; - case "4326": - return "REL DATE"; - case "4330": - return "MAX TEMP F"; - case "4331": - return "MAX TEMP C"; - case "4332": - return "MIN TEMP F"; - case "4333": - return "MIN TEMP C"; - case "7001": - return "NSN"; - case "7002": - return "MEAT CUT"; - case "7003": - return "EXPIRY TIME"; - case "7004": - return "ACTIVE POTENCY"; - case "7005": - return "CATCH AREA"; - case "7006": - return "FIRST FREEZE DATE"; - case "7007": - return "HARVEST DATE"; - case "7008": - return "AQUATIC SPECIES"; - case "7009": - return "FISHING GEAR TYPE"; - case "7010": - return "PROD METHOD"; - case "7011": - return "TEST BY DATE"; - case "7020": - return "REFURB LOT"; - case "7021": - return "FUNC STAT"; - case "7022": - return "REV STAT"; - case "7023": - return "GIAI - ASSEMBLY"; - // Note: '703s' typically implies a range (e.g., 7030-7039) or a structure, - // using '703' as a placeholder for the fixed-length AI. - case "703s": - return "PROCESSOR"; - case "7040": - return "UIC+EXT"; - case "710": - return "NHRN PZN"; - case "711": - return "NHRN CIP"; - case "712": - return "NHRN CN"; - case "713": - return "NHRN DRN"; - case "714": - return "NHRN AIM"; - case "715": - return "NHRN NDC"; - // Note: '723s' implies a range (e.g., 7230-7239) or a structure, - // using '723' as a placeholder for the fixed-length AI. - case "723s": - return "CERT"; - case "7240": - return "PROTOCOL"; - case "7241": - return "AIDC MEDIA TYPE"; - case "7242": - return "VCN"; - case "8001": - return "DIMENSIONS"; - case "8002": - return "CMT No."; - case "8003": - return "GRAI"; - case "8004": - return "GIAI"; - case "8005": - return "PRICE PER UNIT"; - case "8006": - return "ITIP"; - case "8007": - return "IBAN"; - case "8008": - return "PROD TIME"; - case "8009": - return "OPTSEN"; - case "8010": - return "CPID"; - case "8011": - return "CPID SERIAL"; - case "8012": - return "VERSION"; - case "8013": - return "GMN"; - case "8017": - return "GSRN - PROVIDER"; - case "8018": - return "GSRN - RECIPIENT"; - case "8019": - return "SRIN"; - case "8020": - return "REF No."; - case "8026": - return "ITIP CONTENT"; - case "8030": - return "DIGSIG"; - // case "8110": - // return "-"; - case "8111": - return "POINTS"; - // case "8112": - // return "-"; - case "8200": - return "PRODUCT URL"; - } - let intAI = parseInt(gs1AI); - if(intAI >= 716 && intAI < 723){ - return "NHRN"; - } - if(intAI >= 90 && intAI <= 99){ - return "INTERNAL"; - } - return title; -}; \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/read-and-parse-GS1-AI/index.html b/barcode-scanner-api-samples/scan-single-barcode/read-and-parse-GS1-AI/index.html deleted file mode 100644 index c12e5f44..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/read-and-parse-GS1-AI/index.html +++ /dev/null @@ -1,282 +0,0 @@ - - - - - - Read a GS1 Application Identifier (AI) - - - -
    - - -
    - - - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/read-and-parse-GS1-AI/info.svg b/barcode-scanner-api-samples/scan-single-barcode/read-and-parse-GS1-AI/info.svg deleted file mode 100644 index abe52645..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/read-and-parse-GS1-AI/info.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/read-and-parse-GS1-AI/logo-dynamsoft-blackBg-190x47-DZ66W3xz.png b/barcode-scanner-api-samples/scan-single-barcode/read-and-parse-GS1-AI/logo-dynamsoft-blackBg-190x47-DZ66W3xz.png deleted file mode 100644 index 7967e8edbde77fcdf84333b58ac1046f821c9e0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5449 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 LnIX#&&Jq6u=Qz1) diff --git a/barcode-scanner-api-samples/scan-single-barcode/read-and-parse-GS1-AI/rtu_gs1.json b/barcode-scanner-api-samples/scan-single-barcode/read-and-parse-GS1-AI/rtu_gs1.json deleted file mode 100644 index cfa2bfff..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/read-and-parse-GS1-AI/rtu_gs1.json +++ /dev/null @@ -1,163 +0,0 @@ -{ - "BarcodeReaderTaskSettingOptions": [ - { - "Name": "task_gs1_ai_barcode", - "ExpectedBarcodesCount": 1, - "BarcodeFormatIds": [ - "BF_GS1_DATABAR", - "BF_CODE_128", - "BF_GS1_COMPOSITE", - "BF_DATAMATRIX", - "BF_QR_CODE" - ], - "BarcodeFormatSpecificationNameArray": [ - "bfs_gs1_ai" - ], - "SectionArray": [ - { - "Section": "ST_REGION_PREDETECTION", - "ImageParameterName": "ip_localize_barcode", - "StageArray": [ - { - "Stage": "SST_PREDETECT_REGIONS" - } - ] - }, - { - "Section": "ST_BARCODE_LOCALIZATION", - "ImageParameterName": "ip_localize_barcode", - "StageArray": [ - { - "LocalizationModes": [ - { - "Mode": "LM_SCAN_DIRECTLY", - "ScanDirection": 2 - }, - { - "Mode": "LM_CONNECTED_BLOCKS", - "ModelNameArray": [] - }, - { - "Mode": "LM_CONNECTED_BLOCKS", - "ModelNameArray": [ - "OneDLocalization" - ] - } - ], - "Stage": "SST_LOCALIZE_CANDIDATE_BARCODES" - }, - { - "Stage": "SST_LOCALIZE_BARCODES" - } - ] - }, - { - "Section": "ST_BARCODE_DECODING", - "ImageParameterName": "ip_localize_barcode", - "StageArray": [ - { - "Stage": "SST_RESIST_DEFORMATION" - }, - { - "Stage": "SST_COMPLEMENT_BARCODE" - }, - { - "Stage": "SST_SCALE_BARCODE_IMAGE" - }, - { - "DeblurModes": [ - { - "Mode": "DM_BASED_ON_LOC_BIN" - }, - { - "Mode": "DM_THRESHOLD_BINARIZATION" - }, - { - "Mode": "DM_DIRECT_BINARIZATION" - }, - { - "Mode": "DM_NEURAL_NETWORK", - "ModelNameArray": [ - "Code128Decoder" - ] - }, - { - "Mode": "DM_DEEP_ANALYSIS" - } - ], - "Stage": "SST_DECODE_BARCODES" - } - ] - } - ] - } - ], - "BarcodeFormatSpecificationOptions": [ - { - "Name": "bfs_gs1_ai", - "BarcodeFormatIds": [ - "BF_GS1_DATABAR", - "BF_CODE_128", - "BF_GS1_COMPOSITE", - "BF_DATAMATRIX", - "BF_QR_CODE" - ], - "IncludeTrailingCheckDigit": 0, - "IncludeImpliedAI01": 1 - } - ], - "CaptureVisionTemplates": [ - { - "Name": "ReadBarcodes_SpeedFirst", - "ImageROIProcessingNameArray": [ - "roi_gs1_ai_barcode" - ] - }, - { - "Name": "ReadBarcodes_ReadRateFirst", - "ImageROIProcessingNameArray": [ - "roi_gs1_ai_barcode" - ] - } - ], - "ImageParameterOptions": [ - { - "Name": "ip_localize_barcode", - "ApplicableStages": [ - { - "Stage": "SST_BINARIZE_IMAGE", - "BinarizationModes": [ - { - "Mode": "BM_LOCAL_BLOCK" - } - ] - }, - { - "Stage": "SST_BINARIZE_TEXTURE_REMOVED_GRAYSCALE" - }, - { - "Stage": "SST_TRANSFORM_GRAYSCALE", - "GrayscaleTransformationModes": [ - { - "Mode": "GTM_ORIGINAL" - }, - { - "Mode": "GTM_INVERTED" - } - ] - } - ] - } - ], - "TargetROIDefOptions": [ - { - "Name": "roi_gs1_ai_barcode", - "TaskSettingNameArray": [ - "task_gs1_ai_barcode" - ] - } - ], - "GlobalParameter": { - "IntraOpNumThreads": 1 - } -} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/read-and-parse-GS1-AI/style.css b/barcode-scanner-api-samples/scan-single-barcode/read-and-parse-GS1-AI/style.css deleted file mode 100644 index 5653a6f3..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/read-and-parse-GS1-AI/style.css +++ /dev/null @@ -1,200 +0,0 @@ - -* { - box-sizing: border-box; -} -html, -body { - margin: 0; - padding: 0; - height: 100%; - font-family: Arial, Helvetica, sans-serif; - font-size: 20px; -} -html { - width: 100%; - background: rgb(50, 50, 50); -} -body { - max-width: 720px; - margin: 0 auto; -} - -.barcode-scanner-view{ - width:100%; - height:100%; -} - -.landing-page { - width: 100%; - height: 100%; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - position: relative; -} - -.landing-title { - color: white; - font-size: 28px; - text-align: center; - padding: 0 24px; - position: absolute; - width: 100%; - bottom: max(60%, calc(50% + 70px)); -} - -.play-button { - width: 80px; - height: 80px; - background: white; - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; - box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); - transition: transform 0.2s, box-shadow 0.2s, opacity 0.2s; - position: relative; -} -.play-button:hover { - transform: scale(1.1); - box-shadow: 0 12px 24px rgba(0, 0, 0, 0.3); -} -.play-button:active { - transform: scale(0.95); -} -.play-button.disabled { - opacity: 0.8; - cursor: not-allowed; - pointer-events: none; -} -.play-button.disabled .play-icon { - display: none; -} -.play-button.disabled::before { - content: ""; - position: absolute; - width: 70px; - height: 70px; - border: 3px solid rgba(254, 142, 20, 0.3); - border-top-color: #fe8e14; - border-radius: 50%; - animation: spin 1s linear infinite; -} -.play-button.disabled::after { - content: "Loading"; - position: absolute; - color: #fe8e14; - font-size: 12px; - font-weight: bold; - letter-spacing: 0.5px; -} -@keyframes spin { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg); - } -} -.play-icon { - width: 0; - height: 0; - border-left: 24px solid #fe8e14; - border-top: 16px solid transparent; - border-bottom: 16px solid transparent; - margin-left: 6px; -} - -.landing-page .logo { - position: absolute; - bottom: 8%; - left: 50%; - transform: translateX(-50%); -} -.landing-page .logo img { - width: 95px; - height: 23.5px; -} - -.result-page { - background: rgb(222, 223, 225); - width: 100%; - min-height: 100%; - padding: 1px; - position: relative; -} - -.barcode-text { - background: rgb(245, 245, 245); - font-size: 18px; - line-height: 32px; - margin: 1px 0 10px; - padding: 14px 30px; - word-break: break-all; - color: rgb(50, 50, 50); - font-weight: bold; -} - -.gs1AI-info > div { - background: rgb(245, 245, 245); - font-size: 18px; - line-height: 32px; - margin: 1px 0; - padding: 14px 30px; - color: rgb(102, 102, 102); -} -.gs1AI-info > div > span:first-child{ - color: rgb(50, 50, 50); -} -.has-info::after{ - content: url("info.svg"); - margin-left: 2px; - position: relative; - top: 1px; - cursor: pointer; -} - -.goods-name { - font-weight: bolder; -} - -.back-to-scan { - width: calc(100% - 52px); - margin: 26px; - padding: 14px; - font-family: Arial, Helvetica, sans-serif; - font-size: 24px; - line-height: 32px; - background: #fe8e14; - text-align: center; - color: white; - border-radius: 6px; - display: block; - border: 0; - cursor: pointer; -} -.back-to-scan:hover{ - transform: scale(1.05); -} -.back-to-scan:active { - transform: scale(0.95); -} - -.result-page .powered-by-dynamsoft{ - height:74px; -} -.result-page .powered-by-dynamsoft:after{ - content: "Powered by Dynamsoft"; - position: absolute; - bottom: 0; - height: 74px; - font-size: 16px; - line-height: 74px; - color: rgb(119, 119, 119); - width: 100%; - text-align: center; -} - -.dm-camera-mn-toast{position:absolute;font-size:max(1.25vmin,16px);line-height:max(3vmin,32px);padding:0 max(0.5vmin,4px);left:50%;bottom:max(12.5vmin,100px);transform:translateX(-50%);color:#fff;border-radius:max(0.5vmin,4px);background:rgba(100,100,100,0.5);} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/requirejs.html b/barcode-scanner-api-samples/scan-single-barcode/requirejs.html deleted file mode 100644 index df81907e..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/requirejs.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - Dynamsoft Barcode Scanner Sample - Hello World (Decode via Camera) - - - - -

    - Hello World (Scan One Single Barcode via Camera) -

    - -
    - - - - - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html b/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html deleted file mode 100644 index ccdb207c..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/scan-and-search.html +++ /dev/null @@ -1,266 +0,0 @@ - - - - - - - Scan & Search with BarcodeScanner - - - - - - - - -

    📦 Instant Product Information Lookup

    -

    Enter a UPC, EAN, or ISBN number to retrieve accurate product data from a specific database

    -

    -
    - - - -
    - - -
    - - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/.gitignore b/barcode-scanner-api-samples/scan-single-barcode/svelte/.gitignore deleted file mode 100644 index b398d222..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/svelte/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? - -package-lock.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/README.md b/barcode-scanner-api-samples/scan-single-barcode/svelte/README.md deleted file mode 100644 index ccb3dcaf..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/svelte/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# 📦 Scan Single Barcode - Svelte - -This sample shows how to integrate the `BarcodeScanner` API from the [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/overview/javascript/) into a **Svelte** application to scan a single barcode from video. - -## ✨ Features - -- Easy integration with pre-built UI -- BarcodeScanner instance created in a Svelte component -- Scans one barcode at a time from video - -## 🚀 Quick Start - -### 1. Install Dependencies - -```bash -npm install -``` - -### 2. Run the App - -```bash -npm run dev -``` - -Then open http://localhost:5173/ to view the sample app. - -## 📌 Customization - -Please refer to sample [`scan-multiple-barcodes`](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes) or check the official [documentation](https://dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/barcode-scanner-customization.html). - -## 📄 Support - -If you have any questions, feel free to [contact Dynamsoft Support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/index.html b/barcode-scanner-api-samples/scan-single-barcode/svelte/index.html deleted file mode 100644 index dce29517..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/svelte/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - Dynamsoft Barcode Reader Sample - Hello World (Decode via Camera) - - -
    - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/package.json b/barcode-scanner-api-samples/scan-single-barcode/svelte/package.json deleted file mode 100644 index 7100687f..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/svelte/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "dbrjs-svelte-sample", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview", - "check": "svelte-check --tsconfig ./tsconfig.json" - }, - "dependencies": { - "dynamsoft-barcode-reader-bundle": "11.2.4000" - }, - "devDependencies": { - "@sveltejs/vite-plugin-svelte": "^3.0.2", - "@tsconfig/svelte": "^5.0.2", - "svelte": "^4.2.12", - "svelte-check": "^3.6.6", - "tslib": "^2.6.2", - "typescript": "^5.2.2", - "vite": "^5.1.6" - } -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/src/App.svelte b/barcode-scanner-api-samples/scan-single-barcode/svelte/src/App.svelte deleted file mode 100644 index 86ffba37..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/svelte/src/App.svelte +++ /dev/null @@ -1,55 +0,0 @@ - - -
    -

    Barcode Scanner for Svelte

    -
    -
    -
    diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/src/main.ts b/barcode-scanner-api-samples/scan-single-barcode/svelte/src/main.ts deleted file mode 100644 index 8c4eaed9..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/svelte/src/main.ts +++ /dev/null @@ -1,7 +0,0 @@ -import App from "./App.svelte"; - -const app = new App({ - target: document.getElementById("app")!, -}); - -export default app; diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/src/vite-env.d.ts b/barcode-scanner-api-samples/scan-single-barcode/svelte/src/vite-env.d.ts deleted file mode 100644 index 4078e747..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/svelte/src/vite-env.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -/// -/// diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/svelte.config.js b/barcode-scanner-api-samples/scan-single-barcode/svelte/svelte.config.js deleted file mode 100644 index b0683fd2..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/svelte/svelte.config.js +++ /dev/null @@ -1,7 +0,0 @@ -import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' - -export default { - // Consult https://svelte.dev/docs#compile-time-svelte-preprocess - // for more information about preprocessors - preprocess: vitePreprocess(), -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/tsconfig.json b/barcode-scanner-api-samples/scan-single-barcode/svelte/tsconfig.json deleted file mode 100644 index 5fb548f2..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/svelte/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "@tsconfig/svelte/tsconfig.json", - "compilerOptions": { - "target": "ESNext", - "useDefineForClassFields": true, - "module": "ESNext", - "resolveJsonModule": true, - /** - * Typecheck JS in `.svelte` and `.js` files by default. - * Disable checkJs if you'd like to use dynamic types in JS. - * Note that setting allowJs false does not prevent the use - * of JS in `.svelte` files. - */ - "allowJs": true, - "checkJs": true, - "isolatedModules": true - }, - "include": ["src/**/*.ts", "src/**/*.js", "src/**/*.svelte"], - "references": [{ "path": "./tsconfig.node.json" }] -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/tsconfig.node.json b/barcode-scanner-api-samples/scan-single-barcode/svelte/tsconfig.node.json deleted file mode 100644 index d02c37df..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/svelte/tsconfig.node.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "skipLibCheck": true, - "module": "ESNext", - "moduleResolution": "bundler", - "strict": true - }, - "include": ["vite.config.ts"] -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/svelte/vite.config.ts b/barcode-scanner-api-samples/scan-single-barcode/svelte/vite.config.ts deleted file mode 100644 index 2aeffabd..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/svelte/vite.config.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { defineConfig } from 'vite' -import { svelte } from '@sveltejs/vite-plugin-svelte' - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [svelte()], - base: "./" -}) diff --git a/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadDPM.json b/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadDPM.json deleted file mode 100644 index ec54f7e2..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadDPM.json +++ /dev/null @@ -1,141 +0,0 @@ -{ - "BarcodeReaderTaskSettingOptions": [ - { - "BarcodeFormatIds": [ - "BF_DATAMATRIX" - ], - "DPMCodeReadingModes": [ - { - "Mode": "DPMCRM_GENERAL" - } - ], - "ExpectedBarcodesCount": 1, - "Name": "task_read_dpm", - "SectionArray": [ - { - "ImageParameterName": "ip_read_dpm", - "Section": "ST_REGION_PREDETECTION", - "StageArray": [ - { - "Stage": "SST_PREDETECT_REGIONS" - } - ] - }, - { - "ImageParameterName": "ip_read_dpm", - "Section": "ST_BARCODE_LOCALIZATION", - "StageArray": [ - { - "LocalizationModes": [ - { - "Mode": "LM_STATISTICS_MARKS" - }, - { - "Mode": "LM_CONNECTED_BLOCKS" - } - ], - "Stage": "SST_LOCALIZE_CANDIDATE_BARCODES" - }, - { - "Stage": "SST_LOCALIZE_BARCODES" - } - ] - }, - { - "ImageParameterName": "ip_read_dpm", - "Section": "ST_BARCODE_DECODING", - "StageArray": [ - { - "Stage": "SST_RESIST_DEFORMATION" - }, - { - "Stage": "SST_COMPLEMENT_BARCODE" - }, - { - "Stage": "SST_SCALE_BARCODE_IMAGE" - }, - { - "Stage": "SST_DECODE_BARCODES" - } - ] - } - ], - "TextResultOrderModes": [ - { - "Mode": "TROM_POSITION" - }, - { - "Mode": "TROM_FORMAT" - }, - { - "Mode": "TROM_CONFIDENCE" - } - ] - } - ], - "CaptureVisionTemplates": [ - { - "ImageROIProcessingNameArray": [ - "roi_read_dpm" - ], - "Name": "ReadDPM" - } - ], - "ImageParameterOptions": [ - { - "ApplicableStages": [ - { - "Stage": "SST_INPUT_COLOR_IMAGE" - }, - { - "Stage": "SST_SCALE_IMAGE" - }, - { - "Stage": "SST_CONVERT_TO_GRAYSCALE" - }, - { - "Stage": "SST_TRANSFORM_GRAYSCALE" - }, - { - "Stage": "SST_ENHANCE_GRAYSCALE" - }, - { - "Stage": "SST_BINARIZE_IMAGE" - }, - { - "Stage": "SST_DETECT_TEXTURE" - }, - { - "Stage": "SST_REMOVE_TEXTURE_FROM_GRAYSCALE" - }, - { - "Stage": "SST_BINARIZE_TEXTURE_REMOVED_GRAYSCALE" - }, - { - "Stage": "SST_FIND_CONTOURS" - }, - { - "Stage": "SST_DETECT_SHORTLINES" - }, - { - "Stage": "SST_ASSEMBLE_LINES" - }, - { - "Stage": "SST_DETECT_TEXT_ZONES" - }, - { - "Stage": "SST_REMOVE_TEXT_ZONES_FROM_BINARY" - } - ], - "Name": "ip_read_dpm" - } - ], - "TargetROIDefOptions": [ - { - "Name": "roi_read_dpm", - "TaskSettingNameArray": [ - "task_read_dpm" - ] - } - ] -} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadDotcode.json b/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadDotcode.json deleted file mode 100644 index f552988d..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadDotcode.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "BarcodeFormatSpecificationOptions": [ - { - "BarcodeFormatIds": [ - "BF_DOTCODE" - ], - "MinResultConfidence": 0, - "Name": "FP_1" - } - ], - "BarcodeReaderTaskSettingOptions": [ - { - "BarcodeFormatIds": [ - "BF_DOTCODE" - ], - "BarcodeFormatSpecificationNameArray": [ - "FP_1" - ], - "ExpectedBarcodesCount": 1, - "Name": "BR_1", - "SectionArray": [ - { - "ImageParameterName": "IP_1", - "Section": "ST_REGION_PREDETECTION", - "StageArray": [ - { - "Stage": "SST_PREDETECT_REGIONS" - } - ] - }, - { - "ImageParameterName": "IP_1", - "Section": "ST_BARCODE_LOCALIZATION", - "StageArray": [ - { - "LocalizationModes": [ - { - "Mode": "LM_STATISTICS_MARKS" - } - ], - "Stage": "SST_LOCALIZE_CANDIDATE_BARCODES" - } - ] - }, - { - "ImageParameterName": "IP_1", - "Section": "ST_BARCODE_DECODING", - "StageArray": [ - { - "DeblurModes": [ - { - "Mode": "DM_DEEP_ANALYSIS" - } - ], - "Stage": "SST_DECODE_BARCODES" - } - ] - } - ] - } - ], - "CaptureVisionTemplates": [ - { - "ImageROIProcessingNameArray": [ - "roi_default" - ], - "Name": "ReadDotcode" - } - ], - "ImageParameterOptions": [ - { - "ApplicableStages": [ - { - "GrayscaleTransformationModes": [ - { - "Mode": "GTM_INVERTED" - } - ], - "Stage": "SST_TRANSFORM_GRAYSCALE" - }, - { - "BinarizationModes": [ - { - "BlockSizeX": 9, - "BlockSizeY": 9, - "EnableFillBinaryVacancy": 0, - "Mode": "BM_LOCAL_BLOCK", - "ThresholdCompensation": 20 - }, - { - "BlockSizeX": 15, - "BlockSizeY": 15, - "EnableFillBinaryVacancy": 0, - "Mode": "BM_LOCAL_BLOCK", - "MorphOperation": "open", - "MorphOperationKernelSizeX": 3, - "MorphOperationKernelSizeY": 3, - "MorphShape": "Ellipse" - }, - { - "BlockSizeX": 15, - "BlockSizeY": 15, - "EnableFillBinaryVacancy": 0, - "Mode": "BM_LOCAL_BLOCK", - "ThresholdCompensation": 20 - } - ], - "Stage": "SST_BINARIZE_IMAGE" - }, - { - "Stage": "SST_DETECT_TEXTURE", - "TextureDetectionModes": [ - { - "Mode": "TDM_SKIP" - } - ] - } - ], - "Name": "IP_1" - } - ], - "TargetROIDefOptions": [ - { - "Name": "roi_default", - "TaskSettingNameArray": [ - "BR_1" - ] - } - ] -} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadOneDIndustrial.json b/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadOneDIndustrial.json deleted file mode 100644 index c07ecd7a..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadOneDIndustrial.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "BarcodeReaderTaskSettingOptions": [ - { - "BarcodeFormatIds": ["BF_CODE_128", "BF_CODE_39", "BF_ITF", "BF_MATRIX_25", "BF_USPSINTELLIGENTMAIL"], - "ExpectedBarcodesCount": 1, - "Name": "task_read_single_barcode", - "SectionArray": [ - { - "ImageParameterName": "ip_read_single_barcode", - "Section": "ST_REGION_PREDETECTION" - }, - { - "ImageParameterName": "ip_read_single_barcode", - "Section": "ST_BARCODE_LOCALIZATION", - "StageArray": [ - { - "LocalizationModes": [ - { - "Mode": "LM_SCAN_DIRECTLY", - "ScanDirection": 2 - }, - { - "Mode": "LM_CONNECTED_BLOCKS" - } - ], - "Stage": "SST_LOCALIZE_CANDIDATE_BARCODES" - } - ] - }, - { - "ImageParameterName": "ip_read_single_barcode", - "Section": "ST_BARCODE_DECODING", - "StageArray": [ - { - "DeblurModes": [ - { - "Mode": "DM_BASED_ON_LOC_BIN" - }, - { - "Mode": "DM_DIRECT_BINARIZATION" - }, - { - "Mode": "DM_DEEP_ANALYSIS" - } - ], - "Stage": "SST_DECODE_BARCODES" - } - ] - } - ] - } - ], - "CaptureVisionTemplates": [ - { - "ImageROIProcessingNameArray": [ - "roi_read_single_barcode" - ], - "Name": "ReadOneDIndustrial" - } - ], - "ImageParameterOptions": [ - { - "ApplicableStages": [ - { - "BinarizationModes": [ - { - "BlockSizeX": 27, - "BlockSizeY": 27, - "EnableFillBinaryVacancy": 0, - "Mode": "BM_LOCAL_BLOCK" - } - ], - "Stage": "SST_BINARIZE_IMAGE" - } - ], - "Name": "ip_read_single_barcode" - } - ], - "TargetROIDefOptions": [ - { - "Name": "roi_read_single_barcode", - "TaskSettingNameArray": [ - "task_read_single_barcode" - ] - } - ] -} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadOneDRetail.json b/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadOneDRetail.json deleted file mode 100644 index d69905f7..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/ReadOneDRetail.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "BarcodeReaderTaskSettingOptions": [ - { - "BarcodeFormatIds": ["BF_EAN_13", "BF_EAN_8", "BF_UPC_A", "BF_UPC_E"], - "ExpectedBarcodesCount": 0, - "Name": "task_read_single_barcode", - "SectionArray": [ - { - "ImageParameterName": "ip_read_single_barcode", - "Section": "ST_REGION_PREDETECTION" - }, - { - "ImageParameterName": "ip_read_single_barcode", - "Section": "ST_BARCODE_LOCALIZATION", - "StageArray": [ - { - "LocalizationModes": [ - { - "Mode": "LM_SCAN_DIRECTLY", - "ScanDirection": 2 - }, - { - "Mode": "LM_CONNECTED_BLOCKS" - } - ], - "Stage": "SST_LOCALIZE_CANDIDATE_BARCODES" - } - ] - }, - { - "ImageParameterName": "ip_read_single_barcode", - "Section": "ST_BARCODE_DECODING", - "StageArray": [ - { - "DeblurModes": [ - { - "Mode": "DM_BASED_ON_LOC_BIN" - }, - { - "Mode": "DM_DIRECT_BINARIZATION" - }, - { - "Mode": "DM_DEEP_ANALYSIS" - } - ], - "Stage": "SST_DECODE_BARCODES" - } - ] - } - ] - } - ], - "CaptureVisionTemplates": [ - { - "ImageROIProcessingNameArray": [ - "roi_read_single_barcode" - ], - "Name": "ReadOneDRetail" - } - ], - "ImageParameterOptions": [ - { - "ApplicableStages": [ - { - "BinarizationModes": [ - { - "BlockSizeX": 27, - "BlockSizeY": 27, - "EnableFillBinaryVacancy": 0, - "Mode": "BM_LOCAL_BLOCK" - } - ], - "Stage": "SST_BINARIZE_IMAGE" - } - ], - "Name": "ip_read_single_barcode" - } - ], - "TargetROIDefOptions": [ - { - "Name": "roi_read_single_barcode", - "TaskSettingNameArray": [ - "task_read_single_barcode" - ] - } - ] -} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/cigarette-dotcode.png b/barcode-scanner-api-samples/scan-single-barcode/use-customized-template/cigarette-dotcode.png deleted file mode 100644 index 8c7e481a1dba5db471561f9f79c8cb6f32c6e707..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19150 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�jd@ED;H>5qU;kS-DG>` zX8sm-JSp7XDf;OH!&>@wj(?c-uv`hK(Q(0a`ONfVW8J#L-*X|xEciX`zRw-LnUOFF zWM7&dV?e+i=Zsate>nHskw;$jmZh0?DlJd#;6ym3ar1|UFGl1*NWjPggptmn0S3#K z&^GXI^w9Wi=`O!H?`Ud$3*Xh!Xg^CN9^@2G?dto;c4bho@Fg^>%az7TUi}JRJymR5 zd{?;{si#)GihQKq>DA_DUdC7A7FHaqhG&IzM0?jywK1BRiS4LbLj2IV4K(owvN1c$ zu7S#BwcyQj`Vz>X7|~mkPh}1u{!WaNl?mZnDdN7;`R|#z(PwFs2$*WUI9gy!2_lVn z8_wrsX`dKOvs`xK@z(KgN7?7rdn!55aW)n@rW;4>52l~}ksS{3(PwS%cU@$SC+Ob? zZnte`mOHz|GhW&7cN@LPQ6Y~qMR|diiM&yt62IL%jXhFCDJ2zALDtB&ihb?`Jsz*u z#YgVLK_1&j5Nxu6VyQUgQuN_c{oKRxhTgi7io6&E`J#W`Zw*r*^;Ti{U`(os$Q;$c zZ&+)%`T=f8!El_%G8FAMsD$}{Bd!RKp6_R_
    %BmX(+mE(~tZ+8tan*TxFezVU^( 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/-HEXOTz!ig?knZ@rvfSuTS& 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 - - - - - - Use Customized Template with BarcodeScanner - - - - - - - - -

    -
    Use Customized Template
    -
    -
    - - - - -
    -
    -
    -
    - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/.gitignore b/barcode-scanner-api-samples/scan-single-barcode/vue/.gitignore deleted file mode 100644 index b398d222..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? - -package-lock.json diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/README.md b/barcode-scanner-api-samples/scan-single-barcode/vue/README.md deleted file mode 100644 index dd641687..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# 📦 Scan Single Barcode - Vue - -This sample shows how to integrate the `BarcodeScanner` API from the [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/overview/javascript/) into a **Vue 3** application to scan a single barcode from video. - -## ✨ Features - -- Easy integration with pre-built UI -- BarcodeScanner instance created in a Vue component -- Scans one barcode at a time from video - -## 🚀 Quick Start - -### 1. Install Dependencies - -```bash -npm install -``` - -### 2. Run the App - -```bash -npm run dev -``` - -Then open http://localhost:5173/ to view the sample app. - -## 📌 Customization - -Please refer to sample [`scan-multiple-barcodes`](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes) or check the official [documentation](https://dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/barcode-scanner-customization.html). - -## 📄 Support - -If you have any questions, feel free to [contact Dynamsoft Support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/index.html b/barcode-scanner-api-samples/scan-single-barcode/vue/index.html deleted file mode 100644 index 6f337734..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - Dynamsoft Barcode Reader Sample - Hello World (Decode via Camera) - - -
    - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/package.json b/barcode-scanner-api-samples/scan-single-barcode/vue/package.json deleted file mode 100644 index 3c209647..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "dbr-vue", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vue-tsc -b && vite build", - "preview": "vite preview" - }, - "dependencies": { - "dynamsoft-barcode-reader-bundle": "11.2.4000", - "vue": "^3.5.18" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^6.0.1", - "@vue/tsconfig": "^0.7.0", - "typescript": "~5.8.3", - "vite": "^7.1.2", - "vue-tsc": "^3.0.5" - } -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue b/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue deleted file mode 100644 index 360b680a..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/src/App.vue +++ /dev/null @@ -1,52 +0,0 @@ - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/src/main.ts b/barcode-scanner-api-samples/scan-single-barcode/vue/src/main.ts deleted file mode 100644 index 01433bca..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/src/main.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { createApp } from 'vue' -import App from './App.vue' - -createApp(App).mount('#app') diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/src/vite-env.d.ts b/barcode-scanner-api-samples/scan-single-barcode/vue/src/vite-env.d.ts deleted file mode 100644 index 11f02fe2..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/src/vite-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.app.json b/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.app.json deleted file mode 100644 index 3dbbc453..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.app.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "extends": "@vue/tsconfig/tsconfig.dom.json", - "compilerOptions": { - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", - - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "erasableSyntaxOnly": true, - "noFallthroughCasesInSwitch": true, - "noUncheckedSideEffectImports": true - }, - "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"] -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.json b/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.json deleted file mode 100644 index 1ffef600..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "files": [], - "references": [ - { "path": "./tsconfig.app.json" }, - { "path": "./tsconfig.node.json" } - ] -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.node.json b/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.node.json deleted file mode 100644 index f85a3990..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/tsconfig.node.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "compilerOptions": { - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", - "target": "ES2023", - "lib": ["ES2023"], - "module": "ESNext", - "skipLibCheck": true, - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "verbatimModuleSyntax": true, - "moduleDetection": "force", - "noEmit": true, - - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "erasableSyntaxOnly": true, - "noFallthroughCasesInSwitch": true, - "noUncheckedSideEffectImports": true - }, - "include": ["vite.config.ts"] -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/vue/vite.config.ts b/barcode-scanner-api-samples/scan-single-barcode/vue/vite.config.ts deleted file mode 100644 index bbcf80cc..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/vue/vite.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' - -// https://vite.dev/config/ -export default defineConfig({ - plugins: [vue()], -}) diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/.gitignore b/barcode-scanner-api-samples/scan-single-barcode/webview/android/.gitignore deleted file mode 100644 index aa724b77..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -*.iml -.gradle -/local.properties -/.idea/caches -/.idea/libraries -/.idea/modules.xml -/.idea/workspace.xml -/.idea/navEditor.xml -/.idea/assetWizardSettings.xml -.DS_Store -/build -/captures -.externalNativeBuild -.cxx -local.properties diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/README.md b/barcode-scanner-api-samples/scan-single-barcode/webview/android/README.md deleted file mode 100644 index 5af39a6a..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# Hello-world for Android WebView - Dynamsoft Barcode Reader Sample - -This sample demonstrates how to use the [Dynamsoft Barcode Reader](https://www.dynamsoft.com/barcode-reader/overview/) JS Edition in Android. - -If you want to learn how to use the Android Edition SDK in javascript, you can check [Android WebView Barcode Scanning](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/v9.x/android/JavaScript/WebViewBarcodeScanning). - -The Android Webview sample uses native APIs to handle some of the details of webview. If you want a framework, you can refer to the [capacitor sample](../../capacitor/). - -## 👓 Camera Permission - -Notice we add camera permission in `AndroidManifest.xml`. - -[app/src/main/AndroidManifest.xml](app/src/main/AndroidManifest.xml): -```xml - -``` - -## 📌 Customization - -Please refer to sample [`scan-multiple-barcodes`](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes) or check the official [documentation](https://dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/barcode-scanner-customization.html). - -## 📄 Support - -If you have any questions, feel free to [contact Dynamsoft Support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/.gitignore b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/.gitignore deleted file mode 100644 index 42afabfd..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/build.gradle b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/build.gradle deleted file mode 100644 index 33d838de..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/build.gradle +++ /dev/null @@ -1,45 +0,0 @@ -plugins { - id 'com.android.application' - id 'org.jetbrains.kotlin.android' -} - -android { - namespace 'com.dynamsoft.dbrjswebview' - compileSdk 33 - - defaultConfig { - applicationId "com.dynamsoft.dbrjswebview" - minSdk 19 - targetSdk 33 - versionCode 1 - versionName "1.0" - - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - kotlinOptions { - jvmTarget = '1.8' - } -} - -dependencies { - - implementation 'androidx.core:core-ktx:1.7.0' - implementation 'androidx.appcompat:appcompat:1.4.1' - implementation 'com.google.android.material:material:1.5.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.3' - implementation 'androidx.webkit:webkit:1.4.0' - testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.3' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' -} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/proguard-rules.pro b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/proguard-rules.pro deleted file mode 100644 index 481bb434..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/AndroidManifest.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index f557697e..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/assets/decodeBarcodeInVideo.html b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/assets/decodeBarcodeInVideo.html deleted file mode 100644 index a7b6b8f2..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/assets/decodeBarcodeInVideo.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - Dynamsoft Barcode Scanner Sample - Hello World (Decode via Camera) - - - - -

    - Hello World (Scan One Single Barcode via Camera) -

    - -
    - - - - - - - - - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt deleted file mode 100644 index 8ecaf703..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt +++ /dev/null @@ -1,105 +0,0 @@ -package com.dynamsoft.dbrjswebview - -import android.Manifest -import android.annotation.SuppressLint -import android.content.pm.PackageManager -import android.net.Uri -import androidx.appcompat.app.AppCompatActivity -import android.os.Bundle -import android.webkit.* -import androidx.activity.result.contract.ActivityResultContracts -import androidx.annotation.RequiresApi -import androidx.core.content.ContextCompat -import androidx.webkit.WebViewAssetLoader -import androidx.webkit.WebViewClientCompat - -class MainActivity : AppCompatActivity() { - @SuppressLint("SetJavaScriptEnabled") - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) - - val myWebView: WebView = findViewById(R.id.webview) - myWebView.settings.javaScriptEnabled = true - myWebView.settings.mediaPlaybackRequiresUserGesture = false - myWebView.settings.domStorageEnabled = true - - myWebView.webViewClient = MyWebViewClient() - myWebView.webChromeClient = MyWebChromeClient() - - myWebView.loadUrl("https://appassets.androidplatform.net/assets/decodeBarcodeInVideo.html") - } - - // Warning: If you use online url, you don't need `LocalContentWebViewClient` - // Refer: https://developer.android.com/develop/ui/views/layout/webapps/load-local-content?hl=en - private inner class MyWebViewClient : WebViewClientCompat() { - - private val assetLoader = WebViewAssetLoader.Builder() - .addPathHandler("/assets/", WebViewAssetLoader.AssetsPathHandler(this@MainActivity)) - .build() - - @RequiresApi(21) - override fun shouldInterceptRequest( - view: WebView, - request: WebResourceRequest - ): WebResourceResponse? { - return assetLoader.shouldInterceptRequest(request.url) - } - - // to support API < 21 - @Deprecated("Deprecated in Java") - override fun shouldInterceptRequest( - view: WebView, - url: String - ): WebResourceResponse? { - return assetLoader.shouldInterceptRequest(Uri.parse(url)) - } - } - - var cameraPermissionReq: PermissionRequest? = null - private inner class MyWebChromeClient : WebChromeClient() { - @RequiresApi(21) - override fun onPermissionRequest(request: PermissionRequest) { - if(request.resources.contains(PermissionRequest.RESOURCE_VIDEO_CAPTURE)){ - // Refer: https://developer.android.com/training/permissions/requesting - if(ContextCompat.checkSelfPermission( - this@MainActivity, - Manifest.permission.CAMERA - ) == PackageManager.PERMISSION_GRANTED){ - // You can use the API that requires the permission. - request.grant(arrayOf(PermissionRequest.RESOURCE_VIDEO_CAPTURE)) - }else{ - // You can directly ask for the permission. - // The registered ActivityResultCallback gets the result of this request. - this@MainActivity.cameraPermissionReq = request - requestCameraPermissionLauncher.launch(Manifest.permission.CAMERA) - } - }else{ - request.deny() - } - } - } - - // Refer: https://developer.android.com/training/permissions/requesting - @RequiresApi(21) - val requestCameraPermissionLauncher = registerForActivityResult( - ActivityResultContracts.RequestPermission() - ) { isGranted: Boolean -> - // Refer: https://www.dynamsoft.com/codepool/use-barcode-scanner-in-android-webview.html#set-up-webview - this@MainActivity.runOnUiThread { - if (isGranted) { - // Permission is granted. Continue the action or workflow in your - // app. - cameraPermissionReq?.grant(arrayOf(PermissionRequest.RESOURCE_VIDEO_CAPTURE)) - } else { - // Explain to the user that the feature is unavailable because the - // feature requires a permission that the user has denied. At the - // same time, respect the user's decision. Don't link to system - // settings in an effort to convince the user to change their - // decision. - cameraPermissionReq?.deny() - } - cameraPermissionReq = null - } - } -} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml deleted file mode 100644 index 2b068d11..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/drawable/ic_launcher_background.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/drawable/ic_launcher_background.xml deleted file mode 100644 index 07d5da9c..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/drawable/ic_launcher_background.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/layout/activity_main.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/layout/activity_main.xml deleted file mode 100644 index 7b58479b..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index eca70cfe..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index eca70cfe..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml deleted file mode 100644 index 6f3b755b..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp deleted file mode 100644 index c209e78ecd372343283f4157dcfd918ec5165bb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1404 zcmV-?1%vuhNk&F=1pok7MM6+kP&il$0000G0000-002h-06|PpNX!5L00Dqw+t%{r zzW2vH!KF=w&cMnnN@{whkTw+#mAh0SV?YL=)3MimFYCWp#fpdtz~8$hD5VPuQgtcN zXl<@<#Cme5f5yr2h%@8TWh?)bSK`O z^Z@d={gn7J{iyxL_y_%J|L>ep{dUxUP8a{byupH&!UNR*OutO~0{*T4q5R6@ApLF! z5{w?Z150gC7#>(VHFJZ-^6O@PYp{t!jH(_Z*nzTK4 zkc{fLE4Q3|mA2`CWQ3{8;gxGizgM!zccbdQoOLZc8hThi-IhN90RFT|zlxh3Ty&VG z?Fe{#9RrRnxzsu|Lg2ddugg7k%>0JeD+{XZ7>Z~{=|M+sh1MF7~ zz>To~`~LVQe1nNoR-gEzkpe{Ak^7{{ZBk2i_<+`Bq<^GB!RYG+z)h;Y3+<{zlMUYd zrd*W4w&jZ0%kBuDZ1EW&KLpyR7r2=}fF2%0VwHM4pUs}ZI2egi#DRMYZPek*^H9YK zay4Iy3WXFG(F14xYsoDA|KXgGc5%2DhmQ1gFCkrgHBm!lXG8I5h*uf{rn48Z!_@ z4Bk6TJAB2CKYqPjiX&mWoW>OPFGd$wqroa($ne7EUK;#3VYkXaew%Kh^3OrMhtjYN?XEoY`tRPQsAkH-DSL^QqyN0>^ zmC>{#F14jz4GeW{pJoRpLFa_*GI{?T93^rX7SPQgT@LbLqpNA}<@2wH;q493)G=1Y z#-sCiRNX~qf3KgiFzB3I>4Z%AfS(3$`-aMIBU+6?gbgDb!)L~A)je+;fR0jWLL-Fu z4)P{c7{B4Hp91&%??2$v9iRSFnuckHUm}or9seH6 z>%NbT+5*@L5(I9j@06@(!{ZI?U0=pKn8uwIg&L{JV14+8s2hnvbRrU|hZCd}IJu7*;;ECgO%8_*W Kmw_-CKmY()leWbG diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp deleted file mode 100644 index b2dfe3d1ba5cf3ee31b3ecc1ced89044a1f3b7a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2898 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 diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp deleted file mode 100644 index 4f0f1d64e58ba64d180ce43ee13bf9a17835fbca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 982 zcmV;{11bDcNk&G_0{{S5MM6+kP&il$0000G0000l001ul06|PpNU8t;00Dqo+t#w^ z^1csucXz7-Qrhzl9HuHB%l>&>1tG2^vb*E&k^T3$FG1eQZ51g$uv4V+kI`0<^1Z@N zk?Jjh$olyC%l>)Xq;7!>{iBj&BjJ`P&$fsCfpve_epJOBkTF?nu-B7D!hO=2ZR}

    C%4 zc_9eOXvPbC4kzU8YowIA8cW~Uv|eB&yYwAObSwL2vY~UYI7NXPvf3b+c^?wcs~_t{ ze_m66-0)^{JdOMKPwjpQ@Sna!*?$wTZ~su*tNv7o!gXT!GRgivP}ec?5>l1!7<(rT zds|8x(qGc673zrvYIz;J23FG{9nHMnAuP}NpAED^laz3mAN1sy+NXK)!6v1FxQ;lh zOBLA>$~P3r4b*NcqR;y6pwyhZ3_PiDb|%n1gGjl3ZU}ujInlP{eks-#oA6>rh&g+!f`hv#_%JrgYPu z(U^&XLW^QX7F9Z*SRPpQl{B%x)_AMp^}_v~?j7 zapvHMKxSf*Mtyx8I}-<*UGn3)oHd(nn=)BZ`d$lDBwq_GL($_TPaS{UeevT(AJ`p0 z9%+hQb6z)U9qjbuXjg|dExCLjpS8$VKQ55VsIC%@{N5t{NsW)=hNGI`J=x97_kbz@ E0Of=7!TQj4N+cqN`nQhxvX7dAV-`K|Ub$-q+H-5I?Tx0g9jWxd@A|?POE8`3b8fO$T))xP* z(X?&brZw({`)WU&rdAs1iTa0x6F@PIxJ&&L|dpySV!ID|iUhjCcKz(@mE z!x@~W#3H<)4Ae(4eQJRk`Iz3<1)6^m)0b_4_TRZ+cz#eD3f8V;2r-1fE!F}W zEi0MEkTTx}8i1{`l_6vo0(Vuh0HD$I4SjZ=?^?k82R51bC)2D_{y8mi_?X^=U?2|F{Vr7s!k(AZC$O#ZMyavHhlQ7 zUR~QXuH~#o#>(b$u4?s~HLF*3IcF7023AlwAYudn0FV~|odGH^05AYPEfR)8p`i{n zwg3zPVp{+wOsxKc>)(pMupKF!Y2HoUqQ3|Yu|8lwR=?5zZuhG6J?H`bSNk_wPoM{u zSL{c@pY7+c2kck>`^q1^^gR0QB7Y?KUD{vz-uVX~;V-rW)PDcI)$_UjgVV?S?=oLR zf4}zz{#*R_{LkiJ#0RdQLNC^2Vp%JPEUvG9ra2BVZ92(p9h7Ka@!yf9(lj#}>+|u* z;^_?KWdzkM`6gqPo9;;r6&JEa)}R3X{(CWv?NvgLeOTq$cZXqf7|sPImi-7cS8DCN zGf;DVt3Am`>hH3{4-WzH43Ftx)SofNe^-#|0HdCo<+8Qs!}TZP{HH8~z5n`ExcHuT zDL1m&|DVpIy=xsLO>8k92HcmfSKhflQ0H~9=^-{#!I1g(;+44xw~=* zxvNz35vfsQE)@)Zsp*6_GjYD};Squ83<_?^SbALb{a`j<0Gn%6JY!zhp=Fg}Ga2|8 z52e1WU%^L1}15Ex0fF$e@eCT(()_P zvV?CA%#Sy08_U6VPt4EtmVQraWJX` zh=N|WQ>LgrvF~R&qOfB$!%D3cGv?;Xh_z$z7k&s4N)$WYf*k=|*jCEkO19{h_(%W4 zPuOqbCw`SeAX*R}UUsbVsgtuG?xs(#Ikx9`JZoQFz0n*7ZG@Fv@kZk`gzO$HoA9kN z8U5{-yY zvV{`&WKU2$mZeoBmiJrEdzUZAv1sRxpePdg1)F*X^Y)zp^Y*R;;z~vOv-z&)&G)JQ{m!C9cmziu1^nHA z`#`0c>@PnQ9CJKgC5NjJD8HM3|KC(g5nnCq$n0Gsu_DXk36@ql%npEye|?%RmG)

    FJ$wK}0tWNB{uH;AM~i diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp deleted file mode 100644 index 948a3070fe34c611c42c0d3ad3013a0dce358be0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1900 zcmV-y2b1_xNk&Fw2LJ$9MM6+kP&il$0000G0001A003VA06|PpNH75a00DqwTbm-~ zullQTcXxO9ki!OCRx^i?oR|n!<8G0=kI^!JSjFi-LL*`V;ET0H2IXfU0*i>o6o6Gy zRq6Ap5(_{XLdXcL-MzlN`ugSdZY_`jXhcENAu)N_0?GhF))9R;E`!bo9p?g?SRgw_ zEXHhFG$0{qYOqhdX<(wE4N@es3VIo$%il%6xP9gjiBri+2pI6aY4 zJbgh-Ud|V%3O!IcHKQx1FQH(_*TK;1>FQWbt^$K1zNn^cczkBs=QHCYZ8b&l!UV{K z{L0$KCf_&KR^}&2Fe|L&?1I7~pBENnCtCuH3sjcx6$c zwqkNkru);ie``q+_QI;IYLD9OV0ZxkuyBz|5<$1BH|vtey$> z5oto4=l-R-Aaq`Dk0}o9N0VrkqW_#;!u{!bJLDq%0092{Ghe=F;(kn} z+sQ@1=UlX30+2nWjkL$B^b!H2^QYO@iFc0{(-~yXj2TWz?VG{v`Jg zg}WyYnwGgn>{HFaG7E~pt=)sOO}*yd(UU-D(E&x{xKEl6OcU?pl)K%#U$dn1mDF19 zSw@l8G!GNFB3c3VVK0?uyqN&utT-D5%NM4g-3@Sii9tSXKtwce~uF zS&Jn746EW^wV~8zdQ1XC28~kXu8+Yo9p!<8h&(Q({J*4DBglPdpe4M_mD8AguZFn~ ztiuO~{6Bx?SfO~_ZV(GIboeR9~hAym{{fV|VM=77MxDrbW6`ujX z<3HF(>Zr;#*uCvC*bpoSr~C$h?_%nXps@A)=l_;({Fo#6Y1+Zv`!T5HB+)#^-Ud_; zBwftPN=d8Vx)*O1Mj+0oO=mZ+NVH*ptNDC-&zZ7Hwho6UQ#l-yNvc0Cm+2$$6YUk2D2t#vdZX-u3>-Be1u9gtTBiMB^xwWQ_rgvGpZ6(C@e23c!^K=>ai-Rqu zhqT`ZQof;9Bu!AD(i^PCbYV%yha9zuoKMp`U^z;3!+&d@Hud&_iy!O-$b9ZLcSRh? z)R|826w}TU!J#X6P%@Zh=La$I6zXa#h!B;{qfug}O%z@K{EZECu6zl)7CiNi%xti0 zB{OKfAj83~iJvmpTU|&q1^?^cIMn2RQ?jeSB95l}{DrEPTW{_gmU_pqTc)h@4T>~& zluq3)GM=xa(#^VU5}@FNqpc$?#SbVsX!~RH*5p0p@w z;~v{QMX0^bFT1!cXGM8K9FP+=9~-d~#TK#ZE{4umGT=;dfvWi?rYj;^l_Zxywze`W z^Cr{55U@*BalS}K%Czii_80e0#0#Zkhlij4-~I@}`-JFJ7$5{>LnoJSs??J8kWVl6|8A}RCGAu9^rAsfCE=2}tHwl93t0C?#+jMpvr7O3`2=tr{Hg$=HlnjVG^ewm|Js0J*kfPa6*GhtB>`fN!m#9J(sU!?(OSfzY*zS(FJ<-Vb zfAIg+`U)YaXv#sY(c--|X zEB+TVyZ%Ie4L$gi#Fc++`h6%vzsS$pjz9aLt+ZL(g;n$Dzy5=m=_TV(3H8^C{r0xd zp#a%}ht55dOq?yhwYPrtp-m1xXp;4X;)NhxxUpgP%XTLmO zcjaFva^}dP3$&sfFTIR_jC=2pHh9kpI@2(6V*GQo7Ws)`j)hd+tr@P~gR*2gO@+1? zG<`_tB+LJuF|SZ9tIec;h%}}6WClT`L>HSW?E{Hp1h^+mlbf_$9zA>!ug>NALJsO{ mU%z=YwVD?}XMya)Bp;vlyE5&E_6!fzx9pwrdz474!~g(M6R?N? diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp deleted file mode 100644 index 1b9a6956b3acdc11f40ce2bb3f6efbd845cc243f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3918 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�(p-{x$&=IACIfoAR!za)F-^da-t3#0Dycnp zwO~NVXwXCl;jE<}>%@xz|=8fIJAB?>+E{7)|4l${4ngA3G|=r z2Dyv;VVWSgZx9Wj>qUjleGl3Ei9K4>h!(lPS%8VOG>Xu0%6VDz^O=bjJmuP7>DeUv zrbI}MlHB^^d?{zv6d=@_ZD2lg1&G7UjnVN{1}9WkaM3H~btX0GtSzB+tZ^qRgWo4m z!GmimlG$=wgXCnr6j@m<1gAL46#T~5Bnm=2{^@>|t&`9mkEPddj zAvG~@Tv~TAm2i%VW}R-g(Z0)z-Y|szHr@rk>4MAyG*Ma*7Yh#H7(!-5>DZ@8r;_dx z{prSe<>~099F8vsYd2xff7uAS%7{S)f(|@me3t2$iy&NEc7OUEchp@9A|X;;IA>8!oX+y(BKJ$EzV* znR$z;!L$s7uy@{OT~nG#B!NRraT8(X##Ho!0r_o@gg0CA-9H^;-uE&?$2$nHv_00o z%cbuUc-tCx$Uh&EZ4Nf4Zgqv)Y6>usG3>GeQnxx_Z6+PcbX-+ysbt1hQ`K1LDpOE? zrAhIZhSN9yVIAOa22gn577tbc&i3|3V8NWy&!tw##`}9*x}gtI^h1DzZRA>UuaJG) zaZ7j)dq!O}{?#8Y7~7i6fHh4{`pL?>-18|p!S75Y#^DM>-S3)vuZG+Q7l@ek zQP~#cBpWgg#mApc_sPYjpw8odQuRokmTkzcNl`^CcKB7e&;zViV;{Y{o^Y$%7i0m# z62%#1Lq!RC?}lK>%mp}T!3Xv;L*0v*>USLm``N%>w>@fwC+#T&Tx2bN4w(20JB}oU zuSa6v^kXi0xPs?pbaOHnyiqq6By1EZY9OZ^^QA>{q-Hsd&m`pbQ%8121aWG-F5xf zlZ%;B{;C>X19|`^_?dVyCq>n+41w7|!tUS!{9rHlbhX=SZO5CQ^;!Du_E7*`GiR^Q w)2!4MKjfSAeNo!9>IaV6aUZ*?W>} zs4%E?srLW`CJh0GCIK@hTkrW7A15Iu%N&?Q^$0+!{Tv&|t^Y@u%!L zglTg&?Q5q#ijZ;&HBQ?FNPp;k3J5!&{^+SGq?AX~SiOM9jJMRpyP?RCr@z38AQyy&WRMaC;n4una$~nJKSp?q|s8F00c9?Q! zY_ovvjTFm+DeQM^LXJ#v0}6HRt3R1%5PT*}W!k8BEM;Jrj8dIceFo2fhzTqaB3KKk zGlCLI)gU25(#u6ch6GeB1k@eHq7l{EHXv0n6xE#ws#ri}08kkCf8hUt{|Ejb`2YW* zvg}0nSSX1m=76s?sZhRY$K=3dpJ+y*eDULGnL2}4>4nvW^7_<~wIM_5fjvwt4h1|g z)g0Z6ZFq9j<~9~b8((~TN{Z?ZQfw|is&Xp~AC61sj;xItKyCHdI|tCMC_LbXF>~vR z=w6V3^H=W4CbAgR4#xw}ETTwu2guW~=Crl@SMXv85jQ=%y!s^?m4PI0My7MWICO;- z175jm%&PcPWh8QdOU(#8bp4!N7ET-+)N}N2zk2)8ch|4Q&lPFNQgT-thu053`r*h3 z_8dI@G;`zn;lH$zX3RzIk`E8~`J=BBdR}qD%n@vVG1834)!pS1Y?zVkJGtsa(sB~y zNfMYKsOJb%5J(0ivK8d+l2D2y&5X!cg3BG!AJ}910|_${nF}sC1QF^nLIhzXk-Y#x z0)&1iK!O;Og0Ky!;`b~v%b$`S4E&fB)1NB4v@8wr( z&+NX4e^&o)ecb=)dd~C!{(1e6t?&9j{l8%U*k4)?`(L3;Qjw z#w7FS+U(94MaJKS!J9O8^$)36_J8;thW#2$y9i{bB{?M{QS_inZIJ!jwqAbfXYVd$ zQ5fC$6Nc9hFi8m^;oI-%C#BS|c8vy+@{jx6hFcf^_;2VRgkoN(0h!_VSGmgNPRsxI z8$rTo0LaYq-H5i&gtj81=&xU?H-Y2==G@uQV7E`@+2E9XQW@{&j`?EOktk|Ho{HU>ZqDzvgjwBmdex z&uZNd2C1h{{}2k6Ys9$*nFP3;K%u!MhW`uZy7Sn`1M1zs@Es&;z*Z>Gsh@-3Fe6pE zQD2@cqF((NrRevgvLsvM_8;;iNyJ5nyPyy?e!kvKjGj`6diRFBEe49Oa7wwkJFV7Z z$YT&DWloYu-H?3<0BKn9L&JYDT-SK~*6c5pi18P26$JESKRYj{T7Zk6KiRJcbvOO*{P56Q6s8msbeI3>|j>K9}Q9UBeq*inXKemCm`-<5|-$ZyN4u$(3 z&HcvqehFD%5Yrmykg-^d`=BSa8(i=>ZoC77^mWY{evp(km@aHqhUECBz76YiR+VYK zY_avFC~V3$=`6C4JhfHAQ@DZtUOwH`L;oYX6zK0-uI^?hS$ALfq}A7evR;ohJHij} zHSZdW?EKv9U1s4oD*<(0oQ*;MaQ6@cvGL zuHCPgm_NhVsgp^sfr*ia^Db}swo1?O(_Q2)y+S$CBm+g=9wCOUPbz(x)_GbaKa@A7 zuI&!ynLiZRT#V%_y_-D`0Z5lT*auoe{(U5NylTzFSJW()W-#F6*&A`LNO1bV#Y;QJ zSbLBnp|B^dtK|KIWC|No>JjWBWE@n7O)x{&^E(WMeMvp57#qA8m* zeTow*U@_86B#Fm*rxyYu5PRWaWHx8y> z*qmHEp(AMDl0v)ij(AY8fnH=~ZwwjVAbu*m5;xPfidh@ov6d8g zfJsi&!QyK53Es%sC39ts;54V68koALD4b|%tNHW0bIkZAJKa=W&FomJSEDT>W1xIX z1x%Z>AvNIsSPLcn3RTcHXb@KB?cuM)=x6fcIx>&(GxqZ8w3p#jJ(GVgc*`c0HG}dv zIop&Qim!K1NFwic%07KcjWgHBPUkq7f~lj;TPqVGTiT#cUeim>;nY`>h@a*S{qQex zQ`z62WK|Mj)Y{tfF{;T4P;c8$Q|KU?Joh zIkA^z%X7z|r>4aTh@|StTi!-r1D!g=zb#3d#{{&K3CqE$Iz-UH<%37c zRfkO`&uM%#AD3PHv`g5t0e^O%nVL0d{Xlx^EjEC3#skF@`zl-7PF^0oxW)1!C!JxR zWvuAHH?)61FKA1QeT*_sY7;_Id#!GmV4n`MO{~sv}VLSK` zXRw=Y=Clz*00B(5y^K;gCZMAzjT5+c3IC=)l(9VIDdatpxj3y89WwI|bH&$!ZEvp` zPR!T@#!(|KfI-w?!&+7$N3F6>tD{YO4Qg$d_`nNEdfVCha9vaPn0jI0`)`@*72hq! zpU5ND^P*RoEkbD5o#az(-g=Y)L>HH>Oc%}$ zT3Rs_ih0;4+Lv4Y;@Iv(;fUbQ=i-G(#>vghec~*j(I#r|5mqFiJBpzi&hzEcD{u$< zRsm0BVYn=pT;0>R(itW|*D&;O%bOc7et9ACaH#J>z3A1A~6fdP>pmbM%xzm4>|;c_?B+%sl;Qs2{t!60$^u zH1t@9^6>;?!FuusnISi$f5CL&;z?EqJN$FBuWDA#D5`cy_UvCFIVvf{c?4N0teh;d zET$7aVbj08KTQS!x?Nd1Is8q8qFzs}a=!@nJ;7FSfCY^T@D-gpw`w<6e#X3+;O}1h z$%I!M)0bg|EKUA04Qjn@+x{Rj8vt6Wn!R|3A92z}^$KfF5(#CWr4y#~re1CN4i4w0 z#GsypBR{xA3Er7sgAi(|}1-W?s~n$7?K|9WL8kpVfw-;#b9 z+mn;=ep!162U5R>_t}fOt~tE?s#m( zO-S$7>Ay6*hHdZ)7_oU915WYYCIX;hFI-U2EWYX!pllONr@Q--2o~`!isi6vTPLJ4@(|o=%NHYjo0_S&q*UQIROw@*N-By@PaQ&;YxFZ0aR zX&}LeOEz);#m~Hwm^VAY8DK}b$F4bo{jMN?d!lxKPhNklzr^Cd`0f4oJr^z=I|l`* zm8AHm*fPV`0=lF3Pnnp}&J0N1X@}-D94YvmUabFrLGSnTz7Mu^21F#O5tN#CuY9Vh zUZBH=ez%h*wkf0hBtXJh1SN3d+IF{gzT7lp)j}n?03lt;XSQRAh7qd&v;RwTYDuQ# zbI2*r<>?x-G0@hM{;%{VBD7nLKt~D`T~-HAt5;h%i0_=Ifs=yHma5dhJ+QMG?Ux(a z|E?1CMy1!~oA`FP!k~iG=t&5#>bVdz=peT8HMB6Y)#7PpETtNryT^+Rv3vpJaF^zP z{H}0-LyV9Fu21ID%wO9f1IKlFr1p4c{o-?03vyB-tr5duk^&L$;m_|f$vs`^Sl{j2 z95}oY{LlY+=ZS%J+tZoXCd0*sSU7w^gjovXn+g7uyra5{cU49@yHf#Z^Jl-$9cIfo z+AJuxH$VLb=#+uBbVmUjnx zxb1pZ@-O9=AIk4@S)m6fJ2?{HrNYwwnL3a45muuNjr;6$O`bGEM0T4A2_S$t=86*- zcO+0mywg*j#A4mU}enR_!cGmIYQ;qwfchWtFEXL)AK%*;=j znYne+hS4EMy3S)C*mZ1KI>!+)0V@9!N6H$Y}~MJ{rYuf zz^KljIWvFi-?#?V@LPR&c6Nn{!=XM z>}-h$S76;$H{E{Y%@^zlmOl^efBwa%UU+jJD9UVukQ3ti_kH-?H*RC0?M1W%FCvMB zM_+v6fk$6X2sx)-p~B3&Kl{nscK}pNLM*qjtpaf9>AU{-iPKQZR8yCg!TY}Qg*(;) z)gdvCcB%kppZc$VdvsK@)3l1{&DG!d_6OHOS`y=ITLEVu`unSKA2E%JD*DVX{LJ}K z9l>hMRDqxQh0lnpGHpVYneX}eA3Pt|2v%=q;rt)``R|#bDyB)OXY&vI_@|*}h}G?^ z@aZ4_!7cQPX`!fW_?{oT1NTwHs#l5L-0`E|y@48<3Q^HFf8=Idi zpJYD%1MkII!~|7I^WGo)IF=?{>ACnjJ_WUi39C}!Q{QnheVJqeKKqq5^o5CBde(g9 zvw$X6^jz_^E2$wSw4!q5*RG(C2_^XO$HBn_55vbl44OnTTRwRaePP0vo{K)U1#99& z<>rq7V&V(<&@I%MFoN5zrY}sz=(*-L&}1QQ*a%`u25h{cFj===17eB_uGuzG&byQ< zrm8BJZl4r_E$3k|Wo6FW0-6M7>qac5uFQsQcmkLWGfeH74S3Z_rJ!jgN++!@i=HW8 zkyjI(oPH-+-N#Qc^-mpNO`bc6r=2-<%&Wy5K1vfFJB(L_IkpS6fY^NmuL8qsgj>MD zn~BHH9WM~32_3vd=W&B)k7F9q%stJx+b_L_X-4zr^LVUMCmyCTA3sWtkvsmME?Xiy z?xOSfB=_$oY06~J-HcCq&)qcW{j;uP;?Dm}=hkq?zh&n!;m((-G-u_t|6x399Q;>A zgNpxoJNj{u|MFDH7Rhq@FCAl0dE|ddnl!oh9{Lq?@JDoR6L;C941IK`ISfdE$4S zE0AUQ8+2|Ncl_q5QkSp#AODp~(^mfP&%Au@@|TBQwoP`UU+V{6u8|)6ZA{~uKmQ*M zmrMTDU8S~8Eqi{^v0Ug&5Upcm#y7Z1(RbgZAG8jB$eRwCspQ)>5;U)oGZ&E5aeR*K z8Yt`Y0$G))Yd(Y3KH}tA4`-_QmNke5hU_|nq=xtyjwW(_o?itz>B>WM&^63bNdQ)k@-IgDHW*RW$Xo9#RzrTrCn7L2H{9Amq|qNg@#eZY=|P zCoI?2s+L)zsM%WX(NbVEY^`C>lFjIBYmJ6@DKJ0ZT4&F&WHW!dwa%QzOG!?jY_2(S zDcEzZbz*2Q!43|z))9yOP9X1Xt%DXzwY(3tl-TR=Qb_MbZYRrooh;dYYmS!U_as1(=YVB?Q_A|tNu5Ut&_q3jbfDM zoFxT^uEuH`nX3*sB%K?GuHUkweYReBwnHqh3P)~`+s3+Tj!rDA1e)8vuBv5J*IsxC zkd^~b(aGzArj08{>cnzOuy04C+C`}gb|Yz-1avxeWzev3NzcHbz_&4W@QCr$z3~w=8Ua- z`;vfG1~BP8CyLb=F7t1am~ph_#|O%$khSJ9%Vtcn)YmpgQxF?xM^_Vb+5fnpB^W0I`f%X8gb9#X{Q-yJG0{Z56aWeI&zPxnf5pdJA38bM`cYnS#x)% z`n1tFf$i)W-hGm(f9mde^=X@NcV_lFb=P`4&CI&H=IArijGwdCk&X@uQ$5xmj!~^? z#$ROCI)V-~t%L%GS#wo@U27ddR`4`3)WoB{R-4snfNrfee|kI8^bu#yDgYqOwas9# zmcb`3!kRJ`Cr=_tq)8aMt{aGtUZsqwVlj6DgCGre>AEt&x8H_in!x@uwgExIh|-mA zjdaC(29~CTVSaaF7HPbql&*9Uo8P@f)>LqCXclr}peS7_1BQ28u9PO8Eq1@`l3q9o zkfKCaO2?T?ZyA6loW<#9_c^O=m<&h}CA!ineAD@=(gbq`vyT|tiJ6#^B1$P;;qax` z55k&Q?wEh#87niLo*+n4L@65J(Nz~=Ya%7^(miLb(E>A3B@|Jjl;FU&D>o|9#7PJH z?|ago!o;WC^h=|T7PVBg(DAB}72cyUS zb(f>Bwbr!F1eTCO5fpj<{PqhY5>143p?~5ZA5H40);=@M#MYvrB6gqHbU_!GSY??i z%s=>-ciA4*zOOZHds0a(kWewZ4h(k8h(ua7HX)Au&mY~H8KY6(_cb$_&fA@QjIW-*heP3%$d!m5^AdnT}`12qA^c@!g3DOwZ5WwE2?)-yU z!)Vx#Mtxt?FzFTwK!77sy7)sMzUd->w4^bxtpM2j!b1pjgyk zGKwWGeb4)^zjy{9Es&PU1}gwg?|J#L$KJB7ett9@4M%-nGtIQr0>Fl@8-yh`-+1ed zS6r}(MeSvgSoFmH*_WPu@i?}!AB~2?;i&IxrkNg~cQ9Som98tcq)k^|eeER|Zl77t za-TVUc;DNvzVXJ%w52+#weN?+;i#{f#!Oc&z?81*N>^e~ltRS%ZI@lR{rs()HmqG! zx*}ZrI-EZ}ckJMiy>A^oofwDfC~IH)z8{VHKGT@#E5I(Ll&+MnMCl>~AV7+>Gi%mF zkU1QlKASdR0B80!YhP<$Ywi0?W2Ux45oPfxv9QolWzJPD^weBfvo4SONxP35106sAmh(e+vAs0GboFD@PvNs)jNPvarhW}0YliZEg{Gazv z+JDIpoojRVPr<*C|BTq<`6ga{5q^8^!|0cxe=rZ!zxH3%f5ZO0cQ*Z<^$Yt2{|Ek0 zyT|*F+CO@K;(owBKtGg!S^xj-Z~rga2m6nxKl9J=fBSuNKW_dLKWhJKeg^-Xe`^1? z`TyJj)8E!#>_3Y?uKrwqq3LJ#SGU>AzUO|6`nR^u&3FNN_jGOc zw)Nw`wr3yIKhgcee6IaN=ws>M{6677%)hPwx&HzC(f&u~&)6@b2kNRzBDQAP0*H73 zq%McOmRk{B3i47qRe=DA*$&odrbEJZ*pV9XXa&p@wlW~@Yfs>V{yiTtplMhgM*-Bz zsSnlq&pG;z0OUN%$~$3=g1UF+G*>+17eRbBf3=y79J}KR8owon@$1Z7MIrvvWWH)34nK2SD)GsrJ{l z1Cl#oVo3A8qY3e=aF)qzms~FG#2$LzT=gs&aVMOj>(%{y<&O0cG!nCiESl~x=^dF{ zKvj8F1K8Ng171wwM5Fh4KoQw`_c6#y$(5cAm7e}~nJ#A*fx+c9;y#&W!#VukR)ugk zKp3=+;Ut+IYn%m+r4d*<`L2h%aDnX5}^!5R|H;(34AoVWjRx(msBZvk;rCI*|~ zdOijqI@9Z{Vu!~jvHW{lBa$rnl4+!s_5sfK3bCGk-B%iDe&@-}+%fOKU|(9?V1 zHE8&@4z)Kx!RAvAs z!Wic9=o#(bg?kc-G68-m(jZ`^=XGUXb)}t(%&~sjFnV^sEX%hSy6UKC4iOhgV=BHV z2w`4g7Y=s#Vu2B_?#VQ|hP39@eArgfX>-0S+dd&^mx0*wp}>)x;c4RUgxz%;oNe?& z-7-lJ@Y^2^C;=qJsxx5|xF)*pTGhch2B&kxtn;f!7=gznk}I3}Dh}(CoMXgA5-p&kS202!l?!fT3t|HG*rIP~mS* z$Wjo}jq3}z$Qq!9yrtd3fM0N629ZM?LU$nv@Tv9b7I;D|;0H2dsA~g7Z7zp1| zB)XmrkMgF6OQr|R)HHD^TE{Y#j!~SR?b`Xt3Qs`B+x<hxexYeAjMUWdZ-*n9%(1)Wb(n2U<><7&9dwGJmrob)4%H? zlQ%z+L-^$dFhhH|@u$%97Qz?*Ynh2VG@q|?8vY&L74&fs&_b&3$x&Oyjl~LQDRRap zJU4U*R+(2Dd!G+lh8!V{pT_UJn+^1Qg6$` zqkNm(a#hWyc6SP+p5=C4HL8-m`pO`5o~`-LI?_h5CsH?F_%?nDodmz&pWR20WTpJE z?N|wSzLjMUK8E)a2tI}Lf;+;*M|h3Y(U#>)g1>zk9|Hd}oZAa2 zLYBWBoSW!Ts!RwXr^8h+U*@{9{zqS^iH)Op<;r`Uw~nc}<^$V~_i%$GFjaG?X1@E|M`h)nekvFKt`Dh-f>@|0-`Xoq)o` zx;JmzDfOV9qCx|EVpogEe0LK~tGS?5$$L_i6P$P6wIsCQaP_;d{{N=iV@+8LI}o#( zvo*Ejy=IIn{rdIQh1&q-{EuohpVOjJ^Q3lD*YTp37$^RRgn8ihpdu5{Ct%5-KO!VL zcNB6dUajXI9jkm-P|i3~GB-A(X`P1Oqqb$tcku)UJw0w3GeUijb__#QT4j%64z%EeB7S?jlWwx_7&+EEvB|6N=kV}DwnyAlX=?j`) zmU#!$*^@NIu#n_d7;WoJV@*Fbv9|yJO4;n|BNF2xy(54RyB>t~8lUOUW$&2%Nwi1y zx6JxW88>U2$#qhl^6KUbtmg9}D0o5vYDT7kWJthLGkpGnN4T>{St^_EU>4;DmLF9o zr|LqsA8_MoNLQ=}w?8u!ziSZ@PC#Y<#9uJFo-ozVo6D;<8j^1$c|qAE3ZTE5i~zmE z$BU5lw6l=EWsg^y^;8>r9qH{xfL|~PZYK#md$zZ0?o11gV<*WSW~cgy2GYGQir%wf zt4iW8D+;s*;RGrmd(-T<@2&j(Cb9xhV*l-x`TpK`xq|7p?5R%5*s!69?2c!cC*VY* z2DE^9pvOPLU!1e}wA8S8opcTJ3`NB>hY=JQnL~QFXR4K8A$BqJnoEB$wn-%u@E6Mh zCfMF4kusv3N!(aHC}4)Xs^xoOwXd%e^6pi5|DZo=Q25j+6HlJ^7FodH6y1bMROR^q zGu6)fopS`h%Sw<;ZH%TEPf+#81-#_v+@8nlR0jLcIDKQtLleOC)6yLZgC!D9X3GgS zohwU{v$jl=quD#Go^hB{`@Qw*a%`(^jyT~=q^bWgGzRj;|12J55HWdCWV}EB|K=%N z3Nq-qxJJ`>^|1MNN+q}zTB&ooE3j==AgK@^UW<^oSbeALa2peF)Th6{@sj0KyMNHZ zksk1+MXN2tv+22A%cQOGpS9)77(uP9mh+!5T5ERLvF@b}$+WvXM45Z?-kCa)fb~f1 znVbTD$Gx-0Zxc`0D@YgHakge6SL0H`-vN_x?AP0>iGH0_EE&=v83hMJgaKAI0jJXm zVxVz;X<$v6WW7}fxROO7vr#YLP;;lij5VrX{;>7kK6TtOH&6|Ar^xo>00%+u$C4@# z>!jOt6*3><171+WxoZnKDTzJtDRw+T030;yI}~uV@9fCnei^I*j>Bp&mzP2d=FPb_ zCM*l_+$LDR3B*a!A$g#>xsrZvw0lckxmMg>0aQd7tPyN=t{dgXb;Ie+T8{fZH=gdu zM7Rg9c(kg(Jg0?ARRRl=AONFKrvFj)lTY$KfT%6^6s`mk*ABGhsce*LsoD>K{z_M2 ziPpnu+lw22PfF!CoId^6n*G4H(Ix+#+N{C(da7t1BYMGEaE#PdpOLxsVD5riQXHp@OX;`S`8VnpM~)I920w~<3|mo0 zf8~Az`*?2?H&gZ&*K&bRkV@qzvMlRHXys8*Ze2+1c?5o!^+$&MHxB@4Ee5cke52R! zmn7AZtY6ST%ixgU5)%$%QcwHj7Es-Qu^kLAPwy%7pGBw_4Q9#da^W2$}axNHr03)_nw z5?yuNmXrI5HgS46)c5&}B)Tts49oU92>3xBLLy}FMUW=84DQbVq^;7_e7|(Sdz|&J z73N+M`rc2rt*oSWu#7S{*s~nH6HRHJS1SmzeXk|;CA)FI4bat3<%}nkB%;;?=F>B7ms9QSxv#@+69;@>QaR?REYX4&)=itG>rM{<{A79Rmk)`5ON#GL`*KX%}Ihk3w(RtM-WLt z?f&FLF}4N^yE!(pZ&Yj&Bc`~K0@4_}*0Om?wN|}4WJ>WL;G^H2*QpgEkGA~OET-Km zkwz|5{6dnz1U<2Pe9DNL>3g5FEIvp1jzP&2K#z~j%g6!7B;^zF+o95?fV{3mnB8*RMhCDNp>Am-3e@jNfMj?jHV$MWjk!DDKP zkAz$Y?Sr)!GUOX}qTQ5aMh|wq1uq}~joWyKl=b_LboM#wi{CMuz5x6BKlA-qy++cM01D3b7`uD z#l6M4pI;JCypO8JZ6?U&wNxR!{4oB_ zlV!x9+-&Qy6{%MQ{~yoZGkKiTSC`YS_j22~G;xUV855g2&C(zm^V!(wpcm@zn{%!g z4}JGo(sGZ1O~to-}le

    UmY2RIYtNPVDpE$%vda+HD#3m z&VuXJ{BK&Qe+rBa7eq}Q(bq|tn(RrJAk|ztj2(i{d>nmQnM?;HF2k&9sA6up5tmjl z7lySlzMbifH17-m-Lwa_F&e7nOH?ESi3#ckR3tsM+jsck3`oG!uMS}|eAwVXv>}qxwq?QY%QJ0}r@^;fhuUA9W z*BVl>TGo&N004@xSiwDUXUvp51sVmqO3m)=B55aPwf@0=e}cN+$-BdKxY`YrT_4)0 z_d10#i44Q*rFr8MC>*)v$EJvz``(pb{e&*6k+b zsMz%($|1+8hn8c2?P(l@;Rb&CsZeYoCI3?2!LqjbwPXW3z4G$Qfj=cT5Yb%vY0(AX oeb?AaKtwrnc|$|zzw9vfvn^aJJ!zd)XFXqqy0000001=f@-~a#s diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values-night/themes.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values-night/themes.xml deleted file mode 100644 index 77300351..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values-night/themes.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/colors.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/colors.xml deleted file mode 100644 index f8c6127d..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/colors.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - #FFBB86FC - #FF6200EE - #FF3700B3 - #FF03DAC5 - #FF018786 - #FF000000 - #FFFFFFFF - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/strings.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/strings.xml deleted file mode 100644 index 5d77158e..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - Dynamsoft Barcode - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/themes.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/themes.xml deleted file mode 100644 index e2ed77aa..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/values/themes.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/xml/backup_rules.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/xml/backup_rules.xml deleted file mode 100644 index fa0f996d..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/xml/backup_rules.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/xml/data_extraction_rules.xml b/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/xml/data_extraction_rules.xml deleted file mode 100644 index 9ee9997b..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/app/src/main/res/xml/data_extraction_rules.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/build.gradle b/barcode-scanner-api-samples/scan-single-barcode/webview/android/build.gradle deleted file mode 100644 index ab2b874f..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/build.gradle +++ /dev/null @@ -1,6 +0,0 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. -plugins { - id 'com.android.application' version '7.4.2' apply false - id 'com.android.library' version '7.4.2' apply false - id 'org.jetbrains.kotlin.android' version '1.8.0' apply false -} \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle.properties b/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle.properties deleted file mode 100644 index 3c5031eb..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle.properties +++ /dev/null @@ -1,23 +0,0 @@ -# Project-wide Gradle settings. -# IDE (e.g. Android Studio) users: -# Gradle settings configured through the IDE *will override* -# any settings specified in this file. -# For more details on how to configure your build environment visit -# http://www.gradle.org/docs/current/userguide/build_environment.html -# Specifies the JVM arguments used for the daemon process. -# The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 -# When configured, Gradle will run in incubating parallel mode. -# This option should only be used with decoupled projects. More details, visit -# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true -# AndroidX package structure to make it clearer which packages are bundled with the -# Android operating system, and which are packaged with your app's APK -# https://developer.android.com/topic/libraries/support-library/androidx-rn -android.useAndroidX=true -# Kotlin code style for this project: "official" or "obsolete": -kotlin.code.style=official -# Enables namespacing of each library's R class so that its R class includes only the -# resources declared in the library itself and none from the library's dependencies, -# thereby reducing the size of the R class for that library -android.nonTransitiveRClass=true \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle/wrapper/gradle-wrapper.jar b/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index e708b1c023ec8b20f512888fe07c5bd3ff77bb8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59203 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

    K7UpUK$>l@ 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 E2O(~oYXATM diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle/wrapper/gradle-wrapper.properties b/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index dea1f353..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Thu Apr 13 17:46:19 CST 2023 -distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip -distributionPath=wrapper/dists -zipStorePath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradlew b/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradlew deleted file mode 100644 index 4f906e0c..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradlew +++ /dev/null @@ -1,185 +0,0 @@ -#!/usr/bin/env sh - -# -# Copyright 2015 the original author or authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn () { - echo "$*" -} - -die () { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=`expr $i + 1` - done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -exec "$JAVACMD" "$@" diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradlew.bat b/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradlew.bat deleted file mode 100644 index 107acd32..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/gradlew.bat +++ /dev/null @@ -1,89 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/android/settings.gradle b/barcode-scanner-api-samples/scan-single-barcode/webview/android/settings.gradle deleted file mode 100644 index e5f9d85d..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/android/settings.gradle +++ /dev/null @@ -1,16 +0,0 @@ -pluginManagement { - repositories { - google() - mavenCentral() - gradlePluginPortal() - } -} -dependencyResolutionManagement { - repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) - repositories { - google() - mavenCentral() - } -} -rootProject.name = "Dynamsoft Barcode" -include ':app' diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/.gitignore b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/.gitignore deleted file mode 100644 index ba1ff083..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/.gitignore +++ /dev/null @@ -1,90 +0,0 @@ -# Xcode -# -# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore - -## User settings -xcuserdata/ - -## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) -*.xcscmblueprint -*.xccheckout - -## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) -build/ -DerivedData/ -*.moved-aside -*.pbxuser -!default.pbxuser -*.mode1v3 -!default.mode1v3 -*.mode2v3 -!default.mode2v3 -*.perspectivev3 -!default.perspectivev3 - -## Obj-C/Swift specific -*.hmap - -## App packaging -*.ipa -*.dSYM.zip -*.dSYM - -## Playgrounds -timeline.xctimeline -playground.xcworkspace - -# Swift Package Manager -# -# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. -# Packages/ -# Package.pins -# Package.resolved -# *.xcodeproj -# -# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata -# hence it is not needed unless you have added a package configuration file to your project -# .swiftpm - -.build/ - -# CocoaPods -# -# We recommend against adding the Pods directory to your .gitignore. However -# you should judge for yourself, the pros and cons are mentioned at: -# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# -# Pods/ -# -# Add this line if you want to avoid checking in source code from the Xcode workspace -# *.xcworkspace - -# Carthage -# -# Add this line if you want to avoid checking in source code from Carthage dependencies. -# Carthage/Checkouts - -Carthage/Build/ - -# Accio dependency management -Dependencies/ -.accio/ - -# fastlane -# -# It is recommended to not store the screenshots in the git repo. -# Instead, use fastlane to re-generate the screenshots whenever they are needed. -# For more information about the recommended setup visit: -# https://docs.fastlane.tools/best-practices/source-control/#source-control - -fastlane/report.xml -fastlane/Preview.html -fastlane/screenshots/**/*.png -fastlane/test_output - -# Code Injection -# -# After new code Injection tools there's a generated folder /iOSInjectionProject -# https://github.com/johnno1962/injectionforxcode - -iOSInjectionProject/ \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/README.md b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/README.md deleted file mode 100644 index a498670c..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Hello-world for iOS WKWebView - Dynamsoft Barcode Reader Sample - -This sample demonstrates how to use the [Dynamsoft Barcode Reader](https://www.dynamsoft.com/barcode-reader/overview/) JS Edition in iOS(Swift). - -If you want to learn how to use the iOS Edition SDK in javascript, you can check [iOS WebView Barcode Scanning](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/v9.x/ios/JavaScript/WebViewBarcodeScanning) - -The iOS Webview sample uses native APIs to handle some of the details of webview. If you want a framework, you can refer to the [capacitor sample](../../capacitor/). - -## 👓 Camera Permission - -Notice we add camera permission in `Info.plist`. - -[dbrjswebview/Info.plist](dbrjswebview/Info.plist): -```xml -NSCameraUsageDescription -Decoding barcodes from video needs to access your camera. -``` - -## 📌 Customization - -Please refer to sample [`scan-multiple-barcodes`](https://github.com/Dynamsoft/barcode-reader-javascript-samples/tree/main/barcode-scanner-api-samples/scan-multiple-barcodes) or check the official [documentation](https://dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/barcode-scanner-customization.html). - -## 📄 Support - -If you have any questions, feel free to [contact Dynamsoft Support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.pbxproj b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.pbxproj deleted file mode 100644 index 7f7ce301..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.pbxproj +++ /dev/null @@ -1,373 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 56; - objects = { - -/* Begin PBXBuildFile section */ - 68309E9F29F28D950016A358 /* html in Resources */ = {isa = PBXBuildFile; fileRef = 68309E9E29F28D950016A358 /* html */; }; - 68A0A94529EE855E00DC7D57 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68A0A94429EE855E00DC7D57 /* AppDelegate.swift */; }; - 68A0A94729EE855E00DC7D57 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68A0A94629EE855E00DC7D57 /* SceneDelegate.swift */; }; - 68A0A94929EE855E00DC7D57 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68A0A94829EE855E00DC7D57 /* ViewController.swift */; }; - 68A0A94C29EE855E00DC7D57 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 68A0A94A29EE855E00DC7D57 /* Main.storyboard */; }; - 68A0A94E29EE856100DC7D57 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 68A0A94D29EE856100DC7D57 /* Assets.xcassets */; }; - 68A0A95129EE856100DC7D57 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 68A0A94F29EE856100DC7D57 /* LaunchScreen.storyboard */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 68309E9E29F28D950016A358 /* html */ = {isa = PBXFileReference; lastKnownFileType = folder; path = html; sourceTree = ""; }; - 68A0A94129EE855E00DC7D57 /* dbrjswebview.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = dbrjswebview.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 68A0A94429EE855E00DC7D57 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 68A0A94629EE855E00DC7D57 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; - 68A0A94829EE855E00DC7D57 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; - 68A0A94B29EE855E00DC7D57 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 68A0A94D29EE856100DC7D57 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 68A0A95029EE856100DC7D57 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 68A0A95229EE856100DC7D57 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 68A0A93E29EE855E00DC7D57 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 68A0A93829EE855E00DC7D57 = { - isa = PBXGroup; - children = ( - 68A0A94329EE855E00DC7D57 /* dbrjswebview */, - 68A0A94229EE855E00DC7D57 /* Products */, - ); - sourceTree = ""; - }; - 68A0A94229EE855E00DC7D57 /* Products */ = { - isa = PBXGroup; - children = ( - 68A0A94129EE855E00DC7D57 /* dbrjswebview.app */, - ); - name = Products; - sourceTree = ""; - }; - 68A0A94329EE855E00DC7D57 /* dbrjswebview */ = { - isa = PBXGroup; - children = ( - 68309E9E29F28D950016A358 /* html */, - 68A0A94429EE855E00DC7D57 /* AppDelegate.swift */, - 68A0A94629EE855E00DC7D57 /* SceneDelegate.swift */, - 68A0A94829EE855E00DC7D57 /* ViewController.swift */, - 68A0A94A29EE855E00DC7D57 /* Main.storyboard */, - 68A0A94D29EE856100DC7D57 /* Assets.xcassets */, - 68A0A94F29EE856100DC7D57 /* LaunchScreen.storyboard */, - 68A0A95229EE856100DC7D57 /* Info.plist */, - ); - path = dbrjswebview; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 68A0A94029EE855E00DC7D57 /* dbrjswebview */ = { - isa = PBXNativeTarget; - buildConfigurationList = 68A0A95529EE856100DC7D57 /* Build configuration list for PBXNativeTarget "dbrjswebview" */; - buildPhases = ( - 68A0A93D29EE855E00DC7D57 /* Sources */, - 68A0A93E29EE855E00DC7D57 /* Frameworks */, - 68A0A93F29EE855E00DC7D57 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = dbrjswebview; - productName = dbrjswebview; - productReference = 68A0A94129EE855E00DC7D57 /* dbrjswebview.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 68A0A93929EE855E00DC7D57 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = 1; - LastSwiftUpdateCheck = 1400; - LastUpgradeCheck = 1400; - TargetAttributes = { - 68A0A94029EE855E00DC7D57 = { - CreatedOnToolsVersion = 14.0.1; - }; - }; - }; - buildConfigurationList = 68A0A93C29EE855E00DC7D57 /* Build configuration list for PBXProject "dbrjswebview" */; - compatibilityVersion = "Xcode 14.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 68A0A93829EE855E00DC7D57; - productRefGroup = 68A0A94229EE855E00DC7D57 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 68A0A94029EE855E00DC7D57 /* dbrjswebview */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 68A0A93F29EE855E00DC7D57 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 68A0A95129EE856100DC7D57 /* LaunchScreen.storyboard in Resources */, - 68309E9F29F28D950016A358 /* html in Resources */, - 68A0A94E29EE856100DC7D57 /* Assets.xcassets in Resources */, - 68A0A94C29EE855E00DC7D57 /* Main.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 68A0A93D29EE855E00DC7D57 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 68A0A94929EE855E00DC7D57 /* ViewController.swift in Sources */, - 68A0A94529EE855E00DC7D57 /* AppDelegate.swift in Sources */, - 68A0A94729EE855E00DC7D57 /* SceneDelegate.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 68A0A94A29EE855E00DC7D57 /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 68A0A94B29EE855E00DC7D57 /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 68A0A94F29EE856100DC7D57 /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 68A0A95029EE856100DC7D57 /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 68A0A95329EE856100DC7D57 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 68A0A95429EE856100DC7D57 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 68A0A95629EE856100DC7D57 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = KK22Q4GV82; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = dbrjswebview/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = DyBarcode; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; - INFOPLIST_KEY_UIMainStoryboardFile = Main; - INFOPLIST_KEY_UIStatusBarStyle = ""; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - IPHONEOS_DEPLOYMENT_TARGET = 14.3; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.dynamsoft.dbrjswebview; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 68A0A95729EE856100DC7D57 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = KK22Q4GV82; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = dbrjswebview/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = DyBarcode; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; - INFOPLIST_KEY_UIMainStoryboardFile = Main; - INFOPLIST_KEY_UIStatusBarStyle = ""; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - IPHONEOS_DEPLOYMENT_TARGET = 14.3; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.dynamsoft.dbrjswebview; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 68A0A93C29EE855E00DC7D57 /* Build configuration list for PBXProject "dbrjswebview" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 68A0A95329EE856100DC7D57 /* Debug */, - 68A0A95429EE856100DC7D57 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 68A0A95529EE856100DC7D57 /* Build configuration list for PBXNativeTarget "dbrjswebview" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 68A0A95629EE856100DC7D57 /* Debug */, - 68A0A95729EE856100DC7D57 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 68A0A93929EE855E00DC7D57 /* Project object */; -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a6..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d98100..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/AppDelegate.swift b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/AppDelegate.swift deleted file mode 100644 index ad05d455..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/AppDelegate.swift +++ /dev/null @@ -1,36 +0,0 @@ -// -// AppDelegate.swift -// dbrjswebview -// -// Created by Dynamsoft on 2023/4/18. -// - -import UIKit - -@main -class AppDelegate: UIResponder, UIApplicationDelegate { - - - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - // Override point for customization after application launch. - return true - } - - // MARK: UISceneSession Lifecycle - - func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { - // Called when a new scene session is being created. - // Use this method to select a configuration to create the new scene with. - return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) - } - - func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { - // Called when the user discards a scene session. - // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. - // Use this method to release any resources that were specific to the discarded scenes, as they will not return. - } - - -} - diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json deleted file mode 100644 index eb878970..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "colors" : [ - { - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 13613e3e..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/Contents.json b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/Contents.json deleted file mode 100644 index 73c00596..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index 865e9329..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Base.lproj/Main.storyboard b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Base.lproj/Main.storyboard deleted file mode 100644 index 85dc8abf..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Base.lproj/Main.storyboard +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Info.plist b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Info.plist deleted file mode 100644 index 93bb4788..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/Info.plist +++ /dev/null @@ -1,27 +0,0 @@ - - - - - NSCameraUsageDescription - Decoding barcodes from video needs to access your camera. - UIApplicationSceneManifest - - UIApplicationSupportsMultipleScenes - - UISceneConfigurations - - UIWindowSceneSessionRoleApplication - - - UISceneConfigurationName - Default Configuration - UISceneDelegateClassName - $(PRODUCT_MODULE_NAME).SceneDelegate - UISceneStoryboardFile - Main - - - - - - diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/SceneDelegate.swift b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/SceneDelegate.swift deleted file mode 100644 index 0860c7e6..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/SceneDelegate.swift +++ /dev/null @@ -1,52 +0,0 @@ -// -// SceneDelegate.swift -// dbrjswebview -// -// Created by Dynamsoft on 2023/4/18. -// - -import UIKit - -class SceneDelegate: UIResponder, UIWindowSceneDelegate { - - var window: UIWindow? - - - func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { - // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. - // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. - // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). - guard let _ = (scene as? UIWindowScene) else { return } - } - - func sceneDidDisconnect(_ scene: UIScene) { - // Called as the scene is being released by the system. - // This occurs shortly after the scene enters the background, or when its session is discarded. - // Release any resources associated with this scene that can be re-created the next time the scene connects. - // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). - } - - func sceneDidBecomeActive(_ scene: UIScene) { - // Called when the scene has moved from an inactive state to an active state. - // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. - } - - func sceneWillResignActive(_ scene: UIScene) { - // Called when the scene will move from an active state to an inactive state. - // This may occur due to temporary interruptions (ex. an incoming phone call). - } - - func sceneWillEnterForeground(_ scene: UIScene) { - // Called as the scene transitions from the background to the foreground. - // Use this method to undo the changes made on entering the background. - } - - func sceneDidEnterBackground(_ scene: UIScene) { - // Called as the scene transitions from the foreground to the background. - // Use this method to save data, release shared resources, and store enough scene-specific state information - // to restore the scene back to its current state. - } - - -} - diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/ViewController.swift b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/ViewController.swift deleted file mode 100644 index 4e787292..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/ViewController.swift +++ /dev/null @@ -1,116 +0,0 @@ -// -// ViewController.swift -// dbrjswebview -// -// Created by Dynamsoft on 2023/4/18. -// - -import UIKit -import WebKit - -// Refer: https://developer.apple.com/documentation/webkit/viewing_desktop_or_mobile_web_content_using_a_web_view -class ViewController: UIViewController, WKUIDelegate { - - let webView: WKWebView - - required init?(coder: NSCoder) { - print("entered init") - let configuration = WKWebViewConfiguration() - configuration.allowsInlineMediaPlayback = true - configuration.mediaTypesRequiringUserActionForPlayback = [] - // Refer: https://stackoverflow.com/a/51736967 - configuration.websiteDataStore = WKWebsiteDataStore.default() - webView = WKWebView(frame: .init(), configuration: configuration) - - super.init(coder: coder) - } - - // Refer: https://www.hackingwithswift.com/articles/112/the-ultimate-guide-to-wkwebview - override func loadView() { - self.view = webView - } - - override func viewDidLoad() { - super.viewDidLoad() - print("entered viewDidLoad") - // Do any additional setup after loading the view. - - // Refer: https://stackoverflow.com/a/40316507 - webView.uiDelegate = self - - //let url = URL(string: "https://your.online.website/target/page.html")! - //webView.load(URLRequest(url: url)) - - // load local html - let fileUrl = Bundle.main.url(forResource: "html/decodeFileInVideo", withExtension: "html")! - webView.loadFileURL(fileUrl, allowingReadAccessTo: fileUrl) - print("finish viewDidLoad") - } - - // Refer: https://stackoverflow.com/a/40316507 - - func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, - completionHandler: @escaping () -> Void) { - - let alertController = UIAlertController(title: nil, message: message, preferredStyle: .actionSheet) - alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in - completionHandler() - })) - - present(alertController, animated: true, completion: nil) - } - - - func webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, - completionHandler: @escaping (Bool) -> Void) { - - let alertController = UIAlertController(title: nil, message: message, preferredStyle: .actionSheet) - - alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in - completionHandler(true) - })) - - alertController.addAction(UIAlertAction(title: "Cancel", style: .default, handler: { (action) in - completionHandler(false) - })) - - present(alertController, animated: true, completion: nil) - } - - - func webView(_ webView: WKWebView, runJavaScriptTextInputPanelWithPrompt prompt: String, defaultText: String?, initiatedByFrame frame: WKFrameInfo, - completionHandler: @escaping (String?) -> Void) { - - let alertController = UIAlertController(title: nil, message: prompt, preferredStyle: .actionSheet) - - alertController.addTextField { (textField) in - textField.text = defaultText - } - - alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in - if let text = alertController.textFields?.first?.text { - completionHandler(text) - } else { - completionHandler(defaultText) - } - })) - - alertController.addAction(UIAlertAction(title: "Cancel", style: .default, handler: { (action) in - completionHandler(nil) - })) - - present(alertController, animated: true, completion: nil) - } - - // Auto grant camera access - // Refer: https://stackoverflow.com/a/72729381/6414094 - func webView(_ webView: WKWebView, - requestMediaCapturePermissionFor - origin: WKSecurityOrigin,initiatedByFrame - frame: WKFrameInfo,type: WKMediaCaptureType, - decisionHandler: @escaping (WKPermissionDecision) -> Void){ - decisionHandler(.grant) - } - -} - diff --git a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/html/decodeFileInVideo.html b/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/html/decodeFileInVideo.html deleted file mode 100644 index a7b6b8f2..00000000 --- a/barcode-scanner-api-samples/scan-single-barcode/webview/ios/dbrjswebview/html/decodeFileInVideo.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - Dynamsoft Barcode Scanner Sample - Hello World (Decode via Camera) - - - - -

    - Hello World (Scan One Single Barcode via Camera) -

    - -
    - - - - - - - - - - - - - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/README.md b/foundational-api-samples/hello-world/README.md deleted file mode 100644 index e62b6fad..00000000 --- a/foundational-api-samples/hello-world/README.md +++ /dev/null @@ -1,102 +0,0 @@ -# The Hello World Sample Set - -As you have already gone through the [user guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.4000#hello-world---simplest-implementation), you may have come across some basic "Hello World" code that can help you create a simple web application using our SDK quickly. - -In this set of samples, we will revisit the "Hello World" code and show how to implement it using some popular frameworks, such as Angular, React, and Vue. - -Let's now go through each of the samples. - -## Hello World - -In this example, you will learn the minimum codes required to initialize and set up the SDK. - -Let's quickly break down the methods used in order: - -- `Dynamsoft.License.LicenseManager.initLicense()`: This method initializes the license for using the SDK in the application. -- `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 [`Image Source Adapter`](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 object created with `Dynamsoft.DCE.CameraEnhancer.createInstance(view)` - - **Coordinate Image-Processing Tasks** - - The coordination happens behind the scenes. `cvRouter` starts the process by specifying a preset template "ReadSingleBarcode" with 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 `resultReceiver` is registered to `cvRouter` via the method `addResultReceiver()`. - ```js - cvRouter.addResultReceiver(resultReceiver); - ``` - - Also note that reading from video is extremely fast and there could be many duplicate results. We can use a `MultiFrameResultCrossFilter` object 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/?lang=js). - -## Hello World - Read Barcodes from an Image - -The second sample processes static images and returns barcode results. - -In this sample, an event listener is set up so that the SDK decodes any images that the user uploads. - -When working with the CaptureVisionRouter class for single image processing, the main method to use is [`capture`](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/single-image-processing.html?lang=js), You can find more details about this method at the link above. - -## Hello World in Angular - -Read more in the README under "angular". - -## Hello World in Blazor - -Read more in the README under "blazor". - -## Hello World in Electron - -Read more in the README under "electron". - -## Hello World in Next.js - -Read more in the README under "next". - -## Hello World in NuxtJS - -Read more in the README under "nuxt". - -## Hello World in PWA - -Read more in the README under "pwa". - -## Hello World in React - -Read more in the README under "react". - -## Hello World in React using Hooks - -Read more in the README under "react-hooks". - -## Hello World in Svelte - -Read more in the README under "svelte". - -## Hello World in Vue - -Read more in the README under "vue". - -## Hello World with RequireJS - -This sample shows how to use the SDK in a web page based on RequireJS. - -## Hello World with ES6 - -This sample shows how to use the SDK in a web page based on ES6 (also known as ECMAScript 2015 or ECMAScript 6). - -## Hello World with WebView - -Read more in the README under "webview". - -## Support - -If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/foundational-api-samples/hello-world/angular/.editorconfig b/foundational-api-samples/hello-world/angular/.editorconfig deleted file mode 100644 index 59d9a3a3..00000000 --- a/foundational-api-samples/hello-world/angular/.editorconfig +++ /dev/null @@ -1,16 +0,0 @@ -# Editor configuration, see https://editorconfig.org -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -insert_final_newline = true -trim_trailing_whitespace = true - -[*.ts] -quote_type = single - -[*.md] -max_line_length = off -trim_trailing_whitespace = false diff --git a/foundational-api-samples/hello-world/angular/.gitignore b/foundational-api-samples/hello-world/angular/.gitignore deleted file mode 100644 index 4ff8f4e9..00000000 --- a/foundational-api-samples/hello-world/angular/.gitignore +++ /dev/null @@ -1,44 +0,0 @@ -# See https://docs.github.com/get-started/getting-started-with-git/ignoring-files for more about ignoring files. - -# Compiled output -/dist -/tmp -/out-tsc -/bazel-out - -# Node -/node_modules -npm-debug.log -yarn-error.log - -# IDEs and editors -.idea/ -.project -.classpath -.c9/ -*.launch -.settings/ -*.sublime-workspace - -# Visual Studio Code -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -.history/* - -# Miscellaneous -/.angular/cache -.sass-cache/ -/connect.lock -/coverage -/libpeerconnection.log -testem.log -/typings - -# System files -.DS_Store -Thumbs.db - -package-lock.json diff --git a/foundational-api-samples/hello-world/angular/README.md b/foundational-api-samples/hello-world/angular/README.md deleted file mode 100644 index 53abb5d8..00000000 --- a/foundational-api-samples/hello-world/angular/README.md +++ /dev/null @@ -1,422 +0,0 @@ -# Hello World Sample for Angular - -[Angular](https://angular.dev/) is one of the most popular and mature JavaScript frameworks. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into an Angular application. Note that in this sample, `TypeScript` is used. - -In this guide, we will be using [`dynamsoft-barcode-reader-bundle 11.2.4000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/11.2.4000). - -> Note: -> -> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! -> -> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. - -## Official sample - -*
    Hello World in Angular - Source Code - -## Preparation -Make sure you have [node](https://nodejs.org/) and [Angular CLI](https://cli.angular.io/) installed. - -This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.3.7. - -## Quick Start - -1. Install project dependencies - -```cmd -npm install -``` - -2. Build and serve the Angular app - -```cmd -ng serve -``` - -Then open `https://localhost:4200/` to view the sample app. - -## Creating the sample project - -In this section, we will be creating an Angular application utilizing the Dynamsoft Barcode Reader bundle sdk. - -We'll be exploring how you could create a page that not only enables barcode scanning via a webcam or a built-in camera, but also decode barcodes from local images. - -By the end of this guide, you'll have a good understanding of the SDK and be ready to discover more ways to use it! - -### Create an [Angular](https://angular.dev) Application bootstrapped with [Angular CLI](https://cli.angular.io/) -```cmd -ng new my-app -``` - -On installation, you will be prompted to configure your project.\ -You can customize these options according to your preferences.\ -Below is the configuration used for this sample. - -``` -? Which stylesheet format would you like to use? CSS -? Do you want to enable Server-Side Rendering (SSR) and Static Site Generation (SSG/Prerendering)? No -``` - -### **CD** to the root directory of the application and install necessary libraries - -```cmd -cd my-app -npm install dynamsoft-barcode-reader-bundle@11.2.4000 -E -``` - -## Start to implement - -### Add file "dynamsoft.config.ts" at the root of the app to configure libraries - -```typescript -/* /dynamsoft.config.ts */ -import { CoreModule } from 'dynamsoft-core'; -import { LicenseManager } from 'dynamsoft-license'; -import 'dynamsoft-barcode-reader'; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths.rootDirectory = "https://cdn.jsdelivr.net/npm/"; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense('DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9', true); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.4000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload .wasm file for reading barcodes. It will save time on the initial decoding by skipping the resource loading. -CoreModule.loadWasm(); -``` - -> Note: -> -> * `initLicense()` specify a license key to use the library. You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=sample&product=dbr&package=js to get your own trial license good for 30 days. -> * `engineResourcePaths` tells the library where to get the necessary resources at runtime. - -### Generate and edit the `video-capture` component - -* Generate the `video-capture`. The `video-capture` component helps decode barcodes via camera. - -```cmd -ng generate component video-capture -``` - -* In `video-capture.component.html`, add code to setup the component's HTML - -```html - -
    -
    -Results: -
    {{resultText}}
    -``` - -* In `video-capture.component.ts`, add code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```ts -/* /src/app/video-capture/video-capture.component.ts */ -import { Component, ElementRef, ViewChild } from '@angular/core'; -import '../dynamsoft.config'; -import { CameraEnhancer, CameraView } from 'dynamsoft-camera-enhancer'; -import { CaptureVisionRouter } from 'dynamsoft-capture-vision-router'; -import { MultiFrameResultCrossFilter } from 'dynamsoft-utility'; - -const componentDestroyedErrorMsg = 'VideoCapture Component Destroyed'; - -@Component({ - selector: 'app-video-capture', - templateUrl: './video-capture.component.html', - styleUrls: ['./video-capture.component.css'], - standalone: true, -}) -export class VideoCaptureComponent { - @ViewChild('cameraViewContainer') cameraViewContainer?: ElementRef; - resultText = ""; - - resolveInit?: () => void; - pInit: Promise = new Promise((r) => { - this.resolveInit = r; - }); - isDestroyed = false; - - cvRouter?: CaptureVisionRouter; - cameraEnhancer?: CameraEnhancer; - - async ngAfterViewInit(): Promise { - try { - // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. - const cameraView = await CameraView.createInstance(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } // Check if component is destroyed after every async - this.cameraEnhancer = await CameraEnhancer.createInstance(cameraView); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Get default UI and append it to DOM. - this.cameraViewContainer!.nativeElement.append(cameraView.getUIElement()); - - // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. - this.cvRouter = await CaptureVisionRouter.createInstance(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - this.cvRouter.setInput(this.cameraEnhancer); - - // Define a callback for results. - this.cvRouter.addResultReceiver({ - onDecodedBarcodesReceived: (result) => { - if (!result.barcodeResultItems.length) return; - - this.resultText = ''; - console.log(result); - for (let item of result.barcodeResultItems) { - this.resultText += `${item.formatString}: ${item.text}\n\n`; - } - }, - }); - - // Filter out unchecked and duplicate results. - const filter = new MultiFrameResultCrossFilter(); - // Filter out unchecked barcodes. - filter.enableResultCrossVerification('barcode', true); - // Filter out duplicate barcodes within 3 seconds. - filter.enableResultDeduplication('barcode', true); - await this.cvRouter.addResultFilter(filter); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Open camera and start scanning single barcode. - await this.cameraEnhancer.open(); - cameraView.setScanLaserVisible(true); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - await this.cvRouter.startCapturing('ReadSingleBarcode'); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - } catch (ex: any) { - if ((ex as Error)?.message === componentDestroyedErrorMsg) { - console.log(componentDestroyedErrorMsg); - } else { - let errMsg = ex.message || ex; - console.error(ex); - alert(errMsg); - } - } - - // Resolve pInit promise once initialization is complete. - this.resolveInit!(); - } - - // dispose cvRouter when it's no longer needed - async ngOnDestroy() { - this.isDestroyed = true; - try { - // Wait for the pInit to complete before disposing resources. - await this.pInit; - this.cvRouter?.dispose(); - this.cameraEnhancer?.dispose(); - } catch (_) {} - } -} -``` -> Note: -> -> If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customizing-the-ui) - - -### Generate and edit the `image-capture` component - -* Generate the `image-capture`. The `image-capture` component helps decode barcodes in an image. - -```cmd -ng generate component image-capture -``` - -* In `image-capture.component.html`, add code to setup the component's HTML - -```html - -
    -
    - -
    -
    {{resultText}}
    -
    -``` - -* In `image-capture.component.ts`, add code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```ts -/* /src/app/image-capture/image-capture.component.ts */ -import { Component, ViewChild, ElementRef } from '@angular/core'; -import '../dynamsoft.config'; -import { EnumCapturedResultItemType } from 'dynamsoft-core'; -import type { BarcodeResultItem } from 'dynamsoft-barcode-reader'; -import { CaptureVisionRouter } from 'dynamsoft-capture-vision-router'; - -@Component({ - selector: 'app-image-capture', - templateUrl: './image-capture.component.html', - styleUrls: ['./image-capture.component.css'], - standalone: true, -}) -export class ImageCaptureComponent { - resultText = ""; - - pCvRouter?: Promise; - isDestroyed = false; - - captureImage = async (e: Event) => { - let files = [...((e.target! as HTMLInputElement).files as any as File[])]; - (e.target! as HTMLInputElement).value = ''; // reset input - this.resultText = ''; - try { - // ensure cvRouter is created only once - const cvRouter = await (this.pCvRouter = - this.pCvRouter || CaptureVisionRouter.createInstance()); - if (this.isDestroyed) return; - - for (let file of files) { - // Decode selected image with 'ReadBarcodes_ReadRateFirst' template. - const result = await cvRouter.capture(file, 'ReadBarcodes_ReadRateFirst'); - console.log(result); - if (this.isDestroyed) return; - - // Print file name if there's multiple files - if (files.length > 1) { - this.resultText += `\n${file.name}:\n`; - } - for (let _item of result.items) { - if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { - continue; // check if captured result item is a barcode - } - let item = _item as BarcodeResultItem; - this.resultText += item.text + '\n'; // output the decoded barcode text - } - // If no items are found, display that no barcode was detected - if (!result.items.length) - this.resultText += - 'No barcode found\n'; - } - } catch (ex: any) { - let errMsg = ex.message || ex; - console.error(ex); - alert(errMsg); - } - }; - - // dispose cvRouter when it's no longer needed - async ngOnDestroy() { - this.isDestroyed = true; - if (this.pCvRouter) { - try { - (await this.pCvRouter).dispose(); - } catch (_) {} - } - } -} -``` - -### Add the `video-capture` and `image-capture` component to the `app` component - -* On the `app` component, we will edit the component so that it offers buttons to switch components between `video-capture` and `image-capture`. - -* In `app.component.html`, add the following code. - -```html - -
    -
    -

    Hello World for Angular

    -
    -
    - - -
    - @if (mode === 'video') { - - } @else { - - } -
    -``` - -* In `app.component.ts`, add the following code. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```ts -/* /src/app/app.component.ts */ -import { Component } from '@angular/core'; -import { NgStyle } from '@angular/common'; - -import { ImageCaptureComponent } from './image-capture/image-capture.component'; -import { VideoCaptureComponent } from './video-capture/video-capture.component'; - -@Component({ - selector: 'app-root', - standalone: true, - templateUrl: './app.component.html', - styleUrl: './app.component.css', - imports: [NgStyle, ImageCaptureComponent, VideoCaptureComponent], -}) -export class AppComponent { - title = 'dbrjs-angular-sample'; - - mode: string = 'video'; - - switchMode(value: string) { - this.mode = value; - } -} -``` - -* Try running the project. - -```cmd -ng serve -``` - -If you followed all the steps correctly, you will have a working page that turns one of the cameras hooked to or built in your computer or mobile device into a barcode scanner. Also, if you want to decode a local image, just click the `Decode Image` button and select the image you want to decode. Once barcodes are found, the results will show in a dialog. - -## Code scaffolding - -Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. - -## Build - -Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. - -## Running unit tests - -Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). - -## Running end-to-end tests - -Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. - -## Further help - Angular - -To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. - -## Support - -If you have any questions, feel free to [contact Dynamsoft Support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/foundational-api-samples/hello-world/angular/angular.json b/foundational-api-samples/hello-world/angular/angular.json deleted file mode 100644 index 2b52d1d2..00000000 --- a/foundational-api-samples/hello-world/angular/angular.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "$schema": "./node_modules/@angular/cli/lib/config/schema.json", - "version": 1, - "newProjectRoot": "projects", - "projects": { - "dbrjs-sample-angular": { - "projectType": "application", - "schematics": {}, - "root": "", - "sourceRoot": "src", - "prefix": "app", - "architect": { - "build": { - "builder": "@angular-devkit/build-angular:application", - "options": { - "outputPath": "dist/dbrjs-sample-angular", - "index": "src/index.html", - "browser": "src/main.ts", - "polyfills": [ - "zone.js" - ], - "tsConfig": "tsconfig.app.json", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "src/styles.css" - ], - "scripts": [], - "baseHref": "./" - }, - "configurations": { - "production": { - "budgets": [ - { - "type": "initial", - "maximumWarning": "500kb", - "maximumError": "1mb" - }, - { - "type": "anyComponentStyle", - "maximumWarning": "2kb", - "maximumError": "4kb" - } - ], - "outputHashing": "all" - }, - "development": { - "optimization": false, - "extractLicenses": false, - "sourceMap": true - } - }, - "defaultConfiguration": "production" - }, - "serve": { - "builder": "@angular-devkit/build-angular:dev-server", - "configurations": { - "production": { - "buildTarget": "dbrjs-sample-angular:build:production" - }, - "development": { - "buildTarget": "dbrjs-sample-angular:build:development" - } - }, - "defaultConfiguration": "development" - }, - "extract-i18n": { - "builder": "@angular-devkit/build-angular:extract-i18n", - "options": { - "buildTarget": "dbrjs-sample-angular:build" - } - }, - "test": { - "builder": "@angular-devkit/build-angular:karma", - "options": { - "polyfills": [ - "zone.js", - "zone.js/testing" - ], - "tsConfig": "tsconfig.spec.json", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "src/styles.css" - ], - "scripts": [] - } - } - } - } - }, - "cli": { - "analytics": false - } -} diff --git a/foundational-api-samples/hello-world/angular/package.json b/foundational-api-samples/hello-world/angular/package.json deleted file mode 100644 index 38257365..00000000 --- a/foundational-api-samples/hello-world/angular/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "dbrjs-angular-sample", - "version": "0.0.0", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build", - "watch": "ng build --watch --configuration development", - "test": "ng test" - }, - "private": true, - "dependencies": { - "@angular/animations": "^17.3.0", - "@angular/common": "^17.3.0", - "@angular/compiler": "^17.3.0", - "@angular/core": "^17.3.0", - "@angular/forms": "^17.3.0", - "@angular/platform-browser": "^17.3.0", - "@angular/platform-browser-dynamic": "^17.3.0", - "@angular/router": "^17.3.0", - "dynamsoft-barcode-reader-bundle": "11.2.4000", - "rxjs": "~7.8.0", - "tslib": "^2.3.0", - "zone.js": "~0.14.3" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^17.3.7", - "@angular/cli": "^17.3.7", - "@angular/compiler-cli": "^17.3.0", - "@types/jasmine": "~5.1.0", - "jasmine-core": "~5.1.0", - "karma": "~6.4.0", - "karma-chrome-launcher": "~3.2.0", - "karma-coverage": "~2.2.0", - "karma-jasmine": "~5.1.0", - "karma-jasmine-html-reporter": "~2.1.0", - "typescript": "~5.4.2" - } -} diff --git a/foundational-api-samples/hello-world/angular/src/app/app.component.css b/foundational-api-samples/hello-world/angular/src/app/app.component.css deleted file mode 100644 index 0ecbfcfd..00000000 --- a/foundational-api-samples/hello-world/angular/src/app/app.component.css +++ /dev/null @@ -1,42 +0,0 @@ -.title { - display: flex; - justify-content: center; - align-items: center; - margin-top: 20px; -} -.buttons-container { - width: 30%; - margin: 20px auto; -} -.buttons-container button { - display: inline-block; - border: 1px solid black; - padding: 5px 15px; - background-color: transparent; - cursor: pointer; -} -.buttons-container button:first-child { - border-top-left-radius: 10px; - border-bottom-left-radius: 10px; - border-right: transparent; -} -.buttons-container button:nth-child(2) { - border-top-right-radius: 10px; - border-bottom-right-radius: 10px; - border-left: transparent; -} - -@media screen and (max-width: 800px) { - .buttons-container { - width: 70%; - } -} - -@keyframes retate { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/foundational-api-samples/hello-world/angular/src/app/app.component.html b/foundational-api-samples/hello-world/angular/src/app/app.component.html deleted file mode 100644 index e48bd9d9..00000000 --- a/foundational-api-samples/hello-world/angular/src/app/app.component.html +++ /dev/null @@ -1,14 +0,0 @@ -
    -
    -

    Hello World for Angular

    -
    -
    - - -
    - @if (mode === 'video') { - - } @else { - - } -
    diff --git a/foundational-api-samples/hello-world/angular/src/app/app.component.ts b/foundational-api-samples/hello-world/angular/src/app/app.component.ts deleted file mode 100644 index ae5c2422..00000000 --- a/foundational-api-samples/hello-world/angular/src/app/app.component.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Component } from '@angular/core'; -import { NgStyle } from '@angular/common'; - -import { ImageCaptureComponent } from './image-capture/image-capture.component'; -import { VideoCaptureComponent } from './video-capture/video-capture.component'; - -@Component({ - selector: 'app-root', - standalone: true, - templateUrl: './app.component.html', - styleUrl: './app.component.css', - imports: [NgStyle, ImageCaptureComponent, VideoCaptureComponent], -}) -export class AppComponent { - title = 'dbrjs-angular-sample'; - - mode: string = 'video'; - - switchMode(value: string) { - this.mode = value; - } -} diff --git a/foundational-api-samples/hello-world/angular/src/app/dynamsoft.config.ts b/foundational-api-samples/hello-world/angular/src/app/dynamsoft.config.ts deleted file mode 100644 index 7d462b81..00000000 --- a/foundational-api-samples/hello-world/angular/src/app/dynamsoft.config.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { CoreModule, LicenseManager } from 'dynamsoft-barcode-reader-bundle'; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths.rootDirectory = 'https://cdn.jsdelivr.net/npm/'; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense('DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9', { - executeNow: true, -}); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.4000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(); diff --git a/foundational-api-samples/hello-world/angular/src/app/image-capture/image-capture.component.css b/foundational-api-samples/hello-world/angular/src/app/image-capture/image-capture.component.css deleted file mode 100644 index 53e77ab1..00000000 --- a/foundational-api-samples/hello-world/angular/src/app/image-capture/image-capture.component.css +++ /dev/null @@ -1,20 +0,0 @@ -.image-capture-container { - width: 100%; - height: 100%; - font-family: Consolas, Monaco, Lucida Console, Liberation Mono, - DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace; -} - -.image-capture-container .input-container { - width: 80%; - height: 100%; - display: flex; - justify-content: center; - border: 1px solid black; - margin: 0 auto; -} - -.image-capture-container .results { - margin-top: 20px; - white-space: pre-wrap; -} diff --git a/foundational-api-samples/hello-world/angular/src/app/image-capture/image-capture.component.html b/foundational-api-samples/hello-world/angular/src/app/image-capture/image-capture.component.html deleted file mode 100644 index fb7b3bc6..00000000 --- a/foundational-api-samples/hello-world/angular/src/app/image-capture/image-capture.component.html +++ /dev/null @@ -1,11 +0,0 @@ -
    -
    - -
    -
    {{resultText}}
    -
    diff --git a/foundational-api-samples/hello-world/angular/src/app/image-capture/image-capture.component.ts b/foundational-api-samples/hello-world/angular/src/app/image-capture/image-capture.component.ts deleted file mode 100644 index 469ff61c..00000000 --- a/foundational-api-samples/hello-world/angular/src/app/image-capture/image-capture.component.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { Component } from '@angular/core'; -import '../dynamsoft.config'; -import { EnumCapturedResultItemType, CaptureVisionRouter } from 'dynamsoft-barcode-reader-bundle'; -import type { BarcodeResultItem } from 'dynamsoft-barcode-reader-bundle'; - -@Component({ - selector: 'app-image-capture', - templateUrl: './image-capture.component.html', - styleUrls: ['./image-capture.component.css'], - standalone: true, -}) -export class ImageCaptureComponent { - resultText = ""; - - pCvRouter?: Promise; - isDestroyed = false; - - captureImage = async (e: Event) => { - let files = [...((e.target! as HTMLInputElement).files as any as File[])]; - (e.target! as HTMLInputElement).value = ''; // reset input - this.resultText = ''; - try { - // ensure cvRouter is created only once - const cvRouter = await (this.pCvRouter = - this.pCvRouter || CaptureVisionRouter.createInstance()); - if (this.isDestroyed) return; - - for (let file of files) { - // Decode selected image with 'ReadBarcodes_ReadRateFirst' template. - const result = await cvRouter.capture(file, 'ReadBarcodes_ReadRateFirst'); - console.log(result); - if (this.isDestroyed) return; - - // Print file name if there's multiple files - if (files.length > 1) { - this.resultText += `\n${file.name}:\n`; - } - for (let _item of result.items) { - if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { - continue; // check if captured result item is a barcode - } - let item = _item as BarcodeResultItem; - this.resultText += item.text + '\n'; // output the decoded barcode text - } - // If no items are found, display that no barcode was detected - if (!result.items.length) - this.resultText += - 'No barcode found\n'; - } - } catch (ex: any) { - let errMsg = ex.message || ex; - console.error(ex); - alert(errMsg); - } - }; - - // dispose cvRouter when it's no longer needed - async ngOnDestroy() { - this.isDestroyed = true; - if (this.pCvRouter) { - try { - (await this.pCvRouter).dispose(); - } catch (_) {} - } - } -} diff --git a/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.css b/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.css deleted file mode 100644 index 9bfe13ad..00000000 --- a/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.css +++ /dev/null @@ -1,6 +0,0 @@ -.results { - width: 100%; - height: 10vh; - overflow: auto; - white-space: pre-wrap; -} diff --git a/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.html b/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.html deleted file mode 100644 index bae059e4..00000000 --- a/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.html +++ /dev/null @@ -1,8 +0,0 @@ -
    -
    -Results: -
    {{resultText}}
    diff --git a/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.ts b/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.ts deleted file mode 100644 index 26690ed3..00000000 --- a/foundational-api-samples/hello-world/angular/src/app/video-capture/video-capture.component.ts +++ /dev/null @@ -1,109 +0,0 @@ -import { Component, ElementRef, ViewChild, NgZone } from '@angular/core'; -import '../dynamsoft.config'; -import { CameraEnhancer, CameraView, MultiFrameResultCrossFilter, CaptureVisionRouter } from 'dynamsoft-barcode-reader-bundle'; - -const componentDestroyedErrorMsg = 'VideoCapture Component Destroyed'; - -@Component({ - selector: 'app-video-capture', - templateUrl: './video-capture.component.html', - styleUrls: ['./video-capture.component.css'], - standalone: true, -}) -export class VideoCaptureComponent { - constructor(private ngZone: NgZone) { } - - @ViewChild('cameraViewContainer') cameraViewContainer?: ElementRef; - resultText = ""; - - resolveInit?: () => void; - pInit: Promise = new Promise((r) => { - this.resolveInit = r; - }); - isDestroyed = false; - - cvRouter?: CaptureVisionRouter; - cameraEnhancer?: CameraEnhancer; - - async ngAfterViewInit(): Promise { - try { - // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. - const cameraView = await CameraView.createInstance(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } // Check if component is destroyed after every async - this.cameraEnhancer = await CameraEnhancer.createInstance(cameraView); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Get default UI and append it to DOM. - this.cameraViewContainer!.nativeElement.append(cameraView.getUIElement()); - - // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. - this.cvRouter = await CaptureVisionRouter.createInstance(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - this.cvRouter.setInput(this.cameraEnhancer); - - // Define a callback for results. - this.cvRouter.addResultReceiver({ - onDecodedBarcodesReceived: (result) => { - if (!result.barcodeResultItems.length) return; - console.log(result); - this.ngZone.run(() => { - this.resultText = ''; - for (let item of result.barcodeResultItems) { - this.resultText += `${item.formatString}: ${item.text}\n\n`; - } - }); - }, - }); - - // Filter out unchecked and duplicate results. - const filter = new MultiFrameResultCrossFilter(); - // Filter out unchecked barcodes. - filter.enableResultCrossVerification('barcode', true); - // Filter out duplicate barcodes within 3 seconds. - filter.enableResultDeduplication('barcode', true); - await this.cvRouter.addResultFilter(filter); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Open camera and start scanning barcode. - await this.cameraEnhancer.open(); - cameraView.setScanLaserVisible(true); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - await this.cvRouter.startCapturing('ReadBarcodes_SpeedFirst'); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - } catch (ex: any) { - if ((ex as Error)?.message === componentDestroyedErrorMsg) { - console.log(componentDestroyedErrorMsg); - } else { - let errMsg = ex.message || ex; - console.error(ex); - alert(errMsg); - } - } - - // Resolve pInit promise once initialization is complete. - this.resolveInit!(); - } - - // dispose cvRouter when it's no longer needed - async ngOnDestroy() { - this.isDestroyed = true; - try { - // Wait for the pInit to complete before disposing resources. - await this.pInit; - this.cvRouter?.dispose(); - this.cameraEnhancer?.dispose(); - } catch (_) { } - } -} diff --git a/foundational-api-samples/hello-world/angular/src/assets/.gitkeep b/foundational-api-samples/hello-world/angular/src/assets/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/foundational-api-samples/hello-world/angular/src/favicon.ico b/foundational-api-samples/hello-world/angular/src/favicon.ico deleted file mode 100644 index 57614f9c967596fad0a3989bec2b1deff33034f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 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 Nr__JTFzvMr^FKp4S3v*( diff --git a/foundational-api-samples/hello-world/angular/src/index.html b/foundational-api-samples/hello-world/angular/src/index.html deleted file mode 100644 index 7513197d..00000000 --- a/foundational-api-samples/hello-world/angular/src/index.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Hello World for Angular - Dynamsoft Barcode Reader Sample - - - - - - - - - - - diff --git a/foundational-api-samples/hello-world/angular/src/main.ts b/foundational-api-samples/hello-world/angular/src/main.ts deleted file mode 100644 index 2086591f..00000000 --- a/foundational-api-samples/hello-world/angular/src/main.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { bootstrapApplication } from '@angular/platform-browser'; -import { AppComponent } from './app/app.component'; - -bootstrapApplication(AppComponent) - .catch((err) => console.error(err)); diff --git a/foundational-api-samples/hello-world/angular/src/styles.css b/foundational-api-samples/hello-world/angular/src/styles.css deleted file mode 100644 index cd26b68e..00000000 --- a/foundational-api-samples/hello-world/angular/src/styles.css +++ /dev/null @@ -1,11 +0,0 @@ -/* You can add global styles to this file, and also import other style files */ -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -html, body { - text-align: center; - min-width: 350px; -} \ No newline at end of file diff --git a/foundational-api-samples/hello-world/angular/tsconfig.app.json b/foundational-api-samples/hello-world/angular/tsconfig.app.json deleted file mode 100644 index 374cc9d2..00000000 --- a/foundational-api-samples/hello-world/angular/tsconfig.app.json +++ /dev/null @@ -1,14 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/app", - "types": [] - }, - "files": [ - "src/main.ts" - ], - "include": [ - "src/**/*.d.ts" - ] -} diff --git a/foundational-api-samples/hello-world/angular/tsconfig.json b/foundational-api-samples/hello-world/angular/tsconfig.json deleted file mode 100644 index eb49734a..00000000 --- a/foundational-api-samples/hello-world/angular/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "compileOnSave": false, - "compilerOptions": { - "outDir": "./dist/out-tsc", - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "skipLibCheck": true, - "esModuleInterop": true, - "sourceMap": true, - "declaration": false, - "experimentalDecorators": true, - "moduleResolution": "node", - "importHelpers": true, - "target": "ES2022", - "module": "ES2022", - "useDefineForClassFields": false, - "lib": [ - "ES2022", - "dom" - ] - }, - "angularCompilerOptions": { - "enableI18nLegacyMessageIdFormat": false, - "strictInjectionParameters": true, - "strictInputAccessModifiers": true, - "strictTemplates": true - } -} diff --git a/foundational-api-samples/hello-world/angular/tsconfig.spec.json b/foundational-api-samples/hello-world/angular/tsconfig.spec.json deleted file mode 100644 index be7e9da7..00000000 --- a/foundational-api-samples/hello-world/angular/tsconfig.spec.json +++ /dev/null @@ -1,14 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/spec", - "types": [ - "jasmine" - ] - }, - "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] -} diff --git a/foundational-api-samples/hello-world/blazor/.gitignore b/foundational-api-samples/hello-world/blazor/.gitignore deleted file mode 100644 index 104b5441..00000000 --- a/foundational-api-samples/hello-world/blazor/.gitignore +++ /dev/null @@ -1,484 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from `dotnet new gitignore` - -# dotenv files -.env - -# User-specific files -*.rsuser -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Mono auto generated files -mono_crash.* - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -[Ww][Ii][Nn]32/ -[Aa][Rr][Mm]/ -[Aa][Rr][Mm]64/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ -[Ll]ogs/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUnit -*.VisualState.xml -TestResult.xml -nunit-*.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET -project.lock.json -project.fragment.lock.json -artifacts/ - -# Tye -.tye/ - -# ASP.NET Scaffolding -ScaffoldingReadMe.txt - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_h.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*_wpftmp.csproj -*.log -*.tlog -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Coverlet is a free, cross platform Code Coverage Tool -coverage*.json -coverage*.xml -coverage*.info - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# NuGet Symbol Packages -*.snupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx -*.appxbundle -*.appxupload - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!?*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser -*- [Bb]ackup.rdl -*- [Bb]ackup ([0-9]).rdl -*- [Bb]ackup ([0-9][0-9]).rdl - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio 6 auto-generated project file (contains which files were open etc.) -*.vbp - -# Visual Studio 6 workspace and project file (working project files containing files to include in project) -*.dsw -*.dsp - -# Visual Studio 6 technical files -*.ncb -*.aps - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# CodeRush personal settings -.cr/personal - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - -# Visual Studio History (VSHistory) files -.vshistory/ - -# BeatPulse healthcheck temp database -healthchecksdb - -# Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ - -# Ionide (cross platform F# VS Code tools) working folder -.ionide/ - -# Fody - auto-generated XML schema -FodyWeavers.xsd - -# VS Code files for those working on multiple tools -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -*.code-workspace - -# Local History for Visual Studio Code -.history/ - -# Windows Installer files from build outputs -*.cab -*.msi -*.msix -*.msm -*.msp - -# JetBrains Rider -*.sln.iml -.idea - -## -## Visual studio for Mac -## - - -# globs -Makefile.in -*.userprefs -*.usertasks -config.make -config.status -aclocal.m4 -install-sh -autom4te.cache/ -*.tar.gz -tarballs/ -test-results/ - -# Mac bundle stuff -*.dmg -*.app - -# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore -# General -.DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns -.com.apple.timemachine.donotpresent - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - -# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore -# Windows thumbnail cache files -Thumbs.db -ehthumbs.db -ehthumbs_vista.db - -# Dump file -*.stackdump - -# Folder config file -[Dd]esktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Windows Installer files -*.cab -*.msi -*.msix -*.msm -*.msp - -# Windows shortcuts -*.lnk - -# Vim temporary swap files -*.swp diff --git a/foundational-api-samples/hello-world/blazor/README.md b/foundational-api-samples/hello-world/blazor/README.md deleted file mode 100644 index 9133328f..00000000 --- a/foundational-api-samples/hello-world/blazor/README.md +++ /dev/null @@ -1,372 +0,0 @@ -# Hello World Sample for Blazor - -[Blazor](https://dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blazor) is a framework for building interactive client-side web apps with .NET and C#. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a Blazor application using [JavaScript Interlop](https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/call-javascript-from-dotnet?view=aspnetcore-8.0#invoke-js-functions). - -In this guide, we will be using [`dynamsoft-barcode-reader-bundle 11.2.4000`](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/11.2.4000). We also used .NET 8.0 (version 8.0.8) to develop this sample. To ensure the sample app runs properly, please refer to this guide to update your .NET installation - https://learn.microsoft.com/en-us/dotnet/core/install/upgrade. - -> Note: -> -> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! -> -> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. - -## Official Sample - -* Hello World in Blazor - Source Code - -## Preparation - -This sample was developed using Visual Studio 2022. For a more in-depth guide on creating a Blazor web application with Visual Studio 2022, please follow Microsoft's tutorial on [Building your first web app with ASP.NET Core using Blazor](https://dotnet.microsoft.com/en-us/learn/aspnet/blazor-tutorial/intro). - -## Quick Start - -1. **Open the application** in Visual Studio 2022 by clicking the `Open a Project or Solution` button, and choosing on the `BlazorApp.csproj` file. - -2. **Run the application** by clicking the `Start Debugging` button (a green arrow) in the Debug Toolbar. - -3. A window should open to view the sample application - -> Note: -> -> This sample uses the packages `Microsoft.AspNetCore.Components.WebAssembly` v8.0.8 and `Microsoft.AspNetCore.Components.WebAssembly.DevServer` v8.0.8 which require .NET v8.0.8. -> Refer to the `BlazorApp.csproj` file to change the versions as needed. - -## Creating the sample project - -In this section, we will be creating a Blazor application utilizing the Dynamsoft Barcode Reader bundle sdk. - -We'll be exploring how you could create a page that not only enables barcode scanning via a webcam or a built-in camera, but also decode barcodes from local images. - -By the end of this guide, you'll have a good understanding of the SDK and be ready to discover more ways to use it! - -### Initialize project - -Please follow the guide created by Microsoft on [Building your first web app with ASP.NET Code using Blazor](https://dotnet.microsoft.com/en-us/learn/aspnet/blazor-tutorial/intro). - -This tutorial will guide you through downloading Visual Studio, and set up needed to create a Blazor Web Application. - -**IMPORTANT**: When creating a new project, please select **"Blazor WebAssembly Standalone App"** instead of "Blazor Web App". - -## Start to implement - -### Create a `DecodeVideo.razor` component under the `Pages\` folder - -In `Pages\DecodeVideo.razor`, we will modify the component to enable barcode decoding via camera. This page will be accessible at the `/video` URL. - -```razor -@page "/video" -@inject IJSRuntime JS - -Dynamsoft Barcode Reader Hello World - Blazor - -

    Decode Video

    - - -

    Results:

    -
    - - -@code { - // reference: https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/call-javascript-from-dotnet?view=aspnetcore-8.0#invoke-js-functions - private string mode = "stop"; - private string videoDecodeBtn = "Decode Video"; - - private async Task ToggleVideoTask() - { - await JS.InvokeVoidAsync("loadDecodeVideoModule"); - - if (mode == "videoDecode") - { - await StopDecodeVideoTask(); - } - else if (mode == "stop") - { - await DecodeVideoTask(); - - } - } - - private async Task DecodeVideoTask() - { - mode = "videoDecode"; - videoDecodeBtn = "Stop Decode"; - await JS.InvokeAsync("startVideoDecode"); - } - - private async Task StopDecodeVideoTask() - { - mode = "stop"; - videoDecodeBtn = "Decode Video"; - await JS.InvokeAsync("stopVideoDecode"); - } -} -``` - -> Note: -> -> We can significantly improve the initial load speed and performance when we dynamically import Dynamsoft's Barcode Scanning component on-demand. In the sample code above, we dynamically imported the decode video module through the line `await JS.InvokeVoidAsync("loadDecodeVideoModule");`. - -### Create a `wwwroot\decodeVideo.js` file - -In `wwwroot\decodeVideo.js`, we will instantiate `cvRouter` and `cameraEnhancer` to start decoding barcodes through the camera. - -Additionally, we'll include a function to clean up `cvRouter` and `cameraEnhancer` when they are no longer needed. - -These functions will be called by the Blazor components through JavaScript Interop. - -Reference: https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/call-javascript-from-dotnet?view=aspnetcore-8.0#invoke-js-functions - -```javascript -// Create JS function "startVideoDecode" -window.startVideoDecode = async () => { - const cameraViewContainer = document.getElementById("camera-view-container"); - const resultsContainer = document.getElementById("results"); - - try { - // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. - const cameraView = await Dynamsoft.DCE.CameraView.createInstance(); - cameraEnhancer = await Dynamsoft.DCE.CameraEnhancer.createInstance(cameraView); - // Get default UI and append it to DOM. - cameraViewContainer.style.display = "block" - cameraViewContainer.append(cameraView.getUIElement()); - - // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. - cvRouter = await Dynamsoft.CVR.CaptureVisionRouter.createInstance(); - cvRouter.setInput(cameraEnhancer); - - // Define a callback for results. - cvRouter.addResultReceiver({ - onDecodedBarcodesReceived: (result) => { - if (!result.barcodeResultItems.length) return; - - resultsContainer.textContent = ""; - for (let item of result.barcodeResultItems) { - resultsContainer.textContent += `${item.formatString}: ${item.text}\n\n`; - } - }, - }); - - // Filter out unchecked and duplicate results. - const filter = new Dynamsoft.Utility.MultiFrameResultCrossFilter(); - // Filter out unchecked barcodes. - filter.enableResultCrossVerification("barcode", true); - // Filter out duplicate barcodes within 3 seconds. - filter.enableResultDeduplication("barcode", true); - await cvRouter.addResultFilter(filter); - - // Open camera and start scanning single barcode. - await cameraEnhancer.open(); - - cameraView.setScanLaserVisible(true); - await cvRouter.startCapturing("ReadSingleBarcode"); - } catch (ex) { - let errMsg = ex.message || ex; - console.error(ex); - } -} - -// Create JS function "stopVideoDecode" -window.stopVideoDecode = async () => { - const cameraViewContainer = document.getElementById("camera-view-container"); - const resultsContainer = document.getElementById("results"); - - try { - if (!cvRouter?.disposed) { - await cvRouter?.dispose(); - } - if (!cameraEnhancer?.disposed) { - await cameraEnhancer?.dispose(); - } - - // Reset components - cameraViewContainer.style.display = "none"; - cameraViewContainer.innerHTML = ""; - resultsContainer.textContent = ""; - } catch (ex) { - let errMsg = ex.message || ex; - console.error(ex); - } -} -``` - -### Create a `Pages\DecodeImage.razor` component - -In `Pages\DecodeImage.razor`, we will modify the component to enable barcode decoding through an image. This page will be accessible at the `/image` URL. - -```razor -@page "/image" -@inject IJSRuntime JS - -Dynamsoft Barcode Reader Hello World - Blazor - -

    Decode Image

    - -

    Results:

    -
    - -@code { - // reference: https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/call-javascript-from-dotnet?view=aspnetcore-8.0#invoke-js-functions - -private async Task DecodeImageTask() - { - // Dynamically load decode image module - await JS.InvokeVoidAsync("loadDecodeImageModule"); - await JS.InvokeAsync("startImageDecode"); - } - - public void Dispose() - { - JS.InvokeAsync("cleanUpImageDecode"); - } -} -``` - -> Note: -> -> We can significantly improve the initial load speed and performance when we dynamically import Dynamsoft's Barcode Scanning component on-demand. In the sample code above, we dynamically imported the decode image module through the line `await JS.InvokeVoidAsync("loadDecodeImageModule");`. - -### Create a `wwwroot\decodeImage.js` file - -In `wwwroot\decodeImage.js`, we will instantiate `cvRouter` to decode barcodes in images. - -These functions will be called by the Blazor components through JavaScript Interop. - -Reference: https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/call-javascript-from-dotnet?view=aspnetcore-8.0#invoke-js-functions - -```javascript -// Create JS function "startImageDecode" -window.startImageDecode = async () => { - const inputElement = document.getElementById("inputElement"); - const resultsContainer = document.getElementById("results"); - resultsContainer.innerText = ""; // Reset results container - - const { files } = inputElement; - - try { - for (let file of files) { - cvRouter = await Dynamsoft.CVR.CaptureVisionRouter.createInstance(); - // Decode selected image with 'ReadBarcodes_SpeedFirst' template. - const result = await cvRouter.capture(file, "ReadBarcodes_SpeedFirst"); - if (files.length > 1) { - resultsContainer.innerText += `\nFile: ${file.name}\n`; - } - for (let item of result.items) { - if (item.type !== Dynamsoft.Core.EnumCapturedResultItemType.CRIT_BARCODE) { - continue; - } - resultsContainer.innerText += item.text + "\n"; - console.log(item.text); - } - if (!result.items.length) resultsContainer.innerText += "No barcode found\n"; - } - } catch (ex) { - let errMsg = ex.message || ex; - console.error(ex); - alert(errMsg); - } finally { - inputElement.value = ""; - await cvRouter?.dispose(); - } -}; -``` - -### Modify the `wwwroot\index.html` file - -Inside the `wwwroot\index.html` file, we will initialize the license and necessary modules for Dynamsoft Barcode Reader and create functions to dynamically load the video and image modules. - -```html - - -... - -
    - ... - - - - - - -``` - -> Note: -> -> * `initLicense()` specify a license key to use the library. You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=sample&product=dbr&package=js to get your own trial license good for 30 days. - - -### Modify the `Layout\NavMenu.razor` and `Layout\NavMenu.razor.css` file - -To make sure the `Decode Video` and `Decode Image` pages are accessible from the sidebar, add the following code block to `Layout\NavMenu.razor`. - -```html -... - - -... -``` - -We'll also add the following CSS code to include the icons for `Decode Video` and `Decode Image` in the `Layout\NavMenu.razor.css` file. - -```css -.bi-video-fill-nav-menu { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-camera-video-fill' viewBox='0 0 16 16'%3E%3Cpath d='M0 5a2 2 0 0 1 2-2h7.5a2 2 0 0 1 1.983 1.738l3.11-1.382A1 1 0 0 1 16 4.269v7.462a1 1 0 0 1-1.406.913l-3.111-1.382A2 2 0 0 1 9.5 13H2a2 2 0 0 1-2-2z'/%3E%3C/svg%3E"); -} - -.bi-image-fill-nav-menu { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-camera-fill' viewBox='0 0 16 16'%3E%3Cpath d='M1.5 2A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2zm13 1a.5.5 0 0 1 .5.5v6l-3.775-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062L1.002 12v.54L1 12.5v-9a.5.5 0 0 1 .5-.5z'/%3E%3C/svg%3E"); -} -``` - -## Run the application - -We can run the application by clicking the `Start Debugging` button (a green arrow) in the Debug Toolbar. - -If you followed all the steps correctly, you will have a working page that turns one of the cameras hooked to or built in your computer or mobile device into a barcode scanner. Also, if you want to decode a local image, just click the `Decode Image` button and select the image you want to decode. - -## Support - -If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/App.razor b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/App.razor deleted file mode 100644 index 6fd3ed1b..00000000 --- a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/App.razor +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - Not found - -

    Sorry, there's nothing at this address.

    -
    -
    -
    diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/BlazorApp.csproj b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/BlazorApp.csproj deleted file mode 100644 index 8e50d8dc..00000000 --- a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/BlazorApp.csproj +++ /dev/null @@ -1,18 +0,0 @@ - - - - net8.0 - enable - enable - - - - - - - - - - - - diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor deleted file mode 100644 index 76eb7252..00000000 --- a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor +++ /dev/null @@ -1,16 +0,0 @@ -@inherits LayoutComponentBase -
    - - -
    -
    - About -
    - -
    - @Body -
    -
    -
    diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor.css b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor.css deleted file mode 100644 index ecf25e5b..00000000 --- a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/MainLayout.razor.css +++ /dev/null @@ -1,77 +0,0 @@ -.page { - position: relative; - display: flex; - flex-direction: column; -} - -main { - flex: 1; -} - -.sidebar { - background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%); -} - -.top-row { - background-color: #f7f7f7; - border-bottom: 1px solid #d6d5d5; - justify-content: flex-end; - height: 3.5rem; - display: flex; - align-items: center; -} - - .top-row ::deep a, .top-row ::deep .btn-link { - white-space: nowrap; - margin-left: 1.5rem; - text-decoration: none; - } - - .top-row ::deep a:hover, .top-row ::deep .btn-link:hover { - text-decoration: underline; - } - - .top-row ::deep a:first-child { - overflow: hidden; - text-overflow: ellipsis; - } - -@media (max-width: 640.98px) { - .top-row { - justify-content: space-between; - } - - .top-row ::deep a, .top-row ::deep .btn-link { - margin-left: 0; - } -} - -@media (min-width: 641px) { - .page { - flex-direction: row; - } - - .sidebar { - width: 250px; - height: 100vh; - position: sticky; - top: 0; - } - - .top-row { - position: sticky; - top: 0; - z-index: 1; - } - - .top-row.auth ::deep a:first-child { - flex: 1; - text-align: right; - width: 0; - } - - .top-row, article { - padding-left: 2rem !important; - padding-right: 1.5rem !important; - } -} diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor deleted file mode 100644 index d87afda8..00000000 --- a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor +++ /dev/null @@ -1,39 +0,0 @@ - - - - -@code { - private bool collapseNavMenu = true; - - private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null; - - private void ToggleNavMenu() - { - collapseNavMenu = !collapseNavMenu; - } -} diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor.css b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor.css deleted file mode 100644 index d924b1dd..00000000 --- a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Layout/NavMenu.razor.css +++ /dev/null @@ -1,91 +0,0 @@ -.navbar-toggler { - background-color: rgba(255, 255, 255, 0.1); -} - -.top-row { - height: 3.5rem; - background-color: rgba(0,0,0,0.4); -} - -.navbar-brand { - font-size: 1.1rem; -} - -.bi { - display: inline-block; - position: relative; - width: 1.25rem; - height: 1.25rem; - margin-right: 0.75rem; - top: -1px; - background-size: cover; -} - -.bi-house-door-fill-nav-menu { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E"); -} - -.bi-plus-square-fill-nav-menu { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-plus-square-fill' viewBox='0 0 16 16'%3E%3Cpath d='M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z'/%3E%3C/svg%3E"); -} - -.bi-video-fill-nav-menu { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-camera-video-fill' viewBox='0 0 16 16'%3E%3Cpath d='M0 5a2 2 0 0 1 2-2h7.5a2 2 0 0 1 1.983 1.738l3.11-1.382A1 1 0 0 1 16 4.269v7.462a1 1 0 0 1-1.406.913l-3.111-1.382A2 2 0 0 1 9.5 13H2a2 2 0 0 1-2-2z'/%3E%3C/svg%3E"); -} - -.bi-image-fill-nav-menu { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-camera-fill' viewBox='0 0 16 16'%3E%3Cpath d='M1.5 2A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2zm13 1a.5.5 0 0 1 .5.5v6l-3.775-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062L1.002 12v.54L1 12.5v-9a.5.5 0 0 1 .5-.5z'/%3E%3C/svg%3E"); -} - -.bi-list-nested-nav-menu { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E"); -} - -.nav-item { - font-size: 0.9rem; - padding-bottom: 0.5rem; -} - - .nav-item:first-of-type { - padding-top: 1rem; - } - - .nav-item:last-of-type { - padding-bottom: 1rem; - } - - .nav-item ::deep a { - color: #d7d7d7; - border-radius: 4px; - height: 3rem; - display: flex; - align-items: center; - line-height: 3rem; - } - -.nav-item ::deep a.active { - background-color: rgba(255,255,255,0.37); - color: white; -} - -.nav-item ::deep a:hover { - background-color: rgba(255,255,255,0.1); - color: white; -} - -@media (min-width: 641px) { - .navbar-toggler { - display: none; - } - - .collapse { - /* Never collapse the sidebar for wide screens */ - display: block; - } - - .nav-scrollable { - /* Allow sidebar to scroll for tall menus */ - height: calc(100vh - 3.5rem); - overflow-y: auto; - } -} diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeImage.razor b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeImage.razor deleted file mode 100644 index d582ac63..00000000 --- a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeImage.razor +++ /dev/null @@ -1,26 +0,0 @@ -@page "/image" -@inject IJSRuntime JS - -Dynamsoft Barcode Reader Hello World - Blazor - -

    Decode Image

    - -

    Results:

    -
    -
    - -@code { - // reference: https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/call-javascript-from-dotnet?view=aspnetcore-8.0#invoke-js-functions - - private async Task DecodeImageTask() - { - // Dynamically load decode image module - await JS.InvokeVoidAsync("loadDecodeImageModule"); - await JS.InvokeAsync("startImageDecode"); - } - - public void Dispose() - { - JS.InvokeAsync("cleanUpImageDecode"); - } -} diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeVideo.razor b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeVideo.razor deleted file mode 100644 index 64da01d5..00000000 --- a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/DecodeVideo.razor +++ /dev/null @@ -1,48 +0,0 @@ -@page "/video" -@inject IJSRuntime JS - -Dynamsoft Barcode Reader Hello World - Blazor - -

    Decode Video

    - - -

    Results:

    -
    -
    - - -@code { - // reference: https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/call-javascript-from-dotnet?view=aspnetcore-8.0#invoke-js-functions - - private string mode = "stop"; - private string videoDecodeBtn = "Decode Video"; - - private async Task ToggleVideoTask() - { - await JS.InvokeVoidAsync("loadDecodeVideoModule"); - - if (mode == "videoDecode") - { - await StopDecodeVideoTask(); - } - else if (mode == "stop") - { - await DecodeVideoTask(); - - } - } - - private async Task DecodeVideoTask() - { - mode = "videoDecode"; - videoDecodeBtn = "Stop Decode"; - await JS.InvokeAsync("startVideoDecode"); - } - - private async Task StopDecodeVideoTask() - { - mode = "stop"; - videoDecodeBtn = "Decode Video"; - await JS.InvokeAsync("stopVideoDecode"); - } -} diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/Home.razor b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/Home.razor deleted file mode 100644 index a0911416..00000000 --- a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Pages/Home.razor +++ /dev/null @@ -1,13 +0,0 @@ -@page "/" - -Home - -

    Dynamsoft Barcode Reader Sample - Hello World

    -Read barcodes from camera and images in a Blazor application! -
    -
    -

    Support

    - -If you have any questions, feel free to contact Dynamsoft - support. diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Program.cs b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Program.cs deleted file mode 100644 index e6ef32a3..00000000 --- a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Program.cs +++ /dev/null @@ -1,11 +0,0 @@ -using BlazorApp; -using Microsoft.AspNetCore.Components.Web; -using Microsoft.AspNetCore.Components.WebAssembly.Hosting; - -var builder = WebAssemblyHostBuilder.CreateDefault(args); -builder.RootComponents.Add("#app"); -builder.RootComponents.Add("head::after"); - -builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); - -await builder.Build().RunAsync(); diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Properties/launchSettings.json b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Properties/launchSettings.json deleted file mode 100644 index e25d8f48..00000000 --- a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/Properties/launchSettings.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "$schema": "http://json.schemastore.org/launchsettings.json", - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:17951", - "sslPort": 44366 - } - }, - "profiles": { - "http": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", - "applicationUrl": "http://localhost:5244", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "https": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", - "applicationUrl": "https://localhost:7074;http://localhost:5244", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/_Imports.razor b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/_Imports.razor deleted file mode 100644 index 2c3956ad..00000000 --- a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/_Imports.razor +++ /dev/null @@ -1,10 +0,0 @@ -@using System.Net.Http -@using System.Net.Http.Json -@using Microsoft.AspNetCore.Components.Forms -@using Microsoft.AspNetCore.Components.Routing -@using Microsoft.AspNetCore.Components.Web -@using Microsoft.AspNetCore.Components.Web.Virtualization -@using Microsoft.AspNetCore.Components.WebAssembly.Http -@using Microsoft.JSInterop -@using BlazorApp -@using BlazorApp.Layout diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/app.css b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/app.css deleted file mode 100644 index 54a8aa38..00000000 --- a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/app.css +++ /dev/null @@ -1,103 +0,0 @@ -html, body { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; -} - -h1:focus { - outline: none; -} - -a, .btn-link { - color: #0071c1; -} - -.btn-primary { - color: #fff; - background-color: #1b6ec2; - border-color: #1861ac; -} - -.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus { - box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb; -} - -.content { - padding-top: 1.1rem; -} - -.valid.modified:not([type=checkbox]) { - outline: 1px solid #26b050; -} - -.invalid { - outline: 1px solid red; -} - -.validation-message { - color: red; -} - -#blazor-error-ui { - background: lightyellow; - bottom: 0; - box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); - display: none; - left: 0; - padding: 0.6rem 1.25rem 0.7rem 1.25rem; - position: fixed; - width: 100%; - z-index: 1000; -} - - #blazor-error-ui .dismiss { - cursor: pointer; - position: absolute; - right: 0.75rem; - top: 0.5rem; - } - -.blazor-error-boundary { - background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; - padding: 1rem 1rem 1rem 3.7rem; - color: white; -} - - .blazor-error-boundary::after { - content: "An error has occurred." - } - -.loading-progress { - position: relative; - display: block; - width: 8rem; - height: 8rem; - margin: 20vh auto 1rem auto; -} - - .loading-progress circle { - fill: none; - stroke: #e0e0e0; - stroke-width: 0.6rem; - transform-origin: 50% 50%; - transform: rotate(-90deg); - } - - .loading-progress circle:last-child { - stroke: #1b6ec2; - stroke-dasharray: calc(3.141 * var(--blazor-load-percentage, 0%) * 0.8), 500%; - transition: stroke-dasharray 0.05s ease-in-out; - } - -.loading-progress-text { - position: absolute; - text-align: center; - font-weight: bold; - inset: calc(20vh + 3.25rem) 0 auto 0.2rem; -} - - .loading-progress-text:after { - content: var(--blazor-load-percentage-text, "Loading"); - } - -code { - color: #c02d76; -} diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css deleted file mode 100644 index 02ae65b5..00000000 --- a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css +++ /dev/null @@ -1,7 +0,0 @@ -@charset "UTF-8";/*! - * Bootstrap v5.1.0 (https://getbootstrap.com/) - * Copyright 2011-2021 The Bootstrap Authors - * Copyright 2011-2021 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-rgb:33,37,41;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-bg:transparent;--bs-table-accent-bg:transparent;--bs-table-striped-color:#212529;--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:#212529;--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:#212529;--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg:#e2e3e5;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg:#d1e7dd;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg:#cff4fc;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg:#fff3cd;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg:#f8d7da;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg:#f8f9fa;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg:#212529;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:1}.input-group .form-control.is-valid:focus,.input-group .form-select.is-valid:focus,.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .form-select:valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:2}.input-group .form-control.is-invalid:focus,.input-group .form-select.is-invalid:focus,.was-validated .input-group .form-control:invalid:focus,.was-validated .input-group .form-select:invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-primary:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-primary.active:focus,.btn-primary:active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-secondary.active:focus,.btn-secondary:active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-success.active:focus,.btn-success:active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-info.active:focus,.btn-info:active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-danger.active:focus,.btn-danger:active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-light.active:focus,.btn-light:active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-dark.active:focus,.btn-dark:active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-primary{color:#0d6efd;border-color:#0d6efd}.btn-outline-primary:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0d6efd;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active{color:#fff;background-color:#198754;border-color:#198754}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active{color:#fff;background-color:#212529;border-color:#212529}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#212529;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:#0a58ca}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:0 0;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-bottom,.navbar-expand-sm .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-md .offcanvas-bottom,.navbar-expand-md .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-bottom,.navbar-expand-lg .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-bottom,.navbar-expand-xl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-bottom,.navbar-expand-xxl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand .offcanvas-bottom,.navbar-expand .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.55)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.55);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.55)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.55)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.55)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#0c63e4;background-color:#e7f1ff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin-top:-.5rem;margin-right:-.5rem;margin-bottom:-.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentColor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{-webkit-animation:placeholder-glow 2s ease-in-out infinite;animation:placeholder-glow 2s ease-in-out infinite}@-webkit-keyframes placeholder-glow{50%{opacity:.2}}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;-webkit-animation:placeholder-wave 2s linear infinite;animation:placeholder-wave 2s linear infinite}@-webkit-keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.link-primary{color:#0d6efd}.link-primary:focus,.link-primary:hover{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:focus,.link-secondary:hover{color:#565e64}.link-success{color:#198754}.link-success:focus,.link-success:hover{color:#146c43}.link-info{color:#0dcaf0}.link-info:focus,.link-info:hover{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:focus,.link-warning:hover{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:focus,.link-danger:hover{color:#b02a37}.link-light{color:#f8f9fa}.link-light:focus,.link-light:hover{color:#f9fafb}.link-dark{color:#212529}.link-dark:focus,.link-dark:hover{color:#1a1e21}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio:calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#0d6efd!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.2rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-end{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-start{border-bottom-left-radius:.25rem!important;border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} -/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css.map b/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css.map deleted file mode 100644 index afcd9e33..00000000 --- a/foundational-api-samples/hello-world/blazor/hello-world-blazor/BlazorApp/wwwroot/css/bootstrap/bootstrap.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","../../scss/vendor/_rfs.scss","../../scss/mixins/_border-radius.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/_tables.scss","../../scss/mixins/_table-variants.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_form-select.scss","../../scss/forms/_form-check.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/_button-group.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_accordion.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/mixins/_backdrop.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/_offcanvas.scss","../../scss/_placeholders.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n// scss-docs-start import-stack\n// Configuration\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"utilities\";\n\n// Layout & components\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"containers\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"accordion\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"alert\";\n@import \"progress\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"offcanvas\";\n@import \"placeholders\";\n\n// Helpers\n@import \"helpers\";\n\n// Utilities\n@import \"utilities/api\";\n// scss-docs-end import-stack\n",":root {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$variable-prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$variable-prefix}#{$color}-rgb: #{$value};\n }\n\n --#{$variable-prefix}white-rgb: #{to-rgb($white)};\n --#{$variable-prefix}black-rgb: #{to-rgb($black)};\n --#{$variable-prefix}body-rgb: #{to-rgb($body-color)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$variable-prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$variable-prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$variable-prefix}gradient: #{$gradient};\n\n // Root and body\n // stylelint-disable custom-property-empty-line-before\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$variable-prefix}root-font-size: #{$font-size-root};\n }\n --#{$variable-prefix}body-font-family: #{$font-family-base};\n --#{$variable-prefix}body-font-size: #{$font-size-base};\n --#{$variable-prefix}body-font-weight: #{$font-weight-base};\n --#{$variable-prefix}body-line-height: #{$line-height-base};\n --#{$variable-prefix}body-color: #{$body-color};\n @if $body-text-align != null {\n --#{$variable-prefix}body-text-align: #{$body-text-align};\n }\n --#{$variable-prefix}body-bg: #{$body-bg};\n // scss-docs-end root-body-variables\n // stylelint-enable custom-property-empty-line-before\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n font-size: var(--#{$variable-prefix}-root-font-size);\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$variable-prefix}body-font-family);\n @include font-size(var(--#{$variable-prefix}body-font-size));\n font-weight: var(--#{$variable-prefix}body-font-weight);\n line-height: var(--#{$variable-prefix}body-line-height);\n color: var(--#{$variable-prefix}body-color);\n text-align: var(--#{$variable-prefix}body-text-align);\n background-color: var(--#{$variable-prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n background-color: currentColor;\n border: 0;\n opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

    `-`

    ` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

    `s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n\n &:hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n direction: ltr #{\"/* rtl:ignore */\"};\n unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-` - -

    -
    {mode === Modes.VIDEO_CAPTURE ? : }
    -

    - ); -} - -export default App; -``` - -* Try running the project. - -```cmd -npm start -``` - -If you followed all the steps correctly, you will have a working page that turns one of the cameras hooked to or built in your computer or mobile device into a barcode scanner. Also, if you want to decode a local image, just click the `Decode Image` button and select the image you want to decode. Once barcodes are found, the results will show in a dialog. - -## Development server - -Runs the app in the development mode.\ -Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.\ -You will also see any lint errors in the console. - -## Build - -Builds the app for production to the `build` folder.\ -It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.\ -Your app is ready to be deployed! - -See the section about [deployment](https://create-react-app.dev/docs/deployment/) for more information. - -## Support - -If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/foundational-api-samples/hello-world/react-hooks/package.json b/foundational-api-samples/hello-world/react-hooks/package.json deleted file mode 100644 index 465c9542..00000000 --- a/foundational-api-samples/hello-world/react-hooks/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "dbrjs-react-hook-sample", - "version": "0.1.0", - "private": true, - "homepage": "./", - "dependencies": { - "@testing-library/jest-dom": "^5.17.0", - "@testing-library/react": "^13.4.0", - "@testing-library/user-event": "^13.5.0", - "@types/jest": "^27.5.2", - "@types/node": "^16.18.99", - "@types/react": "^18.3.3", - "@types/react-dom": "^18.3.0", - "dynamsoft-barcode-reader-bundle": "11.2.4000", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "react-scripts": "5.0.1", - "typescript": "^4.9.5", - "web-vitals": "^2.1.4" - }, - "scripts": { - "start": "react-scripts start", - "build": "react-scripts build", - "test": "react-scripts test", - "eject": "react-scripts eject" - }, - "eslintConfig": { - "extends": [ - "react-app", - "react-app/jest" - ] - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - } -} \ No newline at end of file diff --git a/foundational-api-samples/hello-world/react-hooks/public/favicon.ico b/foundational-api-samples/hello-world/react-hooks/public/favicon.ico deleted file mode 100644 index a11777cc471a4344702741ab1c8a588998b1311a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ diff --git a/foundational-api-samples/hello-world/react-hooks/public/index.html b/foundational-api-samples/hello-world/react-hooks/public/index.html deleted file mode 100644 index 6628cd75..00000000 --- a/foundational-api-samples/hello-world/react-hooks/public/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - Hello World for React - Dynamsoft Barcode Reader Sample - - - -
    - - - diff --git a/foundational-api-samples/hello-world/react-hooks/public/logo192.png b/foundational-api-samples/hello-world/react-hooks/public/logo192.png deleted file mode 100644 index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN diff --git a/foundational-api-samples/hello-world/react-hooks/public/manifest.json b/foundational-api-samples/hello-world/react-hooks/public/manifest.json deleted file mode 100644 index 080d6c77..00000000 --- a/foundational-api-samples/hello-world/react-hooks/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/foundational-api-samples/hello-world/react-hooks/src/App.css b/foundational-api-samples/hello-world/react-hooks/src/App.css deleted file mode 100644 index 4b1f0cbc..00000000 --- a/foundational-api-samples/hello-world/react-hooks/src/App.css +++ /dev/null @@ -1,50 +0,0 @@ -.hello-world-page { - text-align: center; -} -.title { - display: flex; - justify-content: center; - align-items: center; - margin-top: 20px; -} -.title .title-logo { - width: 60px; - height: 60px; - animation: retate 5s infinite linear; -} -.buttons-container { - text-align: center; - margin: 20px auto; -} -.buttons-container button { - display: inline-block; - border: 1px solid black; - padding: 5px 15px; - background-color: transparent; - cursor: pointer; -} -.buttons-container button:first-child { - border-top-left-radius: 10px; - border-bottom-left-radius: 10px; - border-right: transparent; -} -.buttons-container button:nth-child(2) { - border-top-right-radius: 10px; - border-bottom-right-radius: 10px; - border-left: transparent; -} - -@media screen and (max-width: 800px) { - .buttons-container { - width: 70%; - } -} - -@keyframes retate { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/foundational-api-samples/hello-world/react-hooks/src/App.tsx b/foundational-api-samples/hello-world/react-hooks/src/App.tsx deleted file mode 100644 index 51c1029d..00000000 --- a/foundational-api-samples/hello-world/react-hooks/src/App.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { useState } from "react"; -import reactLogo from "./assets/logo.svg"; -import VideoCapture from "./components/VideoCapture/VideoCapture"; -import ImageCapture from "./components/ImageCapture/ImageCapture"; -import "./App.css"; - -enum Modes { - VIDEO_CAPTURE = "video", - IMAGE_CAPTURE = "image", -} - -function App() { - const [mode, setMode] = useState(Modes.VIDEO_CAPTURE); - - const showVideoCapture = () => setMode(Modes.VIDEO_CAPTURE); - - const showImageCapture = () => setMode(Modes.IMAGE_CAPTURE); - - return ( -
    -
    -

    Hello World for React

    - logo -
    -
    - - -
    -
    {mode === Modes.VIDEO_CAPTURE ? : }
    -
    - ); -} - -export default App; diff --git a/foundational-api-samples/hello-world/react-hooks/src/assets/logo.svg b/foundational-api-samples/hello-world/react-hooks/src/assets/logo.svg deleted file mode 100644 index 9dfc1c05..00000000 --- a/foundational-api-samples/hello-world/react-hooks/src/assets/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.css b/foundational-api-samples/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.css deleted file mode 100644 index 09fdc448..00000000 --- a/foundational-api-samples/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.css +++ /dev/null @@ -1,21 +0,0 @@ -.image-capture-container { - width: 100%; - height: 100%; - font-family: Consolas, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, - Courier New, monospace; -} - -.image-capture-container .input-container { - width: 80%; - height: 100%; - display: flex; - justify-content: center; - border: 1px solid black; - margin: 0 auto; -} - -.image-capture-container .results { - margin-top: 20px; - height: 100%; - white-space: pre-wrap; -} diff --git a/foundational-api-samples/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx b/foundational-api-samples/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx deleted file mode 100644 index 83fe29d0..00000000 --- a/foundational-api-samples/hello-world/react-hooks/src/components/ImageCapture/ImageCapture.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import React, { useRef, useEffect, MutableRefObject, useState } from "react"; -import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { EnumCapturedResultItemType, CaptureVisionRouter, BarcodeResultItem } from "dynamsoft-barcode-reader-bundle"; -import "./ImageCapture.css"; - -function ImageCapture() { - const [resultText, setResultText] = useState(""); - - let pCvRouter: MutableRefObject | null> = useRef(null); - let isDestroyed = useRef(false); - - const captureImage = async (e: React.ChangeEvent) => { - let files = [...(e.target.files as any as File[])]; - e.target.value = ""; // reset input - setResultText(""); - - try { - // ensure cvRouter is created only once - const cvRouter = await (pCvRouter.current = pCvRouter.current || CaptureVisionRouter.createInstance()); - if (isDestroyed.current) return; - - let _resultText = ""; - for (let file of files) { - // Decode selected image with 'ReadBarcodes_ReadRateFirst' template. - const result = await cvRouter.capture(file, "ReadBarcodes_ReadRateFirst"); - console.log(result); - if (isDestroyed.current) return; - - // Print file name if there's multiple files - if (files.length > 1) { - _resultText += `\n${file.name}:\n`; - } - for (let _item of result.items) { - if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { - continue; // check if captured result item is a barcode - } - let item = _item as BarcodeResultItem; - _resultText += item.formatString + ": " + item.text + "\n" - } - setResultText(_resultText); - // If no items are found, display that no barcode was detected - if (!result.items.length) setResultText(_resultText + "No barcode found"); - } - } catch (ex: any) { - let errMsg = ex.message || ex; - console.error(ex); - alert(errMsg); - } - }; - - useEffect((): any => { - // In 'development', React runs setup and cleanup one extra time before the actual setup in Strict Mode. - isDestroyed.current = false; - - // componentWillUnmount. dispose cvRouter when it's no longer needed - return () => { - isDestroyed.current = true; - if (pCvRouter.current) { - pCvRouter.current.then((cvRouter) => { - cvRouter.dispose(); - }).catch((_) => { }) - } - }; - }, []); - - return ( -
    -
    - -
    -
    {resultText}
    -
    - ); -} - -export default ImageCapture; diff --git a/foundational-api-samples/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.css b/foundational-api-samples/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.css deleted file mode 100644 index 9bfe13ad..00000000 --- a/foundational-api-samples/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.css +++ /dev/null @@ -1,6 +0,0 @@ -.results { - width: 100%; - height: 10vh; - overflow: auto; - white-space: pre-wrap; -} diff --git a/foundational-api-samples/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.tsx b/foundational-api-samples/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.tsx deleted file mode 100644 index d619ab47..00000000 --- a/foundational-api-samples/hello-world/react-hooks/src/components/VideoCapture/VideoCapture.tsx +++ /dev/null @@ -1,114 +0,0 @@ -import { useEffect, useRef, useState } from "react"; -import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { CameraEnhancer, CameraView, CaptureVisionRouter, MultiFrameResultCrossFilter } from "dynamsoft-barcode-reader-bundle"; -import "./VideoCapture.css"; - -const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; - -function VideoCapture() { - const [resultText, setResultText] = useState(""); - const cameraViewContainer = useRef(null); - - useEffect((): any => { - let resolveInit: () => void; - const pInit: Promise = new Promise((r) => { - resolveInit = r; - }); - let isDestroyed = false; - - let cvRouter: CaptureVisionRouter; - let cameraEnhancer: CameraEnhancer; - - (async () => { - try { - // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. - const cameraView = await CameraView.createInstance(); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } // Check if component is destroyed after every async - cameraEnhancer = await CameraEnhancer.createInstance(cameraView); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Get default UI and append it to DOM. - cameraViewContainer.current!.append(cameraView.getUIElement()); - - // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. - cvRouter = await CaptureVisionRouter.createInstance(); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - cvRouter.setInput(cameraEnhancer); - - // Define a callback for results. - cvRouter.addResultReceiver({ - onDecodedBarcodesReceived: (result) => { - if (!result.barcodeResultItems.length) return; - - let _resultText = ""; - setResultText(_resultText); - console.log(result); - for (let item of result.barcodeResultItems) { - _resultText += `${item.formatString}: ${item.text}\n\n`; - } - setResultText(_resultText); - }, - }); - - // Filter out unchecked and duplicate results. - const filter = new MultiFrameResultCrossFilter(); - // Filter out unchecked barcodes. - filter.enableResultCrossVerification("barcode", true); - // Filter out duplicate barcodes within 3 seconds. - filter.enableResultDeduplication("barcode", true); - await cvRouter.addResultFilter(filter); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Open camera and start scanning barcode. - await cameraEnhancer.open(); - cameraView.setScanLaserVisible(true); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - await cvRouter.startCapturing("ReadBarcodes_SpeedFirst"); - if (isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - } catch (ex: any) { - if ((ex as Error)?.message === componentDestroyedErrorMsg) { - console.log(componentDestroyedErrorMsg); - } else { - let errMsg = ex.message || ex; - console.error(ex); - alert(errMsg); - } - } - // Resolve pInit promise once initialization is complete. - resolveInit!(); - })(); - - // componentWillUnmount. dispose cvRouter when it's no longer needed - return () => { - isDestroyed = true; - // Wait for the pInit to complete before disposing resources. - pInit.then(() => { - cvRouter?.dispose(); - cameraEnhancer?.dispose(); - }).catch((_) => { }) - }; - }, []); - - return ( -
    -
    -
    - Results: -
    {resultText}
    -
    - ); -} - -export default VideoCapture; diff --git a/foundational-api-samples/hello-world/react-hooks/src/dynamsoft.config.ts b/foundational-api-samples/hello-world/react-hooks/src/dynamsoft.config.ts deleted file mode 100644 index 744bd1ed..00000000 --- a/foundational-api-samples/hello-world/react-hooks/src/dynamsoft.config.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { CoreModule, LicenseManager } from "dynamsoft-barcode-reader-bundle"; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths.rootDirectory = "https://cdn.jsdelivr.net/npm/"; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", { - executeNow: true, -}); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.4000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(); diff --git a/foundational-api-samples/hello-world/react-hooks/src/index.css b/foundational-api-samples/hello-world/react-hooks/src/index.css deleted file mode 100644 index e9927237..00000000 --- a/foundational-api-samples/hello-world/react-hooks/src/index.css +++ /dev/null @@ -1,11 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", - "Droid Sans", "Helvetica Neue", sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; -} diff --git a/foundational-api-samples/hello-world/react-hooks/src/index.tsx b/foundational-api-samples/hello-world/react-hooks/src/index.tsx deleted file mode 100644 index f260548a..00000000 --- a/foundational-api-samples/hello-world/react-hooks/src/index.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import React from "react"; -import ReactDOM from "react-dom/client"; -import "./index.css"; -import App from "./App"; - -const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); -root.render( - - - -); diff --git a/foundational-api-samples/hello-world/react-hooks/src/react-app-env.d.ts b/foundational-api-samples/hello-world/react-hooks/src/react-app-env.d.ts deleted file mode 100644 index 6431bc5f..00000000 --- a/foundational-api-samples/hello-world/react-hooks/src/react-app-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/foundational-api-samples/hello-world/react-hooks/tsconfig.json b/foundational-api-samples/hello-world/react-hooks/tsconfig.json deleted file mode 100644 index a273b0cf..00000000 --- a/foundational-api-samples/hello-world/react-hooks/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], - "allowJs": true, - "skipLibCheck": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": true, - "module": "esnext", - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx" - }, - "include": [ - "src" - ] -} diff --git a/foundational-api-samples/hello-world/react/.gitignore b/foundational-api-samples/hello-world/react/.gitignore deleted file mode 100644 index 4d29575d..00000000 --- a/foundational-api-samples/hello-world/react/.gitignore +++ /dev/null @@ -1,23 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# production -/build - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/foundational-api-samples/hello-world/react/README.md b/foundational-api-samples/hello-world/react/README.md deleted file mode 100644 index 2ce4798f..00000000 --- a/foundational-api-samples/hello-world/react/README.md +++ /dev/null @@ -1,411 +0,0 @@ -# Hello World Sample for React - -[React](https://reactjs.org/) is a JavaScript library meant explicitly for creating interactive UIs. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a React application. Note that in this sample we will use `TypeScript` and define components as classes. Also, there is another sample `react-hooks` using `Hooks` in React. - -In this guide, we will be using [`dynamsoft-barcode-reader-bundle 11.2.4000](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/11.2.4000). - -> Note: -> -> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! -> -> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. - -## Official Sample - -*
    Hello World in React - Source Code - -## Preparation - -Make sure you have [node](https://nodejs.org/) installed. `node 16.20.1` and `react 18.2.0` are used in the example below. - -## Quick Start - -```cmd -npm install -npm start -``` -Then open http://localhost:3000/ to view the sample app. - -## Creating the sample project - -In this section, we will be creating a React application utilizing the Dynamsoft Barcode Reader bundle sdk. - -We'll be exploring how you could create a page that not only enables barcode scanning via a webcam or a built-in camera, but also decode barcodes from local images. - -By the end of this guide, you'll have a good understanding of the SDK and be ready to discover more ways to use it! - -### Create a Bootstrapped Raw React Application with TypeScript - -```cmd -npx create-react-app my-app --template typescript -``` - -### **CD** to the root directory of the application and install necessary libraries - -```cmd -cd my-app -npm install dynamsoft-barcode-reader-bundle@11.2.4000 -E -``` - -## Start to implement - -### Add file "dynamsoft.config.ts" at the root of the app to configure libraries - -```typescript -/* /src/dynamsoft.config.ts */ -import { CoreModule } from "dynamsoft-core"; -import { LicenseManager } from "dynamsoft-license"; -import "dynamsoft-barcode-reader"; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths.rootDirectory = "https://cdn.jsdelivr.net/npm/"; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", { - executeNow: true, -}); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.4000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload .wasm file for reading barcodes. It will save time on the initial decoding by skipping the resource loading. -CoreModule.loadWasm(); -``` - -> Note: -> -> * `initLicense()` specify a license key to use the library. You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=sample&product=dbr&package=js to get your own trial license good for 30 days. -> * `engineResourcePaths` tells the library where to get the necessary resources at runtime. - - -### Build directory structure - -* Create a directory `components` under `/src/`, and then create two other directories, `VideoCapture` and `ImageCapture` under `/components/`. - -### Create and edit the `VideoCapture` component - -* Create `VideoCapture.tsx` under `/src/components/VideoCapture/`. The `VideoCapture` component helps decode barcodes via camera. - -* In `VideoCapture.tsx`, add code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```tsx -/* /src/components/VideoCapture/VideoCapture.tsx */ -import React from "react"; -import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { CameraEnhancer, CameraView } from "dynamsoft-camera-enhancer"; -import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; -import { MultiFrameResultCrossFilter } from "dynamsoft-utility"; -import "./VideoCapture.css"; - -const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; - -class VideoCapture extends React.Component { - state = { - resultText: "" - }; - cameraViewContainer: React.RefObject = React.createRef(); - - resolveInit?: () => void; - pInit: Promise = new Promise((r) => (this.resolveInit = r)); - isDestroyed = false; - - cvRouter?: CaptureVisionRouter; - cameraEnhancer?: CameraEnhancer; - - async componentDidMount() { - try { - // Create a `CameraView` instance for UI control and a `CameraEnhancer` instance for camera control. - const cameraView = await CameraView.createInstance(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } // Check if component is destroyed after every async - - this.cameraEnhancer = await CameraEnhancer.createInstance(cameraView); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Get default UI and append it to DOM. - this.cameraViewContainer.current!.append(cameraView.getUIElement()); - - // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. - this.cvRouter = await CaptureVisionRouter.createInstance(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - this.cvRouter.setInput(this.cameraEnhancer); - - // Define a callback for results. - this.cvRouter.addResultReceiver({ - onDecodedBarcodesReceived: (result) => { - if (!result.barcodeResultItems.length) return; - - let _resultText = ""; - console.log(result); - for (let item of result.barcodeResultItems) { - _resultText += `${item.formatString}: ${item.text}\n\n`; - } - this.setState({resultText: _resultText}) - }, - }); - - // Filter out unchecked and duplicate results. - const filter = new MultiFrameResultCrossFilter(); - // Filter out unchecked barcodes. - filter.enableResultCrossVerification("barcode", true); - // Filter out duplicate barcodes within 3 seconds. - filter.enableResultDeduplication("barcode", true); - await this.cvRouter.addResultFilter(filter); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Open camera and start scanning single barcode. - await this.cameraEnhancer.open(); - cameraView.setScanLaserVisible(true); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - await this.cvRouter.startCapturing("ReadSingleBarcode"); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - } catch (ex: any) { - if ((ex as Error)?.message === componentDestroyedErrorMsg) { - console.log(componentDestroyedErrorMsg); - } else { - let errMsg = ex.message || ex; - console.error(ex); - alert(errMsg); - } - } - - // Resolve pInit promise once initialization is complete. - this.resolveInit!(); - } - - async componentWillUnmount() { - this.isDestroyed = true; - try { - // Wait for the pInit to complete before disposing resources. - await this.pInit; - this.cvRouter?.dispose(); - this.cameraEnhancer?.dispose(); - } catch (_) {} - } - - render() { - return ( -
    -
    -
    - Results: -
    {this.state.resultText}
    -
    - ); - } -} - -export default VideoCapture; -``` - -> Note: -> -> * The component should never update (check the code for `shouldComponentUpdate()`) so that events bound to the UI stay valid. -> * Also, during 'development', React executes setup and cleanup phases twice in [Strict Mode](https://react.dev/reference/react/StrictMode). To ensure proper functioning of VideoCapture in development, it's advised to avoid using Strict Mode for this component. -> However, if you're still interested on using Strict Mode, we do have a workaround available. Please contact our [support team](#Support) for further assistance. -> * If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customizing-the-ui) - -### Create and edit the `ImageCapture` component - -* Create `ImageCapture.tsx` under `/src/components/ImageCapture/`. The `ImageCapture` component helps decode barcodes in an image. - -* In `ImageCapture.tsx`, add code for initializing and destroying the `CaptureVisionRouter` instance. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```tsx -/* /src/components/ImageCapture/ImageCapture.tsx */ -import React, { ChangeEvent } from "react"; -import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { EnumCapturedResultItemType } from "dynamsoft-core"; -import type { BarcodeResultItem } from "dynamsoft-barcode-reader"; -import { CaptureVisionRouter } from "dynamsoft-capture-vision-router"; -import "./ImageCapture.css"; - -class ImageCapture extends React.Component { - resultsContainer: React.RefObject = React.createRef(); - - pCvRouter: Promise | null = null; - isDestroyed = false; - - async captureImage(e: ChangeEvent) { - let files = [...(e.target.files as any as File[])]; - e.target.value = ""; // reset input - this.resultsContainer.current!.innerText = ""; - - try { - const cvRouter = await (this.pCvRouter = this.pCvRouter || CaptureVisionRouter.createInstance()); - if (this.isDestroyed) return; - - for (let file of files) { - // Decode selected image with 'ReadBarcodes_ReadRateFirst' template. - const result = await cvRouter.capture(file, "ReadBarcodes_ReadRateFirst"); - console.log(result); - if (this.isDestroyed) return; - - // Print file name if there's multiple files - if (files.length > 1) { - this.resultsContainer.current!.innerText += `\n${file.name}:\n`; - } - for (let _item of result.items) { - if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { - continue; // check if captured result item is a barcode - } - let item = _item as BarcodeResultItem; - this.resultsContainer.current!.innerText += item.text + "\n"; - } - // If no items are found, display that no barcode was detected - if (!result.items.length) this.resultsContainer.current!.innerText += "No barcode found\n"; - } - } catch (ex: any) { - let errMsg = ex.message || ex; - console.error(ex); - alert(errMsg); - } - } - - async componentWillUnmount() { - this.isDestroyed = true; - if (this.pCvRouter) { - try { - (await this.pCvRouter).dispose(); - } catch (_) {} - } - } - - render() { - return ( -
    -
    - -
    -
    -
    - ); - } -} - -export default ImageCapture; -``` - -### Add the `VideoCapture` and `ImageCapture` component to `App.tsx` - -* On `/src/App.tsx`, we will edit the component so that it offers buttons to switch components between `VideoCapture` and `ImageCapture`. - -* Add following code to `App.tsx`. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```tsx -/* src/App.tsx */ -import React from "react"; -import reactLogo from "./assets/logo.svg"; -import "./dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import VideoCapture from "./components/VideoCapture/VideoCapture"; -import ImageCapture from "./components/ImageCapture/ImageCapture"; -import "./App.css"; - -enum Modes { - VIDEO_CAPTURE = "video", - IMAGE_CAPTURE = "image", -} - -class App extends React.Component { - state = { - mode: Modes.VIDEO_CAPTURE, - }; - - showVideoCapture = () => { - this.setState({ - mode: Modes.VIDEO_CAPTURE, - }); - }; - - showImageCapture = () => { - this.setState({ - mode: Modes.IMAGE_CAPTURE, - }); - }; - - render() { - return ( -
    -
    -

    Hello World for React

    - logo -
    -
    - - -
    -
    {this.state.mode === Modes.VIDEO_CAPTURE ? : }
    -
    - ); - } -} - -export default App; -``` - -* Try running the project. - -```cmd -npm start -``` - -If you have followed all the steps correctly, you should now have a functioning page that allows you to scan barcodes from a webcam or a built-in camera. Additionally, if you want to decode a local image, you can click the `Decode Image` button and select the image you want to decode. Any barcodes that are detected will be displayed in a dialog. - -## Development server - -Runs the app in the development mode.\ -Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.\ -You will also see any lint errors in the console. - -## Build - -Builds the app for production to the `build` folder.\ -It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.\ -Your app is ready to be deployed! - -See the section about [deployment](https://create-react-app.dev/docs/deployment/) for more information. - -## Support - -If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/foundational-api-samples/hello-world/react/package.json b/foundational-api-samples/hello-world/react/package.json deleted file mode 100644 index 7b079c7f..00000000 --- a/foundational-api-samples/hello-world/react/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "dbrjs-react-sample", - "version": "0.1.0", - "private": true, - "homepage": "./", - "dependencies": { - "@testing-library/jest-dom": "^5.17.0", - "@testing-library/react": "^13.4.0", - "@testing-library/user-event": "^13.5.0", - "@types/jest": "^27.5.2", - "@types/node": "^16.18.98", - "@types/react": "^18.3.3", - "@types/react-dom": "^18.3.0", - "dynamsoft-barcode-reader-bundle": "11.2.4000", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "react-scripts": "5.0.1", - "typescript": "^4.9.5", - "web-vitals": "^2.1.4" - }, - "scripts": { - "start": "react-scripts start", - "build": "react-scripts build", - "test": "react-scripts test", - "eject": "react-scripts eject" - }, - "eslintConfig": { - "extends": [ - "react-app", - "react-app/jest" - ] - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - } -} diff --git a/foundational-api-samples/hello-world/react/public/favicon.ico b/foundational-api-samples/hello-world/react/public/favicon.ico deleted file mode 100644 index a11777cc471a4344702741ab1c8a588998b1311a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ diff --git a/foundational-api-samples/hello-world/react/public/index.html b/foundational-api-samples/hello-world/react/public/index.html deleted file mode 100644 index a88f5d4d..00000000 --- a/foundational-api-samples/hello-world/react/public/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - Hello World for React - Dynamsoft Barcode Reader Sample - - - -
    - - - diff --git a/foundational-api-samples/hello-world/react/public/logo192.png b/foundational-api-samples/hello-world/react/public/logo192.png deleted file mode 100644 index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN diff --git a/foundational-api-samples/hello-world/react/public/manifest.json b/foundational-api-samples/hello-world/react/public/manifest.json deleted file mode 100644 index fc7ce894..00000000 --- a/foundational-api-samples/hello-world/react/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} \ No newline at end of file diff --git a/foundational-api-samples/hello-world/react/public/robots.txt b/foundational-api-samples/hello-world/react/public/robots.txt deleted file mode 100644 index e9e57dc4..00000000 --- a/foundational-api-samples/hello-world/react/public/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: diff --git a/foundational-api-samples/hello-world/react/src/App.css b/foundational-api-samples/hello-world/react/src/App.css deleted file mode 100644 index 4b1f0cbc..00000000 --- a/foundational-api-samples/hello-world/react/src/App.css +++ /dev/null @@ -1,50 +0,0 @@ -.hello-world-page { - text-align: center; -} -.title { - display: flex; - justify-content: center; - align-items: center; - margin-top: 20px; -} -.title .title-logo { - width: 60px; - height: 60px; - animation: retate 5s infinite linear; -} -.buttons-container { - text-align: center; - margin: 20px auto; -} -.buttons-container button { - display: inline-block; - border: 1px solid black; - padding: 5px 15px; - background-color: transparent; - cursor: pointer; -} -.buttons-container button:first-child { - border-top-left-radius: 10px; - border-bottom-left-radius: 10px; - border-right: transparent; -} -.buttons-container button:nth-child(2) { - border-top-right-radius: 10px; - border-bottom-right-radius: 10px; - border-left: transparent; -} - -@media screen and (max-width: 800px) { - .buttons-container { - width: 70%; - } -} - -@keyframes retate { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/foundational-api-samples/hello-world/react/src/App.tsx b/foundational-api-samples/hello-world/react/src/App.tsx deleted file mode 100644 index 4aa79319..00000000 --- a/foundational-api-samples/hello-world/react/src/App.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import React from "react"; -import reactLogo from "./assets/logo.svg"; -import "./dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import VideoCapture from "./components/VideoCapture/VideoCapture"; -import ImageCapture from "./components/ImageCapture/ImageCapture"; -import "./App.css"; - -enum Modes { - VIDEO_CAPTURE = "video", - IMAGE_CAPTURE = "image", -} - -class App extends React.Component { - state = { - mode: Modes.VIDEO_CAPTURE, - }; - - showVideoCapture = () => { - this.setState({ - mode: Modes.VIDEO_CAPTURE, - }); - }; - - showImageCapture = () => { - this.setState({ - mode: Modes.IMAGE_CAPTURE, - }); - }; - - render() { - return ( -
    -
    -

    Hello World for React

    - logo -
    -
    - - -
    -
    {this.state.mode === Modes.VIDEO_CAPTURE ? : }
    -
    - ); - } -} - -export default App; diff --git a/foundational-api-samples/hello-world/react/src/assets/logo.svg b/foundational-api-samples/hello-world/react/src/assets/logo.svg deleted file mode 100644 index 9dfc1c05..00000000 --- a/foundational-api-samples/hello-world/react/src/assets/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/react/src/components/ImageCapture/ImageCapture.css b/foundational-api-samples/hello-world/react/src/components/ImageCapture/ImageCapture.css deleted file mode 100644 index 03da581c..00000000 --- a/foundational-api-samples/hello-world/react/src/components/ImageCapture/ImageCapture.css +++ /dev/null @@ -1,20 +0,0 @@ -.image-capture-container { - width: 100%; - height: 100%; - font-family: Consolas, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, - Courier New, monospace; -} - -.image-capture-container .input-container { - width: 80%; - height: 100%; - display: flex; - justify-content: center; - border: 1px solid black; - margin: 0 auto; -} - -.image-capture-container .results { - margin-top: 20px; - height: 100%; -} diff --git a/foundational-api-samples/hello-world/react/src/components/ImageCapture/ImageCapture.tsx b/foundational-api-samples/hello-world/react/src/components/ImageCapture/ImageCapture.tsx deleted file mode 100644 index 2bc8253a..00000000 --- a/foundational-api-samples/hello-world/react/src/components/ImageCapture/ImageCapture.tsx +++ /dev/null @@ -1,75 +0,0 @@ -import React, { ChangeEvent } from "react"; -import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { EnumCapturedResultItemType, CaptureVisionRouter } from "dynamsoft-barcode-reader-bundle"; -import type { BarcodeResultItem } from "dynamsoft-barcode-reader-bundle"; -import "./ImageCapture.css"; - -class ImageCapture extends React.Component { - resultsContainer: React.RefObject = React.createRef(); - - pCvRouter: Promise | null = null; - isDestroyed = false; - - async captureImage(e: ChangeEvent) { - let files = [...(e.target.files as any as File[])]; - e.target.value = ""; // reset input - this.resultsContainer.current!.innerText = ""; - - try { - const cvRouter = await (this.pCvRouter = this.pCvRouter || CaptureVisionRouter.createInstance()); - if (this.isDestroyed) return; - - for (let file of files) { - // Decode selected image with 'ReadBarcodes_ReadRateFirst' template. - const result = await cvRouter.capture(file, "ReadBarcodes_ReadRateFirst"); - console.log(result); - if (this.isDestroyed) return; - - // Print file name if there's multiple files - if (files.length > 1) { - this.resultsContainer.current!.innerText += `\n${file.name}:\n`; - } - for (let _item of result.items) { - if (_item.type !== EnumCapturedResultItemType.CRIT_BARCODE) { - continue; // check if captured result item is a barcode - } - let item = _item as BarcodeResultItem; - this.resultsContainer.current!.innerText += item.text + "\n"; - } - // If no items are found, display that no barcode was detected - if (!result.items.length) this.resultsContainer.current!.innerText += "No barcode found\n"; - } - } catch (ex: any) { - let errMsg = ex.message || ex; - console.error(ex); - alert(errMsg); - } - } - - async componentWillUnmount() { - this.isDestroyed = true; - if (this.pCvRouter) { - try { - (await this.pCvRouter).dispose(); - } catch (_) {} - } - } - - render() { - return ( -
    -
    - -
    -
    -
    - ); - } -} - -export default ImageCapture; diff --git a/foundational-api-samples/hello-world/react/src/components/VideoCapture/VideoCapture.css b/foundational-api-samples/hello-world/react/src/components/VideoCapture/VideoCapture.css deleted file mode 100644 index 9bfe13ad..00000000 --- a/foundational-api-samples/hello-world/react/src/components/VideoCapture/VideoCapture.css +++ /dev/null @@ -1,6 +0,0 @@ -.results { - width: 100%; - height: 10vh; - overflow: auto; - white-space: pre-wrap; -} diff --git a/foundational-api-samples/hello-world/react/src/components/VideoCapture/VideoCapture.tsx b/foundational-api-samples/hello-world/react/src/components/VideoCapture/VideoCapture.tsx deleted file mode 100644 index 62eb118b..00000000 --- a/foundational-api-samples/hello-world/react/src/components/VideoCapture/VideoCapture.tsx +++ /dev/null @@ -1,115 +0,0 @@ -import React from "react"; -import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { CameraEnhancer, CameraView, CaptureVisionRouter, MultiFrameResultCrossFilter } from "dynamsoft-barcode-reader-bundle"; -import "./VideoCapture.css"; - -const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; - -class VideoCapture extends React.Component { - state = { - resultText: "", - }; - cameraViewContainer: React.RefObject = React.createRef(); - - resolveInit?: () => void; - pInit: Promise = new Promise((r) => (this.resolveInit = r)); - isDestroyed = false; - - cvRouter?: CaptureVisionRouter; - cameraEnhancer?: CameraEnhancer; - - async componentDidMount() { - try { - // Create a `CameraEnhancer` instance for camera control and a `CameraView` instance for UI control. - const cameraView = await CameraView.createInstance(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } // Check if component is destroyed after every async - - this.cameraEnhancer = await CameraEnhancer.createInstance(cameraView); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Get default UI and append it to DOM. - this.cameraViewContainer.current!.append(cameraView.getUIElement()); - - // Create a `CaptureVisionRouter` instance and set `CameraEnhancer` instance as its image source. - this.cvRouter = await CaptureVisionRouter.createInstance(); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - this.cvRouter.setInput(this.cameraEnhancer); - - // Define a callback for results. - this.cvRouter.addResultReceiver({ - onDecodedBarcodesReceived: (result) => { - if (!result.barcodeResultItems.length) return; - - let _resultText = ""; - console.log(result); - for (let item of result.barcodeResultItems) { - _resultText += `${item.formatString}: ${item.text}\n\n`; - } - this.setState({ resultText: _resultText }); - }, - }); - - // Filter out unchecked and duplicate results. - const filter = new MultiFrameResultCrossFilter(); - // Filter out unchecked barcodes. - filter.enableResultCrossVerification("barcode", true); - // Filter out duplicate barcodes within 3 seconds. - filter.enableResultDeduplication("barcode", true); - await this.cvRouter.addResultFilter(filter); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - - // Open camera and start scanning barcode. - await this.cameraEnhancer.open(); - cameraView.setScanLaserVisible(true); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - await this.cvRouter.startCapturing("ReadBarcodes_SpeedFirst"); - if (this.isDestroyed) { - throw Error(componentDestroyedErrorMsg); - } - } catch (ex: any) { - if ((ex as Error)?.message === componentDestroyedErrorMsg) { - console.log(componentDestroyedErrorMsg); - } else { - let errMsg = ex.message || ex; - console.error(ex); - alert(errMsg); - } - } - - // Resolve pInit promise once initialization is complete. - this.resolveInit!(); - } - - async componentWillUnmount() { - this.isDestroyed = true; - try { - // Wait for the pInit to complete before disposing resources. - await this.pInit; - this.cvRouter?.dispose(); - this.cameraEnhancer?.dispose(); - } catch (_) {} - } - - render() { - return ( -
    -
    -
    - Results: -
    {this.state.resultText}
    -
    - ); - } -} - -export default VideoCapture; diff --git a/foundational-api-samples/hello-world/react/src/dynamsoft.config.ts b/foundational-api-samples/hello-world/react/src/dynamsoft.config.ts deleted file mode 100644 index bc2c9faa..00000000 --- a/foundational-api-samples/hello-world/react/src/dynamsoft.config.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { CoreModule } from "dynamsoft-barcode-reader-bundle"; -import { LicenseManager } from "dynamsoft-barcode-reader-bundle"; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths.rootDirectory = "https://cdn.jsdelivr.net/npm/"; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", { - executeNow: true, -}); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.4000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(); diff --git a/foundational-api-samples/hello-world/react/src/index.css b/foundational-api-samples/hello-world/react/src/index.css deleted file mode 100644 index e9927237..00000000 --- a/foundational-api-samples/hello-world/react/src/index.css +++ /dev/null @@ -1,11 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", - "Droid Sans", "Helvetica Neue", sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; -} diff --git a/foundational-api-samples/hello-world/react/src/index.tsx b/foundational-api-samples/hello-world/react/src/index.tsx deleted file mode 100644 index 625b6731..00000000 --- a/foundational-api-samples/hello-world/react/src/index.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import ReactDOM from "react-dom/client"; -import "./index.css"; -import App from "./App"; - -const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); -root.render(); diff --git a/foundational-api-samples/hello-world/react/src/logo.svg b/foundational-api-samples/hello-world/react/src/logo.svg deleted file mode 100644 index 9dfc1c05..00000000 --- a/foundational-api-samples/hello-world/react/src/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/react/src/react-app-env.d.ts b/foundational-api-samples/hello-world/react/src/react-app-env.d.ts deleted file mode 100644 index 6431bc5f..00000000 --- a/foundational-api-samples/hello-world/react/src/react-app-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/foundational-api-samples/hello-world/react/tsconfig.json b/foundational-api-samples/hello-world/react/tsconfig.json deleted file mode 100644 index a273b0cf..00000000 --- a/foundational-api-samples/hello-world/react/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], - "allowJs": true, - "skipLibCheck": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": true, - "module": "esnext", - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx" - }, - "include": [ - "src" - ] -} diff --git a/foundational-api-samples/hello-world/read-an-image.html b/foundational-api-samples/hello-world/read-an-image.html deleted file mode 100644 index a0f678a6..00000000 --- a/foundational-api-samples/hello-world/read-an-image.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - Dynamsoft Barcode Reader Sample - Hello World (Read an Image) - - - -

    Hello World (Read an Image)

    -
    - Results:
    -
    - - - - - - - - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/requirejs.html b/foundational-api-samples/hello-world/requirejs.html deleted file mode 100644 index b198ffea..00000000 --- a/foundational-api-samples/hello-world/requirejs.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - Dynamsoft Barcode Reader Sample - Hello World for RequireJS (Decode via Camera) - - - - -

    Hello World for RequireJS (Decode via Camera)

    -
    - Results: -
    -
    - - - diff --git a/foundational-api-samples/hello-world/svelte/.gitignore b/foundational-api-samples/hello-world/svelte/.gitignore deleted file mode 100644 index a547bf36..00000000 --- a/foundational-api-samples/hello-world/svelte/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/foundational-api-samples/hello-world/svelte/README.md b/foundational-api-samples/hello-world/svelte/README.md deleted file mode 100644 index 3ba87c95..00000000 --- a/foundational-api-samples/hello-world/svelte/README.md +++ /dev/null @@ -1,351 +0,0 @@ -# Hello World for Vite + Svelte + TS - Dynamsoft Barcode Reader Sample - -[Svelte](https://svelte.dev/) is a JavaScript library meant explicitly for creating interactive UIs. Svelte compiles components into code that directly manipulates the DOM, unlike other frameworks such as Vue and React that relies on a virtual DOM for updates. Follow this guide to learn how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a Svelte application using Vite. Note that in this sample we will use TypeScript. - -In this guide, we will be using [`dynamsoft-barcode-reader-bundle 11.2.4000](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/11.2.4000). - -> Note: -> -> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! -> -> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. - -## Official Sample - -*
    Hello World for Vite + Svelte + TS - Source Code - -## Preparation - -Make sure you have [node](https://nodejs.org/) installed. `node 16.20.1` and `svelte 4.2.12` are used in the example below. - -## Quick Start - -```cmd -npm install -npm run dev -``` -Then open http://localhost:5173/ to view the sample app. - -## Create the sample project - -If you're planning to start the project from scratch, in this section, we will be creating a Svelte application with Vite utilizing the Dynamsoft Barcode Reader bundle sdk. - -We'll be exploring how you could create a page that not only enables barcode scanning via a webcam or a built-in camera, but also decode barcodes from local images. - -By the end of this guide, you'll have a good understanding of the SDK and be ready to discover more ways to use it! - -### Create a Bootstrapped Svelte Application with Vite and TypeScript - -```cmd -npm create vite@latest my-app - - -√ Select a framework: » Svelte -√ Select a variant: » TypeScript -``` - -### **CD** to the root directory of the application and install necessary libraries - -```cmd -cd my-app -npm install dynamsoft-barcode-reader-bundle@11.2.4000 -E -``` - -## Start to implement - -### Add file "dynamsoft.config.ts" under "/src/" to configure libraries - -```typescript -/* /src/dynamsoft.config.ts */ -import { CoreModule } from "dynamsoft-core"; -import { LicenseManager } from "dynamsoft-license"; -import "dynamsoft-barcode-reader"; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths.rootDirectory = "https://cdn.jsdelivr.net/npm/"; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", { - executeNow: true, -}); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.4000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload .wasm file for reading barcodes. It will save time on the initial decoding by skipping the resource loading. -CoreModule.loadWasm(); -``` - -> Note: -> -> * `initLicense()` specify a license key to use the library. You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=sample&product=dbr&package=js to get your own trial license good for 30 days. -> * `engineResourcePaths` tells the library where to get the necessary resources at runtime. - -### Build directory structure - -* Create a directory `components` under `/src/` - -### Create and edit the `VideoCapture` component - -* Create `VideoCapture.svelte` under `/src/components/`. The `VideoCapture` component helps decode barcodes via camera. - -* In `VideoCapture.svelte`, add code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```svelte - - - -
    -
    - Results:
    -
    {resultText}
    -
    -``` - -> Note: -> -> * If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customizing-the-ui) - -### Create and edit the `ImageCapture` component - -* Create `ImageCapture.svelte` under `/src/components/`. The `ImageCapture` component helps decode barcodes in an image. - -* In `ImageCapture.svelte`, add code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```svelte - - - -
    -
    - -
    -
    {resultText}
    -
    -``` - -### Add the `VideoCapture` and `ImageCapture` component to `App.svelte` - -* On `/src/App.svelte`, we will edit the component so that it offers buttons to switch components between `VideoCapture` and `ImageCapture`. - -* Add following code to `App.svelte`. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```svelte - - - -
    -
    -
    -

    Hello World for Svelte

    - -
    -
    - - -
    - {#if mode === "video"} - - {:else} - - {/if} -
    -
    -``` - -* Try running the project. - -```cmd -npm run dev -``` - -If you followed all the steps correctly, you will have a working page that turns one of the cameras hooked to or built in your computer or mobile device into a barcode scanner. Also, if you want to decode a local image, just click the `Decode Image` button and select the image you want to decode. Once barcodes are found, the results will show in a dialog. - -## Support - -If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/foundational-api-samples/hello-world/svelte/index.html b/foundational-api-samples/hello-world/svelte/index.html deleted file mode 100644 index 6471fdec..00000000 --- a/foundational-api-samples/hello-world/svelte/index.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - Hello World for Vite + Svelte + TS - Dynamsoft Barcode Reader Sample - - -
    - - - diff --git a/foundational-api-samples/hello-world/svelte/logo.svg b/foundational-api-samples/hello-world/svelte/logo.svg deleted file mode 100644 index 4e25b26d..00000000 --- a/foundational-api-samples/hello-world/svelte/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/svelte/package.json b/foundational-api-samples/hello-world/svelte/package.json deleted file mode 100644 index 7100687f..00000000 --- a/foundational-api-samples/hello-world/svelte/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "dbrjs-svelte-sample", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview", - "check": "svelte-check --tsconfig ./tsconfig.json" - }, - "dependencies": { - "dynamsoft-barcode-reader-bundle": "11.2.4000" - }, - "devDependencies": { - "@sveltejs/vite-plugin-svelte": "^3.0.2", - "@tsconfig/svelte": "^5.0.2", - "svelte": "^4.2.12", - "svelte-check": "^3.6.6", - "tslib": "^2.6.2", - "typescript": "^5.2.2", - "vite": "^5.1.6" - } -} diff --git a/foundational-api-samples/hello-world/svelte/src/App.svelte b/foundational-api-samples/hello-world/svelte/src/App.svelte deleted file mode 100644 index 7096bd5d..00000000 --- a/foundational-api-samples/hello-world/svelte/src/App.svelte +++ /dev/null @@ -1,88 +0,0 @@ - - -
    -
    -
    -

    Hello World for Svelte

    - -
    -
    - - -
    - {#if mode === "video"} - - {:else} - - {/if} -
    -
    - - diff --git a/foundational-api-samples/hello-world/svelte/src/components/ImageCapture.svelte b/foundational-api-samples/hello-world/svelte/src/components/ImageCapture.svelte deleted file mode 100644 index cad8fa8c..00000000 --- a/foundational-api-samples/hello-world/svelte/src/components/ImageCapture.svelte +++ /dev/null @@ -1,95 +0,0 @@ - - -
    -
    - -
    -
    {resultText}
    -
    - - diff --git a/foundational-api-samples/hello-world/svelte/src/components/VideoCapture.svelte b/foundational-api-samples/hello-world/svelte/src/components/VideoCapture.svelte deleted file mode 100644 index 4ab0645e..00000000 --- a/foundational-api-samples/hello-world/svelte/src/components/VideoCapture.svelte +++ /dev/null @@ -1,119 +0,0 @@ - - -
    -
    - Results:
    -
    {resultText}
    -
    - - diff --git a/foundational-api-samples/hello-world/svelte/src/dynamsoft.config.ts b/foundational-api-samples/hello-world/svelte/src/dynamsoft.config.ts deleted file mode 100644 index 475abef1..00000000 --- a/foundational-api-samples/hello-world/svelte/src/dynamsoft.config.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* /src/dynamsoft.config.ts */ -import { CoreModule, LicenseManager } from "dynamsoft-barcode-reader-bundle"; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths.rootDirectory = "https://cdn.jsdelivr.net/npm/"; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", { - executeNow: true, -}); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.4000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(); diff --git a/foundational-api-samples/hello-world/svelte/src/main.ts b/foundational-api-samples/hello-world/svelte/src/main.ts deleted file mode 100644 index 8c4eaed9..00000000 --- a/foundational-api-samples/hello-world/svelte/src/main.ts +++ /dev/null @@ -1,7 +0,0 @@ -import App from "./App.svelte"; - -const app = new App({ - target: document.getElementById("app")!, -}); - -export default app; diff --git a/foundational-api-samples/hello-world/svelte/src/vite-env.d.ts b/foundational-api-samples/hello-world/svelte/src/vite-env.d.ts deleted file mode 100644 index 4078e747..00000000 --- a/foundational-api-samples/hello-world/svelte/src/vite-env.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -/// -/// diff --git a/foundational-api-samples/hello-world/svelte/svelte.config.js b/foundational-api-samples/hello-world/svelte/svelte.config.js deleted file mode 100644 index b0683fd2..00000000 --- a/foundational-api-samples/hello-world/svelte/svelte.config.js +++ /dev/null @@ -1,7 +0,0 @@ -import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' - -export default { - // Consult https://svelte.dev/docs#compile-time-svelte-preprocess - // for more information about preprocessors - preprocess: vitePreprocess(), -} diff --git a/foundational-api-samples/hello-world/svelte/tsconfig.json b/foundational-api-samples/hello-world/svelte/tsconfig.json deleted file mode 100644 index 5fb548f2..00000000 --- a/foundational-api-samples/hello-world/svelte/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "@tsconfig/svelte/tsconfig.json", - "compilerOptions": { - "target": "ESNext", - "useDefineForClassFields": true, - "module": "ESNext", - "resolveJsonModule": true, - /** - * Typecheck JS in `.svelte` and `.js` files by default. - * Disable checkJs if you'd like to use dynamic types in JS. - * Note that setting allowJs false does not prevent the use - * of JS in `.svelte` files. - */ - "allowJs": true, - "checkJs": true, - "isolatedModules": true - }, - "include": ["src/**/*.ts", "src/**/*.js", "src/**/*.svelte"], - "references": [{ "path": "./tsconfig.node.json" }] -} diff --git a/foundational-api-samples/hello-world/svelte/tsconfig.node.json b/foundational-api-samples/hello-world/svelte/tsconfig.node.json deleted file mode 100644 index d02c37df..00000000 --- a/foundational-api-samples/hello-world/svelte/tsconfig.node.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "skipLibCheck": true, - "module": "ESNext", - "moduleResolution": "bundler", - "strict": true - }, - "include": ["vite.config.ts"] -} diff --git a/foundational-api-samples/hello-world/svelte/vite.config.ts b/foundational-api-samples/hello-world/svelte/vite.config.ts deleted file mode 100644 index 2aeffabd..00000000 --- a/foundational-api-samples/hello-world/svelte/vite.config.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { defineConfig } from 'vite' -import { svelte } from '@sveltejs/vite-plugin-svelte' - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [svelte()], - base: "./" -}) diff --git a/foundational-api-samples/hello-world/vue/.gitignore b/foundational-api-samples/hello-world/vue/.gitignore deleted file mode 100644 index aa2cb9ff..00000000 --- a/foundational-api-samples/hello-world/vue/.gitignore +++ /dev/null @@ -1,29 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* -.npmrc - -node_modules -.DS_Store -dist -dist-ssr -coverage -*.local - -/cypress/videos/ -/cypress/screenshots/ - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/foundational-api-samples/hello-world/vue/README.md b/foundational-api-samples/hello-world/vue/README.md deleted file mode 100644 index 956a5aeb..00000000 --- a/foundational-api-samples/hello-world/vue/README.md +++ /dev/null @@ -1,379 +0,0 @@ -# Hello World Sample for Vue3 - -[Vue 3](https://v3.vuejs.org/) is version 3 of Vue which is a progressive framework for building user interfaces. Check out the following guide on how to implement [Dynamsoft Barcode Reader JavaScript SDK](https://www.dynamsoft.com/barcode-reader/sdk-javascript/) (hereafter called "the library") into a Vue 3 application. Note that in this sample, `TypeScript` is used. - -In this guide, we will be using [`dynamsoft-barcode-reader-bundle 11.2.4000](https://www.npmjs.com/package/dynamsoft-barcode-reader-bundle/v/11.2.4000). - -> Note: -> -> If you’re looking to integrate DBR-JS into a framework that we don't yet have a sample, don't worry! We have a [comprehensive guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/use-in-framework.html) that provides detailed instruction and best practices for a seamless integration into any frameworks! -> -> Additionally, we're here to help! Please don't hesitate to [contact us](#Support) for any support or questions you might have. - -## Official Sample - -* Hello World in Vue 3 - Source Code - -## Preparation - -Make sure you have [node](https://nodejs.org/) installed. `node 16.20.1` and `vue 3.3.4` are used in the example below. - -## Quick Start - -```cmd -npm install -npm run dev -``` -Then open http://localhost:5173/ to view the sample app. - -## Creating the sample project - -In this section, we will be creating a Vue application utilizing the Dynamsoft Barcode Reader bundle sdk. - -We'll be exploring how you could create a page that not only enables barcode scanning via a webcam or a built-in camera, but also decode barcodes from local images. - -By the end of this guide, you'll have a good understanding of the SDK and be ready to discover more ways to use it! - -### Create a Bootstrapped Raw Vue Application - -```cmd -npm create vue@3 -``` - -On installation, you will be prompted to configure your project.\ -You can customize these options according to your preferences.\ -Below is the configuration used for this sample. - -``` -√ Project name: ... vue-project -√ Add TypeScript? ... Yes -√ Add JSX Support? ... No -√ Add Vue Router for Single Page Application development? ... No -√ Add Pinia for state management? ... No -√ Add Vitest for Unit Testing? ... No -√ Add an End-to-End Testing Solution? » No -√ Add ESLint for code quality? ... No -√ Add Vue DevTools 7 extension for debugging? (experimental) ... No -``` - -### **CD** to the root directory of the application and install necessary libraries - -```cmd -cd vue-project -npm install dynamsoft-barcode-reader-bundle@11.2.4000 -E -``` - -## Start to implement - -### Add file "dynamsoft.config.ts" under "/src/" to configure libraries - -```typescript -/* /src/dynamsoft.config.ts */ -import { CoreModule } from "dynamsoft-core"; -import { LicenseManager } from "dynamsoft-license"; -import "dynamsoft-barcode-reader"; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths.rootDirectory = "https://cdn.jsdelivr.net/npm/"; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", { - executeNow: true, -}); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.4000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload .wasm file for reading barcodes. It will save time on the initial decoding by skipping the resource loading. -CoreModule.loadWasm(); -``` - -> Note: -> -> * `initLicense()` specify a license key to use the library. You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=sample&product=dbr&package=js to get your own trial license good for 30 days. -> * `engineResourcePaths` tells the library where to get the necessary resources at runtime. - -### Create and edit the `VideoCapture` component - -* Create `VideoCapture.vue` under `/components/`. The VideoCapture component helps decode barcodes via camera. - -* In `VideoCapture.vue`, add the following code for initializing and destroying some instances. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```vue - - - - -``` -> Note: -> -> If you're looking to customize the UI, the UI customization feature are provided by the auxiliary SDK "Dynamsoft Camera Enhancer". For more details, refer to our [User Guide](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html#customizing-the-ui) - -### Create and edit the `ImageCapture` component - -* Create `ImageCapture.vue` under `/components/`. The `ImageCapture` component helps decode barcodes in an image. - -* In `ImageCapture.vue`, add code for initializing and destroying `CaptureVisionRouter` instance. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```vue - - - - -``` - -### Add the `VideoCapture` and `ImageCapture` component to `App.vue` - -* On `/src/App.vue`, we will edit the component so that it offers buttons to switch components between `VideoCapture` and `ImageCapture`. - -* Add following code to `App.vue`. For our stylesheet (CSS) specification, please refer to our [source code](#Official-Sample). - -```vue - - - - -``` -> Note: -> -> With Vue's `defineAsyncComponent` we can improve the initial load speed and performance of the application. -> -> `defineAsyncComponent` allows us to load components such as `VideoCapture` and `ImageCapture` asynchronously, which means that the component's code is only loaded when it's needed. This will result in a faster initial load times. -> -> However, if you're implementing server-side rendering with Vue, using `defineAsyncComponent` might cause issues while loading `VideoCapture` and `ImageCapture` as we use the window/document object. Make sure to load these components on the client-side! -> -> Read more: https://vuejs.org/guide/components/async.html - -* Try running the project. - -```cmd -npm run dev -``` -If you followed all the steps correctly, you will have a working page that turns one of the cameras hooked to or built in your computer or mobile device into a barcode scanner. Also, if you want to decode a local image, just click the `Decode Image` button and select the image you want to decode. Once barcodes are found, the results will show in a dialog. - -### Comment out the following code in `assets/main.css`. (optional) - -```css -@media (min-width: 1024px) { - /* body { - display: flex; - place-items: center; - } - - #app { - display: grid; - grid-template-columns: 1fr 1fr; - padding: 0 2rem; - } */ -} -``` - -## Project Setup - -```sh -npm install -``` - -### Compile and Hot-Reload for Development - -```sh -npm run dev -``` - -### Type-Check, Compile and Minify for Production - -```sh -npm run build -``` - -## Support - -If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). diff --git a/foundational-api-samples/hello-world/vue/env.d.ts b/foundational-api-samples/hello-world/vue/env.d.ts deleted file mode 100644 index 11f02fe2..00000000 --- a/foundational-api-samples/hello-world/vue/env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/foundational-api-samples/hello-world/vue/index.html b/foundational-api-samples/hello-world/vue/index.html deleted file mode 100644 index 1072379a..00000000 --- a/foundational-api-samples/hello-world/vue/index.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - Hello World for Vue 3 - Dynamsoft Barcode Reader Sample - - -
    - - - diff --git a/foundational-api-samples/hello-world/vue/package.json b/foundational-api-samples/hello-world/vue/package.json deleted file mode 100644 index 22f56bbb..00000000 --- a/foundational-api-samples/hello-world/vue/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "dbrjs-vue3-sample", - "version": "0.0.0", - "homepage": "./", - "private": true, - "scripts": { - "dev": "vite", - "build": "run-p type-check build-only", - "preview": "vite preview", - "build-only": "vite build", - "type-check": "vue-tsc --noEmit" - }, - "dependencies": { - "dynamsoft-barcode-reader-bundle": "11.2.4000", - "vue": "^3.2.45" - }, - "devDependencies": { - "@types/node": "^18.11.12", - "@vitejs/plugin-vue": "^4.0.0", - "@vue/tsconfig": "^0.1.3", - "npm-run-all": "^4.1.5", - "typescript": "~4.7.4", - "vite": "^4.0.0", - "vue-tsc": "^1.0.12" - } -} diff --git a/foundational-api-samples/hello-world/vue/public/favicon.ico b/foundational-api-samples/hello-world/vue/public/favicon.ico deleted file mode 100644 index df36fcfb72584e00488330b560ebcf34a41c64c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S diff --git a/foundational-api-samples/hello-world/vue/src/App.vue b/foundational-api-samples/hello-world/vue/src/App.vue deleted file mode 100644 index d51c0d57..00000000 --- a/foundational-api-samples/hello-world/vue/src/App.vue +++ /dev/null @@ -1,72 +0,0 @@ - - - - - diff --git a/foundational-api-samples/hello-world/vue/src/assets/logo.svg b/foundational-api-samples/hello-world/vue/src/assets/logo.svg deleted file mode 100644 index bc826fed..00000000 --- a/foundational-api-samples/hello-world/vue/src/assets/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/vue/src/assets/main.css b/foundational-api-samples/hello-world/vue/src/assets/main.css deleted file mode 100644 index 77f7db1b..00000000 --- a/foundational-api-samples/hello-world/vue/src/assets/main.css +++ /dev/null @@ -1,6 +0,0 @@ -* { - margin: 0; - padding: 0; - box-sizing: border-box; - text-align: center; -} diff --git a/foundational-api-samples/hello-world/vue/src/components/ImageCapture.vue b/foundational-api-samples/hello-world/vue/src/components/ImageCapture.vue deleted file mode 100644 index f0b9fe23..00000000 --- a/foundational-api-samples/hello-world/vue/src/components/ImageCapture.vue +++ /dev/null @@ -1,87 +0,0 @@ - - - - - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/vue/src/components/VideoCapture.vue b/foundational-api-samples/hello-world/vue/src/components/VideoCapture.vue deleted file mode 100644 index e29bc007..00000000 --- a/foundational-api-samples/hello-world/vue/src/components/VideoCapture.vue +++ /dev/null @@ -1,106 +0,0 @@ - - - - - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/vue/src/dynamsoft.config.ts b/foundational-api-samples/hello-world/vue/src/dynamsoft.config.ts deleted file mode 100644 index 744bd1ed..00000000 --- a/foundational-api-samples/hello-world/vue/src/dynamsoft.config.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { CoreModule, LicenseManager } from "dynamsoft-barcode-reader-bundle"; - -// Configures the paths where the .wasm files and other necessary resources for modules are located. -CoreModule.engineResourcePaths.rootDirectory = "https://cdn.jsdelivr.net/npm/"; - -/** LICENSE ALERT - README - * To use the library, you need to first specify a license key using the API "initLicense()" as shown below. - */ - -LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", { - executeNow: true, -}); - -/** - * You can visit https://www.dynamsoft.com/customer/license/trialLicense?utm_source=samples&product=dbr&package=js to get your own trial license good for 30 days. - * Note that if you downloaded this sample from Dynamsoft while logged in, the above license key may already be your own 30-day trial license. - * For more information, see https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html?ver=11.2.4000&cVer=true#specify-the-license&utm_source=samples or contact support@dynamsoft.com. - * LICENSE ALERT - THE END - */ - -// Optional. Preload "BarcodeReader" module for reading barcodes. It will save time on the initial decoding by skipping the module loading. -CoreModule.loadWasm(); diff --git a/foundational-api-samples/hello-world/vue/src/main.ts b/foundational-api-samples/hello-world/vue/src/main.ts deleted file mode 100644 index 90e6400b..00000000 --- a/foundational-api-samples/hello-world/vue/src/main.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { createApp } from 'vue' -import App from './App.vue' - -import './assets/main.css' - -createApp(App).mount('#app') diff --git a/foundational-api-samples/hello-world/vue/tsconfig.config.json b/foundational-api-samples/hello-world/vue/tsconfig.config.json deleted file mode 100644 index bbaa4d88..00000000 --- a/foundational-api-samples/hello-world/vue/tsconfig.config.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@vue/tsconfig/tsconfig.node.json", - "include": ["vite.config.*", "vitest.config.*", "cypress.config.*", "playwright.config.*"], - "compilerOptions": { - "ignoreDeprecations": "5.0", - "composite": true, - "types": ["node"] - } -} diff --git a/foundational-api-samples/hello-world/vue/tsconfig.json b/foundational-api-samples/hello-world/vue/tsconfig.json deleted file mode 100644 index d0556275..00000000 --- a/foundational-api-samples/hello-world/vue/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "@vue/tsconfig/tsconfig.web.json", - "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], - "allowJs": true, - "compilerOptions": { - "baseUrl": ".", - "ignoreDeprecations": "5.0", - "paths": { - "@/*": ["./src/*"] - } - }, - "references": [ - { - "path": "./tsconfig.config.json" - } - ] -} diff --git a/foundational-api-samples/hello-world/vue/vite.config.ts b/foundational-api-samples/hello-world/vue/vite.config.ts deleted file mode 100644 index 7677e967..00000000 --- a/foundational-api-samples/hello-world/vue/vite.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { fileURLToPath, URL } from 'node:url' - -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [vue()], - resolve: { - alias: { - '@': fileURLToPath(new URL('./src', import.meta.url)) - }, - }, - base: "./" -}) diff --git a/foundational-api-samples/hello-world/webview/android/.gitignore b/foundational-api-samples/hello-world/webview/android/.gitignore deleted file mode 100644 index aa724b77..00000000 --- a/foundational-api-samples/hello-world/webview/android/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -*.iml -.gradle -/local.properties -/.idea/caches -/.idea/libraries -/.idea/modules.xml -/.idea/workspace.xml -/.idea/navEditor.xml -/.idea/assetWizardSettings.xml -.DS_Store -/build -/captures -.externalNativeBuild -.cxx -local.properties diff --git a/foundational-api-samples/hello-world/webview/android/README.md b/foundational-api-samples/hello-world/webview/android/README.md deleted file mode 100644 index 041ab8df..00000000 --- a/foundational-api-samples/hello-world/webview/android/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Hello-world for Android WebView - Dynamsoft Barcode Reader Sample - -This sample demonstrates how to use the [Dynamsoft Barcode Reader](https://www.dynamsoft.com/barcode-reader/overview/) JS Edition in Android. - -If you want to learn how to use the Android Edition SDK in javascript, you can check [Android WebView Barcode Scanning](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/v9.x/android/JavaScript/WebViewBarcodeScanning). - -> Note: -> -> This guide uses DBR JS version 9. An updated guide for DBR JS version 10 is in progress and will be coming soon! - -## Support - -If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/foundational-api-samples/hello-world/webview/android/app/.gitignore b/foundational-api-samples/hello-world/webview/android/app/.gitignore deleted file mode 100644 index 42afabfd..00000000 --- a/foundational-api-samples/hello-world/webview/android/app/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/foundational-api-samples/hello-world/webview/android/app/build.gradle b/foundational-api-samples/hello-world/webview/android/app/build.gradle deleted file mode 100644 index 33d838de..00000000 --- a/foundational-api-samples/hello-world/webview/android/app/build.gradle +++ /dev/null @@ -1,45 +0,0 @@ -plugins { - id 'com.android.application' - id 'org.jetbrains.kotlin.android' -} - -android { - namespace 'com.dynamsoft.dbrjswebview' - compileSdk 33 - - defaultConfig { - applicationId "com.dynamsoft.dbrjswebview" - minSdk 19 - targetSdk 33 - versionCode 1 - versionName "1.0" - - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - kotlinOptions { - jvmTarget = '1.8' - } -} - -dependencies { - - implementation 'androidx.core:core-ktx:1.7.0' - implementation 'androidx.appcompat:appcompat:1.4.1' - implementation 'com.google.android.material:material:1.5.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.3' - implementation 'androidx.webkit:webkit:1.4.0' - testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.3' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' -} \ No newline at end of file diff --git a/foundational-api-samples/hello-world/webview/android/app/proguard-rules.pro b/foundational-api-samples/hello-world/webview/android/app/proguard-rules.pro deleted file mode 100644 index 481bb434..00000000 --- a/foundational-api-samples/hello-world/webview/android/app/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/AndroidManifest.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index f557697e..00000000 --- a/foundational-api-samples/hello-world/webview/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html b/foundational-api-samples/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html deleted file mode 100644 index d6d7cc20..00000000 --- a/foundational-api-samples/hello-world/webview/android/app/src/main/assets/decodeBarcodeInVideo.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - Dynamsoft Barcode Reader Sample - Hello World (Decoding via Camera) - - - -

    Hello World (Decode via Camera)

    -
    - Results:
    -
    - - - - diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt b/foundational-api-samples/hello-world/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt deleted file mode 100644 index 8ecaf703..00000000 --- a/foundational-api-samples/hello-world/webview/android/app/src/main/java/com/dynamsoft/dbrjswebview/MainActivity.kt +++ /dev/null @@ -1,105 +0,0 @@ -package com.dynamsoft.dbrjswebview - -import android.Manifest -import android.annotation.SuppressLint -import android.content.pm.PackageManager -import android.net.Uri -import androidx.appcompat.app.AppCompatActivity -import android.os.Bundle -import android.webkit.* -import androidx.activity.result.contract.ActivityResultContracts -import androidx.annotation.RequiresApi -import androidx.core.content.ContextCompat -import androidx.webkit.WebViewAssetLoader -import androidx.webkit.WebViewClientCompat - -class MainActivity : AppCompatActivity() { - @SuppressLint("SetJavaScriptEnabled") - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) - - val myWebView: WebView = findViewById(R.id.webview) - myWebView.settings.javaScriptEnabled = true - myWebView.settings.mediaPlaybackRequiresUserGesture = false - myWebView.settings.domStorageEnabled = true - - myWebView.webViewClient = MyWebViewClient() - myWebView.webChromeClient = MyWebChromeClient() - - myWebView.loadUrl("https://appassets.androidplatform.net/assets/decodeBarcodeInVideo.html") - } - - // Warning: If you use online url, you don't need `LocalContentWebViewClient` - // Refer: https://developer.android.com/develop/ui/views/layout/webapps/load-local-content?hl=en - private inner class MyWebViewClient : WebViewClientCompat() { - - private val assetLoader = WebViewAssetLoader.Builder() - .addPathHandler("/assets/", WebViewAssetLoader.AssetsPathHandler(this@MainActivity)) - .build() - - @RequiresApi(21) - override fun shouldInterceptRequest( - view: WebView, - request: WebResourceRequest - ): WebResourceResponse? { - return assetLoader.shouldInterceptRequest(request.url) - } - - // to support API < 21 - @Deprecated("Deprecated in Java") - override fun shouldInterceptRequest( - view: WebView, - url: String - ): WebResourceResponse? { - return assetLoader.shouldInterceptRequest(Uri.parse(url)) - } - } - - var cameraPermissionReq: PermissionRequest? = null - private inner class MyWebChromeClient : WebChromeClient() { - @RequiresApi(21) - override fun onPermissionRequest(request: PermissionRequest) { - if(request.resources.contains(PermissionRequest.RESOURCE_VIDEO_CAPTURE)){ - // Refer: https://developer.android.com/training/permissions/requesting - if(ContextCompat.checkSelfPermission( - this@MainActivity, - Manifest.permission.CAMERA - ) == PackageManager.PERMISSION_GRANTED){ - // You can use the API that requires the permission. - request.grant(arrayOf(PermissionRequest.RESOURCE_VIDEO_CAPTURE)) - }else{ - // You can directly ask for the permission. - // The registered ActivityResultCallback gets the result of this request. - this@MainActivity.cameraPermissionReq = request - requestCameraPermissionLauncher.launch(Manifest.permission.CAMERA) - } - }else{ - request.deny() - } - } - } - - // Refer: https://developer.android.com/training/permissions/requesting - @RequiresApi(21) - val requestCameraPermissionLauncher = registerForActivityResult( - ActivityResultContracts.RequestPermission() - ) { isGranted: Boolean -> - // Refer: https://www.dynamsoft.com/codepool/use-barcode-scanner-in-android-webview.html#set-up-webview - this@MainActivity.runOnUiThread { - if (isGranted) { - // Permission is granted. Continue the action or workflow in your - // app. - cameraPermissionReq?.grant(arrayOf(PermissionRequest.RESOURCE_VIDEO_CAPTURE)) - } else { - // Explain to the user that the feature is unavailable because the - // feature requires a permission that the user has denied. At the - // same time, respect the user's decision. Don't link to system - // settings in an effort to convince the user to change their - // decision. - cameraPermissionReq?.deny() - } - cameraPermissionReq = null - } - } -} \ No newline at end of file diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml deleted file mode 100644 index 2b068d11..00000000 --- a/foundational-api-samples/hello-world/webview/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/drawable/ic_launcher_background.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/drawable/ic_launcher_background.xml deleted file mode 100644 index 07d5da9c..00000000 --- a/foundational-api-samples/hello-world/webview/android/app/src/main/res/drawable/ic_launcher_background.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/layout/activity_main.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/layout/activity_main.xml deleted file mode 100644 index 7b58479b..00000000 --- a/foundational-api-samples/hello-world/webview/android/app/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index eca70cfe..00000000 --- a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index eca70cfe..00000000 --- a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml deleted file mode 100644 index 6f3b755b..00000000 --- a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp deleted file mode 100644 index c209e78ecd372343283f4157dcfd918ec5165bb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1404 zcmV-?1%vuhNk&F=1pok7MM6+kP&il$0000G0000-002h-06|PpNX!5L00Dqw+t%{r zzW2vH!KF=w&cMnnN@{whkTw+#mAh0SV?YL=)3MimFYCWp#fpdtz~8$hD5VPuQgtcN zXl<@<#Cme5f5yr2h%@8TWh?)bSK`O z^Z@d={gn7J{iyxL_y_%J|L>ep{dUxUP8a{byupH&!UNR*OutO~0{*T4q5R6@ApLF! z5{w?Z150gC7#>(VHFJZ-^6O@PYp{t!jH(_Z*nzTK4 zkc{fLE4Q3|mA2`CWQ3{8;gxGizgM!zccbdQoOLZc8hThi-IhN90RFT|zlxh3Ty&VG z?Fe{#9RrRnxzsu|Lg2ddugg7k%>0JeD+{XZ7>Z~{=|M+sh1MF7~ zz>To~`~LVQe1nNoR-gEzkpe{Ak^7{{ZBk2i_<+`Bq<^GB!RYG+z)h;Y3+<{zlMUYd zrd*W4w&jZ0%kBuDZ1EW&KLpyR7r2=}fF2%0VwHM4pUs}ZI2egi#DRMYZPek*^H9YK zay4Iy3WXFG(F14xYsoDA|KXgGc5%2DhmQ1gFCkrgHBm!lXG8I5h*uf{rn48Z!_@ z4Bk6TJAB2CKYqPjiX&mWoW>OPFGd$wqroa($ne7EUK;#3VYkXaew%Kh^3OrMhtjYN?XEoY`tRPQsAkH-DSL^QqyN0>^ zmC>{#F14jz4GeW{pJoRpLFa_*GI{?T93^rX7SPQgT@LbLqpNA}<@2wH;q493)G=1Y z#-sCiRNX~qf3KgiFzB3I>4Z%AfS(3$`-aMIBU+6?gbgDb!)L~A)je+;fR0jWLL-Fu z4)P{c7{B4Hp91&%??2$v9iRSFnuckHUm}or9seH6 z>%NbT+5*@L5(I9j@06@(!{ZI?U0=pKn8uwIg&L{JV14+8s2hnvbRrU|hZCd}IJu7*;;ECgO%8_*W Kmw_-CKmY()leWbG diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp deleted file mode 100644 index b2dfe3d1ba5cf3ee31b3ecc1ced89044a1f3b7a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2898 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 diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp deleted file mode 100644 index 4f0f1d64e58ba64d180ce43ee13bf9a17835fbca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 982 zcmV;{11bDcNk&G_0{{S5MM6+kP&il$0000G0000l001ul06|PpNU8t;00Dqo+t#w^ z^1csucXz7-Qrhzl9HuHB%l>&>1tG2^vb*E&k^T3$FG1eQZ51g$uv4V+kI`0<^1Z@N zk?Jjh$olyC%l>)Xq;7!>{iBj&BjJ`P&$fsCfpve_epJOBkTF?nu-B7D!hO=2ZR}

    C%4 zc_9eOXvPbC4kzU8YowIA8cW~Uv|eB&yYwAObSwL2vY~UYI7NXPvf3b+c^?wcs~_t{ ze_m66-0)^{JdOMKPwjpQ@Sna!*?$wTZ~su*tNv7o!gXT!GRgivP}ec?5>l1!7<(rT zds|8x(qGc673zrvYIz;J23FG{9nHMnAuP}NpAED^laz3mAN1sy+NXK)!6v1FxQ;lh zOBLA>$~P3r4b*NcqR;y6pwyhZ3_PiDb|%n1gGjl3ZU}ujInlP{eks-#oA6>rh&g+!f`hv#_%JrgYPu z(U^&XLW^QX7F9Z*SRPpQl{B%x)_AMp^}_v~?j7 zapvHMKxSf*Mtyx8I}-<*UGn3)oHd(nn=)BZ`d$lDBwq_GL($_TPaS{UeevT(AJ`p0 z9%+hQb6z)U9qjbuXjg|dExCLjpS8$VKQ55VsIC%@{N5t{NsW)=hNGI`J=x97_kbz@ E0Of=7!TQj4N+cqN`nQhxvX7dAV-`K|Ub$-q+H-5I?Tx0g9jWxd@A|?POE8`3b8fO$T))xP* z(X?&brZw({`)WU&rdAs1iTa0x6F@PIxJ&&L|dpySV!ID|iUhjCcKz(@mE z!x@~W#3H<)4Ae(4eQJRk`Iz3<1)6^m)0b_4_TRZ+cz#eD3f8V;2r-1fE!F}W zEi0MEkTTx}8i1{`l_6vo0(Vuh0HD$I4SjZ=?^?k82R51bC)2D_{y8mi_?X^=U?2|F{Vr7s!k(AZC$O#ZMyavHhlQ7 zUR~QXuH~#o#>(b$u4?s~HLF*3IcF7023AlwAYudn0FV~|odGH^05AYPEfR)8p`i{n zwg3zPVp{+wOsxKc>)(pMupKF!Y2HoUqQ3|Yu|8lwR=?5zZuhG6J?H`bSNk_wPoM{u zSL{c@pY7+c2kck>`^q1^^gR0QB7Y?KUD{vz-uVX~;V-rW)PDcI)$_UjgVV?S?=oLR zf4}zz{#*R_{LkiJ#0RdQLNC^2Vp%JPEUvG9ra2BVZ92(p9h7Ka@!yf9(lj#}>+|u* z;^_?KWdzkM`6gqPo9;;r6&JEa)}R3X{(CWv?NvgLeOTq$cZXqf7|sPImi-7cS8DCN zGf;DVt3Am`>hH3{4-WzH43Ftx)SofNe^-#|0HdCo<+8Qs!}TZP{HH8~z5n`ExcHuT zDL1m&|DVpIy=xsLO>8k92HcmfSKhflQ0H~9=^-{#!I1g(;+44xw~=* zxvNz35vfsQE)@)Zsp*6_GjYD};Squ83<_?^SbALb{a`j<0Gn%6JY!zhp=Fg}Ga2|8 z52e1WU%^L1}15Ex0fF$e@eCT(()_P zvV?CA%#Sy08_U6VPt4EtmVQraWJX` zh=N|WQ>LgrvF~R&qOfB$!%D3cGv?;Xh_z$z7k&s4N)$WYf*k=|*jCEkO19{h_(%W4 zPuOqbCw`SeAX*R}UUsbVsgtuG?xs(#Ikx9`JZoQFz0n*7ZG@Fv@kZk`gzO$HoA9kN z8U5{-yY zvV{`&WKU2$mZeoBmiJrEdzUZAv1sRxpePdg1)F*X^Y)zp^Y*R;;z~vOv-z&)&G)JQ{m!C9cmziu1^nHA z`#`0c>@PnQ9CJKgC5NjJD8HM3|KC(g5nnCq$n0Gsu_DXk36@ql%npEye|?%RmG)

    FJ$wK}0tWNB{uH;AM~i diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp deleted file mode 100644 index 948a3070fe34c611c42c0d3ad3013a0dce358be0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1900 zcmV-y2b1_xNk&Fw2LJ$9MM6+kP&il$0000G0001A003VA06|PpNH75a00DqwTbm-~ zullQTcXxO9ki!OCRx^i?oR|n!<8G0=kI^!JSjFi-LL*`V;ET0H2IXfU0*i>o6o6Gy zRq6Ap5(_{XLdXcL-MzlN`ugSdZY_`jXhcENAu)N_0?GhF))9R;E`!bo9p?g?SRgw_ zEXHhFG$0{qYOqhdX<(wE4N@es3VIo$%il%6xP9gjiBri+2pI6aY4 zJbgh-Ud|V%3O!IcHKQx1FQH(_*TK;1>FQWbt^$K1zNn^cczkBs=QHCYZ8b&l!UV{K z{L0$KCf_&KR^}&2Fe|L&?1I7~pBENnCtCuH3sjcx6$c zwqkNkru);ie``q+_QI;IYLD9OV0ZxkuyBz|5<$1BH|vtey$> z5oto4=l-R-Aaq`Dk0}o9N0VrkqW_#;!u{!bJLDq%0092{Ghe=F;(kn} z+sQ@1=UlX30+2nWjkL$B^b!H2^QYO@iFc0{(-~yXj2TWz?VG{v`Jg zg}WyYnwGgn>{HFaG7E~pt=)sOO}*yd(UU-D(E&x{xKEl6OcU?pl)K%#U$dn1mDF19 zSw@l8G!GNFB3c3VVK0?uyqN&utT-D5%NM4g-3@Sii9tSXKtwce~uF zS&Jn746EW^wV~8zdQ1XC28~kXu8+Yo9p!<8h&(Q({J*4DBglPdpe4M_mD8AguZFn~ ztiuO~{6Bx?SfO~_ZV(GIboeR9~hAym{{fV|VM=77MxDrbW6`ujX z<3HF(>Zr;#*uCvC*bpoSr~C$h?_%nXps@A)=l_;({Fo#6Y1+Zv`!T5HB+)#^-Ud_; zBwftPN=d8Vx)*O1Mj+0oO=mZ+NVH*ptNDC-&zZ7Hwho6UQ#l-yNvc0Cm+2$$6YUk2D2t#vdZX-u3>-Be1u9gtTBiMB^xwWQ_rgvGpZ6(C@e23c!^K=>ai-Rqu zhqT`ZQof;9Bu!AD(i^PCbYV%yha9zuoKMp`U^z;3!+&d@Hud&_iy!O-$b9ZLcSRh? z)R|826w}TU!J#X6P%@Zh=La$I6zXa#h!B;{qfug}O%z@K{EZECu6zl)7CiNi%xti0 zB{OKfAj83~iJvmpTU|&q1^?^cIMn2RQ?jeSB95l}{DrEPTW{_gmU_pqTc)h@4T>~& zluq3)GM=xa(#^VU5}@FNqpc$?#SbVsX!~RH*5p0p@w z;~v{QMX0^bFT1!cXGM8K9FP+=9~-d~#TK#ZE{4umGT=;dfvWi?rYj;^l_Zxywze`W z^Cr{55U@*BalS}K%Czii_80e0#0#Zkhlij4-~I@}`-JFJ7$5{>LnoJSs??J8kWVl6|8A}RCGAu9^rAsfCE=2}tHwl93t0C?#+jMpvr7O3`2=tr{Hg$=HlnjVG^ewm|Js0J*kfPa6*GhtB>`fN!m#9J(sU!?(OSfzY*zS(FJ<-Vb zfAIg+`U)YaXv#sY(c--|X zEB+TVyZ%Ie4L$gi#Fc++`h6%vzsS$pjz9aLt+ZL(g;n$Dzy5=m=_TV(3H8^C{r0xd zp#a%}ht55dOq?yhwYPrtp-m1xXp;4X;)NhxxUpgP%XTLmO zcjaFva^}dP3$&sfFTIR_jC=2pHh9kpI@2(6V*GQo7Ws)`j)hd+tr@P~gR*2gO@+1? zG<`_tB+LJuF|SZ9tIec;h%}}6WClT`L>HSW?E{Hp1h^+mlbf_$9zA>!ug>NALJsO{ mU%z=YwVD?}XMya)Bp;vlyE5&E_6!fzx9pwrdz474!~g(M6R?N? diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/foundational-api-samples/hello-world/webview/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp deleted file mode 100644 index 1b9a6956b3acdc11f40ce2bb3f6efbd845cc243f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3918 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�(p-{x$&=IACIfoAR!za)F-^da-t3#0Dycnp zwO~NVXwXCl;jE<}>%@xz|=8fIJAB?>+E{7)|4l${4ngA3G|=r z2Dyv;VVWSgZx9Wj>qUjleGl3Ei9K4>h!(lPS%8VOG>Xu0%6VDz^O=bjJmuP7>DeUv zrbI}MlHB^^d?{zv6d=@_ZD2lg1&G7UjnVN{1}9WkaM3H~btX0GtSzB+tZ^qRgWo4m z!GmimlG$=wgXCnr6j@m<1gAL46#T~5Bnm=2{^@>|t&`9mkEPddj zAvG~@Tv~TAm2i%VW}R-g(Z0)z-Y|szHr@rk>4MAyG*Ma*7Yh#H7(!-5>DZ@8r;_dx z{prSe<>~099F8vsYd2xff7uAS%7{S)f(|@me3t2$iy&NEc7OUEchp@9A|X;;IA>8!oX+y(BKJ$EzV* znR$z;!L$s7uy@{OT~nG#B!NRraT8(X##Ho!0r_o@gg0CA-9H^;-uE&?$2$nHv_00o z%cbuUc-tCx$Uh&EZ4Nf4Zgqv)Y6>usG3>GeQnxx_Z6+PcbX-+ysbt1hQ`K1LDpOE? zrAhIZhSN9yVIAOa22gn577tbc&i3|3V8NWy&!tw##`}9*x}gtI^h1DzZRA>UuaJG) zaZ7j)dq!O}{?#8Y7~7i6fHh4{`pL?>-18|p!S75Y#^DM>-S3)vuZG+Q7l@ek zQP~#cBpWgg#mApc_sPYjpw8odQuRokmTkzcNl`^CcKB7e&;zViV;{Y{o^Y$%7i0m# z62%#1Lq!RC?}lK>%mp}T!3Xv;L*0v*>USLm``N%>w>@fwC+#T&Tx2bN4w(20JB}oU zuSa6v^kXi0xPs?pbaOHnyiqq6By1EZY9OZ^^QA>{q-Hsd&m`pbQ%8121aWG-F5xf zlZ%;B{;C>X19|`^_?dVyCq>n+41w7|!tUS!{9rHlbhX=SZO5CQ^;!Du_E7*`GiR^Q w)2!4MKjfSAeNo!9>IaV6aUZ*?W>} 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

    UmY2RIYtNPVDpE$%vda+HD#3m z&VuXJ{BK&Qe+rBa7eq}Q(bq|tn(RrJAk|ztj2(i{d>nmQnM?;HF2k&9sA6up5tmjl z7lySlzMbifH17-m-Lwa_F&e7nOH?ESi3#ckR3tsM+jsck3`oG!uMS}|eAwVXv>}qxwq?QY%QJ0}r@^;fhuUA9W z*BVl>TGo&N004@xSiwDUXUvp51sVmqO3m)=B55aPwf@0=e}cN+$-BdKxY`YrT_4)0 z_d10#i44Q*rFr8MC>*)v$EJvz``(pb{e&*6k+b zsMz%($|1+8hn8c2?P(l@;Rb&CsZeYoCI3?2!LqjbwPXW3z4G$Qfj=cT5Yb%vY0(AX oeb?AaKtwrnc|$|zzw9vfvn^aJJ!zd)XFXqqy0000001=f@-~a#s diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/values-night/themes.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/values-night/themes.xml deleted file mode 100644 index 77300351..00000000 --- a/foundational-api-samples/hello-world/webview/android/app/src/main/res/values-night/themes.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/values/colors.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/values/colors.xml deleted file mode 100644 index f8c6127d..00000000 --- a/foundational-api-samples/hello-world/webview/android/app/src/main/res/values/colors.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - #FFBB86FC - #FF6200EE - #FF3700B3 - #FF03DAC5 - #FF018786 - #FF000000 - #FFFFFFFF - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/values/strings.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/values/strings.xml deleted file mode 100644 index 5d77158e..00000000 --- a/foundational-api-samples/hello-world/webview/android/app/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - Dynamsoft Barcode - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/values/themes.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/values/themes.xml deleted file mode 100644 index e2ed77aa..00000000 --- a/foundational-api-samples/hello-world/webview/android/app/src/main/res/values/themes.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/xml/backup_rules.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/xml/backup_rules.xml deleted file mode 100644 index fa0f996d..00000000 --- a/foundational-api-samples/hello-world/webview/android/app/src/main/res/xml/backup_rules.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/webview/android/app/src/main/res/xml/data_extraction_rules.xml b/foundational-api-samples/hello-world/webview/android/app/src/main/res/xml/data_extraction_rules.xml deleted file mode 100644 index 9ee9997b..00000000 --- a/foundational-api-samples/hello-world/webview/android/app/src/main/res/xml/data_extraction_rules.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/foundational-api-samples/hello-world/webview/android/build.gradle b/foundational-api-samples/hello-world/webview/android/build.gradle deleted file mode 100644 index ab2b874f..00000000 --- a/foundational-api-samples/hello-world/webview/android/build.gradle +++ /dev/null @@ -1,6 +0,0 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. -plugins { - id 'com.android.application' version '7.4.2' apply false - id 'com.android.library' version '7.4.2' apply false - id 'org.jetbrains.kotlin.android' version '1.8.0' apply false -} \ No newline at end of file diff --git a/foundational-api-samples/hello-world/webview/android/gradle.properties b/foundational-api-samples/hello-world/webview/android/gradle.properties deleted file mode 100644 index 3c5031eb..00000000 --- a/foundational-api-samples/hello-world/webview/android/gradle.properties +++ /dev/null @@ -1,23 +0,0 @@ -# Project-wide Gradle settings. -# IDE (e.g. Android Studio) users: -# Gradle settings configured through the IDE *will override* -# any settings specified in this file. -# For more details on how to configure your build environment visit -# http://www.gradle.org/docs/current/userguide/build_environment.html -# Specifies the JVM arguments used for the daemon process. -# The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 -# When configured, Gradle will run in incubating parallel mode. -# This option should only be used with decoupled projects. More details, visit -# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true -# AndroidX package structure to make it clearer which packages are bundled with the -# Android operating system, and which are packaged with your app's APK -# https://developer.android.com/topic/libraries/support-library/androidx-rn -android.useAndroidX=true -# Kotlin code style for this project: "official" or "obsolete": -kotlin.code.style=official -# Enables namespacing of each library's R class so that its R class includes only the -# resources declared in the library itself and none from the library's dependencies, -# thereby reducing the size of the R class for that library -android.nonTransitiveRClass=true \ No newline at end of file diff --git a/foundational-api-samples/hello-world/webview/android/gradle/wrapper/gradle-wrapper.jar b/foundational-api-samples/hello-world/webview/android/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index e708b1c023ec8b20f512888fe07c5bd3ff77bb8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59203 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

    K7UpUK$>l@ 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 E2O(~oYXATM diff --git a/foundational-api-samples/hello-world/webview/android/gradle/wrapper/gradle-wrapper.properties b/foundational-api-samples/hello-world/webview/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index dea1f353..00000000 --- a/foundational-api-samples/hello-world/webview/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Thu Apr 13 17:46:19 CST 2023 -distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip -distributionPath=wrapper/dists -zipStorePath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME diff --git a/foundational-api-samples/hello-world/webview/android/gradlew b/foundational-api-samples/hello-world/webview/android/gradlew deleted file mode 100644 index 4f906e0c..00000000 --- a/foundational-api-samples/hello-world/webview/android/gradlew +++ /dev/null @@ -1,185 +0,0 @@ -#!/usr/bin/env sh - -# -# Copyright 2015 the original author or authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn () { - echo "$*" -} - -die () { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=`expr $i + 1` - done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -exec "$JAVACMD" "$@" diff --git a/foundational-api-samples/hello-world/webview/android/gradlew.bat b/foundational-api-samples/hello-world/webview/android/gradlew.bat deleted file mode 100644 index 107acd32..00000000 --- a/foundational-api-samples/hello-world/webview/android/gradlew.bat +++ /dev/null @@ -1,89 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/foundational-api-samples/hello-world/webview/android/settings.gradle b/foundational-api-samples/hello-world/webview/android/settings.gradle deleted file mode 100644 index e5f9d85d..00000000 --- a/foundational-api-samples/hello-world/webview/android/settings.gradle +++ /dev/null @@ -1,16 +0,0 @@ -pluginManagement { - repositories { - google() - mavenCentral() - gradlePluginPortal() - } -} -dependencyResolutionManagement { - repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) - repositories { - google() - mavenCentral() - } -} -rootProject.name = "Dynamsoft Barcode" -include ':app' diff --git a/foundational-api-samples/hello-world/webview/ios/.gitignore b/foundational-api-samples/hello-world/webview/ios/.gitignore deleted file mode 100644 index ba1ff083..00000000 --- a/foundational-api-samples/hello-world/webview/ios/.gitignore +++ /dev/null @@ -1,90 +0,0 @@ -# Xcode -# -# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore - -## User settings -xcuserdata/ - -## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) -*.xcscmblueprint -*.xccheckout - -## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) -build/ -DerivedData/ -*.moved-aside -*.pbxuser -!default.pbxuser -*.mode1v3 -!default.mode1v3 -*.mode2v3 -!default.mode2v3 -*.perspectivev3 -!default.perspectivev3 - -## Obj-C/Swift specific -*.hmap - -## App packaging -*.ipa -*.dSYM.zip -*.dSYM - -## Playgrounds -timeline.xctimeline -playground.xcworkspace - -# Swift Package Manager -# -# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. -# Packages/ -# Package.pins -# Package.resolved -# *.xcodeproj -# -# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata -# hence it is not needed unless you have added a package configuration file to your project -# .swiftpm - -.build/ - -# CocoaPods -# -# We recommend against adding the Pods directory to your .gitignore. However -# you should judge for yourself, the pros and cons are mentioned at: -# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# -# Pods/ -# -# Add this line if you want to avoid checking in source code from the Xcode workspace -# *.xcworkspace - -# Carthage -# -# Add this line if you want to avoid checking in source code from Carthage dependencies. -# Carthage/Checkouts - -Carthage/Build/ - -# Accio dependency management -Dependencies/ -.accio/ - -# fastlane -# -# It is recommended to not store the screenshots in the git repo. -# Instead, use fastlane to re-generate the screenshots whenever they are needed. -# For more information about the recommended setup visit: -# https://docs.fastlane.tools/best-practices/source-control/#source-control - -fastlane/report.xml -fastlane/Preview.html -fastlane/screenshots/**/*.png -fastlane/test_output - -# Code Injection -# -# After new code Injection tools there's a generated folder /iOSInjectionProject -# https://github.com/johnno1962/injectionforxcode - -iOSInjectionProject/ \ No newline at end of file diff --git a/foundational-api-samples/hello-world/webview/ios/README.md b/foundational-api-samples/hello-world/webview/ios/README.md deleted file mode 100644 index f1d6f0cc..00000000 --- a/foundational-api-samples/hello-world/webview/ios/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Hello-world for iOS WKWebView - Dynamsoft Barcode Reader Sample - -This sample demonstrates how to use the [Dynamsoft Barcode Reader](https://www.dynamsoft.com/barcode-reader/overview/) JS Edition in iOS(Swift). - -If you want to learn how to use the iOS Edition SDK in javascript, you can check [iOS WebView Barcode Scanning](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/v9.x/ios/JavaScript/WebViewBarcodeScanning) - -> Note: -> -> This guide uses DBR JS version 9. An updated guide for DBR JS version 10 is in progress and will be coming soon! - -## Support - -If you have any questions, feel free to [contact Dynamsoft support](https://www.dynamsoft.com/company/contact?utm_source=sampleReadme). \ No newline at end of file diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview.xcodeproj/project.pbxproj b/foundational-api-samples/hello-world/webview/ios/dbrjswebview.xcodeproj/project.pbxproj deleted file mode 100644 index 7f7ce301..00000000 --- a/foundational-api-samples/hello-world/webview/ios/dbrjswebview.xcodeproj/project.pbxproj +++ /dev/null @@ -1,373 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 56; - objects = { - -/* Begin PBXBuildFile section */ - 68309E9F29F28D950016A358 /* html in Resources */ = {isa = PBXBuildFile; fileRef = 68309E9E29F28D950016A358 /* html */; }; - 68A0A94529EE855E00DC7D57 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68A0A94429EE855E00DC7D57 /* AppDelegate.swift */; }; - 68A0A94729EE855E00DC7D57 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68A0A94629EE855E00DC7D57 /* SceneDelegate.swift */; }; - 68A0A94929EE855E00DC7D57 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68A0A94829EE855E00DC7D57 /* ViewController.swift */; }; - 68A0A94C29EE855E00DC7D57 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 68A0A94A29EE855E00DC7D57 /* Main.storyboard */; }; - 68A0A94E29EE856100DC7D57 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 68A0A94D29EE856100DC7D57 /* Assets.xcassets */; }; - 68A0A95129EE856100DC7D57 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 68A0A94F29EE856100DC7D57 /* LaunchScreen.storyboard */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 68309E9E29F28D950016A358 /* html */ = {isa = PBXFileReference; lastKnownFileType = folder; path = html; sourceTree = ""; }; - 68A0A94129EE855E00DC7D57 /* dbrjswebview.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = dbrjswebview.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 68A0A94429EE855E00DC7D57 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 68A0A94629EE855E00DC7D57 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; - 68A0A94829EE855E00DC7D57 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; - 68A0A94B29EE855E00DC7D57 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 68A0A94D29EE856100DC7D57 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 68A0A95029EE856100DC7D57 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 68A0A95229EE856100DC7D57 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 68A0A93E29EE855E00DC7D57 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 68A0A93829EE855E00DC7D57 = { - isa = PBXGroup; - children = ( - 68A0A94329EE855E00DC7D57 /* dbrjswebview */, - 68A0A94229EE855E00DC7D57 /* Products */, - ); - sourceTree = ""; - }; - 68A0A94229EE855E00DC7D57 /* Products */ = { - isa = PBXGroup; - children = ( - 68A0A94129EE855E00DC7D57 /* dbrjswebview.app */, - ); - name = Products; - sourceTree = ""; - }; - 68A0A94329EE855E00DC7D57 /* dbrjswebview */ = { - isa = PBXGroup; - children = ( - 68309E9E29F28D950016A358 /* html */, - 68A0A94429EE855E00DC7D57 /* AppDelegate.swift */, - 68A0A94629EE855E00DC7D57 /* SceneDelegate.swift */, - 68A0A94829EE855E00DC7D57 /* ViewController.swift */, - 68A0A94A29EE855E00DC7D57 /* Main.storyboard */, - 68A0A94D29EE856100DC7D57 /* Assets.xcassets */, - 68A0A94F29EE856100DC7D57 /* LaunchScreen.storyboard */, - 68A0A95229EE856100DC7D57 /* Info.plist */, - ); - path = dbrjswebview; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 68A0A94029EE855E00DC7D57 /* dbrjswebview */ = { - isa = PBXNativeTarget; - buildConfigurationList = 68A0A95529EE856100DC7D57 /* Build configuration list for PBXNativeTarget "dbrjswebview" */; - buildPhases = ( - 68A0A93D29EE855E00DC7D57 /* Sources */, - 68A0A93E29EE855E00DC7D57 /* Frameworks */, - 68A0A93F29EE855E00DC7D57 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = dbrjswebview; - productName = dbrjswebview; - productReference = 68A0A94129EE855E00DC7D57 /* dbrjswebview.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 68A0A93929EE855E00DC7D57 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = 1; - LastSwiftUpdateCheck = 1400; - LastUpgradeCheck = 1400; - TargetAttributes = { - 68A0A94029EE855E00DC7D57 = { - CreatedOnToolsVersion = 14.0.1; - }; - }; - }; - buildConfigurationList = 68A0A93C29EE855E00DC7D57 /* Build configuration list for PBXProject "dbrjswebview" */; - compatibilityVersion = "Xcode 14.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 68A0A93829EE855E00DC7D57; - productRefGroup = 68A0A94229EE855E00DC7D57 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 68A0A94029EE855E00DC7D57 /* dbrjswebview */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 68A0A93F29EE855E00DC7D57 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 68A0A95129EE856100DC7D57 /* LaunchScreen.storyboard in Resources */, - 68309E9F29F28D950016A358 /* html in Resources */, - 68A0A94E29EE856100DC7D57 /* Assets.xcassets in Resources */, - 68A0A94C29EE855E00DC7D57 /* Main.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 68A0A93D29EE855E00DC7D57 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 68A0A94929EE855E00DC7D57 /* ViewController.swift in Sources */, - 68A0A94529EE855E00DC7D57 /* AppDelegate.swift in Sources */, - 68A0A94729EE855E00DC7D57 /* SceneDelegate.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 68A0A94A29EE855E00DC7D57 /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 68A0A94B29EE855E00DC7D57 /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 68A0A94F29EE856100DC7D57 /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 68A0A95029EE856100DC7D57 /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 68A0A95329EE856100DC7D57 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 68A0A95429EE856100DC7D57 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 68A0A95629EE856100DC7D57 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = KK22Q4GV82; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = dbrjswebview/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = DyBarcode; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; - INFOPLIST_KEY_UIMainStoryboardFile = Main; - INFOPLIST_KEY_UIStatusBarStyle = ""; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - IPHONEOS_DEPLOYMENT_TARGET = 14.3; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.dynamsoft.dbrjswebview; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 68A0A95729EE856100DC7D57 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = KK22Q4GV82; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = dbrjswebview/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = DyBarcode; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; - INFOPLIST_KEY_UIMainStoryboardFile = Main; - INFOPLIST_KEY_UIStatusBarStyle = ""; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - IPHONEOS_DEPLOYMENT_TARGET = 14.3; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.dynamsoft.dbrjswebview; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 68A0A93C29EE855E00DC7D57 /* Build configuration list for PBXProject "dbrjswebview" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 68A0A95329EE856100DC7D57 /* Debug */, - 68A0A95429EE856100DC7D57 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 68A0A95529EE856100DC7D57 /* Build configuration list for PBXNativeTarget "dbrjswebview" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 68A0A95629EE856100DC7D57 /* Debug */, - 68A0A95729EE856100DC7D57 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 68A0A93929EE855E00DC7D57 /* Project object */; -} diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/foundational-api-samples/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a6..00000000 --- a/foundational-api-samples/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/foundational-api-samples/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d98100..00000000 --- a/foundational-api-samples/hello-world/webview/ios/dbrjswebview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/AppDelegate.swift b/foundational-api-samples/hello-world/webview/ios/dbrjswebview/AppDelegate.swift deleted file mode 100644 index ad05d455..00000000 --- a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/AppDelegate.swift +++ /dev/null @@ -1,36 +0,0 @@ -// -// AppDelegate.swift -// dbrjswebview -// -// Created by Dynamsoft on 2023/4/18. -// - -import UIKit - -@main -class AppDelegate: UIResponder, UIApplicationDelegate { - - - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - // Override point for customization after application launch. - return true - } - - // MARK: UISceneSession Lifecycle - - func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { - // Called when a new scene session is being created. - // Use this method to select a configuration to create the new scene with. - return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) - } - - func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { - // Called when the user discards a scene session. - // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. - // Use this method to release any resources that were specific to the discarded scenes, as they will not return. - } - - -} - diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json b/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json deleted file mode 100644 index eb878970..00000000 --- a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AccentColor.colorset/Contents.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "colors" : [ - { - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json b/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 13613e3e..00000000 --- a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Assets.xcassets/Contents.json b/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Assets.xcassets/Contents.json deleted file mode 100644 index 73c00596..00000000 --- a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard b/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index 865e9329..00000000 --- a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Base.lproj/Main.storyboard b/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Base.lproj/Main.storyboard deleted file mode 100644 index 85dc8abf..00000000 --- a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Base.lproj/Main.storyboard +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Info.plist b/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Info.plist deleted file mode 100644 index 93bb4788..00000000 --- a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/Info.plist +++ /dev/null @@ -1,27 +0,0 @@ - - - - - NSCameraUsageDescription - Decoding barcodes from video needs to access your camera. - UIApplicationSceneManifest - - UIApplicationSupportsMultipleScenes - - UISceneConfigurations - - UIWindowSceneSessionRoleApplication - - - UISceneConfigurationName - Default Configuration - UISceneDelegateClassName - $(PRODUCT_MODULE_NAME).SceneDelegate - UISceneStoryboardFile - Main - - - - - - diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/SceneDelegate.swift b/foundational-api-samples/hello-world/webview/ios/dbrjswebview/SceneDelegate.swift deleted file mode 100644 index 0860c7e6..00000000 --- a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/SceneDelegate.swift +++ /dev/null @@ -1,52 +0,0 @@ -// -// SceneDelegate.swift -// dbrjswebview -// -// Created by Dynamsoft on 2023/4/18. -// - -import UIKit - -class SceneDelegate: UIResponder, UIWindowSceneDelegate { - - var window: UIWindow? - - - func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { - // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. - // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. - // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). - guard let _ = (scene as? UIWindowScene) else { return } - } - - func sceneDidDisconnect(_ scene: UIScene) { - // Called as the scene is being released by the system. - // This occurs shortly after the scene enters the background, or when its session is discarded. - // Release any resources associated with this scene that can be re-created the next time the scene connects. - // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). - } - - func sceneDidBecomeActive(_ scene: UIScene) { - // Called when the scene has moved from an inactive state to an active state. - // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. - } - - func sceneWillResignActive(_ scene: UIScene) { - // Called when the scene will move from an active state to an inactive state. - // This may occur due to temporary interruptions (ex. an incoming phone call). - } - - func sceneWillEnterForeground(_ scene: UIScene) { - // Called as the scene transitions from the background to the foreground. - // Use this method to undo the changes made on entering the background. - } - - func sceneDidEnterBackground(_ scene: UIScene) { - // Called as the scene transitions from the foreground to the background. - // Use this method to save data, release shared resources, and store enough scene-specific state information - // to restore the scene back to its current state. - } - - -} - diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/ViewController.swift b/foundational-api-samples/hello-world/webview/ios/dbrjswebview/ViewController.swift deleted file mode 100644 index 4e787292..00000000 --- a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/ViewController.swift +++ /dev/null @@ -1,116 +0,0 @@ -// -// ViewController.swift -// dbrjswebview -// -// Created by Dynamsoft on 2023/4/18. -// - -import UIKit -import WebKit - -// Refer: https://developer.apple.com/documentation/webkit/viewing_desktop_or_mobile_web_content_using_a_web_view -class ViewController: UIViewController, WKUIDelegate { - - let webView: WKWebView - - required init?(coder: NSCoder) { - print("entered init") - let configuration = WKWebViewConfiguration() - configuration.allowsInlineMediaPlayback = true - configuration.mediaTypesRequiringUserActionForPlayback = [] - // Refer: https://stackoverflow.com/a/51736967 - configuration.websiteDataStore = WKWebsiteDataStore.default() - webView = WKWebView(frame: .init(), configuration: configuration) - - super.init(coder: coder) - } - - // Refer: https://www.hackingwithswift.com/articles/112/the-ultimate-guide-to-wkwebview - override func loadView() { - self.view = webView - } - - override func viewDidLoad() { - super.viewDidLoad() - print("entered viewDidLoad") - // Do any additional setup after loading the view. - - // Refer: https://stackoverflow.com/a/40316507 - webView.uiDelegate = self - - //let url = URL(string: "https://your.online.website/target/page.html")! - //webView.load(URLRequest(url: url)) - - // load local html - let fileUrl = Bundle.main.url(forResource: "html/decodeFileInVideo", withExtension: "html")! - webView.loadFileURL(fileUrl, allowingReadAccessTo: fileUrl) - print("finish viewDidLoad") - } - - // Refer: https://stackoverflow.com/a/40316507 - - func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, - completionHandler: @escaping () -> Void) { - - let alertController = UIAlertController(title: nil, message: message, preferredStyle: .actionSheet) - alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in - completionHandler() - })) - - present(alertController, animated: true, completion: nil) - } - - - func webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, - completionHandler: @escaping (Bool) -> Void) { - - let alertController = UIAlertController(title: nil, message: message, preferredStyle: .actionSheet) - - alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in - completionHandler(true) - })) - - alertController.addAction(UIAlertAction(title: "Cancel", style: .default, handler: { (action) in - completionHandler(false) - })) - - present(alertController, animated: true, completion: nil) - } - - - func webView(_ webView: WKWebView, runJavaScriptTextInputPanelWithPrompt prompt: String, defaultText: String?, initiatedByFrame frame: WKFrameInfo, - completionHandler: @escaping (String?) -> Void) { - - let alertController = UIAlertController(title: nil, message: prompt, preferredStyle: .actionSheet) - - alertController.addTextField { (textField) in - textField.text = defaultText - } - - alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in - if let text = alertController.textFields?.first?.text { - completionHandler(text) - } else { - completionHandler(defaultText) - } - })) - - alertController.addAction(UIAlertAction(title: "Cancel", style: .default, handler: { (action) in - completionHandler(nil) - })) - - present(alertController, animated: true, completion: nil) - } - - // Auto grant camera access - // Refer: https://stackoverflow.com/a/72729381/6414094 - func webView(_ webView: WKWebView, - requestMediaCapturePermissionFor - origin: WKSecurityOrigin,initiatedByFrame - frame: WKFrameInfo,type: WKMediaCaptureType, - decisionHandler: @escaping (WKPermissionDecision) -> Void){ - decisionHandler(.grant) - } - -} - diff --git a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html b/foundational-api-samples/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html deleted file mode 100644 index 89766946..00000000 --- a/foundational-api-samples/hello-world/webview/ios/dbrjswebview/html/decodeFileInVideo.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - Dynamsoft Barcode Reader Sample - Hello World (Decoding via Camera) - - - -

    Hello World (Decode via Camera)

    -
    - Results: -
    -
    - - - - diff --git a/foundational-api-samples/others/debug/.gitignore b/foundational-api-samples/others/debug/.gitignore deleted file mode 100644 index 92a9c93f..00000000 --- a/foundational-api-samples/others/debug/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# dependencies -/node_modules - -# collected images -/public/collect - -# others - -*.lock diff --git a/foundational-api-samples/others/debug/README.md b/foundational-api-samples/others/debug/README.md deleted file mode 100644 index 0bc80664..00000000 --- a/foundational-api-samples/others/debug/README.md +++ /dev/null @@ -1,57 +0,0 @@ -# Debug Sample - -This sample is designed to: - -1. Print detailed logs in the browser console to better assist in troubleshooting. On your mobile browser, you can click the tool icon to open the console (provided by eruda.js). -2. Check if your device and browser are compatible with the camera and to what extent. -3. Collect video frames for analysis. (Require to host the sample locally) - -You can directly debug 1 and 2 in this link: [https://demo.dynamsoft.com/Samples/DBR/JS/foundational-api-samples/others/debug/public/index.html](https://demo.dynamsoft.com/Samples/DBR/JS/foundational-api-samples/others/debug/public/index.html) - -Item 3 we will introduce in detail. - -## Collect the video frames for analysis - -Barcode reading is a one-time job, the application either succeeds or fails to read the barcode(s). For the failed scenario, it's possible to make them successful by adjusting the settings provided by the Dynamsoft Capture Vision Router JavaScript SDK. However, adjusting the settings could be a bit overwhelming. Therefore, Dynamsoft offers the debug sample that enables customers to capture and save runtime video frames for sending to the Dynamsoft team. With the original images, the team can test and optimize settings for customers. - -The following shows how to host the sample and collect frames. - -### Download the sample - -The sample can be downloaded from - -Debug Sample on GitHub - -Note that the entire folder is required. To download only the files in this folder, try using "https://downgit.github.io/#/home". - -### Set up a local server - -Since the video is usually playing on mobile devices, having these frames uploaded to a self-hosted local server is most convenient, therefore, we first need to set up a local server. - -We make use of the web server that comes with [Express](https://expressjs.com/). - -* Install dependencies - -Run the following script to install all dependencies. - -`npm install` - -* Start the server - -We defined the web server logic in the file "app.js", to start it, run the following script: - -`node app.js` - -Note that we have used self-signed certificates to enable SSL on the port 4443. - -### Use the sample page - -Once the server is up and running, open the page on the device that will do the barcode reading. The URL for the sample is "https://{your-local-ip}:4443/". For example, suppose your ip is 192.168.1.1, the site can be visited at [https://192.168.1.1:4443/](https://192.168.1.1:4443/). - -> Note that the device should be in the same WiFi network as the server machine. - -You will see a warning due to self-signing. Please ignore and keep processing. - -Click the button "start capturing" and try to read barcodes, the frames will then be uploaded to the folder "debug\public\collect" as images (.png) on the server. When you have collected enough frames, please click "stop capturing", otherwise, new frames will continue to flood in. - -Check the images to make sure that they correctly represent the actual usage scenario, then zip and send them to Dynamsoft for technical assistance. diff --git a/foundational-api-samples/others/debug/app.js b/foundational-api-samples/others/debug/app.js deleted file mode 100644 index bd09d818..00000000 --- a/foundational-api-samples/others/debug/app.js +++ /dev/null @@ -1,43 +0,0 @@ -const express = require('express'); -const fs = require('fs'); -const https = require('https'); -const cors = require('cors'); -const util = require('util'); -const path = require('path'); -const multer = require('multer'); - -const app = express(); -// Access-Control-Allow-Origin: **any** -app.use(cors({ - origin: (origin, callback) => { - return callback(null, true); - } -})); - -// collect images -const dirCollect = path.join(__dirname, 'public/collect'); -if(!fs.existsSync(dirCollect)){ - fs.mkdirSync(dirCollect); -} -const collect = multer({ storage: multer.diskStorage({ - destination: (req, file, cb) => { - cb(null, dirCollect); - }, - filename: (req, file, cb) => { - cb(null, Date.now()+'.png'); - } -}) });//dest: path.join(__dirname, 'public/collect') -app.post('/collect', collect.any(), async(req, res) => { - res.send(util.inspect(req.files,{depth:null})); -}); - -// static files -app.use(express.static(path.join(__dirname, 'public'))); - -let httpsServer = https.createServer({ - key: fs.readFileSync(path.join(__dirname, 'pem/ryans-key.pem')), - cert: fs.readFileSync(path.join(__dirname, 'pem/ryans-cert.pem')) -}, app); - -let httpsPort = 4443; -httpsServer.listen(httpsPort, () => console.log('Page is available in https://localhost:'+httpsPort+'/')); diff --git a/foundational-api-samples/others/debug/package.json b/foundational-api-samples/others/debug/package.json deleted file mode 100644 index 9eec8064..00000000 --- a/foundational-api-samples/others/debug/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "collect-img", - "version": "1.2.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC", - "dependencies": { - "cors": "^2.8.5", - "express": "^4.17.1", - "multer": "^1.4.2" - } -} diff --git a/foundational-api-samples/others/debug/pem/ryans-cert.pem b/foundational-api-samples/others/debug/pem/ryans-cert.pem deleted file mode 100644 index 6939a9c0..00000000 --- a/foundational-api-samples/others/debug/pem/ryans-cert.pem +++ /dev/null @@ -1,13 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICDDCCAXUCFGlprxUW7YsQSmqXwS3fjySQwexCMA0GCSqGSIb3DQEBCwUAMEUx -CzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRl -cm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMjAwMTE3MDE0OTM0WhcNMjAwMjE2MDE0 -OTM0WjBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UE -CgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQCt3L/syEyB8B9O8Xhf3/SJOfTsoSs+3+/ELvFd07QEP0mySRjh9hUL -BjB1bWJXBshn9JBzlfGUjRtNkc54VF1JfjFgi7UzqqyAlAwfEMBbp8jUX1Hh9iU7 -ctTAHxcAicTWTkRmToXJBUhbgTH+eF/GfQTdnByrncprQfuqdPg2KwIDAQABMA0G -CSqGSIb3DQEBCwUAA4GBAKRRbXBhTS95IimKoIZq3RtVrjXpcsBn5ncyvFULc6Y5 -OkOxum5TO++XHVOJyalqyWpAQuz6i348hxTW6wqt5Js0UPGLGIb4Kq965QKKT+yJ -WnHOnzZzJxiTs/1uGFjPAKgdvuDhcx36YsvSQ/UnJvF0rttjLKOGI5SkFMgz1Ufz ------END CERTIFICATE----- diff --git a/foundational-api-samples/others/debug/pem/ryans-csr.pem b/foundational-api-samples/others/debug/pem/ryans-csr.pem deleted file mode 100644 index 71cc8492..00000000 --- a/foundational-api-samples/others/debug/pem/ryans-csr.pem +++ /dev/null @@ -1,11 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIIBhDCB7gIBADBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEh -MB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQCt3L/syEyB8B9O8Xhf3/SJOfTsoSs+3+/ELvFd07QEP0my -SRjh9hULBjB1bWJXBshn9JBzlfGUjRtNkc54VF1JfjFgi7UzqqyAlAwfEMBbp8jU -X1Hh9iU7ctTAHxcAicTWTkRmToXJBUhbgTH+eF/GfQTdnByrncprQfuqdPg2KwID -AQABoAAwDQYJKoZIhvcNAQELBQADgYEAgwEY90gQQzxIonWEgDxGRBHxSk0h3UE4 -rTP3JggV6h0vXMndOrDXC2qrh20fJaWIHqbBtmfOF4NmPhQTSZOZ2fIjPBeHZqLq -8+K9iZPeyjnVIRyWkXfCPacoddTw2FcykRobgL6Wi/RoldutOnIDlTawo5Y/eXvm -JI0428mqYU4= ------END CERTIFICATE REQUEST----- diff --git a/foundational-api-samples/others/debug/pem/ryans-key.pem b/foundational-api-samples/others/debug/pem/ryans-key.pem deleted file mode 100644 index bf0ff875..00000000 --- a/foundational-api-samples/others/debug/pem/ryans-key.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQCt3L/syEyB8B9O8Xhf3/SJOfTsoSs+3+/ELvFd07QEP0mySRjh -9hULBjB1bWJXBshn9JBzlfGUjRtNkc54VF1JfjFgi7UzqqyAlAwfEMBbp8jUX1Hh -9iU7ctTAHxcAicTWTkRmToXJBUhbgTH+eF/GfQTdnByrncprQfuqdPg2KwIDAQAB -AoGAO6O6zm2TGQuWoczhPvoi9yPDaZyLqiDFLaXws//YA5D2Jcs/VtvEMijoXI+u -KS4xdr+FAbFQ0mVpFT3L9qjx6p/lSVKzJ1tlVlp7klJzK0VOWmMojLrhsstp44ah -jZQdxcnlEDgeBwXj5m09fr7YFfIiyHef+r9ORqn00F7K+xkCQQDhy5k00dsfL5MY -oy70Ikb70n90qktnFXrgsgEeojG0j0OmJUdNLV6gXbkD4lEeh6iK5XdAEuso+Qw1 -5Ksa3d11AkEAxR6yMXPIbl+4y24TbIGAZwb44Lyn9DAnLm5qgFvMgJARz+kqlYyr -tpZ6cD1JY3fuF+umDlNPYzxGxy3kz/sxHwJBAJNiLDzYBmmSyjc4vPtKLH9PZTan -udQtpylnx2dRg5RSN1wJ1ULBLJUM2Cl63mxJLHCNW4uNTcZO2fOLsUw2KckCQBFp -dboSjSjawbsOfR6/jbUME53ebEOQoVVjoXq3IShWEYy4/u743w4g2q3hbAMiS+DH -CwMG7uNIJsRfVG/es2cCQD7R6ebztt858vYZzfLMLMsJTF2YQs1YG91x76lZLhNp -tcTTENHD4g9v/Q5MV+fhN0UuJ2ikrXULAgDmJMvAVyk= ------END RSA PRIVATE KEY----- diff --git a/foundational-api-samples/others/debug/public/index.html b/foundational-api-samples/others/debug/public/index.html deleted file mode 100644 index ca1cfef1..00000000 --- a/foundational-api-samples/others/debug/public/index.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - - - Dynamsoft Barcode Reader Sample - Debug - - - -

    Read Barcodes from Camera - Debug

    - - -

    - - - -

    - -
    -
    - - - - - - - - \ No newline at end of file diff --git a/foundational-api-samples/use-case/README.md b/foundational-api-samples/use-case/README.md deleted file mode 100644 index a9a95536..00000000 --- a/foundational-api-samples/use-case/README.md +++ /dev/null @@ -1,52 +0,0 @@ -## Read Barcodes and Fill Form Fields - -It's difficult to type long text on mobile devices, but if that text is encoded in a barcode, we can use the SDK to read the barcode and automatically enter the text. - -The following sample demonstrates how to utilize the SDK to fill out form fields. - -* Read Barcodes and Fill Form Fields - Demo -* Read Barcodes and Fill Form Fields - Source Code - -## Read the PDF417 Barcode on the Driver's License - -The PDF417 barcode on an AAMVA-compatible driver's license contains information encoded following the DL/ID Card Design Standard. Together with a simple parse function, we can use the SDK to read and extract the information. - -The following official sample shows how to use the SDK to read and extract driver's license information. - -* Read the PDF417 Barcode on the Driver's License - Demo -* Read the PDF417 Barcode on the Driver's License - Source Code - -Also, see [Driver's License Scanner SDK for Mobile and Web](https://www.dynamsoft.com/use-cases/driver-license/). - -## Read Barcodes via Camera and Show Result Texts on the Video - -When the SDK picks up a barcode in a video stream, it will automatically highlight it with a built-in style. But it is also possible to show the barcode text on the video with the help of the function `convertToPageCoordinates()` or `convertToClientCoordinates()`. - -The following official sample shows how to show the result texts on the video. - -* Read barcodes via camera and show result texts on the video - Demo -* Read barcodes via camera and show result texts on the video - Source Code - -## Locate an Item via Barcode - -Searching for a specific item among numerous identical boxes can be challenging. However, with the Dynamsoft Barcode Reader (DBR) SDK, we can locate the item quickly by scanning through the barcodes. - -The following sample demonstrates how to utilize the SDK to find an item using a barcode among many barcodes. - -Additionally, this sample demonstrates how to utilize the SDK to fill out form fields, creating a custom UI with [Dynamsoft Camera Enhancer (DCE)](https://www.dynamsoft.com/camera-enhancer/docs/core/introduction/index.html), and using DCE to draw shapes/images on the CameraView to create indicators for each barcode that has been detected! - -* Locate an Item with Barcode - Demo -* Locate an Item with Barcode - Source Code - -## Read the GS1-AI Barcode and Parse it - -GS1-AI barcodes contain standardized information such as product ID (GTIN), expiration date, batch/lot number, and more, encoded using specific Application Identifiers (AIs). - -This sample demonstrates how to scan a GS1 Application Identifier (AI) barcode using the Dynamsoft Barcode Reader SDK and parse its structured data. - -* Read the GS1-AI Barcode and Parse It - Demo -* Read the GS1-AI Barcode and Parse It - Source Code - -## Support - -If you have any questions, feel free to [contact Dynamsoft](https://www.dynamsoft.com/company/contact/). diff --git a/foundational-api-samples/use-case/fill-a-form-with-barcode-reading.html b/foundational-api-samples/use-case/fill-a-form-with-barcode-reading.html deleted file mode 100644 index 8cdef5d1..00000000 --- a/foundational-api-samples/use-case/fill-a-form-with-barcode-reading.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - - - Dynamsoft Barcode Reader Sample - Fill Forms with Dynamsoft Barcode Reader - - - - -

    Fill Forms with Dynamsoft Barcode Reader

    -
    -

    Click each input box to fill in!

    - - - -
    - - - - - - - - - \ No newline at end of file diff --git a/foundational-api-samples/use-case/locate-an-item-with-barcode/icons/checkmark-icon.svg b/foundational-api-samples/use-case/locate-an-item-with-barcode/icons/checkmark-icon.svg deleted file mode 100644 index 5dc93e11..00000000 --- a/foundational-api-samples/use-case/locate-an-item-with-barcode/icons/checkmark-icon.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - checkmark-circle Created with Sketch Beta. - \ No newline at end of file diff --git a/foundational-api-samples/use-case/locate-an-item-with-barcode/icons/cross-icon.svg b/foundational-api-samples/use-case/locate-an-item-with-barcode/icons/cross-icon.svg deleted file mode 100644 index b0f8078f..00000000 --- a/foundational-api-samples/use-case/locate-an-item-with-barcode/icons/cross-icon.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - cross-circle Created with Sketch Beta. - \ No newline at end of file diff --git a/foundational-api-samples/use-case/locate-an-item-with-barcode/icons/dynamsoft-logo.png b/foundational-api-samples/use-case/locate-an-item-with-barcode/icons/dynamsoft-logo.png deleted file mode 100644 index 7967e8edbde77fcdf84333b58ac1046f821c9e0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5449 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 LnIX#&&Jq6u=Qz1) diff --git a/foundational-api-samples/use-case/locate-an-item-with-barcode/icons/scan-barcode-icon.svg b/foundational-api-samples/use-case/locate-an-item-with-barcode/icons/scan-barcode-icon.svg deleted file mode 100644 index 6b744cdf..00000000 --- a/foundational-api-samples/use-case/locate-an-item-with-barcode/icons/scan-barcode-icon.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/foundational-api-samples/use-case/locate-an-item-with-barcode/index.html b/foundational-api-samples/use-case/locate-an-item-with-barcode/index.html deleted file mode 100644 index 3c512026..00000000 --- a/foundational-api-samples/use-case/locate-an-item-with-barcode/index.html +++ /dev/null @@ -1,734 +0,0 @@ - - - - - - - - - Dynamsoft Barcode Reader Sample - Locate an Item with Barcode - - - - - -
    -
    -

    Locate an Item with Barcode

    -
    -
    -

    1. Enter or Scan the Item ID that you're seaching for:

    -
    - - - - -
    - -

    2. Start searching for the item

    - - -
    -
    - -
    Dynamsoft - - - - - - - -
    - - - - - - - - - - - \ No newline at end of file diff --git a/foundational-api-samples/use-case/read-a-drivers-license/SampleDriversLicense.jpg b/foundational-api-samples/use-case/read-a-drivers-license/SampleDriversLicense.jpg deleted file mode 100644 index 7bb877f70296d8bf8ad6ba59e5b3a6424db062c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 533709 zcmeFa2Ut_d+c$g=6)UW32N4zv7J3(is0fG%D7^>~LMV~~Bmo3NR$ax05fo4nq9`C; zKtMpq+CV8Hy#$CNAiahF2}#~bP}kl6KF`DTeeZj{*LQs!<(%nr-}lUY&zw2G%|IJ5+W|N6}h zG77E#<_4*R#QCuh2!#@bB!0Lvgm!&Pvj{{gL*Nc=1%G)$DgyU9;I0q#g823D^Y(&= zG@xtlpM2?`5G4Bx^zC`j4eN@OKJJOdV{x8XA8CC{4e4FBUKlrQ0B$#=qNJ>@t)!`~ zq%5thtgWJau; zrGTOzya{3c;!Vi^XWkYGeJ?{OWYLeZWvFw-K}W!o&!6DQYvv6>s|4J@^-ZBgykSUG z;Dg+L=cnV*pg*8h%a$!$zHHU<<*U}LT(NS^da+fj#MWR#UB|zPuA9rUWQIfPULvbAFt~OUnUG?Z$G~HEb>i#7b79}ZA15@jl2J)sKmU|#vZ1o zk*!BSXmnD3S<~04HPE6(fZD|Znnac^Q5TT#oAR%V0R_G?YnP~;3tz{l;H5>)sOomt z&wl44^exvTaB5>amhuS@*{S}j77+1hqnm-X1|He@gM|N@0@=Sv;I%@lgavi3fnX40 zk0pny_KODo)}{R5=BG`gy;AoZA16{0CIi|N zwdA~l?;TmJw)z9^E+Z!QQQIRPgfK)5_AD2@to-cx{zAQL_I>sRt8Ax_NV(ZS7(|q1I*7aRX?!RC2Z~V_QVHC54P@o68>&={igQZDzbMg9oI5* z`L+w=*iF;*mYyhM&&8)THD`O+v{`accH5SnQBgH^^5<*CxBn7gKJzZJ!TQi%gxxC7 zkI=`Zn&d9^G-Fdzi>@a3i|y17wrnB~YCFyCMsL5}S(M~9?1MFbEx&kZ$8dyf3oM>f zPtVEbLE}YYvs0wL9eEK)amw1r!&=>+zcd=vtdAJk99!i&!HzxEH~GT;)R~G`EP9UcVDuyL7Cb0{E1I&$gZZoFtImzE zBs^`)R5YzF3zhYDI9hi~InQn+pkM@>`@v+JPu~n#EHGHSvq_}nu+HLOvyo{NShdra zkW9RdtrPmqDWrPdJz7R&R!0J1Vun1mGoYd4YCqjEYm@z{--eown_^(GJV?lP=5li9 zAPS}=vLA)+E}8Pmo4uroEt;@v%o5vhvi#cpaZ{VMif1B}dY?%pa3edCW?hHL2Yb6- z+_wq2cOtyEa`o!Br&?D!e)v7>`S2DV^bp}~Y#xiyYa&!0jYTKs z_iWgAscc9-n!Tl+2N~eu7QX!z8pPz17cQq>1pPs6<3YJWVt?D>|Wil4LMDGGW7m&NH4#5ET3yixWDa z^LXnZDno?ioH;w=aFoRR$OyU1SwbHxkeXpN^iVphWq0;GZ6`#1I4n7Wd&bzQ?#C$k zDS=dH{#70{TFt$DWOpm8_=SDla9LG0Z2-~I5EG7Ag(!*dH_;2T2?`L6Hf`Ay!-HP3 z00HJl9CXERsOPIDby;52Pkz@S{?$foAgZ;x(Ua6q&q;n5Rm)aQp3Ke~d`oS}*GYt5 zGgCb5J+`M(H1XbP1s#SeWrXjkQo(!ywWJ-TspH?@wv;|zft>#55`7Th^wV>5Wo zexTOiM#5b;*vdg&!~Q283CvKcXeB+TXeR0Fr!Oo@S~utZ!#G)+>hg@7TevC>?H9+w z5vKmM$Ub}Y?M}T1<(h7dZD;piBgJRG*#F`_+-PXijBVq~GcJ7}D&7|lWhXkbx0*kZ z%ZLeiQ&B9|kn#q7MuXAT+EJdvgFHDgvy$~ECr-KBQ?6Z?rb!)6Hk!IVc5JW z&Z?`r+T5DH#8;DcgO2yjj8Pxi_x&6RcU?nk`aA2t)`j)DenAjRrkre(n2yA_4EW;& zdw=;mjl&qH88L6U4_@mUVr+Ef-}-u=o^s&cCFI*yh9SMv+`Y$6DSuamD>Yk- z@y&dbsE>n^!CA{#>@ zu8y64*B4i`89SRiSdmeEFs+ocalo2OS=%J5k8LT$DXVy9q_Li2pXP=lOs&gg zJ<->^L-f=cy6KrKLY=Oe5y}qHx-o468JA2k$qA&|nQtP;WkNli&ncBDHmfVj^KWvXUX<)zk_7_(3=Z2=-s5%S}YTQ$j zX&lW>XF2$cr5l^xcg_kfL?~qsZzL@J)Fokx2_)`pGr^%IL&9vD!h64zIR| zN*zs*O4+x01JRBl0EF zC3M+sec0Tm&np$ElgMT#Tba0MgmMrPfA4Kf(#{uQ)6)v^F|Z@_XW5BCTXTq}(N=|& zv`w2h`iWEtg#oWOxO;x~CKn`eLfk(F^kTfr{afk1C8=nxM?FWTGqvwojkl^VE5sd^ z?!Qxi)G6wn!b@zjDWQa=z&4Y&DXH#JrT*E(`IUO~@w)b2xLrx6JK;mDk!c@!^BHS< z+=zGg9rl!CxG5{DkaHuoJ`>wpd^RZB5is)r#+oF3EpHTS5WQ8GTv?=jPwr(&B1|-G zul$Cg)L_4nqTZFdj@f7qg4nVZSY>@GBP61up9g)E;sjAAy1jPuY8W^Evh&^aPHL~J zF$Zz(J;y01^ceU2$aEWdmUDVSY|P=5%^8jdnf2Vkrd2>tlwpdx7n7&-jz^zlSp|MlG9(Wfq*4# zS&^LPw(7dO?$;$3!!mwvQyJKmorBH1=3&9!>XB2|(oZ0NEhg2_l9`3~Q9*sl(`N`x zXndaCZe(43j-NQ&iK>t~jNEX-U7hlvlCy*|C23oHC%5h#Gi|4nd}8I6V`w0`)~6%= zYF)Wg*5P3+v%4X%K6#E*=4|(~HpcCymwji%9{tkQ9rSq!gV6PosWDLNv~1WTN{mr) zavU4;ECtgE=Zkky?=tHd)^V{XUZxbHOA|8vp%QAA*1j9Q>kvWDxskz67X}>3^=Vnu zNA9+*Djf3$s_~ZKP3*C8r^~e1NHRjXN-i%kJC%mWR`p_=#*jRy5+5r$ihabhnNLr! zI&>L3gHC!CSWd3#%>GSzoH4Sih{qoHmj zS~y5u+fJ3aK4L4GYd_#-ZNuKpy=9P+Xxc*ZqDp_NZ9`2Hw{Mi3TxGKRO;zGc?BnWZ z2v=v8Z%LePAT_OtdA)7j?a~LnURt@s@5(~-46SXlE)@!uQCzln156x-L&Cpj;TSk1Jb{o2=eg8BsE z7>+{Nu>Cv(hE``p)!g?Td{c@hWDN%--Lf^SC@m}H;u;uIV4k2HVJW_wy0zpH(IwJ0 zrZ(Hp0J=%DM-$Wt8}s*Vwlv=Ad;mT zsf|f{>yLUw%#vHCVaPY}t)*K{HNM)OK%z=FrN1LQ4_+OXk*`O~8qR5CaOu4~=*c1UNEi9YtBgKS9S$8Bk5HX>mN? zt=E1XBCLNIw-xT+*!YR2PiIMydL;))7domL%XT;SaaKNNR7he(RlTx?TG=~3_)5fj zwXwH+4NePAv*4RxNr4IW-as z%+Mnm{z+}H!Yk5G)?BIpZtis8yKN)i#)LG)6y^n21VT<0h%&$HD z<~>{S1ZJ_dfpVQ!Mpb6YJxWwtOm^R-<2lxTs{Ti!0(B?-Ba8Cc>Z$KUmXtx$t!Uz= z2HRfC-rRayqNd}WrY6=Fhf!`F`2tbOBOnt#u?dVp=d4+l2F;u7;*)Ia&~G=`llxW- zA_m@9=2cr|(I2E#X66uMJd&AgPhgAp7AstHUZdXJFU2fLy<($hxHT@;e$(U$%#!>8 zmV{)lJMv4&g$Z5rQO}3@m<`pbO(8ygiDLwyDe!GrF;3pVsCsC(KEf#^>kRM?}{n5VkhDI=l6vb}Crr z=+)DovPd6$**2AAn}jXeH*^E*KegiI%F)lc#Zgp3WP{205J$ET9$goEjiA-+-_8+b zjZsYD-7AZs##u~4T~@m#+~z=865@?5F8M9n^h{)ri~0wou1e(#S!`xg3H6y9=TXh1 zg~ck&1Ha+Kp*+^UO+#tN+tXL)4-R6~pWW(f{6I03j7xM^SL8vFy5=ACC}s_)n&@zA z$DzE`m@um9FIUYI!mn6!bSu*z5!62;bJptAvL$#>4UMH}t>LU2?b=YEt(bUy8>PEfL#}w)MAZLj^r4Mi9rKBRKr#8~8@!*B- z^`QER0Y;(=-Apfl%CL2JV&&35M?_O4YFr4k3{ql9%_+3?RSMaJr9WKitt&OIC*Kl6 zNiraLO^y+dW}#EqiiL_8g@gVE8&*kkwN@9#2*VdA=%mp6i+~-CS8&gp#d)ifADF z|HgK<{+;G;7=mf1Pl={oDXxmG*GgxJ3A$i^l|q623` zC!;b&DYJz|PiA5pQXlTv({}x!bv*U>y)Y4Teh^xBpOeND?n?8wc||I+!9rF^$0xgb6#J9WohS8PFyR7jf< zjnqQ1O{$lBozp}lAv5bUCv|wxnrZ6vX&y8?85I#XG9dKAI;{8pIhG4`u+p1T7bWL#;&hLZ+a7Yuz&l8^E;0~?{8c-o+BCdyHY!_p4|6EkX(+Rn>rStH z!^ku?3sbCYH~Z>A)c#6bKh|$0_Jl*%ubI>}0?TD$xh)*okB%HTOPB{`+H%jP`!!d- zq2F*&dX^opVNZg2m4=07(ajqf91R$^i5QXDLo}$LB=w4Ni{Ufl&sJRE)%`rv{wmcu z@|b|q{iV{mI%el0i z8iqFcVK4Uru^2lvn|z@*`%RIzvD@W#OU)v8P8eqgnFpmMW)6s2-xIxc=hZ1S-K^An zF;Z=7X+ggKE>tEBX~f ztYMy+dl~Qq&YHV*s@Y0=-WM%zwyrU?zVEQ>>Au8Nm69qmb*aZxw7*VGbrFMtd0ovm z(R*)glI~&iqW&v2sVg-5v&o&t4}W0T`X+hUhtwAhYZ^OH1bEJb@SkT~)PuKdYOa)K*k=+tW(Qvc}^Rb!f_-iZfrey z{}z^FtvYesCvy(-?eF)Z%ErhRBRL`VDNFI&CW_9<~WlurR9 zt%x{;NCI*d%>H?SRzNp`6LG98>ZWCU@3_n-9ihJsp<|-t{&; zBkTFd6Z^1pk=GluiZ*c{GOwqR8Ij1EyCsFEIhuY!6`XCS{;b%MzXA?V5^X)qc^E-5 zHkw=~)g+%jobe$x>SWWlXPY>Kejg)r58uFSQdu3Fxoyjx8|!|iq<4z+DE+G z=vdBk3bQWObR=`-_LA7AO*RJteQE0ZO28tz`K)4ob3~k?Z2aW@lP)$p_HA49s>WTN zphvW|^e_wAg{kA3(TrOAinx2F>L*pa3N#z^?$-CRQo{_U&#XV$7IVL!V%a*n+WugM z94-Kji+kHb&2XsL+Jql0Q~rb9;yeV6QgHc1Df4z%0?pND@rGLvQl3~GYM-C+fXQr=mvj1|< zV9d%rt70jMh$FbvTr$CYlH$$*ljtXYAL0)b4Z{p_DqK46AA15}FTs;I&Kr|@?@DT> ze9Do()6nE?MoX3RRB!#LsY>n+hTTj9Hc?Dq6LZb`E4KQMtHjzR+_f#9p8S2W6&(pT z;tg{s6spmRy{;fwt+v{K{e}&~q z-kT8)m+u^hReV>?d5?r>yQxESgTWTgd|=iWVrqa38lf9UY`AtfJQl^fR+ z5)Rh>XL*px3=QLY@wN)JmRtHlBj15j^GocBjghulzwU-Y7%xgZ}{R} zCiVcr<))<9FQ|Im*R`x*3blso%S~dC&1VW>hvTbLXRK|&^mDBOQ6X{sD_x{bLWvrO}*gi|txpOO2H1#-t{v=g<(;Lv5rX7Qgq` zY)>FYuUiU}NI>SkjDJuQkdPG#z8&c>G+_+I9CuYx4a?TCj}?-cD*m)D`F2~79>Re& za0YEJhNB_!+mRbSvXe38#XGYadCdCA@))S19Q8T$%uPj?HrDv?V9t{ zEB$-2?lc6af=)L|{d}{RReaYZ6{qyn!3&3S+0b>mN3znNYShl|$Y<7C==l1aY;-g_ z`d(`UNvU#f9q_(*Ln4il+2R;r-EWK52;N&XLp^b|YQ3x7U=Zcpoi_K9iao`R!)U`& zUGmfB3OZP8vMDYpqxG?6O#z;;;5)*5fS!+GQ zk)3dkJgQEFS0{W>>-?momv6(&ow`(zr;kpa?5CU8AqhDgsR{b%?%k^c0~3FzX=~VJ z%0%b&O9aQYw)flgCnKZ?7{nlhh;>fPsRg4x))KRIiTSC_#IA_FS=A5RiW)pmd3!O& zh@hnYzL-B~46f58JDty+1okQBJ9Z$rBfL(wH7PJMprAtO+FBjlg?W)qL}`ZY|o+wwj-yC zG(lmh)|$e(svT9Lku~JU5@|3qY z`rVb)%^%si)p?1zxw&CD;^kdG|@6?ug;O#4>4Y5ICH!atuueLU6P@5o)V zLjlVP^9|87Ep8}#JRli-J@;I`YD>gPTDJV8d?r}eAy7WaF-R{j$POrk1j{8QxwQ1X z7S8Z~ebVHbd&;11dZgXRLpXIvgY+P&IlZPP=X8AIs$&jqTU3-U+Mcvi5tnq7x>!f|Ih2VC@-oJwV5E3H45YKdFe81&jcDrD&R_O?i$2(cd=0 z6o0C5%K#nNyj=twyx@j6hg92OE%mt=nMG<~x4zo*>P>E>b`zL-`<$T$dp=5;{@9D~=TedEzW53m1jQB_0sK3`u{%76!U=aGNa@v1Z-T^9?`mZbhiE*2(yj8Qw>e)B`6Gk9439A%;~v$b;VZh13ggX{s{bp2Tb64axob7YIjHK?%}2WNf;a58;8J zJzInvAYq9eMq2>X2mIf%XbH5z*bIJHOG)XtA^eaF!W(Xj_4D?^cnEUs5ajyhob1*+ z(_8m;hmA?3Q_F8o2;#H_aoynl3;5&1XCP>$kDnI?Z%)Ab5b(gu#~eY&ad=BtEEXk5 zVT{2ekr)D+AHjF?pZX|2zF$m`*U~GHpW=`go}Y&wJy#~u&&&mlv@)=>0zq??&1E?5 zhsC;EBJl(tbJx=d5V;CE4*5Y?@XsBRhAaU_1`iP+AAV8L3ZEaTflpA(Arv0-jiObq z1TPfc3nM5J#4i`5);F~`nUkRozlcTh;Pw~Czy8Frxewk8i@|~Tjr^4QK6uP`CIFMJ zem^`G9yrq<9(_NI{$Cyp{x8olR}}6?jF|`C|A)r_jXM0p1LXKu(T5P;9^V8pCnduj@6Ye)SNJ0lc&y)H7rYCf0|Al8J&xnP_X@t7pB6m%WJAZ0?sLWb zqgpEfG5fb_EfJ`>@Z)}n1NQt91lKPJKdg_fClWL+=%Jv0e;1!9Kf(ggbO?*bW6>xq z#^YO-Ro`RyB>WV<`g^#Amxt%i5i7q(0NQ?}=j)2_&>Rgya^MN@SKprkJ=!UV6a7{x zc))&#=K9-eK^R|iw+d2j{<~jzLf~I6xPzOJAQu4S@vjx%lmr9|D3}z49)T3y-9Zcr z+yQhBTteSM9^Sq8BSb|I?f~xJ(*Ud)@!u~QO5Qc!_ z+dDo&0F+TiLT_PTSSc1>rf|g?ayga;qSWyE@e(C0dFi^&77Xlt@ zgv22IT<}OY5CB=7@%cUote8v858=lcqdla-Fz=h7}(|hNI(3)B)9n<{P*N5T|M-%D6HR4!d)|0{vo3u5g-d>hQ;t@y&RAA0RuG- z`LhLEfdZ!PKSEcz3QXgFgs%im?D@~+0*%|nuLz99pgY4x1@1XbTqAG;B(osZI)RVh zp%)4K{Pd6v4cz#;^Z@(;LWMp-Q1K}cP6e7Ov;fXs0Ou}%a~Ht53*g)ZaP9&)cLAKc z0M10i3%4&RqcKE`W0vz_|$4U zfO8kXxeMUj1#s>HIClY@y8zBz0OtyT!T)!_xpTOe-vF`&f~>(GK*9jvD*&Lm0brRc zfV)To@Tw$zGZ^S+~8JM2*{y^4_1_s79_!Y z>&ghW(37?^Jua<}^+QUlE2zpNl$4dFH8d2I)zmdKl;xzs9)T)~O5neSyt10Mx`wuj zru4T<2Gr)~=B{mV*zj9jz^5zojj4cu0EGZm1+1TkqVm3d`}k$3sK|p9^0+e?yi1@w z2Dj~d35St5grAoHsVmJd5ui{BcwHGlselDH#E(*a07^_yrW-;Li9({07(5P$OPSBr z9J^?rABq1}u0JI-HU00CqR~H!#o;ZGfARLO1>^WAFGUL^4omPuAVKnN->bsm4g3K+ z|6ObUJ+py7;OnRCrtY};WH)uec)25Scw;;g{Uf)}Pi^uyxzZe3P6d!_c3D>ih#odv?11S zZWBsV7X-lkf?X+h|C9#_5XeYf8UDVM@=9v*Dq2>`O4>?V+Uom&S6fMGE~zQj&CC7F z&q+1qm6WZ%Z(;ejq@csQ0aWvR5}TT8AI2gG{4QmDSXTxxqTuG`rmdu=1yn*)O-WNl zNkdCnSxZSv^`NSnmYUWf|L zD<9lvsHLTEpsAvvs;aMYSowQi3na$Pi;q*+N4elYQwuQe+Mt2HCzu0nx}bh0kU#)6 z>{C_K&{tMgQ_<8nGyrsJDQRjNs;j7Is%acjQ8Uz(kp`t`1Ms{X0fF@U-Wtb&#-hAj z{apOcNNXwZ<@%#_wFS6DAY#xCYJB|!?Tq)rqmbW}{U8ee&4u#ftDH8<1>*svCI1a1 zDWmuAKV8_b$X9HX7sxDd&6T70Q|Un9{3by9dHEyV4E?ZZX@Sydd;KI>0nbRJlBSlH zhO4}by1Kf&ySti({5};e6?s*pGD6i=)6Kkr0JsvC&(N+aYG^b;8Rp7Ah_y89_ zdF|PU6F2w&VZo; z3Azdb$yc|zG=ATMzI9`FFBI~)3*Hk**cylQ!ztnjI2R26CqXzA@{A&=#2Y||6^(%z zalyDK@_#x6Ms6i7X@kRa9)1BhxVe?SzzaWaVQy|HZD@SVz;Z60A9L!sv4K7aIOO7o z0Q!$p{HDonD3!x-(}Q*jR>p>c_7%wGC&mETe`)s*HRn5iN(4Ch-^TrEFqi=5fA9_1 zIclJ9WvQrdZhHKfffeBTCsC+L|ID2+f3Onpb`WTmKho3-<%I`^5YEqm;15s=hfI(E z-{w=_+QP!X%u4zPXU1lSjSrd~l(w`nlGZmjvoWx+G&VO=w747qXTL}Me zyZS*NFp&DYpri%8UlB+H3I7px*w4isuc(hj`vB}ce-_FAq20GGuMGF`arIWvP*PIB zd%6G5V)#!(@snZrue1eBoB4|KW4^BUeO|rrT#&$m1QsN)Ab|x5EJ)!0M-upJ#SgqV z>dFLw^}L@Bx;OyV4HpRxx|lmgVqW(}e_g^quAg%9k9An|BVxV|aL~oNWs9yXUbI*U zoD3m2=wk62NO0E0IdIlRJfL*xBJh*2AD76orArns7hVC*`~YWNKud)I2|pr1l(5L6 zWkSoL6)S&%76}Q1(=LShL@ipnoFD|w!C158*QLLStd)V5DX%-IvTgnH6NfgqY**cA z;d^eAYxoZRhgqXL)%;d$ep#a~``J?C{8&W%VJn=0p{5aHm$i+pc=oH>&T+R3_*;J< zALYER`?6cheS)xOpY{>sqjvTV9-dyO{R0Be1YNuodil!L+mTVxckbSMoRFCGBst|- zZeITLg2Fd%OUvH9FRyQCY-(<4?dtCN+S}L9m}E{(&#-_5_@{F$7GAP=@#3XRm!JX3 zYryFoOO%&FGHVZ>5K(bi=ez9CxozR=EgrgVP+gw2{bh~5-{{8A=heU=9h(q`$Ktbh zs&BT^FmRJyfxB?a5YMOA8cDFx{Ntj4;ECPhw;w;_AJY*zcTUGHBU^W^A4hfkbxy|- zJI}z&cb+_d*W5e3&)DAU%$2*z1@Bw>X7*?wbvPY#^&$haZ@pyUO44E6{po|csOixm%sI4>&DuB!iRR9==X3rCGzB!_u7#T zqs$<}d3zhB594yDufEB-xn|KNx$$2QeoS>Gt=P98H~fZ$o3S}tHPoJ6e9pG%PDgbA zH-6m_LtIw?)uyqsl*^#GHu_rovw^{ zz5dCB#L?6xtIsYjqR1F-JlfAXnPBjyYSclq=Kv3~WtCXdFNn_u2#;4EJO;1S|GHsj zuXQc8d}Wt2b~D)UGP;<3EtRW^TqVCQ$GK?bi`@Z>pZEVRbHFvi;$>TAb?8ML!6qQ(KO3?WCsiNt~PJHz}M5_EZ>w2kjz_Wi`Fff^~1>ssv53_raGuQl!7d)8PG{H2 za_ddL0MWa0|N9m!UTDFE7F^K51szX(?RyN?D@gZ~9Cp+q$Aos`#_# zEsGORzf1n?hkukmulJpOJSdL*emYO&&5deo_Z2jGA~OKx6gp*b!sa>1Ddx+N#^aj#}Jjt$J1ZhhHTQvD#K97XKX3&0OIa`)+9`_RSwaELU_oEiwr zDO9Fl@4l)(WRZRT?tR&C;^KYtc^5t`QULpG8A%i#w^SZmnIEzwuXbk5?;R43E=bns z*`!b%W^iUu&8gJ9#vK76&C{H_&ABEK@ofwXVx_%dVv^Uhs_n?t#sBSF{*QOWda2v+ z(Uh^#*TwlwrQ`_eVp0v&e=?aSMc0keJFYjnDYQceCQN0vu73HnL>m*E8ot@-QK9GQ z(AFk1SJml+HI-rF^II24nr)ihBc+ZN@Uf)U2Fkx{f(%5c9N| zv|2)^q-a|JI`(4rD17kEu$+C>aMhPP5B@~ockRj{Z5nGn>*to;a^&IZtMB_h{h?Q| z-L45fuRiVtHl^)pnV{?)_wb$7e#o_2N(wKseBvuP^*pF|cBrq{Oea~D7Rz*3^^c`# zp487eZD81Kn7|f4o7S?6G2@nG_uCn`1X z5}h7n?n%n={hcoL)<3SlU5AW3m0cY-5OTGhZS%V=#))$4!cf2Wr?hKBQASr>?rCD@ zA;L*|6@_0P4^k-Rh?3&zAK>7JXl^wRT?&yU_aYo4mTH@I_` zeax$?z$#Jo5QrQd~pNb3GN&V%|LoS8Gev+0h>K`EI5E_qud9-nO= zkY{9Ls$LsMzxzD4ZFys{^^5#H_X@YHwz?D$f7EkUTl_#}3U^-XDE%U@=wHu_Q)faa zF`tGrL*eD4QzG_5H(pi{FjyQZC#y*}WS3^gS_~RZyY-T^WN2$ri{quFp*-&N+j?TX znqN&;@~-S>;l|>@^I8Ure>hghU9V$1UfpHWG))Ank1me}y`#VB)Gd2B{(k%Ej(Ks{N1Q-#*F`t;po&z| zkXhzT`0NYVM<%O-t)~mNNme2awtXsEo*iR$tkD*$VAmCt8K0lA;R@`!%bwpxO;1Rk z7#kQ1eCIJA>vXaNL3$Ozmin~RFaGTQ(&fO; z+?P9!ccxow|91XaZM{>5%$}8E^XPpHZ?@4){@I>B@{KdqQL)jpPbAQ@XK69Q8(a6q z{Rz_!3RUoA?!?4M*@uBcnea@oH9u0b>Tu+`0=q31FRw>r2?upr%-8;XgpHDCCT7W8 zgrj5d2>cSfVt3Ik)MP11GIuKO$n1w^ry!q}wmjYO+w0uHX`CcPW0%G0#ZBGuSL4_1 z*V*ekuf@j2vfOnqi@|bfnG_gpxe}n6a(p>F2q-b7H<}Y8cj#R}%frn=7j(K=>$NLS zKQ6kO`Q^}!SEZ-kD9*aQUUL_8wO6^UUHX=`Nkez{v1R}Yb?;DM}_Z)asFsf6S z>e8L()e#BX`f#B0SxnyfAj^o&`d3|~Zd%=O+CCqfz|ffO2HWv33y2vzRwZ!KE=j021RwG02GY)(r$6;)WCjAY-~Y| zeO&${of}RyWGP?EJC`EDPMcU)h+Q?+o1eiUO^|11XU}mRn@ftSW~;dlvWZ#6IXBy$ zmz3O}t!k0HglnK3ie7E|T>2M+xf%BE7|CVnrv$Y1l|@I8&yeNK^Xm=|^ogWb@v2T< zW49jbA+hk^(V^3{aU=1 z@m7~dxnlS6c9%Lwli%{Qf-eM$-7hwM!GkU}4Ob3{w*Gm5M#|J~B4F-iIo)~xdczY> zCs$GNL+4C_=hI%tq&D!NSo4bNd&Jd>@2S`6<#n7LjI-<6sT&o5>GQy)`=4>(MBJNF z6Uz&rTcL@cQ4TRtCvnT)J<~I}Ha~8_R6&Zneof2_y$uhOD%m}|D5P$vElNbEa93V5 zTiwc0y6PMaKU&{2U>KaGE#`^-!$HfvTm0Fvvda;MLgw=@b{EF#&& zW9zqWe#~T^^#j9%Y2(?vnYDR(yUr4)*Y4zww0Facl^wAzVz-YEAtEvdhO!C*qDDj6 zHN_=*=;B+3J~VGnw>?|^mLWu|X7j_X<^LhvWOrgUH7-qG0kzC*+XbH8^csflw| zIVN>lLsQRpn`A4|AS-A6J)fDYUL`$oaYvoZ5caFCTFuY6#v8T6M>EK3sd0Ox*cSWBLbo4wLf-?hx%Bj_j?Ws#!pENt(96V`j z;}$Hg_~jY9XiH~U)?T>j)WOrzVP9^Q&8t6LjSdE*`ojs*X4cm)6!cWUpN1{E#PQds zs#`e1&qd0wI=$26zI{v<+TZf_^^n5v)gJyiX~Fl%v$r%&uctk0dvjE2>%5F>FBdO0 zahQ9Gx+^FkGvojsJ|3<^f5NuJzAen#Fa!)k(_?1s*QdBDb-DEymb}pBLD=Dw-X{A+ z6Zf?4+To;GGc!N4dgy&S;dUB8!hV53&B3S;BS$g0x8Jc~TS1%!s{6L9B@2{KrFv6#M~el+=7<-&7No zFkCb>5;D*pOfP0<5=Kb8kNBv}{cJeFEl@Im9-yJ<_UgFw2Ew zXLLh6B-g{ErIfWDKL^-Z`NMrZWG^>auhJ`RZr+5bz;Zvd1^ zf7`E5cbgkYobiZI%Td4H#WkAM<2seI_kOu5u(;eflh3v2<(pzO%Uj?euMIT31wewEq;vd&I1&YIEYf*eM0~_($unOyn5L z>$TCc#L)%0V}tg0y?pDRJr!|1w1}8;L+i7X@)Jo}k29;CuJpGQN_~+92S8nyaF&nx zsH>k&1{ECFuX6@6cJddGB*GrFZ7-O49e#0-WraU?QBG%gapn>>(TJzSx?YNiV zkiO6@H;4rdL0gwx7MT?i8JLthf95|M{AVoNPyJva_#3|Oe}haM4uS!@12z~{A_|Tr zCk-ldUvnhuBuMGLBORQkLgy~n;5pLgZPX#SQpifM{4T+0>;p?F>621SE@z}YINb&I z*|vxNp{@)4yyVa6VbkXYJm?@>`Xm6eJr^i17MzB=`~_HS*`9fBi`ew2&dO2P*J&ns z)>fd^4-_XNWVz=Zh84^?kv!;aW;LTVb~BdQ!7u#*Sgu(wQ8v*uQ-OgE-YvOL4B2{? zNM)1wT>x0WHpDJA3qGC#%dPulvl#_d_elB)!tpksRM@u1EimSJ{-=W@(Jn(a{jyq#x#Lz!CrTX zI6KZNHmMSI`4m~PwD{~a`-oL@wu=ghAezaOmjwb|Cz{KHo@c7)kMSTeQtNC8Z1CyS z6#!2Z7PKos%8eF$fPKywD&s@}!C^0d;S303Jg6e1VX+}FOS}Fj*9FE-no$K>1tW21>*2^8Co+2sg(5?Y|p$RRC!jusx zP$ucs{c6s$yxZUnYWa*8TnR(Fl^O~WXp&$a-f*i{`)ohHrtOR=|TmdyLSqTHF<_Cs}y|(JgR_e7u>XMK;$~W=J|mIK~Y;9m&ATyMu{B5*>zAYqJ{;_ z;SGn|KY7M~WkLPKENL``7bmn?5|cvF5TADS6r@E!CqZl(Jc|8Fb_`gTEF+%C4@Sm> z=kvab3zzXrq8~M|zQA@5QA}8p`IagSM#`RhvY>W<>=@XWR(Im1xyw?-1rXWkJXDX^ zmJNvb?!1E@N3eo}QAc#{5h=M&}Z z5yeTnANyVJKfMroLbz-PI&o~GbMkn`lan`jOx9Fda1_tL?SKcpfMI+;cv@xFa@6I; zWr1nlu2UT(_Sa5hIq?!L=O}mOXR?=Oqy-TPd+i<7n)J>0niRnXg1`H(_?kO46CaRB zdj_eS95Gy z%w>+S-Z*gv{#jReLf-hv1{GQ8Fbh2~1=SPBWouJu1F8`a+Hbw~$VBs#oxR0sud1K8 zXlagC$nHrUDQk0Q zNh}oN_R1{+h5h%U_@$q`f3KByFm9kfo*Ei4mJEFJgt37Am1#!25Gztvo!l_YxF-maKk5b zAv8X6S+}D=mRr+@*{Qt`{o1%Kx<>ypnbeLtcbSPxQ#(q-+~cNpMdY(;u3t9ky}#Bk zgtonq!;_H!C~P7eL?ViYWgEAatZz-Sb-ykuJyPEG0W{0(3|;0) z+gv-BloVy<<%&aq&GK&OfbKy~#^|87S{gxr4&_CsS34&bRp8D2rS1H-4EN>h+a5fa z<+hv&uPac z<{wQN(WmVin%(k(+D*@QlL}=^@w$$9kB&9f`$mrR9Qa$|QR4i5lxQHma=E-HrqV}J zK%u@MlRHK};!9bC&7pv(9S%pUw->a zLPX%DZrTc0sf~wk{DX+2cYPTzo+(+ak+DckKF%r}fxt0Ah3^xU`jeXTYMS#j$GfIK z`W##Qm{v|2@uEd{zNm9wv$wcR&8)0{TlUC>UH&TX_2s~Hx>Cw{!OSz&8WsyPgtt62 zbGjmEI^QBtTPDmm(`UY5u|Ig(KCco-7fg^xa%mOIN+)Y)U9S0syPG~0cfNn#zY@V4 zR$82K&95<(K2mSlV$zsqgYJ*%^=0}BGconkZL`xl6UADK$8N_MIcpN=q~IiZe8rnH z(Wtu2>7I&B@u;?BidDcu~=)Cx~zbH=zl2kud*MY%&F@J0* z?`g<>NKvnGa@$?+SnF=KWyRsSBxEP7a>u?#ZScpNd8F|Aams{a9`u;LD~9VA>7k{A zwwOw-q+13?W#8Uw`ro+Wf0lp7Q|EZ@W36tBvnK7^cCNx8iyHvF#%$0;89Ncq(5Ug~ z9p02><@@(E&{JmX{IOOy7sEYn?#@n4jSJW5FAL5HeG!rO6u)bQiiDw?kwS{P@Y4HQ zpk@WX2@WB8O>?dOjRMc_*qGz0*kjea;=qI4cZ~HV*^_x;S5iuLxN!&Q?U6pZ4H<<| z@>-o`S1eQ0I+Qne=^=J26Vk$cf-;nhy&}lv4&YEmhKIsyv4Qgsd?uJr6s3L)M>;iC zTi(>Ta^`g{x-1riVL?S;5wEFfC!0#jE$r_8St5`?p8u zYV?0d`|w7;WUYns`=^?I&z03h0!>dCBp;I{-TO?h&3#)(cQ33e;ULMF?f)wjyd(2py1@Q>g7?V}1@o&R z(fW6Ac7c{2&_%R*2LM5zx%)xB%GDduuJVTfIbVlJw6ODl6r#C+h!D=)MDP%v4?yQ2 zM2aJ^PCtPvlDK z>LMSBgh69XH-G+H=5}grViNEc>kYGBb#amkqyzi zA?9-({Ux!_I+n=m0m|JBpq(d<>$@cOG?Y2LB=!J5itw80Laq&3m`JTh2}~C~g+keM zv*0b9V1?n3n4*k=&;xvnEL z3)m6z?JMHVl6+;)I3gFve*p%2a0I#R9w?{*%$G3^DmkJcU@a8QPiT=Tc7KAt>;Z|u z`(c*QFtrO}yqaQ&uJ=60w3WhxRKYhQ^Nu!VU6j24)z_3wF^U4e4h zw4gPwecnpY)+DAM$DJn6G0Tm{r$RrkkUVnvhJtTU-ifCnc7I(_=bN5U zF*tN-@y+06>qH(FGavTj&W_hx9#|2UkNplscf&V;`LX7B`lQKPU=g3tugja1nj!3~ zfolnpVGkVYL*jo=j!7k9D*eXJnR)4i-FSP{=XLt^oBVrn7U~ZO+pm_|I|87$6T&Zv z*%Ala%R>)$S4e`%T0t1@b4h|IyiFx8b^Kq<#Q*ru_=#T)tlxte#YywS)ZOr%TX@aW za~jw5-7=bfN9P_nLk?#DbH!@nedC1YI_GDWCGCa^0gIJ3-&hA8r{(qjr8=jOx?### z5}&>|WN%csK5F?4dkP!OK*8-3?4$jt&C{|h%r?Txp$dE>`uQtp+p%aiYi)quQQ`jH zs`yx?j7En;Hg`=E;?x3^9gZs>?`+%<_xhkHm}m2%L32ciEw5Fanibo!W7(%g$;{5l zPm5Mz=sy^Lr^=^a>%~z2vI*HC%K2|$d<1+T+V}sv%Rbj&J2xI*ayYRGCZx?Au)J)} zD8$NkmS)#DsKHW?f2z|?Hk@7wq9iPlV5YHB+Q0J*7!0| zc|fsgMioScQ45kGKkS)BLwCw;jX^jwY2uSaW=Rq6;w20185icuV}>-`r@FH<#RoU- zv)!ol^|+?EU0aZ_%dKdDPJ)!*PFAFd7Heo!45k&dBl>aLP%XlQW@- ztA1s?Pq%X2NObhbZ^C~)g6ExI(Pet*=-gD4XjtcAUl~`K2k^~W=knPkZ)t-r%Fj-8 zv$v}t`}5D?-@g|sM*D(Id1do*;sukMWj?VTR}A$O!&3&8j)vt|pQfm!6G)z*=&4|~UwECw-yW+ML%!QR zGW)VGAlvm}k?xTPM+16}Nufm1FD!ckX3f^KJMus>9A*#gh_{#CTS+h$PfuRvcOPcEh(3P|`JgdNv>%Q&`Bd+vnN z?Nh9RT%OtxC;2=*qh89*+!2nejrkQ+^-uSeF>7T9=){9T(RRE(g*0b|n|-%sYSFgp zX%<)b0KSen7VPafqRi}?mvNG2dF~UGhi&$hsDJs%bnB)a{^vFu&5)0~o~RdqInaEQwwBaH+mpS+2j?$a8P;Q71dmE<70;$0e2U<#`@UVkd;e$(D!Rj62*)Tk6T!QoyXQ(gDpafD~@Q7 z1c&UTzv%`=oGv%sPv^bPiCr@jMzz6T@sr!&a_g$gwQk*UtG)M&HW{k#zu;~ZK44IG z)H)UZDFLaX=b`$@U-lN!gjEd_W8J494Z;VCRqdl9ILOC+gK;czW$7lrFqP~Nq1x>9 z<^wv-J^Y6q=ey&NZSzZQx0_k*a(h>f)k&8plGUR$yE2N7X1@(PN3&IOmPYN>u0fY- zZr;1{!?glRQ`e2Dv9wo{F*y$coj;bb_jCj(SWCrU56#xI-fV01ccG!yOGneupi;Y3 zno2r_V$+*kTjbhi;N)l5LQ0~#cOPDjo=t9kn*RODDcf~HZ?Jm|HlKQ$v05xHB||g% z-mRVD3jm?d+ssQYYEQywhAyqAdIKHZjpx+}#XE(VNg-wkB-JFLrOqFkve>+4%O5wG zvpN=Ml&lT0@6#W`K{Hgp-6C7doUBY1p;ZTD8yJ!F}PFA|`c zki|^KXzs&o3R*^6b&T*UJpfN^WyIPxQ3IW)wwAlECuuhvF4J)AKm94I{`%x0bG6Io z$$GNh%YOg8@}itRx(ml4d(oWq7b}@_sA|Z^dVBv+(ADZSi(2nh)Nk#%b)a=e zQDeHo)6;1-2+R8^J6SmPeirxcuDP{t#bnN7JHzm*Al&L_RNMDt9b!d=xH&_sA&;VC z)5+Jv<6-UqMWt8ffytJ_Wo5T#UuD}{4Ic{l5G^f&ANEtKW0td~X*v6IG&~I*k7S#7 zYGX$#(6S`ierhu3K|f{l$M1?$Q@Z6O%H)7;)V--TBKhaLr+AqP=VGaDv)|7fBaWWK zh=fn5fXy*0s&iDvR#7MO#z(?K=eA&m3mn%|>5S((LXchb7>ZACopWq5V$%)+4}M-~ z{qk*Y`y&$Z%kLd^G6A1sjt~G|>$MT*nTKqguC3}zGLY#EY$ZLU$weDS%Y5`l`-8Yv zCnlfQ|9;q7s+=MP;w9 zwdw9KI<>Lj_3o_8J4KT%`YgzXS3{{`!YOjEk%!7WKFqkj*MyVdT3*vTiuPQH0F_`_ ziVsq=M)K%{E}HuoIl!vAq~x^{DJr_HW8LP{ysWPqHzJXyYp^eo{CE zfTPFZ(?96RvFqjjp6xbE`moI_c7KD>jTrs-S`Y;*AP(h=3aCD`a4s8mC1H2rIhH=d zg!3K}V+jn*^Vca0-~B88iaQV{j^D%6PM`%*W3!11u=1{Rr{Zk8;*a`lpL}=wm)|oH zPq9ja&55fNryfoAPU*DNxa*$8#!uHcFtD+Q{gXlxrCQIx$+viiCEfH`8XiB~FuYBU zC|`9OlVt{@M}O%dZmro=kPl0m&4=|)9i7r?ivBc1nEWn?BH1)72a@vR1e6$yX*?s$78glxenQt?LeV+vPTj;Iq^>zX5&95ceO%EFB ztTyRLJG@e)6A`wFvkfD9*95o7L`gr4Rj0k~35H63A73-j?IoE%P_w`0kdV0ku3T## zx%NpcxjZ=;M@b^ngZlTg%a6bIE;YX5$R{4jl>`?4+i$w{Nx2sOx|>IF->dic`-I-5 z3vFNfD-UC0zpvBi8rXVOg^2e$qx34bu=(bB?G4xnl#UtOtTpvooOXhPh+G~(Lb-n; zQO+Pnx;8)*g6C?BLhyYMpFSxREs6m-Qutg+py0hECN2J}5a#8#Ba-gf1aAhVUY_MV znI$n08Xh6SJc(H37L@^S3IyTxi`)&M8AjY5VlZha5o_wX2elc%!&m950vk~vnE&0! zN#y+}mw|`}h*jgK1>+!o?+60&C%Am%T`2wwcxWdV2a4(-GQ=MZyT})bGFzM%4E2Wy zc7g;>Ew^_`jF@x_xk1Pb1)ughDggO}Zzt!Kmc&-fV~`!jOqFZN5fY%GUU(m;p%7j} zjYF~$K!ZUxWB~(7K}_RGB4^GoQS^II*8rm5H=%_|S&*uT3h%`5zxsjih-CloRcyg* zq>2sm-&e7LxH#?^4iqdkgL&BT_962qlH}TG3KM(l(E`&ckdVL?O}|NRL>|F#RgRil)w15_$2&W*|k7PXJ{i{I)qH=sxv4%nu@iBD4um$qZOK6{KV+^Tiv~)*sM>z;xJ#=3ZBat;xu(CMl_+hwr>52yMUQ}-ekwLi` znz<98S|QKI9}y0NYl;(oRbk33i2-%2gTPmU8OWVdhG744nEaZhjSMY@$`|}=eHlcG zC;<|Cu4@MMJp8vD1IQTyXNPZcD-@iR1?4K$2M`7RjRwPdCrTTFn!%y_EFk$1KQ8hN z*d$jsfpi}zCIfOj$$Jf==rt?@WB?aX2hcOwgp1$?L^l?4Yp}@W@(C7rbtRgZlnAT9 z1|X|N6+>*%64=S#iNH!%@<0YA3c3uklMcDHND2p(kF|qD7aIgn>OV11Li!PcNG$nF zV!B=s8C3&PJKMqqwGhXUnTmWRN18ndrs4$_6NJ2&C)KF@+~4hpnJ$Up8c{HrB&a1a z#crTE!70d8Z2qYKe;V20FBzH2KWG~94tP57*3m}NRxkeRXjW#B3pvav;)7O>@}mC8 zt+;KIF4^6&T@mM(MamCG|NVZbxALafWUkti1}9K(Cg&27xG$pB#A5g^_xtaSAENd= zZR|AAd*0C9*_bbTPThP*OU$#pg0$>k{Bq-QhGFzza>GyRzF8l$IUkfNeArj~uH$g3 zdCZ%rqF&pb+4IfqNw_=+gPoCxZ-Z}JLl85e| z?mh?Nfmc7Ke4EtebK_GAv-2854)ScslwJ4ZN*q%%O7orCqsNNaSIOlkKQt?bmC`JX z95SAm{;t@3*dAtkcIo11#KEwX9-k!k)KCG`Fo&7KVHT(u4i;MK>M$NE*ogBEso~~U zObKoz-U-3}Chsvd{3m5kX0u;dUqcIH?UB5!jcF9gb-D!7tB!q=A8@liqo+$6;8)N? z-)em8jL@i)dy6&U^Ye*>BZ*s24O~1I;g}geb*I*}=7>qdj;XvK$KzgFH|!)W24kSZ zmjwJ56WEq@(dT+DLb0Lc_>Qq<{LswWBmApzpMAc?zPWZ}^A+nZv9+6;Jo=qI|IRpy zWzSE7Qz&1c9?!`^DzY`A_;Dif%g0-XO=T^=c_fhw-^ql2o9#d5PO;dk##=`WObWg9 zSL$Jfz2X=4WKP3;Sd*q_I2R~Zw0vjKuPD2}$L8-$Weo~GTZBt?X6+tzwo~@DHNw`vt^%UCr&J2pWtwRrwHiAFIXBTHzXdJ<*)w=i{ zY;PQO_Fq4n+0T7bnZt^6$acEqdo*f~Ui4N?WLrCjIt7wk4#A)jnW%}Zit9Ojwk2;^ z@Rs+4J)I6qfard_hJ3c}HvbBxjNt;FeH70ZJ9A>FZAK6_^{y}>H_QJ#s#?yEf4#xx`yY;OzwT`&Rdq?je>KJ+zHY3z zd~P@+a$j`gkM_&wFxb4z=lbh@>K{1re#IuFE@Aqb>clR=1bhxsLBEDJF5(@08;t3U zXi}%+55I};p$#7^;Ke3CkLIaMPX08ba;i04-RR!-`P21D<)S3WOZa`wjH2z?cNfh+ z=t~8QM4BsTfgPL(8$*<70O3r(RU}h&s$fAIfy*oL{!)P#?~@%Nk%;2G$)@*mK74gN zbo@k*oO?s%a9-g9>@Iy1?sxrurHDZ@(Snz^(ImMh820k7kP>xlf}NYY=s7$%&QoQt zB?RNM@tStMZef&y=?lMuMtnFPD37|L3K;!yum7Wi6D^m0)7NMYI^8{FW^S(kVQ<0( z3p7ym>08mI?4%rTO!LGh!B^M)`zEzwGKae`dyhQcf3!k-t+-7xKaqs-I{G(&etVrB zT=R@hRa3vqeXwoKd(n_`okUPo9UX^mk$wkT`r%qbpL8ZGRfTCT2ra%h-q6A?BOKZ~ zv%afgzCawhm81Dccb;1N=y?|T*r^w<%xaI8{e1YakhDJvNzz&QJFzjav(BSZ=mlMR zMD84DKBPA_k7eSXr{%C!Aw2)* zB9|t)QbCKnC^X?ZfND|Yy%n6|$uij)P?G-{!39}8R(lCkR=x{$KzB9$AUQFwLNm}K z$6rP~rv`HJfBS;5J*ePQVQR|u1NqvQI~4A%)bCKP+9w)Vt^~lK2}!-z1;bnirc&Yc zzETrEdOJ^g5G}8kRJtvtpb>bYQ$8_0pB=o8M;BtSHM3y|@GQ-59--Z3i=^*u3F*wnTHP8U)z0sW+)H%ggtl{1B z3B}Y6vS8am7vjsloHaa6OVcsG(DTiW3mOA6G07A=g=ajeI z3aS)GJZqZoL<=ZN0<}Q$H-3b?=RTPo`K5F&#EHVa=+5X&c4gZX^YKb7@2W*s!NXgA zJ-_O^d{=M@<GaI8K{FVfV9| zANMDF9z<<0S2Q}1(9?F#R57{!uj7vjVIw6%!UIPe||Mz|Zu&w~O zLrICHoUrANo(G9dmh{%41Xb)nm+_kqPYVdkrP5YUQfftt=!-h#4f^%)=#fu}Ri0~H~sz8`fp_Sc&G+Z$;3k?FM z=8j+uI+Z~j6eSUWpSQzLutG)uu(h&UyLPRW4JcHPdVh+O=V*vHKC2vK~Fn$2SH!-#F3f(lP~c{>(i zLx3b!q3IhXL2!WED{KHG()+_{r=CNJcwu7u7fFE)H5%gcDlo`Ir~G?yoK41!IKfTH zE6}X5IU)t5O%8%c6R<3x?IA&c=jZcO5kUh&5BT~m4pR@*M8Zj+Do@WD8BigpP}~A8 zdc=~@+)5o_X&?1Gk++32xaTZ|)eS^6^POxupocW(p9aAkX@QawJiLz!_#=>B3lUz) zh)Y5ICx}geji)~}#1u?iHv?4Wbq?r??to~mq9P+20Cz*64HC4B41e;SfcdYH3U*=PDX=mLhM>poPZQ=|6gcvJWErBqoj5&V{Wd0$@kVhL8@wtWABtEInDKE? z#Ce*!fyhJ&G{GGX0hzZA08U?u(6lC;JQ0kG3wS)S?k2L#_awOnn!-v~)g`ef%g6MD zw~Z054eD#3Gx#A1-$5DYvOy~U!#89W;o#wm;zC022o~Oo+KuKkcw$Ar?}dwQ7*dY0_-4GI(G|hYJPQ)-yqk?#Q3QSSou$TKJh?LS()|H-pvpp>Ed^ zi30R(>M;2JD1nkOQ26CKV5teu5YzPJ3GOe6(OQYkBv4hl3dr2Q>W{_|5qbQlQ%LmD z(A9Ea)0(QAwuh$eVe}kWK~H+0?#+ul%vg;e6))?0wCZAXEnC~QNh1?YN8RG2ESJ82 zFVFz`6y)6RcHrH5F}aR2QAwXiffou--?*mE!}#kdRMALI7*~J$5YR6M`^CVVd|hM) z8N`9{ZYF;}zun3xxJN#2TW=b0_IkdpxpH~mmM#x{^woF3*DewVAgYaUWT0B^#mGeW zXK$DbL!{uP?v9#Y_t7)V5H+wi{T2ccNDQF0CWBtzejI-_u>&AJ3#6CoGvoPD+`KURylGY`$USdf)Z7}IKC=muo_&d(gxDBl%# zd8%6x2>Taxt?oV=;~^-b;($Mq%vPmKJ|`ZoiP9o8UB$F)I>rF6)f1I}Nc-FoJ~(~}B~h046zk#0 z+;I8kMD~NsR%_+XpDz(gnxH+b7d+R?(jW=(j~GxCq{uJjnTE8tg$!_izTw&q@S|$9 z{9WdyE$J86aoj>2v0-%Zr-Uaj84dJnV*~U|Bl2M7xw4}H1IHa->hbMF&NKm>Tq)Py zk7?oXUI|iRry5BmOcg;x5Ik8>!9C7gtAaV%RTijISL1ceh|ANdbuMOqx0J3d4s>sQ zNXkEE?UeGcX>~yN2}2Rwal5(l9_q)k)^>iA0&ZafvCxyK?|X<7z{}uFP{s?vek-v# zi`YvJ8_I-+b&pnT^6)rt46!~%_#A_VW1WGeBn8D<)9Grj@+T`{aUV__y@zM~V!*er zrCalweQ;g=Lc78I!eG7sL+_+X)M3n3poxfR1jD?e6UZQs({dYqZ&U{(j@F zBcDh%y12WBS6^49zKK7p{y9yw00|WD4$3wPRR$VTdTrM;buf>XLt)f%Bn=pE6Yb|0 zI;iSNr8$1*duA@a6*s3>NB?}-)J91yu5AY&OwnE&$MwrV zdAWZ5={W_>og*I_HO^N~WzBYDga(~D4a)+3i#OlH#ZO)LfH|>(;cS2LM zZ`%*^ynPS_-E?xOTU!fqKw}**F zSA|K1T&th>`1891W!uNmZL~Ry+X?9j5&O!%e1C-O#sgemDRb0!D!dVIY!cgUtjfMm z`KNguGq2ci1#S=FOkQ!*rbxZ$AJs24#m$ioMbFsPp(J)@hAL2;KW|LG4LFjaQCEnG z)P`1Z*4q?Q_E0IYe(LL&4d#!YRM;OmJ!{rw9{TLATB)h32>B%rB;j=){VwF1;LgpL zn|xhJY(-66e#=$rdN~)rRp8U0$qLpfukQ8Mk5S+J(xj6xFm<)IAwfb$az#K->{GoR zarGk0xQcIW#p0_Qcpt%b>#9Y)eWgItd7dWDR_K?pyZ5T=vU_X#Y=gt~Lq4fricaSn zMmIFb#&1#c>{#|A6rhmz2C$SlCDa>)_Y=e$b)SBBJY1E+;MqhD2ql=*jJ?WPx!N-2 zd^Lzc%YXRghg)qLWy)j97SHhd}jqW;`W-v}!j%3rd^Wu-FWu$1wSVCg$% zdmQ}%)&AmFG5E8!=Zw7B8S_N2{T-R*K6`Y@T__QQuQw_&R!v=9Z@EYbv3e!{!ER*5+~CjW{#9BjjUGy)7~L3f(qR zK=z4w*4Y!WUB{ypW45QFMA9vt&VN)H<|HVEeUketSQ}qyFs}T7lrh+CeJr!1vnGxU zC@UvEis+OY;F6y8F5w`LUVX`}bn3~98sGS&*0p<(H3C3q^(argOBgOFCTRIM%G|kr zD3r={y?tv@dsJ1w=jQLMVEG(8rvW9N?a?lJwgFU=(*`WCxE z!Br%kWjKKUR&~I)G3$wMd%u8mV1UZdKot~iD}f)%r?(NZzc>XYmDH^HaGWphHAl2{ zVg_2|P_(I%Px{qHrk%4!ax>lp4!mvN5xvGN7?`BReL;<`Lx>wseir?KkIxA{Q>fS% z?D`>yBiz|wTs`~aRHwC0d9l|IdVYG}ji6Tw{pvPaxsv89^_YK8rXK1jVjCqPg z-~P*!y<*C9d=H*K9qbc9qLj?5n)rXC|Bfys9S`tQ?X9Krb;BhOI)wV_gsS+&SJftR zs?J0%(x8)ka^DtvJd?sqJttY zQiuT7|9~m}kH4J16R=886gc}s9AaMAmITC?f{>-j;O78pfn|Ld0}cNYYzA;zy$bPu zSHD0abiY89hXC#eUYEM71cAY#BNo1R0^E=J3qAX3MpX#^TY~q8B(Dh~8`z2%48#PG zF3{)?Jl+Y8#-J_;p|@0?8&x2VLxqaOeP&7QE<{#90m{TInC5c5uuE5N8RROE&@b@pi?-xnJO zjhxgr0GVLY@SkohkW)7@7JfBlzCbdluOY!&>K;TO7Rvxb1Bv{SMQ*03IT2_MF|!Pr zqb>BM5j_sh@ii8h3L@dT07x{Co?dFJG(7Z;p(=1%60-*6U!@mOubgnO5N82wRtW)! zy#C%aIQmx&QMqgm%uoQl_#VWEB0JTp+Ou@$l{e~g@wwww0sI)lG5~5GMLq4m=hoz-~@5l4}ATV+k8Z7?cpG@i% z$+mWW#9H1CQRbId17yPoolqikvjch*0@1f?6$cr4M+kE|&jPZ8#GU!m$bPs{J0w^lHKSdxJFcBZ53gqH}@j5gDP#or=&u zO|CC=^+W?>f(;6aXhJ3^hMGDpHwWx;XN{8wHS+V6~k-~V* zCXB#X2!a|!X|F#6`Uu++IpQ2P$miD+n;?49FO-OyPyIp2q%cvk4lTG!jS(H~;pboB2!HdOixi0G z)(P{V$w+PxnZXN(`d5Su0@6Rsj*!zq)zV09+Jhb2v}62FBc2 zIF!MYCR7(L>(I_E0^u3{H~W{HLVfCLcY=8^Mv8{&M^M8T6V#*}%TOzt(GexhKuvD zr*}+I>MQpa|IjmxmLU{oY4+4<59i99TjA4HI=-bkC}{7M6iurQCc(fi^^yv7(Q}z5 zKI1YY?H2Q4-}{nx-5cl**4)<3cNN!*9x!qL_{{vDTfb28xAd7z>b9$I z;D)3ygMm_W85A zbu-7joLZ*=Q@&jpn(YH-(PY*$>Z;o=tG6TU>XY<0hFZz}Pmtm-GwDW2u5lvk5l@dy ziDa#=DD)T`}+O}H{R0uB_N3r{!HOn6tL8nLVe8C$4>G6&NqbcKX z;eBRCxR2o0?`wmWcYRlVZd!nRcl6YKAHSOvuAY#%sejh*s7~eF>+QmB>#_7CZI#3K zhr{cKGBYoTd{`cO|B_f7gH_L~eLY}<8|Bo?7WUQT-lRQKZ2sc8-EeY%Bp%dMUO|zb zomnOA?Rl`2T65+u6OWT29kAJ8)m4OU`2dl*`nG?gIsZh#%7MFn%grTN8G{ zx4pTwuGkQ249l3Nkh*K3KK*LV_~W1444IcXNvVI=TnR@TmmHzJ!1XA*dikn9XYGy` zM_h7-M>5x&nftB=J?ig0FK#isV0lYWPT8t6&64&r8ONVL9rl&{YR#qeElTp2&n30r zEaC@g-S&wWtRKSd_-zAb5p z`t6Npg8Gu!vB~P(H8|zFw&#q0s#EX+V=w*Ku%e9CPWs-8MfZMh<5FjqitU>HU9eTD=?~KMj);uQMAsWSfC@*qBpfUWAIDvQ zG9FiZ7>+2}r1}|q&i^8n`29tL7|!AVe$mD+nomd?Djv%pIKH?0&1HLmiOEs z^ki5m+;md@iW2$3bD;J@b4g4EWR-XIll&`T2Z4_)v0vNt#*g`g1nE7_m-su_jP0_=We)Qc9GlJAqiU+}BZa6|H4L zbCt0YjuKe?G=klI;U!ZlQ=)@PX`k&SNwCkQONR>Ij+n45_<80lB6QP%`>eTG&_795_w|%9J+zj)3LLG{V zW`Ftl)%U*&IdUgTCXi&Gy?eS>-sNfbXiDG(;AC&bIa`m#BI(I@oi{=*|28V- zt)*g={my?0Q3??xH_T_K)^IxL(Ias(gW(wqB=_}|;r!x6vM*oTU6)EKaIPEnnv<|t zRh@d^A(F5AU8g2d~JT`M^57GOazl0s6wjDglGL$4U_pPS)-b(96#h<>Ml93OK>OW+h%0D zb+G)6J|UTj#!iWe3yToH_5X!d6U%n4DTme03l+3zDGe_)a3hO~f;nFESPu_c|Hpl5 zH4Mj@3tp86+S;Qe&sa;?FfvaOn8?Jk_Y_)hA83ItSh+MPIB$Hd`b8Ng(qC)92H>E&n2`TjW-F^qc8YwI<2 z9+SI{O_A|VjQsX9vbx^OEHRG@B_dlpFSM>GQLcG;eJe^dqMkHrOE_;Oq=t>fwAB^E zj`NlVv;&Nj9+I)LoBFJ3JFUq&HV>P++(Tm@Oby7^Tk)M#tDW&X)H=-FgX%9tANiQO z`G@QcSR^Dp9!T1M0g&^JY8z@ios~Ey-e43zAcN1;J~nr+pA@y99BNZGU4kZ4V<_i( zgYUK8CkJPQA3nVof4(#Ce#npd@e5yLBhE`8RB#Jlh9?QgSAGLP7PG%m_W}xV1EqrG zKB&duFl*CYw<>M#yxnys^S(}2{&uAB<8sWD7q{)6VrJ4Xq*Vu##!ul#}U-V#h2bmW6N1T`AO+Jf1k9KuyYa+?K@UrY2$Gv4>I2opE6?-n$Rc2>7SIk8n%6GB9(Bc!Q{wFW`u8@0Km1Pg&ge@rEOMy3U z7t=eZqGxW(ql!D-B^z8_$}4D}roFa4Rb7D%^Y`GlU9NvX369+SDnB!m6ih-LX_b;# z7cIZL_;!D&XwL(*^AXr;6eY)33YvAT=agIpdQ-KfL=B@aT$;Eo{Zfo)=_05NG`mbs zpQ+_l**!fGHcQ@`_vq%@$8A>{6`#s)a8lk{)S(0BnCk{!wlm}(o~oc8N^INoPFLA& z#)vz!s2Z!|)#tm_t&L97R(|g8UR4n+y(uC0Qrk?^u$SV8HI(`bTQ=;A58o)BhS0(| zX!bRAY@UVXxd}GVQl9agOJ@0-iaD6(P#)>nCEZN{G((1gd5L$j_74(TCiaC&SxHrh zugcke;gi^hoi%yCWA~RV+x^FORzQk{z;;?;IRG@;VtJv1LbbArhI4MoRF?7nO0auW z2Gw|vPVNnsPUYv`pjkVRw1a&{y~`DA?l87*O}?_~kiw(UH5-H?ah)H5rG^Br(61!f z`+2TEZ1b7YISXxYfAFS}Je|<0l5K7OjlDMyYbxFP1+gr}QjxM8P#L14q5>i+pddsG z6%`>WlZX%%m6?D*q9kM&QbH*L3JM}Z1QcYR2@oMFLKuXI%!Cl;ISF$Tl5FprQ0MFK z_U*pUbDutapYwH}|5RjW=Y7}sTfeo|_X&2G&YsbTd|u`iJAej*VTsb1;kfb!D9^d;W6&xa@%5Zqh1Qpz-pfJL*{+`0^~569LoG{ zXnMZ(oSDjG_q~|fk1bP&x4KwgIk~wVR5c{VK}49~Co|(&qFAA6AIsjOOo>L|K#vsF z(hmx6CVTbeU8xIWKltRaO(Xn}S;Moe)Q^=YIrBZYH_2Vx8D+Beq%=%SX9KY16Qse7 zq1GED5id?+Vkok5xjcjuc9_n@{~jY-Q5-A`+VN-QWT&=H>)}@S?rPWQ2WK;0Z$D?h zm9~Tp+LNYgkzbMUgA>TF7UB);sA&sv9A>UaEO2O^NcpN9sarMxftHcG!9$8AmanKN z#^W;y)r+g7x~5dD`5 z^r>{Al_7ir=7e@?awijAPiKU^tRBsND=%@r->7|;sdb^l^jRb13XsPdOgxdjz78O2 zcbu_1=vbB74%PK=6ta_`Xu>w1Z2&k(=(gG1Lk=fVgU)MBvwKcS-$q3%l=QQasb7pp z&G9az6~HQ(KFWP=iwZ((>7S3dRY@r>HkQ}AvB1$P>+R@>>3J#2I@5ao+H*?VpQe`k z8+4FQW0ifSpyD_Hq@JbDU{ z6I{fTuyzyKjyMG(fTA2gq3O;lPO~NU4(?D138dg>w=faj0~-W(XA%{q3KmMG=L}Yg zK2k>Djb=>%NmI-6&u||m9&iWtd^vuNH|A=>w~5I!H$&Zg@0h0T7pmmxdfIqh;-r^7 zxnO5bsa)$DrepnZy?V$JV?viY1(pYZqOaifBr@a*Dufvj$Pye#WHK9`vkp4pm*1Jx zev;U;#o@!dkM$RX^@oEm#I>Tx`&+-qzq|M0dak{LB=btA3NDF4K=B>z45>y8`AtPQ z`EuH8M8W(j22u@&@nRpNU@}Lw@2yq4vp{#}uoEpJm^yKha+H#{HP?Bk6>H_>Ec2Tw zFP@!T*(24AA2NHoXAK6@db<;*I<_UNywIxLpDeyE!}F)xG9?Nr92 zURGjhc9^T}OvQ-1^BfC>vtA5S@1gvjU($4$wuiU;dA??a*jNhL9e_ZxGx$mLvBCl} zJn*NW>buyg7^grp451LW-{u|Qgs{9UCwR# zIGxRf{v}fR^b>J^$VAD{E)x`pSg;|1%%5(x!(e@#9N1c6{II6dyG&BM&}R2(yLS7$ zGTxo>$A+b)xXlL0tA$tGGY_enn18<6wc*lc>BAgQvjYBo7Wz0cTJJ8wmET%4O`(x- z!R#?nw*2zwZVKdbvGt7EIe2myR&YXJbM=`^nf2X5q>Z!k3KVcLpJzw=$+~WL!~pZQdLz z?o6Rc;pr2ssRZ;OQUo|LF|66`48%?tH8J(yemnNC-y05%m zfHrh1J5t=zGH{TMXMA4ZV~x$7-2$bmtF1#bPm_;$BYulFw>tUvLBFCtHJR1t<3t1c z#zWiy-^Qjcu|hu1saB(+x4WaUcS5e|>AR#!hcHfjMA7XK54MY9m zdVkVY*Z3in1!~vare_7ao+T&h-oCs_MIzQh!f}b)Sd&Wa(`S8E72vsz>5O~y=K%Pf z*-y?bqupx8hByr73bL|{^!hzCK#A{rke4O<_;I?L*lkitg*!<5H^XLd56 z`gW&Dk-72E9<5&1mvxbuorgWydB!2;pU015&Y!ICR{xN3D3@)M@+Ru`tx7oxX(H&NUoE@ctt>ZvT8UfyqRlO|*+*fZi?{zzdccBO}; zkM+|W^JC+yOv1XKSKH@V%bi}{a^k0Jc`d(4?ytBLzDz~nP5VhRz5I}AdfC+TI82d# zRGK!!lyH6Y@Rjn)b59yizNoWmFh#|EYHjb&|D`wE^xV&Mm8*LYF;3IjTl0P zLv5u}3HxV(&4hn|&GRt8`KNyO$Z-J(?%f<@mxSXaFMdcCVy42=H}p}(<&dBO$`Vni zd_^9z?41;02E*9e|J88i@sF_Vch)2_bx{gAXM;aUg-ybPWk7a-yeEyy9C8OcuEj-R z(sC7$EgkYpbLg{|ek46&-xJ7-@;~3z`cy<)tp58^@+}aG7vv2u&3-S-9SHnXGBE1l z7BT9+6rcUgzy(DtX&~92d9>GiZeZ+_5@aqXHFplV$cu6u`Q=YNyy3r}%7%qvK+lyL zp`{Xm{T1jWtvQg^4DUrUq%{c%YjZ@Tm|>9PLjq5x0&EC2QWSxPIMr?!EMm)_Uk)aQ)l z^D;B?%`+M&f5=?>^&fZn4r+|H zS*Zn(NLKsOC9he3!*PD|X1zt$qBJt2^_9(Nf7dv20ET z%0x=)5Yo?;NWAa{jF<+e^0#cy%ZN>y7iS>Gv%gQI?el<0cK8dZmw|xwKNL_2`U3`L z4X>~yrJs8{t|ctm7!GC zt^~Mii9O(-p>l-u%VL4z!DLl&p7a$ZhlDUUdL0BWNdLP-ZaE+Yc+eHd$VurQj^M9Dm4OnE&z}l z-Ncw7Cg7d3O2w^OMFDE#Jz~)O{_S7Q3;b6#B>#Tze|kI3e-*M3<*EP!obyNcBIu_S z2?0CjPlm&HV|d5`DguP^^9bP@%mS-V*;1_%68ZyX$}2F!N`Ql=^f-{8DI0xmkxYet zH2qr>%l@rI|G!nDe@guL&(Xy1|JKBRYvMn@JM_PbJNp;X#O8l%;=eWV|7)5!9#nA~ z($5mMAP!K}`w*Ye4-5lAb%yoE|4&>*t-dC?n_-Z=K)dAbGX0X!YPez#&etPgWX~dN z<_2%`p?3!@EuXbnru@G5eU;Vu7Gnhota}5@Q>z?FH3y||%;Nyu4DD@F!_DIA1$f`1 zMi0%peNlHOHQB|kgVml{iE&5nnw_*TI#hJ3a9&$Gye#!sl7EPq<_ z|4zMIfBKIxceJ%};hs1zj&fDO_u~!9cSq8??jt56!`|-aN}gpCaR$%^!V45>c+uHL zLKy52pD}IIFG~-Ye>#!#2(5vW$NKTEU*^hvF6~$tUhPmn{$VAvYIqS+h_ACerJ9yi zWBp~0NYqYInm{VFQXfs z3`BLXjwoDU*NNP4h_%5VpLkbiu7urg!ALHdvX44fxX|Y2v*2msG1Q!)|9Qo`4$HYC zdFQ9rJ~X`08hj+yAz`T~spTIh`0D$bRX36Ys$}4TGxsR;pZPW!pZ9?b`smL0)Fn>_ z43z>xT+ZEItS7VM#UT#|YC6lHIdA%lJh)-qa7T-jZ_iDgE@_v|waA@bdgwCqMtt${*2gIM>{Q8X58d-ANAp`dJ3?N)I=aVODuhk|o&EgC0Fb-& za8*hR(=dv(r#Q8W`ihaN^#@RhcCxf`)qyK(C>BMexP)5`7OVBmElgI#TpgM z!TqTjb*`jMC{2fBceSgRs$hlAi}Lf-MCssOiC8Yda$G6eR4zH{|Bj80Et+A$%s^2h z03ZcC(ERXAarxU2aovX>GH&p?=g5W4EH?GC{(Dp~Ak@!;VI(>*c?Qr6dNJMbcuZGC z)I0`Mjll%6e=$zE0B~iDB1W1-?eG>!-Sh>ttwM*8Vd(bV-qrsY)}h`ZoX`AVuEa%z zf$kmN&g?;!7+FSkI5miK7|+hwlU??v`BmV?liN?7l-v~9D78Xa1inA_7>tU=b>W}!)Ccq-w~i`tP!|LutTIe)P7G?(Gzdi zWmxDBB?1hwTv1^|Sp~*1uVY8#j;aQ+BJNSM*%F;=KMrO?p zrqWT-2Fu}%Iid=pjE745QPN-KL(}s9*a&Ao?GC1g1BFEB2Lp;k?^fQ!bVq;7oD^;Q zWZ$CbSEY;8Id^76$@tV|{}<9ZFkFE;VNT#U(>_9*{WgYq8lTMo^BpRb2^DXFDuoGe zO`4OtLb4Zjl{d`@U5e!nE2=tslvjPw3LNiNK9)|mx;3FNx#m70%JO)Eq^5wLN@XQb zHJ}*iqh}H)CnP@8A77wnQs3~fRluwjS5J6;bY+LejwOhh_b)7~#75Iuip1wuP7Bt$ z$(+7-=W81FhV5Q&dWb6VJ{O^F)Yr7x-7HXudKED&Hw%UU5T0&@V(gV?c(>;vn}u)V zD#3{cPL8*E=+8>_#8vLcoot%siC%Q$ZpBAtX2i|eSu0O%df~A8PLMN<&&6r~ ziUTWSww_@T6{`A!}(0+e@>5=kz}9u*6t_rOa!A#FB=o zvq(V>!3x+I^pMlyxiOVmgm)1_Q-#RN_gf77!b|+M@%I$)>S>2$kAG8w* z6@O_~UQW?2*$_O=j?dQ>8(VnFO*|)Y?!1l6Yq%IT?4112Mj{~{q5#M*h;~whFuH8X5wZ_2KE;6 zFAlR6ZB3lrq4y_hAoSEerE?PF;qEhIGeW9Yp#p-N2AH!j^h2f)Z<~i$kEivk%(GRR z#x3&7x;}UY%s%QO>CO0VWpO#C&ejW9x$D{Ea%G?65U<`Q`-JaE+Glv4E`1=uC`gQ{ z`H#yj0)qGuNthSh5K$_Ao=5l+4A^(Z*EKK^TEz-BBYFor$}t_tfZW*tZI-ZLU(hu@ zXSUn~ISn2_=4<|Aqcu-Ks!P`=Kbs*Ko1yjF z&?5$Ke5a~V?8|_?fE@|t+2h=2!dvbR#Y~et>=9-9^cojhAgoh?B@Q-D&Wc%VCANO+ z_4GWyTkXHBO*xy^gOGm2-7AW&xn&RaRHHYqUhJGS4Ulhts^N~2d_Cuw=^VjV5PF(R z6s!e0h#?8dgCWzH7(>L2@Qxp3gKb~jKI*@cVW6NzG5U2teM*-P*k6U#uedG0;;__y<0YGYfI&8$Y3?Q4|Fnh{#KTd_lxlb*SZdz!t-h7pMh!$v7DCScN@{!G{JO*B_pr9BxP2%8cRr)#%JQ?_e{VWWdGJ9IYvP1?1myci5`i{S@HHk-Ib1hWb|XXus_Gb z1DPe=3RA@FPKqj~<(0>$^1D&uuPu?*$I{n-XxQkLF0o=)K|QZ>4$_t9L(8WM#IKs+ zdOeW=SEwG8h5Ux8u1|RUL&ix@yix86rCz));iKNf^a27@?Z7{89Ypc&ycI~RTz1L? zR{?v51_8VD0xY;Q`6$N%W~r(|bq@L>7t>{L-x73lK1-Ho7jPS!`dKO5^q5#wHM!{U zwP7o$-FZ{H27RoaKN6it|9$gnw7kR~a`_k3=$L54S7a~J6KC_)yw$UBl9@LnB+h%v z`^bg0F(DDs@rJ(R8=R-!PhMiX0_+)9+7U*O|B#w6Hf>j?kEQDUS9|-UQwocbh?AgV zj+l^EAEluN34|IQLZT3JFP{G)^TefD{FfeLQ6G$rY8NIT#F~Ea;nG zy?{ZF>MoH5}8cQq}5%Js>G1{ksYoF>Fez1fdLH%xjOtkhMp$k@L~ zU%fqXT)Bkg6Y;sJ4LLPM*LE3y((|{wr;lifYN;_1^zh^{bO^Ky`3>~naw7gRSW{RK z=Oq5scMoVS6wkim5aF)-8Z*NNrWxdl-jq#tU>kd{(Ajk$`N?I$Z=0ge#Yzgr=|Qjq z@b<~15xpLykeUtt!Gj-;d?Jst(s+3stqX>E&811YpABT*VWp8a}?{_j)=cm1eC;pNK5UH%i)dv5s zs3=V!M|jJ{yh7B4_U8bmSsYiq8|QQ@e8zz8A74l68vc92_0T|I#@|r;_JO|Y5%lbC z#BpS2EB6e?yIB<|_u>)R%td_8x^Csi#M2OAwaU8=#f`&28kIvrOLI1%F$;g59GEf7 zkz9Zt>z^4Dg2^EpM#%N@!-y#a*&t(B%}vi6d#6JXK=mifmIhZ(*#EItS9e2-zASdY z3;k)4?BpI_e%Xb$a=y-dKk)YX#!CupC5ax&MK3D+3AqBd*#W_*FS*9N1LRLfeEkV&%zW_~fC5W_P9g@ezf(!+kw^ALl*SkvIiKw&y=BtoV>}E?q_HFt1@o z8bpi8IN3`1;c~E78A#g;r!0R|7WB<^vi!Ne!2ovpsLuzYo-YjMfBi*?g8WuaFl{$H z1AJ;4qcy2h@5=EMQ~GqUp&cD zEOs46mi~}Yq=Z0hHa_aQ?*h<>f-olDIyif-=-V$u7VSWZ!zqm9GFeccH4@BALC>=k^=OTW^#4rptnEj>^(TYnK_NLo#teZW8Ndrv$7v3Hh2js|GtD z3>PEb5mg9Jf5;d!T}t8YlLx*xvPpBs-{J##j0v4?vAA&Ne(TqT7;CP_C-eQqa9!1> zg{fBBnFld7Pc!o`NaG#6pk>K>PpkJLXS6su5s)fqQCE(iRqWq{b{0MDrjCXrk}po0 z@f0o)PB25`qU0*{sord6e5zrWZCyms$L}{s>8!EoRf$V&n%S@^bPNOXGo&;>8xj2B zAs?x_er5!;AY;t4*(wY}<8Q6hp0JR=n8>5r9U?W}ntiQB<+uO*^^)I8=1GfiU=i!I z+g)tO_g|1$#HJIlF_NANW<}FsH`XSi4k1Qh3rG5!#Jx}6_HrI^STqb~XCp~c~%&p0Gaoc5$qiEiVEt?Sb-<6Z6A9J%)uQWCIT+W;C4!eIa2XFvdYpV6z)A%6g-5n{4pYRP8@fNQq^o0=P` z!xxP1Azm>@nRGZfq-wV9&3p`MzLOD@2X#J%`5^RYI`FY0RY!EASmgj1NVdO%!Cnlli|Bm9|IFwjVOD>9e~g<@shNvnzoQ2HmaD zW`Pf2p=%X8+05fSprmynZ#)X}?g|U~)*Yh$q`OWpbDus)ahTX zFHTt;Q33ZRnPaF0@h{P5;FG=WLKH-3%#iCocsMxyRX(X^*MnQnRV5yG0u#Zv;L_32$a-q8-X)w( zWn-J6VJ9VdX!!HEh%>0Dm_-)axL>1R;BhAEt|K2T{7>`YB+!2U5a5-DUO?}h;zl9v z)(T}3FDK%yG`A}@g3ps0odl7hBEGz6R+urURWse896L49FQ?!v^6pN3@2~0_UdB2+ zN2_Oc?zwlPSnG;M=4LLUXI<7OOPvGQ7`3x2ehIs|zW!pAG>jY2675$PjH{p;&*+w_ zild>BlwK9vBO=Jm8vTCp$_6hFiDj9|(?>_f2(iC3Tl+(1JUCSsk?wk)UsXHw4wutLLET`ju>d6xTe)&(3q zS$Dl%uFJsKpFIwh&?lc<`yt~ax63atAp2pgW3-jDX_QxsN+4-qWkvh!{_(a*NfNg7 zwiu4ye|}rKoG`L$Q+a&Qf4ptlUdh`&{`+mMg`!VFi-0-kV?>;|xwW*Kp&Z+S_?38m zA;#Vl>bpny#)zB9S#YhW&J#qQm2(u%QDhdr6<0w;;CGjGgAVKLqMC}BSbw5-smG57FLc> zKd*bi){0g0nI~aH75vuL@<+u`C!U`gY!G^r3lDeVQP|#UC(pS%>Rvagp=?psDTL2S zD>E>-{kM~c&aV#v%IynSEhOaZDC~}00~+>z$kb88klQM(Rf@*UiH{bx#6I7$p|P@lwfmCTgJdOiFr1rg->wNQOk){PMS>&C;}eVlan}j5Y+B!s;t9 z8d?8C#(AOOrqNDb#23SfF2m%OR7by}d)>m34Mj$n!O_E17Qn@_CMTD0v4{TyE=Hyg z%Xh_bli{BUEKWjJqi)A!;~Rd^j7?$Lgb$bpQ#l;m&9aA@4VtkYN@Jfn$B8zWA?Qzz zlGSm5n4(QBOfL0n(>Hvvm-O)ay+=w>50J`AV2=^9zYTyr5Obf}@Q(c|FnjIhF5qS; zG8eh8wS0Uxw^oe=yJh&39XYF$P55R!=^&2%3Bsaoy1UL{heOyY6 ztni{q0$cD*y0r|%1Qoay!qMi|_#`YQ7+s(;1hUvn?>C1Gd|^!bJno{$TJ64ElEPg%uH zYz9vL4m%=-!OQT%zjXKf&%lg#$%c?|W*h)!&ZTrKw(moBH=Nt;_$pEHYm>?9RLK$M z@fYRkz-KIRLmLr-ISH^kTscJ*7O*C`b{-OU|3ku2U#aa3B=IdVv+bqi zMz_!@lWI)JYcP-#iCDHo@ch5Qi>XGJpd;w`cr115`D}qfL+*$mN{i+=dzpE=xoD)6 z5g;E(?MZ}(7U3fO!69n%nW1KJ^OhaI)XHy;SfR#{T2K6M9~o8;TlSSI<>uP7(Qn#~ z5_ujr&@{&h7QWsqC40sDt9FODzF8LiN zc-tyMlHp6;w#M5I^N6+7@1I!6?g0=bm;mJPtSq3E1_KR(*STL8p1g3}L1N*v5jAc@ zYIwpo*b=>ocwY3J1&ygw40hq3_266B@uY(4>+YbD!@e?Cmr=p!P=s9A7w*wK%rcD6 zuFzbe*S*?Dqih7{BZ--=Z3k3ZqBIuy?G{%C(HCt#A&1qe$QVeZMj6x) zuF9D0%W~ zK+Ios>)XZAsO(X4^kQT4`0w8g}anJE{au_UGx zpvtc%CrYS&hMz-YC|tH%zfzI)e^iQT6P`pH#( zyAAyUcNSY(7d$nT$e@h{u)|LT%RBIxJ_se+HFmx&k%Jn(G=p#y-K@MfZgym5@^!e) z2JzH83$smU&W#-wbQdpQaW(f#|23>b(w@?%XJBw$-|2z^wq~NJ82R+f96xlrUS;mE z(_(YB(OO@Qs`A=3~R-99~*Qbq_A3>ib6ik@Ucab#GZnBh|%gZG15b}V3y~5MZ_(x@bTIn#VlOiKu zMW&}GWhajB&Dfj2U+Zk`CJC#+H@y)n-+&r26%~W-!;sn2<0KMmmjO|wvBsBYz99RV zO)tx{C50BnpR{T3{965eqOoY~^&KtcUvWK%jlZ}~P<>oy8q*@w= zj&>OZjm?SfB0CUEEd2j1CC}D>xsoSvVxN<#>_w0(Q)fDX0GmT>c@`!4h_Z=!7mYlC7|)b^r{U7p1akqFz}?(gLy@J#0%~gr$}mR8x+A z04|cnw*WH&xyWf27qPPfvJ)?LZvyo0VR|T}t`f975T^f-v4*DfMd?zf=X|M+1YnDb zMY6zI6a-rvKu+^3oM^1b0Lnv77VksB7P+xY-5uqv59;Qk??i{VdTs-67ty)#$}g_| zvTO5C+mPMT*ZOTLb6Pu9j+6uic(l?d7>}-NAN(#VTb>P#A|n3KMg&tQOM(hzZ$IXS zGx&`}v+zdHHrMdMH{xO3RTdM?u@PN6L{_7lEI5E~+g@?Y8_04uY%wy*ngqpdq%Ih; z7Qq#~K#M(3{G*8kjH-K%JMV${3th(@R1@t*Wx34?=&=AjBbv9(TzZsP_B)=syReK^p)Jf%EH*$D>84cC+u3E^?X^nqo=}6+ zj~nYXm5MAkJvF)b{`;r>u3?fJ%1NqGlIKx*?MuBt6^4egqFjI3BIqfqA!nFWqKCm; zA_Vc$#j(yqZ@Vpz^q+U# zd0kzp_L9WI251`nHkaKd*e41%+DY*3nHL6a%ExmBmwXZDF>4cAGO90nW@6je$iECw zH=Sk_Jt^9c>3yTKV4lTX{-t^gV_TH+i8GPEB)2L`oW<2c#tbzl zu*6Nw_=b)xIS=hfZlcyYkH+fpuaGtN0FxOo5>M~-Dpx2X9^=%RiO*4p`ZrwCT*rN0 z+~ZFdSvA$3-u3;Yp;S7u)Mh>cY5WC1F&6Q%lnQ-<&jjL$0sS`S0IOTM`FS1Ap`LAD zRkj`UT;KMCtFzv`$?7O?Za-S$rG2xk>+zN3$ndKV-$!Fzx^y2OEtgo>A^6k}8GX_V zs5TJ=mU~8@|pWG zUX8r4a&)pMkuUoYp6sQVY$_?R+x&qGe-sq8mL|TgW}CI<`^;;ak;z5ZS{{(pP$@+_ zalch>+h+*AXoeDqO{Nl&K*9|GapEZInSE&+X$y9E0Y*bx_8Fw6cn7!@7}&@ck#)yO z=|<+<)Hjn|hD}TZntBXlB4+HGrQ7BMWH}_m(kkPEeSf4Bi_(j~^qqo+H;##7h&wPj z2`>cjyE;w}YjWLKO|$4!I?Y{!V33iDM+}D0Gz(6eDEQo@EF|iRiM2IF_P&=1fAkc>PMJ!dWo&Bt zDyfDR7M*k~<4$byd+GSHH|P-%>aQjUWBwnk9^eb7<)^~b*eX&nGDVIXh zsh9xOaq*hg@^`WDv8XQ6c3p>_G+{txdHRiaLc(qB^LzVkf6mv4te5E1RxqI}MwC+~ zFEEEbyMa1a3=J6`MIH?S|kcifQFq8I`2tb^uBLGSP+wN6F6 z|84S_uC847#_or0a{4z)7jo#{ycG>Qdrd$S0AqajZ_%~Wf^yWUqOb$aFGvi+{FjA}a#Gs%I*Emzp zHA*LydfTP0ARF1=**l6&=}j8DhOJ5ZXln88%I(PgN1`GT>lSScsbmvdU;g;= zVxRJNQH#XoJC*!eCy`F-T;vZ~{UT%Jjk z8F0F?puXRs!;1x=ef>|^RS}n2aj=aLB-qz-)blyZ&R9F2;y`>|$2D~SY0uvG7io{1F!Vn)9s5dQi`G$9lZoU46t6Q^>a?#V+ zl4#Ip#O2HLZk^*iAj;kry-XNqJSbz`*4?>&} z7e6@!jT#m}eZ|Ro^x+_1Zp5rR)}uYXj)%ROAB5#>6NAAn9j!wD{nV#h1C=cC{=sie zOiyjQ=@_3bxxB1uYCP|APbPd5F_i)a5Ob$y%VvS*xcS9k2+MNdStoz0I@ycSA0k$1 z7cH{as$QSLXSiXmt=Rj%Tk%lzwgQXL_i|@ucilO*`fCDELeer2mDvpQG1f#P3Vf5^xvI-ld| z{2wR2#egNa?yE2hjLXBz&|$4`FkJ_SnQVAbV5BwI?ss#hT%FX3_whrOVMor1HgptP zZfd2BT*sR4cVF9)K+B1|ayfW^^!vy0(SE0WrIrE2UyDCw2y9iLW-fh}=xKl&co!xp zAy?T+v)pX_F!#I%It;35A7atW!qB98_k=*$(op!FqNh&TpI0Qz*j-eX)4z`0LBa1R zb<5>vZr)SiWqtGDrE_+gnsS?tyjaKH_-o>N3Afg7_8nhR(vTSR4@PS9sLI9{iLhCA{(rY^XJI>!9YI4_KUjmwiQWfz}&e~#R`+ge({ z2KN;s4{Q)v8$1&zFwP_TJ5DK|3t>{#`o^xkF!^%+c<`qhT9H0BbO2dXUVuK0ygOt7 zztWiZsf;O6o^m7hUgzMa%q4c@dX(1f$|7HsGuPO zY#^W@C*OkM)AH96vJHQx0#_0QZAC}fatENQU@z2yFT!o%&i-f8{b#bQ)v)VAh)5k# z=)hpgxOVcJhxNMHam2mu_WwCfaD)zUthwZbiHIIH#Lj^B1gRnYhYD zhsMew+E3 zkDi)+cbFMircY0Wi8mTM8y6C6Fn4&Zn8gzy^olb~josRv^1Ulg4bu`(+}Bg&)qGF; zdD-59hr14)&pIp>1!K`_!MiS~o;nm^NvIqx@U?_E!b?fjn4Lz+UBv$v-V(KpmY&RRthrG#+O5igg}VYX9w8oyf!4} zCYekmpjiR!AGGo3qg0KHyeS!liy4A2O#G*l#m+ukuW=kAFik@R1tzCAS^3?*;9D1} zF;n8AC{Za{SVf+HD`H4)+E_3tvP7}~K8w^Q^KOeYCVMD?l`ALs0}sY)@n|Y;J>A_f zwS7&ieaw?d`EvgK;wVnOB6VN*ukAz2lH_z$oA4mXvZ6^86t)qs5Tz2G=A{uPnaqm@ zoRBS8C%;=W@vSAg*8R+bo&i-|<;{6+&U@9dx*sQ=SYFwZ7vOVxm$&I@&EF*vCR@=& zNs>6X!PKeOIY3p=KNGji|B$K4PGT}YmGH>3Kk+N4Xk`@ArVar+Ho8mbR_a#^!DCOePt;L-fdC1+r0n&4-uIx1+D1jT#M*Z<#DUEF`=P&HykrK22l@H(97Rw0BSoXm*E!eF#8wmX zMDdy5&!_WyT=ws(UlF;lKeg3NT9Ro~q$2waNo)1Vf<=NVY`tY&y};0Rnm0(QR_8kr(Ul^&+tWsXr(tRXeJ*@M{y{)ePYu4sh*^=E-wOiUA#$G+^AU)tb zI^W#nb3&G6QQ&Gf*xuNX3IeXw#S=7wx&euw!uTO`9z9AHR?dP=a)jYHSKaS`sRH?} zN)zVv8Y4s}1V*%vL}`Wbj0pOyPJNM(L>(I$8TxAvD2JF1vETp|r%z)bPYh?;hM*!XT_E zv#VK+EWrm+HhhY@|6>PYeTCBGxn zq;>_EcA@KY1b!Z0SANPKLyj!#P|ldj8O$DO=qGPNxw?mEPL@|q^O9yuIbjXoI3GNl z7zT?mu7pPoEtf$6gO5>EITQVGFe!S~-;SG14Fq`&*f1eNjYot8>?<)?4(hrnVCT)d z8W*DNfJLps@xU4mT!_mZYQ(LDgyv2=;v2x7=Gw|>2Pv2)g&&PX{Ufir0_OMCLzNpu zL))(o3}`7`gBov$0(5mt7D+_OnS50gn1e8LU7V=s*l`iqP>3O-kh9MMyzavv0;Lkq zz*j)gvL_*36yFLldze2qqmIL^tnb8Y4al1D9Msjnm$F}w$rpqfo^vsu%tDRBbFx@= zvUz!j*n&L6PtI-N8 zKN&k_|EOR}s8{5&h*2+^Ey?Cqwt-cz6dR_kCKsLXIELz@sZ!J?mv2c2 zVOJytfa-?hUf4R`1%3^&(uoAZPo2pnCYE+9#NEh!u)d?obtu{51CpA&t_0!^p{JmJ zQZ=!A7t)7!9T_7r6@p?cxKrTV&38kF0J( zziG;#^>9vhTuOfV^0R_2Wp;RYWU%FYBh4Vu zo9S@@tz|?V=y*g7X=kzFN>&}$;ZNADT*$OTZl&zIYX!#omFedUEljfPAVjINSEu_* zhl1s{(I1VKZ&?<#`2A)Pb0sy{?2r^*%BP9;L=2N%z@|3&5#FrHu$td>?8>&uo?gD} zOT{?Z)|XjTe|EH>yVrflQXU%0%ZZNzGy~Gt%aXiK50nNxFv< zJ*{xTrp|y`;GZ=hpe4Pu-}gs{VnzXI@e<4OoK|#g$*PL&Xl0G94C>XhxfATOwFqZk z+r8-w34_s3OIx99{xa+4?=!!s%B_(&bGt^uPEJ)QkhvFbV0SCD` zg4ZISI!I#24DeiVa{t2=I?KM<5P>S;vY?8oLsh*S5HS-qpn&HbC{G_>SI0($h@0RL zoYvj>-Bug#EryfX_wp4T?_cMgX@37Ec$@3{ithV<1B+7%NZmifp zhx;7)op9^$hp&9ManjQrYP6=?+ga_C z+kGnY*Ig&29jQrqcA|{3of(2h7}T)G>5lTThk^~|`nnl!MymSADxZVE3P{(0(#MQk zjt3<;ePSD%jw*NFQEhB^eBL&_PWuw}NcJCRB&Pmb^0b}6Uv!uMVk&02h+2$QJ=TF% znP!;g6*~|^i^p^Eq2Aa73dIF+8G6)a$foz8qN&2GIInXbG7?|BNqlRSJpComN>*~T z;!hVCr{wUFu)9Wjy8Y|lPo1leZ@FMaUi0a*&JVg`gKMF0FfP9 z*k2ti)<3&2cWKag@KEd~!t;ZzE%#k_gi9%|;Su$up@?r(9V0V>n&1+{pn$AR8R>Np z=S+sjG7R)|@MF+R6&dp)T(Uo^!KH7O|7xHO{^yoJb zuMt$np;z}wp#qg&I#yFfy+5MXEM%tO)+9SQnsHQ|@quEJwX^nge&1xBMq6{YPArrB zIO_1_{>b1QvyD}b>yJEpK(#HFfu7WWg9Lv zL#MN=t@g5+h7L%;pGa?TbV4)a_uzf*(g(=~8cJP?z z5RH8Wv3H6+rniADZh90Q9>HhcG`_g^a>Xjwcd6m;ZeX8CUd|jWBZs0wKFNnd+YG4v zJ>3&ecutel=azzvf^+2tsrPQ{<+u|b=hS^4+_&GyK8iX$fN9-x^>9pD!n54G8~xSo zRw#RuO@y*O68lW&45VF{Oh>pfNckKkV4O{FvMukZulaqz_;h72k@qY zQh3?u!{Q zD)f=*d=3~`hXJD&>}Y!k-%gMi*KA46m9#Ji zO0FTWmSna01ND)mkw!WEtB(*ClRdtt_HjuA8ZeuX6N|l46z+-Vil)%MRYyE-Hk+|IuPp+1tb+aV{xrt04OBV6Sf* z!II9$-G&}KVROv>8+C6U4t4wfjq6rvibN1hZWBje-H8>@ zq_I0iUfZl_GwTgU;t`(mnOxgV0DZcKT3sEuW&Jx-b=u6ug>Z{GeAj*f7<;NgQf$i{ zE}B5UByhXMt(y6ZSkz8Ms8SDl^$1C+6A?P~{GMl_Sd#OPv=`iRrSY{%;@l0P&7SrsJ!b1d&dtVzbQa!&80byx{ z85lBBBFr0bmA=9zN_=cIvu7+76R?h=L^XP3Z)F6@N=KThD8Hh(&I8YJ*5?>bmr@zg zeeDzGvK7HN3aEvXU!bb?tB8m9Tt_X$Kr?SKZSKGT@mo67`O9p-v33Te88lT2ry`z^ z6>(}3r-;S~cqJ{FuN*xWy%WTiTT=BeWrn2#UTS|=A88Isv1MZQYyHqay=1%h03N3T zQr(#dJXf~WHcoyLGBzLfM4nQ~gvmyWTH)JQH!A6qa>|c3;7EfJ%=4hCA-Of;NpnIenqoXnPamEmduabEb{gF( znNj@)h$&UwL>7TkY2Ynd$<|KhlO2_djD}@%Ty)NX{gWXjHGuxIU8$1H>oy~jCx-L*{3bR^g z=0;!EozmLDGp;#NOH}G|&TURgW`{4-W3%UZZa03d$7dL!x3Qh9wlnzOov* zngGW3C2DO@%8<#^lsy6m%>f7e&0o)DrT8X-sFT(!?V?V2XjLHBg|j1 zj=IrG4_-gT&*-Abqo?M!kG9K#E)iHdQx%mBU97woD!WL8l9f&9FI0TsY@yy$Uhn!? z?WtrfV_!wznLk?bR6CW(n_@C4*cY64cbn$=_0Ts;SI05c1@qbk zt%ZgTK~DrVX-eU%h)%^80*CNWKkrkm#LyeL3*Aa<=#23!gen@!63^nWoYGa(&+~LS z(C<$KvoRr*rE4hQFgw4Q$cz4fUigbmsY(!#Y)sg^UrYHcz1AQ`?M&{|k()vr&%nL* zM+BUB%-Dc3g}_Ju9a11h6xszo%$;a{=h>BP&f-Q7PL+S8KE$ z{LS`VAbl)2*^j~<>u}yEC@08xL>OJ)vUbXcO{!fj1UwJ-M{TV*N zp{`ANtwRefQUE+Rg_WA&Zt#kp>iZIHav&&Dd%!NVgK*X~@%+6#doQfDSYT}4W1X^B zy|F^V_UlS_w;H>nTn36a_o1enIuKA9nCVVuxYuhDUVauRY94-)g!ihXj0*#x6xQtAgK`^ z!N^=?=th!K519Y+P~SeZ_+?yHXO#I~RNTHhP);9kw^#5sk6<32caVRxKm*`^E+nG$90iSSOx=JZ6_G5dK&$syqS z9e{*@KxMqLdw}bjpb)r5U1nARvWX%+vyb6jgfpQ@S&C4Pbst_EFI9btrvmPRcpd0Q zB8ZIvp3E4qa%>xk_4KdSyTZlGi+!p(rWabQ(Ou(pH1*b>N-SOnr4C!ofQM!J3VLMT zoE{G}4rpJZ!8n@uqKQG>2{B61!r0FD-65d*;L>!!=q<#$0-41gx6(iECx z`KwNEmD7812@pvX0`&1@FSOw;ew)!9yZz`C^E#d9tQFRTnZvfS2o#|RXN`$(Q!)+1 zOLTmIcHT`5m;6Ho%0lmmUiwt+NfnPX4pjGJlK6xw^gXmrDc@+b0=}a^Fd!KprSm;! zTn!Ih&b%VAcE?ItT9=_rN|T}{!>4!~)mO4az8IU*eAC=Ob*o!IeUhupMQdg)av9`m zpj9e#&n2kD?z`=iPjQe=BBsiv77?7L96S%k+K#+Kwu)S8KC{U@>2hD zg}1J~`h_T2FfbTxIBcrLrC72MCvNw^vvd>TD4 zwv14FZEFlc?y0&l?@`U>Lx57$nFFMB4LOHi1wQN>e9aaGAnE>yw`{^FRk`V>hAzSj z)2d4Q*NP+!k6QX3Y4p?vfpm(lcm<`drWe}s7_AZzSa0ZSI=t3jz9X8*i3Rqvgr)p0 zpGC5z%Z~PP26Ti=S=YcBVOCNrUVjWlt)?_6K9mav(9wTA&s#(YkbECgWUH)9sTOhy zn#`O=Fq{qO=d}7ni8It%4OsvSlPy34Qg;id2R&ui$Mpd$uV(3O04a8p8*%e5v;TSO zp}f5a)wd6$CI9=LjtVMa3kF98GYeAX*6N4Mqg;BeyJB)*?P?nS%^d7y z^g0B9SSU&b#O621jK!YHVG7(F_EI0xK?Fsqdf&uH!h+hOuE1Cch&{QVU1fa{Ul{%7r zsUMrcJNcW#P0QCVxM}z%vNr@7LI2sYN1Q5qTeS$OB}p;7Ti1}k0xzhLkIIYM4b4py zb%A9KM=t?@?C%Kl%yPMMzFm^C&M;ItXn4023CA@TmF(kjoZ^sq*7PnfS(ayylKAq@ z*Yss-bV8STVnn&X^v7JQM5khAuG&Vcc*Z-U?W0ROG&hquGEid>l>K|ilWxwKz5zMt z2&wMK>I{IcF|yrmDs+uiiTOsf3)sd}9S|K^4%!3+fTD;21O`;QKnQN&j2RXy!9rw{ zh=i<(d{QA)iDJNZs)st_8*(RLcXe*( z3kSIg*I9OB$|-;o|HO3)ftB{1KK~g3Zz#fXUpRrWppOAXNI5ZhJFZ=@9Jmfa?mhQi&#&H7VkJWGo)Jpdbq7IoNH&U@cQq=Eu z6Ku?wlI$eQ& z5xBy(@-nD6=n{%sI5l@*wB@_jphd%GDPjjwqi*TvC^rJ2+!M(weS`jMxoffhl}|<0 zN#eJ8ooYW+hf~)kAGUS{X*5qy;>{OV10A1|89LWj01kXdnu=>HzL@)e(-rQQ+!`(9rPg%bMJ)VCx_W!PrEL%D02iyjDJ+qfk zRnl#o1$3tM=Z%+<$8+lqw)Y7tdl3Ka*#z_@R|!HijMk4}6@TaMewl)1*QfCPW@uv7Yv^j~_I(+K9^Md3!b z8PvwwF7W!HvdSJZ`zt7!BafP#GqV{$T zfjomKgt7aBjx|HGnYlA01xX3KL}HcwRr*Gx+#U{GuIIi>DRn!`<=?IT%5>Zt!<(9Bu-@^$+d@r6JXg9>b_A#lu$8Y;ULXtynfoU zYW|_KcfM`ZZ+fj(u~cXS@XiimQ4MbLWS#Wo#>yvzm(}2m8K>5is_M(|CdZ*SXGH6B z(WhL6)LvY#y8(p8s_8Wi%4KLfQFcK`=GG}TmYdn=E1$(uz;x-9eZWml`QYeg;4gjh z3em+5v(RkUsc^>4q6>QO?c2DND$CXHMe?@le)VCSbDH##KVCw~)Gv6U{2l%(l$|sd z+d&n^qZt^(E7q&IKD`tCY*2!!u<#laZn|SD5O6KreZt>tVJ|gLQfbtDFya2`q^2A= zF`Ha~d1ru--V{kWKsrUp?frF^TXhg!7W|glV(lxy47WxN`qS!>pBkeD5A1%kDeq69 zA+v-RO>TStustN%?5JoC1fK%1Ly9!iAoofizAt`5V4}+Ib3p4hI=qpF7!XDr9ium( zH0e&(q1xY2V`gxM8Yve17g8K6>@?dta5m;v^U)Mu_j~7nz57g5x8TEXNYEO>@N@W^ z+zQwtkaX+V0Z6t-b`R|19;rL~jRLK+7CT&sej@$mEERbvHFX~T)ZnCFXT>bXVP=ll z9e^zr4P9w&U0R`_G~Cf!64>RUJE#CBrc+cQrvv`V6)+Q&K%)YXc?!UGrg9x7Ut0oD6_rJt z3h%Lt{m~H9k4yLpx<+2$x>84U9eWi-l9HqM!d11%>p-S0C^~iovkyXpCM|1|WyfsI zdq)%-PDRAxj>qOkXMed>%2B~T0bT_nflF*%H9)23qRIm7dABLhVgxP?h@mEr* zKyLq;3IfKFpgCYQ0=#+)$H5#Rj;mD7j&ypUzF*nB3-9nA>ijhuEwVaYYgfAcCoh7; z=-01<`5%blKO;}3<65hFglFWHU|;{|!*EK8$$%8%>I~^1R5}%z=UmELgXX)BC@_;@ z8DOw;8Bl1*lJUv%6|IQ^*Uz2Wf@)N}qNbX_8=uJiqwmYcK19X( zann+S_dnWrZn)2XIk$lsl^xRtio8dB6#2wgue+Fl&M*3-H@imSu)x7AspZ)ALvDG0 z=N5fZS(WxgU`{Thd1HjhY+;BN9S)D{g_`%mh=IVnyp`_dF zZacDrXyJhW;XYep40choreE6>-|M3PWjoZf*BRYWH{%ModUcS|y5=!`9mglE`1WZ& zFW#GRjc@!)DF#eo-)T;RCN;|K(lNlfEUqNa+)f-Asii)!Gigm7@gELlHfs-l6H zYh=R(cCnq*`7!p4UhB*#= z;v;5RUSS|9qK<3muy)fv?Gyvq_{lM&ik+D`H}h2fm?aC?#rZrrp`B1?J}eLw_Siia z-Xjfy^8Y7HrwW{vuo~;r@pi1yqy01A{Lb^pMm(3^8CGT+bvR^YfX%`!4{IDr7snXm z7h+xV*6>v22w}fN)j!~q*!zyi(sx#R5O9G@5CELvttFDX-7Fj)v{ZJT!r>P!hONta z2S8IV4JfM&Sq*zC9s!RpvhC%c@4;9@^=TZ_Q_k{&+rYm#pH1~=g|y0-yp|N2L5$-b zg>$PqZOTjU8mqQZA{dDfd*(qYaqtEjh<1PFS5mw5L5?)kyEsCcqSanrS((a7qK;{; z7Ek0A(&pS}k%_*%ndEG`An?RH{D6t`>x7*zEX?j3sL|;$JyDL#y_?XiC8tNw#mi-F zgf4y58^ji}WEaTuD{-W&gVN<5KyfG2K_QR~FUnaJ*g zpIFOn%>Ml`rW-c-DQSu7eR@T!3af6R;n}J(6;p**UuXEVUIVXb&uOft=on73GS|DfsgA|_ALyyn~;c4Cbo~=yVw>n&%q^q{X)W)JR()Yo|tP`Vtb+XmXEW4?8ud$g05) z-O8yWK5`rnin~EZOz}G2i@guiCISK$GconX7-3&XBcuPYK>3 z`W~15K)>xA*7botJ=KiU(M-^v_MT>bDh$Ii5KMQ-7evo_roJJ;ST zJNd}nY(e4HZI9LH;tCQ#0CqJ4or;3jk>z)z@5v@U*v6g@N=soX7q@;qg$d^=Q%EG| zedA1mF@nOr=$=_%c%Q1!Te5kQA5~4&8s~v?}7U1b;4EdNO+bg!V_7G?*c>)a-Tx z8GHQIX`CphVswk+$+HqIM)auH@lPZ-M$YdZErCCHX^Uix@9KodExgH(~? zEWCgQ^0XU5*z5^@63spOQx=W;t2j+>Afhgx?(J=IXoxJy-bD2-zOtmvcQ|2X;M#9m z_fB5@v(!zs!jo&F+W}OOz)dn^4t0*b4Nl-6eY(fCQ+`7_TWQ*M!sR17CO@T{d@+3Y zrqDK0Wj)|tRmTPp$>4=10xl_s9+8$O>x3>vZ1XV`@H7ne9 z&9z_OSFf+Jt$mNi+wA@ChE>>@6jNwChTl{-{B>dMWjRR=bNY4QE-G(~+E@ZON)=lE zsWIErR~;4wXhNk#y5Sv-&rNr1^1g@i&5kU~P%mJmfHQQ1llB%?+W!Gb;v8zS;Svn%gdI za#R6N@j>~=Rx)ugM@*B43fp|oU0RXP;}Dvns5YMGha&tu4#r*_i0}-6sjO6eY$yL@ z&puP@oT$2uF{sM_jJrTrQP=a z#Wr4WO}n9K(dY%!2@*X#yw=BT>Vyxe;PHk2jO4U{;Ty>rX>azc%o%`x$Z~U5l;>d1 zZfFhhQIsC4+``tF8VL zzxJmsKl0wYHQqR(`#J+|cBi+Fp`R*1@CZ73?k>DyIqv`y5l z*n%-Bvo|Uuhx2Cm)LQO~MYBu2=RdoUmD%Gyy(nqhtydn8!*f*U{cfq;QR>klkAe#* zdjJ56vSFeKRnc_NTsD$iF%w&2-L%ejrSN`8a7YFdlr|8q9LCv;KA)4K1N$wf$-ey| z139nnuPiQ}YW3{!%}lqFAtj}u~}^e=hxUT|y8wUYCh)6avJwH|SDcW`uDYiWF7w#&)ws@3M* z@5R9D7LL%xOJsz0l!c8a3BQ_`@PR*zLM0!!|IVpwy3Gk&SZHf}O;s&WlEAdA^oRkm3lJbK zqHN};*Ra#ZQUQsj>CZR6PqtOWmyt2=Dx6NAyKN0g&u=EKl`05&eP4IGo1sG843;Gs zsj#Gy4v$mJz=(R(PyjrJW(0P{0PIO+T$9ZLa^dV|M|lb_|+WjxVZ+=%pekWnX> zUa2sj^7ocfBP90gUg#`IJ(aGKUlp zAIHoAF85z$R%IdKFRn zfN5D^chF{%Z&{&@jHiFtwyqo(ti_1QC=k83d>(z$c&h>&9mdgB=9EtpZIo@%ST{1* zI$rLjDb^aCKl{|{d5MIgC!@R2BR{yg8H4b%w?!Cn`#m&_}X4sB!X$Z%QBMmi0FU z*|c>nL)j}F7nJWxp6HG;xzrv*VRM!hwkw;rrqE6pyj}75&k|LZu!;rvHyTvW+#Ii@ zI>C9;xpdw*{UNm0-ZcV)3-a!}{h9kM0hIj)>C_s=Kg-KtrQRe#1El=9eUDRLmHf6o zSHcUowR8SGp#5B0uS$GnHb@W#s04fjsAhA8jBV~mOlz|lsD_EbX-v3uvt>~zlfJYf z!m6E6ir<2LLz})emocFnxZB8|^EIr%1HIgXyx4Ul_sws(1M42^sFchpjO@6h7(Hs= z#+*idqhW)M*qQPLa-s5EtYxH-$RayP$5*w;~Bb>!6fjeA! zIF*_J1T8|Mmcc12E8DuB@+eRXVdfgLD{|ZS>3vR$Z|zhrd6+_%$(S}Z?mACsL%9m9 zN?!ow+oy|>OtFgo?;60f6P9mC&cSkD_6(d zEO?E2;la~Ly=Ne5umdY;rRC`2;gsrv3Hr2Tl-o=|F!GF#p)r``p6B^@ zPugl0;+IO24bE(hDhc2|Q0~uWD%g)#5$!iWU3>1zd;IZsKXu_wdy1R@nQ1FQHx9)I zybXMxr35I4GBpNkh4qWlHWAq5#EWh`Z`vn?=Gm6-=S(B$nCaTHX55`FDv*;2K+cA& z8_76a*nO3b>k5^-0$YEY5@XbgoFp`QDmTM_hdk8>qNX;T0X#ZYNk@{{ANEO!l;BA^`Mw-l@(aDQO5>|3zzqi;oW-($(H;JiVnZB+{$ z2RP>=S|UJb=r#i1Tx>QXR1=Tmxs(vFa0lqQNxka})Mmti>%*7rxyvwAh#+cIp8r{r z|2b*X+_BnVmmjZsD(_z$ejDGB;2j zL>`K`7;VeXukK`~mQ-BjI`n*OE~w`pVpjvuzTYmmMB$`;>6$a6)XF0=k7tEQ-rUUN zgVIRTKaM?c`u&7DM#jP*%XQ#FTWP7~G^PoSQI~6;SSj~&~N~CoL z1>fqD2b75Y6wB`&fBpF0#`D>?aRDu@I|fzS?Y(9tXbYx;2ilw}JIE1RsOyiykSR8k zJ}3qCN9G$^0p=-}l-hUpcrzy5e2*ON>=2|=Cmwv-IeMiM>%FGParY*hwgyczF7GdO zneIxCs>9NP7})}w5_urBx#$PloQ?zUSa2Ks7^+0|7^N5;U>f?Nr{DtjOb2S>MW-nyvEb)Z=4oFkSJmOeXxRLOG^6(`*!IV9&S?2>F zcSHNES@S25TjT5k;KLi#@a(U%$@r%~_=b->w_C@W94UzJ_ZRN>S+8;vGF3}!NBos@ z+6lUfMEUU$!z^Yy^-ttrxX#}Z9yRP8L35jO)!Y>PzV`e^p#oIVOXi}Z4)a$ARA_A} za!_$o&wp`K0yVJ{v75DUnD) zshuu*00o!JE_WIFiakrndV?s%wEd2e$O5CMaUm4VvmwYwK;p5UKjGAphm9C#oE~=X zXpFcWw-K*6w(Pz-{U%TgD9tNW*q-`@NK`gH%2r?=V z99s4lSzkr;hh?a;Dgg_MPBp>v1qlSh2<%~Q6R*SuLbFaBB8H8S(tEl~c-|jBmCda! zc$Jag#ex_s142bZw#)DB_kDbGBktzT=Q*Co2h;(z?$G}zan%2+#J`AMz#w~sD|mv^X;$$F zsRRA|P8E-E0`Lgd$-VLeCFpW;YN^8MjY87|wj?S_bRC}{tIICq4VvtZZCUW*+`R&o zof|ELs_fCvrMts@I9Z6hBGzA`^shrdCYX>*DkN5d>Rz0mqs!T{0<8h<+D7;9A*?T6 zR3Wn?_ENp`_no)yt+FF~yU^YCt_nY45~)fe7z2*1o^>7Kxr>vSYLJ*Q(2q8Lf=FUi zM)TxvYA&Ku9Vp@mhH0J1@AU}vDpfL|9fibU)RYG(Z9@GYmp1vRuX9v)^=WP+@vI;|rL$}9t3*2r$%Dn{^8D6b zV7vTdF#Xw^DqoE8qp+}7uTFmZVR`8D`y+FGqr6xrZkq1wodfxMCRmz1+Dl!!1@$}& z9UNn~SliY4`K|{m-YrUS$>Yaw-U_PIvMyY>SnQs?V8@!bxr##}R;zk$@5`zAUHE0T zxmm$Kf0YzsBEWztYr>8YXka6J)Ig~%k%Od; zd>k}tLcB41vE2dDq;jYJ!tCP^$qt?`?Nn-B6UQNVVhu{EZ5ss!)c98-qF5P9q9dNB zW~Q`5*i+O|6X=FDX~tL{^{&5K5!d$D;B^P;0J^*Tn*I35FjQ^yRc6s$&Q9Ywb2@Cv zS3S8s9ug1^aFAEhUe@+m$loWNjnz+RcKryZKjpn{K1TaDGQ*{C{~W`;OP7DR9_2oJ z>{7+U-%St6l~3&*XA>H-&)@1jr{gk|Z~1vu^e3gAeT)~a%Jn%}YXmyr$Wda7qI}N< zt>Q7tap~+3CiB^1@)K6<#Y#gXOepVPratLfzliK&2A3Xx`cBtrb$x%{8H*e9B1~u# zJpPMOPQu@4!Kp-vmYCmZ57GuqK(!9aI`WnxC(k;?ftR0az0Ws*wx=tKeDyGY!^D;k zQ%Bo9AB40_u*McIx4E{ldq@1SDKXitu7CTTnl*QZEAMGdcKy+F*;Sl48TQs}=<2|W zcT4gP&8%8=qxySf=TQ4$ScqIg8=zBiF7RBk`3aSBt&f&W+L=~~k)B0Il<@^W$;+-6 z@wD=?AF>*H2vXZ6^x*IE3t?~dXlY%0;8hMWBl*hBcYiu#RA=?C7)io!(3wPFoD{{Y z*ve-9*Ktokj^-ez1T79b;0SLR>2w>Fa=GUDIu-L&h>VDHWJ$I?$!=}y-kH6k*b^pg~ zVaXgVRzKyQ|M8YpIfH0=2XgQ59)CI(T|KW1t)2x4B zHX5_Z)rMrtHvb4Pd2cYv+>e)^LE5^q@%9LZ;hfL3C7PC%HTfJ&PMPC$@`B&ZQ+y0+ z{|TSB-T~$7t&qCjrJu{!Z2EG(RcBYvb-R4KHGQ;17~^@^J~mZ2jUotV2oV__&?JHI zJSM9{8O7+buaPx9sKV`|b$bCMy!$1)^0|>uobIPf+q^(mfTyQ0F2fea8yuXy`rj@q zO?t|{$}mp;TXUICdDVk&N1EmvXr-Xgj8>xR;Q;?W1!f&K2?p5h0kSlV6O5xehv4(& zM^02!M0~K-dP{Ql(eVp6bXiWk6i(qc1aX^i%MZm}>n{#HvsJe|J2xZwb@Jovz?~UM zy@^L0P7q|yBhC5***C(nIJB#PdTAkaEA@4?j%1gjQ?MR=3)BXH^E)}SGsaViN!bsa z`32WxOH^%-hrnB2S{Ug|5DrlPmblsnK^uq6;LZz6_X zS)!k`^?4BJ9kyj~+=59cz{RZpQsew#!3*#j@hgYmC-M-8IizF<jke(jPqU}w3r?MS^ycxvhQN0V=Q#Y~&ggwao2{H@ zJR$q5H!*O=xjkR!6?|E44U#Hg#RSmp-U<~U`=#3dr?CG2m7w?c|9`jawEe$XJ(j4f zU}nUBA<^0IwcuGYp(wjCTp#6jk~V{SwN4#%D96;B_hJBM8)AYRxDLUjnTqw^fi}_S zL*j3UbUtkHx*$j(afZofhmkGO@4Byk>TR3`x!&Z+=XsV2Qw za~*7JyG9ozir2_PJ6X2fC?jOYA|DJEdb82`zZQ zTk^4~<=*?Z$f7ehH~8nhN>C@6|In8MGg@_-`jYM#EtlA5Z2!iM_N}*HWS3>`-+%V8$1&AHC&t4- zvAEW zp7aGDN@NoCVt0fT@a!haH+)qDi;Gq0U4F@;1%_eUwj9a^QEAmyH2m zkIY~D$XG4Vzo{=ddQoliU=9~UZMhDpgP2x!S&4f>beyYD@eNUxsC&p5e z5`;CBDx1e+swpJ)pZ!4Y(ft5k-u65@W@)MHyt!&;pl|XT)t)K0nGImn;ik$Plbm;pe^W_I2&Qv#Z!q-E?*L2)r(Jgixb1NbiOk1z8~3Gyo*L z3^3fiKpl!r#ikNv9T(r*NulftK|P6bB2C_ZHtL<$z2i5g)8&wZ8_ygI?6^&BJeT<* z%NU0Nw{rXumEicz{vMcw*JbYxr^wnUI_IWx{EY7Fn?$A+eX_dN1iVwkYHIjP&$(dW zXp_pad9{!>D;2ZaDY9bTY-EYq?!K!-D%3v_0m+zTsZ0~y ze?vj{;I6V+dM5k0@6EipIFfTh^_VxAxIsvatcEQ&eY{|)Df<&!(&G8gv=6u_EjJK% zsvfyh9t4Ac%dN%m4|z@z^*gOLWK_Vb7v0Y%n}s+Nx~i{CIeO!)n>Kf`Z6_3jABy`i z*iSpYhD&B@fRnhWpyud#e+6;&wktnqW&kQpuyisJU0wKIy_PclXh>B97;xA47dE>$ z3FME$_}BY;mt5JQ_75)J_nb5ziW5x&F7`R-SCb^a)xIY;$~p|DjEA&*34TPWU=}*y zYnmi<5z_ta(`b`QcQWxW-A8aPF3*lSA4|FyQ2ptjoqzeO?o{bNh#L*51uazO@X>vr z?e!7oa=C7&$1dg!C^%DFO-c%SGDmQOV1|B{_*p%aEzJ!{AzNOAsa$w@-e-wVQ{YJLN>~;$kx&qJ~QV1Bz+mjpxE$>Ct8@^`1*;yq{U%V zusvbdB<)~>g=+oxP-1<#Lkp&w5VtVXAy*#I)l#)UYiB&59prM{_H} z++EL3=>+Ye+-~BtDmz%Wm^^a~e2U{fpjTw!m1BYQewzF6Sch+4o?0$*k!YZyDonw+ zq|7bt7E;H*=|>K(Q)_{pP*WVjPKAL5MXPF!x9&u! z;z!=`%3l`*BgKIJ+dt5KX!IQDY0hVktQjCIy#X|Y^ZaJSm#NBR*FId_h7kPG~(+h?se;eC~j;|k|x&*x^TzcT^I0yz@qU#XCe{`sd+= za&Ic4FCmFF7)o~-)9>hrg|VKvxDW_$(|rR+QGDy1PPRqG+AiGi>4L)AQmV_UCVBFU zWP#tdBdc+bj;7~Us~&Zb0G7^BVpt&%#QZ?{$ z18ArVt+IFGUhZIZb`ZuI1>Q-@5r(2#W+JT~BwWTSKgQG-T5FGYpD=#Zok~D?A_p)# zV;j#teN(?itx^x0fRRAp6@QBxP87YCy9)^e*595m?3fJ4OzOud)%eUujQr=e)`N*I zSYB1;B>_LJo9t?2p>PWH`~i}gJ=;FyyZm+Mz_vT;Ha^RA2JWEq!InN&vLJ)@`dE6+2GlB`(NCf`k#YE(y#-iTb`G+^a-aOqGM#Sl)kt7Js^5=E66FPTnlN^#*F?V75P zO?jnTpVJ4@GTWIZv)m=1rRn_~#f6RRB8uST*A|*7O&t{ji4=XVke&T{$ikf9?a0Dt zlMhR^PVf@r6k2&Dsn3G&^%KI~luI#9B2C=T7R(p2<9TlWm!liD=y&QJ4a|5GX{9^o z54SZSIHbaI2z4PC!+2QsWKv&l7)Go!>a>Fx1PkO(*mhiypzl|PKF23cB~miS2#NX! z4=osy*wcHSEhc~$8F2b7GGXia;LTi8-CB$4qv}vKW*1R*Y`=+o3?BFqP<4+Es>xz9xemXr8#{c^n^>OM(Z2z;g(udWLQd>8I_M&UeRm!pf(e;B1 z@Srr@8iiI3y0e|5d+3{?2u&kw>TAx#4$?2gFI|=npM`&Gu|CRMvJddejT`MA^2G{w1 zunGxPZs7&tBQmT{Hw9rHdD(n8+GoAbrTE!!v?a~ZVN=jC3J`K9-Ev4rq>BKky2!>P z22PQi3Xg>o4~7>q(Hy%m}bwysgX_lxrZp&hyg zWTYj=?n%WAc4`ShCQOt_2iBk}W~pi78ATVg8(}IT8BrzbiIK(d4D^sD#>g|l*j{%y z2@H~QQ?8jJ_!-3`!&o;k78ZBC2@0iHO(9=;oRmyXT6L)uZ!N=(cb87(@N)wit7e() z?!Wp*ja#EIx2Se_6Uf5oJza{aW&>BzN$FQgLcH=y$S;FJ>bic5jX6^`+|Js$Yh^X= z_IHNY&8&bjL{j@BW^fsCU)7t}ht4JVxvG}7mvEm7@Js>X21=Lkx&k{ftUpK-o5(dq zCjEk{<`O{IFS^T5nC5sVis|pHvcCoo+-FWJp-xPV0?fu`qh;yi4W}^bAj!X8y<~+7(}U$_dzh(jy~BTR3m3O$hNfgADeE z3rbuinT>xfbx;TLa+em)Lfk=W&MWLo;KUI}?t)YpG)PjQ?G7i^u%8HeU4a)BW7{%A z>-Pw-GM>gbYk%dl%3Ul6JR~m%i%ByOXs8R91qE_9;h|n-qK%!4^NlL?O0ySIZ}+Vg%W*0YtpAAKXI+}XuYoPKH}`9 z2ae^>Q+-%jg^U2tP@f9EaPEV#ce>G;^5Ztt!OpMR*TESB?Ud* z!5j}^b#XYG$zv>Lr-G!&qDqoMD^AxrN%ehs2#4o%fV(7T3S$h% zNW3Ey%qFcsbCWeY(rQ4tl{1P{(tf}6p9h|p4idmmx`r)fA6d}n_?>m^(**2^KD7cm zLzv8c$eEmhcJTkB;R_(fE*YE=vwr7-kf1p?W@60Mh)xL4pb3tm40#ruOL2$&Wpq&v zn5>NT1Erk;{`m%QGdOE-mz&a3MUFWUNZ*lilGKIgo%K(-GN<(7cpU4$K!w?VKm}U1 zPsg9@k}yskS;>mYOhvfiiHEs5_q{W^Qd4B-G25(=+6g6Dj0)#-`>H{1rPrnN`irmE zxE_&wSXR0{Y1Th`7CkOjC%sn4+F{^cB(uK&(V9V95{EU(ct-=rulPw>Z1D^=j~o=P z6+NgIhJC-UU1l3!*9%%i?PxB@<8sZJ9$}IJH}^-?M~@WJy#4&rpV3wO^^%H9fa~HY zzYA62(9iV3qiuMYDQZU)27;r($k8Ev{bC#Vu;9H(z2IJI$%dOj))%$QEN(M3$M4VbFa=Q9cV-6whLx#eRFH3eB(Zn1qC=w!0T)7|mNK^Dby%P%S!?43e}a^gcFvM8)-M`Q2a?q!JMrTOdX&%Bsi^LPE6Z_qK&>RL_{|jjqeYjHS zIS6_Y+{?_jam`1!B}&^Op&V2^^Xr+pLK&;aOB1`4RHk(~B%kTit|$pV{L5W4b2{wz zl(r~jLiKrppb`Xh!~l8QAoLAz`G4}ZAs=q)#Vi;xB1NiOOYja&K%0{FHWdSlwN~PTt~n7Z|r?nSd-h=Cy0OzI2LS_ zpr9ZKSSV5>dJvE<9mI$TNC&CXqM~9sbOAL&5TthyLJ@)>9i-O)0qG@_gp!ctb#}t} z&okfi%*@qX%*A)%g#_}xd+)W@{;l6?@;}_FAV7H z5{^Zlg-pYfOa=yW{G5SLcGWIX{wlCH@$-4r`$W0 zLEg^}S2JLu3Yqi_Kb(A9y0$Zp3NqSX(mbI1d^fWrtQZdDY82giM4*&TSqfku!I31_ zr2}m}$-;%iz}Co;s|Zi)Q6(Q;Q#hBIW-8Nz%wno^?kaRbVFNNlAgGCvSs-_zLSrY% z?f<8E^;j?RJbY#f-mbcyK@e>DF&){Y7t!&cq+;i7uAsbdS(SX@I`7cu@e>*12_8Lz zHpN4Vi^p$Qckau`y8K%tB1TPza$E7e#*@cFxcNJO7nE0~H$<|tML*j%VF-+pz7Fc$YJd6Y}5x)PJOEx-O* zaCUWm!Ly_xy3W+*Y~!FI;dIupP4<`;e+#dx)YS`z0=wqq?~UMmt{u>UChH$KV|)X+ zN=n5ZKM}XIBy^T%q~rmB&57&t>NDzdcpN=h2^!??${+jJ{ ztNj>atZQ&siQKKhwiW&)TOYeeKt<&Zd4gmSO%MUBQTomL+{5bG?lS5bd2_caXm^Bl<#7YY#hC2$Fl z3*!vwP407k`)@bCXn~-`0D*yrH}{zj#OO~6)pAX*%^&hX48?RUmc8h0qn!kiYIW-K z`KmaL1JWcz2r)C*caUN??Fe{PUPlxWd=>uc`8`Ll4c1K7tat&i#p7R zw%)x)6PahD#f6$&@)KHDCBJB!i0G<;!M-0`+%M(_t~{`OGZFJP=B@fVHtL8Tr{2)`CI>=A_gQw@k8XWg(e=Ag=E`g8vzad%pQK{K6KkaPH=j6&KHbPu zRCjmVK6LAb*j}_6Uu$!W~Kp3eY7QY?UY5g-Er!9L+o>jxbVlql?$~`5+z~@%ue173jqRPOB zM;?5z{IY?o&aTTrhCLV469jbLNa;&U9y{h3-8r+wW;UIpW0{lVbUyR*x8lq9aYfN1 zw}dU=@J(dStl~8%4;C?g&Wv=gnYlaqA4Nh3+o!%OWrWb)tVlJls`j+=4?qOhDKy?H z#($|~^IGNp;wLZ_sj(4I6_L9&_v=BKYD-hU(d5>aoXg7~|IY&F&h63c?oD|nbTEnq zL=;ZI45WfJuA7)_DjhGTbAm>-2_#^hOalhLz?PrTNED;FE+d()-lmJBwnKjz)si}u zVhVrgydJlFllafuv#+09)?Vt}d7r2XxnkR;v5#TrRPBSF6ZZREajUL?+qs2f22Uwk zzJ0Tfm@jd#Tk>7K$A9sTabJ_RhE>_+HPhQdmv5@r8TX%NyZ!TxYj6E4S^h^nzcOf} zsz17|my<3MO|sv5hgyaUv-LSdT)v|@HQ3iSfmCZ-51hm_=D#h#p%Bh)dCz)r;-N*J zd{=IvUA1u)7iAPyCfk2ITL{OV;hrV%r(20^>b!M&nCo6X&4GBALrFUTCk=)$V}yYW%=}-X=>+E)EWL`20#fb^NI)5%A9W4X;-SVp zfd**;V#sAlEDo?q252sj%(n!%UT3=d4B#bd@fGxb>C#})#c_ZY{&fF$AbmGGA&e%e z30VBR%F|N|Bx;W8cQ#}MTAW4borebhJ3R3^6KfoY$KmBwPp-hpCUe9#$_Y%(U7F1= zTHp|3pZshuUS&0G^;cGl_dxq-e;}Olyr-LxH$1$dR2&?QDe3nKY~wlR9p}^4r*+=) z%^s($mk$|-TFMSNg8sWotJ1XQ5UtgAGmR}s-|IIwyjd~ zX|L;pHb!yCNkIhPT4Vr0IZ1kE)`4%mL|Cm-9x&~9@m2`efi6E~oOph$hnr-a{(1Z7 z5$cw2zu*2;9-VxLiJvjpIIJ9Waz&c4_}1OU-~Sa91Qzc%+lN;nyaJ1F-WX^b<7FlZ&NU>;CFt)LTCVwCn5YdlJP?i&SNpxLf+gI;VDebkR7L7*L78a-(Fkdw67 zF$J!7>tLExqab~JD3{%IsnrFFTV2T{NcR6T(r3YMe-`uDj6ir-Nva576b~uf)Ruf$ zcuvNLH|o|ekvLvv(CDrE?I2+anyBq;wptK@Jq)TWR$70qoX*RN8KX;d1?P+e+McQ` zBDd?=V_ePV%H(=~{bmfs{D;nN{4GXDTsR~5`7PZejaCeIW6Tyhl8BrMQ3YO6eLRfp z4%@&(t=l`iFoiedc%?x4X;`%W&{BUY*6e;Fn3Gm3@a)+s?Bv-Jve|koPsQcaBc9C0 z{nZ$A-%b<1S3hgF5^npNA$>e?MXHd))+Vm^SqqE`WEEGMv5|~?{p41cLQ2L_b1pvT2V!CCC`rMYW!lzY-OObx z9@g{1jx$a#?M+*Zg>j>4_3KQ=-i1yRj30`hBgcbR45Hgg++jV1%e=*AGQ?CZ2G;ViB7~GQ@s;}h8(dSIzf))UOa$J z5zQ1T5ldYTkk3#$QP$X{gqk*UM}h_ zYsSm_<)3A|yiK}yn_+PUufZu5Mkq54)4Cd2y!vb=q`%fgAse#?ZU%*&e(# z;nkA$Ld-(m$I9$2KN9=buQ;ocl6jBb<;3c8@kLC!pxFH4(wEF9S2i?{Y+hovkj+ts zyzxRiJQ>*d?T(IcTs6K=0JwvgNuKt^v|cNvVkHSX7uQ}~)mLxTnfjKp$~LyjtN!g} z)X@v^W9HenQX3k~3`!NmHQzdCzF}Ii8p$w&b6U!R8p2Wf6C*zX>$5veFE|7~X^7qW z9r?KlT;$ijbY3N+E6}TSi^q0_dwq1QAz{Qj_{sAH+KGFHo#@=rQVTJUzM)6=%5J|;yUC1D z)?@?fa2ej(Mq22>}Px?~YWa<4Um~U_=#4K^XaH#TrbGNRh1X zsxmtDmK^q>Dd>Ikw7gzFNsxo=VAe>+ErB3 z2d%df@EHLb?TqXF94pV=k2C-7WBSOx*!%r?^osad<{aScbFkJ>O8O$W!nyKD+opw5 zA^bsa*vz{3J1j-*@3(c&*xW7je&RMp+24f##QEesd}~#3kk=}A@@hxy8?yQcpSI|C zMYG~9gd-uyeldATe^%l{9`4B@sG)tX$oR>kj$FX2bW4SEmai8UC*lCKa)B62iiWj! zK3V~Wi8hA(Ak{F0bAW%}E+ay=c!{#4t`R={gE6D19Dqrhi0&bizFRn4U?7*i)rVhm zB^6+(-lO@2FY)QwDaLO_p73)p%um@9pwj;^?CW|7CECxPLg8IM3Oc!|Eq^YklWH3A z&zl^xW*?zjl|Bwk!d63a_K&s(;2!RYInU|`+zyQ1I#82+`r7Q1>5SAQ6I0EH%&ry{ zc(P#=X+N1~9NvPOg`0U}K#t05f%;(-ik=X;GHC7N-V*W=kDK!Z)D*?6n;LfIQlP$* zyGzYv+drzDM~$pawl=d;oiTYp9{XSoKgW8ZJXI+Q3*!AQacj0?gdsABmQAUPwF z5pY->f=~Vp7o>t2PBbyLx%>w5LXW@?d=-xODS4)nh*C;Z>(ij42gtKEt7KpR#gB9&UWtPC6&UV&Q$Pn?XA}7_ zC}o3>fPY@_v|6BsRBb(mxTY!us$B_@lMatJ@sDWn3*padwzk*5tIB&$Vk2B7`>Q=q z(ahFetKw7h(@4D;qlSI;G67T3CmHcZ#9_g_#gOh*uFdC*D{)J@;381@Skb6W#SE%g zmtf9Ac%^?PJvOOfS7`?wU3J{7;Bj|v;eVQ#nb511{KXd1KejgT?bf?m>*Bs)^y+|C zG_AOX*8sY4I1q1-JPU?yj4Q!?Cm$<$`G6767Km2}`rQp%Wa z*H~Mab;&Re=`vgVB=`+FR{9(9{quJh*d_JHY@L4h<|pmO$*vcWHJh6Co|6Y@&4C5M zw0EoA=y{dsIIeldR)9sV(!t4IxvKlSm59^#>a&M?&~FAs5QOAuIB38`l)-U zv5h!ys{#IV>MFPT+SSkIerWAxRR8)EoS=!zpvl4RpHpUQgX}@V&Bg7hb!Be2p(uT~ zpk-tU0{P!K0jnNZ%iJ{9(a+3onH#;NTR_?_gnv&AAF*n3a}julfroqh{j|o0K?+rV z_8Lc@{w%Zgm~njMsJwYV9LzU<$##1_k8!lFK8X~&bq5#jaHZI3%yrjE;uBBNDZ`F! z(YwEmrmuB^wvJYN10-{{d9Q4BuA^6LjuN;z$zh}X4Lp%%V?Sn?9>^>?b$u1Fw!#Dqb5 z^+4d)X=Ii4oBpac*Da2wQH_J23UI^Gp<`6-3-P#N+t;J!mD#7!>^e0EMjY?Q^rSN3 z&bLhF)ruqAtQSz+{OlVkyu{ThPBnKIOb66FR$iSt7EI|+G^-#gnPR^{@-~@%QgF7K zZBtGOi_p9_*PX>jIcMKwO(#Y8$I+sivlxQq)E?-N!$Z5kLs#H#8{+&5gkh!AC22yb z(~UdFEeEE|0X(xn_F`e+nc*}KCASC9t*uUi6mwN~_RqVn9gTGaM9qmO`ktM$?KJK`Vzi7M66I!V6Lw z?XsO5CDu-fKZ#Lz(Gc=*F(?`98TNA zz|Pt0SZS=S9$D!=igCyYL1r9=wo$Fv*tYKeWy zKgP^a09D<3aOX{gCQ<<%rt)P>1xSwCfYrmGSA3|VKn;J_j+aHgtLx~u!IKydeB-wL za`OW@NSNFhD6Oley)Aoin>X%K-Ltf4rq`SDl2*sEil0p&h0-}#fk|9I&uzCLHdM!S z;63tSPI@>|BA@^vSPIP{Pbn?ne=D63emC%K413Kn?>nA!u0eR^)W(;gsj-3=k zv`J5;kCERIkxE1!n;`tI+s2n%g%BMLly)**h0Pu`(W=-+n0FBr!wDE)x~|k_eT#sr z-67*nLCf&C=Ip0Tw~cp|Y?&oYN#Edo!%2_g&QbPk29ljYpJ!&th5=-czNjkc1{8GP z2t=U0pBJcy+E~an*mJLV%6C?!LX`Pgp}X~pN*$M}F<&z0N zdk4I>dF!P(+(uOiUkSA!Prkrp<)8S0=7+`QPLgerIO^)bXKkkUogWV!STxTOe%;$* zsG)ot(tK#lgwMeLd-2Ovw-<|zU!`4u*}CYKl*=b=jbrzfm30qO;f??>MEb0B^j8GH z=JNU6UGp%Q!f*W_gJ%5{5^`UCiin6mE z=oh6(iW}|h(3twT3VZ~GOH<{c$&FaIlvK_Ym)+YQ6VRwcd?~9D@NIIKko)BI%_~v)okfVYbpkbLbgRl2Zp6m!`RnJNH-8f)wkWw zcgT~Em(Gw+Uq~Up>+@#ZMO!{@r_r`_MZg!7VkDw&dJT6pH6a0O!mhRT1 z(w$i68n{xtZp&~5q2yKT?=3-m?9tLIrOp=b<6{!DisBwSck4?qrNng=hXo7@@Fzrs zDQ3%vh%p$BPObKY%Li)vKHT!t+DzIYSoemHY*@$98rC*Zs56)?DVRchYOUey)xKlJ zrY%Q$H4H8Gy6nvEg6MhY4-~GhK)(v#j3(V5;{s~WDV*3#vU~-$8+wT1t$Xqne(8fL zp`QH%Zn{|mvK60#3FT#UNvU7$+UM-f9qL;+e!jHrW%|cd#_rWfGP9pS(_P?2BWoTa z*VKLG$-90u@D7`&pu-qih9-gV;$YMz(vG?K;%VY08J3 zX$Z>RO{;IA6>r=34}IO6K%j-bEESZs)m z-}XIk4Mg`~-mRtfZh_&7`E`$(3js?73prUvPkiN^K4B!DHFbuM41EeqyzsRkE#aKS zL{qOqZch5!Tj|j@;c2!{l{>CZ!>>Zk!WlL%I)tu2Di@)!)@4is<9nSPsqQ}O-U{lc zuv4NQw3zX4snQw)Ri-&WpmTi`4%|-Mu6cZ=;pGzjnSNB`q`bhbL#w)TQOQkhaWSs~ z_+?d$<2Gv)6)oSy&gb-6oAkr~s!?@SEdfF0YIJ|1L{S=auELM~7Hq#Rx6=NbCZEOy zLaVR*DyOMS+M8xcc%2GZU{|@Kf3ZjI_3|+VVdY{cSt)%2KzM@2Q!{tHeIKzHd^5Rw z=+J@bwJeUbH%^}CKisQvhKU4jm#ccwlE=m>s?LmBp^B6;3O&hrafP0xvV2LY?AoYy z1H!Muh3aP!4U>f_HHTD`-=7S6U}Wp)?B(;*q%Td+OxVOoHO&G(YgiF-A1S~3hFZd9 zWue`TIy$Y2Uy68*^Lc+vCa%w4sxKdB?Ox?~OD`RDklQl#+))1|^?Q$&1ORZnzHa!& zs6q1YFxc(F;r6e7aapu%WIy^>qR39+phtFB-KXd1J9RH&uRnIY9nrye$ zb)mfyLKmf2&-mOMhk`-CsV7NMe>RvHe70wAoQk^n4I#Cef_b;R{0~vd9QHAf&FL0z zM9~lUVB5!~J87aRRXrVEXWT@1$n#6{tF$*5YrPf72sGrEa5`dlO)>|&v&AF%u)qCL zKuLwt(cJYF!AD;LoSrR{E3|Ch)GY`)}{C%)I}aKwfZfFO>XIP z3szg^dwJNDm2qCJ*p_oRfhk)VZ5W)B=a~34*z@3$zmDM9_}jEH+pF>UpAPv-pZF*F ztyZ?UeVov9vEgYub?0DJMfa>Nq`Hp-!g~&JC-_z8Qh3hG5%ZHRXDzbUHllA(6o8NX>aG_-EVf9FOHW@Q zHu=jJSu&yDs$Uyz_C!4Bh`r#k=&A5i???c#U{)goV&IxUqSgcsrE$V&i}>)dNyzB~VrCu6?@q@OI;sa09{LH1 z-GmO4rsjEI;t#$hi6$LBeN^|s_eZRm7xkk~W@RL?oPRk59UUf0*aSIHOo;ACKfymN zO`C&Swjsw>5;uqVLSFE$G1m$xXa|SxLO_%OCwCWm^Sf^fIq+(HqiC-WS zx<2ewczIKi0n61{@r`Z*{dn@up(H++zCPovtvdxr)daZgjuBlqMs#%#wHcYc*OF8Y z;dotm?^7i1bIA3hcRf2ERhw(&Un=4_+}C?P{PuI2#O-h)hspGlv0d*-b15ZQHbvA_ zWL;uI*vl&Y;xe~B3YHl8c)BP!{Ocbx_~e(3{6|PBl<(S9{C#m2 zs=Bj!{=PKL%$78#0B&rYexnX&8y<}p3@{3CZ6BXqO6#<%(*7p4?q6}`TB~(<--oy1 z<3@q+5tzp1@VV;wH6^_=3la6`Z4m>>>7>6x+&LzaKx5G+*wPV|HE08p z@moEPD}32(eo#5)+D;$?MQ#Gfz78Zf!?c+OGsG6ku*^A7?y@*Z{q5?8Sx92Z6=-0wN zEPp-R3>OGI(Sy#6lY?g-?f8M|WyI6TVe*S^TAPCYC+3#!YtGU33o>|zf{dp2aKOSJ zgh9q~$Au?gw&6FmTqTR)AMXUHol^r#$p${jI~0s@QUzo^^)Qk)NUo847K~W_!(!Vq zh1PGzqQ5`YR1UqbB?rH!TEp1y8iBjWx@Pz%`uod&SRNkDSCc>Y?GKA5Jibs8%IIOw zd*Fueicw+E9yJ^}_<48RjCUyUc;$Fe{hn=@e(heyW?Hf%>tGjC5;gF2N;h9aczv_qvlBjCxZ~jxQpVhl;9%^(0aGl+1rMM*jCnNoF!bU! zWGC$s&mWeX1&}Ng$Wz$a?|h9(USomB%kjesrid;IJA7;m<{?-aJ9!+owIoHwaMICG zkGND#D%6H;(Du0b)Mx0Z&3*sfz@dQ&md<`DWt)uxvHp<5(5^)pImiBB+euPkECGSg z@Th!KhS~}5^ZYtywx-#$zyJQR*pS^10Zl;GF6|`sk`=yU*rqGWr*~>#L7`SDr30AEMf39>7!OOS{EgS- z++nKf00hdx)IezfIKGABA~d$8n0oqG7vxO#_nq*MAFuHr_Rvy(#@Hhmo@{&_zSe+L zkU9xw)?BsxA?*cv8f>A4Eb@)Hr5nnb=V2h)fpP-W%N5*0&To}+%yGy}?)NO7z|4tX ztX1W=fU)V2a|`F1 zj+euSg*;g2cGKwhgWq{;fJ{RFa#g=+H6;}%Lf5ayM?PiIeN#v)4I7+y;bCq&#Lo)4 z274f7i5Jc2=wFrR=N5w3L9;2bUc0hn_?HP>tj(^xeA|*i=p>yKi4gI zz&eG_TjpWzIMOCF>$FC$`JQVm!D{SkziE3ex^@&WHI;lI04Xw-s}CQs>6G-H(VCmr zIx%sVp=0K5YUPTW^6dIup`H(TCa6rVk4AZi++jmf^w}Q3hw00<50L3Qke%sXOB!l) z)N^CE4Ih}>qn#;CSqS2naDGNaM5k}NhtVNU5v_EBow7&z)-H8`MDKrJ1T0=_req7n zg*)mVsQd`KaY$3tuv|4dM7KhY*@GkpgtuQ*#lWK-eiTc&V9)O_P5@$|5K81KmCi8w zi$8R;qV#2WCqti!M+(c!k6Vj87aU|syjZ_26LqaLAFh0taWzO0?-KEQ&C(cPHm zdcbyM@OtY-^*0q(vF;4X?}i}b<6x_9LzeM(Fcj+Aglt1Ira2$8_pfU^mx>NZXNDq~ z8iFf~IR&yQgH0#o7f&e5<~Gq(u{ZBCl?y1USd;qavWJ40C;F=`O{-nG3U8Z5hluuXXnfZo0_h9^7-MuivsP#%q3 z9VAIk#IS`RnMVg2R8KmIAnVgMbp79KH4m zb(q%mvI5k*h>4hAVu8g^ESxxTDEGR>ncN@g7z?6(x_k;=)7@qAYJ@-ZjT-iqJWg zpV!ctR>!aYSq60Y2W_xcD3d}RRId<5uQn0;g;+f#GkFTKYa!h*raB=fxsGE!5$pdd zyW+p|?)mO5b7|`9-J_XwEydT$MTLFW*lWJO+JUs#7)!$8praAjAyY7Rr-Y8)x?VI> zFE0nWci`uSW=FL5sK5M%IwI}CeEYl_R4+F>K4e3CQ>i_67}Fw(@#_#Bb7C zO`dY>=p{Yju8pnTovqUZ9Zyk%9D@($@`3Uj_Woq^U{_ENrLP=*ePrwRpzxX$L!$C- zu;-qX%wO|W=(gh6i409u zvmiqas6EWhz&0l^AmvcM)WlEMY~_1KN+#dR&i7}&JN%D~;bh^*M|{dfT6g1~Orz9| zH;nr(ew9x+@0SugDa|u|JyI^D)q@$up0j#ou z`)ptgbYEo{WLU{w%4pDgHD2{4z~0Fzxc3$4dV>{zKsX+!=xkIZz|-D7D{}R<{38p7PJ3~OzSM3|N6&=52v1L64OJB zn>kxEWR`l<>Tjm(6ZqJmEhgePsk28-#Q5`Rmhbxo_;{uzzJ;)C`Wkr#eW!#IQNKA_ zmR)>ro+;UZrB&5egk1S8&(U^`zY!++p2Dfh6X>=`pcHTCQi7z{5_2x3<0=j)-W*SdcGGt2-aN#21D9>pu1lV)X-b1m?CWuJ3sFWXk5Trv9DBSWLt)rzZ=ztt0 zw~panTs<3R?Zam&Sm2=jV~S3a*_lI^dU_fpb%@tAyT_vSyY7z9PG7F5;=aj8RI32@ zQGRfk>Mwzl+azAp`@^jXB?nQ5SJimt&@b~E zLD8PnPP0k9h%q%`f3L-7+i#Ck`nq~H8f$S^IuFO3v-s;_+2-Hs(I2%NgRehNR=Zz| z6C&{fa&!kfJYPo9{BZfC-QJ)D9HfsX)b2DP0(b83=jjnP^#!>hz^->ycna#lc z>`Zj)a5_Gz@2E#W$+bh%XS_?$?|R>srf%b9WCR~l_WQP^p5ANIZn^0(T%e~*KDNnd z>A92t)o#0`#j7&zXKtSS(IWCtGgDo9rkCSs;D@ddz-nhs8hGjzJox9KqneD`wAbec zpVcMmYE0&p0PHwOdy7j{qE-3Lnbxee5mxFcTAy*%@Z!r=wxSx^s18D<&a8yL-^Ei- z#%)t1(L7?c#j|F@_c3)D6Hm&vEHCekizYv+31PHm)$6}iWrM^i>_h#i2(0tU?eVHn z6i?ojlTJhPen+;_=|4>g;o*iDyZDqC_up1X$>>v0J{@<=n)fW_6@PI{ORVgl7UkRQ zkM~orB4!ZrW@*cH*QR5>Xr3f>CZG%0YNHnh(CF6KsauN_BNAyUq`A)aa)oX|5%s9c zc9@&0yMXTJ+M9jV>gAqFsUA}${-0jPqt8U*D;}-mj73^RID%-pXWwJ1LDXMy>=zC; z%dx$9p!Em0^!LgVk@v=bqXykozhxRS^14qW zhuOZ$@z5*xh#AAmUfhSZ$8PcHm4R#X<(Z9icriBNov(MStr!u(ADECwJsn@1vKKlN z)42L68+ucKGv;m6z4&c|axuZhz)bgarAW_%-xp8CT=GNgeRf|rFXJ7N8@1lVsX0aC z+}P5X_3YU}k08;O`&$lOJvpM85Z5C)Uoh%%&Z3Epup|21M7th5HCR{3 z|MHUT;p7WS*j@m(L}Ga9aXEJODBdc>-19?2_qv3eRynLGx|!k^KZvIn)%e2KWS?AE z&walUcq;pGfUfq#;=G6lRetAIXwX^jLNa09FFD}0j_EE zb_4b_maIKVPp9AZg&Y4^vPL8ZZyFJivxt@?vhI8p)y^(ZV(sfMC^^547DVpF_}%U4n@Al~DHu^Q zjqy)Q&d6(3e^cvox5DnNQL3y~#5<4n!qzV_vBHO*FNp_U#TgjR^b$E~G7zE+%zPCf zIlemiqs=%;nS(Roz+%4M^$E57PWV~^IzlPO%>@>N6_@wzuJ0m19qlgp84J2iF|}I9 zHwtPu*GDbfM%xMB3HL6aO~}Ql5=Q-9j3jvooqFV9PM9~Sdq_>`aO|FuSm2^<6epLG1}{cpZ<7yRJYO5LeG32J{>0I{_RTz0mC z)&d4n8c0U0B}h|4KofOZMJ$AyoNJaq?vhHbRN#I!uz_iaM^pr=4XX`-? za*cE1aWDh?TO;fGv4nwOc0iZW`>`}`yf_o(8G|1jGzA<%`UVUV<1_{F|9>O+FhBs^ zgwgwt(%{3Q7&3y63dGR^dA7!x_zvVg!ZWBV@ZU+y|6a#V^1=Zj1tQfAfVzf5oQStI zyFl=wbl|~1ELL6{Z1j01)+^n^Ag(=Q!0cTfnt>qjSjJCKoR}YF9)ynPF`B{8UnT>G zf-UD74LSUu7xDwEY!m^OLz-;#L?jku%>yD~nhu5o)*vC|(0|_SI&-~NA;1UekEDmo z16f|bu85(}O`El%{!_RBTSajKR#%#8NRG^*`9o$f#L}*x>P`W3W`Vz4Rs>rW-X&iF z(U}2_+2KKddU^%`%1i5Jj1Ro8!zaDa+uB%KH5&3}x{CnLBJ1vA2@Nm~EO8b|z67c5 z!dt*qfR=BVV?nbZ(a;_w8rG9{5%e~Fqz#Nh0ib=}hsr?0rF(#VGzLkey@6{X@L|SY z?kjk^yXjcuzvN*C2~=Bjbk3naAYjjctGvrl%2M z;lU;5Zh&U(uAMYtFbf!g1_Q&(VasqVqRjwDciweBfbaL>GI%}iHzCO7H#Jy_pCCgH zQkmql$rQ!HTL8HDpZ~Bd{%GPy7B3Jpt>_pg!D1jy)<)-0mV!=mMrpJpt4;qEA{Z1} zE<{&j5(usou!)Lb6El!?58>;{r+A=!jOKq#&!O+=f7WN{)4{s8TX;HQz53VySR? zWanHWv(n^uDDyWqs6wzz&ZW&0J8MW>Bx7&7S;5$yttIJM3(#YYl_dO!<=J3SHAC$X ze|c!`9D(!mg#e8XJi%N@FmOT*lhD&fr1uf~;HNZ&pYNlDtrLG9-q@A5>o7U^N+V+u zGx9snjF0=)pz8lrxnu~f-?S^JL3@}AjBt;fQRJk_CJ=ikki#rNax~Hk8|$`H^Ycx26gG+BeO7P1Z!664Td zEM;O>ys#f(+Z=;LG*EG9*`2JndW?gfCcg2Fwv~TFb~!hzIb5-NVqw&eloNas!7%dzdb;2Ggz z3_X}lj>hfz&V2{wVC}5A01%N&J!Mkq76ig)c z3UcKNd$SWn#mI^}>K}|hvNF5uOK)Q&5k)Fc9oDG3M=9~?mWLSG7 zHPoG=$Gmj5|$BjQMQ^3DHO2b0f!QIAqxUKpn z8|0GvI+luOtYh&h2z7i%o{jtrLLJ!u8S2oWQuKhy;_8GWXbHOirI?Md~#P{p) zHDCaB?&9b`PG5~8B2?9VI#YP<{N=?8JL1vPzw;8M^zP1uckBh=N_fm{;|`gdqKI1D7U<`JYpm79h&3xP}4>M(ScDKj}hJYQ5G!KicaH|?O>;6Ibj zgPsL5zS0Up)|~`aE9`I482Iq{B4u1;0vnxaM!k^?UT+jBAr&gT#0*R#*A!{l@bz6O z{vg@82}gHsP5^T!$W%)#d{P7Xzg0^EX{LFuWP(A3;z8GBOct9 zG3Lq(0{<7%raI*hOSC?*1*HNi>jo+8-_B>$5*F4skpf%xi*;@;dNbZygkNcY_2qW$J_T|ho838A7x(9fnNBsi9p-3Q30^7bva(vy#Dk>I2%vbnz zP)7rLT=jB6PVeOsJ2K^So!z<;idtQ*bSu=e>`qPKRLMylUV*FED@)$@d!x8$?Ubf2 zEPKG}DJ&H$9p|_$Wq1iEVdE+;&R+(NZ+e$r+x(@ExkR~`&L=>Va5R{<&1o4J95C!M z5{ark?=(^=?v&E(I-Qs$aLGT3pIcmcA^N&j2Mh1Qu=Uy3C7=FzM%rY1>EYz>Y2cOq zsWa##`5=*#@*Je6<^@Qcc=amG(RQ-U7xBRD^JjB<cBX_|=Mj>&vLQHNzyhPSS9rxtGj*I#^U)_gU{*H?x=03+X z?jIdPxPOvyu(uXE`g4#?rnWP~N;`A7U){%;l`=&~EFOAFa3|}*+Vj&Ep;p4(3@4iJ z=*eHjLwxmx#V1ut;t6+O&2)4v=T*mymV%*1a(dY*5g3J-cc<5SZuS3lG4{LD-GDdW z?b*$o(ZT*s)fxKS%|YsD~Z zVQMF^2L&B-FO|5AkWuXPIejaVuS!*!kSUbcb6os;(l|cxrEc_#+flb7WhDjdcsH*W zb66#wyRL-Oweg(CPqNYPI`>G{UfyvKF3~awX%y*gJDur|j+$hIBG*vk4UqvzDLdTd z+dWu=?WRXQqup_ds^dCo$NLDSuV8XFvK1agE5R)u#m8TkD8GE-i1xVxprHPWN3eOS zXI4XSqgHpS+}%`Z%d`1)GZOZRc4I0=g&xL3iE#+-i=Af;dyH0<#}^-+zf>=K_fG1# zrSG%nx-FaSf1Q4LH&Q5QY02<*r1ZrNLayBz_V|}2P~TcXy1GW2sKA{J+6Bz_-*_;E zDl+x*uu4(F&!C`%ipL7V?>;Gpx0NYLfA@;Em%rCHnq9K@tE1wajZ09&IVJM++QS!^ z3s*8FVQXo6gtRcHAUE>VyLOxG?Bc+8UVf^ZwG9`&96Y*Rm(_-YU1KuUIc~eyPw0+S z9%c#DA=CfIQqk4LSDMeohu!N_pUYZEF8T}`Rn>bzYKaU z0TDqtNrZ{kn7D3ic?Y;f)@00>gebv|aKQ{;lm?L$Sqzq2vF5D(gv^U_ZT40Tb+p1jGw$i?t1TPLtzxdSoL+EMKRD#G~oU@Nq?*`N$W(T{Uz+w<> z$QiuJ#6;`hipHYTO8v;m&yoip605=jH5cZAnc2H7oY`+qW@v46fqZ<9^;M z;ro4Evbs0hZc6fos9h*35ILWh_RpsQHs!3yUVi;y(&XKV2Pt0{#T73-`TOASPxmJR zK6zZ5j7A7ueqOuz)r^<|Sy0<3Fa64-Bpbro9;jZ~9CttZc_nW>7FRW(Qc&$_t}{EB z+quEfKhB2`Elmn53FLI0Q9i1DGyZEn&fIe9!{)CKi!QHH!64ZzF9ZO+ACEV*ZRK(3 z7hdjNRhc95e7_2J*WJq-XFm0Qtb0cOnDK?1TDsw5^gQdgO?~Qno%#5q)gv1`xTVlP z%3Lq9)}Epj-CZLI&&~AkN%vJ9ZDnOiP&E-2>he^~WZCmsT#Uym9eEWSWq_1M&Qy%> zp;8un!w_!4IYnjYziF;GZ=XPCXItNRKd;W$OW_$tg}%RTM`Uo7pIcD*C~LZyj(fim zBWZutMVHk)>t}KO1{ViZeSMGA!w0-9o6V;!P7R2duG6)}z@#@!;r8L1v;~M~lPBTU z8Otw0U`XQaPf?dCtc%V`HO|~4hV2IZ#?h|FHjc#%4)kfhUXJSS>aHUV49bMvP~-m} z?7e4Llj-*^>Wqc4Aft$=h^U|_h=?eRMu?6D6#*3xfq^JhS|SRGLc%+Wf`Wi_1tBWZ zdoPhhM4B|ElMn*ZAq4`YkmU6|VSfL1&ffpCKkRcp?GJM~7xBWp@AIs+?sc!V?uBM9 z{Ta03wD2Qzbk}r>aP55JXuI2wnF8ToYs`x8`8#^J6ezga1+_B=OFz7yF^H|0>yFf@ zvs^Pw^*0PJIl0y7_^QWeDmPQ#h5r^amwJD`UFi1RgqA(<^-RX9bv=~d*2zs=7JhR` z&(AR84os@f1rEj6k>hgu7YzuNJjPX44#(NE>f;ag3GBpO-cbvlE7ozeB{#q{AydYS z&Fsufe?93C_Qa>`(N%vn^=YUVISkJUcwjjgdC*`Nk{~V1{y#&t6ea!JkN>yuHeLUR zxA}kJZF*bfv;7@QmJoy?l5r|RyWk{LjHS#W*}V>nXzl<3BJ((4I{7Sm9D0OirAK{1 zZ!nqzLWkM!vP6E*;2+^xH&GV%P7SdGWcOMbR?y1W;NHR@Z))Ad`eL1t9gSXQdbV({y_hwGR%EwB38~AEz~J zs!K~mhNSg|JX&HvR-&JaYE(#g)ehGPt(!SdEKOCU_45xZf^z|#R2m=jH|gbulFND+ zgNf>XULYS4nLS{#`hyzK2H7ONypaZcO)Xow7>wvRBouE-q6r5~oVrR&EUz}3Sej@y zXdKl&D1EoVfDp7oeb#;o_Tm6NJkBLdemHTH;SryWyk`913?V&c(BR-VJM(V;^nIn- zRVt&&4&`1>`Wx%04-S>OFmjr2Ww@uNM7g9zrG>AxUSF%EEp7O)KuQ@;Kg=1BeE$8f z{6Bx0RFN`9Pac3a14pRX9B%Cuj~R&o{l|=jid^9qNbD-dyMBr>H3D{fs4SVl^MJHL zX)mc$t0+~J&!rHy5Tv}JzAC}em%*4{&R#O)9HBNf=yNI**ISz(0?of5Zt^!922>-j z-4%aRzz1^TsF4UqY@#oteaBX2weY*dTSA-BV)V(L@20uPzixDxKDuA4GSo~jVcqgh zXkT!QZRsPuXK*T9ny{Ko!lf)hrTXQU#Jh#Dq?4`>ct{)1>ba__2w&t`v}Y~bzHk6R zTp!cS)cVvL%Z`J9Dn2n=q?8t+_@cW0o#sRKjh$1fmnGwZ_W4T6gm$YooKWSE8J=x4%iq zY+lZ8r{!KIiMZzQ=Jnz(TyJCBEL&>F`EQi%mJJ!~WyPjV)w67NHN$q>L$r#|RN#6% z5OFEAg@>LjUki(CEhXQ(ddxK5KK$UaOjF(l_h_wf5e`LuLy1lywL$6_zl8j`;v8Ty zagx_)FaUL)I9Uudp4!3cOX8$RG$R4J1%ObZYx5PwN-ShBwDISP{j&nXKN)TWNfGu| zg*SHsp>hYYIUs19guYZrTcnyPLX06BD1y&mhb>7dTd4qk(5r8QX`7viU^86UFvWc^ zkEXj*@9e>A;YV2mwgRBLx~&?JI`0DEt^Qm^F#Fz?oG+LvC)HLQL8<6-K5tB+C(gXT zOOLPCAsnyPw^V6Tc^PYw7?1URy3t)Wx`MwN48H#}v)X-d|NgMpn$*A3r3}JN;@nN`G?<*SL4>1yB{nk__zFx%Mf6KVh{&pHi|?mD-ilV&<2>x z({{sXHS{TQyrEUKBRsZ}fX$}AK13b@wDE5=LCEDDsEUke*5s7K(_;-g4lFxC{_-2m zf381&9K?&;kUlgnOD;P+HlU>K?@1X)aw%9()=0_x3FXSFvgBzRaX+8uh(X(xR@_}Y z1~e#!YMdvBv)<>XCIAhJS5Y^U>@1g?e?Zb5>;N>B_(kpDf0wLP_EJQS%YL`~qfom` zV%>|JP0b(Uh^zegxqzy5fV7jB1Rzs${RppR(t(O2r4~KOx}w)5td04CMS0?He|Eg% zXI$vNQXzVZkaW%Db<3@pqesk2W;@ir3aaE~r0*OMSN|Uc4I7Xmf6j#eb<&Ij+peaFU)DUJazx*yZ4hCm z8%aydc4OyOMhXb8XtYEx^iBhlU8vO+N37ldaL>qga|rL? z0a7WcbV7Wea!o%eMc~ShFZ4Hlh&KGh@DCO2S5X0TfWMG?0L?V9(hX2F5^nrElYK3ntTKFga zSL?bYod}m&*Ykg~F5h$&KWu}W_$?@ktFq9cLhXLSBd+R)GUPnDbr$?5rT;L%_Fc?ZDwSwlzL#aHECtB5yNhb@;k1cCop znce?xH~xbEKN?5{-1%%CXY&ycn3~s4GosSE1)SQ zu`j3+{-c?K5Sh8L?4Fild+Pc~9vEhIbP*3$a$~ZRN@n|5m8IC^ZW>5Y4F_qq9+=xx z8FSmTD38Bft2I7<-gtvWSIKv^YkS{kEzfF;mi{RNpp_(Ax-Ug zl|f_}QiU%g(gejh!<(Q_@Vgk3wlt#&2yi|$lIJgwTUsxYR3ewu;I)#5&xG_@Ie=We z#JhqU(pkIbq+$MCAS_=w$9YS>41I>ktHHJrf=Z`EROD?NI2ypLW3p#vOya4DR!UWO z0<7`zwcpq_veo2*%7OE{hEl#vcw{={gezo*Clo#C{%o?hTzbo`NJ`SMte`0d6aM(+ zuq+6rLUJPYG62^b{t3%F{gp~+dGLd8<<6Y82x(ZhM#G=n59iU2ylFeDcr8-LtHtJF z$+zpjNyBn3K$5TXm~`9qLV!k(cr6y<4g+;0nlpe*D3Ts_j{5LT_yFD3%-5?eh|wQb zU5V`(uI>6hHftNWIzA;RE2J#$PL`Xy!zBk_-y6H6e)0*_;wlZFKw**cmGkcr^u8D# zga+;FSz2Qiq?H7=3fO%m4D%Y$pKGO)j#?9H;$Zpmxh*lr7~a>^ABV>sFu&scUV4?L zE0B>`CLPtHC>+77*NS-qq`+~W>b`Q(yxXWZq^)~GCF<3*B)gQXiw|blI(pss#y@Vl zkd{Rg-S;;YhO9fNkeR{F>-OGjA+Nribx)OxKSLwGf|GuOoYaPoP?kXThifYV80bAD zXh2O8CCYeTuv9`M*#QAe3AkKuWCgKi3KHHZQm~G>b$lCp1KYmHJ&Q`sOwG*7j2(;Z?|&t|&^GU&&qv6A;@Bg?b}AA~ z=|8}&!HtZ67M!K|7dtGNx)$-%%+q-GQ#nG_Ic`?*J(giXUaMIVc6=y1bMW48&GzxLiPv2+{IouPkLpak~~0L zg3LkNP+2kV4!Z@7!hlNi6ZD4j`+T(r%$s9PVr`8|t&hr<&Z@ zTGGn@qblLKbJ~Msqvb^L&T~NCJ5&9wgpYr&IL?T)j!33~f!o36QS$E`lm5uB_>Z-Y z26GWUJIY&;f#oOX4y3AAJ=l}rxJ*EB=teseN4AG=1R-G zYu9?uUYQ%qwtN|qSt~sm+dP1su2YzIkW5hGs*Q*Gz97HhM4H4&D@igWY{o2{fkBH$ ze+bwv1X2Q$#1QPQlv{w{m&ot1jDRsqEP*w}n*-S&DXwPALLOm!?)Y+u7Fb!$pPL?x znK7kI!9`Ty4zaF$kG!gK7uF!9FA>~DI{X(Y6u_rDtW#(pWCn$zHTG2WifcVYP zmZcAoebVn}xmp_bS>c_NoQX|yi6wsK09dDs^gYD?1pQ?O#%`H`A#;Vk|9-!5Yt;W| z_q%$63rMyXd~pt04oWu@w5m*{49V0J7wX_Ri3SLI_=q`(s=(D4^NT{3R#2scydLY6PiAyr{PANOJ3yAbV_46TD9_%eNQU z38_~kj|S=XBqtv6e|z5Qf1YTMWiGCK{XxYjlSG>V$rx)GF9;CZpOgh*UvCK(iDvGsi!T!l_ z5Gdz^w^O6Q&0hYXh}S7NKTEj{eST2Z`;{I#CqJ^LS!h)Bb4Bzq(30f| zME-z6sdjMgK)1->VfgONgw`7C=QUS5nr+pz%=aDNxk)!B=r~Gh99NLz$3cGKcVF72 zp`RPtWj8XQY*pl64B&N(SNZ@Ak%!Rs^CV=`5-kxEl?77(j$piA^k{FQV3&U2TyDf% zbH1IO1_r__7Vc!cMoAx>!Vz3hY&4Y&Kqo{-BWc5&jYIz^?fPS|p7zgMc=iileFmH9 z$BAkIhL$(b|0&z^UC#DmK(^Pk-=^?&Q`Q@b6dgg}iT46=L_ms51 z2kk-&u|14_e|2XT=m1eNbM<7U2Q_%LW|#2t1{&~&wJcU?Ss8Cv!hd5uC93~)7cAfJ z{~yJ0T5+}Ec>)&Apgo)h9>xEQkD{sLYA=v|qU*v*Xpf$k)jhm+N+chMN_OCxqtDMml-ljSf9A-XELZ=(=V5 z&lS53K+k?W&|@{u_0#p8FjQMOgxX7j3mrZ$jyE)8v|@~GshI~llF%PxP50bXe zlwtdR7w)TbaHoViPur|J78R82_aYC8V^PGtP%N*j=C)p5pHRJrcHh(M%>`Wyi%xn% zMR2x1{dDVY$<>j&f-8sh;+<0u>nnsbm^YZ2nf<=0cAdt74w)jok}3!5cWTKeKnGEZ zOO&3M{oY?9z8pCfylcfReATykkjdj`&RLs*F9-v|uw}<8{dbsjS0vyE{qerPWqd-nl6AT_?eDb7Y6-HEEkOp2XlA+O ze#nT-5{N824(Id{WR@5a{D%HQ!Ey86zV>*Evc94__JV#Uc4HGutGJI88sI#4Vkdpg z(Ouo z-OZA953qjMIP&Koy{AqdCTh7b)db!2g(R~s;o(`P=Y$>GB(r#_e0vqItUlV;g-=*Z z+tQ38mB&r?zq+!9@#XOCqV1O>UtVsUi@7g(;d`8cG1lW^#0*LtjifI+o~Y*T;sN1E za-mTmdD`Vb(3Z$74K^Bv&q!vWJ79(Jh173RS2ARwXAm(LNP0Ee3JXSbUNPPAm-CWz z7LLVSLg3Qt`l!wy(!*EBrr0wh9o<&pG`9a;ofkl!Ix8%|=6~Xh|I&}zqDocKU7B%p z;1QQBKl9KFxj+^%ahq0l)CZdNz-nJZ13li36rD(X+kSTq_pLe4)!avpmi&1z!LrBA z8@*5K7qyPZDNGSwB1b)m_Ez}Xpk%lANf$osydm}1ZL3#A&TwZO$MWs_wluq4id$e={(C#14NF;f*zOV9S!U|H5wFPoS$~Myo^)UOU&QJ9?dZ z>P5f>?>#VBIXP9dsB_)%e95BXybf$tt=+Bc+)1+?OQYq`lr4Kj$h-oDO8gq0XI+4* z%Pk#IK(OlTXr%)03Ssf~b@+R&R%*v)&+juP9lEpeWh@I#?{6{q5*^~#+bgCJP2FFt zSoPKC@72~GXCmw~I3JPG6Z63w_B4yVFbHk(P^Ble_9G}o{MFlp@^hpU8}}1vuQR@O zu<)kln)Jfatg^D^`X;ldwRL~UnFPO0OTTgRhozl0^d`b-VFD|zZQ)}s@yB&Z*mwt) z*9V8X9|fY~?TVlXcb_+?M~g+MuYj8@x>-V?O!~H0z{Box1xZ z%HWV(k}j&4JM!Ik^3TcU0}eN0cAb8BEBO?@c&vv;Y|2j~)sDn}vM-ucd0A~ zv9;xmZEy07R>su3%yut6_(g`Qk!I$Nt7m`R_PZ>*$^>*PYk0xsg=a}5 zer3Q#%(n8MD<1Opk1~^nO`g7^#k|gKvWPZ`_~huWnKgO0Z|Tn7^!N26yYs$UT0FQF zb`8t|#ssS6wVpfo!Y%9$vKvOfiF0#xez@zyx((~Dr#IehLcUgSf7_hpXO_04zB-ah zSM8#^b&6bdlM;Q#k0_%G0f{(#kCu?G_`IeIy)#+U?MLC32N+*e{$s2rwCI{)U^YRX(h+y(v1IVsQud{hxrgDwlULYtZI0#6P$Ou7|072c zi)OV3e;O`K?8(k9s*Vq8^opDL=)21yRK_+k`L8DnN{PGGKD^_ex=xM204u|carz0y zRDyT8p$E$@uoAH{m*3Vv6R`s^SPX;tg3YFFKea|3_g#_v$(SJ?&j<$G1_{ z5ON4n%Xo8Jq-pjskKIG^>$OG5q`wC4DVjAvv5Kmb){h5=?ygXKdC_p0!TBUSD1J?eW1s*75epz! z`zP7dIf}sS3mUBD{3tqG;ukN`=GXbLy%wKQA^jqs?IV;TJEB#8-}xX)I&UV#Gr%PZ zWEH``f8Uav>MBj^p2!KTz>+toN0dk-ktQ_v0@)Av3e(_`OjXeY9Ny5t;QiqFH63&}bRnqVERz`RT|DIzexF++}PB>dE{KCoS-8DSw8*v7m zAA?ZLHKq15R6x5jF0Yx1&YJehCtsKsRG0gmg~rw(Zt>CM4bX<{uNDsbJ>wH>j55+c z#HmQBNFtz54sa$w+u*}yzzVm{&V#Lmd?|$XxfXB%I)NHD=8lxWI((}}vq;9&%Hn{X z7@@!UNI1xp&MC{4Lf_j2(cZo=Gx6jRnqoF@P!1O{BC&g%>F&uod_D5~FE7ri#=YCW zoZY6WGrDG^I}R-{)Ufp0Y~?~YB?{v9}K#L{9$PzW$tQ( zx5Z18M7bJ93}at_0{$LO_--$V}4L)9YkZk0{ z$2jAEp}YEV97}ltZSYYn&J(ZKr*yY$pl_RUcBxKt7}ekAam>2QJG`&%<~HZya2Rl0 zlcz!TDniT^I)XfEcNw4ia|P8dt1tgq((s&In#iccFR~12YZcZ`E=2A}+*gliOA z6{?AW7d4jx(FJJ@t8zn~-A?F>XF-;E=Wo)3Nu3aDS;2#^zgg-3Tu}%uqL97tJ$0aNu;RpW zx`)0meqy)=h_`|L@gosHGcAeAG^B4Kw1Hz>7oT z?_%^f2*CPySB=$&*TiqX5FkDnTqk>SSyIblMsfDjdD;8(%I=%Gue!GC(I!Rd+vt@C zEhbVM>Qm9FiWfd&gJyQ=gv(zG!Kl%y;^h^;XRjs|7IGJq%v z;<~}MP&27ix4Lt7V&v`=+(I{i;-;BAVCBY=MGCdt!376YtRJ3IoVD*@DRauF$TN4D zInGA(T4QAgLP6NRO~yy1q=oN$qgsq85GO1E2Y%XbWC?2b6$6?qeYtDk{UdR#;cBs| z&|_9bI01Z$eTMxfW_vL5_Y8ldk)UzJOc6F?CU+ir1z$~%a-}?GdJUJ&+J1r_oFuKj z+Eq#YD|Ppl{W`yg+dNqoQ>M)b_u*y1LhUcmFap^;{{eRJy~y5JL>2v9F{2i0xsu<^)BRQS^iR1a<*976QvrY;`FM*;6HTtCWNk6T{tNo+iofg?7nfbL0kq>#KZ#yfKROqN&#VcKX z^H}M(wE+Wlhbx>SZKa2G05$vGFt3l;7@h5x{^93}Si|4MR$z|HuE5ZA5!aejDmK=k zGp33ieDelo2$@B*$a+JgQGc94uj<-z_yXsow|Pm{tYxXXZq`GmxTr@{)xaEbH(OpH zzGwV>cH_g{jKn9`BxY(aSL}tQAtFCFUc6s^q8!ks<0`W%<%sNY75DPHJeNKpf#OG6 zT}i2^_5yz6cH!M5oo|Tp?T`OJ=k<#;f4SO4`zjzmJw)Md9otQvl57RF`lVL z116XDIZE2Y#_yy&HJ2XR(n)-zKxqy+mhXmlVz<9cx`9|(1n=anqNmJJ?#s^iBW^CX zEya6#%Jv?9c$cQ~z$<6XtV+XD`O52V_e&}-pW&Tc_2&uq%~EeYGnNFt*K@$Q86e+$ znCiy7s0zGU4(5W8IwvWof2~bktG42|e-yVK0l$6${5_9E{Fq*4DST9XY7HYaf`gclq;oB-rDMBwF+zl}UzN2h6_k|VlhJL01K!wGbyjf)mV|z+@fYl;z zaFDnM8}AOKcr{SBhZ6yCS<7OcH~j0?OxdC-En|};M<6^v&!kBYbVi8t4XB5~(;$Y^ zW?+v8d$=h;iw(qRUbx5J{wwW9l0nIgDO;%6K~m8xft0v*NTW@kePcaeQA&c2rDS!v zYp6yQp8E%;zrlUZpU@OHLGid7u2ts4y-mM#(w(dHVe^t=lB?u*pTn?-#ZRCmn!7pc zQtAD|WEhavi2*?=LD*UiQ)g_1|8L zdP{#%8Q|9EF*vTv=*?RX*N%*p5N10|$t%2eb;I&=iXU-2-4c>f=9>B$_qi(l!M&8+ zdpE`NoR;KoIZUR?V<~=J=ZSTXiZUDia_qc%rnS_sJs)eN1Kz^ zqO3eea>;WPCC!m4a4@5{QcuRr%Y+{K2ferSjyuQLZbdvxd~fFI=mn|cDmw}Lq6`dg ziZ2W2#Gy-8BMgtSPcz6@;KqCSkwyckN{YGVmzZ8*a`(l5QoV;LFF3ixN?qC?KUd&H zMhMf=KQwaetdG~Uq+QG$l)~hhb7leyR|&;-LVXEnz=PZK5g`ys(El2m1mNaL1(>Q{ zgg1aKCemTOf1B__^MMEWRd{Kz`aU;aXox@5Pn!|w*PD%BV$eWODyP-H#H+YO6F^s^ zbDXv>g3K;jz9WP$s#r&t^o(d0AmZ;|-H_Jxb?DyghDXUeDy9!kxh(gb_9zM8L&s1_ zs3vH_>>;Fu97`W`9dZ2(g%KxP7Vv2s7-EKpvUjymB@kCG`-p9# zD58h9>KoHjy^a%`Sg!O4mg}bJJ9$l)r41<24qnx8`4ClPRyp@Ecgx)@smDQ`&6nuFziwJzAE`u6a>UpKLK52De+0*6;qzaQtyrT-lq8YLA^_ROO_Z)6W$L0{rj= zupKz=XyjNR9SpfyEbv{>n0QHXcV%@87HPwovn{+|O#(R;)@jyAmTG$z?=_9AZ1?b^<3OEIcV6!2imK(wNFPA0yfVANG!2K1 z!EnBxdG=itJ)j7bUdA4AZL|Gmyde1&7cf*$lFx?^V(ijO?xN~(ThD4&90h5t9=tc1 z$j;81&ek~PHy(Fs`x`0rx7iDQ)&LXzNdPN_tfZpEn~(|;=?5TCaO%eXzN5NH>#M-%rza*7@%2f! zt6u%(s#h+nW{s84Ypp7gmY%+^Vns+d?j>>#XEXC+S=z6WgXm)RF3O;tZ6C==>?g>6 z0?&Ec*U&1p(n$r5I^}-4@)h35Iv&sFyQLaK-qz7M$%&^?^cC`HI0ro$?E_{k2E*d{kQ0Ay$Vd`j#s%k6ph3J3}o|xYg17X}{?H7V^b^ zA=cjmeiieCsFErYyrsG0)vlgxa3O4FD^t2uF1+s*U0C%a1CQ+^$d(7(^)gJac~N)c zTgCvPOfQZxshqmff|FIWQ=0FVhw%DQ#gQr7i0Ip)D38PO|}R zq4W=JQ7>0rhH_Z6GWQCb)hE``t2+>)13EOY$4Cz$aK3RPeUnbp!_*IcA%2(MEd$dF z!tD9xvEcd5EG-J1sDrST9KpKu%`mNQ43%s1m2%5u`k45`KR{FP_D8U6Hwoe7wUlC3 zp`Ul%+x+;>*a*I%e(d{j1v6mBQ@-MK%Kuo`f(*J)4ni**xJ2Q*LD9r$c@riCn$jd8 z)J4S--XLSDc{HvK)|IsN)BJC-D0~)k*9h1;q9R7RdD*Nx!+RjW*Atr#XAWLkE)WB| z{ttQH|Cm`v?M6vckM0`0EeyuUT7!pi=R7fC$Q_0^pcMP)84O3CuMWJ`TSgeEL7>kE zMKoo=(I6R3lq#Gr`eX2%EUn68MsCn)|7=LaPMcd7N2Jd+l~C=W#oS z4bLf;FlvxBJM^DBYUk~3ro@C2KdV-d+Dw=P2U0;FN zT=2AH%?jUkyzyYjWOJ0T$xWcMzL3wjtc;5-bylFNK7V}KjQbqFGXZmjr1g+NFrHlK% z7=FL~%z)DKfC<&7+1U|-|9IG$k$7?6L)eYj0*En1(YO)FgZVmkVM4KJ8DD^-{6|Iw z0pj}>nG%X%Z-D0VNBMks6NqW(B2K#)1$Rn|;ezaC0N#qies}CnL&r~A6w>O3_!V?|_#Rd8u!;~iwbTn>@iU%L*vjH~Sc~Xj$ zv;AOWl>?+sc*_}Xd;tCs>}|`Dyis{kefyhj_SnYy84SCvT_8S^G*cu}%Bo5PKKUbA z+l&2@x#3lV=PuR&@D9VV4{hF@YfvALiv*Zr-!i7?F(SN|JYl%8)Jqe$M(q%jwL^|irqvBc5 zVhX_)WxTTEm;AP5dx*$t*cBt$*AVh9L0!C0Ixz~*7?C&b(WE}tn`b}i-@LPZ*865ZW_WjxghD&`Qh}acg1aFa zco0S`%(eWrFd4-VQ=#6V?16^M| zRd75r->^jK^6306Y|q*qaSlgTs1bD^5&Qn|UYx9D6WYsoH)sQh20!+OtsVWMvodjX zrF<+KpSp3Smse8h-|vW8i35mWgV^K<#iyT#y-T9Hdn~(}6%3ATLNpF<>a$+MgiXLc zKi9<)LLzFe_jqi5>Hd>tDIQ)|#;Jn_k(W$jd@dR-oKJ~gBN%CE5=Mu~hflP!fh) z(#8vL%$R~*7UK{;Lo+zpjmA1v2l#0%(~V=ay&s&iGDQs!yiUnn?!B#HLzFZ)-5M}E z8-KKpr)#nHEq5iflM=7p5)qfUl~hDVF0NpZG!-i~dAnFp&YO2-i z_T6xmHUG6iEmP|UIkJYgn+I_t;af>My@{k!fAzNzi6(b@*qy(T)dqcllbd(i?|p93 zZMoBBeZf8JEQ(wt;n+e4N&eGrrEA(=ADqv>ocUwhDg4K3WPA7150Wn{?yUXs$42B3 zV3pf1lA~Y`0K)mBI1iR##1tm-LG=vPcDQK5gS8E-?RIPW9`TbN+tGJy!HP|I{^Uz% z!l|trvofB$Z+i2m5y&-VyW40YuBG$8)e$k#cv+?mX%ao&?%C| zyImWD^NG#dr-G4U@J-|Q_t27JNyS9f%mX~mRsQbDjkS691?-T1Jq`wvWuE$Cdm>N{Vvavc%*#k?!VkS#v>#hA3hOZv*JNQ=H>9? z>AQB~1;32@A=Qhj7JQqrd_LbLJk2h~e>e8;feM$I+TK8*P^L7C(RqpRVRn|w%*p+L zym=_64TGrd8%kTgb2H zk;DxfdIFzniXZK_4Hl;3WvK+sUdmp5xqyxzOCF{3iN)x}9sx1m-|0I#C+$maW<7f{ zL+5$HSi6><%%1ZGrxuTP8eMU}6}9hWW6mSHH?T3ICB^I3ylu4ZTm!R!<}Vl9?hNvw zj^2xwJN`1=@i<-eW#*OzLbQRMRY=t9XBV&0b3e~>{#@!ST~&&_EiyP+Wc}BPb(uGi z(;}U3n4+I6lB~FOOcPFF)r<>1^RsJtyb~uWsaHvJwQ;XOlfnheLyn~RSwGDfOgEU> zojrT{by#y!YMR3Fdo{+JB2(k;42RL(yQ0>vNM2ix}o#0n8*SO{r(8r>R z6II&(SJVcjvHf3S!6X|Y$hpv;;HzMUM+{P=p(ix^jg;AlcA?A_y4on`gZ#S5by@H z>ExD(g$Y8IA;8!;qr2f5osVHw`BzAQk>dyf$d2GII4Ew!(NVL|52)VckBb2l>`#!k zw4_nc&aDC9f`>l>n-fGN@&){TW_z@#-5+C0Y+J}PSD@QAXYsdo2YR3lrg}x(@;zsa z3Qt<)alcLcXz{Jya?M!Fr>oiI*z`Bul7F^)y2~+$v&rp2%GP3u;U-8^meLQYXB!&g zqXo59qI5iGXZ`$iLil(c`pwn>q3^4dx75U-(9}ZFu85UdW@m24-OS=G`i!4U_*NVg zrI@~)6a6i$>>!~=P=J1lhj#Mx&fay#nw`NDIc>51LW6#*h&<^`Rkt0O%04{Uh;|>i zpuX~X&Va&$7dx-tFg8AW-fZ7lgwd)4=RBk*fd*IpH$Lo27f~NhqsAO7^dhca6Z;GL z=YmOybO+7`J;q>(q&b#u&4?B$>e!yC;>)7pMy4Ngl`m?y?)se;{(eEJ4yo_uPUy6C z?~>;K4Db#ue*x-Tu8g4C2%;p@5q%n|Ox8#YfZi@MKW-*m#SgsvCT+phi3fOJhNUP_ zp~#;vY{R-v+5oBruv>(Vyn2PzTJwIHPEJc*Wti?*Ml5p(RE|XGuCE1r^61( z?;F8L6Ck(z1me1-Vt6yAyFzYUOI%efc{D)p9*{f=6!5f!qLj)BC(dd)%Gl*%A548 ztn{|)jvpGXUu{s{aIfLoHFN1Jx8-oR3p1&NQYxy&Sm=v3p!6=-sfyp~|6E}qJ|t+b zI`XQz){JU9k+sx*5C3HH&8{KNp>Fh4lb1;=Wttb!kfU|p*@aQV%JF=ykuatDK4k6g z^nbpw5HLk+9|<;zzmTnXlotDG79(DSDnb+8H-5L2#V@Oi&mpWQEHnMTy#29SiOJW+~}2Z(u{f$?1XkF#FyO518!_C=Rf zQE>D<6}(2P$K}FK!4n%Nu9PUTxFoKqGWUQ!Cm|C-&B$PJzJp@WRY~Zddwh7hu~U35 zyPkQ<6Kq5F0OgYVv}0RzaQn3>SuWseXWcSvfA%gn_4IHP>4h4N2V(#XKin}q?ZyV}!rm9>8^lt@|c9aDLksLiYme-ws6e{1daJ_D4$-TDH&26m+RimAT zQr_XVFLarO8T0-|{0bhUVM$U$0*|2~pK($tl}vC(gr_J~=$l>hLf7>ZGz*JkfpmB_ z)>QMB19s!^hcEb9I`?{W^&Qf$2`AqKD5s`Jo%HK!lyXzH&7d-C*-dOF{eUd+h$(}b zKBbhLDoC_|ZSybT(s24@O-hH16KB_V;Iejo_0mc&DwAAHYv=eiy1m#|<+bJ7m#ByP zWS7Y~oAc1;ctdw=I(H6+p!ER`KFN$e1hLpJaA>QdsPGYM=Z)c3Pn*s@B~XoMzcC)K z5Bewaon5nR5-}K?%*@q#rbH8`yCk9Gjpx#q(=-%UjDo<$(t*px zBl&gqCr1C-R&p9}wI)+0`CKzlvevvmQYOeB*p?g1pd8Tez0BE}27KmK^c!>!%di`E zM93pw(tIo5+!*?DZ6agNddev!E-R?$w`qkPH}^+aV5GO&OLta(*y;x0i8#+C*JkHG z@MUhX0ntedr+0|5M?*Tc`!IEo6n=d-W z+AP<%$ksqr_%Je=QuB6gxp=f!v01h^#dhWhZQ)~mchu;@&)WhDWBA zecT_Z@8jON?@LO+hNXmSOU?N>Yr00dh_z{Gu;OWtI>7r@XETgj{_Bf?>N6D=D+%mZ|7%2gp*k|83@^T+uP2)83;N z53f*Po|j&|RVuR)#Bl;6DTSB{TZ)43EGnopFv5t6B2rbE;cTs!WX5Em(yKj5h%B5x z?xR$Uw5D(ohe@kvdXx>vpz*?kO)8xt+wJ8Bj-^8P$>5_3mINU zK^o&NSN^jzZ`TBT`R9tQ$Y?&d6!r-mxd3w{^KgsyC&NWp1f`pF_S(h^tf$SwDSN~F zl>iOZO>ij*vxTEI;RVZt+T9_t{vvMMr z*VkW@ZB$#ifDC;kQ~|k*)L3SwF;taxRpn)rXhkmQbD>4w#Y`V&!e$^-U!P~_j=w_{ zc;?a5r&~Exg6o{wI}&K1R0Ceiz;6G_6J_tHpdDL!6py;F8!XU?MR z$cX$R@9RUUU$6!~MQ0T@SZZBUKpdJ5nUZ#9_?(7@RgldxZ%O8u4(J#NDI~wpQT6)# z=<5ECL`B!z#iFCcv?37-F&FAMJabg37}L$%5YEpV*wl$*J2hzS`tdG(v-!2Hf9Kpw zHIm-ma!M;S7WfT9kT^q>#=HT#gi^*Y=ZaYUqUr`hW`q5l8HPC<_&QM4~WDeP|tH|#oPc$e;zr6YoZRuPH!w?DBNU%H`Gun!g=AbQ-mf|KSFn9 zD9s={zWo~u73Uw47UXHqt2J-1J0BKh^YC3z){f;veE1AjSj5afnr4iW#B~A2=#8KH z==A@Ky*G<%Dt+2Tv1z3pX$M3^Oe-iLA|e6`LbMTa!l)>qfKgGAF(8o0xKtDr6a<+O zf}o&`G6sktAVOrG#}L9iLr4N7A<6Q*iU03>-}#-r@Al=s=qvlT$a+`3RZmqt^%Rqy zyP`IpR@Wz#jiM&lW#-#_p<20*kiA?kZkqazUDGj3>$Ui*f`cqu%v##o#y{t4+TQ;h z>d>3^aN>72IEDm7lcY{TI!Nwy1Y46k!P3BC;f7v)jp1JsrZ{sA)wVcc3_! zUup2lhAQC*p^CW*gd&12=Ik`t?)4EK9o& z5>d`e=(;zQ*ON^Z%}Y6skA0uetx#Yyj$bPIz_e@Ujf=bO6j0&8atBl#hPIr9MHvQY za=g&+RhuS{(F9LmS>NMR*1sffyM*RVOXEw-iro`aqo_BsIW|I&)6)|S(&In`1AF3? zF&*(v@N!0A%pB9BPo-@ibnwHNxFyT*5*(Or4*n&fxq^qcRCf~tpmB0cH+z4NoJPDK zki4NN7qgH@uwcsh=Ak+oH%rQFd6TRID79BEEuAqNGz6l67b&+U9+|E&Ig*LqdhK#K zQskO+N8ruZ1zB^z$FnE6C8N+M;F|;>HC99X6sJPlq`6l)-*d8H8~V?!L%6D(sOIH0 zlQW0#JYk?s!TY&gIsHwTGWudbH(iHlqAhS&E-cQWRCE*>4$@_=Tz#n-S*eopLWy-Y z_h6C;3hL{y9-v>~RV?WQhdPgzUf8L;0$&=d?j; zJOAB1=fBz*{T?U%l67z-o&e_9ZHjNSKCC`9@A}`Xw>t%qd_W7sg#_kInuP zz_SXkYVDp=C!PALNgNJxC25?z(-6_+vTpi8L`GrOI;E##@wx0f$hQnnm)w}b4v=s+ z)lmiy<2M*SUgq58pfOmNnvb=%{;0Xe<_#wLw#N1&QT6#{1 za=yFvk;~?zw!x1dL`Qpz?gq%F;B7vFDEJ_xyu@{e>qVhs!O$q|Ew~|=#fh@A8Ia|y z2Mp=@*0AEh9_Oc>iS`NzI`pxOee*!0eWWpJc(c8`xVS*12=;X#xOeFRSfv+;{U_TO zOL;-8zwnoBkQwxMZY~leFi+NCHTl@s^}Hu zVaI0}7ssL1&nFu*nf2JKm=#kRvwkhg)WYn2289y(B`5T}>i&qeVzOiMdUzX=ZB~Sg z31SPlR_v{xbl}Q!9-1i5c69W*O71HfnW@$NJ| ztD5hz;;8td|H95fvCntX6cm!9rB7kP0)Z~NTI=1o)cCdOdy~b9lc_Y<7~mFypt*Tm;?Qc!iWzqr`5})`efQXJ5&uuJ zl$^*u@=nmkGa@0F?RQ6Y*I3hNX6q_cqiwkIj(Z~=X|+! z3LG*Yp|;=qVlHqu2lKlA<8I1ol?H$d>u!F{r0~1Nc>`CU!9y=1u8X=A&(V!YjLZB$ z7H>5RH40BpIWr5``T_SkJO-2@en&4*99`hx; z@UPvQ#g?%Fc>|QmowwKh=ow;F~hZhG-k)nGkrOT_JfXO_E_t#_xFz>EA@$9xN8IgCBkutPHqev z3VI-T&66wC3wXeAjsrR6Vvd$f8x``Nqvaa*P)XO@h||I4- z*YnJZPFy}vk$*7af*A7*`~T~a*2x1|>NbBl|ob*KKSM zr7C=3`)KDC^lmJ&iTg3Z+!i-|!W?@;Wh^5(D?QXT?7s_a+2N=78RXUXU#;P(J>y&&TTCpo3wzLHU89Pe-|R&fDBh z=Z;0)vJf3xaV%^JP~!(=WcR-yGYlmw;2;b`J?tAFa>bdOsnU)Mqe=*;_0!#ENl)_} zAF8P79IBXkeeu|iJOejlr7P!*)&K3dpnr7s%`R7wUEf?y5k->;3MSzF&dXydXobuL3q zCjGx~qYBuRSb+eW5?`;H7)03jgwWwS<>7)yezt+g2-6@PSuqK|Je^euTPjEi(#p2t zd_B1{L_Xv-`(}*F5BTp)F&1}bq}LA;zX$gJeGiQB!Qbz3?ti?;I}pAnz_fK>8Insx zq6LMJzsN$K_={pgu8-*K2z*{1Xiq;s0_8Fh!WrK0)hq;|7*6I2$iaUB(xbBCO9#61qBFfEexT2P zxA413uMJjr6w#Oi3i@p&byJ!$i3Pnrh@5ua-3Od{Dkxyw0x4xyl2(1n?DW#&<8?QC z)s(}U*L=1g?L7GJd|?D?lkVGv%cxnFKtMk9{>6!NSCM9;YGGPG%-^Fn+{PO|yTqM) zjWY6xal=L96e1f2SL`x<))#46`W~s_S*NMx>O`Y)qi!Xgv426Y%v*+cAMnE(sbw#@ z8Zbh(>z?qrPL96PWAKc=P7%Jfu=EGVZbg?Kevh8l6(m$RS7=d!SmT{@K4!AkV$bL{ zZ^i!gN_Wi+K3_w=*+2R71hl2hLG^scNZ96?s^!H;GDbU8SBwp`P|w2-I~;RWdfj4| zi+B3|${(4|#)SyCQP^qdaX)13k11uIR8Ue*Ov(e=7P~vqxu5saB83TNuR=yUpvsfM zy{dXc)n-=Pciv0U7{xQ2)!Gp%{&w?CExl)4m_Rm&8nT(7a~(%*-eA>!lpi7=^V8OG zD&=!#9BYSqsi9s({?mB9tXnP*P)9E8xX)n)21=wa_IH&>rWu@In+5OABv4l!g!dvg zuak~(8;Mf7b~W;k3{%IXVhrqV08+|5OvORS!gGG*N(;KdXB_ooAh+KpDxk)Qvt)qi zJ@$UW+1Z&|cxLLy+1L$BhuocRYjtexY|r}o-YfX=28`Y(ucaWiBX2Cvhref_1-G3! z>zx&9=4&@o<_^s_)%DY4mih5`t?O69QfD00=R$&{2*tJ*egk_CtP3`-4pzCQOZ^!B zGvk83-5XoYjsKWQSk#Zjx6i>gvf2GL=B{N$7KI(bmj@q^Qd_#BWIj1K>j&_T0g_)+ zJ9ol{S+%w$Ve6-br5(cT&}uCC((Ie>+KQCzXw) zusjn8dCU9P<4y{lP0BJBimnm!pT*hMs@s3j&KP^}z$kqnEl~5%_(-kiN0t8QU%N~7 zdr3Op+$v6)X!1ZpEBoYkW^MY1VgGw8i*MmOza;+lH@pfR(ug>o&Fq%H@QrUbLT7R3 z{l0Vq1qY6U(?AI{M|o$JmJj`?F8&VrluD zKrDRN&7N;eXEh@_s1_w4NAkQi$sNj@=qEW6`0KGlDG@j=lEv^xR_l=cCJwSN_aV9gEa=se?hs-hxM;4-40S zkO#H;ug{z=zv>bY@gdpQQ`w303FM?tsDEEKy&0jIQSaP8&kFk|eEWyTich2Dh7t+; zYIXk5iq1yvF@o=Za$nxsY5vEdhP-DxG@3(h^Ex{Ics%;{@$Pp%K+!U`ivcP|UESQF z=sx{-cR1xkv!qNx8TfklmPYR99VfB#^t7bf`0WQ-&ZWC^bu_JFKD%>W2()7bO5vk~ z?Ss)WPgT^64;pv#Tm|8|JohqWqSQ|?WjDrMNDS-r*_m;uk{UiX&9YG_#7-s)YMl2KWaRTrJR(N~N`NZlqwsyCt;C~s7RW_zkzR$HSgO9P><3=LlY<9fmY`1kB z)Jyovwz7b?$+9F%2nuT&o3Gs|%Vr{#T$xyHubK`MRDr`0uUnIKw#*h6)%!>DFPNDg z+-$PvNTw>G=r7Cs0D{U*W{sh*8k@JknlbiRbH88y@}B~uH^=TY@7ff~smV#B%kAb( zGZtR}K-R?dW7;~|5)Af_#Ec%I&f#Ck^WB#AyE|52Db-1vr}EKvJYZR`F1yc!TYI0X zOlwBDUTf*7i#oTLyOwiOY8pBrgmMdZ2d|JTVI-PEpYfUbUx&s2O|

    1l09%;L)dOsU9xKsKroW~?7=m5~wHrtkcdyXvK_lQP*`1$(c344m zlK8*6|1Y!PH?sijG;~2m#Q?G)sB|p>Z`x3xDUat91Qt0~!+qn;EH0m(&xe0* zOU1>)!{{MnmLYgl3z)iUB@dY+7N|%)B4x;ezlTzqkS28#syUBTk+Mb96<5X z8$4WJEVM>0oGSOPf)7REAK9Onpo}i0i|U}4(EzE%*TSyog>?KFiDl`5a_^$@%_-@tkm*H^O6Ld?%V)S-SM+LTU5DDboNO}i7q*gSnO*jay zbe+>JX?~Nw_40l*ex0K<?GC2() z5XyWGiP%WwV!eLo{5&Qda_rj#$I|ocOxCOZH%%X~+l|HCUW^^Q zWjokh<`&Q4ZSz^uBMSk0v|#H;OS+5z!<8wKF+tR(|3<33 zRH$be_T_i$Da_(YqV5%5+J0DD$gYPd zrKwzqAFgpqlsh>}3BW-Ona~%SLC-*!QxmpqN(Q2i0vtTeKr(Xqn(I3#vcmD1oU9)8 zB0xVzwUS~uHE;A9I)mxtm**W%qg~1smCAu7bdsU(j||oq5VSt|xDHqN}PKkz)K!M@A3?D&Q4%OO5S^xow6!@nMMm&?hvT zNgSSkc%(QG#V_h1-S~( ziI}*~k}TE#F(C?^QM4Mtac{W&8QwFT zDo#Sd!cMdva;O$ww}@**FIwxNg-4-}M9*9fRk#;S@&wu7WN$C&L1YR)^(z>8+0gEU zCWCDN*AY}V+58g4#DaVlg_?Yj8-IOb$ zXGtI$WnmdRz``kFr++Ko4&}?k@yM2nnZ5c4eNz>%x_f4CCC&`===4^Nl=FcTLNmI1 zpz5yN`HdR*YeiQ`AX+3C}wtlNgrT*f{}|E%v+!7+kgQbyC&f zRFFIUk3v;$8`(f<_@oE@4CDv(lHfTAz@S!T>$xT}ya)(c$lhE12pZV8DN*4^@AVVn z`n2Z(;jQl$OvaNzB-e!F4WTM9E8M`i1L*9u)NUYciMl4C z`?ODgqr22$9R&TU;6P-%uqA-wA@@=IVZB8CjJjArPoanC^G8mCQItDKGV&i?3$Hh` zdPLzCP_xyK$yv$0{Y%0##(8)3Z2PSa$F2ui7CX7m@sIcNJs0BkiJnyS7i^7hyibk+ zyuSq)bcT1D7;Wl7HrVmXPqhYlC$;JS=`lg|ZRD*2_CZ=tNXQ|?&i>sv@GPsyE&Siid>e@eojs$pg84FRya|0q$h)CW98zQSYCjbx0MfT=_@4e@wyTxhI?I zFrn131$t$ZV4I?_uG6pbBm0(ya-jH92eAM^c%FtI%VQU$zz!PCh{a|&5M>9|=m0P2 zBiscT>VTlBfx^m~QTbzV!KSDM1f%NVN*CF%#5F zH*ap{A4hZT%r6Y_syu691A12(xSp!H6;mRDOFve!NB;dIzTW|s@Jx?y>qcu14 zPN<4Z6enms3;Uo~6DjbvRR9s^`)|v=;VTc`LuvDXdhgv$Lp}1Zv2PjAyr0juOpJ#I za8-KaE+dJzP-K#SFhUe{{9sqwxc_0_o8VCV1u^<){(|8N52@?8x4r0^z&`oXvX~qw zW(^Fwx^v3TM z6$!A=;~@TpVpjP^;8-Kn2c&y%?f%aTxx+6vHFo*i??67=7#AhUFBs+XyC=mHPeJro zr0vMaiE2C;41!3KWWdmw0QcW?(H(;v1gkKFZ}WOdo`hlvnu#+QS($Zby>i7b4AMOw zzJRR#e)bvexgyIn+OIFNIRvmVIWV_?TnpbPPnp2Gj&WYV8=()F`Loji2>}bNP@V!AN?=v}#2%XF0 z|B~=nwBx8?gI28MG>i4v8MrB$lp7dt2`$*Rw`BR@$D_!qQO$LV8vVL4r*DC9*!m21 z0@YVF#JD+xTmXRhh+%OFK)s%`woAMGOny(|C2I)wmV^u1h@%S{3+oGWT`nM&?;5K0 zo+Zs|2SC+7Pxy(fH(9b2Iix%C1$qxvOOL6;O=tTNv(1Z}Mj4yw^x1DYs>Qk-Xf?}B z2U|KFK5zrUP|XBZHCdx}X@v4z&UJV@-$q7+)w)1nJm`JU7Y(1n?<+qFtJ@uj_`?iv!#2_RfyY9d6)w63JzCbi#^C%urt$`U^@m&eN6Gh>H}f`P zVw#?5Y!jh|E(W4*5;1xXfLZ9RlrTz#mqANlNBS1)PL9oJ>7p>gV(-F5W8!0s;!c73 z)?X6x`psKVoCM19_T+9GksSiN0PuJ-TqUmEu>hIn#Tk2Kv&F=xblB@F*S70yMo z7X{*bAd`<7vCYRWJi$mS_nde0J|gV)`p*b>PJ-qcf_QT8vL1megBQBQrPJrPLc!vo$Vr3n0Z~G`Cr9b9S3_2&) z*8rB~(CP1Yq{7UdVSm!A8e~MDq;(bdgJ@3*a);qnfjv(Z41;J1x!}0yUfkDxK0K(dNhK=?X@vM7B46tbxJ9T13jM>#rjL*XtSB zC(bcXLNaa2uOa+J|0Wbn>m3$o@veL&51HTx!h6UIbOXsE@1wrj$58Xoij6{j4=J-1 z$VV-MPaHh|;cF5?3@ew~&Pnx~xJAqv2A}@>uW%fue{OLQU zpekG%+|2AGa)h!#r1fc`VH#zNyWQ&B5*hIBwMQpJK7;q;mxLakdxZqfQRuhVU_TvGv0179k2W+|pu9k*i2CzJS7H#JY+<>T0E_lo{L z*cQG;RnSSfirrlYUrhxk_-#F)d->46HA6t*TJn`&xIl8aNkdl%uA#AF4$JOQ(Oq9} z&ESzzl|LZa4SS%%Rxw{zn!Hfjgd75$N5ry~ECFmw4*#!p)|oJH{H3eFa3rOZtv^Iw-b-0b5ANyjI{3B+A22pjOwqG%n2ay-_oSBuN#K z+YTLbZU%7vfr53*o6@(3+;(oL<#>ymlc{_bIaMB(F=F9Ib8GMn6n}4~Ad1K@)jNhU z`Hp{AHJZ;cv7J|cf-~WG0zkbRb?Hz)CJ2FBHri7LFU%wVO2TuYXmJY>Nva<(fw$xd z5@2N~>G?`t4;4AOW^}SD2G;S{D87ihgagy3@5)T27NBs11JRcIxXSNs{2j}C{DKn_ zJH?Ks=q3CRzmT~Pz6YGOe*2KEFNiSzPLu{&QuC3$;F!-+fCoq|AD$WLMKYRzaZ>MY zD5-z*YFYO9O|<0oSK0rS^n!m|h((Qmr8h_o)9h-(7T3bBf>`5|h(H55AwX;AP5gdI zq)8&J8KGqPR6YR?Ew=R>L@&y5&b+**^%0WU>;-(@>jF_WaZMVan_1WqG3A)YNoN66 zdU6B60VL358OC5RyOld0^z=VLS!%$o`B`Scy1Iyeum?a5!ABRQ~9ZiSV6 z+t(L)f%%({;b%aOH)+DcR*2O;_2aPsfHvvfTl%!pg9+$H4j>mp`W5^-Dj;8|On-J5 z$V26lzgA!Os{p`C@i(x_jYR#JX9GhD;H~)D^VEgiFbLlT(gJ!J<{KF2g=)Y(pwpxm z32dYbhA~g(yuGW#{f&vG`usROmxc78`sIZgX0AB3Vu*CTY4?GyH(7W?v}yc5y51+z zzt=DWXbeuNTT%Fwj;y~lBD56)^UtX9<4{{hHVvAA-$nT&E}9B zvV{|nvmym0<_bp*LP%0~w7?dUBAK)RDQM^cT8eizSQ@~q=>c+7FQVCTFx?oyeCQl7 zB|Bk6^ep{7ezsR07qoKz@G^)sbJf#BEu5*Lf_ePWMiXY)xd?hdkzN zjaumF|2JYcqnovOJ2wr%=44qT-w*meu$<4JtmhNikL1_joE6~^{}Y}&48y6h#Z!!t zsu5c&*brX?Yu3J-1vvppltb>}hw!ohQ*m^JiR7J23Y3S0QNWM%lO}xx*ryE}7u-w9 z5xuF!CfCw!Mr57WX|i_JsFA3 zcS|4#Jp^~bIShEW8j*KXxTZIwgwxDIhn>;15soIW{~r|(4+)R-$`AeMMh)H=Ktu(7 zNLqm)78xt$;ybEv2z$03D%kH$7`3b0Ex46^i2`$M<KFBIb2=v~Hv>)im>^ydqZ?)SzVf&2Y5z z-O;8oem8ePiI12cI8mdecY4;|^P1=;hzBfG(ogOWY#hS z*6@k`ubZpH|MYwQi_RFQbi;qw!sH(iCwI(Ue0%6(T|`gzYOdoi30D_LM_TYu${Jz- zfiv+Fto$Kb7Mb@10SBQ)C7T)gLJWfMW>Se4l!_zJEuqLl;QxOIRrL37acmLw>qmpY zrFcnJ{tE5Yrz`aJj`i$NXk7DyO0y|mPQ%_5Qi#jrR(7MAx~p$Z&29|eghYf=z3M)! z`!_0A`{MN6&_Zr_$j1oFZ%1#d&45doxoj4+8vDq~NU_!}tJQUzwAR1pl>B!-4Tz9m zXwCHDWeWiNH;%lXFFhiAvdc46))SjFJQJ(sLnzYCVfB{yB@`{2uT)@7&2ciDYG<0h z=MLO>YEayX7?x~$-9dbqj9+*g2HMcyF*}Kgs10D_-W@@-BQeEd4ynike~qU7+-H)mN2Mai8urY$!*@pY2Lx)ZE8XzT-vs0o%8 zYZvIkD9=TPt49vT7kBFHi9$%{NQBbxB>6d9`ys0i$y6Al6TE%_2scBW^ zHzzk2W7wPFO9mVJfs2nakYq}Zb|C-h#JM=y+q##&DJt@&DwJ}f_0>Z91E1+_>ZfZu zZ@}UZiMgNl@7jGe2C@25yq?M*DU`J0vhY7O^tg`^dTxs&%MmAPrz*Yf7J5E~le^Mi zI2@63`=k8BV>k0PPY%yXk8uPG{q^+IJ!M9ObT-uG!IcgUAeyHaHw|t zZS4zlwr9%MpZul*9q3kOYcKthIAG+_c5D5Ye9tdOd1exRPgbFe)0IG6_wY6QVF8ql z2DulQBXR`nZiG5hIuF)dtWk3vCv2Vb`(he1)zED@tLIE9y_ZhompffL*m>0t{`V}a z_uQS(b2NvH9Xu(G@k+LC2J9(_t;FeGxud&0(8nG4(3h|-BOqT>-d!4hJZt;#K-~F^ zSXFGz+zjoctG`HC zC@riGie)cN{taJ&Hu2pDgT9l}na#v}l6xGT=mTMECcpe#avAKWhCM{Rp;IR`zG=2r zzM~}|a`Wk4#+$6Gj_i6wc?{OgE2(q}`pL0)6Txz|0G%>LD(WM8-vWCN4RzfK4{l=v zx81u(D@?RO1;3LNcG9g{Iu9z}>)aVua?@00Ve-g!HwAU|r2abV&}mnmIr(Q8+VDNO z^x0U~*??7MHYdHpFa0SHo+y(fM-o^|3`T%W6q}91UBZ0U+7T8>Tk*l=+?k&1BykR* zwg%?V{PL1AYcRonRIu&H^i`di8Rn+S@X@XJ?#7KISe@R2RE?sen=*5Cm06^Z+^AwK z1>=kePyMhg_3u4g%mV3M%*^{hN#}EfVi#tvUp=~viuJ;EU%hPceMazCqj7khUbXJr zC&wejt6hArR^((~W3v_Oe@?VdJlh!0(nwF4W_d!aB!IIwzT&NWxd3JXT^?2gXhqwDs-H}A;wHFHbGumsc z5Rqy9TdwPyRG)UpEU@$5%_LjAiY*$*P_PJjFtY_-oJkeJHNdE)xAqk4{A&uLe0|5~~P-V|`J4GvwE+yRhG9ZdGLVUkiBT+`9ivl9!u9M}_gO(6)jaz1<4{hp=~y zu3wlLe|EO@>?>tX+_^V>$7SoDmS4;F+WSb(=+(BKXVNY0-$Cs=bA!)4A2Z&+(8jQRr*zJ#s`_6do$lc}s*dHP zrf*rgwmJGs%DKDh+1A!F_x{0qZ1+zWLg2a%c#(^QTbH1eW!aS;v=CaZ5>AR+rZ)d0 z-u~|84T$37Z#vU|#<0aWFx}7?xcjB}({H5MYAyt3I1&3NU^o6k|t0h5J-})=gR-@H3(tbOzUXd8C1|!wWq~4-vzk7&JGL?0B3_?NESdmMiF( zq8kbU;Xw|I3~PZ4cc%2A+R)T{lwZ3sK6ik(BO`BtaTO4A}Pi$Pdp?&Du;2#5FJ9*6|P;K%$ZT5XV zg09j9J)*laM@;sVG9T zbr$6Lwk^AM{k1L}((SL;8zK1o%4g_bCUFQxKB?Je4x*A`YwV|~l zYPYD~LP7omey0tx-f_gj9|uuP*=*t7mQYkph zn_xa8eku#f!d2fgk!Sfh&xfY;lNHL$+`5-9)mPjlXk5R86=Em3aiz-12{I%tnIpC{ zZj6J68?`TP6P1R#n-zIUza$QB62fLS{6a7x7fchL`o<|=oDxWR46_o|@B_pU(a_y) z_Uy(GlT&EX42|{u;il@S8Skn6!FqD`UGbK3c6N4WMXoHn9EzM^RWj($&_73b-+e>o zXhR+PA)r8W7&Uh40?j}>Wac#tW+bwUiav0ISU!FvDZ48!{-nNR?+*<+p*-)7Y`&XW za1DNZpt~{U*gbK_sCz5CwO7zwCe1SyG|w`^@q4jh7>ogscsk55jI6fRvszW4yJ;%G z)5WlB%6Z8cjW#ORm&$Qv4yIHuH9D9c^kj7$WPQ(+R6M723%qnE1B}*|%V5(1)P(Ts z;oTm^xZGv(11zX2Y|!O6>i2n>R=?=+kjy2nAE!JVM~05+M0e2TR<4*m>Ailr-LL!z z7!QB@F;Jy<3?-@##1h#&z>5(m=Z-_H2A(Y21h*vhz$uvgj*2QvsTSOAW|&Tu1$J>i z^pOzdKI;|s$vS!hm6PEZWc&}86);-6uHE#C*{+c5S4?*NmQJJE!2wrc^LqjCQ$zp$ zN0?5s!V=SG3NhQBPk-k#wG;F6A4$=TxS}jj%H-X~G3*6jrs(4z2sq5;E55$mZYm8V zB*Y23ad&6*E=U81+*xJ};oo4s666z3c;giv?daauEkgbC4>TYl>mb@MKwP_Sogc zUj1eQf98{0YtG8@Lc}99|hO+8?Dh_IYdlx~vUv zl)^>Nyk@-64G;FiPKY5vh2AiIMFFsTm&MUE(}oL*H0!2eEA&oSR$$DXDlan`U$*jD zL{!7ircB2o`}~|+I{6mLW!?oDI?+G+wfPQ2O_tf}m~84&snehNSL&}DnV9X`A#2XrJ@YXWx9ggJNu0p*6`HSNpot>pRjTB$Zk0cI z2Jyl#p&JdH2mK36SHJHH&f4l#0bll^CuQZv%!zcg5Z_<`6hPk6xZlDe0#pns7mtQn ziOj&EmdW_YLDgR3PXZQsg6tkbo<5cA6OgTE@n8&RV}3r!(H3W6&#>NKU18yJbM}me ze)PwR*0F+?b2s*>%Q&C*sGHlhrR1*xkxyu)laWIPkQVU*Z?&%?Y`$YtBe%+gwSL5| zR@h6^pLzTMm+olh(PiNNS_*nbrg+;e7em{0o zJef)+j|BjmTF=X0+zy0?ncWY?vwB(tg4Fr@Zi($rdaZCC9WIH){1v`$SNG*BPR_!f zo>#6~cZs{79s3wjb|C0;u;)XW?YiP&9^T>-^u4@&E_cE}(1naG?r&Za%7Ut#GJV{y zhpcUQe$IEm!p#gD&6yr3;Mvd(rjn>a`G607r3$H~#6L3a1zwHqZC5AQL|cXZXL16M ztEB{;dOwW$W2s%wUIju`X(Ujk$mc_R78Rr4XC;+(IAK$eaQ9OA!rVa$Q;^oim}8Wv`j4#2&-jqW z_q~7CyLQjH4Oa?&CW-u5lW+f&X(!8UD6F0wO59Gy3%t7X%-KYqfc%oi9l#bP&4v{%_jk|+yd;C zFQ4w$mvqNsP>I3B7~M{uDJ8z=I;dkwW*1}ZhsaOIbRTr|9$(2Vtiaqn=1_g+P>k`t zM<4H6Mm@lYJR(JJJrBPqYYzQGPQceyxz6pTi^f$fMwi>?NpHR#<|@QpZ!aNbKI_MC zc9-#xCm^lJOlntvn<*$Jya+yEKtx{x3$NECnxE?v$ACOK_X-`%T*F)UI7;&>cD)># zqEIkTl-Bq6OTxtf>mD)CCUa0z+WYXxd(8=rCM7VZC%8 zy1vvzquIzNP`MlE#`C%1#Ntda(~S8!3-o38o!Jz#i#vUD!h3Q&Gzp*x@Z7xSvC1}L zCcITfkZgDbg9m%Qq2dL;$*91fJ3L@`pSg+us4`Wd+L#$LlGaOUsp>Du2}p}^y^L}4 zh`P=^cl27T?Yi0x?2fJH%SFbOETDmvl`Ir*r+~;F&c z;nn~CCk#7?!f@sw;?&ZLbgq=}F9qT?lpTw-i%;e;;l6QAVC&*p(X`^ zKZ0=@$To`0tS&`@es2p8!N2fB`fdn7#i+Lx58xew_1tRXwnTE5)y_=C2%dfk2ZeFL zgxhEq&#a6*uw(k5Gahl*sW-FgT{_I`-wl*_$9`5}9Wh3oXlbhy#~8p3nJ0rVehQ>V zFZ4OQy8;jHokC(j7LJ6#Fb1OEsj?uj4K}Wb>M6(`Anz(h+H~);y9Q8sJtR@}K*#T5 z+!xbz9qnc(oJ~=dv#nyr93Vg>HG^UNMrn~mLxG{OAY_*QTE6=p2KidP`IDPvPUJvh zZVAU!XR6;XyIp=fL=kOV?ro9dc6o5`56?#5N2W4PMSIg8%G|l;MlG1JC;ZYqf$CVkyTcQ4T~ zweI+iS2fECJsXeO_PSLpCJ*8Y5Xu3djh7FEa>%hFDV7AI5}gONy@{k2np$Kv$6WIM z++6#WGVH`ppp(NN&o6%#baz?GcKCipeei7Xj-iP2+>D(ms-4N#u6g+Z3(TM+7Sb6{ z$O{dK1sXINHZCz=CHM;Us_LinpSB|a14mUl7(ID#qFWbkkf4$K5ezpOq^DpjH*A5? z&)=*&>m!PKMGt0k$DYy?Ed+(Ip;#HA%)ek{qSkPzaWSc;x5sIj{bk>5GVro&rTvqymV+!1sr;xIp# z;Q!BjXu_s^Wety%h%lsbRJqgrJo zZe+{PFIz>o$^?RC0tC5y&IIn%65?l03XOD%fHh&QOasK*4%}o-Gv>sZseY=tUt9-& zOp|uUsMwqT_^!MDQ#S?G$gt|D>?$+AYU91HdX?hOiZ1U*DS=Wd2!IHCfyESK><*zg z26IL5jN9Fz0GNAL6OSJp)<1$zKSH!JU=fsKQz>%>RYpC>4Q9|u!3ku|^#?r@yq~>4 zhce%e-CWUW2;RCa2;OWl4V&BW{hcE?6ZfgJLex=|T-!q6V1>;HLLeIw z0@6*AZu#Q$1}V?GtVDG@(0Fk?RfOBmo>h2r&IqW6=u752V%nwDEs=cRnJ8>1oIxGj zP*70#3L)wWlgR=lHb{RaDh~zB;lpi8i7SwsQ`q?0cKUjs%(OfkOwxdtUwiTLH+ijM zUFv1=xFap~WtGd;m-FAixZ`!K1HO6nOnN#Y04#5|Kp9V&*@Z)ENmjEXyo)6#GNuVzHlxfr=~U{@bP$V;Ofv6H29{IWaxNU zJn075_7kW3lM$P!_GDHeugk9z4g!R0OT)Hm=Y~Ukz;rMXZtSF4#lgoz`g}5doL8XI ze);`54j4k+wVBk2{m{18OtGK9XbakrzkRq4iff8vZv|ky-ELVVoS{W1lmGN6wrQHm z*TA^MziB5Jng|T(+C_`otYp9HBeot|XKi8IVzMp5qWW^@-%Z(nq$t*llaCN)v-lfm z#L*X$$l-njqF#X8EPh;y1r0GgJ-W1Vw5aVGWy?)n0Y(1mjN;_k74^n$s>$XT{Zd;M73aC8et@bm3OCGu%Rv#f z_{}bJH^8ps>741Fq8@=C_D7FRSaghQee|q@>fYe<$G*hJtM;awoE;IT49P%j!%~4S z00UEMPy=No{bx3{o!{<*LA|5t0>zi~^Anu3k-ipZ=V}^$wT`yTM!yH#8Mve#Onj?# zEwx?P=CP$c`^48HO-*e|{@_M-x(Z$^^X4EmLZko1TU7(_+e!ipj zkE~4~Hx{`wizUFUYTzf66O;u9-tp{wL%36gJ^}Y<6XTd6rFs^sA@lFo)Ke4E{MrfL z78AGl*}2InJ+!Ai+*e=C?(+A(*c&a11Zkp3U^yTvaLl;T$G=O!=IDm}3IM*P;}9pM zg!SpR(iE<==qS2>rse~g0skcotDVacbm(qkOs`{vk@x8b=(Z&w?1tF+*>y|D;`Tc!(eGTlJ9bPztW7slnvoKnNl7=$9+V<0eYrpmq#Quyl8evKGx$K5%iiuY|8=6~ z`D5dcf8-xHEeaZ)SJK&rlZa;uJaD~pxD(U_BLZ&wGJKmvX0bo%IVyMWP>74}OR)2( zBpE((GXIHn_8*^Bz(-d(ch%#}51cx5AVmAh^5W9HirihAVo!ml3zX7%c#r?~@nK>g z-`N4+huFuv${$Kde?+v>|BsJ1tuzAiO?^ZI8D0Oo+buJ7<_#0?rDv|!|7*}8Omxhb z(PIICATq;C6!fe}<9uIpr+Ue<%c3Ao#!rFC-!cx~(V5n2I89B^$mKLTd#>JIGv)I0 zhw0M8w*k_WEQrDCxuIYYNap8q^t^uqD3UBz;P$&`7E51zP`nSba*~nM3bg(z z?{VyYZhTjAz>tc;c%OCf1%vQ1;dOaD+iTIkO)Rt?Y(QGu2{iz4!1~&+f1yOp|CHd} z^oDLvC!3+b3a8o?+}0x3V>yflb6d`X!E8ErZpNtOUfSfrpW=k^Vzb%lot`(8y&=(A zUPW`Q>54pSw!fj%Bg3Gumx53fzgLWqAFdUX8-BM2AaVi%%{5Y90Yp)7JIPVMwWlDu z*svR9hjN9LrGg$LGg-k6P}{p%?c!%R14F`sn>;Q7ttj}5TvjgFWdhArBi2Byafo{u zJ|zwrxqNYM$`C(|B)XorIIe(yvvpAFoPb9+XfF0icU#6%YnGatsa9dq*SoxgpPqh+ zPF0V|{g4}`p)=FN?^|o1@-bCfF7(*Zzx#UnZzzn_QxD$1wiCbP^-CfnamNj-sw3yy z0+nR`crG1cu`|=+#cHkh*IL%Sfghod8J_fA&!u)70PPXXQqm-y*gU$ubK2`G?NdG{ zXXVHBJA~~&X5X)v1bm-8^nJ!@Wc~)5f9cs@YqLJTiLf`Dqs8sklmb+g1C3$tVHc~J zK^yatS>I-prFoCH;7Q0EcXwmIe(hq#{HV9(wKHK=u$M=L&V-FQY~)$ppH+gQj~K{2`OZm%66H{uHD zJe65+wi?~Bn=(G}q{>uu)^w!z5GiZR9KA<0s9czvJavir!`U?bHN8ij`Tob%Vk#}} z;_6+;ryO5w+_t4r{d~37+50#PmK&G!6t*+Cvrru4gXG=)e4^s}&ot6woN)hK zGA;4V3v0hkH@tK3E+&MVL3aNRsOF)}CZd}AA09}_^x9Kwzj!FQgXb#M-Mt&aZ^8%H z_0G#7%}%}~Y`%JGsr~%bBy0c2lbN2#|A)Od4~KG(L<58BCoP zm87zT!&J5`V`Q1Z822faqDUeUqZA?gG8jyeeVMF-F~%;;!VI&RG3Wh_^E}t{yw~&Z zd%f>J??0}KKW_K^TfWQZ`}uypyw4(R6%?D-f+pCq2=i6Au8-9>yspRg2mXD%j@hjB zsS%ajUlDp_M8ntqttS<0Z4yXz`;fsgERHcXE&G)jW^qgRV)~hQ-fJpF5yIH8?|`9-^&o~S4L;gKF)|} z!!)DL-n??e@pR6HbiC&5we2^%kXQa#YBjp~Udv=;eYCfEzj;fxrsyHhtvWZ{ zisiZO@oFG0KP@Z;^gnGVp2KYwUgU1dF=1d)J4Ltkxi1Ll4!ZKHcqDany8Vj9|IJAnkG%2R1P+c~@<) zNNr$uv9!3Ny2yUUA^x?be^+JB6vQs3-zz1fO&<1%VlgdO59o-23U96}|IY07$uG=fpLt5&s25S=gkVhRH@m2!7L>G+-hZs^F}|)V zD4P=7Fr0NO@#>k-{*<7-85-nfn#j{%o8sLf(zPY&b39P(FJ_ce25XrcFpI7|-_cb~ zh-y zMw>`{{L}9I(b$;LlfOkJ-q>bzi)>7TrMm z$#V5a@rehUIxVv{A;-L3WRU0N_9V0G2E?;U#%!tF*8d%1m9i? z*WLQ&!v_VcQ)Wgxbj%g3{@zw=bFfpADVvnl6g?8{GGaie7SB%d8Fc$F*D-ze@sW&K zRND(wQ9S4v_qx?uzpSKKqZmH1)D%8foZ% zzcXF9tz84EjhM++-2B~4qON|523O`iBBVS)*6!BP-qr!%ZY0BQw!;a z_)9Rg<7r=_-Z{NR1+T5Ry4Lx?@26ekPA{i~;%^@P?fnP!n$PEUoXSkS<+EcrENbs) z@-D|IDOO2otE7mp-CF&ab~~z}48V>&|c_YU4tE;5ZDXh~++>*DX-pA*{@ z0AwapE$ZXvz4c?iJOrO^-Md%ced}Dx$L6{lAdki$E5%Vu^e7GQO929=T}lKJiUHEe zA=|I2BNX=gOKWnq@U%lVK=Cr|d1jsWiBwz=?0s}G zy4!vZYM?K9e)x%BE7DW`cax7`FI*CAjqpkklBE z@q*}Yg!e{Addkj~i}i`sdqd)9*d!X_$DGiq3`@DQP%jw3nXH$%J#c=oYxC(=wsMK# z?^zY;iBazhg3>R?CCiYcoNdr+V%-qvp?J)ed}1&_YuS6_A0R7UKW5_Qzhz2DD!{3W z+lolbMOD*PB*knv66JNSC{)W^i^UK!fOz;Pf$>@AY@L(B`%#+Tk2zZ@oXqc*-X ze^(h3BCA+nV&aXEEMeDt+C9}~c6F1{9zDlaDUZ3F=%?-~iJ7J^m*tcZrK1Bhb5$L& zsfSIEd`08gu00QSI9_pnxl)}F0kJWu8LTyW)W%)nG>v>kP*%(n>rNU29rf($)2K8W zU9JMu)AhuWK1{h!ecEGirDCG$YWFXLDxV)_oU(2H>Y^@ke|6RA>F3dvQXfbU9)E`p z5hkxlNKzahFs5sT!vnWQ*#rLpP1TCLI4KxfT{~>z?Vs0*h?)9Ag8NIz4EpCV8sZmJ zEnYLOXY7_9ieUZi>f^dZ{;HqCNIzw}921+qBi8Dm#~vTf#)bpeWchG!Su$_luL|)F z0Z@lUp2di3oeE|CZ8{u`pahfKo0uhoBzP{FSr%2MQ# zoakUBB214fQX91YcNJ>ypwjvbqGM0vi}Vh<|EcpV&zWlgs;W3-vOdISpY2Vueh zxe-O4hj167E04P*Z2M_+cOFYJKKoDbH)aYivQm(X;%hG*VV|ca_mouzQeGz=x*Pk0 zl_fbR)z9FZ>a;ny!k8+cHfX0HcZAvjP}5s_Z6U9ry&KT8`EIq*=m#2$-H)GWPoI%o^+~UMJnY_MYE`EX_VdplHUh`f6!R?khsCyjricSR!)02K6hiRx{b%a z-7j4d|Lf&0{zGUxr#XS;{mHrpTAM=PGam+3;!5?l*c9_f_c^&`vm@v7=aQn`S%&HU zt~k>`udi}{bxsLNwFqFKZ+wAtyyC)qo#u)-M^zrzN_4RUno9=VH*oQY8}Atd$xM~J zV@joT#9_WZSZ<7dcq42KuTW($mbH}T#Yw9))CcEf5lPjvS`yQIxN z_$ey!WBh+u$lu7xt&&9YJM|#U+jiI_u7|7)Rl(Nb!tz6}hAhlhb5y?n3`B6&*QwSF z!n?**DXjCoN#VshMx=-{j)Yc=3DB%96_a`AI1YZ1j99Y)SB}U$pEj2ZK25;4Xts!SVs$)n={kI!ObZNBRX8fN$ zS8k7fs`#tpqT0&$_aMLJ#UonC(rr$Xp9U6_Fw1{eecaMUhiO+N75m_v#JpbmLjg_c z6b;!T_88@n>nlis90#(Qz;-z{HbZtT?pd!6&6YvhBM%_Fe8L$>(Y<0TI+wg;z6phgK{usIuhFGV=&! z@@(%Gr6f0I*E_gDnh3{PuEW=o1v`5O{9(2H_#T;P;*q?J6D6l3_8lnPkC35!mua|R zw`O2*dU#VJSAh-h;0zeD{&h-(>stQ2b3!UvB>Q;wL8_#T3;`NFMGjlgn`bFci5Gm7 zUPq*{o@n$^-xc4iwa}!0bjr-@4{^?X`$ z+lJs_cfGAqByuUghn~>!l1{U$coUJe2hyg!bJE`QDSD*@5DQvdM*+1CaYqs|D4Vs7 z#eAuilybD+Ry7Q$ICMjU-i^8Vj)Dh>-AmE?UbjP#4o)xcYkvJ6t>i&7e);A)6?;g& zu%2RcqD}U|KebB0(@aK@9)Ps6WHAo&%>Blsyi<9|oys-_&ZU5)j)6Ym7gZ;uci?|r zgU#b#7GZ&NSxdphZzQmb;sTq^xm|l-HOQH+$i^e7l7nFCeVrU|-j$(efWcV)Fu{wb4gxg&%1MPrTT4VO0!JA4gf!3EMnI||v36nTe~%ur&Jd*)}y{V?loC8uYF zfQ=A3p>mEPv$M=AdV)LN-R;nNhLJr{SDc?r?kS&nXd3ppsVBN{Yr^B$t`+eZYP+^5 zA^@`_#WC7jCasxLOW`?g2AZu}J)_$7WBj`L){gYNyNiU&A^y`wtmKmnHLl8ehik`^ z-#V!3v(lpsn*U+=tO&Eb zH&G!J>+h5f#t$ZmeORcpXeq21Q-ZeewlbO}Fl&GxIwzSI71sOHlW3BQ2-h6KGj zSNT!$VjxLyZhm$C5~%<~oxi4s7FSg-ffirs29yy!OnQpwyBkG*E8SkEb7}`r+&FJz zWpZP!L$YSdy==pp81FYZ_ESRhUhW0wC!H(Zu{l6>4fKd;Mkhl};ZsNx=mdGv zrlWQYT|;=um_CI|D{pZ1=R8n(LvQFJ0g6P$lvJnT99r7V!vDZ3dh*j(Z<;nGx1SAPNCmgFS^l$;~lcgunN&+4{Q@ugAM(krU@zxo6jg(+TgGRgpc(d8MU?0R*nEh~Y@k^9~O?aVeF~vpPHek6;kw88uIFCU+&Tggpas8q<`Imn*_604=R<0t^G-}5Ng#5XDdCcsb?x4 z1e74Yzc_AkbkTonw``9u$(IJpc35&~tZ>PuI3LWQZUYeacvxix*ka1Op)p!al5O!Y z#?+n7RGd$)ifI`>0bWLb-Jy>J_7{(tFEfV0BZ-&$9c0UwbDX~lRNrra=ui@}Lwbw6 zI(jKUdWW!EEH0GZ5I|>>0v<6_o<|lL+m0S!n3RZL1x#J>Hrs9fnzUc{MJ@ZP^nP*e5~}q6!u5KQ_I$=DVd=`Waif$6`3mxue1-HP=q2PQcskMtR8Pc7;xbGw zD1^z;ldP-XN(vtl+J?Dx;}6GTWNt1mliY@!(v*|}A>D8fl=KbI|31Aa@8YkB!W>?e(v1XjC2>oXa?p`@{%X(k>mbtIK7gkC!+Cart03DiOu+D5wB-om5wX6hDtcjQ{?%YxxWB z+2f8NBiRe3nDa`7iriY!GpHs4kpMFdF`S7RR7olUTRS%8?xxp*PATn!ITiSjcNuG- zj>h{;lFkQuC6jO6=ZR^G>j&zr4%$aV@BcAxa`L(Cn4=aYKg8zuAY=LQWS+VQq~SFp zvPcNKzsN$@P21nJ+AJ45iil7DF!pd|H$D(+$WzB8L_|Wk zyW5ie2%~XqP~}|-f1O2f5zaY4K7=V>&{yVASAt2mFwiyn+(S}B_mt=j5A_W^FqQke z#24QXvtOq{cV$SFr6Tvx3|%A%C%=hqdf6rE^>G?4UF|KYZskWg?UPu@0SDrqFV=OE z+?{raO%Wrbg0>826NFUPn^#_nZ-0z0C77oKI(>FYkljDK3vBI&Fins&k}1%n3mt0l z%nEO07iEYb+VbZ^AVvsixS`NT-bYF*Bf8yiyAG=sMB7X?(rGx9b$8;;t3Ac4f5yG) zy0Tvr2Oeh=AQ=eN!sgY=3$GHneIP-xxtl^{w-ZInW$SqT$RSixWz;T?M)c%%GJim8 zv=1H`z%mST2KZTO*1FdfsdZEHrelfvEBVRCFiC;f^lr#2>3Om)NEB_ZxwZ48&Pc6l z$Df$!hP*iM%>z4+Q!Z0`PR4BQFP3}XgU|(Vf-1M!r3NwT{Pyd)m z$$g|j0EMfW7(Ekig{Y^G%;d@uItcZMky1nzgE>trT*AVnPohAd`&Cp$q%!eN$Cf(j zwqT_1dSLlAq8xlX<*&S@PLX zq9@B4YDLPy;YC>E?{%2?^A@QWhg0!b1P@3gsW5rPvTjd4ChL#7XRwhxEW!`8n@AmdY$4{ggenanAn#uEO&-G*PojQ_uKZL<}QTdsD9!~u{F&ACaUs*rA>Z2{DUsCP^N?(#MA zuvopYexjd_(W73(Xy3!;p}bfNG=Ew60~fo;~tdVMl&<(;97= zfw7;G9Qr9gVPE-Kih>NGu{Dr3Ay#GW08FvMWPH6*^710*44mrf8tViylHB*e^;Pwk zey^9f4;4b&T38jE5#pzvo~L@odh=w4U!O5ozi^gipGX zkpn8_%c5D29RuQ7ZLSkh2dFd%e?ai^n&pT^B7ajK#|AO&rmP}fmjdSw`38>gJTemD$VzV|{TyS1+GTr0M@Rt>L2b0NDD&i<$ z4iH)RZa!no5oF$1jOhJ{RhU=(@WX6}e!yYXm6XQAg`u4TJ&VW* ztGV4T5fR!43Qd$`#>xR)I7(#ltYn}XSgfPbPY5lu&QJy;7S_~~s$r}R>9m)^32p(G zg;PTTMgc!n%(v7lQ7U-LDC%+rEI;%ZxjEE{(zN{5A;Bb_YT6eRkrW0)AYN zD(rN`IpvPZl{N-1-W*LjOqY5cfQG&qjIR~}eSwy1_A{Yrk`-9cRN5p%}h z$$pIE2|;4`NWD}T-osGCH1<`+mdHDxn}~{B$-sl*c269WUQQ&siBo1;nd`FGTE%_( zch$Zv2j|VNuM9Lqn!Z}UZjdI?GJcOF{6f%HO5$HONfneDxQ9h8-U#Nq(D%^bhy=fa zJ9?}KR}XOKiMPT3Px^P&JVD5lsh5BsD?v!^p?TqME;&!C6rjypMPI(9gV;){g~o$P z*(7IlE-_cSzXo0d*XYO+Ee`+M|g$}YMk ztO+^ZA!!0+X2~If2q#PTK$>#C;#-*4_x0UHBo+qxG<#Jg4P9q?M11WXBh&Oio0uHohHF zDq57xgHvOBa9ofq7D1-oJze(2+R1b=iNYb z$@g0>8jT;fCj5xCSV`S_mcc%rHU=13A8fBco3c#nQQJDNSQ!d_v0g-b5AMj>zmklqN37v3%QQ5&sd5xTeV~WuDe!( z9!EjuENR2;obU4uL0ySC88(DZ=~B7zFY$*x4?C_jx^yc|W^nIIoe3@E?Bgo`IioGb zbd`sZGp&av|6O%WWmDg}qR`1w_AI@u_0QS>^nJ9~@{uf>SWW$=;6!J`C4l<6$6s-J zxe}VCWi%ll5;Vm?53)c~Z47}oJ%fI>tTMj|w}`!up$evQe%W}UzgBmP%A*_ZMAbBL zG_=}UH_YOqy+33%jATu(2Ua=a&7#=~*X%L~@5ve5ilt>^FMJR}a2Skm=0Tw{2;iTT zm4CQ$L;pXStbm=Dyo$H!N3?!Ct#R;EqItOZ`JJqc0J}unC?#CrjC;$2$tU%n$K8E$ zzALUJJzPa|ng?wjcu*78>8Pe5x7^tha#=bg&owR{hFW?6DsuWaKS_SjPDK0akyGT0 z-^KK$w*_0SoZX%GOsCuS~ zz@BPq2nN-8jtnLk0@dWMn-kBz#JFGYeduKNptbPB&Al-wNl$|GyW{S`U z{v7?|uT6odR5$Z=MrGWz%U9BNe!e_xKs6b&?qVsc^ZpRpND|>VEc?q+IKZ{#Ifxh| zbE8wLw2XEz|F%~p0LhgfTO&^S7`w*PE+ua}m>X|c`P4}v#37-(dB4YI+!uWRM+Qak zVP`LFjzN0073gGauWZoUC_fE*xWEULi?Ul#n>lw&*2lMkvq5Kp73J~$H%TtL#!9#K z^V-G_CQE%nFmA3WuU1-%$h&AKuC(wr*V`LUMb{XSQ|MKo&uQbj0h-N*gh3j?*I8__ zp2%kp)l*%I%3FKw!pD1d>dJ@LI^D_4Ynt%2dVSP#VJ@xZ22#*} zqy?j}rj@#@M-5wA%-`+pir&tJQNnE~k{sFdfx6fOFdB8?@2zlD;ryn1agMY_-Yx#Ji2b_pROU>6#lp$jIrP{CNNU z^c72DV^qYR4RN-K>buq?{<+p{z3T48(FfD^@w1#HAP(ahIAXxb3U!nqne8=$oY-g- z)0@m0${I?lMI2Jw{%UZyRSgPXLgLzfCEd#pOw5{zS)=9tYdZbif{9Wg11350=HFHI zZbG0m@T?^?MXmu}AHgqBBM1mCV)TaU4yofyERqQjoUSIR!b~J$EHQ5{`kEGKzU zd#Nzq3uvdb)DjqsVMMQLjrP>W4Z>5BxU)-yhyZoo7g~Dt!Cwb_(V5L)lDGw{MR!R+ z2Czgk{ZOT}2H>+MQvCHYXulY$jreyJLOTsP(WdbAEP`(VwXVNGt)XAOvuf|7%Xhy! zxf=z|cYO#2cHr2*tD+IRjjd#&#m>}FzUv(Fl@bL};+t^o(CiR=%FEm9(qcVoW+r*6 zglKil$lPuN-%9Ij=lRupma8^4s9Ch#I(SjdP;jD2+3wXw=WVCAj(fhk?WWRGccde( zc*CAG@gq)}Q&#IrayP6i&fEIqPmSNyK1LCaRNoHyC`B>UrS=j-huF-U?_;KrwzcC{&&77hezG*Xd9&05?5$GyXF{;gFYAz~rUu-H{Ov<-~bm zoA}kB<-6VXERF4IDGgojF{)dCkKC~5%z;POblAJnLxdfL#*A>4gM(w6LoD~Es_*Sq zI8hrgScHw1BnB%5$)#IlOJRE$!#40SkPhP;{jOS;a^cn zBIJDd7)X~F^PK(bYs?qA`fw&56T}Q_7b3z3lR~TO@!ni7%6WUgrBkT!-i;tE_2uQu%yr+n&K^E@#hE4;=aZYfIe| z_iw$a$L!)pHPu9a`Mb3`HcQQs2T7Youuavpnb4noMq|lWL*x2SCfPZZ3H8AV(hoPEfnme z4I-5^kK4ZI{CLxk^OJu_!+D}?oG^OuP}Xyg!)aMf6M|!F9k(l5*cdJ@`UmWYvkb7j z=`=la>BP(HgKArMnzNv-d8#KxA>k=U5?6OR)Vay+e$&0J`&(}6rTmbY4ZPIf-+aD2 z1A@g7tE>aP&!hq{oQw!R-KWSKRQ-LaF}-s}*q zp|;NP6O@v+0~nvc+_>Av5Q?Dq5R~U&&ivg@%9}D54^nIJ(}^!aQ^H4-9WI!(zjI^H;(r1GuY68y@%hpj1d&t+UDu{KOIdq*i)F?jDc7 zU5|HPv9i4oXS^UPCwI>UPE9u%`akEH%0hdwFp44 zT*vXkVSZBORHLs>?=Az`Rw=KWhU zuQrNJ5eU?e9Xv#%;|b?U>itSMBU_uwxp|W-HV$$ZUb}pGbto&r`ain0*Hnvkq`kAh zlehV6`f6f$)5H&AecF5W_3|Hijdux3F8L;Dd&m#IRTcWF;YQZ(`}RJ35Zd)&K3-gA zSSGYr~D93chGAYNi;k%jI zBl3-v&cvtD7HmUU3I}=$YuH_%=C;5j@pV!loHfYU&l6i=WV4a)r661#@)oNofRvc{L?uxmchC#~s z-*#xB#i7{&lDsGes`19Qiw8-Nt5@DRrWxTVG5)9{q>PLs~c8<8VBaAJ6qQLbM-}-EQt{wiuL>_ za2#*;3~aLAuvi9S5ko*hU_QiLWLk=dBk-1_+z?L=t4bye`AsF4vFEy927LRU#^+xE zE{}Pl+nQh(hMnFyF_9w}_4AIEbo=yo)cbeXIcd4LC(wB^h( z#vRH*t7zM4*v%CRR-a(Z#Dbpz5Q`cQL;`|4%``4%$~~8S$IVW#TUb$%!XuR!%qR_Z zf|QhfTwF9PwbALv-<%IS6ZL^TR5vSeMSLbcF}v=$_3_vG+I3y6q}Jz=Irs6vjHJUR z)|Tj-bC;#|3`*BM36};BA33xrx-$1P&ppJYpP}W`ulGUUg$5%w6>tZrLWe%S1n|P^O9p@}trC7#Xti0$4;Vu0kPZ4PKjOqXI z?i4;8FuK``I8uEMs^2Xf>#O<{de%QKcrm4xEp39MzY?)`PN~~?+t$NiZ@x4NODAti z^ishm$PqzUy-Ehl$`pYrS_n;W$i{y)Bn(AYmwwTxPT_#LPf%@ys)$i-6{DWs=wGn zzl2Y?HdzMPjEbajqA6e7o!4g257a8pUOZH+pX-F-rnWST|PJG9f zK3W=49{?}fEOI!$sQ0u=M`GOsaR`5cmZxyFJFv_nYiEY~mEC3mTUX}zQlYsx@~h;v zWzZY!4|Eg`sx$~c!Wbo&@|VrD zc(qL`D3{GUII4Cp!uMyrC(EE8ju4dJ8oeKh)WOK)AWn2t6{A~4RQSM_69u<8QfXjQ z$hUE4gc^SOAE>i718|Sk361xr3#1MWk>+|?OXp;Gm;Y_V$bMjMs&|EWN$v6d1+pek z;rE~RRBaxvP~TP8O@IsyKw5i;M0Gd%BkGyQc8;ZfL+4N*HCqp7`_e)y;sLVb5u~1$ za?p3KF;iv`k3%($OG(AmHx{wnagO#&756^aegg|LXhFF7RP{NgN)`7!2AvX73r=OTK(%$C2ht+>=0^K^R~M$XS#t2ChneX^fkFGf zW`B74ZmgxFkhC!&Bt_<{04h269-83rrqamoDYc;;?7YVa?Im1}UW52JW5}_N1$${k z$;W67N>9z3llbgilLA*}|LK?HaH&p8i^Yvw_`1KA>s+oK-|Oz6AUo+<2!Nsjh5K~q zL^Z^Qs-5xjI}!Uys>9GjGFb+I|5{n_eFpO2zV2nW3Aoyo!B8sylKsef7t}S^Id*Pq zf3kf^Aug9(ZLH^dxU_8@6f)@(mF?E3maB*(F>}wlbB7GnyBRUkQJq?fn|>|&>hcnVai7>)2fa4 zSp^t3PqTSLIKMAqQ!GDyU>bU#blx{0o!STgca<8E=!(nNW3vW#?5bcI9Xn9I$1pCy z=w$xau1hPd7;W;%AsFu&xVYlglj_YK(iZI>p&i1o0V8vn_5DkJL3_TX0B1%5j35tC zgiNnxvzw&M#dsETUD^z*<#_EFH*Pm<3%yxC+-$Aw3I=%qF_%dHTw%~4N|ZQ@%KPDN z2r7BAfhU4NG9gwwa9-${x=ZfNH1t6AlE%Oy;KB8p)Ocyu=eCyDf)|$>6?W*em&=mZuA`=|dujq!&6r5cJ-AY=B1e z^fpA-GV2+GG*6$A8IAefEON?^-t$%__NGVQ^jLO&DuAmUF_tYo5bv#d043Ob^Nx~U zgXES-6#zpyH?yT}04Pt?KtaK?#no3AC`e9KmBekrCdm7!{(M^+Nk3Q3=N=TnVwM~X z&`wD~7#+N3VUl}hYqab}`amN$KQbB#Q`$oL7imBVT7K-8?oT@D}DFA6WXE_ng z_eRenmy@IUSIPaSfSR@eeQ&6JF*H2}VuM|Pbb%GPEgS8M_Ch%z>Bv#OlslTcsepYcwV;npiA+!R0J0eA51%k*U!!U|9 zM&e>36?b=u8thzwc423=5hUN;Gxge;%q8Vhml|obN4a^ycSob5ax3A~yVn|IVhC zko``%xYhcSQCVU_D)Lje=k;7YBK4|UPX3;^}pZ?5Y zrQp*C#%ldGux#4_8Z)NG$@c~3F3c^2S))9jAb;IB)4Ov>34O=Qps#sn?|T>$5Vs;vjVA+Qib_>4%rxuLQg!b4&Aj7jt(L9>j3Zc zhEyO3uag!JC5ub$4bY=s2y+rV&+729 zqbrL9so?1L!dleEU^T|gAa2c-x-ImsCS%d)kP8gk_pY5HM323NpX4*Mib~Yic3wCX z9IQp{BSAi_>&>)s1C7Cy{jU@AU}ZWbTQC2l-l~+@kKV7q2xhc@VIjbD7eF1RiUI=C z0Y_-D6K6BJ?%NEiV-T^Cj~Nx+>>+s;=i@01aqX#Iz_$$6Rw84b!t#%cE%0{=<8FII zG;((cnQd|xUOm$oel1HUW+;deC1?j23ULR_1X_M){?Z8GjtntJ+AJ?Pj3r#hXx{=8 z*AOHW_c2?WU4dS%`UfDi?76`mNF4tuvRI*b@<#go7Fkqwb<0N(lMs{;BaVzVM2IAU zvnBPHQCytxd=JTdcO@>bNDpbnx)wj3JBys?Nccp%&H7%=JAKW{HMB_nVO~~L)S1L| zJC8Ht8`2eBWJfFvWT}@M+VY-&2_aDY6o!e6fwZcR`>QUtNQRg%`(F&G^fT}_J-9Tr zk`pTO^Q2AZ%YGeKnhhA{mLzBl=KcQq!0Ifx1@KVXO`$pL+){8dnNjMi=?WT-W*^SFn|R`$zu!u_0@ioqO*#o#1jXAll#obSgrXc<8#~1XVNhRqYF2COq8QORLRb~Dlpd& zzrjin%?%P#1{^f|9q@xjZspQYukEFvCqO@n4#Wq`q7>6Y|3(c`=Z?{fxj`s${H~nu z5m~93bC#yVUq8ohSQW3gGP%wJ?DPgdbt%kgn0g>ml2}lV5U7*)QYIT-uar4$@bjBW z4T`+@d6J`V)ASWxm~vHgNL{>oV!dUE$27B@OH0V@229GJqTe4n5iS4lQ(lwhc+rlN9X~pI&c4RU@(HZuiPT17D}+nF7;8uzMA=-6RO7uN ziL>iCTlR#+)Y2;FZfS4!1sKH+-2$vop!<#yL zzmI2RMyzoEOX|V;7%w6KapVM=U}Q2xXvxk2bx>;U0UjQlNj)Tq#=hzM&A&7t8x zKVpZ1%H!_b;z5>w$F9N=UQz9) zBU;1(AuWAmLrm|8(4;E#mYZ}R3-%%jKGCbBHct!y!jNz$HSVVWk*-Z;^!JC-R?;<+ z?@GG%`im@G`;~qnc*$x-ae;CFx4Yk#?3WisE5+TA-@Tzs@N0N4V-~qm&LvGr)FVfs zW`_cqKp=rCh#f;hC=TCEx{8GncKRis=}UOXRd$magmj%&>xh0u^RF$vbcYk7J)kT< z|J#|?8^T5WpsFn0|Ai1~cGENZ2y=-b%#&0Y2y)=7@z8O{$0B?c&a+awkx5S~6X>@_ zCCs!|&x*ds{=gu;LhgMZ^CXdTD*#RMB^#e)VfGG;#VhFgPCDLspzehKCA7@80R(-- z1lFoHtRD#KzUX%<4xJ2r>0Ye73)^pgN=&3W*mLdE_4%Sf=zFNO|I^Xd7l*nAa8&Iw z-PQ6Be{@rOmaE|SDwUI6<+o${Wkx_=zEpk^@VSD1+MKw zaEnnWgncZBq?bF^VBxCApP<=?$>(S5>>gZ)-D)dmrQ&k5v&+h&`Sk_ni?1us`$Xm{ zitf&%hXq`MFmoO~nb8F9C&YEjrdE(eCestXvUNH0-IHYb*iShb+Gd8gR?>zWPy*F+5p4q1lz}=E=f1$kB>+q!3`pq{ z{#FH5Ry`k3szm{%7UDV?(LyJg^i+C=r0-~=K+K=g{-1$!L_~AKowJ=4D-^81$s=cs zh&^Fb6v>gIDnzFZGUW|Id!C*rO#obD|A4zQ-v_~p6W=afb*%AvHehlG=$zXKQ(N&P z4G<7ZIl>Dxa+2XF)a{}L8Dhc%5kyF~$Yd^W%mxY}3n~4q4)U+Aag)0C_e}FwDvEt> zE)vvqd&Ll7MGwq?qKyGSl#(<0;O3f-nwFnlN@MEoYOc_DsB&#vz06T|hK)uy8b78% zb8oaK-RHY}Ko&b(eGbh@BFSUD93xsWjxF^9t;K=jqy`X7S%JCMy$bz_cutwmjyFl# zI!EK)ygAYJDKL?$wf1Da%w*1dsooHv4?ZQwfV=D%zbXSc>0};dp+i^)01yys`34#?+S~7 z?=!n)U}k8pFF~tg+Of4y1;~4)3Bi2(0s~?Ys{LD^_}Pf=DKYlMaeI=7b72y6^Z`6v z!RnmFaEkd_m!tWY*L-P|eR2=TBx=&oV0w@_4>&aY5SOZ#qLq-8CCVp@(V?>VA%QTL zqS`mpRx+m~k}SB6F{>UD#d+f(30f`y81|kDoNi_5q;|3NJSKj4nvj?TU)x)yLhb3- zz|&~<;!`AIyP~4W({G(N;~u`Y5qs{Bx_hKvF_HzUzj5s|N#+I6$VtGUV1U3xV9Vbk z2I?G}xZ+@bLr{o9KS}=q8+xar)6h7U>WmHCLi5>7^5N-`3n5 z%gCT7xLvvGaySu^d8=Q?=#aiKNPFogl@!O#TY&V%>Z(FgXl%fkUU&d@$|}HdstM&G zNwJZ;SpGn$vPkj?vTK!dbovcxs_^%NliMtBQudHv@BUrp_K_!ZGUj3@L&d-#%dzs} zNQ$HCP0LgBxFEomZACPiC38*P7hoRVs*mW)tII;s7JO?4n^iCvn4D=twUwq(7U_SV znK{;C8uNCO)zdi5kC`6Uwku8vX$4QdpagyGT{g_$yM*$o9K=KaLBK!Hbu#uB@wMFG5owg0qq+;HZgn(ifLYSE zYrdwONpq9MLd6?}G_HK=l3xH+(+L0?5KjlVg3Ybvj=3-NQkbEwK#yLKwK63Qe4uM-rOMmZ3#|3UndE7-&-z>SQ-Vv-sH62 z>NS1&xxV+i#nJ3F1tgifKPxXeA^>rO=#6CkjPVPpgTvc=;}C&&w+Nq)L;Cv*YTCw# zp+JO`HZuq_74UzyVXi}YODD*9Hq!(-BEX1h?#=KNPCjtT?aA7h^StkP=jhz-i-Wl96??vDJh0fzRzKW* zZZ!AJhUpN6KXyHNg{1jjRIUiQm}zm7FY;fo(LKBS-ksk*?Ek0xMbzFUk^dgPxp2QkA+TUtvT7F-E8mI zuU|6k9!GYJJyN)uuywdgBDbN zO0Em(k)pLpB3qL#dzH`&Q(tH*ajd2Xf8_;Hu8EOe%rq6fs}(`}8?K5i?mHDk9z1bz ze@DYngJR3>=R0kYlL(%%W&usl%czMl(>7S*K_eGmb$KKKiTrT+nU>%#K7Q&9^1D~Gw&+T4A z?R+07A{f6)@)JRl69YyY%0snLc~Q#&;lkxg;&sLlEiY^OLEL$FwhFaGgKvakP+X=} z3$J+k?pkUu{??RrW!DwSiGBO?dp9Xwl`M(;=ErpVY2g{T*n>s74lQM4^yN6@mcBmG zJM8t5N7-loEB7Bx;s-YT^))8qaB34Q9`T*OrI`5k zkIvJfQwI|N@eS>WZuv|M2IW!;*G>FBS=?#AzI0#T$^MyRapslz`Oc#>OL6L*`jIdN zrLu@WxS6H*LsB;#|8!2M+5-anc4NPg$FoM1uBtkQt=TM9sm-UQT(9R+>+IjoXAaV6 z;ffXWd$Q-0v=!ph#fH)?@u`6tPSg>Nk(hVpuRDj-<(2&(Oj%5cQmT#(a`%}$NCmU| zOn4jR47L~$MSdZ>rnPDY=tbQKMT77>ILw6-pE;1!<%x>$^7h-H=jZK;dFt>*WB5%V zbziBzT!3<7nU3Z05=uUHJiLVv1Jm-e_k19E&J3<@Xk{roc*DGVt?uZ>Gj=h(FI5$u zDxSAMDeq)_es5{B%I?Zm`d?4hUtUcgeRMb=(DUm1al+ijm0?$5J$`9E7(OsCN- zRIV~FA2PV8-osXO5BbcAVh$Lo7r;&N$s@(aaMZ*=)tN_mG<$=@==-RWA1uS|_Z~K& z296LFH1CyaX(&oHdRkjdG2PAy)t$Rye>mUT9Thk~Cf&{j1o)F(&9mFe*Qjrnf6E#^ zO@(Py^$_+LD5eSWP#ATKMepuDIJK&%gPl7(*k^FXy$}cb)h`l;?7z4Ol=BQ@dZ>qR zkgG;Xq)x1wcE|6(C5_v(Xve^g=?dlAxJt!E^tTBE!ix9C^fMY>dYVd4QggCSm9)GB z@*R%ytIcd<-|x%Hw7Y9zx$ntA%9pFsr1d4Uhj~hm z67%l&o_j4l_3C?%cf@K1FnZ{60muRWc>Q{5!)sLN@p>2A%%y)UC{w@Or~Z~y8T?GK zdj3J~_CVYY*vRJx4J^vvehj4wZ9i;Et4NbDL(h22sV335EQjcUfU98TzNia`fTFNP2}$aox0p^vdwz%p?{U(=(e_Xje2E^YE; ziH>0EwzwIUW$HYNb|0SGReIT1oLGTYtLc=^->TcXYS5=)W84dOg}mHA=v6?b>uXGp z=I`ALt0ge>O=Ba;yZ^}9Vuvksel^2|RF*4*p`6`cu?L!l{U-kbI= z_1b)YrgrzOhsI~F*K@YVzZt@X$IYoTxYtmSR&PPhx*-mdj@$1&n6=4#X}Gl3BJ4%- z_fwZwH2ZU>+54EFfE4eGPsA7Nr> z<78`ikyLyB#S65vmvirv&V4QUTHme*luU!=zNOPf7%#KA{$hO8({<@hHtA|XzMGr6 zx2g7HWJx}CMWf0h+zQ5$Ck1h@0>ZM=IR!K$(m>lE8p^Bt7w#+wznOIxe+ zK^{Wy^0LKADV$=#L*u^5{T*N}93y2c9<^N&kWc0H1@y=DD5gpMv}QChDfedRh<1;;wPbxkKi{%bWX=J)EiECBMN>EuUOk3}psOW@jy4v#7!1Zf~rOb~9!`E&1bB z;hON%ddf(O*XG}*aZEFm!&X@Aiph$R&^3{TT!l;E?;!Z0)t;;LEG_lO$>@zY!2l|8 z<^hS$Z3%Sv{%;4TOkt;-!|@`fFg;NS>jIh|0lo{NL2C>(jN0%{XK$xoZvbsDlh&U! zn|#|c&GYJ?xnKe@hD>%lQI(2Zm*!DL{nGF@ALN)D?Abx!&0 zU^_hmV>y9Myjn%y2aMqc25neCta#()u@40P?hze+$CeF3L+!vZCms6{T(4W)hCAJ= z%+;0q;?ZcDPLe%KiPin!8B4Xtxh0Aa;;w@{>*T`N`++}6Ib=wL0%g%_M zoQb*LQgLoxn6ATq%B$A)TiXQ>gI?E+EA=(eO$JO^`$7{+=;$2%mYtyA_qBPFw|WW} z^&PW7txdyvYk8hBf&&+)`ey5o&}DwzG)C;ewuG1Ye<u5cH}@(C`i8{M46$O%`-LY-V;*!&BLnt%S2*}Tz(ZOJZ(JUD#gnd zTlnAx3~3^Qr1mK8%?MLs;^9HUj@x%s=l$Y9509o7&SRRCfkKUwc86(o*C&o-T%19X zA3Xkc9Ra@ekB1tLbAM^9E4sSFn5sSYThl!~B_6Yi0R9@jU-L`D>5#a1925*{3PJnq zS;WS>@^srA-R%jBbap@TSckdV$0V8hxCHV(jWhMtgff$>>-LBUl>WCEfzBrMa6q_t zGpFbD?^A&z3ULZ{Z3R)j66uzwv*w32kBnup-(XqtcMVcC>@qluVgqMB89VFZ#nQm{ zm%;w1n;>XB`;o_<5ZWTp9)5zj?^=zXUj}U!_nh9jnAS6Cbn$JSyGC7Pr&&Ak4>9}S z8pILiCj&Q(8RxOO$Vg59QL;EJYy)_8#hcsOgtbY6uvz=?1EJ`3^NNF@c5r`{0frh1 zHSfUMpitE)oIP#&VdQ1%pTyW$L+rA_M;{;Ev0b;? z-7(N?`L6XR-rC-KuZ;50!N`r3a;Vb6BT?L=*I@kYh$&uQS@q6TLS#0{LT>Q;x zs2}0&oSxDeWL7nCb2TVC3rP}?D{r9-%vQ*+YN;m` z!94C1s1Y7~%~YRT2^W$)3iu~f*3La5jlGTB5?J;dD+IFRrLH+p~v z@^7Y{Gz=VEd?)m*`AC;u`mJRWJykfIH6`^;`0j-2KvTVCk=cf*oQ8()r{KFU3g~nN z7pZ}vwr%if(B!5RJ8=p%H|O{+FG8_~4w9fR*q@^rxep1&yxL{ z{hEk@)}7;4pX0X{@YJyfo3%C1Cw*C!>#C2jB28QzOPAY#LnP;de9hkmUpq2JK$JQ9 zZErQBR_B)HFu@w?h*x4@DfLTeUpjzYfS9h+}!&+;RTu3Fjvchk||(puiG2-nU2m0 zg*5mKlsF`wya@?`lF-fk!vy~F=y1^r-a}u!2}c!FF$EbLch8Nq!>Q;B}Em#H}bO2q^)}cJgWKkpuwa^oWq>g2zen_|@%^@Be z;idnsUfS$knKrhx3%ioHbJ|PQUoBuBZ80jf>zg&+%tL^dHrcy4aEI$H_1@Tq@QFPI zeAX#ijDKkqz9YzLQfj@CauidYs%t=CcR=kR&JvwaS0>jSZVu~zuRS726V3lEb5LF(qvA;<)W+GjbNAQqF1=(WP@o z5A|8>1YIZfPRIM|-@+8%x6GS6IB#&w`p<|ORXUvZKf7?~`*N?P|d(?u8|v;Scj zyC#y9cx{=s1E^H4{nKgeeJzxLRf%Rx0p%LdRP*TY3gS&-uf|3q3AU!(B*uGe{hxO} z&1WStpV?OVF$~IF??FoL?7@GV^(SYI@9d(<_@X-Oz!M; z(0mrw9E@Lw!#6|SsqBQ`m-e*bm_HkWv3G*Bk27~UqX+v;dwSdSPU~ks+(P(9f82Gu z@NQG#O*hg~0UhHz5G(s0V5hJJ_rKE->@i4xc+Xv{193fpsHe92DJ zNn?8*isKeXjr|6PVYHMr9h~whz~MTV1)N=!o=HtN1KlZ7d$zH9i?;`fr^F8VqbA62 zqV>eV-@h%J4HsHon6)!wazNOS$o>xxr+z~&TI;sk)e?2v5RxTI8Yy6ay_*KE+X=h|z_$zt z{s!Cd)iDmG+rhuEucS?a+ULClki~y!-f~)@VRdKCzzK;_M@F^gZ2vpC9IX*o3=6wV z7Q6$7+|Cv7FOB2-Cw>aXSp7#Dkbs^fuK?8|c52XV8z|ldM4p_6jKk@e0<%LVi0vF_ zV!V72Xbht!Q%R1;t3{L*l{E*pF_whRJ-IZ$n(VxEl9V%m5X zf@w!JxBo<5;Dd4zhEfd?d0^oVYjDecgWhQl@5Br5;)MmuUL_sSe>+9?5`CQwv{Md4 zyF8Hw)gb!q_XR@)wL7;HSp^DlMc}(Y1YXnlQ)ALtCk=fpvZoL|laI7MBL0?K31!3n zq{I(wl?}#k-5$7A=^aF5Y*&H*ZQ3I~??2mLyP>I5 z?eqr9mI)78J^c--qCX$ z;wW8xmDqq9E-zV1-h@a1*6d@kI%kaLh%M*8_Alai27&8O>lZnbSYn7@q{kRz`n*2V*?h56{#9)Ej0qZy=T=Rp1cf9 zKArgu2&XlWus;r*#(m8uGCZ3+4?6&B@WJmujIeB}y$Asmih=iUgHKH;I>mYa2C|Y* zPr!?JVSA8h0o}M4ECa_JeSDUWcs>PYO?*HAcqq0;8i?eQRl(jMA+K}CHXzCTncWO* zbuxJ6T&N)xYCjB8skktt;+9hAJaC;TzhbyY1~P8EG?DqQ+p69J=y&PL97-B;9=?Sa z@A&&GvvAM0gM?vl{OTM|;mpz%f+%$fa?!CDcC$b)bGH_vx3v`B(gK9whejpT{aS@$ zf{&APw@2<*wj!7WW$@so45S5sY&l2G0L2l5Bi7j7-s-7aKz8IaaJ_vKyU7ML5t1?q zRdYWteFi%PRC|TfOON2JA#mmWKwP44C9fxAG|cZ+9052#6$p1^l~yr?XgTCgTraK| zQay-L0GQZu)3+2E1_A0rU=9GbxGZopf8_!v3R_1L?Cixe-R)t}hwBntSRiqwdLj?_ zmjFAg2{uhFuU0R-a==jKv|FHPeZ$RPNt%20*sO zbdayWvV}f7ft0!(8;S5tjz%E5b^s#(ItdnC<3IXKW3J{$a5qcYYp{heWj!SP@CRZy z(F5QE^F=_JqHu9z1~fi|owhYVDh(WAJ-H$i{cVpG%Fj;z*okZY&*u&Y5gSpC{+)Rr z(_m>Fkh98>cFLSBp=V!c2xd_Nv~emO{h3~PPlvc?w2cgUDR4NeUpXzrN9m01G{u9P~SJX^_TQ{O|;(McYD54_^jZ zKriZ-k=4+(eT@9+DR7?Mve6V&Mw9X1QJx< z#mQX>J+_5_zBClTw^KOS08SKJdKI9Pzj8I8N5rB8D=qaifJP0+b>0IJ^Hc=C4#$z;Hp{FNNbe1NY5Zn9-=Za(sx^;*@j_5$$6?CZpXSvf(J%L*VGM_q*Cb$wCC{+F6 z1a^?D-oF_F2PB~d*!w3lNi9(vfbBgS!IxG?P(oybB_Ge}*I<&Sc|cym?Qs_JjX z7)c;Tty%~0`Gj>9Xc=??w6ePZeTTr9O|Z#cbvEcmd>Pn@C_UcA!RshBVD(f6`1@kU zSZ6=-eG8jjUHtbdcM!4d)`hUIb1l z4KV0s8+IJz#jf>`Hu@h-w8RDM=tr<>kxwA`5TrB* zZ64!*a*=$P(oNngZ04dl&C=7LT!a`VgbVC-togN8vbny;KPz89!a7l&nf*&+Iptx2 zs)k+>)jqRiVBN52W=f+)<0#agUL$gk;~B&hm|E5eE0g0!v#<7N=bKa9AJh|ObNrMY zW|vMsK6deZO48iMZ8;yWynTkX>sB4Ygf@FOXZU$qV_v?w;zfX?d{3iY>{U?Gfpj+; zsPfIBjurBXF6!m4GwWOIoH_)TJSwwt^H(Nhj&Gg$PGBBP@reJ(f3|I5bJB|Bq^KpV zk*wL<4(~cJ;*X-M!&wYa;L21sLHv@A!4mZ2aqvGLlq&ey5w&z~86sY*_m z`+hR2TG(`GI2oeZPXW^T@nw*9;UD^137Jc9=iPzK=aU>|*_YEy9Zux>In<>puGgN- z@^^KX2Kwm+3R$M=Q>J4TR?FuZ_-y7Hp2@KNJ^2OkZ&Tqu$P$>+?4Qz`trWJ>`jOh! zmX$e{b3J}MYqg-&#}WcO(qFfb9w|0F4J@xW5A|;MdKMUxqfhuaa%wMY-j?P2-+euP zkZHditAMN%1RPap3-W2myjyUk%U^I}2l?Ol&H;>W*L+&kI9zr|}IKRe~Qzon}|Y7#F2l zB&i2aK8XkV%BGhLv~=g>0SAOo&>7e*8T9CZZg~h9kzYhJNF#xqn3R{vsvCEaj)-I% z@=334bkxZA=XMK$_7;PiHvFY=gg)||SYuU)3n%u6snUW)ADU&F3n7d>LeTvZ#dz zGDpshTlR|xA?9Wtu(i;lyzW_Rj9A?sI|xAexiJSbM~~)Ga*vtEm!j@9@9XAyIVErW z(`DhaCC=|ww-UiZ`*!?|Zd3C|G3|}QW`n<#FQCreUWp#(hPNUTG^ouc9HY{%`Z|<} zxG(1MNx9k7vwjX^4JvDvX)?962;Sx%|AWtW+7kAK(!$P(YkZP8*Ve|RKg9G%y2ZjZ zE38oxyRUUDz`u_WNgrl%dR~LF%Q1)~6P1+&EE!NYhBdbE06BnBEoMGH#~G6T;-8{3 zItA?axy^eF+g^X^b$#cU8Zqx(#Pbi=>OLP{%0lVu9Deu}krp^*go(^ikMbO0?>>ay zXAt$I8NbNv(uvDHj5BWRl%__LI(tcZ=UzjWx3y3h7Eh2%M=hp=SjsKbhC$Lur*n+t+v=n`4J^6+@QvHB@ZtW|mz zHzFSEmFj!p##k^#H5#kpb^^t3*()!hMp?ITyUh(S^aQBU9ZC0cv8J%~ResSM^YW1s<9SvAruI`@=Zh4V_&!002eejDX zT$7P^`jT8cQa$Qk_EEyG-#5sjHJcAQ_j--_2hj*|>B;x+Z;gJw?Ri=EN!;cKt*GGV zw39jD&e~_zA=Z4ocIq{%))$MY6#~VG*VMjZpNi(tZ0b zcXi0!?pZfP_lQ%>o1Vuzg}RU5mZg2QZQl>VQz`DhRhA@Kj4L;9T*;ee6q{gF2 zW&F^o`6!F{(el*Iud^vX(?w({m(LDuHoxp894gr|k@Ne!?49eCnRiSCkbt-?y_Nz9}D~oLJ6&Ruvo}4yvxSWE zaeAqI{HJ{>SbfBx!8pGFU!#6kkVjI?${y;E>ugXve~^707_g`X?v+tW58i7$qP-RV`{l@`>A7TC5QJPckz52ImjbvuS8icMGy4_wZ;NpP=Wyic-!aw?F-5l!>d67 zze5IM^Gjo8kjHp>BVX-5x+^IgKoED!1O+u?xIxH}K*@gTy^8(y{vkOZudcExG^tGFFG+PrBpQI$@aIyyi-_1!}^cpZ@t~L@07>*@1@9G8dAY21J|gS ztu95#<4`kmthYHXj1RTo#Ac0el{M)Dm77-T-ZPjZHJ_z2;jg zqhwMcau&tf{aJ+mlE-gL7x;-x;B9YL&%pGjfHVA7tn#$_L4mU=$P6Nljd{;vR!Y7% z`CA78laSOsnnA5^;;U*dh)Dnw&ozx7Y2;_>{7dGzz+4NL<5%C!Z@lkPv6o8e^_&-V zyuRwxE|V>%HZ$kG{Z@gkUf_+)n^dc|g|m>~#`Ug)yo`vCgTFLx#_{tI@{l2;#iC@G zaY-n+uV&=l$TY781<9W_1v=A*48y(-9p*nBgueX}LI=fCRGug7- z9P1?Q3P8g&8x;C@D{|qz@_tr+an5=&-b~b{Fv>UM?QYK}+;CL7-tb5!-VMw@wLh17 z+2&|ZLZdnD>hap4Pum~W*B`As9_e_c@$5pI=@=kA@i!gj<&_5diLC%vx==i#nsxHG zUA`tIo^dM}$;+epT3P`T^!EK%BnYJbKS|K_Ur6w+-hZ`nXNfL%@^*Syb~QmuWjHGz z#J|h%Gk@ItpHS2kK+$0DTUmB9fBYoBX49g_Cw+g`Y`^YOcVTJrRRo1m zABn>+kw&3K*65&O(wIZ@5WA2MhEfOjOzj<@M5@jIYPF-ytD`U7mU)$G_Bos$KX_zx zaA3w`{e#)cUm9i~SwARxws*MI7dF)WIaK1i`QgVc-f!Z;ldB;GB&w_f4G7Fh(_xdt4!f>iNM25Tp7*XBMGlXN!><979M*fyiNaUJSND^G1+%t6nSLA#eHDl?p5T=8+X$+~z-3cF zY&4YLLSmuD9dZgE58!EZd<j%mSiJFq96xBufF; z^_p<1w3G*diZNCjfp*X0F%|NV2sW++XxB=P?}R=F)ySE{2XJ{3bsUj~3LZ1yjCp^A zG4LY-IRaGtzXEDpgo6lud8a{ZU!H0X5O4Z@f*89naMD+V+dYgZ9mFuvi~@UKYkp0s zY~GXO70Ne{8c@6UOd9}X8 zn)0=gxt-bB>q_``5SV8j1Iym?NtfM(j60?7l_?*=G;rjcPeWiqc6NPham}%g^>)yd zyRYv=-@hL{|J^(1SNmS=*>lPe#S;y#nDYnoegYr}+@CW55~u)&Vi<56a}5OQ5uY(X z6GBwl?a=5{gk#Hm5Qtxu*r&-2na zyyLn2;3*A{ulBxWZCST>ZQVMTW$E`5T~1v@Uta$LwAXX`s2oJ*Si!&@_>@ETBcF34 z_22|#f{b}WM*q#77}5s^QQRoS&3H?#PHEWWIa%zVSi# zrER~P#xL9)azbzSVw8chf%Wy*{eTd$Ad+5A$*1zZv4NieX>Fj#s-r%R_?PAZsN|P4 z@Kt!m@Q$4K^d;X$UChq3Z7whrye{u`O@8$%;$l)n(ueD(G%JnFP(^$4f8#!Viy}P3 zJnb&V=rU1Dn1lfAW={5zmF-#=L=_G{MC^}^f$y?B^OHl_L0j7UsOyLnO6of5Y^$7A zBMX`aY*L&;T%3|pn;v)@0;$!^q zo4~XxXt|2;-g383bSXk@WHTD=&0Ay3J*9%vZb)jgV0(r>(Q`bheh@HkWV8N3$~e;2 zWET{yXMg9-n@|Jmh?k6{Xx%&Wt58(MOccPI#gY#on&S*>fL0o2a-h4KFbBWyD?GeL zGuxb`aD|lv>%tIwgO~>Vq-_U%;T;VY8F@FT?WZNp&^%?PmtQ7uo#+ZWbm{*D@qz6Prx6riXm<^uQN0d2+_|zmy+#4mwU8PG zs}T#}PtsEuG_=?V@G5q0UQG}+^ep73GNX>GPLKOFK5hT7;J^dV7>^D?aq{hlCFmOc z|D%{eCdg+ifeY9m!uLTNE;p}HKN8=?_p{WGanB4gkf)qR=YD96fjmYXT22()7jBX z{Dl6?@zJTBFo+8FgUNH4Zv+hsPPU#13!=WV7(4)#MRYiq4nXC@iD49rCn2wU(Q_-++cnII;W)9z51N^12}ikM*U7Y%$Cw=&H1hDrD1x^vzOO8r3VjczGImhWx*a@_j3x@0?@ zVta6IS<=3$Q1p54Ww1%Hv(P>y3woSh0w!luh6AiXLPNJ~&%xuh2JCQmh5cibwkXdC2 z=L;lbc6(#QC6Hn2Y;=koFv(R9$P@=((K-u(v6B-aE4v`5C6%MNiAO@o9Mm2Y{O>L^ zWg>j{|2Qs!@!`J?#WeBCA(fw&Borib_6h(Au4s}*;$>?_)lB)eqaZ+N2LV&=_kov| z`ap97m*oqdQc#``5}Y~Ss${Z@l2liq`c?nm!IJ+ZSW?*sh=8OvS8LFdO}F;^Q9xB?{N2x2kT(imvLf)SHxa=fk#DC1#J7 z*j{)>Mi~aOwfOFUW<{bz#!I#_Dl^h z_r_RNn3UMMN$Nvk3Z7Werc^!Q^_JZ#Ix| zD*cKpJxt!^NvoKbHjeYN@Vp0(c*AR+7i@k?VMuI7$E=1xX0y6s)Aj9F`%%5ig2@S-`p+^Dlu}>( zrE$X$wJn%`QA#+E4F-of1=%ahDB=2D<18w$`J+@(1=g-Z>aK=Mt>$K64(-=>*)pk? zk8sh;GIxtQ`vZIIXCQ=}KfV|}Gx9~B&b|W_=5r{XycT-FIR%a)JsP3^Z4cgyrzp6<(R@9)6*#a4JFRw( zbH2}vlp~aSqYJW+ffq-NbqtjTX*CCVfsMHuB>^$58H*h3ye@3elvjE0PriSv9|Ls} zmUH2mayp!!mwDBPQOtga&J4MjXRc}7biE}@tsIIkoX77pWBJ8bm-XIp{Ybqd<<^)S z5j5K5Shg5CG6x;MRiSqVl)(GZvye1*O(-$;?= zLkv|zCgc!ksQ%GNteO~LCePW%RZoT8I7*Poyf4tZPSZ)J6A8tg!^=xMhlux}dB~=3 zbW!Dg$wYWFeaiFB)6AFKuTIL){Saw;FQ4T(4KLNzcN5dBAd)qe1=~tPJQ%zR{U&0*z$oog%k|hojknn zJkT0J&a40V@zHLqFUD?dWOniJrVc+~Z>e%X3(MAb3&=6{29nWSbefK1Oxp6*Tq`Qe)Wi1D%@gPTzbsLehro{&y^?Y! zU@zb_D(_W5!gV}1(ie{rc_=z8=*H6_k8Gy?>wpeZdLV|{q952ek{IB^@LuGA-=uC4 z*azmY7m6wq;}Gqf3=0lLcS%SSfy%Z7G{`bOs}nRQr?TBX*v= zaP2|HKd|;Q9I4zwxFq-5S3d}v#R(~`b9rK37-#A4>ySp zhr~DW^L00XK*`TK&4c!&Zk6}k#P;j63s8aM$%(Ue7BlZzB*G7f(R!uLVx^^=FscWg z2E(_PR8>CsBBGClk8HCj9>H}s`I3|eTF3Nhtn4cWI~yB^_WfuZm8X5(b3O$zlD$7s zYlU8}%WU|I|E>VwEdowDr%?i!19_-3;B=u7NEZY9J6|6-=zp^0p7$f~gMCD4qrooR z$oZo7v=}fAvC1k+m75s(A!Z+g5xvcHJtoUoKwO3F1)%pH0`zP*a9xm86+{}RhK35W zs_pW2R7iYb$`1?5e)P*_bq9GZ&qnnXOZGH^hVo`+vcV5#M~B=M_(GvN->8zU?=RLV zWo3IVKx%%RoPKuRx{VLi2pxBS;e@9`@l}kECmXA@+DlJD1Yt{);H%|Q9}mzwQ_8UR zUDeP+*6CUiF}9u0h-j)pK@R^YMjeBOKEsi5;dkrvPOdg4OYwSl##% zBuw$LN`J7ER2Cj#Zu};Hkvmh&E_biWm%8-CT&9>5aHNCT-3<$bDfynk2KlCGIyRf1 z)FNcohVKpwmSKZ!-|BUTN_0_AkyemNz!OEvhdq|2a8kRI&$G6pu97C`TUraNKz9#t5k`E%6;Aavz3Y6G%OE5?Vpf z6%Y+Q#fj#Xk)!nc{78O&R@{O@KJU6gW~S7$A};O({Mm16GqI&I_+}IT;6hLS374PM zs}f%_=Kc1xeD(D%3@Y^rpwE8>O$|5#3>Z9B51V~uEE#;wcAyfheW~s`BaJ8jm4Kc7 zJ|mV*OZBE%Xi+?tZ`nG-nb|CFy_o?ax2ONu6%1O-4AGouyLntGw}m||v3Z5(-o z1JIafp1>7)U2u=!6TohA52kI&klx`pn}1n^JKffg44R*cO2wbEEAM*#5)091O+oxP z+X0LPC{BKiI66hd4UJ1}v1nAqG7$@3KdP5bczw%F*X$LpfW1mgcu$HJ5uM%CBdmVQ zUgC$0CwS_VHK+eI*sd3lho6$-1z@^5R2bAOVm<}WD`|{%>XxbpnhksO_0#+`5*iwg zJnb{!hZjLw11)hM{Koe)n)P|B|9tm6@<5r+(eR!tuS2X+V}iwu#A^nvgtLT%2XT#( zImxBx{K&=OATDtQrZfu#@nub=>D1c%uyY={-sN{1RK@P+s5cQ}UCzR&gK>%9kK-~{ zEuCF{Gzv4IJK(LIh%P9gd)~HHu2uitqcGAARHN>4w0dJA=jbid_Qe4QkzTaUG>4G#)Bq|7qm<--@ewO`QfOb*Fp(CXrLIMK`EaP*dbndXW)z&3!FSll zshmn&_nwgxUCc83aU{~5^}+hnk@410H+P*E8-Z60IH4^{-kWw>HZ{yQNy*wU7}1n} z`p(1YXBK)MU0v}ZCa#5xx{D;U<+%W22kFV!B?{w_*8zsvB2f+^0d7QULX(Pk-EAcbu{~ii-@JF*J+P8G|^i&tRy$8KI2yK-D+S^c&}JTiAXM5`Cx3 z;uXaPokWSWLI0k$yBMB2(6n{$H{szL^1eN%CifT}T^_c(>MJ(d0w?%ZgESq&uY%eK zKEgji1#sb5jLO8?X{2F1L!pO6b87I64w`bBez~fvU|yD$Djr$2YUWD#uM_IJ^KVhY z174+W;}P#yY(406G8h~CmH9w5Yn*w&x3usuJD+fAU2m)TxAS{Pk`RZMTRDZz{-6m! zo|)f%FY`=a>r)xY>2EjpyxB8vlV!g;97138k@ zNb>wDVns|hfs236+2UuWysX$#V*m;j{JZteNNoV5Vb0`>k9-APj4d)gv8sneiOu?Y z=Xy9{epA1cT+m-Y4om)W;y!uu+>8_3e`1Fgh}Tu_L9+F_4Bfd)3o#(^@iv$m3(S!X0)|Y|4PDN&Ee*3QY>lk}AyU*W9X}>TkpM%;QM=1IylT;#*T4znc3BU8cWx zc1`$0oqON@YS~0a+77;;8+SuW7#)^x7|y&-xl;jOLhQ(uGUosX`Kfw3m_`#}L8#Kl z^*}bhmUWHOK6#o4(cb&dcl6Ub=>F+?nW!R(y1{IiySdKmB=^*2OlbB9h8bL-O`sT{ zOkr_^Z8cJl)(HWE@o4|m2hS2s}nDf zU0+_Z>7E!J@)tpV@-p#TZ10lJM1q)bnY1C zeBG9R-7T%iS_%Me6k~H#T^Z0jJ{ZEqZto-kJf<=X26P)qt%&2nZ-=3wRYGM=eCYF4qPPV-2N8>H5sJahG?KFE{+PP zK~Y?p*{82~WKnF}OyK9Zd=z?Z8UKyoovoA$M@XvrY306Zukml?U_@2;cRdvY{{0_b z8;O?y=)od&;|duu*8+RBHrj%Rh2bILt#bpNUR-}`4q-NFit(%qJO2p1{VV}x^pBsh zQVMR5HCkpkYSafjH{PJZ6@8+p$5kK)2hAl%>#MqSI}kEIKP#3nqW{Knv25iPU&?Wv zu=+7PW_WG*+wd~JQsw7C5xJTNV{$IJuVbtJ+BF}?KBE?JAHaE^PqGOyzi=oW zF=q)&v7jr}KeUbV<(EcR)$mHtB#$I%7yv_GGcU`7!QAt8o%+2Qs%vFz#A2+}6J%Wc zctHrH%&aa*-UV z2ZD3r+vK$9*XUDQ`5j`(d=!Xl=kp!m7evO@4M#GOO#!$~!X&eE|E`W^bK`6%hrNLGMBaZo$@E_DL{`pTl#|w zsqr&epc}7WPs2R_%+9a6@gJflz2MvGeXX-z=9@uUHm3&lr0m26L7zh`FZ*7W%#d5b zHGaP|Yy-}vDyB$CUDBccz|qW6^G#VR`%{n97l}wQ*Y0n>Q_Zin=S2uM>xcB`Y0j)Z zXq)5O|NKmH^}}1sv`LtQL8p;C{F3lY&49}-K>&P^?Aqdtk_(9@<#& zj#P8qJ|nJ#>Sy?YBU>4YIvVt+pbA_*d^{{wZR}j;5N=1caj~hTcx+9e>fd%G9HVWeox0x} z%?X`T$3&klkrMsLuENTiV|k`x*Rk}kuM(K)0t;T_{M_}&JIoE)`rs2j+6x{{d|R-HcZ5bO*iJjJB0`POSi&&RK843;RBnULic3pT}siqh10a z?o}zTp28j&I&`REnx{dO-P(*jyL1koEY@5*5VqC}HD~QULF?8Hwm`!SQn#ig)Da#} zDD+)nP4qg2pS?Ilw!ew+065sQfBfT4P;Z$`xZQT3MMz$5;#2*PvFeV` zB{SBa)I5%Ytt#NT{42pHsb0<--G$7ZG*aVaEt-*D)<=j^TUE!Jug+hSQO9R2&&p$F zvAx{vIpkc|tMb&DOEa&YcD#DD%+|z2XWr%~YlU-Xy|lrQY#kVkvJe^q-rlX8Qg!q> zs1&(6+S%T#zKijgn?EdO>-v&WcXo&wnkyYzz@rQJcBv}=Hl1tDjUwiEVY8{?r9t3B z#c0!?CxXjF1!)CW=iX*q9m?D1Qh8)!!WR9CM^C$qH=+l!TQi&3ew1j*iRL&<$&$W4 z_AB|VJmtZ*mFFmg5PS1H^ULRCd#PDwD^CYlH`}gzFbL@RVviJph7Kn_9h&jAy5aGY z1I9&@fBq792J@uA8$R!C{)ES7$g(VH|J^_63v{mRy+RcnSZgKKbGS9Gvw9Xt2y!U4AKa5OBkG~sicR+8H4Hml&HU>2`Env!- zF1)S(5GarlMPv-%=ncoRz2ja#=I5p<&iHFFgWUb1FUv(%&hGZKTW@c;7qQp8N}T1i z`u4Gs>HE8$IM`YM#rj4D?4V7E8gZi!KjHQ`NsPOIe_H2Rfgh!;^;!Q}2jj%6`aBPJ zXDPcyB)IJ_3R^2KBq`( zfo+%z{7@b`w8^+ffu2b7Ssbd>d9{~;Ir~f&bF-Ob7nXg~)pMBZCe3 zrMR1|kJY8oE!SIeN9Js>rnThXX1(92zk)N#z$&n3^08yWf$5J7w#?s@5#fymZ|4A2 zU)*BHK<4(t2|-7PDDgS4)^SI(%VqK#c1FiWbZJZ8du?z(68B18B{6opuU_IS@=j2w^9FjKJI>D2PnnySUF|xlMmHDt7`Ti|4~)+$LxiujySbv z*ch1$>V7*FRG2gXg$A0`l4qG&*^X<;`h=gv&Ti{^D=B$34F*x4{10yQerCZC@K;Vc z>O9JCO_^8RH+{nNJK|vi` z7U4t@Z;R+I5vAfvwkJ782D^AnKm1E0qG8ND=uG^r;$bjzBF1aoFmhJ|O2se_S=$em|8swiU%@QtV-%m zs>OgY({4epP;sDGP|8>dIA+ro->DU?eB&-;wEvL9%EWABoS*MtpTXM3NR*Wr1P1CV z1?or9QN(qmj6ugpn-s@e?>a+HPw|c1ABctreq#gEX_E++8=*3C`3Uc=H1w#);V8Js z@@PO&zemq^KTFLUJ!X5Gn%?`dzMDMAQajma$&kvDcA4gRRf@6E;m5BkYMwt`J^vrG zmq%a-dNICSOF^ghO5((o?Gi#~($4{%-U1fmsK?AF-yQRrlL|nKdvGTP-S4S&zJWSZ zzX)2qV?wVMKN-BS>Q(fCM(5~g=emToRb_b0?tDMQ><<1J2f#p(CA3*x^vOKvf3Wwa zQB7svwj&bj&_v!zwYLuqVIeYK5=bCG-xuW|~ z<=t;<1Mv86L8rJ!5Q6Mf8zQ{KQSmuwX&P)CAQ53%EJlH`(J)hJ%?^ol5OkR)TkWw%bQmus@e^%Wt3N@OQj2y@QpRLmeg(UFsd`8yg3Qv$t_C zeu(nvNVzonH?p7eQb4E-g*I#69W7?q16T(0CPtZ$DeLHVQ`iO~FFE#bDQTqJve>^rp_H)1*@YzZj;M7gK_oTy4 zD;B+P-o- wm8^!wt1ivwfNe~Q@#)oD`VP0eMFQ7INQ(}90SvTn%D^;*$)~lL zl-sW6%5A0&uCvX0W!TBK6=-$kD$txXR{?7l_|wyVsf9wzR)*Rcgz?DZ8bV};o_Pm- zkGEVl?JeZP`zZ_PdQ&OTXAnw(u9f+78*5KpWA(&%w=4tHe5rJB2YO0@Uf+9|x(N000YU~VV;11AwER`iHQiB!{NdeNKR@@5nl&WqwMgcl? z(=#5x#0e1rR)yxvtJ`%~W#7G@;~{Z&^XU6l7CsiV$s_9M9`BGdS#sJLo{4S<=4iO{<=E^&h{6T6}WJW@@Z)a3yyYgd40`V3x#UCHwwIs}k zOLOmRKb1i1xAaMhioqmyec3qqta)3N>*fZgz3QSP0s6St9tUJMuPzwD)JLz+{M1tP z@++8c@VeLx&0{LMMDZI+${ULSlni3guh86&`Ap-kfc9ltx@4Chsz2qoj(Ek!cNuYU_oH4O zjU$BrdE$WzOP&Cy>5}CY0!6eKhM=8f4~dgHRZQ~+pXuA`hOTzY%rd`y`aj<2LG8GC zK}Cxc3v`Q!PEw|WiJiJ7#lWjCY*a_d-Ckh7is!M6yw9>BN8-CxR(Jqz~^vdEu z)`dz!px+=zUZfq*%rty|{p7r?Q@efeMM)W7_v&x#LE;h>4=?{%AZom*mEF3Ow5ZO-_l(Q(qj z_D$FIp17^cvawoZh1EuH9u1#V75EX8&iTzqsOqF>%Ohl|JUvd=GR7LZ*|gUFsmvc8 z?I9)EJtMC&Tj~^_%FmCcOT4<%+gIxG-3tCr;g8qYnCSPtNnPS#A2aLJ3nK)|zKsCW zRbKp3Ba;@xHkhh0F4cZQ|8-Zef$T0A`>{7EmPbmxaLzo%Ghm`PUE>EfLau#7&)YSx zNZq?nAipC}w!}VpU)|t!86He}^6%eETt<;!O$ST=F95NuaPlIED)iw1GJj8)P)ng9 zuUF+fqy{Jk`<ThV>aPIYSG(j57*`PW{U zwB*q;XUFi&HGjUp|EZa4q~1`q{qLwlr#+GFLC;V84E5#%>(GnPYo=rx%AP0CxCOlt zPb3T_+%PSpM9EM*t(l`}wESQHMK9bQ+9*7wr%S`{ib80eZu?ZE*&Rc8`5Q&k{QE%Z z&rqxSV*&J*^JFd1ocZHp)o>?fLVTsOdypgJ6bLF4Z>7#H&`*qPmZCvQWZzOM^JXe& zFxiXoRo0ye(zPu!;0U&XKUj3^&ucF%TJnhbvlD&HHLH=Q_cT(s|5|x})5?ojB)+RF z9+)cfF~i2t)C#*Xu;W(n44NwPkJKerGL~a{e_#sKfwB z+lo1tj^0#)?+p?I&^{w_&IKGrm`E;57HJg<^q@TXjsnYBgU*?iu-lD2v@Cc}K)P0LK_6m9hbNna0 zjpdrD`SBI>7KsU zv|?Mpn~mIi>)MQRnMeqB))D5ym-Hlxc0>b&s-g9JS7szPqs@cI>2LX&ab+Geu6VxN zm%O3QA|f~Jr=H0AapoJ2-kpv;r+0`h2J2^Ux)`3nd)5D%s+m)2!(`_JbV^V|PZShO z>%isw31w9=cWFG)yFh<_MpYX4OdSoG_YB zMLSMiKKIW4zh3<9J=MYXX3IJ$M(7CHX+OQ>=4CjPr5On9`-yfxx>uZ?D@x^U&K#{H zoh%Ke&mlAL>XBWTb(p`|8~)~ZFMdB2n)=j{O=lHGj>D0hKw4G z*DyiS=1U5nDCU5{g&?0brFTo+*df~oyPIOWa^0P?S zZ0&NhXQM~+3-3mF612`;RK=#TA*N`F z^i3y4vnc%o9W_DDoe*W+AFK-`m+-FY%U*BIY~;O?I*{${T%@97Bm+_LJ` z#r;0!FaG*39?N%!$N{Vus*W$knwQ|7Bo-IRe`jfm=L5XV7iEEUJsmeAsb3_37WgwL zG~~#Ejwx4=rbS`5-G)sY3&1-UBJYfK%Gg5;KdQG8hQuX=6pTY~V$*b-SFx? zPtSl++s7}YWf=dtWPdIU_D>7Y<*hS)8G>Ng-tA!I;~?s2kJ;Rj@$NS=vr%_3_QnH@}S9E&jTBM7wHc%c_v#Vx#x(mUSGxk@s*x<+?{ZO;smRs}d`9#)#I+ z4C~!ElWidZ@!uEPRr2dzkJrVqWfsY;?1=+~+lp{`W=>Z;cnj}$X4H~mn7t!Ans0tm zG}_lVSe?e|?LQPZ&$C507{p;mjSd{hY0(a{%cNk~$u;!S^c2?w@CaWQ@gNZ~zu$ zvm%VlR#88OiGo(o)bs%Wh;HJ}t>t}6!4`_WeRvj3&7rQ447Tnn8tQ;+Rxl-V+liiY zWz)5*pIEP7os)5}>3?FOz!NyZC(ThdZoMU7b=GJ-2_8e;{=xTCN=sOYEnly@+Qk?g z$jeGd&)b{Y(>>F*TbXC|yc$?P+?>CUPPjDOmzMeIV^pI3#U$@V2FN>~vHxExF#p~B z@_*O-Qvcs|pZ{as=XX_c8nO0#eVPm`XVpP3-xx#AVITz3YfDYY$Y0R|^=@U<1aoa> zZejH2R`9!dd<;Kz#?+k!Z&I@O{Ficdc_yK4=HQsYKgQ7)U*?>>vE%{#?a&&}ZBI>+ zobd$t6?}@D|4S_fs^$;2z)6~FigWylyoTi0HqHyv_|be#BG+%Jypf$2th?H*=N;el&3g1Z;2WsTm}jZ-JvjE{ zWY}vn&MhcaG|82wN_uz;b;>_|1GN0`2V&gr2`T`OUK_0?sn`4e2>r|T8zaz1^-SJO zskLLY5O|f2fcB1Aofpm`(;OUW)4zLzLA#)#ve+D61|WU}AWMOnX}CWlUuekeD;&i?g5?zR@$kf#_{83{Mb=2M$dRpugS}JmVf^ z1@hhcHEs}7CC18UD89J_qcjn3;R0C#8_!3{ccLMAi4r)ohNN;r?rE{5BnDoSsv@0j zLRqbqSi!v~ zU%Io#<*d`H@ZeQgB%Nr0d6>a$_Ay1jcV5Y zl&$W7t+Cm&^ou2586Wq^S+62`{`TG^einDIN?H!m!4{=1EBxq-U@}%!v!jz zi_)Z*_FMByiRSXH_i^H&op(aQ4|JA}DeR^!k-M7??WGLZL9aB*67NlZkbGAV(I`ef z?G_-3eyKHFpU8Tq>zx^lJNHX1@DN+?UaQGLV@4yM4Gf--HiSHhnBe?er=nzD<6fbv zpF@Tm>2Y(>T4^JD68^cHgITlp*jEOfGW>NKC20C07xg-opidJxGuGp!XPb|;LN|?} z2M5>hx@%xZU#jwoX@C%Agy0!RPDmAP2H2(|L9s_x3*W0KEB6Ida&o4^4uqb=L;bdQ ziYGDUb@N+if8g?LRsN)7-bqQYBWgHaR!Pc&eLd;WR}GMP9PrJIu$Tou()r5_BUr6d z{s>6*^OzohDf^m|MMpohtdP^9w>>Ipe7m;FsE=p`fG!-ACdLty0tGKGqLkJ@Ivu2k0RHt<$Kx-)-$SSQCq6wxI5%5LqtL z8aklJu-pP|FP~UC$xy~|Zo9RKo&}_hKk1@yFjEzi+z&s~J$D+pHq zn7gQtu{PguGMWpf0zWwGF*3)Tee*y}#UKJiM`0+IqgcNa$a5))Av&Vt2-jtc8onUD zX5kB0^JjMJ#wgbYNX`fDM{%^o9>k6xtI>FB-|`i|-)rgb_j;`*+ZS+2c0d>dFP}B} z+Ao@SK&HiEr#CP-xE@ZoLvDP&Tt^mtbvfI>cVWJo-y9ZqpAo&%`Gm6L!4IRqo7Z8% zvkb#TP%PF^f(70H6a<{=6N>5;T4EP~Yp+WvGh}?U#%5wk*GlHojyL(3hW-3~cnN;I zqVg^!SlM4G!-V>5-I!)O8t zqz!?;3FN46?7OUjpcK>-%*NatbylJafiDS|_I-#V`$XRCL(SWcB>Vd{Kn3XgHB4ih z=&|g);ytFLdc`adNC`u?G=UaU9}^xaB+gyHb-Ltxy~XNl7KcsA#jO1U3Q=+^=VAW! z5ty>isOoz&UjoL3=N74%vkLxRkt2+T%Ha5UCZB5eYo8&Jo6J}eq;_zIkE zf2rMqzSOYXA_ehO7839=5x$}V44|ZL&T)C8-F)c74-ff+ym?EJH|-dcxsg_2YCL;V z4=IfFlHr$_ddAFg+C`w7#kxVaFpcKd#2Qx;#yNa~dp zbhuR8Q8N2+>CH#2J|eqqAH(S9ZoN%udQ#Xd6#UHiquetm!~5x*~7+X)kTtYGVPCO zFqy-Fa$+ARS|wW>{st_JDN;Kv#XgPdkb6Q`<*R71JEK53E3eR09s}1D5$dZWfzM1T zfJI>0zOQ9fzk0) zs?Lh{Y_v+XtF}N-vIex2%I;>}NZMZ$4iz%3PUW4!^II3I{yMny_`=j*YGGh;{{0S) zA`l9rM*0;u-6A=OoNkDNopMj4DX?-HhqFrzY&Cq7evFxBX{Tn_p3dAQ{C{C2Z{}d6 z;3~8oAF4MXcqhI&a)*r?Zi2VtBpV6ll1qVY*QWWtD9IqumVlT5aWP%?2kM;SCu&`i zn*LOrM4rcSj-ud~+RMsz)N;lPTKS#&ip`i_w4S4Dxg(|)tN=Y9-o|lAxt)iG@timV(X?Wxe1(=qY@}bH_rQMY8 znky8P-II+km`{N-^8GgLnt17?B-G#Rn6y6gukX!wcN|*tp)Xxkt@?lwIwEi+dT7?< z6*4IfwH@jRg1HiSbePFIBIU936b|y7wh%`~e1Kkc;y^3qyd=7Vfh?2L1N#@`-misg zRWu(3wG^0y#R8;(S!D@AUJ!<%!DUpy3BwFNRd66b3h<)`iv#n;^Vldhvri6O#*{rU zKZMh+R1!O7B;0kg=-+viI;kH%RVo7;=z9|MLZ>{LgBk~i?s}odyWkr6=-vWCM^$8A zJv84;L*g=#)6Twd$(lH0y9**+>0dk_wc?JV{BSY252(o%t!-H|C~5m|UbEzvT9UVL zyB=E6WC^fH-HFUzOdT}DCwyicUASH03(S=;Yxh3+6iDc{559K|H(oUhj7`Z(gBM;k zkTZoiRTKpe6=JzCdH{s9`8#DS!8<|>aob4r?H#V!i~??E0?5qY*)|AV^YbEK5(x_U zulDnFYc*7v5j-@puivI$kc#l|5cvYsbpcaN;9#YAxO|N}xECT6H72q(Pn4>vr5i&45MB2j{JfmXyLJoLnb^RVTY+Q8@Z^#>@v z1@;E;s-`!7w$V)Z)0)3l1d-9C4|7hXz+vV>1r-Q~TKRKzLV`UE=G0V?$m(E14r;eM(!1pQKL(&?J!m2oPr=>0%1y-33Wqe*9m~$UvF=pq>+D;!kp!Q)3(oH{CjCfDtjyiIdQaU+4+Vr0Jh4gPdTfg zVoVoB>|u$Kpbn{!LXf!aEYIRL(OGisBFO9{56>IfgvWe7not;I9v1C!Qd% ziTd36|8tMRv)~$y{l0aer4u{EWlZAuU%FOcB2QCzpGV(xyKwW#^@{Mtt2li9{YMmQ zXm`k?&D{u!V=@HcnNTc+jG`*QRerghLRH34%ka|^zsGN?VXB6bHLA6qaRi@Hk*Mz9 zP)3>FkO~x7bI{Kw7PH(U6cyrGAVws|e}iu7;1^2MKnnGbkHX8eAmaBECrcEuU{;rg z3`0ucaMnW|Rj9uK>x@E4u-4EGMhDU2@O4JF-;dEqn241;lEix{N8SP)Nx3Y>crK~D z@-O3B($dv*1dRU!eZLDY1ZfaB&Srot&ypVu_`<{AKE+k8iv-rL@-J`{4O>U&#b*{cQz1{LKW8OgOCy za>U;*dD*Zy6}S8ga-cHkjOP;J2h2|mP;#r1nZQZdlav7_r$w*d?C3NkktnyViYf=W zIwPtD{fMxk#*c0chb~%^DPPzQ@D15>wvzh$gg2vxw1gkPMGVl>JpenmqawZOP{%E} zKS1L!$OfAOZ-_aF`R;x&BNWB<2OG8#a~kYcy;nZ4oIkKQ{Qn8<85E3azz6V)00Ta- zinIT*j?DNQ)4LU_1)mxO_-C<{RW??dpcoRilFzxXw}O~Xh?o2kz-Nh<%i3|>cW78Q z{I2o8z)}1!h||$0GVgk*f;j1F;4ul%t|zRJNO1c+`#9`*8}~?0-rzQhR)~WyvVtE; z%3h`5<)4FIO}B2Ipk`yA%*7O=WB%^n9dc-nw)JIXP1Dpzm;+eQ?xSK=8iTpgSyBdv zbtM_9R~wy-wG|NO0#@ZOznD(Wi061 z3=ZY7ZYua>bj~nCxfEJ}j?bK-f+Y!z2heJq*|+FWv6oL7k@Ev&p_qK!yj#dVqdxbp z(FY`jSEx)%ij_7ghuoq#;8Z8@Z%kdm<9bs4_1?g7us2WdHW4GaIv|#HspIv&8U3FuIE;XzR+wGZZ38dKQoOP>9G{gJR>#c&N9aa?OZ94w+?ex&(PVc8^uba1 z*!Fybe)G=!&fO*Vc7o_zno5;LBVNXi+3n-pn z7CrC;fM5$iL&Ye{W@eK`x*G$%B?|)tsbh6_#?|u}Uwzw)n99GG16Oj$$5;oB8P@$;?IL5R!tdBo)2#r_j5w*@u?*#{useB&! zz#mg?R|ag$Pmw{nk<5>%HAH?TXGjF7ihp~60l+s>YCC2s=p;p| zu0)OBloUc|j{WzD4XgjFd2bE>O`QLqh;t^Y2m3v<3HCr47pC_P9UUqJDh2}X+9DyL zJ2+RE5IyhnFs4D`%7YtfA-!r}i_~JtoQ)s9U48lCa-`+!kfL|CDHo*_SQZ!Q&;QK05 zFuu9%1oiw>=E=`(1B84XbH(zvapxcI!tPqFk3f*e&<5z9TdJan5yz}Rg@v?G#wM5@ zi5U1f=IfX4jB4J#)*qSRw$~GNTD-pxYdm8oIA7q+kIrYwJD;wi6qGw$`V{4e-R$#J zr9-(CDVh&DU{SJzq)hlA!`QSPvxV%*hjT$e(;{M0qEzBmf3`SndL>{>*NR2cMMVb6 zr361yC<9ko`;&7ys&nOWVtA1b?3Nak`xc3X;UEk8w?r|6nN=auwqQ(ZDCcWEz>SYB z%2L9-=&6)qm!NZ!&n2tZ01%*TghAg^z_f#sI++y(uOmSry-J{9K?1V``0`=o*Rdtk zY1q~k)CIKqQBsP8q56;SFoGnG^aQ0;YXB`^9z&qu`xwWg;_5wV>?0| z3&eSrEnRNd#)RczD4ZL;C_Qugq_;=aba6n8wca1OW44F6qDQ8puf=!6wJu_|IbB)(;LWZM@)-l6J=3BfbHi&ptX$v4l7T>m{k z<6yip!r1kG>eA+u8(+PPIihNpJeYtUq&ksYWKUQq!AJP}H@t!=l))F2P?Xf6ArYOE z73^;yLirGqe!LlTqdaF4DsWyB_wJF^I_}K_mg@MGo6q)`@(8g&Na83%}fr6WR9;`CfmH><55p5}e>a(+*oJJp3gvxr(ynEc*sm-d_x zf@};fsIf|lFln7`v|Sdky(wc~{r0-L#&yW|Y`IPXnMu|XXeTp)QJXDogh;!sYA3-EPKcf4u*J9IU~SiOS|+&&kRk6<{vD~C1_d=wK<<> z+~%75jd$ph-!*yD@;0|%uE(S_*sQKy5oaA`i0rQX8NfKZrrUgjq}TC1dbfkHz`0T! zsM!YV&@heBGk~xB2i&^#=NNYvH4~n5QZK7x#hh}0>7XS_27N2oZ>oFa1WtMq82Y$p zz#f=NtzP0!yV!38&9<>EJu-mf;E8i`tEKq@7B516rwy3?2GMpX@GEmAUJ}+6=(a2{ zvpw7Vma@sQKl$l~m@9R><%Y-IC-hEiDRiC5?~Q zRgb>(E*2S9Rre2!M&g?w8wC!ET-#^2eJ5Ptv7$(OmG7B+lSxzxBGS9D7q zJ1KSQxs1m+k+!sn(vC*Gql5eVj>sX%mn^K}ndEi8uuPxGD4W#%Djwu?wwr|J7VWs~ zB%Y($IA$~x)OqwPTXXNef15`Z1qi;zs4n9hGOz&iZ%Y>_is&u`T50CksA)VaHK&kt z70=%ioSv_9+$(=Qapu67TVkgRzUQ=U2S;vr?bLi}Ua-D39Dh47?s=6rN zXu#UK6~c|OYRF9b({yT|qEsr?n)*F*H-ay;g#&)6EibwvJIxd2i#4DInh=uCniMHt zIK1p+2OcLDjA5f#l|wd%LZUDCmk;jp=F+b=LMUBtm$WzAZ~n|f;gOr)ZRi{0WwD#$ zhvmj;>`%*BU}lvcR8cTjj=rMNxuTZ#FDC#sEYBuJJ9*8;>*Uhh#otaUf#7$S|H)NX z-#b5zI-F#+>{C4zfi}WV!={5F^={4z&@v8u1s0X&1_$NzqkuUI>sVpF+2r>g!bPl| zhd5K?2I=5WN3O)3OoO6p-j$~aCiw%Q`z);9@%ssY4X4`i9$=l8Xc2g&$aV=pfzKwTu{E#U+F8N#I#hlMa zK(mpy@4w?46%!%dpDcs2@l7zH9V6`;o!@c_Z!3zhz!H^*d$sSGs2x zPZeiwu|Q~I+;058n7Y)yHX#IGrZAfoaqR$c(lsja6n3bx22d{v&Y3iGK~6JcE&VKD ztLu;k1Onwu$iqy%7yoReGx^8U7uh_sdb4W2hMU zj^L}^K+EUuyov2jS^7576#w)$RETE+Ko<_NUSKO1o;-FO0_i^THHCjvT=&=w-1>Fp!C` z6lI|0{dUk{u_k6PRf3b+b?K$T5ty$yOwrGCx(k$}=wtF3v&TC*R{(!ToJ6tYTrJ>W z4B}A{e3-IpFIDycJY53N%i&akWNycpWsh{uL9 zSoo9SiKW>-gYV>56T!Z8>9$(^{tZ%h84Lb>!9BwX(z{1H8M>C2pf#8$!K0zqE)uW@ zNJ$f!W8J$mQjbMa*?UYfT0$}e{-mK{0$USj9QvcxJAK=VdCAG)Y5CzvN8_xY-i&cT zc6$IwZ|i*+)in`QC}y9{ka9UG5UeK9-=nAXWEt4@1^-RE-rcAu_#jD`rs;sMV<<)${1Z4?9czl+jgAW|k`%c6(W0STD6Qrh%cF8748 zCk5)o;HY?h71Pd6Jc)5<0h5(Ea!g>;Cdqr`VGQJ61TDSeq@|~}4d0Bh)47Xixy3-={{_cfIV?YyG zU=)`y3k2SD`77T|M=Sdex4PW@iNu^%E)I0sybjP2T^KfD35`Lg4R29=wwW`2XvWzv zg7<1}4XY?Eq=jaN!|`8M&&)T8WXMsAx6Hqay>OypS+=wFiRs058MEIet5nWc7AQXM zbqypv<8!2^Z7OUdakNQS79%*UsL;WCz}(mUXy_GBBGw0w8MM#3rp=0DEDo<5_#oJM z>+1Ltrz6L#UG4R@qiz1k)Yes1vixN`Nk$Wx0gfV{yj!u42eNz|FRB)N(Ww&UK;1Oi z`TC&PggCRGpV=_687Ns(#yb-XuAK_WR}VgEYzc_LvUwF>El{XGe*>*gqf0J{<5?;{TP`TTm z_v(>1E5#qv8dW9nV$MCNRvnQ~O6sDc5^Zup#}^)Se6i}Ms5dUi4b*{n(%GN)LXzq? zZcQCq#m;F*7n!_daZMY)99j6~%tDjHci%pf23GAnfo!EScO?uFW*9rL2b`n#uorGE zY(251yF1w67U}#*W^7sCjO&~nbNyk^5gYT~ay~xIXlBM_x?KQWM#6vukzIM(Tz3xQ;w9WoFP0}H3(Wxk;MSIO7M}#_(qs(APa#^k{DGaWB!(; zZkNO_(XyDrqGKWTVkhPg@4{s2wIb@ZsU-h%4*f7`e8k8oNAKR9$_z{M?NwF=P4y|q zkX@L?i3Zi#=z%XnEF;K@oBv}3l_1TS;IJ93iJNk=6LKfR{!T-t_KjM zrB8bJB5*~QbB6-VUTy_D{tP@Z6nyMlK>5=1^-+v5Ury&9 zDpzLvo>RoSb~60c+^UcFUpa7%tXhxEKkN~ibP%~}GKqsj2)v*yB)cgB+VkX)c5%@! zHLeDEDwA35R}JiG} zqFky~@GX}UsEFO{zm@zxh^yz@BxI})`-L*Mg|_5(zT7>d*nZsBi;%PQ zPSW0uqv;<;`afPcZTN8B6NEBMMhkX;9rjCY8!FtwL8SGbAUWrol*L<2XZiNXZFKSl zMZ8cY3h?ivUEk_F#7Se_?elR(UAk-2g0Qq|$1BM<0et+=H9Z6Z_B@an-J7S_3dXQ3 zkfXVj%DNmG7|TeXlA(*y>AKHG+~QkYqpuvuqv<$IWtP3EXluh~j*dP0daFG<5%0FH z!RCO;-X>dh6D#yym91ikKHWm%)GXUn?}ifY@Zjc1Gh#UG1FeZ2AXUtc(X}efDslyy zS{;(_=%QNduxi9b|9-Sq;(ep`k5|$+aX&b_q`sJ4iJ-@p{Q)Rp37`H6CNs=2FA05Y zw$`Tm6dHS4oT}sB@&>`4cUVC@+r+Zf|zFO37 z5iFpje+FGlS;4fxanhV4ARL`Jokr#w+P;n2leBGf_!Ct-;a2GT33U1u(lgl`1-ON+ zuLc31=L?ddYRz}N;=~B{vw~5*hR9C#$4<^3^E%G!u4lVRnZb)~D9Jy(&xdClof+-C zG^*XYXK;VEDuQJ3&mi4Op%d6aSD}u~WkUI$)r?z1-xWA_X(6pn@UzFv4Pys5mEfg~ zE5r9LN-fwJtiHbZN=`$gWbkjVs2o4;NXy9R_qy-9SE<@qTcTxbMKkC%2V%4N*I;)B zcx60j{u|puk@{k^$|9myC2QK&HmSQg=ajPicK{}zUcOt^ zOV~b!2n+X8BXD(Uk_x$rs}>_4^uepAM@{Js<;{#;&2(0p=$GpH%hQ!56Xc)T-yclJ z-pr6QvL{!*Uc54|QdK*@YYLbTu(r&>GC}DlcrPgstSy)`_EUz*mgj(Oy+^Q!#X1v0 zrR_~FB$)UvnnNfXgDZX>p~P=$&&4i0dBWPR-g?K*(XrJxkSxHlL}d7%86{i=L$1#S zYH{4)X%)+AJ_Ik53v`r}IM@w095x{1mCHzEZM_C%378Y%!u|-qs5qE^(~Aj3vXmw0 z>=sm@VyQG*(9kbmZ2o)Db-2dQwa`-=(M_3~LQHpB+KyUGM}{SwAsLV97fNL?%y?3u z-<0Glyt)NB68?=|V#{pseE&=nodypD>*VcS5Y)4YJap}9_?Hhb zYyBzx$i7<(PsZJ|06`^1Qwn;xl&YpXW9VlEH?^{u-6U@c#$#fN&DkzLQ;!ZwQn;P< zzP@E_+#Iv@fQ#{xB3w*qV%VnEY3648`Wn03#&0!f^x-GSY5@8~c2t7&==@tbrLW$P zV;Pxdrr6~b=P($LaTs4k= z=9&&l%t4^^(gAg_g8K%AuyP^^j8YnJU%~7Pxzo7k%ujEDlKD(@K5f%_%0!yGj|=h* zGFqWH9RPex2W#qGi~4aDwr^N+(+gMYI9+<1o|Q@L)Gzv~tWS6~V-q4**8|pB0K6uQmJ9Z_|yKZ%>tZSLBUxaCFNuRNQ%gslBG}u=-y4qmZA6r|s&;IEca*z0K z1IO20mfk}7X(gMj*dlw_Sg`1qTHZ`efhGBTROfd>l&Rl&B3o+)GsaJ_IQ?Q}mwPii zm^JIDkw|Wo?SlmWc^ms5_HR2{tLmt7wFG-F`X1<~_<@PzRPw_TjVWVFYDY0W2$JW$ zn%JDu_xj(7$}vsF6~mmB4w>19Pg*UzDpZLpG7Uw8$im3+ zG7!MFPMW8_Pwlrft zc04gQDKnJgL6{zP2OHLAFFUBZ7nZXScGp3Jmx_d(zaw>_xuuj9vA)wXS$D8bY zK{y4*qFrmiE26|yrnN1nATZ9Twis!m{51Q`zt?smNk$7meVb8(P(7|T<~0ppNsTJP z(8TUl9U&!@k*g`Dg`ahe{ro;koVq#^A$q#;;!k;Y=7*DwJqs@O;ox5fFOJrK>)tg zA?=Q0PO~FtRdjjCNQ(tT3pVxRVu_~Lj%$@WY_ARQ!gYKikf)^*Suv zbgJXrywpplR8Z#+#%iedcrdY_D!Psv2+g%zpJ&v7a&DL<-A4%2^)^;P=d0MFKw4xPTjv2ftxFQSG5AzjRUOJz%(xD48a)7{` zG25M%QFHj5UI-i|O1=58j=k`#_cr$(7P(m}SNPJbo7Ri7$*9`;#AF0-dx|!kIqAFM4Nuqy5QB6 zIqCM^{Irv=e&Oi29onEkB6gz3d+(M>FMz0>Dq+^T`p9{IAHOQ&#-CO3{k}EiqUuqNWsA`lFqCkqj60UR}hPu+3Vn)vhNYT#w!YqYB+P}zP z3p@_?$BjW-`0!jMllL(seFWnq;s0v<@1p4cEQ;zwu~e(GcXfvNPS>R;$oohia)Kfs zww#B*Dd$We>*5opDB7D70s)c5&_w|Y@Q1rzt&nEiVHHCxW%6?>Yv~}*(y-zv-23SRysP8cNiMl{<3L7=@levABS-6yY%C*+5s#|2dryM_|%K;3)MkrqALS)w0;IoQH!-alje7HTHl=z~tK(lIG^X;ZK&L+ZoNKh;Z z@08tN$x(Z^>(uE#FROl-PBtaI8>YNaYG=`pDK2xM5!Acjb$*17V3wTrHUGw-vloA% zxTGtSMT91RAN#h_l|}h^fq%;jS3%~tYgRs8xkTm1PQQ*3VdcpoVl;K z%^+(k+l;HoNNzFAG1qbSD1@{XI9hhIG@6^ox*PA?B(pvx`}0Ffnlo}o7BTy`O$Gz+ zWN6bbwQ$NR^0BL4WA5W)R^2v1S4+R-lLfFQF}i9?ABT0_uBTl$BG7kV*re_I!eOJZ z&bCuGAHkafu)5`RkuZ*t5XXab#J5qNk>pIb4 z5YO1p0`#cl=QmcYCO3BGO+y2~%f{1gZA8`12hqqL@EcR4L$Pgj)PWpD2Bz1_b1)Ua z)i<#`=(cOTQa7ff7~NiaL-UJtLWGuc&o{I0(d{<&X)4NQNjR4b<;lI;K%n=3rTwzDTfBIDS&-P>Kp`4Z8loDVb1 zokkmrLj8`2pO2Thol(jb{dvjgpe6E>^}w`KGzyjVntTl0V@|JP%AvIHtc%j`eA4fnuG%dHGyl=6>YDK?FjLzQH_a11XWW z=ooz3L_xnT`vVgb&#VUG_a_DDg7aP%KR+ zkfmKaQ_}I{uio{g`J8&|aM=F+>2(j+Az>FW@)hKrv=P}38!rVidN9m~QT2sZNsTq6 zhz(ScF{gD}X5C;Bs0gJmBpG+3$D|lAr`1;RS`3wO?iKr()$uEV*=^J`2U@td^kaVJ z4|IhNEj?eu?G@u3aZ6_fw3L18?A*1po``BsYg~^*$%*oyMF_y5>Otd z5V%uw$-5yP+4TnSuaeZugs_veYXQ6d?3C-87Q*=c>m7XlAU1d7Ow%68GK&%#YT|lF zcww1bxazO^Qx8-p^Z;2K+CUvVq9~oAUL$&!GNTM=g*8|4<5XvF8fNDFusdU!?${z) ze&%QuI6R?*Xz%gbvXh&(qT6&%`t-gJGS{B7#B=kFPpa#no(ty3jKB^Q4f1A%kJM2Z zJ>UW=7dWjM^%QsuDSQk&r6aTnf|Bc|rJyt&O#CSK_k>76{8Sr1@|#`1gJMz!bgW5@@Kux%j06*_>_Tidh*Ly~aS%i>kE(;Wni0#p z6Wh^|<=q@P(TCSX6cn@aj7J`%y-5{5*q3$X{y~*olbQ^q#@oR{B8jW%G_4$H8mMp` zs)8fXN3dAN0Zi|1K;j|;xH*u#4c-kL&x@d~zZ*;{aDrzTaAH6d5elUsO&3S|0u3QZMLRLo; zW4o(m%qNjY(3UjwVMfBpS-(VW9!NR(_J`_G}@AqR*4@_!D!*d84E+PJ;w z{;0Y=6ds|j3k})eb3BLg=x}-wMcB+{6IyBlDOzG*;&#k;?GoT zD5In9CF;R|&#bRt@}FvCW4IdvByK<>spYA7z{l`z8RnxkJhq(knp;|(1*0ThT6y~R zf5okZK`?44h7YpeWMM$LN8~Fr&IJt|bpa$t<^<=#9>0vA;7(ZhlSpaj*VS-vE6~&n zJ=V?@3n9GyasLoct1X95RcwA1P_}Ssjoy*JP)I!DSndLCSkZ&W+Q9aC89lfNnWs}R z>!A$ajWH!SUz)}PEyH_W7!^(N=rhNC-yCJLm&h~EHJYhec>c}kq91+n2G8H7<3DGY zH=c6X+zlSFn|eP;3u$)HI0rV z1;?ae8ttko{Ol;5vx=Y`feXZaQCkwuy5JnrHi^ow6fJyKJ^Z zBcb{*^%-WloYe~j@hOq0^#sG2-MsF6^m$@R6*|U?uTyF!?2zgy^J9tn-@4H0m-`bo z@zy`TA+d0lM?LeC_-oBGk(7KC7KKC8+31l4hAVX04me^K>f6CF;I5U-c zCNfJY>ZXj;a0$W{cz&FK#Zt$kc)V{sy_TXI8h;lN9p{*gTr&E@_{7C$|AW2vjA|-< z`-M?d#+tD*iVzhQ6%iF7B0?;KsEAQ%DkUl)QlltANyt`Fu|Y%>M1-g)y|)NRA|itH z9w0#INDTx?Av=5Cdxv@c@AIB_oo{EY^X2(4Yu3yTd*9`%zpIt3B5gvAcq;(WEiCy* zfq4Oh&)>~YCf!{%w`~GkFdzQ5KRtJiyb#AN;47FnlR6B_#M{l_Z$6O4bHWeWI8UOM zGBnnzGMqfjE-)BaY1eYTBIu8igI6b#Mk=(qR=1E|`dG$(*OPkE#Yvx?KkJ|hjd+wK zHj4vqN^KE9+X+!7viZ<%LWrTX1z4PUgdXti=kIV#|0_?>7auJ_r^ z^Yh4K*Xb1nNd)kw;_0hOUQ3^~sNNGvCvi;N)sf;(_WfycO-IYjRRAnKk2GmB zGgaN>mloK6V#^aODjw^wz0Ao_#K!I(0Km>8L~Mo9H8@BgdZMZ_v6$lRb4^$~q$Yl^ zLZtQyQ!7WvxOsYO2#Il0gWX$G#+H74l!$$l^ohvc0!T7mPLhdvfR+%d9p5ugLV&vv z7t+$l&GhH&iU@WNrcC>xUzqH7i$t-leL0Jw+(&ZvFdWzO)V^U&#@M~f`8F1qZNDcX zbM?J)U`edlO)yop)V0`+(gA2`X8_$JYJvm`I=qb`xp#{Rh6EZGw&Xisf~lkHg(&Zo z5Z9?bc_1#BFm>t84A5=0DRJ~@{cwWO(fnoUPF=#q?`a2q)Rt(<^PAi!!H)AJ!xN^L zAZ(k8ieQtDZqMlrs|9Rts8mjIULc-4D$Qo zWC{Kh^>FJ6fBneOOmas@dm>CpyqUJ{-BK&75ct9Vuwp|4d8mCQ{~4o{C`pBDekTVC z9C`@F_^FUOzZYQKjJ9vkq_{nk9SGeN1$8wW&}Gtm(HFg(;Sy*`d&EUn7@YBlQQ0Xd z>AlwzjG7M7&_v<@qj)K}=7llHrPf%XH?_6F<3XEjx zAs~DTDOo#Tk|u#0e&P2xq`W&yDGa3;jta6W9P0m&`4KtCRy@up^e>!8RR1nkWq*) z^$c=_Xyi-JW2p*1j4jLJVlhHx>jB*E=JpUyw?DPZAgp)UNLgo1u(~Ku0-XGRb?6W`heLh5zc%}=fG_^WK0!^d}V228g9){>m5vY1i|}^B_=y1 zZelHb?spU}5LJJv&o3N|Sm`z~z23e@;2{Trr0b|!lEI0i-Gpz%Uhg{g28u0+(_Dp1 z#P`PeiLCvjA?Z?008D)Ho5r4^`m~Y#kf_r<{Ne7QpzfL_p} zV8+xt(2wNP2>;3XYs}_R&$lQ*smavsMRfV+p+`fLlBvK zciMAuCHf8~sK3`1&_B|yfx$pfIPePtZN|waC&+|vsx0!=DFf#_?tK+0RbVhszM_|b zN4tzkju|OI2Y9@0NZRq+<-teHPW$6_n@Onpe-CxJKA`u9*Vw**y4W)*LcDl6aR;Gc z4$WjruCB3s@u`hK!-iaBi?5%f;hB>leZ(;zQF*+WoF-8b22jK6k=+qw!pz2P>}^8u zQ>d%;+dGlM)1CBIIdQ%l;YC5KD2n|i?!d(yjczT`5)4EO7Z_yao5n+53PO(P<&>14 znNA^KBUON(b1knLCtBrK$lNToC0|KNr@@aN?^}HYHJyi#(_gZyY$P6JC3rhgLWOp# zMhg!1A)9ac{LmUjWrTAarTc-0-(*-T1DD=B@@MmfU8$c&+DfDHzvv0pC4tcb!O-Is zbvtiOYsnp_L#k%2Hp*Y2uH)^_?S^)d2GL3Rkc8*nQ9B%2b|d$lwkQCM|Ebm^k#SkWd)SVs8aX{ypo$pSP>pXc!_dlTV zxDF^7Uu6z>7AU;JfQf&nr$0i>u*wFUbfa_Lyh^*sbo_IwGh$;XonZ7~D|eL}ggN)H zYuLskr+>tc1~#%lgTfZGqN5;(TWmtS)zk}sgC(tRl8`G<7weB}eQ|Lyk0A7Hhuprh zQS=Lp)XIyN+y$^iFpyG4>OS;Kj_9z}Yan1rwFbQpm`$7588=$i|Ji(-m6|+Kp>aPy zmbuQa$pmxac!}Dg3M*f8RPA`5!H*|0fRhU}kK_&YU6a&s`}bnNcUya7Zqn4(@R<$oZ~)UC_oj?5h&8Sn(zcD zGS*zsn4u#~EafUfWS=7XV_iQxfq}=;CoKkNyqn;N7^4jy`wGD*@D47{V|28YT{4qt zFem<7qmv81^ym|+dHq*Z!ZisQ<6%}zfu2$E*l8e%DWywRqywF^att0#BLnfW} z9pGnmipa`^6jA#Y4QwT z`yO`x0rSMPXL$xVCW3`u4Iy8-_#flV4qrsom!^J-S}8{t!fw}l_oz_*)KT%*CMYDN z#K%O(?zDGtcydABVYgOOq6ypaK|U|P%uF^(kQ9v^omkvs;(Tk(Z*f67MMGMdnJ>#M z7%s?HPRMs~AF*uVDf=js`LIjb$g-Dhk~tyCKkBCD!j!-U>weHtSM*{MP)68ha6;mZ8viRp9EV6EBEUhEL_f6wK z&gs(;qgxYC{@B;mv2j)Kz9>L09Cp_=zt8CgCE(yfAn$3ikF>VQt`PX++w)CRnA+nN zRm#%hbOS|CsxFu{WB^7CJEW`luY_$#eepv^t*n=!8JMk4J_H#%%01D)@ig?U@;Hf& z3~rtQY`GTC5z~=rIK@vcV-b0*m34`|6dGGv-47@~P+^!Z8)Jtu*eGw4s-@Xsz=u@? z0LZXhu2YZ|Jpg;$Ce{J@x8R?`0KsA&%C(R@l$a_<#Gh$YUc$HFBv;+Fk#Zb$F*iaj zxgDnr`nkv-v#w(2P&gWJk`WHt#pr*+oJemv$A3%gzcb-aD>Qq4!{+s`a~{++<6`NP z#Fu+^>iaG<@YT*IClHu1PoEUEXv?crYF{HZJgfk}p8XDjHPQvIZua5=Zb7?7D+SNI z9kmbUdepz;w_^L1TP#-V?|AxTh&Es#tFP#eU;FOE^1{DfA9a-jZos6fi@4bbP2vZM zk^d+d8rXEEOiBnH`(zQ#7Es~d4O^ck;qgLc7D^)0uT4nO=hTJ>@SMw)(_rThLE zbM+l6OZseSw2pep?eI~(y%{ev3Q%)AalJ&RjiHTPn%0IjtR)a!%iobi`ze7~KK->4 zB5THgmB-1tMl%75;&#sgpA;8?A+O$sn@(1`z0{V@{cC-Qw~XXC z=F#$%jMVUS-&m#iE*$EMS^Id{Dc1YMa|;9zNR4w1eiOyH`%yKBVh8(hjyY;xZ%@pi zIa}3vEG-UvsPSv`K;^I?u}`lkwc~u_+Z}JOc^Mci&(ru-|7)|8!`l}IL^HXiy9ZJM z70)I=DzpWY2ob920jgk+FQbn?>3qlBn{bIA%h*8?D^t=Z#t!xmwn{ZUF+iRD zRczlj{4S^`A+f@IdPIN8ow%Rp@;}{p(qXshgrf$k#Ap71c6OTxcnIz_r?cInHx=h_WHri2A=1_7go3#k#3m6J!Eg&?`bO*~xJ{$ZT*flM$R z9S!>mgv&Wm!dK}AvT3|LBuP@h)-0li0%;%v~d^fci=0WDN|(8$WjK;=3$$S zTWY3(;+}%ZTW^wtIz_L)HHu(vB@yG|8fWMa#z-;Wj}khcd&kwb29`VI}q0?=b00st`ZS5iUbOlxy8OTpVIxj0#% z-FE_pW+yfQZ*kFq9?1phyTfP++_}JHu!Pf-`VGjl0=b6F0ilBj-9Qnh-fdTf-ykZ} zKHhMr*uOzF0>G{<4-mmL$A$WOFpABiP{h?`DT221q@D;9GRgK>Cy4Z{=C-(=93mPX zr1_qF6GON4Qb#4wuq|GEF^)NT>i0$&8d|o($lj#B#@Eb|ySXuh-qZ;`+aLh65>V&a z8Q03#trU&VMxL-) zF0B!3t+y7e5@g9OfmVz8PV49X0V)LkxLiHGKm@YyUKQYTMu+1lD3`N8;MT#E|jx@9AO=fShJjhv%r zH;21!{^MfIYI%Cs3~-8d3}f?{d_g;MiL2t^5n1$Alp_=y3z#nMql~QaT-9G7fn%tx z0K>i>LGc(ZD0mo~Qa*4~Qju-DFYDE3wd9TE1%7%wP- z(yje#gkP!^z>H^JmHbY^9VY)Y&(*uykR0G{S?B4;XG_

    W|7EVZtlb3I9pDQ+xJHQtwunjqe})!y*K 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 z zf0}D-e&$lCy>Y?-YtENgE}bH_KLi?^8!;Z5BqN{^ky9E$?VNp|_iA3`t!Vr1r`4YK z*mws>5V~2xzXJNZEs{a{CGextw+xe=V&jOq?5UI4U{igBuk0Gsb8%Di$YfXBcHz4NvG0!M__HT0n-s3fX0Vp z-B~|RN{?E~xU12Eg31RA7>TD6dgIpW3LpNN*zLdO@DFA8SF;UR3$U3+odAzM0dyY> z?RDuY94VAS%tTe8M;H2fL4fYyCq%E4sx1NuNLlG~UtT}n9G}xRFE9V{nqG#@$B3cb zUV#w!gT7Xnjd%Q(l|@tkzbH@*N^DJ`E=&kYC#^sWv}MZ_07jMW+nBHHH(T6Qs)NKA z`-$ssqnwL>T>YBUYh|hOrTWgDjS|Z4?G}U75Ll;4#p-t>=fPqAS--Uv(AeBu40LT= ztmZM3Hz$UCG2>DYqLVR+ahK9YuP>U-)<;!E<)oJ{8A``3{H zG+M&I$U-^C*k57;tLY@5fBsclXnxNGC<+fbvMv7Un0wD9y?+8;Nf#av1a{2tqwHAj zl75QFkFcKbe4ZVmoUr3ZfW+kYjC$WU>ZCzONN}VS$Sl6R%@nt`qg#RbgOm4e)0aKy zBz^-~m4Qwe4e?J@F!>*gkpK2cH5&Q{c4ZY2ov3SL)#z;KrXF2L+K1tkp5PcKpN|Nz z{^h#1dAC!@T|qUvay9WwQ=HcG5PGh)cB zmyfe$P;)s+G?pl40sudevI&Kp+%q*r{g?N8hUPpwz+R2EogEAt@!4=@hp+X|j`s9G zGHXqS&xFMhwUPT137n#AxrA?|3GqL57SY*K7c-)z-zTPAPq|l;Q=EH3+iqoGsUJ9+7>z?9 zYkPZ`kezU({}YUJ$Coedqiz}H0Re4`KPEX+`}v*q#Vlpc7qzrqyO4FuY)%Cmzk4GT z6agb^`0m}M$>aUTM%$sURroITPVJLYBi z1cNt+#I-DuOY4YNvd@K#L$m5zr;^TpGFko-eb_F6g4B2uv3F)W>bD9mNO5bzUNCvc zFJVfEs_}+w;=_NcYEQ1E(LTiRL201drIMekuFc6OJa z+1OT|?yK6(VEk|DCkOTe-Pr~Xw*#3aXo`48*Ai#lK`7D9N?-rx>VbgCvRy5kb{*NU zz*>z-o(vA~j3uUX=T1L_#NTu+CaJRzq0S>OTHfr*_P6b}uX zZViz9New_bT=V@oXsvYL>TKG+6m@?$#oh2a;)lG7jMc85q`ymy?8Mm@^j zvSvWJ0$W2HUikpY64~zbw&tb&KY-pl&`7XGE4*MWGa9RTFl>%SnQU`IQ;01H#TCU; z(|Z6?54a5q-TK?jcfi)p#WgGEjBAGH``zsQb3EG|0d%zA9_M0~%D(Yj8t~k9-t}f~ zBU8l99b??-^d7tISN3A3A^A5Ynj|evsTub+wnbd(>>HWjN4@Ph_M#nnPixWD^{|Z2 z+tA%_0s4DId7&B*4498u2FSKcWo)ga`oIDmV57^+oxZxKDC|#JV_%m;3mdAnQ-h)W zxVr7~6LHO^Rh2~L^C|buLma)?AzF7lgXW{E(&u)!{_FA>YHz`GWPAKv!zfj;@hMVu zV|@VtaD$<7s3t_S{t=w?=LiPX$`}_YtWX9_o(NsyVR}4P4|&sek`m*$TE@pOdmTLI z@yS%pbeD4P{|pN#(Ev^WH9`Nvsp<0j+}>ry4T`#h)+Zwoh}Dc{pRy0Vq*YO?Yb*Bc zL@+HkYH4RDB|}5+thbWac}pwX!HX|T_7s&e$TPeE#J3gYEld1{=$7brZG)}$R>{aM z%*ams@QxkK0t9%fV^RISEAj7wW6*AaWvb6+II7pZyf~)1=fkB_OLAlEpWPjJTyS_d zV9r9icWeG6UN57brw+BqY%qzY-Mg}5H(D-eh?m!z;m^ubKMacP3rtq({q}oB$Ve|g z>Y;oX>*ehV+jFnFdb*|XyEhqvUBDgG+mBQ}5}Kskqn{`S`sN82K2o%k6mEuZ#2pQw zi`$ABTUe%l-8Bhdp%UW3Fwi*SQpb2K`- zrKI)jd|6pxi4U;kvRmA5l4xwh@IHgv0GTHtbShrVcC?h+%*(rhe4q7^QKwE6V zxPu>`JPtmkXY12YjK-ua6C12Y#k`8OygV%zs)VxJUvgBvRx;#EoG(O*%%@7HdKQ(7 zd*5Fe*?aL?WD)KT@}qL6(&A49e36lXll5h`E%aqp*S-*qeNTcPI*QdioqqZ1@EOHw zAV2`$#U@g448`0(Qq;`wV}|3Ggs=gR11h@@n4~)fT=5rp=2S^-zshadI=#pIUkGFq z+=lki3iP)v&U*X{G?g55q|Gz1^fV7V&`X zyEd~Rc$daV0E@6VFr*o@Yo|T>hmRmVjy>Ta?NqC3%kk0wn?`9Sf~*5>F-2p%|7_2F zxs%pjbYanb4>Nckzy%KcEd33sEfAN1Qz(Fm_}vRTh6w6In6F4qEpBPW=T)`%=dTjU zhh?GC3{vVNSGZ9uMj)`tJxc4FpR=dj`iaoSchmpq?uM%n@N7PSQ}&I<6D*{W{{leN zr9XmJdn>oEWOo3}w%(Z#);I0jSF(mzlm?qN!8YpmGxI7~bHZm)QmE$9Equh;=gT6R z;z`SKmyhgGR?6S=JoQDx${~Czi6VV zM9*IiooEDxXhUeYG0~;(jeUfw*(&SlB|_HQTH`CHC(kGC7Rpz%MfEeO>*efNlJVy- zZA9xhXaT(>U-bJbM^zf5tz0gT2@N7YgnI&-egHk|oQhyGN;IrSTo9E;D-qr-v!zFyt~?p!a*O*;xL1@`OmX zPK`#iiyu!d&fYhn6>{L$i1JD7sok?RV9kDZQ{)-)noowVsWG=*hT#YXd+Wy67ls`k z;c6Exvi0O1Eck*hG-mtRBGNl(B(p$Yle)>S!(YE-%=6)zvKqD zytCh}ru@N;AnpcRe+&%dLF^|8#pO6+ejCD?E%j?Bwh<00mqQ1FJmgqyUMJ9cx7{@6 zJ^4422=!*{h*$DxJ-I<0^QUoHU!KS1xg|c}0l#Pr~Ljo4U>Jz_#`||s&sSz>G}ecid>Pzkahz9?R>m$GiZ<)QLJ#(MM8|B^Oxx! zL|q#1#xTnr=NNl4Xs_y5L1QiqM*(F&h$6Xmy~cr7Uyq)LCSHk<)_&9Na;flh*VFZn zr%Hx5e$q}?*6IJx615#bR&fBS0>Fa6tHQMZh|Bm5B~4HTu|so6PY+nUFZVZvY#m8Q zAdRi2UZMn2rOa+svu>77l*lyG#ZzwMw@Ss%W;_y78&NYk2)PXhQVUb%SvhV~m^rtV zgx3p!f9J%za+{X{J*iWF?KY<%EO?Xpa9RuHjfnX|I^5vaH>fdA5Lss63H~^wnBAo& zwLdx0s{3m;Pna5mY zR5&eTXGAF^TxQIv*4S3S;_2YrJKIn;W)St2m>YulN!?Obz z;i`hsv~@xK;cF~g$+gIQtQi(6QOc*FoT{b{f6F^!*pS;F+9+&zg1_<4HbG@x-b8YD zU$>$_?Cb!>df66hC{&-j-iY*%gD;rdWd}kPr&5-5;~N5_=!%8uRN|=f_nzhoEsM_@ zS=QcD&tY!I&fuqoaNrXrwjVx!x>9>hF2!Ou6<8FUALHVR^hAO1ND~t5Y$!!-#n!&u zQp907Aa5G9oiqdqZLU{^dqJnseRIp1`0AGpg|A3SZkRBYOYI|*UrN75U~eqMT~^*J z6yu)Gn0tNX@@4xY%#|?25DW`hD`(hu<;)r@I&V-3qzJ& zp@b$&33Vf>8>#JX-@GQCEj^zs@fF-lREpih5Qy|<0PTyL*-}rSZQlnsM98dnA^Xo|Qx%mYCn zrZ7s!>vb9dY+%$NuD3nDL+6yjnSJ%Ub>!oUiQ*8s_g=0V}sMP9)V*JZu7RPAy2h9Ylf?W+0Wl@FFbY8@Vp%Xvzsq&%@u ziP>TKu={iQxA@AN0(G?d(6(6|a;=#cD$;N1E( zoyZoAP%9k}Z0yN?XDIH|T0T1BXP5GD@>|I zk>oxd?%R&>v+?kw6YjtH8{K$02|CSsT(tDxKF>K?*6){@q)Lk7z$(l5eWGdJ&Ekt1 z-g&VRZ2n!wyeH0yG8H79>V4eAcamW&F<9zny*C+Jbtc z;%tiB(AO6Htv_otvs1~8cV1ZDiH*&O)1t+`D{HcZwH-ZLp-{EyR9p#jw-;4+0yGc~ zW@BUZw5G(B_&3zc$nU3SnF9AvGP=(Fl-iTE!jH1pv76~5Bb(_dV^G&ur7O+o_ub}E zORm=lO#u+VIF?kWeAM1X)$}14j$SSq%=!(&tP6p_5O~Fx>;Pa zA@+#cbO5G9?8cj?a7J)H5}>I2&y>8~q@i<}_|m^;N$XG~5wwlGMH97Mk1q9GU9M5l z2Gw9jPu|sN?CylD@Qe?|lTb7H6`*^L1x;xjvzv--lG}XuQw(UnU1lj%;CIAQAM?L` zuna|Jf6nWsATIB(NeUNffOOw4klk|%_}yMrOlo_EZh`%{Q}l2{vf;RHN*aH>#YAW^ z(Jbb7=}6;t!CwT2*a8FG_ShU#wt`tI<>MkJr>QYS3Wzne|8V+D`l8C80^f3N9T>~R zeKpi(tyj$PTKTZawH>v=+di`w{J*ayV1x`Vp4=~5f7rV+rjdEeK-t9{*xiK`{|X9L{oYm9$T}yv|C|$^8!Spe%45qbb6p>m`-# zCp&`%46dmyF~2>%^2_APsr#6!CV4{I{5#Xrm!m}H!3|QC;+VP($tfBOZHMby<1nXv z>nJ3L32#Q76Aj~g6vaP)4>~BenbKMBKx`avyQqo#bdo@g_G)OFL*-a+d+MNw(Fs2N zLvi|}OsxQ)_2i}dPz$+wPF#5f@1{>^I@rl}oT%Uhlh7DglBX??O@ub!;ieFnY=?JN z$1MZF$J`fmiQI8`z>Ce7V+D7WH9AWfvcfdK749_$btXyQsr+7F2`?Q` zRL;%lhSpb(=YB6nNpQT#8VZb}7=zPe+7e5IhSHV~nETYp8%OTe7Kj`VE3;xH2ghdw7i8uOb21z9aFS24L}kl?lCq1nwV2wu(s-7! z+WKrrzOadJa2I!?FwyF*$catgr!CoQ`*!pSeg{d8X@h1%Vay*h>&Vl3R|2JaNt{6| z#vg|B5J62}fG5zJM)DcqBvs)oN>@XZ`2_fzlPwZL^>5+lKc6YdpK7OHDT89f>ZCVJ z=5C<2K}C@@50GP3Z4o2R(cMz#EwWimYWK(tDgI2>N_HnMsy~ z^Pe#nrro2)>o8-B$;t;KPdWW_5kPf~5_;D|i$Wwj9aK81Yz)3w{mE*i`(!E6y)L6~ zA%NwTrldr>Uw(Gn!HCIR?|GO8acR*6g*Seit<4h_iF3KwlR-{rQb|r3de1Pk7IkAa zOq3)~F>8AHQ*eeCd}p-T=l$XDWZ4fTIQ=UGBB(RKtIp(rUpL%KF~|5M1rXR^oQejN!?y@ZPt%eO9TG=#qX^>w2N0?mX4siyM9oA8@{UloAxyY zyjJ1jyQBMF-KOZ{gg6xJwXi;#+c)`gi?;c$3Ce9SQ_?;(fs@jILlw(Ngm7@I0N>`B zKmn=1vB`_yN=Xh9{p5P@ec8(6nburCKRW3C2MdqjI^xCO7jMV<)2yc)ThAp=o~YT5 zaV4qAKXOnCWGg<`Sguk3VMj4J3o>2iAEg|3eI4|*D$(m~EDt`^G@1pV)_18X+u- z)JprQo=8~;A^TjpIPnyA(&VC%gX{CJ*rXqCjP=sXpmy`qR_9Z$e;@%Sj2|WpD=2)- zVugko|2e3^Y-l-@q}xQ!xDM-nW;InhDclVCmqIFCcQh65uW79zwDlv8lGH$Yt+kX# z&h&M7dbP60Dta>vS-u4y>7V!Mac*bl5d(A+8U}UvNG;aAua=dtZT%LPj+Ucem1NYa z{OLD{{pqp}ic|!tj=I0J{Pio}_`E`m+OUo9;DFUn9A!;uvrf13oiX%uiEr#aL&<^{ z{~9HC5;)S#C8li2>oR6g4x$ z{-Dl}fJF*7{H$C9i3X=Zn9AIr!`*yH{^20fTM0KA%Yss%U1=0ncG&m&cGERuVWXm` zqE~K6XhQ*oJv~3VJ|#&^-jwi5FgRy7=z`(Hk~4~@PfXo0s9thCp|@{mwUPJfJvOZl;)QEfOGc;iKAK}xTU?ZwA4p9veRW<1iD$FQ-A}PG zh?}(gdLTZc@e>!V)ETP9%rZK#-TXCiM5X)fgsu#FQ67ZkrZJorz*s4d0D!<3*31*J z2uEpKaWJ8GJL5ajHqQ7Llp)CyDfFM4Z$K}qCY~NFRg?zoj@4JcXtM69b)TZ#e`2Vq zQbV8moOKiO#lc0e4%5g@t)sDKLg$}jsQ#EmtA$X?g561qkH|6pRAukcLdd4}+s0m( zO)F=a#4=*_H?LxKFaFlKTKctrb`0Oo?ga5ZBTd1S2EUwEwSlh#!xvw6yw|zy78PJD zUwudZLWHmQzn%|%$Gdce`_j*e?mzwCKKrg*=BY8OnWw+wI&9zZMI;NYYncd%^B8e{6xL^oYB zKLu44?>t6Gwh@onbW)2z#T^p#4@pZwXifg)UmWp)Yl z7?aXG?*|u|ZtU&#?uj#xI@{Gyjq32WcuRz0)G?Hz8z9kCl+T>P<+DJN@m3<>&R^fH z@0RW&S@wYCXZ2QXJr>6kdOM7i#mq1N){m~{))B@PJMr82at!*veI-kdu>G_6&PS#3 zbs)+V*}zkRV{@p)RDKm=y-yR)(5^`hSTDo?bMMV+4Z!q?`fFZ}=5rbAl6 zN$vFOYky*+voaEWGgT&bJGSZ&* zl-lxzWac>NM_KLZUh~KvJyLVlAVA^$;PX~@9A!sLxubrYDpa%Bc)jJStrHI*zx1)* z7r|AumX5emy>vF0)nC%TSTGeMKe+Jdx4VrfyNHES=WoCZ$7CawchYxA{|b|N8()FO z-}0WqYm_nhle%4Aa-`Jb$v9IldfhckoQ*3p>IvWg^{4tu>FMFB+jBLJyUhbTAli;t zchj6J*#Jm(czT6Ak=V52T(#UkFQP%Ga)>w7B`FgeQz0pT?gKIhm?wr9F}0jlIc*Z( z>{?|zVqL`}of_8OSGCus@nsL{XfjTXH-*L7d5O`#cKg9 zAktNebW}=|sv=DUM0yuNkdh!EH9!;vq(*uZ5JY+}2@pb5dRHJ22uY+1By>n1A@@D- z{QbT$-kG|h9PZtq6$)L!J4{g4#4O%sY?lChnH<`RTHIRY;3^NA^c(QtR=)mz zGJut^ktEroY%FVt+@}VvUDuCz0)f47+J(iiv+9|=ToQ9AjOHeBs~lOCnHttKm$lF} z_6z{KF1qz}DwcS6?L$c0mZys+CeB*V^M(8RUGk!aZxM8jGC;@(d50AF(usXWQSme# zC*wA2?sJ>-BTKy!Gwc!zuN{|H-=_m zR?lYq*}K(hD7|hK4H|fprh|m{UE`i{Uz_~}=~-QKcYLEBgF>yZNr*4kvYI679>#h; zbXx>j6$J!_SmtAtKhk~K8(r~^X?S-E-X zs}eSi_hNxIqip(wOc~(NcGHraQ$K~Oa-zhKaadl~e*b;=W?N>z7K|gMX2dERIeO9L zw3A1Lm~*E3VVU_mO0R~g7YqnoeSrO;a=oUAEp22=Zk=-mv(*he_Y(jC_bN4Iuu8?1 zNjz`L2Cv?UDE!l34$9|(%qay`(V3|dsU6x2iEd3IiLk@8)DKgZ&9T3z_SCm)Q)op! z{$Oj|b^wJ~40^*xBV7$eP08aciz;gt&y7Q0WU=C6q7>|>vI(ZC3SzGVWgGg%@-uQW zp1L3HqHln2RnTk&EK6{}fX1}P42}anB!cPmsuK|%!CADet(E5{J4jRK4>akjm|!yk zC7!X;LbCHS8zA286}w|JyWR-ykiIBsr2Wj*>8;UWxX^~}U56=FCaz%SeWoxXOxqo< z&b1G=*GC1#R)Pxc259h&As=#l!YaBayWNBFhIi{SR#m;)r|B%A$Jnf%)*oRN9aT~k zk&~{=fBi#;;9<&aU}C2lRaX#-#7(?HSrR@AdHmxP3MMSRT%x6MI=5@&rI%@bYI9Cv zbB5brx35WE@$+`+EukvjQc0v!qQLM{B!yjd|QF|upL(3b?`qF zMN!W*KMZDS*cH2aAhSz&CT5Fol-1Qh7g{m(Aa=h$z__sDJkI-%r1;-kjR8LVr#4xx z-jSz==V#y?|DK7`p}*f}KYY>>>ellqLCIErste;LR}Cy{sJpe6B7j}0%1{@k>oq~! zig&ZE$y1(2lvX0my78~uk|LsG$)LL5sg~E;<(H02Sfnf3)Fk19eKXAH@C<#xEH*J_ z)p%eEz|c9tpV5d(9b5uxauUpkjD)=tquW;}`2>yq27mknH>;vkOMBhAO?Pt!aT5}y z`;6LW;_~$k9P$A_tj#TrpVaq?9{pq}(A3vfKLeZAwLgm-+B!K%>F4T-z4@IrWfU-= z?5bBAd;iTZ65_i$nFg7=Q`K0vqBwz@kb*1~_YZE3>FMAy{MnQcE)n;>6d&$s{vk3{T#ALf8w8k z)gUnm%@83InTH-~4_ogoXt_EcK3^GZ4;s8g`#LJPp01t?i6r+il5uwp z-VHi0)f}`ndfR3rb|XN?t&z?9_d#~9GqzXk-OXi@}b7t*WKd08bxJQ^LKDWZMm6wN@*I9B614LKv#^xT}J1g zY4a5pJbq#N{C_<*Pr-gDN==$E%nVfTHdRkuWiAu{l3VM^uRw-Do-p`56`7@WhfozT zg@Q$8ao1C|W+$Ah_~9|GzLis?{I8r(m(*^g-JC9t<}7}6c>I3r#=N4k98B4-*XbAi zHpysaw)L(OJ_>b!Cq2TQeL!`t%DJtz{NLVo{+hj3Twa;0ij~jk75YagGbL9m@eJm0 z!`X4BAH)&W`%dfyy@^<4zBWCm&}*WrzXaQ5Fl|U2nAElQgSE|~FZ3TH-oF|`Ad97Y zH#bNK-mCP8iegv`cF)R^`qIuW^UDLXlba(@-~gN7+xl9nC1VHNYC`W|TX zxL_Y(Ajob9mbeb^jLuE3xseCz;MgkiEnfR?J~$}_0kn7-r6&1y7xY~CK6?@7u-#^5 zKc{mXh|7rJ_l+zE=8QJ@$bkWl)C}|@;Gw_@4G%FdXIJ}0Z~>I2W~4L=sl6?mD6g)7 zOod4@lw#J(kesJP=_{E}P}q;5(<`rb4cPdCdfU6jbw7Y&myY_M?wrJFI78Tc+7fgP zC>BbO9``IvS+P%TpKL#1`+A_O{zvsNY?=`mO>d>cb zu%Mv_@pBBT5iaE17>B&I8&60Au5pTAelIky6i-Lwa$6dI?C;PO5&Jnd)^jX6$MT4X zsO18grc1sCTFc3>=?Cd-8D*ti{wzLw#?M{^<+nzCdpxPu+r#jp>Fd@=lnBR|l$q)_ zU5*Q%3w-zt z*mq`TyQ5+nOb_vOD#I3=Lqe4m1+{c@aT%9_8*m5AhK~x|gyLi8TJE=9;kcoj39? zH6+Wg&ZxToy^cS;pJ7Ls9D$odA&er@fhyyDDEIGaYE?Hp6`$nf%zQLHYOMLGbBD{= zVbfx@9Y2~8gw=(GnU5M%Fl!KJ-y3y;4PH7z(e^XjbBCW#$8hdANg2QQl2N`UNHe7N zTUOtV!#058=PBxu=!z?9tf;6}z|zYV7>!7w^>TYk`C_e+o(~u>HW9!fv!FOqIy}cY zCoD7f5a+ycZ-&jn8DiAuo(A8E>T0c_jK@GhBodH;*i`Y%DOobdq&kN&sKo-M}DZZT<(YgK7&!B=m~7*UHZ`b}T-eq#tU z|Ff3u;r3?~$Lzg)`9{&;h^5uk?-U9eYu&|f^r$iLm78OSnTmC&TVdxfO%)^dLrgb; z`Apq9H)%g$zDT^hr{V$7e9-zEpg%)T0P+IUJ2;L~`3sk=97RNpm)CV>z1d-ob^FiDn(4}q8_8M{p9ci&{p6fVuLYa&@El1zL$udl#7vLjX>DVwzUvx6J8TEEkx|-* zmF$$XCFz5Dl=3SLHKGMcjx}_3!qQ_9bi2jfn-gxEo}-(CC=xOk(bQi^Il9DGNQAmF zTv^(^E+ZFaG0_V?g1s8vFLy((xdy{=cMah%4oRhr8J+y%cz@fqD=HV3b@UC2 zx)Tx(A+|AA#=4H_2Dq*WE|f98(+eN>$Isy`4Ck%a$6q?}6q@H>RRg5H2fm`0TarXd zy;02o_Qg7@VC@a}B-AwYP3=RMxc9UVspR_Ul2hmG}^~ue)9`wQF zLWlpdrIX|PmQ(xQMEvTU!9bgjBYG>?sRm} z!|dmer%ce37RMQ4N=X%J8lLv4v{>p-f%)K@A)d|qPa@XWo}@_0H%{&De|YwLMoa=2 zs_>Z;g`a)3)Y{3Xvh6j}zkapg2uoj@P$nIS!+zce`RlyVenC0FPKLrSA#MRi?RVkb zgds+9^O)?STgKHf0|hh0!l&FxS*{XAH=Vq&Pq+tRj)fI_|u{_>ZygUxbr z?}7(Py7W|lwI`<~<($K33+WMuzgTI$_iSf%U<$MT&2TXr-M>U zRp7xZU|3ALZrsXuKY>19SDn5Pa~+R>tl08l;TlPf5d!I_p={SUAnP9 zz}saNiH{|Ei`~TLQ_Butl3=(eN+nv)jcvxvWZE2nHxl6uY7)cqpfSl}rLRa7{C2e;h0}mB#Y+mHA%s@ZWljFhYhht^ z5(^6Y<+nKoF29tRsXT(l)IAV@B4o(4uUno#4Pmngz5weoVqk)hbFxr!0P}&v{!HRm zNO1HI&l6W%DijA4cls%&y_DwY!7g!q?R3s$`T92RQE7d@$MG>7hKI|rU0Pd>es}(~ z3NO5PF)RKEJXnQ6;Plv}O7*rsr+hJO2Q)l&iAg%j8J0{ZMpaTEOwBXpfOA4nTFG$l z-cFTvu>Vh|J0uA|s@AsM<@w0ICt{NX^Tv|hO67TwGsO})fAzGY`Ui(wzA3t&Iw_c% zNM36btNbIq(XXU<&h#KSO&_+^5b5dc)AX5#F-@DWjVvX|?NRkZub`04W>RMMUSXfq zH(DyBc~ngzt}+^obdK@-YkwGxhcP+1b^w(Xs1TBwTCDYcsYLvp8Gle)(_e|#xM;o* zQ@(?D8-jkG(o~BE`T7l$%!4IV@z>s$FR}C8b3&X7EV>bxBfRIhHy(U{PiPCt9>g)4m-45Yp2S;W*tMJe*o01@?leIf%F4QK42q!y@9D<1VI}+cZ|9e$ zlv z#l}cT+YuIHXSD2!4g>P4>*cbGXBv^Bm-#b$!2)kPejxGU+WNLvb6JJG-Xt$Gm};clNBx4a|aMr4=;&xF+xp)>2emfP6%vhe?bV4UMrs3qRp}I^!@XbG)+zd zl-CFLjL*MO=LDJhivC$aCyYVybEg!c2*n-y=ceQ9fR+ zTUW->*47iNsdbfYR|p~lgp~Anah3^(m;JZULxR6zHr2-&bitwm3}XAp;z3oVXFOeQ|(meXN=;6WRj$h=!VmGt<;%; z)q>1(Y7M#ThdkA;iPaVOe9bVyl~0utO>=2Mb`tXlO(DOvaqzYEpxF56a~vtEgRjLyN? z+;)8#?Vs@JLKQ1IR!_J>DczF1id2Rwi?4iD1;NdReI_7g zlnxo}8OoXXM7H_wnDNZ5dpcjsn1ZIyZlqqeX6;I;>L^@6fU^ddkc2aN0c7x+^GO>m z$EJuCFU)O2g~n7}(fGTp1x5x>s2An)Uf!=<>t#^;=zNU0ew(fyn>u=qg{+F50}=7a zVgbJxj_5-fXwBCIUndsgzs3*wg)9sKVxM5kFI=zND(~H$=o&3%VjgPmH10zOa8S>d zYLskk?L~$&4ZU%?#EGIJFkLdGuFSM}Ao`0WnTp%1Y$T#$8k9)0$(+0}1jzmsIIhE< z1<-%jL8mn?`-?pJ#1{*cfcwYqx zGV1Q!tE#NboYxI+&6j6U+AIVJ{`37RxvxT|7iB^gQzk^;KIjRqCYifT6E$G&ECd+l zRu-fI54je;yHVr4OA;XQ=xxV%Y}sVxiu1jlgwr2xs*hn#Ou8t4D(>}Q9Wl?|8`_i& zdDA+Y|vS#k)= z*ZKJ!J1}==QeT+(2QotbJ@xNbaQ+}`;V|~ahNH#ctoO4?y;l?MS2h}E#S^}M$-v#o zq#(Q|wzT@#@Km>X>AET9(MIc%d$ayiO?~N}vXx!2GA{GB2*s)Atr@;goU>A#H1H~k zKjWVORCLypHU~BY`1bWcK&!cmf_LzxcCm&xm7*eDw$q+@C{Edai%zVY>!c32wBGl$ zT8EiOlc$@{4iBiN5*m`@Z(cZfpecKS+&Tf7TD&PYvDpw8kEO7TC5g`Wn-Aly z$%=?tn~7D$+v=-jF~1ujW5YJm^}N2j)B#XZLq`SjoyYFC{1ts>*mrwlyYGVC*O+-e zOttTEZHZ**hURrb&qUc<3VU*{Ya>F|l+0Rz^4FrTV8XKTdJphX&v#ByYHj?dYvXLOYXTP?uU{|;OPLinX5TH9&-s5 zdv*)^CQ~xJ4tOWUtrGlm%L@;UY|VJ=A2}wie2E>Lh6P21?-anyCDs;$YNC+2eu$9w zDL;_YFust}48w*TLqIh=Uom(8^&T&#Xju@h{46IdtP<_~wG$Gul9|Z|qk5J!yI-tZ zDsFG;ZzW75-|11rN2CeX7vI``>Tu}_K1+ZtQgtH9Gc6@4b8kWH5AM^ce6bA~L4#yu z!_$kw+B!+rnmS-k&gY4s`g#LvR=kfkhz`g6cdPkoA~y$PdLjv$5<(&8(O7k-<8!Gs>K9z4a$M9+(YqG ziPF7eVn}|X?UP`!pUE|~8!V0GUth8dDco#r6g2hoJr^L|l%LRN(NF;cuC;9r?zvSX zF*x>>A$7wqH77533*ijQYkK7Q)UnJe8=Tkga5g}JtoU5 zr0U3HeYS~fZI;%OEYTqy)(3qF*gw@pBOIBue#BMb#3}K`P1rXyrLUDbWEkwQ)L*zm z%m9~++5+xP&!QwGg!12?X+Xr|ero83e}7(m^}NE3)RSjDoCR593xhJ7i;D8|!*mNG zuJpODP;yiKqC91YlB%i07p;z!@Q9r)F8u;H#t6k7fAP5UV|(~YIA2|#%E6kTy2U0{ z*3#aSIOB<|D&Uf{v9;;9vMkDRwTJJfahaQ6k}~QPX=+Ll(iOhgnQzD?`ronHz5V}= zRfhb%%>d@JGi9A&w`6`MamI0nyx%Buo`0EC5macEK3m>v@?gFIUZeb=27B3P9=TwU zXm(+^OIl0a^I7j`vc6QUxznAyBC9S<){%|MZ%tTF%UCzvy023rFF8B#@Il5q@U<%z zPm>>FQ!QI_n7}>CN8l;FVzU_CvJNuzr~Z3?3UsZY;PI=@Hpm8til0&SskxWBYx72` z-{a*Q>g&?@9JuzAb})2ciqdnn1U^1xKjz{4e`B&eIo=1O`<>nd_;B`%r2mec6rJ2n z6r@UQ9aPbjp8j_XXAJ|GVE-=Xsqy}I3_lJi@sID5`T#P)JB$y#)ZT615R0b&_xt}f z4&XySPcvV*uZIWK!vCfXS#5H~c7&fpIk!p~^a^~iSA*ocJC%LKo&O5db+tUy{CFB% zFr#w>`@Ml<^WRd}*%Xhz<*Gn6umJIgwzRS3x7{wt2Qq)OOAlA*JE!F#Pg{6= z9(rO7MyFUub(0C0)8j%uP(-WL#cs)nV_TuEUpP|EC#n z=^e!Zs;Jcj%gBk*Z2yldPt0&X9f3{8IZk6pK_TxQ9sR%}=as!9U5voEXJLF!CViUx zmp)#(ec{|ue^v_6pY6-tgARN6t?<}~sk6E^W2q6!)ubv{=B+o$%KTKOAZOB#7oa}y z-Cd<@GrgS4NtMDn%+j zHZSQ#+YE?4{1#&usCQUl0d$yc7*}YzBZPOd9y@|Fs9Gc# zczfUUK>yT<$-4txLi42YhN<2Z90Dz#-nz89?-`d}wN9FM z=?rQ3{cAgQ={=~GT4{#4Sko#6ZpNW_E0F#cde{`a*^@3Ur-l1+mfYMT`OfcbzgZoA zq-E+p(Ds7oBb?PMo3+c7W{Z^QoC>A}fZV-V7hW~6?skL1Fn5{TZMyxd+1pni-zyV+ zvDxxkQm2!wyLeRpyV9{Jy#N-jp=q-k`O0 z&oo-Z$cWndyp*Nv_|ZDs0<9%D`W#LbUX6+g-G)D13!PfV++Ajl5DwhyK(dZI7=m)2 z@xf0(B1Iaq08sUOgky(c?4?Cx{klyz5C6GuQse%){Ln`fi(T1nfs|#t?TOn?u3Hy9 zR%ch@vM2CnDrlbC;g>>qJf1bHT~sT@=HudpsHc~|g&)v?<MXnaga{Nlx1k zBERVvp|85E^jcZP1b;;hqRWADwzu?UhIpwPVr;cz;TD#YW69{6c7WbBzhg03hwrJg znn_ey>L0!%({$;~i%UD@;= zk^af97jal+&Qkt5z19v-@#=<6D3a9lRN-+6c9X~NOY$woJy$fL`K z?2ugj)OB|R{yRoq%_}RZT84BI37&QSX7uI#<%tqENlB$O|Hao>`umrr*ddJ*eWHr_ z8FK+oYebGbb(cT{%;i?8;4~&Xv){in7pNCsQ%6l=-ogrrSu2%T=IOG5GMYMd4dQ}{ zaHB`bPX7)8GmA-wodIsdDjtv0I311WH9Q_ZNq0Y`$pSiqM6Ak0o_XIkTaqlIz#@4$ zE-drCpr%3eKbq%Vd5%9neYBXzaO!87ygPy%v^W%Zv^mlyAaDQ1QoX>r3EYFp%TLC;SyK?p zijaY|CrE2D8SVv^&ND;3b3;^4kSF`)@#7~D%jSObkCNpZem`sM!4lY~2C5FmaiZ;y zB6GAon2#0`J&D%~cz}bNgB?TVw$W@SJl6JKJ}M+B!`Ss}^Sd07;YyG4?!5WkW%cg< zrE}~@1$+{!^%@{#e%m&@H~13`wJ|=&W(Xec(?EKw5{5%uC$YG*5>bE~n~Jm@KptL> zHI*8v@sDSTAXlnHrox&GO(^g8bENMEVp=hb&F_h=V>p zUw+A1cv(Lsr6_+QBn0=`VWBhzvMN?wDl)luFG)mSUs_*2^e`NJO{?2Q@H&E}t7`qo zmqx$`xyaX9)~ECp9yRzFPa~LjvM$GlS(QvImZVBZJTgn@@xL*bc+`Q>ky)Tof7uJY zz8g}u$@O&~)~eV_oZ`UO9Y@f!DirNsJ%0@?jgLn0Yd2NXLe|0u9XGPV(gc%B!jy21 zkCP+vP0Y^;y+3T`o*NVVbqIRS!O%zF`K`bfEqlXp{xsG8AOjYsF31E()?R}iWX$&B zNQf^UMmW&~`v40V9B2M_3_S4TfTaAMjsdiNT&L-n+M>on?5(37l56*VklmNs65-;nkd+u^vD~PzsJ)ydgKOm zh95bsdYgoQ2x(ml&0k?#!I>(&!S3)1A$HkD$#Ho`wpz@`Nuy)X%E>Wge(8xtcWK+< z;S5@aN2_1i=Y6xrzx5l#t8}i=ANfKV^W2lIc!`KwL65ZB*@SCZX%m&-zXJEGS^KDD zST(s>j1AmVxYQCk)}9MwjwOxi{S$fnb%DFujyrJO9YLF2L2sv}tq=@GQP7%9$ZMgS z%V`@Wl@;{uYW>C2JVJef=a$^Id~3Uml5jq(P=q>r&}@Afy{}45 zEZ7YfGM>y7Vi-0mx@h`_j#H%I8(uu~t^XaXz6G_4^aBW#92QSa0wwT+9PU_$qrm-o zl@uk&!F-}0S-dB>ku*!{=7~e|YQD_{vT&ucl?R`}h;m0{S_q|OYgWj=_*2S*zPB79;PiK* zuT$5{Q$yB&$|R%SM}Q6=qi~0$@y7G%PRUYE z;Zl6jGBfv;Px4}E&{`!TqIbpEuxTFP6nyuSnQWU?Y>Iq6U@JE+JGoTm`ni`6Wq-I1 z`MHZ;jFdX{d+KRx#tbQ@J<50{xAQDp%bq1tc^6z^8&Jot}`+kd1?LH&p;VsDVEz)jKbH|BV`+azNT- zhivB>{eiAkSHDqqf%%7WRqR4!k7^?l}m0wkNX!KI+9{y@CqTA7L(Pt;V zhr-9EhVB=Cvpb^fdW6c*;$OMc9;G8q^tDN1#+RDc7g zZzZ>_Dkh6}+OyN{3$1Bvr%9!9aOt3$#&f>)MHahe!ob-0+zOQqCTAXtr!mxs?LAq5 z6<~9oHvC&*UV&xsEls}1rHA*lZ;BJNrj0CTzukqsGj&X*ZG+J@0!7#QK?^{L^u6-^ zhaYn-uUAdUCR<>UT<%ONBxWo>iERwh%28^bNHqKQp;1)$NJQ5MxB_2Qli$U>Alv<+ z$in%#Cv1_}&0qRs+21hxY0uXLI#!x$ES-mD=5Z*z7nl*hF!^lOr_$XOFKBAuP$ueB zA8CG+7M;6iy(WTv{e+|+XePJMieBM=2(8zt;%_VRH8f zB_t#2=b!1So+o+Bq82BUZlV5{3w4K!ok_GhDv7>zedft>zR93!pcqG4GA0coL+Y9&wtPH+gB9{Lpylr|s zHA#l#tWds2Eq$HTOR@2U^ z{x+%?6Gsr0?s`?3yvmOc%P_lj?W64B4f0%>+Rb2#zb%OUq3tx_4sf8HO}Pl^AMkb2 z-x;@?M_mXR)I#7_MCuU>H|qS^Tl%mA%sGLtRJTG;tWfG(sG zqIP#1sH71jO|o)>eYLfB(rnjQJ5#XF#>WbwK48|G$bpw*waxySMn)=Oy0+Ps?MG00 zxa(DL=wG{5GMGN4e6AoU#>sEd?Etg?lp>ush6jQDKu#fF%jNs%-~1uUb@uErP2}N`xY)6N;?JAgekQjVqBJ;%YJYL|4-R|Y zX2@NXtm9lVd5QVxU2E2O<3%g(tjEr%~J1s9--}7{te}sPC?%tHAXwb6-dxA zB>r>t*H?(K#DLYTl~Vrk5nh&D-h{RXHT$_<#^CPS1K;{enh#i}BoY+~|BQ(sqG*YMI0Lp?qH zv%>P*>-Y06UVK>k_SlJ|at0gKz7rFlD{>20f!dV&(rk=DFwY`9QZJt(gqYVrjaehR zM}@sc&1Y(|R!(K-ca074J+6`xi~n(7_^s;UW!nOQ>{O3K2_COO6!y}nzv=4kJMp2a z6Jsb(cVD%icp4j;aNDR*NxHA5n)dmWsIu$gY*%Ns^vjcPcK+e~S5W7F&vEw%o4?x& zRei&8(5JsC6AEA2YklyWvOD=Egd%I@(WIQ3=2m}s7%^E$rvA*Pu#nu`N*v|&Y{X-| z@BFR1a2QDnWkzY=Hhj?jkl&;O!baT}6g*^SzcY(HXt&5~6E zf;;gRo6!;`Mg#wHp6FH$KKh19zPbOZU2(e2k4COAuLs*zerLR&!X2!T0v->(U5@^& z?Y|~v5Q_1gL3(;RI!}6PPgrMhH+!d8N(3>6&9EAuN>cNLFYBxxKF&AA|Blg0HlPTl zEyo=$R|e#-LEmzGP113YwQu}?$Cg%Gh_->_b>Js_bVv8Tnq9jYd=o#iehv?Xl-h)x zcxr5%sl?6m@0&**N5Pv(IR1+=rMt=BY*>t+I|=n5=aZ;v+7+Ux&i_IjEJ8f>eA6|?(spx#@ZKzi<_t2&cuP> zD6b(3B^q|#`~_8D5-3fEQS=XDzcIOYag-IDMT@k|D#3(<^y3xd^|+ZKPe_5{iT2FH z4_e^j7c5VEw`nfNT?Oj8dSxr zYbqkFFZ{Y$DE-%`$1#VoRHG0#iE?zJFbqZ}vV2a|`&F_;OF_n;`>PK7j|ARKw{l&r-qSMGY$9CrCdS2xAVh)g(HkS)B zH@X1I6#aG%n!L&|ra5e)P)N}ZlB)W~LQ>s&eO4k|8M%SZOTt5WE0kS#{UGmi*IjU^+PYm2-K%cvrmW9mv$qHSy_LLN4^mroVY=bK=FtOR zVL!jLg&*Bs(#hjvE9YxZ4T~O6syyF&9A(YW7KWkm#Ljf^#1>O+Dff7*8sD2j?4AgI zlsmg2nk?{lRW>2J4ZWL+Cvvw8nBHH>p8l1B{~fC48!zB-@Z^PUt|>y?OO3}ZGdg`P z-zq!_jD)?uwis~FCuAOaZ*OvY$vUf{B~$13TuOWDCZ13`*>OBk|Bi+BrSH*}AD#SF z@~0Hlo99~bT`k^Sn3j$}3fm7U;~s~43X~1&;_C%IDaJDGg4TTHPv~?w2{HE7@6@X> z);Q0WCVCnE%iOH4a5CzY*&;(LD~XAzmMNOY^smAxq0_X*>Y&Iyhh64FiO2eNTc;a` z1rxIH&%u*H?=pUlP;%1%^O?{memVF^KQ+Y|A={4;Y3e!sG?6=${WqMyKbyF0`9#WX z4pPwG6%lQHTxl$dTqEqoiFce_##t$ponCja;dFvZ?7IRzQy&Ef%YWEkgsu_iH`T8} zk^Kz%nrPdr!EwH-hRZcpc7x_WQYr)OQ=6dRMt27xZPpQ8M;F(Me;^~5J!bayCHOVm z5;VgxI)I|4mqS<0&FWBd|M(Y5DlEziY3-ra@QZ0v+~f$*EL%I%jJK=E+q%u~^EMus zEo2n+dM;>3l7kZnrqD8JX=m;02)_kwAyI?!(P8o81Y29;4vJKsO8tzjx3-cRz6f?d zEj#4I-J&xYV729=+mi!w@sSXY>`dT3CiSmI3OaF@1cAnlEv{0Bp#8`zyXyrlZO~QC zLUJmi^;kUu1y8$o*81eWDFR{f{QYZ8*eN7(-T6R7awY8ax1sH(^xU0+PrzJ61%)Jw zLaq7u#=)S$ReOC~?3XukA&zd#UIglITf(~MmskFU^Ih{!o!a9efpttl2s|kzI}Nv| zv?p=B@JngG5dwYviv$IkdcA0&QJAf||%5YXz!;d*LX+0#wW`lLy80Cd> z>2f4@@+6pH6+X@2@b{jzd9}D#!cds0d#In6tSO0oP?hQlW&RucGsA-mGdKS+lIY@l zZS*t4l(kLs-^gHkd!LK2N(0q?GEgx2o)&=#*ry(}cBT6HqA_PJzs?ho=^%6^aryUo zJC3a(n2%(6tFXF3HC{J_n6IwG6Uge|4x(8vkzq>*D_eq|l)({50u4GY$WdBSQdZFI z*_zF?h3b8)7Gl-8ULH~HiAlrU4iz?sXy!+AKF(}jMF+jq=_h%Vb6=QsCIrqX^E2HI zbQKskTW1C?-CHCXtXfD%F26 z%jL}($L1}<7zGr&qh**sA8NMn@?B0r7oRfDPgr{<<$Bh;v#jskPOsZ$k~Yuc;4ddJ zfU8jG$|QSs5ry{@4(@0gs702J6?K}U?ev?SE-&m=1cgxR@D~ir6 znzL*-Qcz(&?)mr9h2+m0gN&{kHR=^QOp#KrXI-3^IsH75CvmV3G4bHMSM{?MDSUh# zhjD27&U;IQ1P;igC`3u7ume>T3)oK}nkTRjP+Q0JteuXsaxsiU`SzXUlajVm+slV?8pbB7? zuEG!Hd{{>v_?N-v=^)d)(SOQpCK@z{Gx(+6%WR7=BG zbg+ltzy=1}Y7vF?%i4A^_`vtwDKc$YR{O91UV&PC483Myy#dYoN3#_nb@o~{^BV?7 zza2nE2I>*5BWDfUdPD1agJUOA+AsbvO&OEqc*IoICmJ4m5M$U#U9+M{h(XI5l(Xgx zVbl;m0WTZzI((OS?Z(K=?NMoM9g%KD75|1F^bkgEsOQDy{#uPQm?;s!73YFZ>$UI! zLI;5`Ku&)2Y5|o<0x)^* z&05>QyWgl2>V`;nIwYm5Yvb(&*zupZ60h7X^>~589 zohHMx#kWn818j7^aW;}y@6>XGY;Pr{2CB8W;(1g-r!!jfPGJX8;h1zALckrl-UOAN z6P@uunWecl=A-{{shi$9=W@{p3vlmyRp2adBxi2WIdqDOpcC)lg6bA>|DfHXE1i>%Vpj|X&7uT4x}Vq(grxElq)+T*OOlXn17# zhHT{SA`1Wo3zLY9VlX#KEj8ZvG(AFyvk# zk6){qjUt(KaLnoFu$GchKJNLw{eHH(PU zTtgC)N<<=kAATR+|61?*e}BJcWj*)v-22}9zV@}RYdPCD+;ok21{(k3vCZf8Om48v zU0Kiat}dH_>(65}PLoU#%}tB^9tIe@ISHzAXIHRjGV2qs=Xw7UX@fzGo}C^-5e9RWaRe_GRBA z>jVuS{htrX$voY;4y?)~zH@a3(H>F!X^pq=B{->9Buh3w>6t-VFC-~xOROlm+pVa$ zjdtGF-cLgoD3Ve|wQW z6PwS?>lR(XtoL=weYv$N^?{cUixaJA}{W^ZdzLBY&i1!<7P~FaPb_A^%GDyW` zMU!Z#yA7jSR4Vko4epzr4aemg5L}|F{aZRH>Yj5Q&C;7gY`Z zG3Yxr2{A@@tnH+|CFNM8p>g~_NsJ{qu%bl!h}k{Hy`e6&+%_4+tffI-@@5KpFS;YrKPvM{8LHdplpo#Yk8;=DaYXH#O?&Z8pxQZmQ#P%J?iA zLu*ZU@g(8N@Ss831pYi)+@jF5WMw7$O**=!;MQ*wg4o+Do2ozDu*X#Oug4rXX=JX4 z@$z^qCwnnOp01&Am!&!dC;NkMn2YeeB)xfg>SKnfmJe^82ePvCtACskF1HOk!^(+c4L0zRB4nNZoX`vHms(#Zpo?1x-I zYCNU`l?IX-uwfk%5CBRuO8{TYH%k^JQmVBI&Z}e|MGpiGSkU;Y|3&3H%OuK;W$S)= z6ZJnW4AmJHqmgHa)W*KliQLMedt+VE?nI5gIq^|3Rr-FHRbr0s;PL(&OK|y8bqK+% zPU9TjlXigq__w_1-c-CvSPU;5->o%UWx0ymt z!8(a<)HcKT4vnnjO%mWfRahvL#@Ck8O1)0eQHeqpqa!%ImL`1s16>t{C51(I<(f2P z<&3TGy6oW`CnW%Fp*Wtt&D@eK*A7twD5QY8w(%W5`9CP~K;w)(Sm`{L!Db_5k@5FU z8(Lw}-Hhs*aQx6t09^nj>-4eZF2uYcG!FeFO~VvV>QNe6UYoZo9Jpsu7Zv&M?<`Gg z2emUl8YTA-$hxgmE)}1K>5mwQ{@ijI(5%a0)vtP&%B^z*v})j`4F%FpCV20b7J+vm>jSVD}%TKsRZE2=fhgfnA^SQ?n0 z|1rFfo*43P;9GgglHKR|@wy41nF52VzX3kiNx++Gtt$*k$b!ZmY1qioEW@DHW#GZq z{NSKPpXH4adne`k?ImAG!bbFzZjkNKJ|pY6s8Fda@ej8X_lz6|PygBXp+GlTqgq$v zP#I!cHLO*A`_x~$pug(B07c~9m(jGhXX5}B8ot%$2x(sv6kTYmaD_dHc?@%Ei?`jr zMAOv$o&Tbs&oh`}dc($c^Rtqc`!j}?N6l&exg3EjCxrjbB;CgWZ{c%BFKsb$9mEck z7S?&h&6x<-$e6NvvT#}Jze2tNoYrB*Xy26CsHbri+jD~ormIR?N^5m#X=o3 z-S--BrdxnLz0Og@t-7XWNSt)Eyp;QH+*UgHaJySh0jEe$%fOb{IB7MZms_>G7U3i_A!cA( z2Y6|Yxq4q#c{JOrBpFCeKt@dv+ficTbDy*CTn;gQwR$+k<>MupXS@IP*^{FU&@;_? zq0AeIp^6rJaUi?i{j={^4kw9ll>aLS(WvofAC1h?-4QwQ_SjD8BJX!j5?>o`H`?@- z=gABr&k`x1WhOu5^lyv1FRo}(E27dkcwth@$Aj77J4Oln1cI`zg%j+DaR~esEhDh; z2W{5&1#0#{T*z2 zlt|2_)eA)x1+bIjb7dv-MWsbq7NMG%pJKg+?vM`eHZSD&^2wX%K!mEmE0B1E?QhmM z{zY26$5*xnxgnuCXT`ChXKlJWI|+6V>NnWLG#xrN@eGG_8ha*3X=_$@)Dtr_OzyR? z?y^4fq};aTGktfBck#)FqZFr+BQ-)c~kuy0v+t|6pNi9$f%xT+zY);i_ znY4J6dZn5fG5^Kym?y{Rpc(6aceBIA)v%YA=hc*VEh_^3$F^;NoA9w|vVFkseTe2g zp3>lnU!Xcr{^}DJ;gQ zWsXfx2Z{!S42LIJdmO@CG&tRNAkR$DSYWrU6<9$aYe!sy(lSZaTs$+{=RLkBFLB~p z%OHjS6Y#)SI(&T};)EW!RkQK5MJG@5&2%qobJ(FNXQQM(8ykr(Z?CiuB`0?AVS|6d z4=*JZpZ&A%+2UT#uH4!C?oJCyeMzy%L!p~++XZBZZ^T=IrJ0jaYy~N3RAqss9SjC3 znPLTM)uTiJ%{f?mFcKt``D12dv;Os+VPX8<;S|2*$tCNivls_R!iq^7k_(VdisEKm zVR>bav+W}m%Z@fV6`?NjAU@scV2xIQx3BhSV^!va+^m}5vq{ZTJG+{$3xfXIz#h)W zmh%F`?5N7Aq?vVcCHxN6ECnRGaqS^FFsOmxkPzdS5jUV0g%q#?N5H*inM(5yCNP4M z_JXOE>AJe*O6jt@4NuW3$X|zkKEFAK+?e~{;Jd?K6XgGcahLvL%Wwf^N(TA6ax%_! z13d54+3fTXM)S8^E5*I2TAXmGXmsteU`lUvt|=ldGe}sl3zaXa_Gb_Ey~(YEjQb)7 z3!{`9-?tg}sP4XH8wr@Y9CYCP%X3d}j-U_TEje5LFQaddnY5Cxb&UNRkjGIfUv4R4 zA8cu{ey?o8N?)b;rHybF#S_^Vv-78k(Vw1fy%+Gbbn&|Epz*F(@er|haoKxV!rbhv z?!Pn{!oamyi##CChIKn=TlbvkA?%v~?*D1qXR&3ZhiSt^6$0~zXV+H~H&z~-wB=Nm zed=%p$Ywpn9p`HG&yKS_Zt~7AcwBQKkU|Y5UhS@wikNOoMOvH(15ZQ@8=cahfJFf!!GL$D^o4EOI)%GC>s;oAwKet52~q{S>CG~ zsaAa#<7j|>cYv_hozkzJJ=~|8psU>!p~T(FCHPI^Ow-IeVUtD6!4g3#B<}7#bNRPAa z0cALe^8|hu&aqF^;}CgO%ea!1FSDwg?|#}e+#wx&kcStOc?k4V435Tl{3_#cabf0< zU&h{<9S^y0b^3orn!4jU5f@#H&I2kBHfWY(6h?W^zdp%^)>VGs$zovYN*QXeI(HH+ z(xYYcSqBmq4eZ_0zS`NRp4 z(&utMAG}4bocYht;UsQ1U_uZ5JOTOV(9bE*#({9?-m)tZ>G-}Rc6gXD)f5eM<>>|U z!7?Rq80Lvx81>s^5LT!jY_M^je}-g@l|Px?y%c=AeTwMmpq{W%u4d19A6xq{FYs$YTRPn7oiR63Y3!HV}pYA ze(B)Xp6RX`od3UO$b2pVk%6FZ^~^ArdhqXZL`zs6!70b1z^;06)44GdGJ-aY4uhPE z)#);#Js?iHu2wVH{nkyc_|eC-!89qC3h3@V*Lo|5u`~k&T0}!HbKpCbOK=#jQSbQz zWGKjc+@YV7r$&F6q<$)#)&f151^lVJt;g|vg1q=gIVj4okRx z`Y5XW63qtn~co zA(G!t?5f;!l^W9h;Y&|pJfFhn{H&B`^9kC(XUNCQpcqHDqPbs~V>}Y_B-Wpq2P%U- zpU{3Tk3Q_RS?J^gnY)p71&~;8ArQ2Lo_z1SJAY&>xrE!faag5I%4c^)0Udw#T{e5u zn3P4JEl}Q2#=5y*COPWjU#D<-2@?*v_jgE>mVR8NrN}FJxLN;pq=s7-`iV4%T| zaKywkFlqtq+ld!FU5sxQ+!BWG5BKFI60#>F1GZfK+2CVWP}k5E0&A*^^J*Sb02%t)h%_G^=*X@{7JY8UywyFWaiI>1M@ zT;a5bI;75eg~8!@`Ah$P%)4{nH7)C0#X^`ZFzkn)2e2}1E2GO;%JyUfERt2 zP{XOmwNhwG)AsrbHlk*i#o_{w$0t33Obz3n&e3@bFyRELM82Xh!oJx171TVYjA7F$ z9Wh`-Afphy`yYFNivSg%w?t6W6Rpq(UN9xqqXa)(Gqa@fV6hA-9EPigL#x!=q;Ke5 z`kaRsHZiktO>+(r5mtb)@YX*sZ<&>1HBa7myAcabix6s|69Mofq(--JttqzDj(_BaIsq+^*8;X z^mml~%dZcG+zux{Y2Dv7?0>kNcYhP=?KjmjvDG!c^I}AMe+DVYN-J_s;7eXXj}d(p z?fkKKK_%0#i#~w$hr^HDA0wXDJ}cpP9A;zCxFXrQsB+G*=FE?;|J-v6Be<$hbL)G~ zs(!^x6?|7%`#6dSJ0l|2zLOycgC)w_6`CC~q&T>k9qcXYn{E#%lBSN?)0*Fp*3`aic}DeiY-s2ZuFa6#?xe%wV^&sbA^-b^%Kr4fo#^X1Z+C&bPw5h@EbF| zt3mISW~6voB=q?2tY(#(fe_``wo5~T@ds5|=D1uY(m8Gl70k>X$Tr;);qeWGIYAq< zeLCGPwEgZ_p&(Z!cH@K~Y31=*2!F2&$!1zdfd z>p0HQc;i7eN3e{UzO}K4^^q3JRPwAES(U^PxQ4D=g)a|7qV4!jZw+1reA50db+dXl zBQO8m&WInQ-~DGFjQo^GXAbo^Q*1B6eb&kck$=-^@6>Ph=Dag?kNF;a&?CwFRf)7# zlCaX~Yuv&+%n4H))mK7J%)gUXZZ!Vc=L%>e5;>m--T}r0dJBl2{sAJci~yW2-`vpB z7LjVB9G^-#I!E4f)6q%Lk?=4W>f%~VPo00lDNOqJR$OjLdD#Fs>YvH_kDm+g+~9T% zJRIzU*H<#Ikd$x->{-l7UJ3xfpZ;BUuT1uc;SulHPoWDgapN~|>6}uy!eGWwaJ9|_jDEIK*nRC|jmSa}=9HP1;XApc4<%)V4aQW_Di!*H$EYzef!PYlkp`tstzZwsWm`^ zIJog~2xi#9ae4puv`K>xKh+vNK9qc@I2fANXhc-@Ydm;AM2JXAa<@^t@a@}J?N|5zQqwKHy4wg09%; zDe{|%YODE4y*`&<-js7n`_qT3s0xJ6Yth2tdT6?ks0|BkKkb)#)bRMmr|N5S28lO1 zzkLw7ELlm};=qfCG1$ zR1<`?k>YogZ&~Z{>1eNqFK;J`&2V|s=!|{3ky9x)Arsca*a0kyEYPsezlVZ!ylMRO1&1b zi|qK1r>#5Nl7g5>3a(i1SR4~wLkgObovVBa-7%4zh~;+ncsZv^h^NTKF11S0`tnOA|m-Iidw0j zRJ1b>MfX);;2c?+Vg>a+8|hv{U}vB9JCGD~9k_lgDS0N6TfGI1#2ZdR3m#wJ?|*Ir z@zr+K8YIk2_%M)nTXDnqYRA9{c8vPjiXyvsjMsM>1_%h?d+WV{;f+2K; zq?_hIw>OvCsqf2I74hkPFwX!FRb0%J18#zT&t{ay_my50u~yD+1oNmF?y;@&C+T8Y z>XU0C*ZjAdE8#xwiKjm19@IBZ9khZnzwfx9kq>X_+S4Pf*|vFPnY51r!O6 zW@6>$aurk9`ilCtcvR36sC(n&v4%z0^G1RdMRt7?D>^yh2l4y2ceGI~WT!|xzmfm^ zWxGpWQmsGKUEyNi31KE@MGqdp&FQ_Kw$FhsE?;K%eKrvUSs2}Wn$saV4p&w|8HlNK zii-;4wQ^8br|lgaAaLta$z?wO_?lR6u-$=WP^CBbXfLM)4=DGv zjNNRS^izjd{-T%Dw`>q*KfCF@ww@ssibbzKM=fVzuAIY6E|FpI+o!vf6$})5ZM#40 z1lq6g;dO_2-NCcVI!Wv{2lV#bLScU&?2yrs_(JE81`B6zarFIGVbkKXS}*9<-ITyp~79r{cSZ z*#;gf!M4^x2wQ62@)yfROIiKF-vpC|$ttQ`Q^ky4IswbVV5Vs#!5yQzYBnz8brkjl zr#4_=)W^dc-KLUl}PM8L^2jDC+w9Ga)Xbf|{;l3}~DVWa5bS*y}Tdjm5T-{89%&^wDAqO<1j)7bNlq&Yv*~w(498c3A8IiuGsK{) zjpd*D4g9p-kJr|lxJwnnc~ikTJt(L$*kmqz0xWu{p~+BmMY%l9Bk@{gzW9ORg#BUy-W!drdJ&AvfE!`?zEJ^(#H&sp z>+u-%P@?~RUrHfn>g@E&wOeOdN7{cTct+Xq`kv1LywVNoOZ`ND8?dC*INF^v3l^VKj7*C(C{rAL;7OB`` z12f*t^eAH_Vvb=ueb|2zCYJG*os)`gg?g%uR3tXVvTiD(b}aaHiJ(yG6nS+gB5#)0^ck>Dk!b-MGeNWn0E7QOf#?65i5;mT z3~S&z{TQ+2&Hd6M3rMIS7GyRsY%2)# zmBT7VD``P`iI7uN8GP7#R^4NGn&?s_!*7f7*Vfx$!4_0FFy$9_HSc;=33rz&kisvO zl(Y>sGr+qIGZ#d*liQztAMsljr~qmtFwHkJd2=gdtl`sERj|;uAxF8Hm~-LgB%U-p zq|J5JGF)yM?)TSgSBd79p5kfjf;wdlJR=+-mWofsjzwX4r$Z8X=E8iRhwqa*BH19@ zAMbFm`%PssB%&5{bW=z9NzXcQZuC~b(vz$#y2VX?j}LwP7dI_5AE$!=lxgLaI{2F- zn|DtuW5MZRST9ds%ZJ?*2B(M*lCWhUhS_7viue$93T*3Hz3JcAAiL_#gn2=zwHabB zzRy2xJZ0(Ob_E+%QR>!jD6rnNH>rk-V;>H*rN^>mx!8bQgF&Kh1UG+~FO?2{0>usf zK=vY0+qw;y@eb3q-ZieefJE#U%C;k>V4@)x_x9`1h>fefS3yaNVNI5HK!>@S`+4!* zzAX%3bq~Bk9M_U(&m*qu6s|eFL7oG%tb^3oh$AH1G5GL@?V_L{+WlcGs4+$A_fB|i z0M-->@tu(V9OL5NVQDFUJO57A|Hhu|@b6pfAz=srvON`sFv;Pfs}Q|+hd)T@_ z#2Ir7ga&F6wLXB}g-8@=3CQjNXMljiPyQAx(>*haovQ?p!yp6;JEx##sWKW zP1pEnm`jDPtn_VjC+l!(dEfP}{!=ULk|C22BlcfT*?!1gi{(E7u5tqN{3K11faLn=AksX9~!G_hkwSFV17OT}wO&mXVDEsgxv z@T+}4#STwOm~?o8-)J;RdsQ&;j+0+Kv5o$iqpHovCqy0}v$BZU>+wGL#f{j~U&pHg z{1-gCbz?wv$qhb+n5%xi*-w8O^@fCb`LwsAJl)Kdd3 z8PUs@U=P=jDcZS1NV!r?*YYM5rrHWV?zXx3t(_V%Lb!IH9v;*vB=dagh+h5nu;{C{ zmfNvjmk?3bT_Pci%DWR~LCWl6V4`ai2>$oBbUn7{x@Dz0qQh^AZa>f65hCW=jy#+6 z%c{mKcJ@OdS*zu^+ma|IJJRo`6l!v(HKk+h;=!X9W)@rQ?33n)Q_Ob5xG=)tcTuNr z5+jTE6se&j=}sRZOX1U#d^TC#xkcz=n+Ms7JL6a14pFFUlhzZHb~bofKASJ4>7h+_ zD-wcRb}CmjrP6Capxx*5KpxO>-}Ges1%!uc;CMF=S!!9&v1Pkiy4Ao#A2-O=5Ko8x zcyzIyX7ZvTLF?JLMlG06&HBu1Yl~8;yKf@(H1A9UAv@?C`SZ`dPTd7C8L48>?KB@y z2MC`Tw6|;lh6gQ7TDJl}xs8boSewR^gu`+pY_ITZFae5BZhl5PWjnU1`5jcRe(52N zru38JY;tY4LsCIwpSR?Ok`O)n7c=bs?7Nt_%-%nWTT)+}t{-uLG1`lqA;wMTuL@L7jk*{{L?D&ngiS5AtsI;|HG zi|j>Q+@LM+zIW?$b^Tr8l8?h;wm?w@WMKv4CeQq&>VLml^;le$I^pS66PSGIt~mnO zAgfP#KX`CZH?~m6*j-1AY1@sUE_F^RKYFBzmmPQdWi)T&O2PE6WSr#Re*he@zqkf_ zO254S@uTqIq&2vEgXV&Hi`PG=v}vml*3J5b;LK$_0C z)qfseEd0v!Y&WH_|6&LoCO_k@4CzV#_Yo`)2fuA*bCEYIFxkJIady z+SE(?2{jKxb@`S;TBdVi{rYOL^4=~U2DKR+3(N(L_QvHQnWGRpmOd=bPgF< zN{ya*VxuUPYGriHln4CT7#>$WEau8>N6grY#ccf9wRb|c4`TN}34JV~- zgT;*dVd1U61$=)?(Z~J5KpnRWe^D#?J(5f8h2KwWhmQxIJAd0q@=ZZvX=XW}p<&v` zE~}gAkrKks^>?csOXOFF4(nRLM&~wSfCDqP@$C%)bUHR_U>DCCRI{Y8s+GlZ>saLy zmB39RC-i1~uSp%#`l9~7VU>p7a@kR@-QMegUn%c4u2w$6iEQqleJayAlgVKztEffi zDxQOlU(1|H*<|?1K~RsYY#h%iM?Hq9dX#ckIR}`%)$D18iQn~-Xg4!6ICv&V&|*RG zXZOh9e;14Q8o{+};K?*~GqklBMfsuo!itM|)=sCiMCWY2QA5qrs<|3%+`cX-WvSWU zRrww9caD?)58IpOb?SW{56(N7e;WpPXZaQRs(lMlmH+H9xE`xR8QScnT0{!)Wu4N9 zu$G9k2$h!Kzq)&GgNv~NvwrHU$O}Ye-G<=l>24b8ox@*B?W-NDiCwFd#&=~T)tTzR zlAG!}S5@@H#IBB}Iqsf!VmupsU&jKz6GGqmpgTi}0EK1b)Rv(uwdRYyk<&qEXSM)c zDSmvAvFr*uy4`eq)%0@@1@RUa7oQ?WoADw%mV3ZnE|y)9oz0Lb%-L%IP}@4ypJKD6EAuHeBo$VnCBT3doKN2j^)|E4oj1hc7uEYMb1i!!}lQpcTU~R z!~S8Pe(BUuruc$Kh)z9`D7Zm$=qh0SxIhr&OO4jjAc*b{ruLq7Da2Q8XSldtd3P+K zuvpMO=gIt8jcjMlJ?AWYU*CbnaS%Y#{pJfJGmexD*aPA7J$Gi5I9b0kVPhUv^r65p z`a_TH$;)|vVYPIx#7>>5ii!WT&pGWySkvTQ^S%NO^hAsF|Lm(V+|cEnB8~)!{jGC* zQM1V39qhQVh2@?MI7Z%i-G~9TIgYILNAqY(Bh!&rb5VHAS);#4Xs>z!3n=NR^o6N}}Ys)dp`2Y$i zCj6k0!_}j$isyr56cwx+w!K|LMS?0ra6pPj6^DyCNdK3T-tw|E4;_WhKH4NVX*gH% zsq9lpj7L%F=aScXBC(-w9%^c)RDL>f=YP%lOxRu6gWoKM32?_?O6qZc={7s*!hzfU z#+!_~f%f5Owjlk@iCpm%hNMt$z-%Th~)fc0=wVh<<;I2zVmSK)QGk z-Ck4}H*7g+A)_AK|HM%JJ>OV${wqQ$mkkH#Mq8JAR!QhS+&6 z{{r#pr*#fk+Z!1eB*v7C>=ul-9wBrQi(UT$yXxowwGzr@ny! zI|HFX&cu0hM>)h9CY`-3Kt}*tk{rDw)!O`*NYJjx}yuH(^-l(m+% zRWaI_=)2|%t|oEQIidLd<|&`w4D1hQs+G0rYaKaRP#hz6-|o;JMaj!--G`k)9e57v zM6gT3RM)2F?LhC42RM;cJmsMDy2+q#w1prpT9b$l)@^kpvz@9`bd_7YxJ_h|Y9{RgFS3m} z_Bg+)1hWl4g25=*FNMu+aDtemTS4cVw&omgMkjxycG>TRk(~fNlNXFjr6=gqbITB z_KBGVl`-4cPPf9{uUcxxHl+$IejOoqI^lKfxc{*O#&kutBWGc5tivv@+v%ve!cI!X z0$t(f6|Bq?W`gP3T7O$*-|RLK;^Mz~DCdY#)Rz_m346VJ^@3JiidW}$kHH2|2BP0! zF`f*F!zV+#b&!DLY}&N0M$65h{&u!-43P+Of%M@T*BNfV0O7XQpUWJu53RJXD5l@t ztMswAW0YOZRsU{DLDQb{-5}AU`Ev<8S0`=YT*~NlTF6;HHs9X9B{`;htZDpoGZsE? zYL>5V(Al>$!I@KypFF7UA@3F(1_-WP_aGMaLK{k~^B-uATnp_kD$l)Gl)pzI0kkE+ zz+6ZV!)ZManPCrR7X;Z1Pv(-w5E7xfkNw1dPQc^JSDE-uUSnJnI(j{#N7Seirta^1 zoM`=DkF~zFUiA3!y52hfyN{itcUQf{ps|U;LTz%ig$i!VcE&ufYfA`&0ewqKa%iMW zE>fvmJGtzeIjhDxmK7gF!7iKQMssK;Er06%!!>)8p_aSN*2YSzXCgGG02!gY-HXDn zWk7urwWLNsT;tv1R&3p$BrVmnxMK7v*-C@U%30XcMJi-*5Vq<2VlZ=J3Pgrv^g9Rl z`1bX@>ZeXU{b)Jo{YdHY9G~@ZAnEDs)-)rLzjUvM8!YY2?=f`h4)Nfkzc-QGOXRs= z8X(*VR07dDXPov`pFq@v?DUAeB(B>6Bj$mgI#|0+Wmq_w^-mA?kp{6oLejAO`dNm| z-VFpO|K#yk!aEp}2VbCo^7pGNppyUE=Cm`kuj3UPYQHgybTPxwpSb3KHL2OqDm07S z;on+I+-&tMla;c=99J>9Q>*_o*I_S**%WQWv4MrlgR-<)Xx^1D2>T9Pv>66v6;pPS zd9PaZeK+2UNiH4&)9@>OQ1_2p`Dxhmt)1r--J~oO(@~Qc@>Ay$^+Do` z%64YEDL<~;Z3DnwRY=v1Os0?QMGwI7@!>6vx(|iGMXh6akAXf~6r9lutk{H+!!Ck> z=-;*gD8hxS35bykfF-HS=>Uma_<>T=>j{ty?^GKac2<5KWJf6k-acbx zjcX^#KS#pKW#`51uLsu*(TKbR*a*2WKPrF>)wBdd6{LH~4rPNl=Lvhfw~If?VOXPC z3FHTHAk{O3D{ygb9%YN=pJLO!K1Nl-Qq=hS&34n99O4^1;vPa1x|m>h0Q8^jH1m#>c`>(zYII--a}m z`Hz3L_B9{AcWxKu_-MkgWfKrr#8Mk0ENRp{p0}6@mgRYad4BLm*lj?t^0Xv9a?S>5 zCn*w*%#y^|3{-PdN2LdGb2Rg&li9m2zv|3(YqQv#HR=3pJwDytM}_h{5Z6$PmU-WS z(hSX@?HJ&7vm!JvVWS^Gv|ra_oGc(XMk)ypQcpXe(M{>Y)b6C!HBD#8;#5*i z#HV^(8T&;oex*IN>Nt2~cXP+HI#5~U-ql$aV`f6PdudU*n-a~iEseO%4VwaV2w9a{ za~P+vXWg6Ordoc%m6W0m=O>~E>4HILtU~yUQQy17eH3%E3!^@!lpC3WvqX1K*}^q5 z#uV?-PVE#zazne8JE|GUzR$wj!-8GCHf_Ix-s1N!1Ny@r=>GjOX4ca3XdPP@G{~K) z`@qe)L(!ctF!jf^itOwom!zXiw%K0iO-5=Nc^IVbEBE4HpkVizQi>I5?&Oz zrZb`KbZDBU9OHm%dCDG$#p*sxQXciw7j2PVQEf{Mby(W<&)=u{W!DZ*6Vw`GTn zybnZThlZhTV)2*3dywYJ;G>`O($NoMJsDqizj_J&ERg<`8K)32i1iPS1+;$3q&+}` z^`z&0TGLc2Ve4T+k*MI@h>ePZa+)GuKc{Ci_t1E1Nv~*t{KyIGd#%!9y>$e0K9|v} z0(;{Hca+nR08=^U_Y&QQXNkXfIrsUN*bJSck>1L!VYi2hx-h}pr&{MQZkgr5_JYHi zQ>Ob%OJR=lt)pY3Kg_#s3MxLOl$1!G9I=*K-mQ_vb>|t}ZxMG`WG|Kt*$EhnT4h%U z@{~(zau|a3rN|w*?AA%2ZfZx zioE`a-2K`GO7XlfL@x*rJG42aMFXbJJ-05>ZBI^FU%ReLXR=+_UHo!3A~JktS7m=a zoyeVG92TmEE&2G$HM<3FdZ0krj~^m8&JCSGMQJ#AYXh&b;(0^}K!|h7bhycF*G;y) z6U6dc^TUiGu3kiC%ukQ4a2>w`Zc=M8(c5ZINkNlZWRwS4cgj8Ism=S_W+Gdf@d?MP z22`XH1$Y1L1MDxxX*Q4z)Rpr<+M%a^3U&84@SKpMx*7dj+KOpwy~vJ=IJ#aH2ZdP< zu%Gj>z9}tJTS7eef>19^icCo^^-7V84?1PuRfsG7WVaXH6npN5PS8A%K|L9-3a9To zWQ`(vBiR)GgUooOnL-SQpr36r8YB3rJ(wcS!p!BS#3#4+`4 zV&*C$)nVD3VfHL2UFNT8qQPN;y(KC*SS9;Gw#apxFVol7(g^|wkJn{BkX`YXMuL*Q zw3^-h@dBK&yEP_M=RE1~Ewy!UQ-o32hb_!FF|G`T2=g^=Cjxw~gUzZ}aaYj(e@8>d zMqSjEt?wzSliOO=e@;?TUzfU~kRbDvipcZ7Guf}t?7{)#11#QYQuAfm6<(4^G`aU(Y|!1F9i4;7&bXp1hD{_v5E*iy?I<4TI)gQ)s);?(9OO zD{2z&e*bl9{aMEzB(uX)q59Qx0Z_sap}8#|=3cBW(+*k`8*0R-V?`yb>bJOR{M5;- z_IM1P9x;OyIw*YzD?E9v^WP-PuK5p%`$aot?dHO4wq)oAi)RSiEyxMs#}&!7zf|w@ zEl&z7NUxSoV7>kA8dOFbGRfYQzTqZV;U;j{ydR=e)W`KvAAG%+V3w4ocIPF;exB;G z*yZVv0ZFlwaIokUjJ^FKcKnV9Y~RX>?=@x@B4=*TpBy( zz&khxpZu9d*u*DHhlP;znS2oLvi!Ip--Qt60RmdQ5->KcYJ zOZ&4=M(3Wjg z9#0`wE}@N1*SB_U>+tnH&;Uw?&=ygyE6*()1q`4@aDS~tG_$qn0`d&42;ZaOxg?_J z>4_Y(M}E~YANtFG?*w7JYwRuba{~(a;!*c6C97qI}|BgpSLil04P#d zUpM`-l#WRZV#!ncr~?Y&i!`Q^=VEx)hn)rIYDdV)=7=*f3TQ17vo|9a)Ai)|a^r+= zdhL#4x#7>ru8ZG~4WWSJx;-%k7XgDA<`LT9ENtOK(V$AC;{#e#c`OZE)DE1da;8AN;b&W4KT=omV>sJ={syf+W zEBKI4Rr6QK%jqT9RE9gbQo+Uhgi$~+3y)X2@LJ7K)WQBHLa^COUrqmvu}hSMibi~6 z6cqQ7B^v^LM8@^aC$y}lqBHy2iLP}hB|}PIGuU}ZK55FnpVf`22%V*d=+tb}7oj5T zylMN8vx?w_G0=c5+nNRLdhglVf@a^rX3RretH1&_bD>K+hq>|JkFXZUkn(0Z-+;k% z)g6QAiNW}=t-Bu{OLfH>9(9z>x|?bWI{z!U=$>Ch6I;Kfber*HO{AaQ7ntN4^ll_q zkU;8is+paHYlY0i5<8c5--;RGnGRxyF8n{ty;oF|X%{xkjD@iPDk3UEMiEe?h%}{T z97F^KM7oqHy(N(rgak5zih_WE^d=y^gCszJ2neAgy@Vvvr6duMgpd&bC%o%F{MPyo zzr&nl-OpWix%RcMtq1fwWJ6mn+xL8mQ04Qhu zxZ|WRtnU?gaOjnIkF-WOctz;g9BP;83M{aHIc+axu}Iz4!8JC?ku0aqM;sv4Nli60 ze!hRdpW;lCgG(3~=4CdcF1?o|9|$oyOj%yxBr>y~{pOQ*NM9RV)~^Bi&<11A;!|<+ z-wA_)^@LRE+}s}|!URNuiFIH|ozcmh3)o6 zp|W8*yEfV7osGOZyRzcf|J))tmrv}Fiu(mWYZUt%IR3x~;6g#|Rm<>Ow| zy{QoG$nL-iEgsl{REDY`D4c7`%b}--5ZMmvp!dH>W7UF`?#}v(u7bWm^x%cq$L%rw z9U>3>CynUwecvuEh)Dk&9%Ch4{pVzSov)&!{`bw$|H7TP)dwa6sjF`DgggPop4gp- zf?yUL!2UJQ$EJcWl&D?%?z6{M-&{zT>l_ZRNS^ONJU*&{h-euv-BUAY@Vs85pKz1W z_2*S*gk3}8qhv~j{Y18a?+Mo;N$*Z__QeaQt6fC-(+pOeN@K2AR@{7@R z#QryBgihfB3v?$T0&P42D4paZF>;zT^;L!OHF7_+KGn5VZ9dkK)@Qtw499r5`$n8- z=<iiOu7)1zSSQ}G0)=WPdqpi=eOts9p%P{Mz|*PkPl6=a{hR^+eOD!R*_ zq0E_wByWnMyay9iLqsMsO~zS}*imiqpA$|@b#H3RXxI1xG7>sVgj{O5vsBYORPPs( z;x@BZx54%k%X;9j(6fYD4AFUHC#`=<_U~}1288%Lx;{2Y3;)Y9&@%opHEBYb@XWqq z+BTj2jk%e6E>*QGAwRQMOZ{YZT~pYRO9{(#%GDsv=@vW6UQ)zNb17=+$E_S}jA!#S zf*4(QQZ2u38Y3Qg1rzlgv58rlLlUDTeX!HhkXF@rm}N5c^f00EMZxYHb?nH>$~E-% z-dgDvl9h%Er+_aqUxVihyNoAS0WoGL5wP*E0rE;#_l&*Q=UVNc@qSZm6^>@#JaKw2 z0F!VLk2>Y@(r3=&wZ`j;>~jLeS3JfX1>KmUDKK@9yhWO8bNEw?1-8!GZaOFI#Hm}y zA4)Y|>*0^=ot23wcGSB!e{ZA|9SCVyuFJquEn5Rkk-y4BxH zyZT^QX(Aw3=DrI~*6>&zR`d_ggCCgzM|Ah5$?Y+&lYwlS>(Uw(2SfS@k^<3CKWBM) zJ1tu$m2t&jL{He`E{8WUxq3$`?Vpb`m-q0EHXz8_;4oAAyY;bW2H4&2Y#_oLTjW-5 z1$=uqv1{)Px(zR!C(on1+gVDwW8bK;Ns#N9u)%3%DG7AJuCA}?;n-5gCv_?0FYE8L z9sk?QzwB8v_jBwoE3b=>BR}05xnM2V$Vi@gUN#$%dTaQr+V}4&XKIe$xqc_1GUF3R z>H4Qj1rJ>=KKTx&FxjmO%j#t9ScXvOweJ5ui&bpESTnJ03{6xiKo*)=sc!^|X1E*2 zA6}nsZ&{JBkzavqG=SFOwBLL!hMbfY`de-NY+BX^=^->E=f#lG{iA=FWs__pOU}Qo zw$*og>hL)D9e1g(PB_J5EY9)uxe}T9qxWR8uFj|3%5z&3$XZ5{-LAT3mgK%RunV)i zl9Xp2^T)@wqQm;v&f_W-wLdb@+0EO_&80*NlwsMtbS$m*lz%Jq&%{$C`@REmXNJ7& zeNS{`&b_{zG-sWgaJ2X`F?)@R-LBq6j(L@%GXp!O?UI8z|Is8W=zC+EvDlhhN4@V} zgGI-l`8r9`u9+^~JIaAghty_~$I=N--jg*Ox(!%~1)`=Ie`*nF+ax|F&F0EVQ%W+N zmaJf}!)k$V!2J9K7WynCZC&n_&p9$MrX(egr_pwD!*;f};Xd0-4X* zgHnZ>Lu4@q=@+8KwYCFPte)>kpizp&->3{k#(j4fj*Z9PURdhq)Hw<-Zvef zG<@t7-=77EYb6qs$dFp38Fg8T4euS()al0F_7J;n5%l27fx#{#NH&R2egOI zMsrT2drjX%&y)@_@ZVPelFCykm&lPUdAS1zMjk@Aevmb^0-bw!Z;)0TQn~`RWYT|+ z{=dfV1cI+*NH1^76$^0gis&WPT4vzG`C#3-z{fPB)JdGJ?{Z)w$aASC^(A#XKig$i zDFmH1eM`xWu3t|yqsYqog=yOfZ&81375p8;--Y_4h{V>YR66~v`}VtAiZS3z z)&7a^A03R$yY{N$ON-5lV{ul@t@TU1f2)XPDF9W&#_UC>(Ga}Rr1*&arqBYsJ8K{r zgIlYU&MWVnt6_BkBLv=As`DGfm6rBeL z=rr}6oXv5EKeH=WF%Kp$7gJPR@{@hc1|%cRW-njr<{^-Of>nO=B}8-s;9{E9U9>8G zF%GYxSd8?|91vZ^+XNo=LakTe>Cq**QRfmTlC!%9<{HUz?rzrJ93gm&vqZ+co-PaZ( zX!|rw%WY0NK5^L_t)TsOrlArbon2$|FT%Uval{oi|7X7`?N*%gnl}D}cfn%cD4|+y ze7@IQu3@h`i)6t%zT|5dtda3y4gx6MR4|X9->t^owU`Xv9Zm> zjd1v{g7K-H{?=w$%~()lwXNSgMi%vY_KU?fRift;k#0I_b1HrWc0LV2)4sMHPmtrm zX`?0?_?~5aixFDAauK)1d`jbHeFel@`z-&Bs8u7=X2gagYL(+HmY8=9MJH3d!4Q~0 zb;6w})wA%qbMI`%&kFo=j0eu^9ayT|yvj<)aG?mdEkUjkM1?_br)|*PRQDFgwUc%2 ztwxa({u5)vV=(z)*KlV<=QYVQ3#B$S+c(PwMtTSmzBZmKtHr~Ggnb%^2I@5TF64Rv z3s(hj;^j3wzMh*;?d*BX!k2g9jfJUAZy!Xqx)$f7&P~1{VS9+L18|nh%^2>&59^ zi=G-5MuBFCUiC`iL8DQrY5h`3!buV3 z`@)7U`y(g++%W;DW~=yQ@+LJios$aG7{T`g6u*)ODN`+9b5_Cc*&)6`A#dY)^>y`) zVmjX~6SCuWG&qS03SrqGHQ3uK5u3A0zxuU~ueN}BH8wyuEg8S*%hKfFLN9VQE7tId zw#X`U8ff5%UpiZL(>BPlgjn{|zFF_guky8~q`Tq1)U4Ku86Q)+amRq`4c24MA@fw( zcj=Pz;#WuiN2sxC%Pii+IisGe$`@~i*CMQZIHm2gzTW~xT>?4;4l6s;GG@~A)NLZl zzI=1qWtX~ptgImF^aSL>v<|Cn-C5{dVC}0;lx6Ml?8kKW;K;1Z)K z$7xuFcyk53|UF{cfQx@#t^D*4^&o$#P*`tXuY1jwHhuRW( z81B$9RtInx6YCPQTz|AEuzB=OdCIV@SS4dQ1O=y~KWOrYx?-0^5zB#<_ZgV+ne;;c zfKW|X0F4TidNF&G>8^<``ITjDUs*q#i{sr?hkN&##8penJAeGtL?K*E0^pFBl#^Jr zujTRv5rf5G^?|OyL57RN>eo84Ijp=fr`Nluc}(Yfr;bL($hfv?@qex7^dCj>s0*uA zXaFDF%%y=MvgPm@fNByatnXLylWoPVD=Y!isgQtL49qGJrd1AdaKHC z23n?{UkC}+hcXK^k{;VZVX%0s$T|t=5#jx-e6n&8fai~VTNhfyaXLet0@d7t{As&8 zx5?sv07bvX%F1e7X^kg4PrQZ=#%Lr2KSeA*edvNPmf`z635~10akHf9mEb~oS;>dn z8ea=?Ay}Tv$=$|o`g48JM|bZxasNP_WF`C@DE(d-;2M~bqP?{#=E7Kj$Z7C9zGqKq@gO|l8kBjE& zXu;oNCvSjXu3lt&=leZqId^sAa~5#Y-_CJb@NtA*^h^7T zTeyJjiQbm%o&K$erIyVp-15n^osJ=3FHsgdzxmFz_0x@7Bi6*D#xlF>Zk%)tW-6*X zx+rDo#&nL&Zsfijz8HTbzLd9CdE6RH5PiKeJ%qiH_Z+ngH0R42*Gxks*g}UUao8sA zQ2=g)qLcBG1=C~CcQZmoF@BnrUQqGW*ut3rb74!vo#~f^r!^vg!dG;$>1iLHkFu2k z2;x;NVG=MtldJDf=#cNOVz`AM25sClCY)*9o_Ijusp&GWgRF)gMW0+ZDm z0J$&J2+yS@pOee(uuM_@(wHC1TVx(20_g1eV6qrA@tg0wMxZ;Yb!RP{ZjxXfk{jNr zc^?|M+yiZ>W2*hC?6Pw4J%;fSgV$&fh0hR)8&-PJguZ$?3q5=JOD1N2j&>{Q@GP3v zB;;oXJ|okdnquVkCoRFhs1e*v~#-1`f&v}QL>?D!sxtgk{w+Betlwyw&q_?>>Mduhiaw^%=s zNAnG^A+>XW_?t(^?~@d%YZPLoqE&?6iKWju(%&8aNx5nKVamD@x@Dz9%*^^QS3L=O zg9jD)2KWq(nK1IMrY3{#TS^vt8os`BfVYn`TYy-sPWLp<%@w+e`1A!T-u#MqR>LZ> zAlO^yfS6Har&-hBT4GM_Cq20!M}>VBh&h^5h~`DLCs}!%Ssgvb5`9&mqXwM<>RyGd zu4Gu*E@QJG0nqYFAumoQ1s=P;D?d1a(?9uYM*a;g!`xBM2;rGMXky+1J=reD?D{OX(I${{ni`r z-8dp#hJPwI{a1p~9$>G^Avi2c0Dwn9ap*IlC;eqSP$^vd)Af|a`Ff3I@o&xW>W$`= z|E8N?ea1+iiV!hq!lh$mg9otB6rE>%Y!L|}_w`;)KbtT0@bp~sk`3Ki+YkG&is`@k zj)T)Fu1vw*?q5s~v>foUqDa9owXY~^t~=-)Q5B=3Gto1-+mtWlKqE)5>DIG#&p~Ws z^bMHKS@%Akyt84X1q#|v&xAQ5Tm!TsI2rIyThy3n;KdT){_1_)dD;$g%Ll>e{{gUl z>_z{}$`(3I3QcVbAb3&VjR-_oym@KB@jUO1aLB^kJg*d8n@TI`e&K~Lo+ITLlzkf2_*7H%C++CBW z^GR93u0=8NuX8JoYG|P4d^>ni8egdFgTwmYyx6CSM6HRJY#8~bDQS%1gID=C>{Ss+dwjMQe~Bc zEH|!PWAfhHSPB|&rHe)+$~Er4D18?7XL|kaasd~{QLiY=pNbDu5LHZEq4iFkJKrDJ420P&Irrv&!B zGjT;QyQ1IPPKbwWgwNAh^s_BTQRwyy#_FdV_M#{D(yiYr(EAEVoh&cNpNXRyHL&fV zbH0f;DtTG7MW_f`8u9^r0UZbKF?fH`t-P%WPW!=BA$FY2Z(gfPh}U_%xeuO6Q%m5?B(P zXf+U;&2_uae^a=9ZRSdv=ic|! z;u3_~nL?_F&(hJ+vXlks!m_k*9=PIvIM8kLHutIhEC(3YjDpa>ncbUKOXwc*`da90 zKTU_aUatNpiOqvqKz21dHV*+B61 z!;GcPN#$D01aJZ}+u}40YZMgeH%|LH^(oKEy2tOUWqzY>B+uz@fp!*0Abq+E*j|8dClF4`mP7WI z<1~G?U2jB$AYMVfRK5(D6i>kUB5k!NaEh2Brnt!Au`jfvX|jDCP~)-0oUe0dWC|-h zt~u25_EMeF0}A0_*YS%J8zX4c!iFP_K<~-J=KEJY#Pm#2Nj~_kplwLx(TLjsXTbkmZev z-NA0K{kO9_y}@_q{W1s5>Te(`lBE>BQ>Ow^L(rr6Xwu@u_T+<#$#v_M+@j)UbKfI2 zPEmvl`-It3p&}?}pbP7kH~d4UL1PO5YAKmSXcIPUg;RS5XS6*gY$ZJ%nVsuxy>(lk zp9kBCgo3|gEzL(v?l%^EEJ`5M`(R&-O6ZT}@&d5cFFLwtIdTk^2r)eOMV^e7qk1=6F1k=hv0C2tWhsGB6ePA^`C84Zhq< z-FOtfp#KGy8C$%CR9v9%+Q$}R4S@-FuB}F?1eahOd{G_oD9d2$+!Z6qky+>KfIQwO ze-$dv)@lZ3Zx*qbqYy9?w57qdv7g<5dk0R0ZtIZO@JY=gn}smOr{8?yIMG|L+o2Co z?0L_H-HsbL_K}BU>31V5j^518EeOs8TA-P{| zqVL{LMP1@;t`WFPnPtw*-fZ5vHbW5!y-$}YBoPZg>*ygs?zhu^loOh2Q_gFrHv^2E z#yQ!mzUlOeU8amd!}qT3J^!+|FlQLfpUVJ{nd*wytKyH6zmFsP<_Y-Jk+H6{l zO-3J40!U1S!F0iIKroOo8B!H$0>7}+LA{EIux9Xe&gM>P2TTy#HLI#kVHffb5^?G= zg)x>nF}X+Z5kkD}?Kk1P({Xpb2yl{_2FVo2*(+<{51p$?l?$h>sm$rb4>-z!chr_o zB@Hr>A_jqG7m4t*gQF0x_{-7nh`7r6Tq&~I`nste&u7$ z!SUhqOhb;{jJ-?)qb~G2=^IlESEz(((VJbVNr%7)6F~xRZFw)J57|^VwHq{g`%znJ zlaD@+)a`$V`xH2R(6YfM+8a?xAP>^;i>h0SMaZM57%_L$Cl-7Ie(|%8_b?Og1NEZ+>Mlah#3f3qL7@H#1eW{1wT^Rj;SBuQXK+oe93 z$-2u7g?z@f`yj>;o72eNnjcK{kYD`IX*L?AP^f+4&})Iy1$aW!tIS8q74v&FxE4+>3BbL z^h&<#YVaLmrMRMp)3|B4=G!}Q#v+-PYWtDhb+$6g2d&Hvd;HFGBvClZCb{3~?;U!qQeE{AJKp_V{&DerV7fJRJby$b# z9%j<+Z@vfVjxll*j(2ctSGB%PIBqGq$j;^_6@2V49^E%N|1f*$3u~NZ9Vc(-*2V~) zjb#1HNtk43>sO6lV7UA8)oN>V!XNtPo^FJG zIr+G4$$c@1^A25H{gCo^EP!`{71BopIymo|u^v5%nOrX+5BI^!6x|sj2Tf|uYqb!F zY`7yWx>z1&7=pFA{2_75+uuLT`e}@Z#eH6=6u|EX+&0A}?VpsTiQepFP>*O!%VkH# z;6TPCd2izzNbS0PxxzPMNTH6t?{cZ8&=Z)>$IhkNfFP9_9O0V1o`IE!l!(TXTUdd{ zWKRD7CMe%Px1lt>0C#r{v?RZQ7pG{45W!$@s=n(wcZnXuSw9M}lI*t~bc4QY_QDbE zvmV6^43UgWi-0@6Bu3_*&v}~`Jk#Pa*{XkUsAHd1F9%M6Z(6cUHYZrpC^4?By$?Q^ z{|Fg!E_wcMN_r&{7W0)5U~IK_+~1P9CO)7R13xsDo)Bo2woY3L^Au`oGd*(klzuXG z@!07s;QEgDKR5h!GF}7+UV!(SWTDluqCKF* z?8|E5(BtG|o-pxw{ckwLEgu{r=E2OQUE-PXJW_g0R)VLK(({Jb)9oWqets}Iq;=4w zV4nnA;;qh+R$nyXC^3F;?KQ(|LKV$XX^^awoG+8e5wS+3$)3>A!~XGfv*H^!%gC$A zg;%jnsZ)#)wMSj)!NIyp`FGzR+}!WK6$fyGh1+Cng#2K#sjG%ZjT`!$ZhSabKG_ib#!S)nrTfz?sk+vaS&&x%g>enf zML4TRi{4l0Aeec-z^?cP#k7%ps3^pJa6^8VN#ryRans#*%8oX#35UD-`RN@}0z%-I zB_1v|r$K-QB7g~Oz zgTY=cR7>Qc!Fo5}BzpqEeXhDrUGc)1Io0?j-^Vv+!&epL*2l7peC^0ziqE}uOZwvg z_cWLj&-P-~JkhxY`_1<*eZE*@qNUMH5|79V1QTr&P|)Loiz``OZI^E~9dHH4_%Z}t z3ok|wI?l&r#XP=JES=ly96oUDFSkkTLZt(PLdXsaksqaq24cicHfTgCPgIQ#O$>Y6 zZJNR#RN9QVu4?jao1g;Db6x`dnAbw#?_%7pVjPJrat_M;`iV0(hBNk1=Y%p+UlJ1s zmbQl4;X`xEvVT?zU4*OSOdYmz>P4LELwrk^TK}RGF=r$h#eI*u{%CE8sZp;pX zJZo4chuYO=dr->hku|Cd()aH%g-=Zi47$t=bo3!b5;G7Ob~wbVz5$ok?p{;ZgvH*A z1*K(bZpp9!?;{O)3n*uTlk}f?bE{b5BkaP0;EF_i{UngbXRrhs0*xu;?dIg_-DGFj zK+ZbH)hv{OhPi_L!);lNE?QW;&nparTumnKjoHuKnzh;xE)rWrdu_kcB3kiN zNO6s&>VqAiw_~;sT#J=&wluIJY({JW<^1k-#*eg!W3~;~&-RpesS5}`CkQ?qI(I39 z1A{b6tD`DwdYkA;u_ndu>qv*nc?07#W4#+mAx@%x?TF3`mp~>o=)bJq}NeoeSe*qt(dE7sgL|JY2tYPzLH<= zJ&ZYDI{C{9qlUXr_ymg2w93Q8R^@4**tV>oK#2*KHYSkSuCTR=exEI)Y@;>d%`omB zSjWF(pNAEZ*%9EZ8Ji0W*=KRMP?$vPv@#T>X879k{8cqq-D|oQ#@lfwMvpvJawD+{ zrY%ORWM+~&(uk5GaZ4&q`u=Hj@tDuHX(+Yv`I6;Z5$lV!@+B3e!m_f<`cfe)tYbk8 zzo126cm@WyEQ?fy9@liG1PV~DlLb0^{(2I2GeXIm@eG(M-&fsN`yjo^azy_UvB|GZ zD$B@_dj|-1W3xjJY#pd?0dkVd;7p|EoU7GB7Od1KQ1K4)uyk%|F~w(5)|YjB0DdBF z8yf)C?$A|p)3&gP>|8|nnLm-eR?>gQ;9{D_^Fzj|I|Af*gzGX3V7D(AN&E<}D88=g zhCnQLp(vgKf{K+@Vk0tH#D?7qIx?*P&Dp37U zgFLm)iE1{SKn)ELvC-mXN~`gE6;FSTZ7aOCpKxo4{2uo8lK#W^#2iJrkU#cX*#m4? zMt&{(Dl?c-yk0=c&zd88Pv#J@28xBBW6sS6IWNQn6PfZQkZ&>fiz`kcBf>-xF;C$d z{^|gg5xo$y2`=M$nE&Qej$KOMTn%5+?|&?gO_Q3vBpc;OY@q<=HvX91YiKy1c zX4sc+WX~&ftRLqqE3C{b`n0OkxLWaY^@99gpQ1fna|UP^JSRNT8skxBoj=Ws)mSuj zMX18JO~HN;{Yt)+`cA32+nW zVPc@#V$Did&Xt|m&zkX3&lc37qTWz=jQA}q?nZ2Yi;>e}psE79!+RP!c6hGa+*ww@ z$Z`DW+jlgFf9{h*dIRcNUR2*)WlhDe(8j-_ zl4%Y@q^Y4{Ttx6PhGWZLrQuhg!FcP~OLxGpmC>$+%qs8sSiH|qON!CUNxV|>q-g8) zy%0ZwOl+Y{44l9Qg|3-PWQq(f0=WB;uj}~Nd%~PyAja!l56xQ-%>|?qb^+!C%qfp4 zxRVg{RE^sj+p@Ai0zN4yfIHYhB@y*xoS$x5uX<{fQBRG38@xcjd_`xuGIT9OjlfC6 zX9noEH^LX?<5;+#$y~9P^F2nH>cOS~h0j1~7TV_y!{pn!0RO2$`LEsJXJL+FG%J~kD3q|WT{3my6 zZUuJ~=0{!3>emvmu+``|kyPPvL3Xu@SN({%_zScadI(PjOYi{D{|x|eV6J7a0lzAd z6kC=eim?j+peP!p4WtC1Rp6ze{42ZkI>VdG}%!2?u!L=Dp zYxKdql0p6Vgt+itnDtestX%#uzclWkU&T-#&in#iwW$zM_c=_)^2E+v@|84_f8xmH zs_?sU(l*EaNR07|)?C0kG)dA3gF1c4L_9lRd%JGp;+ETWniYb1Lh4)mvC;-^Gqv(S z>2#|<%EqzAT>(sxN3h)7a}r&mifZ!HEna{ig%{%QsqfCPN71ZU)QuTDf6F5{t+=8y z1P@vAwGpQd+xT~59OWh+xhdPIOjnONySz>-#!AdY#%5fl_1BJ#5yEdjmiM^a07AKSm@>#n8>V|Pt|Cjr zQ{(7SS?k53(z5c@@tb*iijq}FkL>R7=hNfLBo4lh$wakVwBZmZ=x_*pmZ( zI4T{P;rffLbTBJcX4*eqwl}&!UP_JVn|LNcp-N3gQ9G0IA2nOQziG<#?y5Uud_b8$ zt^Y>G4%esipPxFnzz$LHt!?Hu_h+#-A?i89WU_f^j=}in8_hP&(;!e!)kcnLq)Wh5 zNhw^;?XKthHm0_91s{7kdkV5$4_*gL(7}r`Jqj5+K_j@>Ce3!=<7Y;{B<6O`|CkS} z^@kgc*a|$Dgubo09zXWz9fLY3f4Tp(w0rT&N={l$MeyVEj~k0*DqNRB@;)Gv5f8cXf(yUJ4Fy9}kQ%-kXmhiO_eLyzCtN4Cq`%znlwl%lE$zP5!B-#)! znyM}?v_e`j;g3B-1c&c!5L-_(%~}uETRez}fp3H9u3T<#wzdwEsXjRHy<{EMQ-l&6 zY|}=7OM+uX-WQclXS!fYq~A4bD|ZY0JqTML9%+|`YpR?WU0A&oZK>gTKKT4m9rV_O z7LCJd${h5Cp4k|C^53aPr!PNw;)(cpqw61!vsZFE<2tj=@dyYGgrx*<|Bd+2pmWg= zZ+9@kcV_V)tY&mu_}wSxILE95G^VBirq)JntrpYF-hQU{&R={7()mo-Le98nSmNmTW42|5Jx=9WX`QAvgPp$UBxji?7l7^(z9Z};m4gJ{Lwo~;@2(^z32wY-e z5#s4lP(2TpU2~>2vZ6LX_3ByIDjE|O!32rn^$Sab1?yUB?Q0eEHFD&44_5-Fjddj3^+qghVIvnW9`L&~p*OZn>p8_ej$iQ{TMcsoh z3s=j_Hx-N2MV$uI3;c}C-bOji1x6#56C@8(Fu&Fwxa!wmL+*;0uJJwbGsG&D{sj3a*bHDOebExRM6mj*26ilgnqRD;G< zM_Wy#_ho-RVYXQGpH3CZnp=NNLR3Pf*R|-Di%QQW23z6axJ+$~vb|46f7vqsONw*O6;VPMI4DxrM|oolKS7xiwTo>9d(^+UWfYNGg@~`m31`Ur+sXL zo_w&6S6Q)sN-oO`*yAzG3y?vu7wYQHfhjRc6@vC{r@HQEGjWXV9cXTGS{9cZdqmK7 zQ54ZKKQp<$q%UeDAaLPV-NCWK_4|vK5a1rKb_0Yl}#bo4j# z9<pTSn3j@~q-@1Qaw>^8yHU`E_aNR!ZZTqebQ-^K9pbYV}#ky1(*Wm|;`2k)E^Z!;#L-2VIf>+powqd^-9V+s|*kJP~jP3Zd5#p}*Ff zB)t3rI)~O;_Es~O8#Vc1(31Y{*coJm^LNbnT9-?p<*`5Fr)@lgryKt&Ec}#x&N{wE zTWeMu2p>N#vtl@`RmH{pjcYZb)=Vk2`AHMp+{pY58}}l1x*xo}Qbf;u<>8cFwuRYH>wUSq?oKgxiqOFJ|L8{F zid|mY1O(>@_{CZ>Hv$oYhlOT7{Wp`w;(2DVXT|QGy_~fWax|8=KXlC|Qh`r72 zj9}WAvatLmuB6f9Q)!;+)|U<3_5)~>1oYrFY~E0aT_Yt= zq(_}>^v!%~N+HJjSbRsudYVEx(#&?acZ?!@bX|aQMj}%g9eg>j&@ z?c5g2yF#L-R8q${de!%ArN||@fWvvb2R|9hDgtca1<_XY;@d_pGT=eFE^Uvttun2JQEs(WKygdByo55UyjoH3^zL|YU zQ*1%V2c@|)OGICNrYY>fq<924OsQw{s+hU#jPUf*W14pd6&s#X%2 zXk#e*;7zu?xl4DeR@~0qwWGW%Y!SfO#HY!0S1uY-j^hfStQ%*N@gka%%`1(`i+YId z>2&tBNu)B!ZnB&ZRk8MtI|(QWV0{`cjCZut5=1w=jg4=5{qRU9X!QJy<(;n`H;~c~ zlHpWw4|Z>w75VIi;Bn|GCewC%@HUjRaX({lJ$fvKG^W^~d`>P#(VeDU+Ms;4QK#;U z%c{q8)Wrw*;L+fjvatUt3*XpTNugyhZ~tO^XNkX?+R@n^2ml1`nTN@fH#5eCoT=pY z-tX=;wxuxW3~XUW4FBwQ6miNh^-5fcugD{VIR(R{;TE1HDFF2*a8JJlCcrIk!3H=& zEP-*5xLT#Y6@n1#U(iF@3#dhck2S3@$%GJ~2)xR11v07RhQO?0H}dmPOxJMJL&uBp zCCzi!Q|1L*c)3~;zRwI0b>1ADSKJE7-4Xc~V!u)8=dUW{^UK5l25Vc_PMuE8q+2uv zcBnsI)HDu!RDp7F*WU1&m6bEMe1x^-y`B4){@t&_K~qVTt1UNBZlBtmb@Vw= zKeA&#XvUX#8sTh7q=pHS>HVzIFzKY+6u%hBv4lxUhsuX0*P=2tDn1 z)_s@3$)C_w7UF>>R{TvrG@}DCSu_*%pl--)!QE3LrK@^SOeAiC74=#baHej&*XFG}5FIi$&;sX@f=AVw5gLMu=ulH$=)wY?9dXK28^lI~MYD%0z;$ zo?X}oaIw7d)notF{Dn`n+ImTaXYGY^I@!r}k~@?Ud~f<(CEO|iqQ}(pT2^!YPCjCg z(PJRJwBFK97SBsu)6fbz)9Ec0^01(DUeX3DC95YFrar;@Mmwwls&S`q)3sFDV1uwg zA;bc*bg;il)DJ1%W9r)>GK~+PBRw_D7_}AlgJcsKXN>eHq2 z&po^JBR4w>d3NQ9jv(p{jYgS)$UmX$Y;x_ji(jl7FZNPHTcW-%yUYoZRy3q2}_C{6(iKg zfj#mjHro?j5_uHy@CQ4$#$&I?d-qr4ZXhGozD_*Wct4u+F)>UhUWNDYR|fq!-*%8S zfmSZwMvI%h^TtCIamD`%NFg1y>gvJUumb_xIuoT2E`LZ*s6o)I0?b@65`Wfc5599R zy-_t{rr~_`4SMrU6mNU}wK5OXHwh$v%Uy>>Qe!^TDw?~-E$4rzQy$UFODEYkF!=Lr zTG1j3Kc-k(o#%5aUOzhH?o{L<`Q*SKgLs}5Qkn*-a4#_UJ;wb*+gL6e*+{1S>BOoD zf5ta@XxU6=p@Etle|NjZ#7@YR4esxR3sPn`gH<+;{1Ga!-+ExELucLJNSN1FID=n^ z=xTYp!`5w(EyyF*kx0bMkg?MZyCu*2>Q2`iX0o%tv?msY-HdAdXJEDH@%TQFlM@J| z88zU3T9@~K_NzA#V3rvvz28{`Duy%4s~ z&U?I!)}$}xalUYcP$@f78{yyi4N*ZfaxW_;Gd8l5TCqWZp_?j6Y$wHabhysBC?%{bvIvkfA>2*8R^;h!>R1ADqh`u z&0AuY9`k-@tIn8BCoivN#ZH0zO#V?%e#VdM+cj>R0d?Wr$kj*AUK>D27_>mKYEx{Yc{_piMy zb#JwIxSCS@cifHyV8FjU1UxABLZMIl#yBJ?`@GqLh_MT1LHsn5QYzXYHRE->0E4HfjeDwa>Xl?Is4Mc(&)e1$-F2&-HGURLo3+RzQH3#hYFu6(xcquR0sppqL6i zsU+TEvO&DISvZeS#IKb;?VR7$lp$-o=n=OYWFu{^t!(_tbTb9Uw3=J?8wmGRmy5pd zY)mwa`d?P4L#C0_cJ^vzHAP!A{mO#xS9b8QeUiUZ+r}ziJf9Q1 zykYlL=a;NoIy{G3qQ-Th^x>OB#eke&aZz!@stl3+Xt|NO9QzD5fTyl^vRmPDS-*(S zy#-fRpp{okx$2+bTRDQqg^#&XIqf{Ih1iQ%V)B16e{+@I70FE!P?R z|4;=#l5bV~0LnMJw*F>;XDDRbaM9a!n?%U7Ww$QqZb$;Ykz14eOyB0!Tc@Pl;F1uj z))(nU&A{49DSUr?xiI~k&-nSD%ez0dd6(H-cO#vZ9Y_c8DlK{zr1zRXRN~{uALuBO zFh*0e66?SZr$5#q^|@_XQ(^)F{L|aPaqGtm`YYQBGO&f02D<-!Ou2j-o0xX1X+Q8R zl>3^!` z{Kuq;w(1?<(wfPweMfg>*J_C$GQVp!SBLJ2{Q%~7N477(CSPDO;lRwLqv`oLO5o51 z=O8-6q68`GUqD^ot2WX>ymC?*gqWQxe`&xC+7Cw*F_Zz&tMrKjlk7rQPU}tsP7QDL zuO|}eLj{HiucBx|CB-P}Kc1Rmitk9<&-bFwkB1*_D*I3(bx5dm|9uSyR=1e0Q#Uq* zvD|+-|FF*eTtnQ(FpRg$C-;^oGaDjjKqsoi2;Rf@D+;kV#WHn)2hXW-*qXlz)qVvG zSq%Rx&{MZ>j4j${@B{QuErOf}JGFS7CxPl6#tST^O<8+fRLA$wQ;cXGc&@sNSa{%) z+M<;Y)P5dcYja_ovP1v;u~Wl2Q0+eLo3lsB)sHbACkPT1`$cceNF`gA{B`h!y!Y6vKGK47RX=&W&p>m%!o!@T+5J11j3TqNHG|F~WCBwVa_tjz5QFvge z+y;9N(xbzg`g~I>>F0`KO!E{GX9a4!T3V_$pz9kzcuWgf3D2D|PsxZ8yK3>GxO>*o zu)f&qYKilU41E=E%l!r|&x;#KRvo&nM91CVvV*0(QOSa${#cKRUyo}9H>7`q{iXJ- zPho(3j`X6zno9l6$7w@g)(8s9fl$NMN3uUWzP1U;-Mwe;4CnbB7kCut8qiIOGFg$| z;E-iQl{iu?(<$VL|GHhWUDo8Jt<{qS^#{Zezu|y_iOF-Q2|t8`vM;TFY@&Yk=zMJM z%&o`RqBL8*BW6atP7!|>1Rz`g#+KEumDYL5|=KHOePzJJn+q?dG2K zU%rJZ*lYd&n0v3NCetr`RL4kHeOGzRn1PBln6#)SO z0RbTjNbfB`NFpM=NiQKpdQE^t0wE#u|HALwp1ZTo`rqavYklv#-(8;l>}Nae=s_(! z<|<7EgES!DuKJse&0m?Bq3hBovY}6GllbW5hKl zpXg8>Ri9D2oWKp<%K9oK0%|c^F-)@>#<>}5v>0DX?#e%Kf1f)+9|<&Oda8?!9vuVh zniKvCwtcrI-N7;aoioUg*BAX519ep*o(v%Wp-lnV}yn}`F&zeDSUX&&6%^0 zvPqyc6q0>>gRlS@3Dd3B$nd3XWT0iYw9gRvGm~FVU;5NHJu$-SF9=+?r(fy*EjA!j%r{l}Bv|8t;r?TFB{-G!}u{-{27Ec3`9NOTkXvZ1nGwmmSg zu64D<8g@nKhNZFY+b&oM<5;|yt+2F!;`c?pKb9g;+z>k~H$W?%<#erT>30av(eytv zBJX(2x3@m0?)Od!BVMcu%{LenNo~EKVJXPed)7IcJWe*|8TeK)dfzR`;h}>mHWG*&5*TCzP^TYF5r_R(?UKv^fLj7O2xdz8|KQk!)2*)5WRjcwE9rg#L!|UbK7Z z1rT^)4;ys2xr1*ivvso^HjgQj)TW=BrJj=+#Tr64I6qn!@c+W))x;|psvB)j{5ADM zHta6rM))1aChc>08!O>KQ?XtagEkhfg|2T5Tnb)iaNmB+C+5s1(g&V5LXB;wE6l!` zUgc%JFKbzcj`gzNuFC4$!HmkTuXZ^z^7hI|o0Qm=gf_35%>k=n172#EP8K)VeIY*! z^mq)Bi?p4@0&@SV4VWYpd~z^B3nouq#i+C-NY zS!WLFJz2ka5R((aBxx3N<(-dBz`mgY8-2+eB*OEO2*IqrfO1bC=unH3pNdkig@JBL z*SgQ5UyQK*O{MBwiyIHj3=ipba-;f7JAmRQ#U=m~uToeVS|eO&t}cZSVFhP+1lX`M zR_x?(Z^1)c(cHurpR(n z<>kdC9)Km4aTS!Zk`3OdmlTl?>v#f%Q%MqS1z{bc0Fed=<5=62{;9Nb;zYtr64pX8 znaFgBnz~g~bQyj0Zq~_3+b4;GIsb4!tvWC)klhN$I4x*kPrRE7%ZwW*mJ!MrRIjH1 z2^m8YA$OS8D5iNuRT0B)Ri;6{*KC^fI@~EfSE>B{#CvWPV)u}Z<@gac3qUWmZ`+VT za-h^P+QLd-Nlu@$Y8O>2?{_Qp z&rsX4SXf)D`pV?)7P}cB=sT=Z$V0-no9ghIrD~($VH4;{Vt%nkd&PAR68}Z^X(c*> zENJ-5_-4W&B>jx=O^OPSxy6YKM-wu~O>60IfVV(VLkh6uF7#`F7*E>5U@+gL+zKrCJ5OE?{wN%RJgL5Y`e#rvt6L zq(x}UMqJ(+`aP>WSH|1lQd^+r8Jv}p7nb1=yH=J@a_}A5Ps6D$PJHGcDYuCaJ#FsQ z^)9sA-Y6>Z1H9KhQmGl)Ni5gckZYWTs#bypJV8I8xu5-(Y>nom1Ogc_e!Fg zhjp;q53M!}DVWoBVow2c{d4bh&d8o`WI)mE3AV;sBjW=}K%P&G6pNn*Z_wiLB8-4NwgZfF9 zL62J;JpTZ!giQi5Z-MSHE_dC5*_*%-f1S3@fJ%2%UewnHB=LRkx z6RtooMnD(hA-_lD_a?_re_!5+%XGSJFgm^;N!m9~&K?JtfT@LQRqK$!!TAC~bsd>g z`uA&okDTv6+jWf!C(D-%C19l1RS8pLzvCtx%)RXe0}XYBTT2MWbzr-mLpRRfI2wP4 zKj2yM>A&|U_fsde+rdp_*$sP)`hSPOOuwH~&{7Xy?YJ!hRDO(ttfu;^EZv}JX6BC& z|9t7|o+{vf-z`OIpew))l@6w(*5jj)sZ5hm_QU+;>G4(YqUbc%-*s`PZu>hd?1$v) z{z&S|?-poQMd2hVqH^X-x2vLdg4qon6ZDn8Q*K3kJ82;F{CJnblFF7~QR9xvpzx9E zYEjiy`lGoEt3B-49tP?O8!nj9wxQ}G`kZ;DQBw`G<0dX)d|BzWQI-PFhj>AYc`sYT z_hU+|uie%U>&R7;26(SHZI5Tl{Z4ZdDOa$>CWwe|PG%LIBO9o`Dru$)0ycUh-o@@00Iw4hrzl zxZRyC0$MCn3PvaEKy=Wol#}YE9hM{0RL#uuN*WKY;Q)PR-Pqwy4#QHB34D>`_ z6aBaOUIR)}$0anD`5JqLgxjA8E?pd-@FMy^UMbD0N_6HG+dXy9naGei|AC17Gs*m? zg`Sz2(6PFDi+kJt{a4o%vsgVDJIek1ZTpSgegn_X7+<(~+3bGwHLGa3J1WCsdOR%_ ze@v{E==8CUQxqz&LK&j9Q)mcAwkvyf?#8r3Rmzhwgx`hwPsLiXmz8%FcjGGb&kAeH z*By8EIXynHd%AhGbgP;r^90%y;ucuP9M?pjX$lNqXzhcYHayy>N`dP0C1;}zWK^{8 z7BU;I@wq)uAaO>s`~;S+3EQ=vU!!(RRdmK0XO8bXS?FbkQU`Nh11rU*Q#69z#`wGLXL2E$ zPXVxQg0rIyiR_)%>fk8vnI$`jbdMld|?N)M_bYf5WX@rW;gG^ zjqiCMuJMwQk#dO_NJ=!Av3g)T`4hvRhkfHA~Wqs!iMU{nl!UtfFJF7UHHxwh1429~_`BRwQ-{A+4`}xqM-P zuCS2Wa(ZZY0@x+Skr{g8+u$R7Y^ODFv2&706dSiU^mGl(_m~UG37?^l3*khRRjjUj z$q9AbctCia&;=44N0Sg4yBW888J@2~D0b<~lN<0<8$%B$8B z%-BIeneuS$+ccX6P)lb16pk=Rw6DAx;j^Ba8Zsp*BDFZ~;&ovj5m&QdO*BJ_1M zhw5D!tSBArq-A0Gz$Dvfr)48avwBvb!?AG#Qha2=nRrPecUtpyk#k=A2B)c~ovjw? zf)tNan1vidKjT6A_Y>iYX-o#gW|p?j#HTIds$HtHkTt z+~^BWZD-wow(6!Fdan_QV=^LKcZidCZ^lr_M|<45MyY&F3Q};{G|D6RqD@q{eP6+P zl&t&HCc{8qp>n${rXG9EtImdg8JIl~!Yjd0Q6%z~@*-;Qjy9UKYuv5iia!x}%tGvT zO4#cOhp@>2oOkp^i#T{E>hJ8X=)kytIcNV81g6wi_6n6wCCNK)dN|tyDylMpF47XISKgHyLBUtz`A_J_K5kls z5T5LSQ}QP2N~xn^v|gRO&K&XFr)k$K`i9mLuBkkNrncRXE%t_Mw28-&%d^T|)QQso zf1xR*sUHyG%is_@ke}Ki)9Z`3g)D01o6FWu9`;21?w@slr2Z8H^F4thQsjH?E&e7U z3`5btqfk=b78T~`{)UADQ1NnQMww$O1@~f7krMi8)ln;aCdmyd)Dsll`R`HZg01fS zf zjxG34&NY<6I$-&Z`A>XCU9jMUw%^K?})06v}=_?Sqf41Cy z@jq8;W4;51dK{1KZ|TrQ_V!m*DMQKljjRcOS2DsoIM)CpXk7m6JxuOcO0Yztrk~t; zPF_7kIK|pLRbV->Ca?~Q%cSSbfDJd6LvrfzPCx>x(_a`PpaOc#@IY|p zsfyB%F|A@&bO!rjO*+*6MMa{3)P$(0>Ie0*l5PrwSyS;rz3ZJM#8omnU)&($D@_+b zVW1u2wgJP;C3=57Cwxa}KXt_fpDl}CjIo(0#hS02e~*a%u8O;I&tp4L2g`;WEw6`d(*k>V>EzEfj2lf4rRJKeeD|nAx^){(0YF*dL?3CMkgrD8f~m z)mmc~4x}lfHeV+=P6gMWv`dO(9v*DqOSokO-YV(8JrJ1Jf^Mt~vUr!%`>xKS_)1^h zPP+>zVnM2?)u=|Pl`(SWK3KO{Nr=7G4jSWJvmcjS7`-3xDQOY*<030ITocsQA3Lza z>?}L~+kYqZk>oSfMc1=s*WfYG5}hnfj#2>&aZ=7 z6njtzBDt8z|G%q#NB?gltren|s@rLy9B0v)t&GqF&Y${5xBolz_<+zdB13_(B1`}+ zw)3V4R1@Qkrzs1r3KS>@SW?SoQoas1Q zVG~mqb#}-ByXk#(Q`*cb$=1L!^0>a3#A!fOxBRTL;_hf-^cA^5Q!Zxqi2P|^p`Ia1 zV{`1u^2?j3ZuDHBC>9yvLj}hR^KB9fZ$>%8qT z**RtHHtzKE!xK$iZ?aDK4%bw0%VK*eEBKfhy9~fS0eJ=hoI$hHTo`0W_}F(!HK()u zAtFnFzbT|!$zHy1xwQ2o+Q$b+>OHBOgQu3xO_j;#)r9hno1ZxGp;O}fBoT1Q$_0lZF@kgNw8^U8W1%Wa9myxsXjNaeY z%{iaj7a4D4Br$8=o7l*JCL;3EgQ~Gznae(rfFTCNbKEsu+~E4O>zund|EfAFX@xI} zAhDzNU9O)_e-^-)YFR(YyHk(hYonHzP9cjiG?qp@4>l434G{|0mr5w@9#(O`M}Q5Q zYQ@V5@rrW))D`r}v>lkR6+Nl*1a(b&g7L!F#bboFTOudl)f)9WW!7YfS?-T(qYKtfl5KB{v$)Po5?zbAD# zf#CJt-(wCtb)>aPjr)x04vItm+i9Xsyb^A$E>0c;*MHt`VdG-q@4R&@*wc3#532vd zPwPCATj$HglkG)znP-4M0<s!p1dWnqrr zZbS?R*)R*=bmT4n@M(;mOb>xi#7L%}f3!6e;&j0N5hrYZ<>-W$TDVt!;86}}c<`vexrk3UG4$PV zEjOhdkmFc57}RrsSp5SKs5&nmIIDOFk6h0S~}{*)&aB^^7}xqp7Wv9Dt0D zuiHc(9@DI+tDl7A*ZS_31UwtIuwGbI3P_HU<9B;3$GuF%)>0l;HwP%Q*w=y6pVv%c zhBI6Q#8PA9W!Y!@)30+`m0iQkymv5p@I|xLGH;k1LpR7O>VpCze6ct zyTA*>#9&?$ps2!bS%s1)pM-@};O7g+%zXO#$Ez3p5(cBrDAi=-2Rkn>dRiDMjcKKS z5I-1S)Uog8oL6G!1cF+dY`PB9SjB3pg5nrO<~x|akHb)HHCf_oS*MKtg#q*z8*N=& z;3!Pk_FT(D=F{s+AHHk*S(a)g7;%7`A32Bm{+xv_*KucfuqDbH_g+HUZAZ!f=$PA3 zg`;#9h)nI+dYNaM7P8x{a^>Z_L9EB%+FW z!Z=PpKThuClZr1gN#lUQfbFM&yLe=iTt272!91C3TrBntg}sbFVgZxPx`=7zr>2hYRdm#<6*G0W z#^Bq~KyX9)pGv=wqA=%Tk&P1rhYt@=;JDt>%5<|ItI5Y~vPOx6=DWu;{CzDbs5iod zNhD?ge!=}^c6yTfSeTfDg>A(%bua0O*E$;ckZo66hxdy?S&xcuY+ZlY=W;MUz4vH6 zZhtwhovi(0!~sIm*2A+T^H-&OamAx7(aONU6|%Oyt>yMZvxkfeKfk%lC=*4p^B$bY ziIdG#5v=~PijmeoU|YOJX~e%-qhp!wq273%E?z0`f zPJvQ`A|?BL|A6V=c|>h*n-6ggN>o{>3uHaKwtd9dvboiIvFG0}A0E)Tr(+L-Z6pvj zbEZ)Jogo|L_&?YW`cMjHG&N632X;&fr&{As5Uy%PW%G+r0QHCOOU%N^E><)9A23 zZ()wIOE=QH*k5lNS{Y!J_iqSsN)0C zkJ))lfS-0!isQzT*N$OVB9kf`2~N(8oyTwj-MuxiZ)Hsmw?*f})Ww+!Brb=gjaFLz zY;TaNV|Zy%!YqF;tcZ1wy8iQYDZLEF{nG)F=>bGMK(6@i$8m({I%o53LhjYHQ z*vtab<5}!Ssnw1An*p`w-$U@T>%E=!(P3l%7F#OaJnw*LK%m^U%&wbaz%v~2yHbYS z$*lk2ax%J2ICvE-}K!og^pK+iuzF< zON!T?Dv=^y_QLDH%7#|&$0ypSupdmVtYWFp;%--J5U zfofTAuM=%wX3QZh{-u!PW(;I0yMKPZ_;a*RP>=Q4-3m)Xn}hyWSv%)!QmsEraMrZ5 zw>E|;4iu|b8|{T@@ml-NXb~VMlE_{y%kOtnytUr$3h(>b!A@V1|J>)Q`dh`8#|^I3 zG7RN;suFJ|Zd*{8^&lRw?qxwvC=2MKz!CH!&cFMS6T~4e_!xMd(?SWIrji9W{G96E z^bs%G84r!T$x*1s$p0#7n|W5>6?O=xXME>gUUPH?AJ^&p1bQ+jUjj{3p!=xb5|^}V zxOD`t0n9LUnrt&|hdnC-ZQAkQCvYwDin<2ay5I0LSx##QRF3ev+uffS7r|$stKy&% z_Fz8UGPZCw`G6$ixDKsY6MawEEac4qs0Q(7kg|>yYVPj28n<1ykuc2p;H>O*PHz!W zkcVp55ok>b4s2tU_AUa$WLI=|s?Boy!1tP6e*v)q>B)dtiOIKMPTS5z53h(6pI!wKB!u>hY<_Q}s?v z!H=yznQ6~SH#6Z=!jad4Ns;nLJ-+F_=`=Tt>@ZHdxoKQ1ejtef19Aml2tcd;?@$iH z=84kd4_pxO~a;fnhozIiXJi09MyycJktgoNe4B#1Y zgl5N;#h?GD=z&J7K^Txn6+Hq3F}KjD9S{vnDche;Q<%q9HKN2w@ZY2y`jL64!s4+t zAU+CUZtN$$;_%(eXvwQn@LJ@@+#R_|A9Su9|CFf`ezGVVD|UY{Y}=e$)Y@p1?EQ*y zfTT8zEqU%UAx(ru++W+OR$$}n%C<7po1}Ki)bd&V^ClKP2%#EvNOL4L?8_K7=Su4O zgV>DGsN^=PG45TLwW&QXKm2Ms<}EiFxs%!+SFl?NT=`~sI=*fkPn1}d#gm*|M1~^c3d{*%xxjdVg3=7GrLajo6HVUo9y4@ zj?>Z1OPCwjmbnf1wps{8=)!#2L__JwP*{95Ruej_7Oo%~(=}gLXQNW($83UX`p#_y zPfABEyC+CHy(~K+qL|nQ=3e!%0*C*|Fm?zJ`WR1>TFGjpY7cDDQGqbeoxtu%hlQ#! zMPhZ4{{(Jst1RLYjxqZLq1x3eR7Wn#^msMownbliXq_$dzm?LK<#YnaimZq~w$Arf zJBp^y#IRF2PWCQA?Ai%U<)fovB!fw_C#ojDI43^!#%{mUT$(RO%#mfU`zE?{wcIw) zy#45x<)6c`+=>Tc$o>(25B2?B$lUzm%p|!x@)!6AXMY!CTvzwngtQ($Ijw2Wi!0vI zbH93NC;6z=X^X}92bQHGqVjf^{l+iDT>-ezgiwEADMh=jH0A7YHPrWFfCPJi!Msf( z$!#qi$=WR()%45o-BEbzlT|V~!fGpaV@q`#)KxI|=~*qav`g+et)rHD#{8DmIPGhR zN8Mr%ZTPUHbv6rv0;&dO)xJlN9Ru+XrG zIW^;1yp}?X7UJ0gNBc?LFLF~%nLGo)oCsOzL~{D&VW*>0yDLqmVx7_f0$ zo+~PfGjP18!wo`qyUov=;c9lM?>!nv%6u(}hWQ~gnpc5+o5!xWeI*KtiQaAqcYsX# zI1+z|?WagY?p~07`SzOE#X%R(9B1o4k8sWEM7RSy@{t=LP%p`r7z(B8G>qFmX4n%{ zQ8v`DnY2lJ)Rm0R?O1mXSv@+dp$~d_%4fTlb+)lFudK+(lCGn@m}tv$H0A&-8ylE= z;v@WGgryAICR?rdW{zbdYOWtU=j8*%5kEo-s{`Al(-y%q_DCPdss_*L(=XG%%-3pb zojP0F_I~UDkMsfx=aVz_Yvctu;4>f7KLkp!oa zkqUJ>hj#>e9u%3T)Ox3OQYfiOF~=K2tdo3Z0kvQ=E0@BGk3o#^84~{)Q`yzuo8ndh zs)^4vxR3MSeEP{1(KrGRC`+HF8o_k-fmSbb7AW}ku65uv!rZpH`Cd*EQNE!LMN^pu z!j7o$b?pQR&?!c+V@2uo2>FL(c0$#Wzmw??T-z-=xYk?xg^-p^n8Bbv3KKT|!dv?@ zE0<%L+wA}GJef33Dg{j}y~*WGhMDgw)VZ8$xqJC{P9xUga>lum^e zbNW+(r2{8~qkn^^d%>iVryrL>F=#O9AX&FQ%Kq=rvkdEerVdJ)Q~M+I7XWT42C0&J zd2Af0u#ZS^#dS3j%42cpY2e!)H*d8-%?egzYlGrLx9qP868-Z<|J>aAgFFG|roaAd zAoWdYZ>FRI=gtd=O$&wW%;{Uf$$EhV^M%hqJ9ivw9qA3sSLCfWut3jd1yN2F6$28# z%X@`*<>bAJCA_8mYbvh6X_ki$o{2$R?zkY|Tt7VuNZVxDAhjJgv5-Im-LzU6W_nax>)C*~ef!^c-H&sPQm&2lhLV%mXdYf0UwFRnuR>|p-S(=wzNIn*$zGBdSM}`4 zpsclyot@Bnn#R|3jmY2waOM_Fcw!PsoB^@LmNcho)qCF1K`N^iHOa`=MQACrF{J%M zq&37O3nk~1*spzL`?Tm$hIxvNxMb8|hvflkUV@p^xA<+^Q@(3Xrr(hsGCua93ylWV$z1~_4X1@JBHbx z0H=pPCAV|P@b(z`3{k8)gv|RXz36G9Z$^(ZFxKKigrJcJcl^w=P=k2qDh4 zx1&FhH_OWxjjO`-w)wyaeeibwkJF{=`*H??b_wT`+`UjBY1=G&3+HpQ|FohDoyYpd+D7gSvJ@s{yELN4Fd&RVI zMFRm@Ck@ok6<=(Rt3n?(G#?IEU%9Ho^)JO=cEz^(ad-eL`u?UdI^K^VKug`FOl*?{ z5$u*`hTLEl>Khb)(;nRb`g-lP+Iok4TV15FCloqCm9)}wMS!xONDeSptkSP&l zMaTy8HLMH>;B=W+pF20SlSYXd`#MnL)(T+owCHQ9`tym52)Ik3OmSrZ{j0E*o7UOR za|Y-2xUQ@GtNW>-P`TY${Xw#jYTNQIVJlT|+?HorW{z;@m%p~@;IKVW23&v4#&>ql zzPNHk(@U-w492QOlB{)Ke$HIzSWxK>E_#9DX5x1@IJ>JG@3a*rK>uhK``@n7s4i5^ zvI*XRbZV*ayGQayy}em%cw3ieJ5Ba0+_2r)(D09&+bTD5%?bk_9yrnyd&=|Rw*L+- zb<+o78K_>-1x#ysEa*=iS=h;UYCi}sfxd#v*E)%1G7}JkPD%9(H0hpVk@?;ieRIno7rpp%$n#Q*(`U>5{ zS6J0jwW-~YmqtdEAauINnWO^NY2Mg61{8UihRsz>9PT$r>=KH-X`Fns*wnbd!plta zH}G{sEw@cg>*+r&W-A+dROSEjzx3CawwWC*{$Xq?|LwDu(q?lAURCovjb*V@{Ey*h zONwUok9I7iNbj0g&Ad4wdU+Wt`U6+GTCZ|(xym@zBaP~o>RIRMk$%Zl;+lj3WI|+G zU)*c(-+{KDSgY)(Kfjn4>78U(6ElZsFeVu#7Msj&*YJL_KK+YIc)j0R6>buc*IS(3 z4X6Bx#G@C=CVMIGwB3&FQBH=ugM<$iN2Sg6yT0sHzxvGLE+pA%d!#M1xY%orS6ue| z&Ag&KuLxt^2aQq%D?NRSm+b;n<5a5t`E{7mxQItBw(lMiO*M4FVCv4s1f5l+_Dx#K z=lfKv94c1oR_df{Tf}$tAUaTyAnouYsOzUUefn0$K_>v%RrLo&G+OveW>G<6v41Fx zd34gj^uuI*P>gx&5f@)|Ufi{J!?bQ;39n+wxc%BMQDLnOdsE~+@*Z+0S*sBl>pl9N z6gCrZo zJN-QF-ZIJOV~>WE8iza9-xY6d7w2;XB8vkct+nca8$tJ3Fn@;n?Y;&J5xQI4Tp1<{ zM5Mo$n^*O|K_zw(|CslfH(%wNz?IaN8Sz9cYwTTOR-zki0J3^NO)F?GAc7mFfN1_Y zeomT>K8hEbS@uhQB)yKIA79fl7V&$3-)nQk_H^dP$@@1xbeo##Yg)}MrFq1rWI2p!m3n zgd300k5mIq$av_Yat-tC-Cd0hTJ*)P5_$6=9PpO2z1g1;IujG%%`bdQ`+C@&3r8SU zhVR>8e?DG>3C5b$KC`dF$Yf6OY{Px;d<+!NAyc1D_I4UHk|DCW#@#gKw9Ow$1Dj3JaGJ8-eepO;6dz5EEuLu_$kt+!k6Y zISy2p>t#1#m3}M6vjMi?5V_tL$E@7~D`v!mt`7j?Uj)rlVY8|i&K85}3-_drF<9@q z->iQ3+tnBcxRnmIglLeK8yyO9t$tFprLG|n<@L14+K9m>({^sIrzVmeALUjU%EtZ? zR28Q1s;BJdTc}B-O!>ClREeE@vXz$ln?w8C3c;W$G`1Wkh@!@p`)Qi2c(}NU|L#1B zh25E*RBtVvbC_()8-eoXmZYAMcGN?;`IY^A{7tWyIJ_^jrOV-u*u<6q+kF_lE=1GaF%&^6Gvld`-MhH!+NENCkDQ&0)m)BGjDsvM86 zEU;*FdDr5V*jD-GlBvWqTJOI_%K);C#a_s`V0`qc3~%k$oJRAP`fsLn&$Xidh*BxU z)LU6A>C4oZxbFH3UPVn$a?%UTEZWVkRbIXK8e7lOE!M=$Z2(=8 z_Zi;KY`xu`8nqobHM0_U`B)z)ApxY$f}!TGGZ>qlZr3rXKzTMEf`QgvFca@^uh8X- z`|Q=#aYnN2foQ$#G$uA5G0sGXVJas}K2VxCDmo4>EKoapbh%jdTp9JQY$V?_O75H{PJ>Q>C9ZdTV;fr><7;!@``? z(XTU&S+JAS_nwy8tu^P9{ySt?%L!%+bG$`C8j)X7sfZT9%h@9v)oN^;2rx+41}%vh z6Nq^V9i9{{KXX*TFEpNvo!jTNVK^E-yRE0M+GlhgV&#zbz)mA-tJBgevJzOs$by|4 zyLGyGI=Hm+#j18v?AkQuyQ_3=s7e21(2uxVmAlbbSbuBl-pLDot863|r|N%Rv0ca% zQSV6JSHfcxEqG+k-~O0+=AZT0<43IuZ`%FQ^LXLor|AU{OkF0SJh<9#!4X_nJ%u5) z8Lly1%w|cCI}C0-V4J+ZfA{zuFT_a^1BV~|ADNszG!u#XZb*0d!@@TdXr7erm~L@0 zbjJ54HSlA^u+A;=rNME#jSZgP^^rf!sX|csDCd$C>1(;MF3uH&PtGNA>IGB<_P`t! zil{DlbK4En*{ux32eug}OxwRcaN046x%k_iZ=SJBq4rHN({ZGU{i;Ox^lb084r^R6 zUXEYhP@&cndm+UrE?sfJRkG8$O8Nd;!sqDII9BPl?!MVpL?}a&rklSJOHSuJ2)jLG zJH6R?8_i50-ZK42jAUl5Q`bz$Wm%ElRNkdQoIi0JjHp)(`j8%fBDQ7Tx7}?--mxe} znr`vGEj)X{p>hT5Ucd$;elJaA@L(Xwb2v0$#Q-T#>H9mQ>SYpY!!~3Is=6?}3GCDy z9w!n-_t(0Et9VU6exJSZ?B;@WL17->f$YV-fUx7Njoor?cv+j~`t9i5#Md#ktcn)0{z zJ4?Ha(~7@mGFWXUy=L+zUl&+tKsk;jB@w61g-;A)W40vc(2qmiT0@m5_iZCU7dJ@= zhmpVG$CiqEVK|({n5~9gmo(*TdNEmDxI1GiXm8Sv>GEOBYPhG1A%73e?JJD9S^$+6 z6qRTtF+>uS0KH&cpH+)U4%9HC*afK6_WmO6NJHA%oI8p7fK&awrLNAA+CiP}nB0$fN2~y)2=OC4 z){WO{fr7~?u`nxlaK0+pSKE?q$* zLrdZ~h>C{aWT>^2)$G<*&hGXT?eY02hNwBL3D2bRh%8LQFP36nYsQ64Pm_>qApL~w zFOwJhE4}RMk7*PoOG~|iAI;^WeS)2x2@%b45L&_KCAlh9#Km^{HboFJ^9UDI?8{b9Lk;>5p1|lQO_o0Gl?jQU* z%w)fphd86OHbIgH35#jC5u0ZhO+SSSg|CwnaOTK!p`pg)-bs*XHJY5&F)3EQGtjfX z&RPO^IO`4zb&9NPX4vbuAIukjbqq%6=jvt~j2^V_5BY!$U8OS%00bX#{>p+PmBU;<*iI+#QV5O+;=K2B-*c)(^(cs%I=K{ zi?-ySX0A{2JM?%wEvvHs;il(5g|}EtHDFRsG}@ti6!cHHI{Oh32O^U6#u^;UCXo5A zFz9HTEK%)7MwIg38(|ImoK!DHSqKi{V3VQNc)j{k{(yc+)%YIY!S1=wPe6$~v>~GC z=^f0s$C7OeUv`tmGn0*p#Fiq^kU+QFW(*}3d=tpw**5(MEqVbxhwHo;azCk5wHnYm=#xt=~8K(qZx3~mS zUCb$1#4ce2S- zk<2I;?%!SHiy;VvD9j-A*1@r&msO?KpdZ#;8rr%hbp1DY=M@QL;TbfU2(Yt)b~va2 z=+wtfXzvi%+}H|!JD>I9{Oy14>TyAnH$Bu-#~YsoXI3^;?3T9IVMHXwUQAu&A@NGs zAJ1%dTV85+d&cx}2sro9bt_oo#KOzGbl0GT*IgP_i3h{gM&smNlX#l-4~ADDN%EUx zB^s`utez0v2`wY`Y$sXOh#WZ*kYZoyrSW(!&0y&6_>nt_A+K&X9F%3t%oCgEW+l7A zR<`0RkYo7;h`iNZZ@d&za?Z_4WQ|M&T^dCaL{lczC#Clw)fE`)Ng^`)4f@L1BO9YY z_jvL6GiHCi`a>%3pb1uhHDrdcHOA2jSdXQ=krkhC%>`J{`rEyw8ssA?Zr@Q&bs%22 zQb|(qLVG8)v9E?$ZTS%1c1c>sH^@tRHNsHLP*cU&?0|L^yz8_Hp2g61RzorRp|@8D zhPCa}rkT*zPDuO)!FglOtcgAzOL*S7XyRRs2;ZK1xKEYw`gvC>r^N0l`*5O4@HI)U zi{jJK2K4^>UjX1>xB)_-8y!y;eTIY6LQxN4V<^Pj%9=#v(RXd%F8>*8=KR0wiXcaUyW4>t3(%wOC!__`uq=E=*&RLbQY}q2 z5BHtX1^&O+kCP^h`aNJ%cxGvev`))9q#0*>?K@=8P7eFBZPqj8h=qlP)&Ev6Rp&L} zQ!baCudMWb0k6MoIR$=h-CW*$&?xvD^_I}Z`W4?S@`HMMWEcJOR#px5+dLq~pV*5_i^gMh;)KuW4FOud?}*m91gu*^51PQiY=+t~X;>x;%?@DUee8 zGs64%zyApT8+O?I2zc!vttgYLX6J%Zv-(#}KkV~k!nMrJ;ox4#kQEMZLjBe6Y3lczFOBxgI=5BLNO`)xVqe;T`;aV1> z+pzCp-KI?(CCXc*a)U2nx!cct{&P>Bk$a_Zly26vpYex$yQn0PZAx_Z?IJy7Vi-5& z2_52?fx9!9ucXXu9^{EGBm*T)k&N(>ygA!IJEZ$(# z#as6c8aadIFFuC}*X_g(`Tg=u^HEjRaQu;hK@kEn+%G>S-A+1k!B|m+UqU0TAS?T# z>p?HO=|#t%`}YNY#qUIP{O^kSKBBsIens|YZVhL~(#W5Eg>g+GQfugvYJO~gRo&Xs1$1@M-Tkis0+>$Fw)1aH zcU(F#Y-mhzaYao>jW465f9A#`;Z9v%2YwxYA8Ic;g-Go7avO{kH!}fRaC^2{DZ$PO z>5_16SXs{d9Z9>xu|^9b^>dNsU-06Pz7h&JUTG<{7%@7qE;8G;R3PZ@?01o89s3>i zJMx-CzC}W_ThY^n)IbR@Geem>`MUfEUw5fIl5j*vlKmG^JE9sd4!^%zikWnHVLvIj zaT(F?1|!U2*RI56{}^-c^>Bm9EjYZR|8#MVp%jYe<>(5J3hPC2J>+{~6uS)n=k}Wc zrs){bbS`fyESYW}=(a=d+%Lo;BslAj`MjV#y-*7&o3xTvhR8a}GQ%r~HW5`UmD8N3 zs&N_3^Yfay?vaC~GiDXQM#l1aTrHy&poIQ+=&wMk2wGq~165OLpBP!k(QTP{)H_pK z;AeTupfa;DvyoI7|IMt-+<S-k+D0cZ4UVZ$qsr7Ew8IUNZhk7kyo7Ni zHW0Ed&JXu+UThk^nC`{nuWvU{BXTWDfa~?7aBl3EgrxrtnIhhR=Jg%ff@`vBo=*Oo z(9ok0D6(otqK9aonAn&k^{y9ERxrhyQyM0Q5Y8mzzR7<1fJa!${BA=H(ms^Z6L8T7x|2JV`C=41Ya}i>)*Vk|I*^80-Og0G<`-Ww zq%6c$F5D^0OU&}Lor|@NIZ{%TLG*>a9IpUWJHB=@(_ol&H7hT}$0sZ;_AylC z`PiuOhfXWcz?6K+lwMb_uZ5+hg()FjjcKka!LG@qejLD+v&8$Nq+!nipUEi=Z-bRy^94aob}rJw<=hZ{ z9Ca3ys86fjRU6*|Sm|xxw}PUsfpFP-S~|=rWPUZv-xpG9W;xhxReeLaACElg5T8); zwK(xaQ6;awnVAVi5G(dSLq9Eg6O}>$HU$d2X?6;CVFye&4DAn}%^RD#bP^ETQtO+{ zDJsq@FKPe95-e9H8lq-^MFN&eIAftp*9*ORoZR&nIot#oJA1qt45SQ)L-sHw;a7e; z_OI}wKbA#E)jJV4QhPjhbRNVBe9bPO)*OQ`sGZ&>jXaw46uITrIbUR~<#(g)Uv~oc zbRNi{W6WHHyYa{MtSpS>bPXAa zl+o;S*Zu#7|H*YGHiCaD4z=+7t#@AW_W5TmJl88*&MRf-`rduZfA*T*;eQVux^-}u z=lSBmN5Uo91{81-Ze(kt$mU6)M~`E3OilQGs2LtB21n&WSf^*mtU6iZ45n>k3W@SK zgQmzX{QLFW;N10o^6SmrFZuUzfZxyk0O(T97_x^WnUUrJ)lPV4)QR}x;3=d>rKX3s zaC1z&7s^lX0&U#hJIpzxJH%_UkY7v(eB7EQE`9}}VEABwTe9g@`vE+6UK${F6BFtK7+3N2#WX4)HX3OgYd6(!}pTzpt*SWgT%||77Y2kpsGW z=NKY8?M`*=jxGyD-3wQ<)5|3-EISR1O=n+d1IM3piVQx=kqJ$sqW%wa?-kcn_Js{I z<0xZ6MiCJaGm3zKfS`aFA>*JR(o~v=5Gm3_q$NUtj180)Is!rvln$XLK!B+9-fKuA zy@Z5L5(x1-;s0H~zxVRJ0xme&XJ_wKp7pF}ML{m08VZ_OjFtD~RN2~KEze&9D>!@D z_YqXMVl-L&2^YI6ltnC&aQ6F9CIOa|4cF9*3%O?a@5RE{5Wd0A;x@3w*YxJ=$LNgY z^^SaWfBnP~^?L?G=v@SuUWT|hsWGP^361#N6-KQDbk|67KU-#;P4ESY*|FVLpD*px z@%kF4>F`B1VPKI*<|kl&#w36x84X`g;=H4RHvs)RTA0FU+Q3-ljVE1gi!TLk3$*Zl}UM`%TBALed;p{Vxqk-DB`?zQH1H2F%Uf5wv5m9{VXb zp_%Ee9Pr3yofY-QH7ZnUBMas61kj9l^b`Go8BFb*L-b%2cV8C>t7{iEy-G;J1oM-o zrevNex`PF|y&5W!upniw$F1@)190`Xf)(I0(56~a3sWevW}!gs(e`zb?Z3kzLu`F6 zs;JycfBWW<_;kO0-Ig<7*eYwbCLdpLcRg`}vk4GubmnE0BRswNNLs++#a{wQ-9{T~ zo#Xg0!0*1|p+TL%P-OPOp$x1jH&6TbXG_{1Mqvwf1{xcpn$T^po}EX`fHxBdRHCWk zhRJJ#+t(LIehK*4j9R%uXoXkpA$7m~TlnA#{|$yE0T@3AokVa8{D+QtwfAPN<8V#A zoZms%af8ADvUEN8&WOjSMAfGg6=S!ApPR1a5^duyig-KP#b&Wr5}!P&mYY>RaO!_{ z9fH|AFbF+eIx+gQkPu3u_-;3X|AB_IeGxlk?oLdw+1xO1=8dQQJ5^_4BCL`Y}w-xs&@Sl`f)y za{)+kmatJlc56!Th!h^gw+B80o-V@w#>7Uusn5GRF4A2K2oEXxWQ98KITuwCnB~r-8~KN2||97B>&-RDPdE>fObn zehGXDTJdbsEY5F%!O|)r#MG7`!ULF;RrDx10K4M4HcA4GbL8cJZv*e^?L`5jN7clvsvTo%SyeCVSalx z=axB++1dWCDVL{X@9p2R(KmIZBtiow*2*M8+?cj_OV=A60&WqkufN&{V|3KtoIeQE zvSB8b@`%lkinw7^mNTO^O7>5LwxV2Vvi$u{$G;vHy8hnSufX?@w^zE9XEnLC=#Ng; zzg6*|T-&jrN}~GEr5h8v>`>*p9eRmWqv_sEeAN*KX9$&Qw{mQFJQI82dhfKmyW8bw z>8_F&ES>h#(}(r}62KcOVc&ysj%dY|ce~1dGYBmaXS`r@TF&T=^T}E`qPu&kuaz89 z%y(N<{pSb5ol!?u(6uV*RerjOI{cuVm;vFw&`@nSe@IhSddOMW!IRbK`66QWDzYz6>ooTGnBdEl$U#0 z`d)}I-)}8$!@tqOw9p$;c*w`&eM`7WkP^7znL`b!f(Rq@IF3a2m8zVQbdSjRo)#WY z*|K^5=K7|M7GZj~(DQU+MZ^o|_~fNP9zKHh4cpbn^8zgVfQcXm2Qm3=X+ll7ZvWK_JNZL)pz1t_qn#Y7AT zKvb1eghM{!W;wFWXwAVbrNzd!2#xRpo9o7EL(-b=~ zc35uxdUCFU>&3#v^z_Gh6OH_Y6DYzR24=`5eKVQuQ(7%xyRH%4ednCfIz~D*EC?$! zc>DBbhlAXukoeN>^~`wXU-KE;x}mi%fn>xD_Xv#E)9bZbpDji zyf-U$p1)UzLis~8lp>G~R-~i}^x2Xv^oi#a3A^puUpnF4BR!SJm)oApbeb`*K%O}x zse0ul{@5weleKE6tg57QtiId}(_PNtrvX>M0~~2CtQk(5eHX>152s3H*SK@MSs*)> z(r8fujY6v>ik%^2y&Q;#%8L-T3f`Wb&EzgSluntwVe#aIL^e?>w!zeH@^eG~`*qbG zJ-+jNGT#cvQ1sSwvH`@frFeH-FxdB(fa|0s9A1~8 zS6s%cxAAHvMt=CBOZ%>KNL`q1fL)g>0p_-ym0E!DI!8LM!g+rOzOHN`@ekf0@Vf%L zXH_a^dI9o*;>!E5lc?B}PE}!Ct0f)?vVOt5o@qE|z-Bpm7EM><9#^qRF2mPPEbdhp z8SN)6&zDKBNFuwaSrdc6v1QwQa5$ic93d1u4ov@+m@ZS1b)Hl`;G^hwcDeTWO7j+P z%9T{dISG{uD^9*Ot$*-hAOB4+X&VDR7oeK|5>Q29vUs-xF$)n$JC;VvxkL@w0rI*c zeau=}p;G>8Y8I%@OaDn)P@Q@rCtw&At)YXo-PD_iCwqy5j*AAZNKjjOnQ}{K2jPU}NDd8pBkNsR3M%ZCW z%zH*x!Ux{&woLOG;~(Fq%5U7Vm=xWE*Qy5v>n)d}LdqZ&1u2;!x8uAqo@i=fzT5}S{T_p)A%G6$`ghJ7+I6fYI;Q7%N(`Ztf_=74kNqFNWVQ4%rm@(_8S{6B|P_+Q9<032`Y;lTY^ zx4BX5y7J)b{V-+-$GO^t5E|^)e65_Ac_nyz;tcoeX}8yzZ!V+c2!|TKe8Dw;v(F+A zeGL1v|H7H~cNg{p7Da;CI*~0)6#o7lyRb3^S|!td2>u`=pk4#VlRZE?H$68QV&GHGtY$JqedgGpIu{ ze;BTkt(H9(el%EN={9}k1kJ23J$8%vPtp`l9v)A#Fn?aMzluM#GzYcdy^;?{w4?@h zAB8(?!A+Ozsz-JYxIQqm93J?oo<7txFm<(RAg05@v0T&b{pGx*E-PzOQ)??t|0S73 z*Gn;Vz&Dw{S@As)Oi65KxmK?_q1ykxoNMrQyz| zca7VXLZ`n6g6xMntWD037+#l;t(3(qTV-ei2B?=93uuY_>Am-1O&G7RW5U!}`NoKO zO~;0buWZJUz0jF;$po)cACD=Cdqu-rS5v1MDrPD`9avi3DgU1os)hICf^DTH%3dmQ zn+DzDjdytNEfUKrJ{ncxOU%4So|kJr8MC+{Cnxv$QU6JOrI!1;{}D^>TsapaUMv$v z9T$t8(lfjBkJZ@dJ9BfFM8?LX{EP=Ft=dkidpV<+kG1kqAu;rz+8f|rG;`eKeB;hNMlz*-l@%s zyxRs6UD3nTG0%wvc)KO4ZWClqWDXCP|5Ktn@T7vO^q~lMTUE!$Qy}K-!8>a|SUo3& zB|e;EvC3!Rbv6Ko^eMRmpOi=zmR}F1*Lko;ER)d8ew+L$g)xRQ-X%q{Z0^VUcjt;I z#de^DU(rFeOQkw3_R`9amD#&op#M1u|C1__GdbUE^LY?V4DA0DJVh0J0k8i~iJOYp ztbFuS1)Ni%;k4BQtHW7Y8vQYJrWR%-`N#S|lhijGDL*a1Lk5F=Sr5#ab?+*7mZFz~ zf3!Mn=eWaQbE-LBo`G`?k{`(AxC84)^9hK_qK2Qy1erdnS@g_Lx12HaL8~y2;f^n@ zy(_tEM33EgbuFSJ4gba3|7`Qd=FIDRVMx_WB0;c^KuK(p2^X1uDU4+@OM!ho^Z)6=kbwB1}#$_;ua{w4? zQb!@%L{i9@p9G6p@X^XeozSCwJL62M%OSYDc&Qzhk+*DeHiaBdsqqFfbux)i=|#56S2bdYS4T zZtbXq<;31zeDEh)HRYGUD~4gnlOq$M?t?QLUoR0?U=J*1AYL6w%>!Sw|6J@(o{6mC z+lm$CZ$L{LeB(TJo-6r4g{EXjpC0lHs(eGGd>};q991;Z`rQth*z}#b?EGXUF(m5c zbQJE|yW-+kE|+V)-(Wsp<%iUFw$Ra*>j9EmVr_5P3PTUKivZQ(UEMV&)amnhoAv~g zCkj1xv$u>RR9bAQUdD*YY?1$XSAU-1dj)H{#M8e_w!>D{E(^YSk@b(grr5=4OR;_X z>U~A{Y)UgXQYTzJ<9>MF1L2)GudTX0ey(Q~y1T-f_`haY@cktYRf$XdC9u6LJS)s2 z^^kaf8dWkbL73+AyUfb%mLEXAkiLFEZ|0>FUbp z)(r;MAUY$zapqD+X0xA+QGKh~F9Bg(+nkGSk@S6K(0%|X_y8b1IIva#(F~4xuhts3 z2q;qvdvD3~{a{W!rODuBTLWs5&-%85TQb`2nrr`#Jvby`lDnO~*5bIPYSyQ&tnr8U z!$ISOO@Dd+sR({HLbrj>M{3wFPI+SDUtW2}~xmU)4&*s@Yc#!Lqq%3IaK?_r{ ze2~;{7j-1y%7(>YVa9i9=_{pIwf{FG3k)o(j99FkTt_PzDL?}4mx*lH>OcXCrf3`Y z<5`?Pm%Plt7~o5$BHfO*SSKz87}X_58SB5Y5_+Y(ALpo`mGfkHwpyuxP0Zza-8duv zf_$7bMFQacaMIe0QW%8a>Md?$jV^0yu;PPX#U~T zo94{-YHY~zV7~;~2RJ&D&+|I`@WY+vToT99;9rv02b-8X3G*PGxcKU<&uz*!%iKMo z>#^de3~F*bTeaX8>`ruuG4p!!Aev5p`qwL4L;L z%l`{ATur&GU?V@129tRTH#_(N5@8}2vBXRU8jvW~1i!A=O&zJ-Lk(O=mCDOb^`l}U z7l-BvhrH`kL3d)?Obp%J{u(qh{eim`%)jwcT-@3jDBD!9n>x%{+`uAXwIlcprA zs0BLPV-%Cu@oc+T+4nBj8ome>})6eAsX#&n!|({mAL|Q%4`~=MBS=1A)HF!t6)R z8=5@(y&&Lh5)gi}--KuBV_DPq#)a+#Kn9m#yG1+G)mEoYhM(Q2S|t{^nOO{b0+SM) z-00pP4WsT1nD;s?+9t?V?&mYsq3d6HhUiO>1V|fi_zRu%DK)hMopgL|T)yE5_UXOkS|PwfNM=5GCl z`It@;)lWe#r|r>Q#VZdpn~QP#h=au|ZaMMjj7d`=Yon8AP&Yk64xf=}XQS7`%TeHI z8c@1!uSshN8I?#aSjt~QEN_?(&E;QSvwA9M$EX=>mbMSJuq&;6n&-o9k|Rm%V-=MS&F8`}JTD!KrO4SNB- zT#MXk$fPm$?+`MNb3Tl2+r(6@Ad~Ym;0>vksWTRSj{)+rv+Z@SA39Fxa)Hv z+O+-mW-72beW3si=SK!=L~}J2j=mZwxE{oqNNV~dvzY1xgj*i^>zLxTUFRYnHOWY$ z(vlCugXVS5&vTiDFdOYhZ!KnKzB3AS!4OOCg@Q{jXY%(E0WcSESD$*iwTb|1(6$bG zwRbJ1m_5Cb6~qN5p1i7dVjL%q5?OPnlJ`~yQ^T-Rl2842ZWTeBClI=EFDJcHF)wDQ z0q4Rzp#;m_E5VP>@=e$R8R@*i;D82y38>ffa9+YzW*vwq(^=eet|R^Y?AIkm(Rv5Y z1x>Ue)*`M_$L5?QSJaex`3JalZ5?;=2=Z#V6y5ta{~?H9Rd5W}L#siP z(-hw>NLH7j<3kaMB>!!QA&fc2T-F6@dYJoxmh2(RRE#0TvL@IYVbS<`VXtHS<)^nM zCQ3KeGV~n-{6h4da-;UU5&MwrU7)M#F`F?CJyh?;ZD5>_qe_}oYyZiN{93vT&q3ro z^XO)@ct+C3z^}`n`@Iu3-`*Yy7ph?4MG){SLFSi|?=3oHe$CEtn+XWhks$FGiD##A z7kG9^Jd@o4odC6U%m6x99vs+dfcVIP^rrPx@?gsory(yoFgXpL$Ct@_DkEl^$1&r< zPYVyn6ik@*4?2ju-5DHrDLBhF+zT-?kd&kiGk~u2BV>bg)C(jcq1A6=RiOclWw<>V ztmk*SFI;XwllNonV?Hz;JQ8FvnSW@m(6%o9SU0#REwjTuvn@pp5*%ly&-eFdu_@@D zxEXX)Q5#Kjubi7hM7;=fW^bi-Olm+{(Xr5r0lPmp>o9xcX>!*%D;OIc3hF#A7|HA3 zXcd#N#J}?xlX`gn;4M}2Z$}r((Cn<|cUE!$ebHm;v>q1T zJ;1{d`P`#uEV66msV;ijLfFMj=27{9bc!GG=p~8Z0ewZugOUfn{GOg)obob=f4^=6 z15fAgPSlB7uU(tI$Fm{RO3*2o_AcBf+5@!mUfMc1-~DQuN!d1UYJ%OSq3jTt{YJ>L z#8oA^j#Qy4E`KD&=-Kbw;Z>R@N^AzyoIbQ5w77O)4%hUA z`&5#)h6`kN)s3PXO2u0zJ)9Ot>*6XGRbFawD%0=ho5kkKKe=<%TJL(WTR@Hf7rxQ` z06_n8CiB9r=nvSx0z&h6GM=}Je{c?OSk9atX45NB8Y0m=;RO2fdHbk*!i!n;Iqw_u zt#(Ll+tLLU-=V>^B4h28n*8E)7x|2@`-~`yIe-)M_ALXJFt}yYFhJ`(F!u+j6A6a} z?Db)o*cF7}i82DjB z#G{-8eU-U#ahxqA^68dG8l|=-j^pN`)YhsIBCjn&*s?H*VyGk`b zMQMN@Ty9xy$LHp+HU1?ysKq}nPPqWT83J0je#80JGW@%X{N<@{xEAT*mJ=SuV$b(Wj*Qkly=m$XbO|kY zw{-idP-5Y(J4~bbcV8y16QR;IbK~U8v*nLJ1^LQZd6-`fDRq47W`0tGfARl?q!8Ah zvx!`q%HD-Yjv@&~cQoCUgg+bh*yu~m!KpWni4*085{y!fIyG39+fOW7bW`P{`@$aH z=}Ue-GB>{JDnz(!x*4$418rULL zx;EFo6|O_9u|!3r|6F5KsdfGPvHgKn>nqP1{yoBdRq_tG<gg!@Syjv1~ zq8Ek{dT1h?cyH>TOV9tYN(2X3_wUz2o`|A$>yd~R_JdWfT zYEGz#7s9&@FP9mdkZ{1Musu?pYC7^+#gs_8`_%-OzjvE*F^yK!4}R`jK?k7o@H*`x z9&r&3jD}2o4g+|$L7^IePi;mXO90I}rJb}4=Yz4D{&4mqxSKD*D=>H*0>~vN9%8W*fQb;7h({$$w~tSC zbMcFHE9+u#Q|GdmXReYl`1*5w3|KXJ&-9>@uy5~->fqRizth8R=1%2^_IC*E2c*~0 zovEB^?gr1M9O?WVAe_W^OO)^=x6}}a&RMp5^lXT+_lCmj^U5o3+{n1m9oOz*)G;v6)%pZI?s^W&tdf# zysA{vc#Z<-@zgd`M~j!XJsg1h?B(sbbEU{hP+ISHh=;A3yO46Ss;y=WhJT`P6SURL zVEW=pg0;bvW$Vi9iFJqkUDJAmHuz~HD34VY8bXQ5i$iNxPUoDEtN6~ViB!MkFLA}KQJ?IWt`m4JV8YC zq#+zP*umc}k=u#xM57KE3E{;3Cfx+9l|M217$Zr|VU@mcIn_>r_6`wZuA_G3zBCl+ny3SEgFEKTJWTeSA zdEs+_p4Wx(G@F%6<8G*L-n6ME3&Bhe^vB-b=mDKHXs%;nL z_N}tXbk0W17ztb>%=zL6YV8TxC4455f3hC1L_uxnFmO_p97{>|rAI4X&*701Fs-9* z+je|>>lCCpYuxm*|h;@lnLfg!AIiNYq(P(bN0V7jDxs$)*U>&zZ0 zoWZLfts2W*Jl3RZ;N>7!_IRn2X(07F^}^Aaze6Gn%=wgLU#L1zKMy9*A#?s*W6Co$z5mvR{h5_q;;pxgqUzV13z*mxt$1IZ{t_=E4;nsBf^O{sO|LHI=Bn7HhsI1 zaYQ&0(84MgJ5TG_YG8D}3)VRCCbk%l6^$<{((`vf=H~Nr=Y^JK5c@$6AlOH1qRel= zIj#uW588W@8p}!8mFv!Vn7m?J%kXfrhs}!2+ypvl$u@Sc$tY)E-+G8IW6^c}z{-;R zms24DVUGD(*(rtmL#_j9h0dc$Dj+Q+VSSq|u_{s)jAnuKe_qxAwRYB1nL*)w*0T8v zbRaL&T#J{;3I6E=cK2o83OeMLqW&ch_v6EQ*)M_PIf-r`=O6RkUp_!mc-y{xU8{-P ziJtsNtKf7WWe?4Z(bn;RP0RdPHZ(i~L^Y*LK6S+P968GhR{hx{?K>X2%i~)^LV7XT zVg6ZR#fL>5Uwr0UW51ez1b%x48AW5bmNfp~8{Ry>JtUWi0`pEioFKY$(vUswfj;aB ztY}SvtR88{M>wI2xrmZUa%J35ucroF(KAFA>8*ZBRL_yR)sH@8W|8yHkc!HQeTNCS z{YzbGy+N+rwE!9beZ}UqtpJ6ei@e{Odcgw-Zg&R~0hX&oREP)c)zx}Q_?-XffqlA} z<$TR7buQJdBO*TtXJjK%Y35}%*r)e+pU(x=x!<1alIP~`_OwY~&q(X(x=W(bU#89d z-OXq0V=dPj-@PuPM1BMP4;^@e{!?23plwY)&=ig(bqaI-3&e6HDr?Rs)w3Yx+^6j6 zepHqlqtoQ+Pkb;~FeR(#B_X?K*(U9emwQFEi);P*1|e_c654}i{mhZfD{%gmgCf`Q zY}s`Y&NaWB4o41TqyPL0TY99*1M_S%N-AJl&B`TklFVGI?XCip;7wV-bQNIdHe*}E*t2j{u`;}o?AxK*e0yM<0w?46R1a#PFIs5 zNt=|8;Zu~TT?fHWfT)JiUI@F=^d08K9HJQPWxAKj672OqV6H_rltEN>(EF$<9t^BxJ`8xN=ADk*2C%im5|dHr2n{z|0k?} zvmSWs-tQE2cLz~h)en82@k<~E)PY1T14?T`>zEo1OH-~pTd1U7Zwu=&hisPhd;rtD z$dIJbB;f7?9yXC>^mTCBWrOdSuC_n=5^qk1{=Ipg|4i)aG^hI!ORV)co$a+@2@G)I z*+P|eGz#2NBQLfRISiYm3G&ewn{%q^=hC4smy0Jy2X90u&Bwv*-2W~r&VG&g=S}ys z6rgY`w+Gy|Od%jjIO0U}S1P4quiu>JShA?U1bC0NkYnK^DBRqC%wi%LO!$@>g7wg^ z0q9uGpX$l5uGAlB@%D$`0w35r+RT+{-O7@q@ zFWL^fCNI9v=7Svz{mZ}vJ#92rtRph5jFe=fCA@J8fIT{F-<10Vk*(M1!DbH;W^Luc z+H)$PGxHQ59YN0v%@D zq@FzKDI0}!dRa`Z>g#@SKyqV?B$!DSwUyh)=_3yT7~ z0empMb){=^glK)DQbpp8!&KDMTf4qGy75D8W~;Yvt2ywuQMa6fM5~`gC)WW5xXBe% zpeGf3gy$1zpZSA%et=D>MKT8%_wT1+sw{<-uA%$@P2%MxLkop~pY{?-C*9>wzD`NL z*fl--H9cSc&81-A+c0pSPt%RK=k3l+3{J4;euc@=PE8mbfTVI)e zx(CI<+;xnoo#W5w8n7Ifpr${y@dK@fJzi8;TE8(~b@_AQseyaxz-s!X2!PGftpfqY zgZN=8&&@`(--`LO!HjkO=w|{!hgtva^HLgRm=b4^5X(GvXl7!xC~f@ZT;7lAevH(e z(!NEY$#u~0*kJ#?-hD*#VgY(mXD@uXj=VZ@U_F%Mz=AhpBCz0VWT@w+a4UsEkqoM4 zDF!*wQ{5i)I&>xZQ&`8kb;49`oS^9K6_IF@{Y#Ntidp~5Q}o{D%$A2E*K_3;^5yo~?uP|eza*BlRfJ6v$==z)VIy^8TbmDzg;@2_olwtv4JJ>oOS$v-W32%wG>!D`# z#1Q`^Bn6)sP5+8U9JjdKDlBBCuYF;|FF|9&aVN zjEpcoQK3TB-js)HNmAuVxI1F_#FqxhDsJ*O`ua(ObJrd{GPr)92W;c;cZkI9XWm_3 z=O;*mEwtxmf(3vp_stdTB-N{*b}uBtab>0ELsRRiP?SgAcLTlnCdbR(X4kIxyribo z#J5-)NDXuyi{!f{A)n+F@w>NTS{^t=o7R@r_IyY-ix&0gKd8Lg+F!n8LIzYG^q4rgOh-pEtM=)d34G zSxW!<1F6jd%nBulWTWID6`LF1aU66QoPF~O%5=b=k69EIqvKi6kT`(7righb8MFQb zCmqY|T3MsxG-OzvPM=quuWdXp{c8wDX~CL`UOUE{8(-0Z+FBi`d~Wvcb*vsAWTjg} z=H}NinSkoh4?t%>fz<|$B`)~k?r#x(Xt%=Xb=Dr9dsA0wv~#juMX&H}D{ z3Q^(3-DE)75q+^mM*)Iyto__88)c$@%MM z^YRf_$DG|lZ|-+2_|wso3ZxV2g6lIJt=jrqo;@*pk?Tk6cp?s}D6l6YYMu`3Ah@E$ zJcs>OT7#$z_huBKlgLa z(x=eXx;}E8XJK$hz_QwN!!@0V4hMM^$qsy}S-k)CcKgd;k}g;)NYg;4XfVAgq1GgS5#fd-=n$Mm}nn_2B zP*NqPagVpsty0R;b6kL_F}nn$nmU6T@3#rRH#$0*#m9Eb@Bte$f(_K(i4wn1`(@*Xp6!qky7PA@B<%bM?Rv#1Rwf`j zJGNTok=C7$<6-)F3rkta``Wl+Axt1H)IjK&Z;3TQl5G08dEl19dcnZN!cn3pG)|4O zF_K)^d;rC~b;wk$8VDfn+vDGO?$OJ=Am7}-ew!;7wZ2X8)CMM_-@k{65=8 z*^e{A^#5vb8z%^@cvXxeQZ2DB(l#@dPrB$|S~Y)g^qR_%{KC%fxBr&zdCF?n9$Qc6 z^xR^RzT>^qDZeF7&Dr~29F)(`4~eyUj(D8$`jUUKjLYP^ONn=MAs}s1nvip|Nx~j@ zRdx#6XtcF4KWFLbu>ighQ0{_onpo`mTpqAf@*FDpiLzHvqfTY~uyZR|d{I7hhA!vo zvgmT_+MtCF%d9|c8!Z!z#VtVR6aa@Yx@+Jy06$*MMvr1?X?e9?AG?UjO`hXn^|^%; zRe^VPMKo&i9Dm#r_g_@;uenL!DSk-5xfPY>7CbIKFfJ6~Q9rpN5xi*Mywl^FoF;8< zp>Oi~+y#plzv)Y!GAHcgq}-j-Bg&oV4f}!#LV*xAx^T=5-n)aRtsc&DoG(cy=vle_LSm{Spvr zO8t&-Zeez`O<5vfMGd8h(8jd#>TMb;$7y7?B)N!~?x8RQaMj12oXb94oLDbvq8#~< z(y_jB&~(+{vx2rT*Cm6!RZ(Lyb9|B`Lh>?CUGZc6w@8_`GKyU~{*Gpb8YwSj?*vRR zcPN@geKuhk_X^}ot0mJU-5M)aTbHfsH=ftE$an+uiaSWe!a0)<-Eofo89PAq7zQCIc5tXEXlDJ{GYsS)&|7 zr@1j}y_*jaj>&D+d7oQ*?p|=#^f{(J4AxVmdVhK7c{|c+CEqb$dCJvMkA4tlwCvs*Pj4uCJL<>`7()xxz3}8h>Ktx$Tzt!OtBg zI&)t76UJY(nMP#dZ$~ZTy?Sr^xk|Q!;3-(eRZY+bXd5XAa6Y)%P-rdDp`_k&E4_QE zs5F7oQ>Cj{T)sBBZ4V?z@#2zO{WosrE4AaOgK@T5f|zAs4}6xg>NAPp@$8@~cxq$La`(h23W-NR{sm%VZ-ePXGLL#o%~$}o)j?tYj!Rjrs%!8$*c{bfApD~4=!Q>&>IDTJ6ve|?Pm zQaa_3%Ai5isVy^A3x2k7=cEas@BUJ`;W&Y3ca)n!e9wh+c;c8QFqR=!c88iIT*kTv zAE(5f3$ns5)$B;_O}rGnPB&6_!--au^m*P^0x=_Ef(H0`0Wkh@gp&nl<}8sStv9BG zzneruHC0J+0UKiE-J3YUD_XL>b+93hO?e148osR&p^$$O&jVX7rgw`244cYKykJRzBde(?QosssQb|IU#D=SD%^Ivx;20*WL z!mez-nnsGzYk1&Xa$>&hc zIZrKJolA#$AH^iSa{8SAHLB!M?S7H?_cR!{8!~yDrX6hPd%SxAIvZ3Clw5$=4;D%P zfa6@K*S3RcEmptS4RtgdG*f?a^JaGo9TK%0Ds@olV#;lUu<`5Ob21&38WWC-mmNRm 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 diff --git a/foundational-api-samples/use-case/read-a-drivers-license/index.html b/foundational-api-samples/use-case/read-a-drivers-license/index.html deleted file mode 100644 index af5d4aa2..00000000 --- a/foundational-api-samples/use-case/read-a-drivers-license/index.html +++ /dev/null @@ -1,309 +0,0 @@ - - - - - - - - - - Dynamsoft Barcode Reader Sample - Read a Driver's License - - - - - Click the play button to activate the camera. -

    Read a Driver's License

    - -
    - - - -
    -
    -
    -
    - Results: - - - - -
    -
    -
    - - - - - - - diff --git a/foundational-api-samples/use-case/read-a-drivers-license/style.css b/foundational-api-samples/use-case/read-a-drivers-license/style.css deleted file mode 100644 index acb09334..00000000 --- a/foundational-api-samples/use-case/read-a-drivers-license/style.css +++ /dev/null @@ -1,174 +0,0 @@ -* { - margin: 0; - padding: 0; -} - -body { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - overflow: hidden; - width: 100vw; - height: 100vh; -} - -#span-tip { - position: absolute; - font-size: 1rem; - color: #fe8e14; - top: 1vh; -} - -h1 { - font-size: 1.5em; -} - -a { - color: #fe8d14; -} - -a:hover { - color: #fe8d14a1; -} - -strong { - color: rgb(254, 142, 20); -} - -#svg-start { - width: 100px; - height: 100px; - fill: #aaa; - cursor: pointer; -} - -#main-container { - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - width: 50vw; - height: 60vh; -} - -.dce-bg-camera { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - margin: auto; - width: 40%; - height: 40%; - fill: #aaa; -} - -#camera-view-container { - display: none; - width: 100%; - height: 100%; -} - -#result-container { - display: none; - position: fixed; - width: 50vw; - height: 70vh; - z-index: 10; - color: white; - font-size: small; - background: #222222; - margin-top: 30px; -} - -#result-container .result-header { - width: 100%; - height: 30px; - background-color: #000; - font-size: 16px; - line-height: 30px; - padding-left: 10px; - box-sizing: border-box; -} - -#result-container .result-body { - height: calc(70vh - 30px); - overflow-y: auto; - padding: 5px; - box-sizing: border-box; -} - -#result-container p { - padding: 5px; - margin: 0; -} - -#message-container { - display: none; - align-items: center; - width: 50vw; - padding: 8px 16px; - margin: -92px 0 10px 0; - box-sizing: border-box; - border-radius: 4px; - position: relative; - background-color: #f4f4f5; - color: #909399; - overflow: hidden; - transition: opacity 0.2s; -} - -#message-container .message-icon { - font-size: 28px; - width: 28px; - line-height: 0; - padding-right: 1rem; -} - -#message-container .div-message-content { - display: table-cell; - padding: 0 8px; -} - -.message-content > span { - font-weight: 700; - font-size: 14px; - line-height: 18px; -} - -.message-content > p { - font-size: 13px; - margin: 5px 0 0; - line-height: 20px; -} - -.api_highlight { - font-weight: 700; - background-color: #ddd; - border-radius: 4px; - padding: 2px; -} - -.close-button { - position: absolute; - top: 12px; - right: 15px; - cursor: pointer; - line-height: 0; -} - -/* Small devices */ -@media only screen and (max-width: 1000px) { - #message-container { - width: 90vw; - } - - #main-container { - width: 80vw; - } - - #result-container { - width: 80vw; - } -} diff --git a/foundational-api-samples/use-case/show-result-texts-on-the-video.html b/foundational-api-samples/use-case/show-result-texts-on-the-video.html deleted file mode 100644 index d7bbf096..00000000 --- a/foundational-api-samples/use-case/show-result-texts-on-the-video.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - Dynamsoft Barcode Reader Sample - Display Barcode Results as Video Overlays - - - - -

    Display Barcode Results as Video Overlays

    -

    Scan barcodes to display results as overlays on video

    -
    -
    - - - - - - - \ No newline at end of file From 1a3bfce5babc02e9558d81196c851bff4bb27257 Mon Sep 17 00:00:00 2001 From: Keillion Date: Mon, 24 Nov 2025 18:14:17 +0800 Subject: [PATCH 222/223] review merge from main --- .github/workflows/main.yml | 8 +- .github/workflows/preview.yml | 26 ------- .../scan-using-foundational-api/README.md | 4 +- .../src/app/dynamsoft.config.ts | 3 +- .../image-capture/image-capture.component.ts | 5 +- .../video-capture/video-capture.component.ts | 6 +- .../scan-using-foundational-api/README.md | 6 +- .../BlazorApp/wwwroot/decodeImage.js | 2 +- .../BlazorApp/wwwroot/decodeVideo.js | 4 +- .../scan-using-foundational-api/README.md | 2 +- .../scan-using-foundational-api/action.js | 2 +- .../es6/scan-using-foundational-api/es6.html | 2 +- .../scan-using-foundational-api/index.ts | 9 +-- .../scan-using-foundational-api/README.md | 4 +- .../components/ImageCapture/ImageCapture.tsx | 6 +- .../components/VideoCapture/VideoCapture.tsx | 6 +- .../dynamsoft.config.ts | 3 +- .../scan-using-foundational-api/README.md | 4 +- .../components/ImageCapture.client.vue | 5 +- .../components/VideoCapture.client.vue | 6 +- .../dynamsoft.config.ts | 7 +- .../pwa/scan-using-foundational-api/README.md | 2 +- .../helloworld-pwa.html | 2 +- .../service-worker.js | 11 ++- .../pwa/scan-using-rtu-api/service-worker.js | 11 ++- .../scan-using-foundational-api/README.md | 4 +- .../components/ImageCapture/ImageCapture.tsx | 6 +- .../components/VideoCapture/VideoCapture.tsx | 6 +- .../src/dynamsoft.config.ts | 7 +- .../react/scan-using-rtu-api/src/App.tsx | 16 ++-- .../requirejs.html | 2 +- .../scan-using-foundational-api/README.md | 4 +- .../src/components/ImageCapture.svelte | 5 +- .../src/components/VideoCapture.svelte | 6 +- .../src/dynamsoft.config.ts | 7 +- .../vue/scan-using-foundational-api/README.md | 4 +- .../src/components/ImageCapture.vue | 5 +- .../src/components/VideoCapture.vue | 6 +- .../src/dynamsoft.config.ts | 7 +- .../android/app/build.gradle | 4 +- .../src/main/assets/decodeBarcodeInVideo.html | 4 +- .../android/settings.gradle | 2 +- .../dbrjswebview/html/decodeFileInVideo.html | 4 +- .../scan-using-rtu-api/android/README.md | 2 +- .../android/app/build.gradle | 4 +- .../android/settings.gradle | 2 +- .../webview/scan-using-rtu-api/ios/README.md | 2 +- read-an-image.html | 77 +++++++++++++++++++ scenarios/debug/package.json | 2 +- scenarios/debug/public/index.html | 4 +- .../locate-an-item-with-barcode/index.html | 21 +++-- scenarios/read-a-drivers-license/index.html | 12 ++- .../scan-using-rtu-api/index.html | 4 +- .../show-result-texts-on-the-video.html | 2 +- 54 files changed, 202 insertions(+), 175 deletions(-) delete mode 100644 .github/workflows/preview.yml create mode 100644 read-an-image.html diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e442042f..5c555d93 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -11,7 +11,7 @@ on: jobs: # This workflow contains a single job called "build" Build-Demo: - if: ${{ github.ref == 'refs/heads/2025_Nov_re-structure' }} + if: ${{ github.ref == 'refs/heads/demo' }} # The type of runner that the job will run on runs-on: [self-hosted, sample-upload] @@ -25,7 +25,7 @@ jobs: run: | cd /home/ubuntu [ -d barcode-reader-javascript-samples ] && rm -rf barcode-reader-javascript-samples - git clone --depth 1 -b 2025_Nov_re-structure https://github.com/Dynamsoft/barcode-reader-javascript-samples.git + git clone --depth 1 -b demo https://github.com/Dynamsoft/barcode-reader-javascript-samples.git - name: Sync files uses: SamKirkland/FTP-Deploy-Action@4.3.0 @@ -34,5 +34,5 @@ jobs: username: ${{ secrets.FTP_DEMO_USERNAME }} password: ${{ secrets.FTP_DEMO_PASSWORD }} port: 21 - local-dir: /home/ubuntu/barcode-reader-javascript-samples/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/ - server-dir: /Demo.dynamsoft.com/Samples/DBR/JS/scenarios/read-and-parse-GS1-AI/scan-using-rtu-api/ + local-dir: /home/ubuntu/barcode-reader-javascript-samples/ + server-dir: /Demo.dynamsoft.com/Samples/DBR/JS/ \ No newline at end of file diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml deleted file mode 100644 index 21e2477a..00000000 --- a/.github/workflows/preview.yml +++ /dev/null @@ -1,26 +0,0 @@ -# .github/workflows/deploy.yml -name: Deploy PR previews -on: - push: - branches: - - main - pull_request: - types: - - opened - - reopened - - synchronize - - closed - -jobs: - deploy-preview: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: Deploy PR Preview - uses: rossjrw/pr-preview-action@v1.4.3 - with: - token: ${{ secrets.PREVIEW_TOKEN }} - preview-branch: gh-pages - source-dir: . - umbrella-dir: pr-preview - action: auto \ No newline at end of file diff --git a/frameworks/angular/scan-using-foundational-api/README.md b/frameworks/angular/scan-using-foundational-api/README.md index 08fe6a19..7a922945 100644 --- a/frameworks/angular/scan-using-foundational-api/README.md +++ b/frameworks/angular/scan-using-foundational-api/README.md @@ -213,7 +213,7 @@ export class VideoCaptureComponent { console.log(componentDestroyedErrorMsg); } else { let errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); alert(errMsg); } } @@ -320,7 +320,7 @@ export class ImageCaptureComponent { } } catch (ex: any) { let errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); alert(errMsg); } }; diff --git a/frameworks/angular/scan-using-foundational-api/src/app/dynamsoft.config.ts b/frameworks/angular/scan-using-foundational-api/src/app/dynamsoft.config.ts index c9a00589..7d462b81 100644 --- a/frameworks/angular/scan-using-foundational-api/src/app/dynamsoft.config.ts +++ b/frameworks/angular/scan-using-foundational-api/src/app/dynamsoft.config.ts @@ -1,5 +1,4 @@ -import { CoreModule } from 'dynamsoft-barcode-reader-bundle'; -import { LicenseManager } from 'dynamsoft-barcode-reader-bundle'; +import { CoreModule, LicenseManager } from 'dynamsoft-barcode-reader-bundle'; // Configures the paths where the .wasm files and other necessary resources for modules are located. CoreModule.engineResourcePaths.rootDirectory = 'https://cdn.jsdelivr.net/npm/'; diff --git a/frameworks/angular/scan-using-foundational-api/src/app/image-capture/image-capture.component.ts b/frameworks/angular/scan-using-foundational-api/src/app/image-capture/image-capture.component.ts index 0ba1d6bc..469ff61c 100644 --- a/frameworks/angular/scan-using-foundational-api/src/app/image-capture/image-capture.component.ts +++ b/frameworks/angular/scan-using-foundational-api/src/app/image-capture/image-capture.component.ts @@ -1,8 +1,7 @@ import { Component } from '@angular/core'; import '../dynamsoft.config'; -import { EnumCapturedResultItemType } from 'dynamsoft-barcode-reader-bundle'; +import { EnumCapturedResultItemType, CaptureVisionRouter } from 'dynamsoft-barcode-reader-bundle'; import type { BarcodeResultItem } from 'dynamsoft-barcode-reader-bundle'; -import { CaptureVisionRouter } from 'dynamsoft-barcode-reader-bundle'; @Component({ selector: 'app-image-capture', @@ -50,7 +49,7 @@ export class ImageCaptureComponent { } } catch (ex: any) { let errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); alert(errMsg); } }; diff --git a/frameworks/angular/scan-using-foundational-api/src/app/video-capture/video-capture.component.ts b/frameworks/angular/scan-using-foundational-api/src/app/video-capture/video-capture.component.ts index 5ca1a2b0..26690ed3 100644 --- a/frameworks/angular/scan-using-foundational-api/src/app/video-capture/video-capture.component.ts +++ b/frameworks/angular/scan-using-foundational-api/src/app/video-capture/video-capture.component.ts @@ -1,8 +1,6 @@ import { Component, ElementRef, ViewChild, NgZone } from '@angular/core'; import '../dynamsoft.config'; -import { CameraEnhancer, CameraView } from 'dynamsoft-barcode-reader-bundle'; -import { CaptureVisionRouter } from 'dynamsoft-barcode-reader-bundle'; -import { MultiFrameResultCrossFilter } from 'dynamsoft-barcode-reader-bundle'; +import { CameraEnhancer, CameraView, MultiFrameResultCrossFilter, CaptureVisionRouter } from 'dynamsoft-barcode-reader-bundle'; const componentDestroyedErrorMsg = 'VideoCapture Component Destroyed'; @@ -89,7 +87,7 @@ export class VideoCaptureComponent { console.log(componentDestroyedErrorMsg); } else { let errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); alert(errMsg); } } diff --git a/frameworks/blazor/scan-using-foundational-api/README.md b/frameworks/blazor/scan-using-foundational-api/README.md index 239e420d..e942c4fe 100644 --- a/frameworks/blazor/scan-using-foundational-api/README.md +++ b/frameworks/blazor/scan-using-foundational-api/README.md @@ -161,7 +161,7 @@ window.startVideoDecode = async () => { await cvRouter.startCapturing("ReadSingleBarcode"); } catch (ex) { let errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); } } @@ -184,7 +184,7 @@ window.stopVideoDecode = async () => { resultsContainer.textContent = ""; } catch (ex) { let errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); } } ``` @@ -261,7 +261,7 @@ window.startImageDecode = async () => { } } catch (ex) { let errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); alert(errMsg); } finally { inputElement.value = ""; diff --git a/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/decodeImage.js b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/decodeImage.js index bc9e8625..e792c44d 100644 --- a/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/decodeImage.js +++ b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/decodeImage.js @@ -25,7 +25,7 @@ window.startImageDecode = async () => { } } catch (ex) { let errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); alert(errMsg); } finally { inputElement.value = ""; diff --git a/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/decodeVideo.js b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/decodeVideo.js index f0d43ac6..8e68478c 100644 --- a/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/decodeVideo.js +++ b/frameworks/blazor/scan-using-foundational-api/hello-world-blazor/BlazorApp/wwwroot/decodeVideo.js @@ -42,7 +42,7 @@ window.startVideoDecode = async () => { await cvRouter.startCapturing("ReadBarcodes_SpeedFirst"); } catch (ex) { let errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); } } @@ -65,6 +65,6 @@ window.stopVideoDecode = async () => { resultsContainer.textContent = ""; } catch (ex) { let errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); } } diff --git a/frameworks/electron/scan-using-foundational-api/README.md b/frameworks/electron/scan-using-foundational-api/README.md index 3279a79b..a6dd47ed 100644 --- a/frameworks/electron/scan-using-foundational-api/README.md +++ b/frameworks/electron/scan-using-foundational-api/README.md @@ -207,7 +207,7 @@ Dynamsoft.Core.CoreModule.loadWasm(); await cvRouter.startCapturing("ReadSingleBarcode"); } catch (ex) { let errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); alert(errMsg); } })(); diff --git a/frameworks/electron/scan-using-foundational-api/action.js b/frameworks/electron/scan-using-foundational-api/action.js index 878f7ada..7badaa96 100644 --- a/frameworks/electron/scan-using-foundational-api/action.js +++ b/frameworks/electron/scan-using-foundational-api/action.js @@ -64,7 +64,7 @@ Dynamsoft.Core.CoreModule.loadWasm(); await cvRouter.startCapturing("ReadBarcodes_SpeedFirst"); } catch (ex) { let errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); alert(errMsg); } })(); diff --git a/frameworks/es6/scan-using-foundational-api/es6.html b/frameworks/es6/scan-using-foundational-api/es6.html index 41374119..f736d6d7 100644 --- a/frameworks/es6/scan-using-foundational-api/es6.html +++ b/frameworks/es6/scan-using-foundational-api/es6.html @@ -82,7 +82,7 @@

    Hello World for ES6 (Decode via Camera)

    await cvRouter.startCapturing("ReadBarcodes_SpeedFirst"); } catch (ex) { let errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); alert(errMsg); } })(); diff --git a/frameworks/native-ts/scan-using-foundational-api/index.ts b/frameworks/native-ts/scan-using-foundational-api/index.ts index 97306584..52f5cc66 100644 --- a/frameworks/native-ts/scan-using-foundational-api/index.ts +++ b/frameworks/native-ts/scan-using-foundational-api/index.ts @@ -1,9 +1,4 @@ -import { CoreModule } from "dynamsoft-barcode-reader-bundle"; -import { LicenseManager } from "dynamsoft-barcode-reader-bundle"; -import { CameraView, CameraEnhancer } from "dynamsoft-barcode-reader-bundle"; -import { CaptureVisionRouter } from "dynamsoft-barcode-reader-bundle"; -import { MultiFrameResultCrossFilter } from "dynamsoft-barcode-reader-bundle"; -import { DecodedBarcodesResult } from "dynamsoft-barcode-reader-bundle"; +import { CoreModule, LicenseManager, CameraView, CameraEnhancer, CaptureVisionRouter, MultiFrameResultCrossFilter, DecodedBarcodesResult } from "dynamsoft-barcode-reader-bundle"; // Configures the paths where the .wasm files and other necessary resources for modules are located. CoreModule.engineResourcePaths.rootDirectory = "https://cdn.jsdelivr.net/npm/"; @@ -67,7 +62,7 @@ let cvRouter: CaptureVisionRouter; await cvRouter.startCapturing("ReadBarcodes_SpeedFirst"); } catch (ex: any) { let errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); alert(errMsg); } })(); \ No newline at end of file diff --git a/frameworks/next/scan-using-foundational-api/README.md b/frameworks/next/scan-using-foundational-api/README.md index be85783f..3e9cad23 100644 --- a/frameworks/next/scan-using-foundational-api/README.md +++ b/frameworks/next/scan-using-foundational-api/README.md @@ -196,7 +196,7 @@ function VideoCapture() { console.log(componentDestroyedErrorMsg); } else { let errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); alert(errMsg); } } @@ -297,7 +297,7 @@ function ImageCapture() { } } catch (ex: any) { let errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); alert(errMsg); } }; diff --git a/frameworks/next/scan-using-foundational-api/components/ImageCapture/ImageCapture.tsx b/frameworks/next/scan-using-foundational-api/components/ImageCapture/ImageCapture.tsx index b7497462..51f491ad 100644 --- a/frameworks/next/scan-using-foundational-api/components/ImageCapture/ImageCapture.tsx +++ b/frameworks/next/scan-using-foundational-api/components/ImageCapture/ImageCapture.tsx @@ -1,8 +1,6 @@ import React, { useRef, useEffect, MutableRefObject, useState } from "react"; import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { EnumCapturedResultItemType } from "dynamsoft-barcode-reader-bundle"; -import { BarcodeResultItem } from "dynamsoft-barcode-reader-bundle"; -import { CaptureVisionRouter } from "dynamsoft-barcode-reader-bundle"; +import { EnumCapturedResultItemType, CaptureVisionRouter, BarcodeResultItem } from "dynamsoft-barcode-reader-bundle"; import "./ImageCapture.css"; function ImageCapture() { @@ -45,7 +43,7 @@ function ImageCapture() { } } catch (ex: any) { let errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); alert(errMsg); } }; diff --git a/frameworks/next/scan-using-foundational-api/components/VideoCapture/VideoCapture.tsx b/frameworks/next/scan-using-foundational-api/components/VideoCapture/VideoCapture.tsx index d0acab66..27983967 100644 --- a/frameworks/next/scan-using-foundational-api/components/VideoCapture/VideoCapture.tsx +++ b/frameworks/next/scan-using-foundational-api/components/VideoCapture/VideoCapture.tsx @@ -1,8 +1,6 @@ import React, { useEffect, useRef, useState } from "react"; import "../../dynamsoft.config"; // import side effects. The license, engineResourcePath, so on. -import { CameraEnhancer, CameraView } from "dynamsoft-barcode-reader-bundle"; -import { CaptureVisionRouter } from "dynamsoft-barcode-reader-bundle"; -import { MultiFrameResultCrossFilter } from "dynamsoft-barcode-reader-bundle"; +import { CameraEnhancer, CameraView, CaptureVisionRouter, MultiFrameResultCrossFilter } from "dynamsoft-barcode-reader-bundle"; import "./VideoCapture.css"; const componentDestroyedErrorMsg = "VideoCapture Component Destroyed"; @@ -83,7 +81,7 @@ function VideoCapture() { console.log(componentDestroyedErrorMsg); } else { let errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); alert(errMsg); } } diff --git a/frameworks/next/scan-using-foundational-api/dynamsoft.config.ts b/frameworks/next/scan-using-foundational-api/dynamsoft.config.ts index bc2c9faa..744bd1ed 100644 --- a/frameworks/next/scan-using-foundational-api/dynamsoft.config.ts +++ b/frameworks/next/scan-using-foundational-api/dynamsoft.config.ts @@ -1,5 +1,4 @@ -import { CoreModule } from "dynamsoft-barcode-reader-bundle"; -import { LicenseManager } from "dynamsoft-barcode-reader-bundle"; +import { CoreModule, LicenseManager } from "dynamsoft-barcode-reader-bundle"; // Configures the paths where the .wasm files and other necessary resources for modules are located. CoreModule.engineResourcePaths.rootDirectory = "https://cdn.jsdelivr.net/npm/"; diff --git a/frameworks/nuxt/scan-using-foundational-api/README.md b/frameworks/nuxt/scan-using-foundational-api/README.md index 345db232..003c4582 100644 --- a/frameworks/nuxt/scan-using-foundational-api/README.md +++ b/frameworks/nuxt/scan-using-foundational-api/README.md @@ -172,7 +172,7 @@ onMounted(async () => { console.log(componentDestroyedErrorMsg); } else { let errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); alert(errMsg); } } @@ -263,7 +263,7 @@ const captureImage = async (e: Event) => { } } catch (ex: any) { let errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); alert(errMsg); } } diff --git a/frameworks/nuxt/scan-using-foundational-api/components/ImageCapture.client.vue b/frameworks/nuxt/scan-using-foundational-api/components/ImageCapture.client.vue index 3d819c4e..24e10835 100644 --- a/frameworks/nuxt/scan-using-foundational-api/components/ImageCapture.client.vue +++ b/frameworks/nuxt/scan-using-foundational-api/components/ImageCapture.client.vue @@ -1,9 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/scenarios/debug/package.json b/scenarios/debug/package.json index 13ff7737..de1d03d1 100644 --- a/scenarios/debug/package.json +++ b/scenarios/debug/package.json @@ -11,6 +11,6 @@ "dependencies": { "cors": "^2.8.5", "express": "^4.17.1", - "multer": "^1.4.5-lts.1" + "multer": "^2.0.2" } } diff --git a/scenarios/debug/public/index.html b/scenarios/debug/public/index.html index 88fef2e0..65b85960 100644 --- a/scenarios/debug/public/index.html +++ b/scenarios/debug/public/index.html @@ -70,7 +70,7 @@

    Read Barcodes from Camera - Debug

    let ss = await cvRouter.getSimplifiedSettings("ReadBarcodes_SpeedFirst"); ss.timeout = 100000; ss.minImageCaptureInterval = 100; - ss.capturedResultItemTypes |= Dynamsoft.Core.EnumCapturedResultItemType.CRIT_ORIGINAL_IMAGE; + ss.outputOriginalImage = true; await cvRouter.updateSettings("ReadBarcodes_SpeedFirst", ss); // Define a callback for results. @@ -132,7 +132,7 @@

    Read Barcodes from Camera - Debug

    }; } catch (ex) { let errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); alert(errMsg); } }; diff --git a/scenarios/locate-an-item-with-barcode/index.html b/scenarios/locate-an-item-with-barcode/index.html index 66aded37..3c512026 100644 --- a/scenarios/locate-an-item-with-barcode/index.html +++ b/scenarios/locate-an-item-with-barcode/index.html @@ -430,7 +430,8 @@
    } } catch (ex) { const errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); + alert(errMsg); } return { @@ -488,7 +489,8 @@
    await cvRouter.startCapturing("ReadSingleBarcode"); } catch (ex) { const errMsg = ex.message || ex; - console.error(errMsg); + console.error(ex); + alert(errMsg); } }); @@ -645,8 +647,9 @@
    // Start capturing barcodes await cvRouter.startCapturing("ReadBarcodes_Balance"); } catch (ex) { - const errorMessage = ex.message || ex; - console.error(errorMessage); + const errMsg = ex.message || ex; + console.error(ex); + alert(errMsg); } }); @@ -698,8 +701,9 @@
    cameraSwitchNotification.style.opacity = 0; }, 5000); } catch (ex) { - const errorMessage = ex.message || ex; - console.error(errorMessage); + const errMsg = ex.message || ex; + console.error(ex); + alert(errMsg); } }); @@ -719,8 +723,9 @@
    cvRouter.stopCapturing(); cameraEnhancer.close(); } catch (ex) { - const errorMessage = ex.message || ex; - console.error(errorMessage); + const errMsg = ex.message || ex; + console.error(ex); + alert(errMsg); } }); diff --git a/scenarios/read-a-drivers-license/index.html b/scenarios/read-a-drivers-license/index.html index 7cddb8be..b75fa5f6 100644 --- a/scenarios/read-a-drivers-license/index.html +++ b/scenarios/read-a-drivers-license/index.html @@ -9,7 +9,6 @@ Dynamsoft Barcode Reader Sample - Read a Driver's License - @@ -27,6 +26,7 @@

    Read a Driver's License

      Back to Scan
      + + - \ No newline at end of file +